Skip to content

Commit

Permalink
Merge pull request #14845 from opensourcerouting/fix/bgp_conditional_…
Browse files Browse the repository at this point in the history
…double_free

bgpd: Prevent USE case for conditional advertisements with `set` actions
  • Loading branch information
donaldsharp authored Nov 21, 2023
2 parents 86fb83c + d410587 commit b41f7b1
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
3 changes: 2 additions & 1 deletion bgpd/bgp_conditional_adv.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,9 @@ static void bgp_conditional_adv_routes(struct peer *peer, afi_t afi,
bgp_addpath_id_for_peer(
peer, afi, safi,
&pi->tx_addpath));

bgp_attr_flush(&advmap_attr);
}
bgp_attr_flush(&advmap_attr);
}
}
UNSET_FLAG(subgrp->sflags, SUBGRP_STATUS_TABLE_REPARSING);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ route-map exist-map permit 10
!
route-map advertise-map permit 10
match ip address prefix-list advertise
set community 65000:1
!
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def test_bgp_conditional_advertisements_static_route():
if tgen.routers_have_failure():
pytest.skip(tgen.errors)

r1 = tgen.gears["r1"]
r2 = tgen.gears["r2"]

def _bgp_converge():
Expand Down Expand Up @@ -112,6 +113,25 @@ def _bgp_check_advertised_after_update():
_, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
assert result is None, "10.10.10.2/32 is not advertised after prefix-list update"

def _bgp_check_received_routes():
output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast 10.10.10.1/32 json"))
expected = {
"paths": [
{
"community": {
"string": "65000:1",
}
}
]
}
return topotest.json_cmp(output, expected)

test_func = functools.partial(
_bgp_check_received_routes,
)
_, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
assert result is None, "10.10.10.1/32 does not have 65000:1 community attached"


if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
Expand Down

0 comments on commit b41f7b1

Please sign in to comment.