mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-30 03:08:59 +00:00
Merge pull request #3125 from dslicenc/linklocal-nht
bgpd: allow nht registration on ipv6 link-local addresses
This commit is contained in:
commit
4d43d33d25
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user