]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Only run LL callbacks from LL addresses
authorRoy Marples <roy@marples.name>
Sun, 9 Jun 2013 10:04:46 +0000 (10:04 +0000)
committerRoy Marples <roy@marples.name>
Sun, 9 Jun 2013 10:04:46 +0000 (10:04 +0000)
ipv6.c

diff --git a/ipv6.c b/ipv6.c
index c295d3e511061d208c16a8d9e30db37365760bbe..e2eeb2c7082066013da313d69141ce2e03281ff7 100644 (file)
--- a/ipv6.c
+++ b/ipv6.c
@@ -535,14 +535,17 @@ ipv6_handleifa(int cmd, struct if_head *ifs, const char *ifname,
                        TAILQ_INSERT_TAIL(&state->addrs,
                            ap, next);
 
-                       /* Now run any callbacks.
-                        * Typically IPv6RS or DHCPv6 */
-                       while ((cb = TAILQ_FIRST(&state->ll_callbacks)))
-                       {
-                               TAILQ_REMOVE(&state->ll_callbacks,
-                                   cb, next);
-                               cb->callback(cb->arg);
-                               free(cb);
+                       if (IN6_IS_ADDR_LINKLOCAL(&ap->addr)) {
+                               /* Now run any callbacks.
+                                * Typically IPv6RS or DHCPv6 */
+                               while ((cb =
+                                   TAILQ_FIRST(&state->ll_callbacks)))
+                               {
+                                       TAILQ_REMOVE(&state->ll_callbacks,
+                                           cb, next);
+                                       cb->callback(cb->arg);
+                                       free(cb);
+                               }
                        }
                }
                break;