consensus/utils/network_extra.go

25 lines
477 B
Go

//go:build !linux
package utils
import "net"
// InterfaceAddrs returns a list of unicast interface addresses for a specific
// interface.
func InterfaceAddrs(ifi *net.Interface) ([]*ExtendedIPNet, error) {
a, err := ifi.Addrs()
if err != nil {
return nil, err
}
var addrs []*ExtendedIPNet
for _, e := range a {
if ipNet, ok := e.(*net.IPNet); ok {
addrs = append(addrs, &ExtendedIPNet{
IP: ipNet.IP,
Mask: ipNet.Mask,
})
}
}
return addrs, nil
}