From 42cdb6d45ac8dd677f40fe66c72c6028e853fc89 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Tue, 14 Jul 2015 20:49:02 +0200 Subject: ndp: reintroduce address replay --- src/ndp.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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); + } + } + } } } -- cgit v1.2.3