Преглед изворни кода

Improve GetIfaceIP4AddrMatch

Thanks to eyakubovich on github for the comments
Josselin Costanzi пре 10 година
родитељ
комит
1a14596819
1 измењених фајлова са 10 додато и 10 уклоњено
  1. 10 10
      pkg/ip/iface.go

+ 10 - 10
pkg/ip/iface.go

@@ -7,7 +7,7 @@ import (
 	"github.com/coreos/rudder/Godeps/_workspace/src/github.com/docker/libcontainer/netlink"
 )
 
-func GetIfaceIP4AddrMatch(iface *net.Interface, matchAddr net.IP) (net.IP, error) {
+func GetIfaceIP4Addr(iface *net.Interface) (net.IP, error) {
 	addrs, err := iface.Addrs()
 	if err != nil {
 		return nil, err
@@ -18,19 +18,17 @@ func GetIfaceIP4AddrMatch(iface *net.Interface, matchAddr net.IP) (net.IP, error
 		// and assert it is IPv4
 		ip, _, err := net.ParseCIDR(addr.String())
 		if err == nil && ip.To4() != nil {
-			if ip.To4().Equal(matchAddr) {
-				return ip.To4(), nil
-			}
+			return ip.To4(), nil
 		}
 	}
 
 	return nil, errors.New("No IPv4 address found for given interface")
 }
 
-func GetIfaceIP4Addr(iface *net.Interface) (net.IP, error) {
+func GetIfaceIP4AddrMatch(iface *net.Interface, matchAddr net.IP) (error) {
 	addrs, err := iface.Addrs()
 	if err != nil {
-		return nil, err
+		return err
 	}
 
 	for _, addr := range addrs {
@@ -38,11 +36,13 @@ func GetIfaceIP4Addr(iface *net.Interface) (net.IP, error) {
 		// and assert it is IPv4
 		ip, _, err := net.ParseCIDR(addr.String())
 		if err == nil && ip.To4() != nil {
-			return ip.To4(), nil
+			if ip.To4().Equal(matchAddr) {
+				return nil
+			}
 		}
 	}
 
-	return nil, errors.New("No IPv4 address found for given interface")
+	return errors.New("No IPv4 address found for given interface")
 }
 
 func GetDefaultGatewayIface() (*net.Interface, error) {
@@ -70,8 +70,8 @@ func GetInterfaceByIP(ip net.IP) (*net.Interface, error) {
 	}
 
 	for _, iface := range ifaces {
-		addr, err := GetIfaceIP4AddrMatch(&iface, ip)
-		if err == nil && ip.Equal(addr) {
+		err := GetIfaceIP4AddrMatch(&iface, ip)
+		if err == nil {
 			return &iface, nil
 		}
 	}