Skip to content

Commit

Permalink
Merge pull request #17874 from pguibert6WIND/bgp_unnumbered_interface…
Browse files Browse the repository at this point in the history
…_json

Bgp unnumbered interface json
  • Loading branch information
ton31337 authored Jan 20, 2025
2 parents 42b10da + 50928a9 commit 00eb5cc
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 0 deletions.
3 changes: 3 additions & 0 deletions bgpd/bgp_route.c
Original file line number Diff line number Diff line change
Expand Up @@ -9915,6 +9915,9 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
== BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL)
|| (path->peer->conf_if)) {
json_nexthop_ll = json_object_new_object();
if (path->peer->conf_if)
json_object_string_add(json_nexthop_ll, "interface",
path->peer->conf_if);
json_object_string_addf(
json_nexthop_ll, "ip", "%pI6",
&attr->mp_nexthop_local);
Expand Down
35 changes: 35 additions & 0 deletions tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"vrfId": 0,
"vrfName": "default",
"routerId": "10.254.254.1",
"defaultLocPrf": 100,
"localAS": 101,
"routes": {
"10.254.254.2/32": [{
"valid": true,
"bestpath": true,
"selectionReason":"First path received",
"pathFrom":"external",
"prefix":"10.254.254.2",
"prefixLen":32,
"network":"10.254.254.2/32",
"metric":0,
"weight":0,
"path":"102",
"origin":"incomplete",
"nexthops":[{
"ip":"2001:db8:1::2",
"hostname":"r2",
"afi":"ipv6",
"scope":"global"
},{
"interface":"r1-eth0",
"hostname":"r2",
"afi":"ipv6",
"scope":"link-local",
"used":true
}]}]
},
"totalRoutes": 2,
"totalPaths": 2
}
35 changes: 35 additions & 0 deletions tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"vrfId": 0,
"vrfName": "default",
"routerId": "10.254.254.1",
"defaultLocPrf": 100,
"localAS": 101,
"routes": {
"2001:db8:1::/64": [{
"valid":true,
"bestpath":true,
"selectionReason":"First path received",
"pathFrom":"external",
"prefix":"2001:db8:1::",
"prefixLen":64,
"network":"2001:db8:1::/64",
"metric":0,
"weight":0,
"path":"102",
"origin":"incomplete",
"nexthops":[{
"ip":"2001:db8:1::2",
"hostname":"r2",
"afi":"ipv6",
"scope":"global"
},{
"interface":"r1-eth0",
"hostname":"r2",
"afi":"ipv6",
"scope":"link-local",
"used":true
}]}]
},
"totalRoutes": 1,
"totalPaths": 1
}
39 changes: 39 additions & 0 deletions tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,45 @@ def teardown_module(_mod):


def test_protocols_convergence():
"""
Assert that BGP protocol has converged
by checking the incoming BGP updates have been received.
"""
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)

# Check BGP IPv4 routing table.
logger.info("Checking BGP IPv4 routes for convergence")
router = tgen.gears["r1"]

json_file = "{}/{}/bgp_ipv4_routes.json".format(CWD, router.name)
expected = json.loads(open(json_file).read())
test_func = partial(
topotest.router_json_cmp,
router,
"show bgp ipv4 json",
expected,
)
_, result = topotest.run_and_expect(test_func, None, count=160, wait=0.5)
assertmsg = '"{}" JSON output mismatches'.format(router.name)
assert result is None, assertmsg

# Check BGP IPv6 routing table.
json_file = "{}/{}/bgp_ipv6_routes.json".format(CWD, router.name)
expected = json.loads(open(json_file).read())
test_func = partial(
topotest.router_json_cmp,
router,
"show bgp ipv6 json",
expected,
)
_, result = topotest.run_and_expect(test_func, None, count=160, wait=0.5)
assertmsg = '"{}" JSON output mismatches'.format(router.name)
assert result is None, assertmsg


def test_route_convergence():
"""
Assert that all protocols have converged
statuses as they depend on it.
Expand Down

0 comments on commit 00eb5cc

Please sign in to comment.