Crate ipnet_trie

source ·
Expand description

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.

Examples

use std::net::{IpAddr, Ipv6Addr};
use ipnet::{IpNet, Ipv6Net};
use ipnet_trie::IpnetTrie;

let mut table = IpnetTrie::new();
let network = IpNet::from(Ipv6Net::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")));

Structs

  • Table holding IPv4 and IPv6 network prefixes with value.