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>
This commit is contained in:
Mitesh Kanjariya 2018-02-26 14:10:50 -08:00 committed by Donald Sharp
parent ee69da278d
commit e9d2cbdebf
2 changed files with 3 additions and 1 deletions

View File

@ -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, int kernel_add_neigh(struct interface *ifp, struct ipaddr *ip,
struct ethaddr *mac) 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) int kernel_del_neigh(struct interface *ifp, struct ipaddr *ip)

View File

@ -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 a remote entry, see if it needs to be refreshed */
if (CHECK_FLAG(n->flags, ZEBRA_NEIGH_REMOTE)) { if (CHECK_FLAG(n->flags, ZEBRA_NEIGH_REMOTE)) {
#ifdef GNU_LINUX
if (state & NUD_STALE) if (state & NUD_STALE)
zvni_neigh_install(zvni, n); zvni_neigh_install(zvni, n);
#endif
} else { } else {
/* We got a "remote" neighbor notification for an entry /* We got a "remote" neighbor notification for an entry
* we think is local. This can happen in a multihoming * we think is local. This can happen in a multihoming