An octet trie for quickly matching IPv4 addresses
|
преди 1 година | |
---|---|---|
LICENSE | преди 2 години | |
README.md | преди 2 години | |
go.mod | преди 2 години | |
go.sum | преди 2 години | |
otrie.go | преди 1 година | |
otrie_test.go | преди 2 години |
An octet trie for quickly matching IPv4 addresses.
prefixesStr := `10.255.251.48/30
10.255.251.52/30
10.51.4.0/24
10.52.4.0/24`
trie := otrie.NewOTrie()
prefixes := make([]*netaddr.NetAddr, 0, 128)
for _, l := range strings.Split(prefixesStr, "\n") {
na, _ := netaddr.IP(l)
prefixes = append(prefixes, na)
_ = trie.AddPrefix(na)
}
if !trie.Overlaps(&netaddr.NetAddr{
Address: []byte{10, 51, 4, 0},
Length: byte(24),
}) {
fmt.Println("failed to match 10.51.4.0/24")
fmt.Println(trie.Print())
}