mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
proxy utils: check network interfaces only once
Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
This commit is contained in:
parent
3a95b1130a
commit
a99321c87c
@ -181,29 +181,35 @@ func GetNodeAddresses(cidrs []string, nw NetworkInterfacer) (sets.String, error)
|
|||||||
uniqueAddressList.Insert(cidr)
|
uniqueAddressList.Insert(cidr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
itfs, err := nw.Interfaces()
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error listing all interfaces from host, error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Second round of iteration to parse IPs based on cidr.
|
// Second round of iteration to parse IPs based on cidr.
|
||||||
for _, cidr := range cidrs {
|
for _, cidr := range cidrs {
|
||||||
if IsZeroCIDR(cidr) {
|
if IsZeroCIDR(cidr) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
_, ipNet, _ := net.ParseCIDR(cidr)
|
_, ipNet, _ := net.ParseCIDR(cidr)
|
||||||
itfs, err := nw.Interfaces()
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error listing all interfaces from host, error: %v", err)
|
|
||||||
}
|
|
||||||
for _, itf := range itfs {
|
for _, itf := range itfs {
|
||||||
addrs, err := nw.Addrs(&itf)
|
addrs, err := nw.Addrs(&itf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error getting address from interface %s, error: %v", itf.Name, err)
|
return nil, fmt.Errorf("error getting address from interface %s, error: %v", itf.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
if addr == nil {
|
if addr == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
ip, _, err := net.ParseCIDR(addr.String())
|
ip, _, err := net.ParseCIDR(addr.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error parsing CIDR for interface %s, error: %v", itf.Name, err)
|
return nil, fmt.Errorf("error parsing CIDR for interface %s, error: %v", itf.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ipNet.Contains(ip) {
|
if ipNet.Contains(ip) {
|
||||||
if utilnet.IsIPv6(ip) && !uniqueAddressList.Has(IPv6ZeroCIDR) {
|
if utilnet.IsIPv6(ip) && !uniqueAddressList.Has(IPv6ZeroCIDR) {
|
||||||
uniqueAddressList.Insert(ip.String())
|
uniqueAddressList.Insert(ip.String())
|
||||||
|
Loading…
Reference in New Issue
Block a user