diff options
author | Mitesh Kanjariya <mitesh@marvel-07.cumulusnetworks.com> | 2018-03-03 00:28:33 +0100 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-04-12 15:07:43 +0200 |
commit | ee69da278d26aa46042302238ed6753022f42aa7 (patch) | |
tree | 3489f5a340b9964ed5ad10b18e41debe753a367a /zebra/zebra_vxlan.h | |
parent | bgpd: change advertise-subnet to a hidden command (diff) | |
download | frr-ee69da278d26aa46042302238ed6753022f42aa7.tar.xz frr-ee69da278d26aa46042302238ed6753022f42aa7.zip |
zebra: act on kernel notifications for remote neighbors as well
There can be a race condition between kernel and frr as follows.
Frr sends remote neigh notification.
At the (almost) same time kernel might send a notification saying
neigh is local.
After processing this notifications, the state in frr is local while
state in kernel is remote. This causes kernel and frr to be out of sync.
This problem will be avoided if FRR acts on the kernel notifications for
remote neighbors. When FRR sees a remote neighbor notification for a
neighbor which it thinks is local, FRR will change the neigh state to remote.
Ticket: CM-19923/CM-18830
Review: CCR-7222
Testing: Manual
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Diffstat (limited to 'zebra/zebra_vxlan.h')
-rw-r--r-- | zebra/zebra_vxlan.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/zebra/zebra_vxlan.h b/zebra/zebra_vxlan.h index 16b01e6ac..6153c7d7e 100644 --- a/zebra/zebra_vxlan.h +++ b/zebra/zebra_vxlan.h @@ -122,10 +122,10 @@ extern int zebra_vxlan_add_del_gw_macip(struct interface *ifp, struct prefix *p, extern int zebra_vxlan_svi_up(struct interface *ifp, struct interface *link_if); extern int zebra_vxlan_svi_down(struct interface *ifp, struct interface *link_if); -extern int zebra_vxlan_local_neigh_add_update( +extern int zebra_vxlan_handle_kernel_neigh_update( struct interface *ifp, struct interface *link_if, struct ipaddr *ip, struct ethaddr *macaddr, uint16_t state, uint8_t ext_learned); -extern int zebra_vxlan_local_neigh_del(struct interface *ifp, +extern int zebra_vxlan_handle_kernel_neigh_del(struct interface *ifp, struct interface *link_if, struct ipaddr *ip); extern int zebra_vxlan_local_mac_add_update(struct interface *ifp, |