我正在寻找一种将网络掩码字符串转换为 Go 中的 CIDR 表示法的方法。
例如,“255.255.255.0”->“/24”
我目前正在使用以下逻辑获取 IP 地址和网络掩码字符串,这可能会使事情变得复杂。
我一直在仔细阅读该net库,试图看看是否有不同的函数可以用来完成我想要的功能,这实际上只是 CIDR 表示法中的 IP 地址:
192.168.1.2/24
var mgmtInterface *net.Interface
var err error
mgmtInterface, err = net.InterfaceByName("eth0")
if err != nil {
log.Println("Unable to find interface eth0, trying en0")
mgmtInterface, err = net.InterfaceByName("en0")
}
addrs, err := mgmtInterface.Addrs()
if err != nil {
log.Println("interface has no address")
}
for _, addr := range addrs {
var ip net.IP
var mask net.IPMask
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
mask = v.Mask
case *net.IPAddr:
ip = v.IP
mask = ip.DefaultMask()
}
if ip == nil {
continue
}
ip = ip.To4()
if ip == nil {
continue
}
// create the netmask
cleanMask := fmt.Sprintf("%d.%d.%d.%d", mask[0], mask[1], mask[2], mask[3])
}
德玛西亚99
GCT1015
饮歌长啸
相关分类