in pkg/tools/ip.go [101:141]
func localIPAddress0() (ipAddresses map[string]*hostIPAddress, defAddr string, err error) {
ifaces, err := net.Interfaces()
if err != nil {
return nil, "", err
}
// handle err
ipAddresses = make(map[string]*hostIPAddress)
var defV4, defV6 string
for _, i := range ifaces {
if i.Flags&net.FlagLoopback != 0 {
continue
}
addrs, err := i.Addrs()
if err != nil {
return nil, "", err
}
ipv4, ipv6 := analyzeIPAddresses(addrs)
if ipv4 != "" || ipv6 != "" {
if defV4 == "" {
defV4 = ipv4
}
if defV6 == "" {
defV6 = ipv6
}
ipAddresses[i.Name] = &hostIPAddress{ipV4: ipv4, ipV6: ipv6}
}
}
if len(ipAddresses) == 0 {
return nil, "", fmt.Errorf("not found")
}
if defV4 != "" {
defAddr = defV4
} else {
defAddr = defV6
}
return ipAddresses, defAddr, nil
}