diff options
Diffstat (limited to 'test/vpp_ip_route.py')
-rw-r--r-- | test/vpp_ip_route.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/test/vpp_ip_route.py b/test/vpp_ip_route.py index 06a963cfd88..d36c56761e3 100644 --- a/test/vpp_ip_route.py +++ b/test/vpp_ip_route.py @@ -75,7 +75,9 @@ def address_proto(ip_addr): return FibPathProto.FIB_PATH_NH_PROTO_IP6 -def find_route(test, addr, len, table_id=0, sw_if_index=None): +def find_route( + test, addr, len, table_id=0, sw_if_index=None, ignore_default_route=False +): prefix = mk_network(addr, len) if 4 == prefix.version: @@ -86,7 +88,13 @@ def find_route(test, addr, len, table_id=0, sw_if_index=None): for e in routes: if table_id == e.route.table_id and str(e.route.prefix) == str(prefix): if not sw_if_index: - return True + # if the route is a default one of the table: + # 0.0.0.0/0, 0.0.0.0/32, 240.0.0.0/4, 255.255.255.255/32 + return not ( + ignore_default_route + and e.route.n_paths == 1 + and e.route.paths[0].type == FibPathType.FIB_PATH_TYPE_DROP + ) else: # should be only one path if the user is looking # for the interface the route is reachable through @@ -161,15 +169,17 @@ def fib_interface_ip_prefix(test, addr, len, sw_if_index): class VppIpTable(VppObject): - def __init__(self, test, table_id, is_ip6=0, register=True): + def __init__(self, test, table_id, is_ip6=0, register=True, name=""): self._test = test + self.name = name self.table_id = table_id self.is_ip6 = is_ip6 self.register = register def add_vpp_config(self): self._test.vapi.ip_table_add_del( - is_add=1, table={"is_ip6": self.is_ip6, "table_id": self.table_id} + is_add=1, + table={"is_ip6": self.is_ip6, "table_id": self.table_id, "name": self.name}, ) if self.register: self._test.registry.register(self, self._test.logger) @@ -601,6 +611,7 @@ class VppIpRoute(VppObject): self.prefix.network_address, self.prefix.prefixlen, self.table_id, + ignore_default_route=True, ) def object_id(self): @@ -716,6 +727,7 @@ class VppIpRouteV2(VppObject): self.prefix.network_address, self.prefix.prefixlen, self.table_id, + ignore_default_route=True, ) def object_id(self): |