summaryrefslogtreecommitdiffstats
path: root/src/if-bsd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-01-21 12:01:02 +0000
committerRoy Marples <roy@marples.name>2020-01-21 12:01:02 +0000
commit068e30162ae3259a5325ab90810332dbfad19881 (patch)
tree8ff1a71b7bd9dba4287bd621d203566196f7bae5 /src/if-bsd.c
parent75d61aa4e9f34be2c9e83cad52df6a9b57ba9d17 (diff)
downloaddhcpcd-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.c19
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))