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 <dedeckeh@gmail.com>
inet_ntop(AF_INET6, addr, ipbuf, sizeof(ipbuf));
avl_for_each_element(&interfaces, c, avl) {
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)
- 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",
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",
else
syslog(LOG_DEBUG, "%s proxy neighbour entry %s on %s",
- neigh_add ? "Added" : "Deleted", ipbuf, c->name);
+ add ? "Added" : "Deleted", ipbuf, c->name);