]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Only check DaD for addresses we have actually added ourselves.
authorRoy Marples <roy@marples.name>
Thu, 8 Jan 2015 13:33:07 +0000 (13:33 +0000)
committerRoy Marples <roy@marples.name>
Thu, 8 Jan 2015 13:33:07 +0000 (13:33 +0000)
ipv6nd.c

index b7081537dba33d4ba44381cd73680ad6c5611153..51952f3d269a35df92f6584d9aec37fadda35dd8 100644 (file)
--- 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;