diff options
author | Abtin Keshavarzian <abtink@google.com> | 2024-04-29 09:11:27 -0700 |
---|---|---|
committer | Handa Wang <handaw@google.com> | 2024-05-14 06:45:35 +0000 |
commit | 70829a996f34c2c1aabe7977517c46bb6b860def (patch) | |
tree | 7042e30c38c40d77a458d251359a51430ccdcf3c | |
parent | 0acd29948c4fb6f1783ce811a9e3eb849476e021 (diff) | |
download | openthread-master.tar.gz |
This commit updates `FindFavoredOnLinkPrefix()` to exclude discovered
on-link prefixes with preferred lifetimes under 30 minutes.
(cherry picked from commit efb80c0b8358af28e3cf7eb12aaff77545b02856)
Change-Id: I70f979ba89c93b2026b341e0ea7faeb5c0fbf547
-rw-r--r-- | src/core/border_router/routing_manager.cpp | 3 | ||||
-rw-r--r-- | src/core/border_router/routing_manager.hpp | 2 | ||||
-rwxr-xr-x | tests/scripts/thread-cert/border_router/test_on_link_prefix.py | 14 | ||||
-rwxr-xr-x | tests/scripts/thread-cert/node.py | 4 |
4 files changed, 6 insertions, 17 deletions
diff --git a/src/core/border_router/routing_manager.cpp b/src/core/border_router/routing_manager.cpp index bebd795c8..b0dc91432 100644 --- a/src/core/border_router/routing_manager.cpp +++ b/src/core/border_router/routing_manager.cpp @@ -1242,7 +1242,8 @@ void RoutingManager::DiscoveredPrefixTable::FindFavoredOnLinkPrefix(Ip6::Prefix { for (const Entry &entry : router.mEntries) { - if (!entry.IsOnLinkPrefix() || entry.IsDeprecated()) + if (!entry.IsOnLinkPrefix() || entry.IsDeprecated() || + (entry.GetPreferredLifetime() < kFavoredOnLinkPrefixMinPreferredLifetime)) { continue; } diff --git a/src/core/border_router/routing_manager.hpp b/src/core/border_router/routing_manager.hpp index 37de6eca3..dfeb151cd 100644 --- a/src/core/border_router/routing_manager.hpp +++ b/src/core/border_router/routing_manager.hpp @@ -684,6 +684,8 @@ private: void HandleRouterTimer(void); private: + static constexpr uint32_t kFavoredOnLinkPrefixMinPreferredLifetime = 1800; // In sec. + #if !OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE static constexpr uint16_t kMaxRouters = OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_ROUTERS; static constexpr uint16_t kMaxEntries = OPENTHREAD_CONFIG_BORDER_ROUTING_MAX_DISCOVERED_PREFIXES; diff --git a/tests/scripts/thread-cert/border_router/test_on_link_prefix.py b/tests/scripts/thread-cert/border_router/test_on_link_prefix.py index 0f56baa77..af2a25433 100755 --- a/tests/scripts/thread-cert/border_router/test_on_link_prefix.py +++ b/tests/scripts/thread-cert/border_router/test_on_link_prefix.py @@ -188,20 +188,6 @@ class MultiThreadNetworks(thread_cert.TestCase): host_on_link_addr = host.get_matched_ula_addresses(ON_LINK_PREFIX)[0] - # Wait 30 seconds for the radvd `ON_LINK_PREFIX` to be invalidated - # and make sure that Thread devices in both networks can't reach - # the on-link address. - self.simulator.go(30) # Valid Lifetime of radvd PIO is set to 60 seconds. - self.assertEqual(len(host.get_matched_ula_addresses(ON_LINK_PREFIX)), 0) - self.assertFalse(router1.ping(host_on_link_addr)) - self.assertFalse(host.ping(router1_omr_addr, backbone=True, interface=host_on_link_addr)) - self.assertFalse(router2.ping(host_on_link_addr)) - self.assertFalse(host.ping(router2_omr_addr, backbone=True, interface=host_on_link_addr)) - - # Verify connectivity between the two networks. - self.assertTrue(router1.ping(router2.get_ip6_address(config.ADDRESS_TYPE.OMR)[0])) - self.assertTrue(router2.ping(router1.get_ip6_address(config.ADDRESS_TYPE.OMR)[0])) - if __name__ == '__main__': unittest.main() diff --git a/tests/scripts/thread-cert/node.py b/tests/scripts/thread-cert/node.py index 9f5d337f9..118b692da 100755 --- a/tests/scripts/thread-cert/node.py +++ b/tests/scripts/thread-cert/node.py @@ -3982,8 +3982,8 @@ interface eth0 AdvOnLink on; AdvAutonomous %s; AdvRouterAddr off; - AdvPreferredLifetime 40; - AdvValidLifetime 60; + AdvPreferredLifetime 1800; + AdvValidLifetime 1800; }; }; EOF |