diff options
| author | Russ White <russ@riw.us> | 2018-10-07 21:47:01 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-07 21:47:01 -0400 |
| commit | 4d43d33d252a8a59eb8c9edfdfbb6579ff958943 (patch) | |
| tree | f56224755d1e452c377cc92bdf3f174feb7435d5 | |
| parent | 62edc9c9e3d3e22f93a1f003ee18d5d21a09599d (diff) | |
| parent | 687a2b5dcccd7d7b288b7a00fcc6f39130f471e0 (diff) | |
Merge pull request #3125 from dslicenc/linklocal-nht
bgpd: allow nht registration on ipv6 link-local addresses
| -rw-r--r-- | bgpd/bgp_nht.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c index dd1ffe9f3b..c94c707157 100644 --- a/bgpd/bgp_nht.c +++ b/bgpd/bgp_nht.c @@ -169,11 +169,6 @@ int bgp_find_or_add_nexthop(struct bgp *bgp_route, struct bgp *bgp_nexthop, if (make_prefix(afi, ri, &p) < 0) return 1; } else if (peer) { - /* Don't register link local NH */ - if (afi == AFI_IP6 - && IN6_IS_ADDR_LINKLOCAL(&peer->su.sin6.sin6_addr)) - return 1; - if (!sockunion2hostprefix(&peer->su, &p)) { if (BGP_DEBUG(nht, NHT)) { zlog_debug( @@ -287,10 +282,6 @@ void bgp_delete_connected_nexthop(afi_t afi, struct peer *peer) if (!peer) return; - /* We don't register link local address for NHT */ - if (afi == AFI_IP6 && IN6_IS_ADDR_LINKLOCAL(&peer->su.sin6.sin6_addr)) - return; - if (!sockunion2hostprefix(&peer->su, &p)) return; @@ -437,8 +428,9 @@ void bgp_parse_nexthop_update(int command, vrf_id_t vrf_id) * we receive from bgp. This is to allow us * to work with v4 routing over v6 nexthops */ - if (peer && - CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE) + if (peer && !peer->ifp + && CHECK_FLAG(peer->flags, + PEER_FLAG_CAPABILITY_ENHE) && nhr.prefix.family == AF_INET6) { struct interface *ifp; @@ -556,11 +548,6 @@ static int make_prefix(int afi, struct bgp_info *ri, struct prefix *p) } break; case AFI_IP6: - /* We don't register link local NH */ - if (ri->attr->mp_nexthop_len != BGP_ATTR_NHLEN_IPV6_GLOBAL - || IN6_IS_ADDR_LINKLOCAL(&ri->attr->mp_nexthop_global)) - return -1; - p->family = AF_INET6; if (is_bgp_static) { |
