summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitesh Kanjariya <mitesh@marvel-07.cumulusnetworks.com>2018-02-26 14:10:50 -0800
committerDonald Sharp <sharpd@cumulusnetworks.com>2018-04-12 09:07:43 -0400
commite9d2cbdebf26a264a3053abef9cfa9321e9a5cdd (patch)
tree1ca70497958f3e1602f13b7a938ddf2321e7c685
parentee69da278d26aa46042302238ed6753022f42aa7 (diff)
zebra: add EVPN learned neighbors as NUD_NOARP
EVPN owns the remote neigh entries which are programed in the kernel. This entries should not age out and the only way to delete should be from EVPN. We should program these entries with NUD_NOARP instead of NUD_REACHABLE to avoid aging of this macs. Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
-rw-r--r--zebra/rt_netlink.c2
-rw-r--r--zebra/zebra_vxlan.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index fbaa9c4783..9fd8ecb27c 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -2412,7 +2412,7 @@ int kernel_del_mac(struct interface *ifp, vlanid_t vid, struct ethaddr *mac,
int kernel_add_neigh(struct interface *ifp, struct ipaddr *ip,
struct ethaddr *mac)
{
- return netlink_neigh_update2(ifp, ip, mac, NUD_REACHABLE, RTM_NEWNEIGH);
+ return netlink_neigh_update2(ifp, ip, mac, NUD_NOARP, RTM_NEWNEIGH);
}
int kernel_del_neigh(struct interface *ifp, struct ipaddr *ip)
diff --git a/zebra/zebra_vxlan.c b/zebra/zebra_vxlan.c
index a2961428d7..b851ba41d5 100644
--- a/zebra/zebra_vxlan.c
+++ b/zebra/zebra_vxlan.c
@@ -2079,8 +2079,10 @@ static int zvni_remote_neigh_update(zebra_vni_t *zvni,
/* If a remote entry, see if it needs to be refreshed */
if (CHECK_FLAG(n->flags, ZEBRA_NEIGH_REMOTE)) {
+#ifdef GNU_LINUX
if (state & NUD_STALE)
zvni_neigh_install(zvni, n);
+#endif
} else {
/* We got a "remote" neighbor notification for an entry
* we think is local. This can happen in a multihoming