Merge pull request #17905 from pguibert6WIND/advertised_routes_incorrect_json

Advertised routes incorrect json
This commit is contained in:
Donatas Abraitis 2025-01-27 23:32:33 +02:00 committed by GitHub
commit ee67699bd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 146 additions and 1 deletions

View File

@ -15245,7 +15245,7 @@ static int peer_adj_routes(struct vty *vty, struct peer *peer, afi_t afi,
if (type == bgp_show_adj_route_advertised || if (type == bgp_show_adj_route_advertised ||
type == bgp_show_adj_route_received) { type == bgp_show_adj_route_received) {
if (first) { if (first) {
vty_out(vty, "\"%s\":", rd_str); vty_out(vty, "{\"%s\":", rd_str);
first = false; first = false;
} else { } else {
vty_out(vty, ",\"%s\":", rd_str); vty_out(vty, ",\"%s\":", rd_str);
@ -15259,6 +15259,8 @@ static int peer_adj_routes(struct vty *vty, struct peer *peer, afi_t afi,
output_count += output_count_per_rd; output_count += output_count_per_rd;
filtered_count += filtered_count_per_rd; filtered_count += filtered_count_per_rd;
} }
if (first == false && json_routes)
vty_out(vty, "}");
} else { } else {
show_adj_route(vty, peer, table, afi, safi, type, rmap_name, show_adj_route(vty, peer, table, afi, safi, type, rmap_name,
json, json_ar, show_flags, &header1, &header2, json, json_ar, show_flags, &header1, &header2,

View File

@ -0,0 +1,105 @@
{
"bgpLocalRouterId":"192.0.2.1",
"defaultLocPrf":100,
"localAS":65500,
"advertisedRoutes":{
"192.0.2.1:1":{
"rd":"192.0.2.1:1",
"10.101.0.0/24":{
"prefix":"10.101.0.0/24",
"advertisedTo":{
"10.125.0.2":{
"hostname":"r2"
}
},
"paths":[{
"aspath":{
"string":"Local",
"segments":[],
"length":0
},
"nhVrfName":"vrf1",
"announceNexthopSelf":true,
"origin":"incomplete",
"metric":0,
"locPrf":100,
"weight":32768,
"valid":true,
"sourced":true,
"local":true,
"bestpath":{
"overall":true,
"selectionReason":"First path received"
},
"extendedCommunity":{
"string":"RT:192.0.2.1:100"
},
"originatorId":"192.0.2.1",
"remoteLabel":101,
"nexthops":[{
"ip":"0.0.0.0",
"hostname":"r1",
"afi":"ipv4",
"metric":0,
"accessible":true,
"used":true
}],
"peer":{
"peerId":"0.0.0.0",
"routerId":"192.0.2.1"
}
}]
}
},
"192.0.2.1:3":{
"rd":"192.0.2.1:3",
"10.103.0.0/24":{
"prefix":"10.103.0.0/24",
"advertisedTo":{
"10.125.0.2":{
"hostname":"r2"
}
},
"paths":[{
"aspath":{
"string":"Local",
"segments":[],
"length":0
},
"nhVrfName":"vrf3",
"announceNexthopSelf":true,
"origin":"incomplete",
"metric":0,
"locPrf":100,
"weight":32768,
"valid":true,
"sourced":true,
"local":true,
"bestpath":{
"overall":true,
"selectionReason":"First path received"
},
"extendedCommunity":{
"string":"RT:192.0.2.1:300"
},
"originatorId":"192.0.2.1",
"remoteLabel":103,
"nexthops":[{
"ip":"0.0.0.0",
"hostname":"r1",
"afi":"ipv4",
"metric":0,
"accessible":true,
"used":true
}],
"peer":{
"peerId":"0.0.0.0",
"routerId":"192.0.2.1"
}
}]
}
}
},
"totalPrefixCounter":2,
"filteredPrefixCounter":0
}

View File

@ -218,6 +218,29 @@ def check_show_bgp_ipv4_vpn(rname, json_file):
assert result is None, assertmsg assert result is None, assertmsg
def check_show_bgp_ipv4_vpn_peer_advertised_routes(rname, peer, json_file):
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
router = tgen.gears[rname]
logger.info(
"Checking VPNv4 advertised routes for on {} for peer {}".format(rname, peer)
)
json_file = "{}/{}/{}".format(CWD, router.name, json_file)
expected = json.loads(open(json_file).read())
test_func = partial(
topotest.router_json_cmp,
router,
"show bgp ipv4 vpn neighbors {} advertised-routes detail json".format(peer),
expected,
)
_, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
assertmsg = '"{}" JSON output mismatches'.format(router.name)
assert result is None, assertmsg
def check_show_bgp_vrf_ipv4(rname, json_file): def check_show_bgp_vrf_ipv4(rname, json_file):
tgen = get_topogen() tgen = get_topogen()
if tgen.routers_have_failure(): if tgen.routers_have_failure():
@ -563,6 +586,21 @@ router bgp 65500
check_show_bgp_vrf_ipv4(rname, "ipv4_vrf_all_routes_init.json") check_show_bgp_vrf_ipv4(rname, "ipv4_vrf_all_routes_init.json")
def test_bgp_advertised_routes_step13():
"""
Dump advertised routes from r1 to r2
Check that the localpref attribute is set on the show command
"""
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
check_show_bgp_ipv4_vpn_peer_advertised_routes(
"r1", "10.125.0.2", "ipv4_vpn_routes_advertised_10_125_0_2.json"
)
def test_memory_leak(): def test_memory_leak():
"Run the memory leak test and report results." "Run the memory leak test and report results."
tgen = get_topogen() tgen = get_topogen()