diff options
| author | Roy Marples <roy@marples.name> | 2013-06-09 10:04:46 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2013-06-09 10:04:46 +0000 |
| commit | f3b4f2d63cdf644d400f4b194a6e7ddf5501472a (patch) | |
| tree | dba7d3889934efed00317e54a6bfcfe3db9c9011 /ipv6.c | |
| parent | 8a933951522cfcdeae43e967910bfafe5cd76fba (diff) | |
| download | dhcpcd-f3b4f2d63cdf644d400f4b194a6e7ddf5501472a.tar.xz | |
Only run LL callbacks from LL addresses
Diffstat (limited to 'ipv6.c')
| -rw-r--r-- | ipv6.c | 19 |
1 files changed, 11 insertions, 8 deletions
@@ -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; |
