Skip to content

Commit

Permalink
Merge pull request #15352 from louis-6wind/fix-leak-recursive
Browse files Browse the repository at this point in the history
bgpd: fix route recursion on leaked routes
  • Loading branch information
ton31337 authored Feb 12, 2024
2 parents 24ca4f4 + 59a544c commit 26faf34
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
13 changes: 4 additions & 9 deletions bgpd/bgp_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -1511,6 +1511,7 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
struct bgp_path_info *info, struct bgp *bgp, afi_t afi,
safi_t safi)
{
struct bgp_path_info *bpi_ultimate;
struct zapi_route api = { 0 };
unsigned int valid_nh_count = 0;
bool allow_recursion = false;
Expand Down Expand Up @@ -1554,15 +1555,9 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,

peer = info->peer;

if (info->type == ZEBRA_ROUTE_BGP
&& info->sub_type == BGP_ROUTE_IMPORTED) {

/* Obtain peer from parent */
if (info->extra && info->extra->vrfleak &&
info->extra->vrfleak->parent)
peer = ((struct bgp_path_info *)(info->extra->vrfleak
->parent))
->peer;
if (info->type == ZEBRA_ROUTE_BGP) {
bpi_ultimate = bgp_get_imported_bpi_ultimate(info);
peer = bpi_ultimate->peer;
}

tag = info->attr->tag;
Expand Down
7 changes: 7 additions & 0 deletions tests/topotests/bgp_l3vpn_to_bgp_vrf/scripts/check_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -891,4 +891,11 @@
"pass",
"Redundant route 2 details",
)
luCommand(
"r1",
'vtysh -c "show ip route vrf r1-cust5 5.1.0.0/24"',
"Known via .bgp., distance 200, .* vrf r1-cust5, best",
"pass",
"Recursive route leak details",
)
# done

0 comments on commit 26faf34

Please sign in to comment.