From 70923dd9db55f7bd9012509a12c83b3b6b815612 Mon Sep 17 00:00:00 2001 From: Ben Moss Date: Thu, 14 Feb 2019 10:17:52 -0500 Subject: [PATCH] Fix testing if an interface is the loopback It's not guaranteed that the loopback interface only has the loopback IP, in our environments our loopback interface is also assigned a 169 address as well. --- pkg/cloudprovider/providers/vsphere/vsphere.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/vsphere/vsphere.go b/pkg/cloudprovider/providers/vsphere/vsphere.go index d0ae21247bb..8c8d0f0682f 100644 --- a/pkg/cloudprovider/providers/vsphere/vsphere.go +++ b/pkg/cloudprovider/providers/vsphere/vsphere.go @@ -547,12 +547,15 @@ func getLocalIP() ([]v1.NodeAddress, error) { return nil, err } for _, i := range ifaces { + if i.Flags&net.FlagLoopback != 0 { + continue + } localAddrs, err := i.Addrs() if err != nil { klog.Warningf("Failed to extract addresses for NodeAddresses - %v", err) } else { for _, addr := range localAddrs { - if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { + if ipnet, ok := addr.(*net.IPNet); ok { if ipnet.IP.To4() != nil { // Filter external IP by MAC address OUIs from vCenter and from ESX vmMACAddr := strings.ToLower(i.HardwareAddr.String())