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 ||
|
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,
|
||||||
|
@ -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
|
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()
|
||||||
|
Loading…
Reference in New Issue
Block a user