25 lines
477 B
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
|
|
}
|