From dd6a48671deec5804f6b2468b3acc7c6bac5f2c2 Mon Sep 17 00:00:00 2001 From: Dashuai Zhang Date: Tue, 24 Feb 2026 11:52:12 +1100 Subject: [PATCH] fix default route for t0-isolated topo Signed-off-by: Dashuai Zhang # Conflicts: # tests/route/test_default_route.py --- ansible/library/announce_routes.py | 9 +++++++-- tests/route/test_default_route.py | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ansible/library/announce_routes.py b/ansible/library/announce_routes.py index a6b1c2f41e9..feb3bf57186 100644 --- a/ansible/library/announce_routes.py +++ b/ansible/library/announce_routes.py @@ -569,8 +569,11 @@ def fib_t0(topo, ptf_ip, no_default_route=False, action="announce", upstream_nei last_suffix = 0 for index, vm_name in enumerate(sorted(vms.keys())): router_type = "leaf" + tor_default_route = False if 'tor' in topo['configuration'][vm_name]['properties']: router_type = 'tor' + if "PT" in vm_name: + tor_default_route = True port, port6 = get_change_routes_ports(vm_name, topo) aggregate_prefixes = topo['configuration'][vm_name].get("aggregate_routes", AGGREGATE_ROUTES_DEFAULT_VALUE) aggregate_routes = [(prefix, nhipv4 if "." in prefix else nhipv6, "") for prefix in aggregate_prefixes] @@ -583,7 +586,8 @@ def fib_t0(topo, ptf_ip, no_default_route=False, action="announce", upstream_nei spine_asn, leaf_asn_start, tor_asn_start, nhipv4, nhipv4, tor_subnet_size, max_tor_subnet_number, "t0", router_type=router_type, - no_default_route=no_default_route, offset=current_routes_offset) + no_default_route=no_default_route, offset=current_routes_offset, + tor_default_route=tor_default_route) if aggregate_routes_v4: filterout_subnet_ipv4(aggregate_routes, routes_v4) routes_v4.extend(aggregate_routes_v4) @@ -597,7 +601,8 @@ def fib_t0(topo, ptf_ip, no_default_route=False, action="announce", upstream_nei router_type=router_type, no_default_route=no_default_route, ipv6_address_pattern=ipv6_address_pattern, - offset=current_routes_offset) + offset=current_routes_offset, + tor_default_route=tor_default_route) if aggregate_routes_v6: filterout_subnet_ipv6(aggregate_routes, routes_v6) routes_v6.extend(aggregate_routes_v6) diff --git a/tests/route/test_default_route.py b/tests/route/test_default_route.py index 5d25e6dfd25..07c51652aea 100644 --- a/tests/route/test_default_route.py +++ b/tests/route/test_default_route.py @@ -79,7 +79,9 @@ def get_upstream_neigh(tb, device_neigh_metadata, af, nexthops): for neigh_name, neigh_cfg in list(topo_cfg_facts.items()): if not is_in_neighbor(neigh_types, neigh_name): continue - if "PT0" in neigh_name and "tor" in neigh_cfg.get('properties', []): + if 't0-isolated' in tb['topo']['name'] and "PT" not in neigh_name: + # For t0-isolated topology, PT0 default routes will be preferred over T1 neighbors, + # so only consider PT neighbors for default route verification continue interfaces = neigh_cfg.get('interfaces', {}) ipv4_addr = None