Better trie implementations

This commit is contained in:
2025-10-08 20:57:13 +02:00
parent 5f0f4aa96b
commit 582163d4be
26 changed files with 2482 additions and 122 deletions

View File

@@ -2,10 +2,37 @@ package dataset
import (
"net"
"net/netip"
"git.maze.io/maze/styx/dataset/nettrie"
"github.com/yl2chen/cidranger"
)
type NetworkTrie struct {
*nettrie.Trie
}
func NewNetworkTrie(prefixes ...netip.Prefix) *NetworkTrie {
trie := &NetworkTrie{
Trie: nettrie.New(),
}
for _, prefix := range prefixes {
trie.Insert(prefix)
}
return trie
}
func (trie *NetworkTrie) ContainsIP(ip net.IP) bool {
if ip == nil {
return false
}
addr, ok := netip.AddrFromSlice(ip)
if !ok {
return false
}
return trie.Contains(addr)
}
type NetworkTree struct {
ranger cidranger.Ranger
}