diff options
author | tigranmartirosyan <tigran@xcloudnetworks.com> | 2017-07-03 21:05:58 +0200 |
---|---|---|
committer | tigranmartirosyan <tigran@xcloudnetworks.com> | 2017-07-03 21:05:58 +0200 |
commit | a08b8b0f17cebb5aa2e66163c5098be43d243afe (patch) | |
tree | 623231d66fcff3e16206b0907613bd1526e97eb2 /zebra | |
parent | Merge pull request #771 from qlyoung/printf-madness (diff) | |
download | frr-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.c | 13 |
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++; } |