From: Hans Dedecker Date: Thu, 21 Mar 2019 13:17:50 +0000 (+0100) Subject: ndp: fix adding proxy neighbor entries X-Git-Url: https://git.librecmc.org/?p=oweals%2Fodhcpd.git;a=commitdiff_plain;h=e4a24dcb5aa48fdace3d6482db262bde9969b5bb ndp: fix adding proxy neighbor entries In case multiple logical OpenWrt interfaces are stacked on the same device and one of the interfaces is configured in relay and the other not; adding a proxy neighbor entry will result into it immediately being deleted if the interface in non relay mode comes last. Fix this by not doing a delete on the interface which is not configured in relay mode. Signed-off-by: Hans Dedecker --- diff --git a/src/ndp.c b/src/ndp.c index c819062..800c616 100644 --- a/src/ndp.c +++ b/src/ndp.c @@ -342,16 +342,14 @@ static void setup_addr_for_relaying(struct in6_addr *addr, struct interface *ifa inet_ntop(AF_INET6, addr, ipbuf, sizeof(ipbuf)); avl_for_each_element(&interfaces, c, avl) { - if (iface == c || (c->ndp != MODE_RELAY && !add)) + if (iface == c || c->ndp != MODE_RELAY) continue; - bool neigh_add = (c->ndp == MODE_RELAY ? add : false); - - if (netlink_setup_proxy_neigh(addr, c->ifindex, neigh_add)) + if (netlink_setup_proxy_neigh(addr, c->ifindex, add)) syslog(LOG_DEBUG, "Failed to %s proxy neighbour entry %s on %s", - neigh_add ? "add" : "delete", ipbuf, c->name); + add ? "add" : "delete", ipbuf, c->name); else syslog(LOG_DEBUG, "%s proxy neighbour entry %s on %s", - neigh_add ? "Added" : "Deleted", ipbuf, c->name); + add ? "Added" : "Deleted", ipbuf, c->name); } }