diff options
| author | Lou Berger <lberger@labn.net> | 2018-04-10 11:57:13 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-10 11:57:13 -0400 |
| commit | ebf58e2e481e3be7d9649b9923a8dc2f015a4b11 (patch) | |
| tree | 7ade500ad3876b2cf6993faba792be45fbed66ac /zebra/interface.c | |
| parent | aa2fc55b2096ee9704ddb74f200672ae999d9ab9 (diff) | |
| parent | 20089ae2e41621e3e63aab67170d71bdf8605641 (diff) | |
Merge pull request #2009 from donaldsharp/self_originate
zebra: Notice when our route is deleted and re-install.
Diffstat (limited to 'zebra/interface.c')
| -rw-r--r-- | zebra/interface.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/zebra/interface.c b/zebra/interface.c index 4f761a5e99..6f59a2d399 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -825,6 +825,7 @@ void if_nbr_ipv6ll_to_ipv4ll_neigh_update(struct interface *ifp, struct in6_addr *address, int add) { struct zebra_vrf *zvrf = vrf_info_lookup(ifp->vrf_id); + struct zebra_if *zif = ifp->info; char buf[16] = "169.254.0.1"; struct in_addr ipv4_ll; char mac[6]; @@ -845,6 +846,16 @@ void if_nbr_ipv6ll_to_ipv4ll_neigh_update(struct interface *ifp, /* Add arp record */ kernel_neigh_update(add, ifp->ifindex, ipv4_ll.s_addr, mac, 6, ns_id); + + /* + * We need to note whether or not we originated a v6 + * neighbor entry for this interface. So that when + * someone unwisely accidently deletes this entry + * we can shove it back in. + */ + zif->v6_2_v4_ll_neigh_entry = !!add; + memcpy(&zif->v6_2_v4_ll_addr6, address, sizeof(*address)); + zvrf->neigh_updates++; } |
