mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-15 18:05:54 +00:00
bgpd: clarify when the vpnv6 nexthop length must be modified
Using a route-map to update the local ipv6 address has to be better clarified. Actually, when a VPN SAFI is used, the nexthop length must be changed to 48 bytes. Other cases, the length will be 32 bytes. Fixes:9795e9f234
("bgpd: fix when route-map changes the link local nexthop for vpnv6") Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com> (cherry picked from commit5bbcc78202
)
This commit is contained in:
parent
bea6f612ae
commit
fd5dcbacfa
@ -3576,17 +3576,29 @@ route_set_ipv6_nexthop_local(void *rule, const struct prefix *p, void *object)
|
|||||||
{
|
{
|
||||||
struct in6_addr *address;
|
struct in6_addr *address;
|
||||||
struct bgp_path_info *path;
|
struct bgp_path_info *path;
|
||||||
|
struct bgp_dest *dest;
|
||||||
|
struct bgp_table *table = NULL;
|
||||||
|
|
||||||
/* Fetch routemap's rule information. */
|
/* Fetch routemap's rule information. */
|
||||||
address = rule;
|
address = rule;
|
||||||
path = object;
|
path = object;
|
||||||
|
dest = path->net;
|
||||||
|
|
||||||
|
if (!dest)
|
||||||
|
return RMAP_OKAY;
|
||||||
|
|
||||||
|
table = bgp_dest_table(dest);
|
||||||
|
if (!table)
|
||||||
|
return RMAP_OKAY;
|
||||||
|
|
||||||
/* Set next hop value. */
|
/* Set next hop value. */
|
||||||
path->attr->mp_nexthop_local = *address;
|
path->attr->mp_nexthop_local = *address;
|
||||||
|
|
||||||
/* Set nexthop length. */
|
/* Set nexthop length. */
|
||||||
if (path->attr->mp_nexthop_len != BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL &&
|
if (table->safi == SAFI_MPLS_VPN || table->safi == SAFI_ENCAP ||
|
||||||
path->attr->mp_nexthop_len != BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL)
|
table->safi == SAFI_EVPN)
|
||||||
|
path->attr->mp_nexthop_len = BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL;
|
||||||
|
else
|
||||||
path->attr->mp_nexthop_len = BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL;
|
path->attr->mp_nexthop_len = BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL;
|
||||||
|
|
||||||
SET_FLAG(path->attr->rmap_change_flags,
|
SET_FLAG(path->attr->rmap_change_flags,
|
||||||
|
Loading…
Reference in New Issue
Block a user