diff options
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:]  | 
