[][src]Crate ip_network_table

This crate provides storage and retrieval of IPv4 and IPv6 network prefixes.

Currently, it uses ip_network crate, that provides IP network data structure and treebitmap as backend, that provides fast lookup times, and a small memory footprint. Backend can be changed in future releases.


use std::net::{IpAddr, Ipv6Addr};
use ip_network::{IpNetwork, Ipv6Network};
use ip_network_table::IpNetworkTable;

let mut table = IpNetworkTable::new();
let network = IpNetwork::new(Ipv6Addr::new(0x2001, 0xdb8, 0xdead, 0xbeef, 0, 0, 0, 0), 64).unwrap();
let ip_address = Ipv6Addr::new(0x2001, 0xdb8, 0xdead, 0xbeef, 0, 0, 0, 0x1);

assert_eq!(table.insert(network, "foo"), None);
// Get value for network from table
assert_eq!(table.longest_match(ip_address), Some((network, &"foo")));



Table holding IPv4 and IPv6 network prefixes with value.