34 lines
594 B
Go
34 lines
594 B
Go
package routing
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/netip"
|
|
)
|
|
|
|
func NetipPrefixToIPNet(prefix *netip.Prefix) (ipNet *net.IPNet) {
|
|
if prefix == nil {
|
|
return nil
|
|
}
|
|
|
|
s := prefix.String()
|
|
ip, ipNet, err := net.ParseCIDR(s)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ipNet.IP = ip
|
|
return ipNet
|
|
}
|
|
|
|
func netIPNetToNetipPrefix(ipNet net.IPNet) (prefix netip.Prefix) {
|
|
return netip.MustParsePrefix(ipNet.String())
|
|
}
|
|
|
|
func netIPToNetipAddress(ip net.IP) (address netip.Addr) {
|
|
address, ok := netip.AddrFromSlice(ip)
|
|
if !ok {
|
|
panic(fmt.Sprintf("converting %#v to netip.Addr failed", ip))
|
|
}
|
|
return address
|
|
}
|