summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_conditional_adv.c3
-rw-r--r--tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf1
-rw-r--r--tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py20
3 files changed, 23 insertions, 1 deletions
diff --git a/bgpd/bgp_conditional_adv.c b/bgpd/bgp_conditional_adv.c
index 3b5f5e986b..6ed0dd797b 100644
--- a/bgpd/bgp_conditional_adv.c
+++ b/bgpd/bgp_conditional_adv.c
@@ -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);
diff --git a/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf b/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf
index 9dc4099341..3ced9340ca 100644
--- a/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf
+++ b/tests/topotests/bgp_conditional_advertisement_static_route/r2/frr.conf
@@ -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
!
diff --git a/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py b/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py
index 9d61bbd643..4180bfcdf6 100644
--- a/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py
+++ b/tests/topotests/bgp_conditional_advertisement_static_route/test_bgp_conditional_advertisement_static_route.py
@@ -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():
@@ -112,6 +113,25 @@ def test_bgp_conditional_advertisements_static_route():
_, 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:]