From: Steven Barth Date: Tue, 14 Jul 2015 18:49:02 +0000 (+0200) Subject: ndp: reintroduce address replay X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=42cdb6d45ac8dd677f40fe66c72c6028e853fc89;p=oweals%2Fodhcpd.git ndp: reintroduce address replay --- diff --git a/src/ndp.c b/src/ndp.c index d1683b9..2aa55be 100644 --- a/src/ndp.c +++ b/src/ndp.c @@ -417,6 +417,22 @@ static void handle_rtnetlink(_unused void *addr, void *data, size_t len, if (iface->dhcpv6 == RELAYD_SERVER) iface->ia_reconf = true; + + if (iface->ndp == RELAYD_RELAY && iface->master) { + // Replay address changes on all slave interfaces + nh->nlmsg_flags = NLM_F_REQUEST; + + if (nh->nlmsg_type == RTM_NEWADDR) + nh->nlmsg_flags |= NLM_F_CREATE | NLM_F_REPLACE; + + struct interface *c; + list_for_each_entry(c, &interfaces, head) { + if (c->ndp == RELAYD_RELAY && !c->master) { + ndm->ndm_ifindex = c->ifindex; + send(rtnl_event.uloop.fd, nh, nh->nlmsg_len, MSG_DONTWAIT); + } + } + } } }