ipnetworktable

IPv4 and IPv6 network fast lookup table.

Rust Documentation Crates.io License

Description

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

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

Usage

Add this to your Cargo.toml:

toml [dependencies] ipnet = "2.8" ipnet-trie = "0.0.1"

and then you can use it like this:

```rust 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);

asserteq!(table.insert(network, "foo"), None); // Get value for network from table asserteq!(table.longestmatch(ipaddress), Some((network, &"foo"))); ```