Merge pull request #3125 from dslicenc/linklocal-nht

bgpd: allow nht registration on ipv6 link-local addresses
This commit is contained in:
Russ White 2018-10-07 21:47:01 -04:00 committed by GitHub
commit 4d43d33d25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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) if (make_prefix(afi, ri, &p) < 0)
return 1; return 1;
} else if (peer) { } 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 (!sockunion2hostprefix(&peer->su, &p)) {
if (BGP_DEBUG(nht, NHT)) { if (BGP_DEBUG(nht, NHT)) {
zlog_debug( zlog_debug(
@ -287,10 +282,6 @@ void bgp_delete_connected_nexthop(afi_t afi, struct peer *peer)
if (!peer) if (!peer)
return; 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)) if (!sockunion2hostprefix(&peer->su, &p))
return; 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 * we receive from bgp. This is to allow us
* to work with v4 routing over v6 nexthops * to work with v4 routing over v6 nexthops
*/ */
if (peer && if (peer && !peer->ifp
CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE) && CHECK_FLAG(peer->flags,
PEER_FLAG_CAPABILITY_ENHE)
&& nhr.prefix.family == AF_INET6) { && nhr.prefix.family == AF_INET6) {
struct interface *ifp; struct interface *ifp;
@ -556,11 +548,6 @@ static int make_prefix(int afi, struct bgp_info *ri, struct prefix *p)
} }
break; break;
case AFI_IP6: 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; p->family = AF_INET6;
if (is_bgp_static) { if (is_bgp_static) {