summaryrefslogtreecommitdiff
path: root/zebra/interface.c
diff options
context:
space:
mode:
authortigranmartirosyan <tigran@xcloudnetworks.com>2017-07-03 23:05:58 +0400
committertigranmartirosyan <tigran@xcloudnetworks.com>2017-07-03 23:05:58 +0400
commita08b8b0f17cebb5aa2e66163c5098be43d243afe (patch)
tree623231d66fcff3e16206b0907613bd1526e97eb2 /zebra/interface.c
parent8186327f3d2a5028b55eab9a04c31b5ccd68afd1 (diff)
fix #752 problem: ARP is not updating if mac address changed on remote side
Diffstat (limited to 'zebra/interface.c')
-rw-r--r--zebra/interface.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index b8426c6890..e355c88316 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -782,7 +782,20 @@ if_nbr_ipv6ll_to_ipv4ll_neigh_update (struct interface *ifp,
inet_pton (AF_INET, buf, &ipv4_ll);
ipv6_ll_address_to_mac(address, (u_char *)mac);
+
+ /*
+ * Remove existed arp record for the interface,
+ * because netlink protocol does not support message for update.
+ * supported commands RTM_NEWNEIGH or RTM_DELNEIGH
+ */
+
+ kernel_neigh_update (0, ifp->ifindex, ipv4_ll.s_addr, mac, 6);
+
+ /*
+ * Add arp record
+ */
kernel_neigh_update (add, ifp->ifindex, ipv4_ll.s_addr, mac, 6);
+
zvrf->neigh_updates++;
}