diff --git a/weed/util/network.go b/weed/util/network.go index b7036377f..69559b5f0 100644 --- a/weed/util/network.go +++ b/weed/util/network.go @@ -15,13 +15,18 @@ func DetectedHostAddress() string { return "" } - if v4Address := selectIpV4(netInterfaces); v4Address != "" { + if v4Address := selectIpV4(netInterfaces, true); v4Address != "" { return v4Address } + if v6Address := selectIpV4(netInterfaces, false); v6Address != "" { + return v6Address + } + return "localhost" } -func selectIpV4(netInterfaces []net.Interface) string { + +func selectIpV4(netInterfaces []net.Interface, isIpV4 bool) string { for _, netInterface := range netInterfaces { if (netInterface.Flags & net.FlagUp) == 0 { continue @@ -33,9 +38,15 @@ func selectIpV4(netInterfaces []net.Interface) string { for _, a := range addrs { if ipNet, ok := a.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { + if isIpV4 { + if ipNet.IP.To4() != nil { + return ipNet.IP.String() + } + } else { if ipNet.IP.To16() != nil { return ipNet.IP.String() } + } } } }