mirror_frr/tests/topotests/lib/bgpcheck.py
Philippe Guibert 309e692d10 topotests: bgp_vpnv4_ebgp, check 'extcommunity rt' presence
Add a test to check that the presence of a route-map at
exportation with a 'set extcommunity rt' is enough to allow
the prefix to be exported.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-11-21 18:10:38 +01:00

64 lines
1.9 KiB
Python

#!/usr/bin/env python
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright 2023, 6wind
import json
from lib import topotest
def check_show_bgp_vpn_prefix_not_found(router, ipversion, prefix, rd, label=None):
"""
Check if a given vpn prefix is not present in the BGP RIB
* 'router': the router to check BGP VPN RIB
* 'ipversion': The ip version to check: ipv4 or ipv6
* 'prefix': the IP prefix to check
* 'rd': the route distinguisher to check
* 'label: the label to check
"""
output = json.loads(
router.vtysh_cmd("show bgp {} vpn {} json".format(ipversion, prefix))
)
if label:
expected = {rd: {"prefix": prefix, "paths": [{"remoteLabel": label}]}}
else:
expected = {rd: {"prefix": prefix}}
ret = topotest.json_cmp(output, expected)
if ret is None:
return "not good"
return None
def check_show_bgp_vpn_prefix_found(
router, ipversion, prefix, rd, label=None, nexthop=None
):
"""
Check if a given vpn prefix is present in the BGP RIB
* 'router': the router to check BGP VPN RIB
* 'ipversion': The ip version to check: ipv4 or ipv6
* 'prefix': the IP prefix to check
* 'rd': the route distinguisher to check
* 'label: the label to check
"""
output = json.loads(
router.vtysh_cmd("show bgp {} vpn {} json".format(ipversion, prefix))
)
if label:
if nexthop:
expected = {
rd: {
"prefix": prefix,
"paths": [{"remoteLabel": label, "nexthops": [{"ip": nexthop}]}],
}
}
else:
expected = {rd: {"prefix": prefix, "paths": [{"remoteLabel": label}]}}
else:
if nexthop:
expected = {
rd: {"prefix": prefix, "paths": [{"nexthops": [{"ip": nexthop}]}]}
}
else:
expected = {rd: {"prefix": prefix}}
return topotest.json_cmp(output, expected)