summaryrefslogtreecommitdiffstats
path: root/zebra
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@users.noreply.github.com>2017-07-18 18:11:35 +0200
committerGitHub <noreply@github.com>2017-07-18 18:11:35 +0200
commit8ed86a5d2062084ecc5c1d0035f286ff6aad9bd7 (patch)
tree8303be6a374af0e9bb4adaa708883f28a13e6dde /zebra
parentMerge pull request #833 from dslicenc/cm16779-bgp-startup-ll (diff)
parentAdd 1 more identation to correspond to kernel style multi-line comment (diff)
downloadfrr-8ed86a5d2062084ecc5c1d0035f286ff6aad9bd7.tar.xz
frr-8ed86a5d2062084ecc5c1d0035f286ff6aad9bd7.zip
Merge pull request #828 from tigranmartirosyan/master
#752 ARP is not updating if mac address changed on remote side
Diffstat (limited to 'zebra')
-rw-r--r--zebra/interface.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index 02c2a6c15..4bce42f22 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -770,7 +770,17 @@ void 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);
- kernel_neigh_update(add, ifp->ifindex, ipv4_ll.s_addr, mac, 6);
+
+ /*
+ * Remove existed arp record for the interface as netlink
+ * protocol does not have update message types
+ *
+ * supported message types are RTM_NEWNEIGH and 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++;
}