Skip to content

Commit

Permalink
fix error handling for netlink.AddrDel
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangzujian committed Apr 6, 2022
1 parent aa7c3b8 commit 6324804
Showing 1 changed file with 26 additions and 22 deletions.
48 changes: 26 additions & 22 deletions pkg/daemon/ovs.go
Original file line number Diff line number Diff line change
Expand Up @@ -453,14 +453,12 @@ func configureNic(link, ip string, macAddr net.HardwareAddr, mtu int) error {
}

for _, addr := range ipDelMap {
ipDel := addr
if err = netlink.AddrDel(nodeLink, &ipDel); err != nil {
if err = netlink.AddrDel(nodeLink, &addr); err != nil {
return fmt.Errorf("delete address %s: %v", addr, err)
}
}
for _, addr := range ipAddMap {
ipAdd := addr
if err = netlink.AddrAdd(nodeLink, &ipAdd); err != nil {
if err = netlink.AddrAdd(nodeLink, &addr); err != nil {
return fmt.Errorf("can not add address %v to nic %s: %v", addr, link, err)
}
}
Expand Down Expand Up @@ -575,15 +573,19 @@ func configProviderNic(nicName, brName string) (int, error) {
}

for _, addr := range addrs {
if addr.IP.To4() == nil && addr.IP.IsLinkLocalUnicast() {
if prefix, _ := addr.Mask.Size(); prefix == 64 {
// skip link local IPv6 address
continue
}
if addr.IP.IsLinkLocalUnicast() {
// skip 169.254.0.0/16 and fe80::/10
continue
}

if err = netlink.AddrDel(nic, &addr); err != nil && !errors.Is(err, syscall.ENOENT) {
return 0, fmt.Errorf("failed to delete address %s on nic %s: %v", addr.String(), nicName, err)
if err = netlink.AddrDel(nic, &addr); err != nil {
errMsg := fmt.Errorf("failed to delete address %s on nic %s: %v", addr.String(), nicName, err)
if errors.Is(err, syscall.EADDRNOTAVAIL) {
// the IP address does not exist now
klog.Warning(errMsg)
continue
}
return 0, errMsg
}

if addr.Label != "" {
Expand Down Expand Up @@ -689,15 +691,19 @@ func removeProviderNic(nicName, brName string) error {
}

for _, addr := range addrs {
if addr.IP.To4() == nil && addr.IP.IsLinkLocalUnicast() {
if prefix, _ := addr.Mask.Size(); prefix == 64 {
// skip link local IPv6 address
continue
}
if addr.IP.IsLinkLocalUnicast() {
// skip 169.254.0.0/16 and fe80::/10
continue
}

if err = netlink.AddrDel(bridge, &addr); err != nil && !errors.Is(err, syscall.ENOENT) {
return fmt.Errorf("failed to delete address %s on OVS bridge %s: %v", addr.String(), brName, err)
if err = netlink.AddrDel(bridge, &addr); err != nil {
errMsg := fmt.Errorf("failed to delete address %s on OVS bridge %s: %v", addr.String(), brName, err)
if errors.Is(err, syscall.EADDRNOTAVAIL) {
// the IP address does not exist now
klog.Warning(errMsg)
continue
}
return errMsg
}

if addr.Label != "" {
Expand Down Expand Up @@ -937,14 +943,12 @@ func configureAdditionalNic(link, ip string) error {
}

for _, addr := range ipDelMap {
ipDel := addr
if err = netlink.AddrDel(nodeLink, &ipDel); err != nil {
if err = netlink.AddrDel(nodeLink, &addr); err != nil {
return fmt.Errorf("delete address %s %v", addr, err)
}
}
for _, addr := range ipAddMap {
ipAdd := addr
if err = netlink.AddrAdd(nodeLink, &ipAdd); err != nil {
if err = netlink.AddrAdd(nodeLink, &addr); err != nil {
return fmt.Errorf("can not add address %v to nic %s, %v", addr, link, err)
}
}
Expand Down

0 comments on commit 6324804

Please sign in to comment.