mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-16 20:14:01 +00:00
Merge pull request #17905 from pguibert6WIND/advertised_routes_incorrect_json
Advertised routes incorrect json
This commit is contained in:
commit
ee67699bd7
@ -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 ||
|
||||
type == bgp_show_adj_route_received) {
|
||||
if (first) {
|
||||
vty_out(vty, "\"%s\":", rd_str);
|
||||
vty_out(vty, "{\"%s\":", rd_str);
|
||||
first = false;
|
||||
} else {
|
||||
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;
|
||||
filtered_count += filtered_count_per_rd;
|
||||
}
|
||||
if (first == false && json_routes)
|
||||
vty_out(vty, "}");
|
||||
} else {
|
||||
show_adj_route(vty, peer, table, afi, safi, type, rmap_name,
|
||||
json, json_ar, show_flags, &header1, &header2,
|
||||
|
@ -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
|
||||
}
|
@ -218,6 +218,29 @@ def check_show_bgp_ipv4_vpn(rname, json_file):
|
||||
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):
|
||||
tgen = get_topogen()
|
||||
if tgen.routers_have_failure():
|
||||
@ -563,6 +586,21 @@ router bgp 65500
|
||||
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():
|
||||
"Run the memory leak test and report results."
|
||||
tgen = get_topogen()
|
||||
|
Loading…
Reference in New Issue
Block a user