mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 16:04:49 +00:00
bgpd: reuse sockunion2hostprefix() on bgp_nht.c
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
658bbf6d70
commit
235022cbaa
@ -115,19 +115,7 @@ bgp_unlink_nexthop_by_peer (struct peer *peer)
|
|||||||
struct bgp_nexthop_cache *bnc;
|
struct bgp_nexthop_cache *bnc;
|
||||||
afi_t afi = family2afi(peer->su.sa.sa_family);
|
afi_t afi = family2afi(peer->su.sa.sa_family);
|
||||||
|
|
||||||
if (afi == AFI_IP)
|
if (! sockunion2hostprefix (&peer->su, &p))
|
||||||
{
|
|
||||||
p.family = AF_INET;
|
|
||||||
p.prefixlen = IPV4_MAX_BITLEN;
|
|
||||||
p.u.prefix4 = peer->su.sin.sin_addr;
|
|
||||||
}
|
|
||||||
else if (afi == AFI_IP6)
|
|
||||||
{
|
|
||||||
p.family = AF_INET6;
|
|
||||||
p.prefixlen = IPV6_MAX_BITLEN;
|
|
||||||
p.u.prefix6 = peer->su.sin6.sin6_addr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rn = bgp_node_get (peer->bgp->nexthop_cache_table[afi], &p);
|
rn = bgp_node_get (peer->bgp->nexthop_cache_table[afi], &p);
|
||||||
@ -168,23 +156,11 @@ bgp_find_or_add_nexthop (struct bgp *bgp, afi_t afi, struct bgp_info *ri,
|
|||||||
}
|
}
|
||||||
else if (peer)
|
else if (peer)
|
||||||
{
|
{
|
||||||
if (afi == AFI_IP)
|
/* Don't register link local NH */
|
||||||
{
|
if (afi == AFI_IP6 && IN6_IS_ADDR_LINKLOCAL (&peer->su.sin6.sin6_addr))
|
||||||
p.family = AF_INET;
|
return 1;
|
||||||
p.prefixlen = IPV4_MAX_BITLEN;
|
|
||||||
p.u.prefix4 = peer->su.sin.sin_addr;
|
|
||||||
}
|
|
||||||
else if (afi == AFI_IP6)
|
|
||||||
{
|
|
||||||
p.family = AF_INET6;
|
|
||||||
p.prefixlen = IPV6_MAX_BITLEN;
|
|
||||||
p.u.prefix6 = peer->su.sin6.sin6_addr;
|
|
||||||
|
|
||||||
/* Don't register link local NH */
|
if (! sockunion2hostprefix (&peer->su, &p))
|
||||||
if (IN6_IS_ADDR_LINKLOCAL(&p.u.prefix6))
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (BGP_DEBUG(nht, NHT))
|
if (BGP_DEBUG(nht, NHT))
|
||||||
{
|
{
|
||||||
@ -297,23 +273,11 @@ bgp_delete_connected_nexthop (afi_t afi, struct peer *peer)
|
|||||||
if (!peer)
|
if (!peer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (afi == AFI_IP)
|
/* We don't register link local address for NHT */
|
||||||
{
|
if (afi == AFI_IP6 && IN6_IS_ADDR_LINKLOCAL (&peer->su.sin6.sin6_addr))
|
||||||
p.family = AF_INET;
|
return;
|
||||||
p.prefixlen = IPV4_MAX_BITLEN;
|
|
||||||
p.u.prefix4 = peer->su.sin.sin_addr;
|
|
||||||
}
|
|
||||||
else if (afi == AFI_IP6)
|
|
||||||
{
|
|
||||||
p.family = AF_INET6;
|
|
||||||
p.prefixlen = IPV6_MAX_BITLEN;
|
|
||||||
p.u.prefix6 = peer->su.sin6.sin6_addr;
|
|
||||||
|
|
||||||
/* We don't register link local address for NHT */
|
if (! sockunion2hostprefix (&peer->su, &p))
|
||||||
if (IN6_IS_ADDR_LINKLOCAL(&p.u.prefix6))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rn = bgp_node_lookup(peer->bgp->nexthop_cache_table[family2afi(p.family)], &p);
|
rn = bgp_node_lookup(peer->bgp->nexthop_cache_table[family2afi(p.family)], &p);
|
||||||
|
Loading…
Reference in New Issue
Block a user