summaryrefslogtreecommitdiffstats
path: root/zebra
diff options
context:
space:
mode:
authortigranmartirosyan <tigran@xcloudnetworks.com>2017-07-03 21:05:58 +0200
committertigranmartirosyan <tigran@xcloudnetworks.com>2017-07-03 21:05:58 +0200
commita08b8b0f17cebb5aa2e66163c5098be43d243afe (patch)
tree623231d66fcff3e16206b0907613bd1526e97eb2 /zebra
parentMerge pull request #771 from qlyoung/printf-madness (diff)
downloadfrr-a08b8b0f17cebb5aa2e66163c5098be43d243afe.tar.xz
frr-a08b8b0f17cebb5aa2e66163c5098be43d243afe.zip
fix #752 problem: ARP is not updating if mac address changed on remote side
Diffstat (limited to 'zebra')
-rw-r--r--zebra/interface.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index b8426c689..e355c8831 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++;
}