diff options
Diffstat (limited to 'nest/iface.c')
-rw-r--r-- | nest/iface.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/nest/iface.c b/nest/iface.c index 2ff2611..2c61680 100644 --- a/nest/iface.c +++ b/nest/iface.c @@ -157,8 +157,14 @@ ifa_notify_change(unsigned c, struct ifa *a) struct proto *p; DBG("IFA change notification (%x) for %s:%I\n", c, a->iface->name, a->ip); + if (c & IF_CHANGE_UP) + neigh_ifa_update(a); + WALK_LIST(p, active_proto_list) ifa_send_notify(p, c, a); + + if (c & IF_CHANGE_DOWN) + neigh_ifa_update(a); } static inline void @@ -195,8 +201,6 @@ if_notify_change(unsigned c, struct iface *i) if_dump(i); #endif - if (c & IF_CHANGE_UP) - neigh_if_up(i); if (c & IF_CHANGE_DOWN) WALK_LIST(a, i->addrs) { @@ -216,9 +220,6 @@ if_notify_change(unsigned c, struct iface *i) if ((c & (IF_CHANGE_UP | IF_CHANGE_DOWN | IF_CHANGE_LINK)) == IF_CHANGE_LINK) neigh_if_link(i); - - if (c & IF_CHANGE_DOWN) - neigh_if_down(i); } static unsigned |