diff options
| author | Roy Marples <roy@marples.name> | 2020-01-21 12:01:02 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2020-01-21 12:01:02 +0000 |
| commit | 068e30162ae3259a5325ab90810332dbfad19881 (patch) | |
| tree | 8ff1a71b7bd9dba4287bd621d203566196f7bae5 /src/if-bsd.c | |
| parent | 75d61aa4e9f34be2c9e83cad52df6a9b57ba9d17 (diff) | |
| download | dhcpcd-068e30162ae3259a5325ab90810332dbfad19881.tar.xz | |
BSD: Improve RTM_NEWADDR/RTM_DELADDR validaton some more
Diffstat (limited to 'src/if-bsd.c')
| -rw-r--r-- | src/if-bsd.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/if-bsd.c b/src/if-bsd.c index 4d455791..4fb6fb69 100644 --- a/src/if-bsd.c +++ b/src/if-bsd.c @@ -1381,11 +1381,13 @@ if_ifa(struct dhcpcd_ctx *ctx, const struct ifa_msghdr *ifam) logerr("%s: SIOCGIFALIAS", __func__); if (ifam->ifam_type != RTM_DELADDR) break; - } + } else { + if (ifam->ifam_type == RTM_DELADDR) + break; #if defined(__NetBSD_Version__) && __NetBSD_Version__ < 800000000 - else bcast = ifra.ifra_broadaddr.sin_addr; #endif + } #else #warning No SIOCGIFALIAS support /* @@ -1444,16 +1446,15 @@ if_ifa(struct dhcpcd_ctx *ctx, const struct ifa_msghdr *ifam) * dhcpcd to drop any lease to which it belongs. * Also check an added address was really added. */ - if (ifam->ifam_type == RTM_DELADDR) { - flags = if_addrflags6(ifp, &addr6, NULL); - if (flags != -1) - break; - flags = 0; - } else if ((flags = if_addrflags6(ifp, &addr6, NULL)) == -1) { + flags = if_addrflags6(ifp, &addr6, NULL); + if (flags == -1) { if (errno != EADDRNOTAVAIL) logerr("%s: if_addrflags6", __func__); + if (ifam->ifam_type != RTM_DELADDR) + break; + flags = 0; + } else if (ifam->ifam_type == RTM_DELADDR) break; - } #ifdef __KAME__ if (IN6_IS_ADDR_LINKLOCAL(&addr6)) |
