summaryrefslogtreecommitdiffstats
path: root/ipv6nd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2015-01-08 13:33:07 +0000
committerRoy Marples <roy@marples.name>2015-01-08 13:33:07 +0000
commitde67b951103e46d0b0ce380e632e02bfb2e798a5 (patch)
tree18d776c4958dc680ee1480af994541a5db481a7a /ipv6nd.c
parent62f12387ac7944e54d05a96cbb300165f064fb86 (diff)
downloaddhcpcd-de67b951103e46d0b0ce380e632e02bfb2e798a5.tar.xz
Only check DaD for addresses we have actually added ourselves.
Diffstat (limited to 'ipv6nd.c')
-rw-r--r--ipv6nd.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ipv6nd.c b/ipv6nd.c
index b7081537..51952f3d 100644
--- a/ipv6nd.c
+++ b/ipv6nd.c
@@ -494,8 +494,8 @@ ipv6nd_scriptrun(struct ra *rap)
hasaddress = 0;
/* If all addresses have completed DAD run the script */
TAILQ_FOREACH(ap, &rap->addrs, next) {
- if ((ap->flags & (IPV6_AF_ONLINK | IPV6_AF_AUTOCONF)) ==
- (IPV6_AF_ONLINK | IPV6_AF_AUTOCONF))
+ if ((ap->flags & (IPV6_AF_AUTOCONF | IPV6_AF_ADDED)) ==
+ (IPV6_AF_AUTOCONF | IPV6_AF_ADDED))
{
hasaddress = 1;
if (!(ap->flags & IPV6_AF_DADCOMPLETED) &&
@@ -563,8 +563,9 @@ ipv6nd_dadcompleted(const struct interface *ifp)
continue;
TAILQ_FOREACH(ap, &rap->addrs, next) {
if (ap->flags & IPV6_AF_AUTOCONF &&
+ ap->flags & IPV6_AF_ADDED &&
!(ap->flags & IPV6_AF_DADCOMPLETED))
- return 0;
+ return 0;
}
}
return 1;
@@ -647,6 +648,7 @@ try_script:
found = 0;
TAILQ_FOREACH(rapap, &rap->addrs, next) {
if (rapap->flags & IPV6_AF_AUTOCONF &&
+ rapap->flags & IPV6_AF_ADDED &&
(rapap->flags & IPV6_AF_DADCOMPLETED) == 0)
{
wascompleted = 0;