diff --git a/lib/lib.go b/lib/lib.go index d1d23abdb9..1f03905182 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -167,8 +167,8 @@ func (e *Entry) processPrefix(src any) (*netip.Prefix, IPType, error) { _, network, err := net.ParseCIDR(src) switch err { case nil: - prefix, ok := netipx.FromStdIPNet(network) - if !ok { + prefix, err2 := netip.ParsePrefix(network.String()) + if err2 != nil { return nil, "", ErrInvalidIPNet } ip := prefix.Addr() @@ -190,6 +190,16 @@ func (e *Entry) processPrefix(src any) (*netip.Prefix, IPType, error) { case ip.Is4(): prefix := netip.PrefixFrom(ip, 32) return &prefix, IPv4, nil + case ip.Is4In6(): + _, network, err2 := net.ParseCIDR(src + "/128") + if err2 != nil { + return nil, "", ErrInvalidIPNet + } + prefix, err3 := netip.ParsePrefix(network.String()) + if err3 != nil { + return nil, "", ErrInvalidIPNet + } + return &prefix, IPv4, nil case ip.Is6(): prefix := netip.PrefixFrom(ip, 128) return &prefix, IPv6, nil