From d47dea0b6f294b1a5ee22e5cbf34f7a1573b9603 Mon Sep 17 00:00:00 2001 From: Kangping Date: Sat, 25 Dec 2021 05:53:04 +0800 Subject: [PATCH] [routing-manager] start routing policy evaluation when on-link prefix state changes (#7250) We should reevaluate routing policy only when a discovered on-link prefix becomes deprecated or preferred. This change reduces sending RA messages when another peer is keep advertising deprecated (preferred lifetime is zero) on-link prefix. --- src/core/border_router/routing_manager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/border_router/routing_manager.cpp b/src/core/border_router/routing_manager.cpp index 6b296149c..28ee8ae49 100644 --- a/src/core/border_router/routing_manager.cpp +++ b/src/core/border_router/routing_manager.cpp @@ -1149,9 +1149,12 @@ bool RoutingManager::UpdateDiscoveredOnLinkPrefix(const RouterAdv::PrefixInfoOpt existingPrefix->mValidLifetime = kTwoHoursInSeconds; } + // The on-link prefix routing policy may be affected when a + // discovered on-link prefix becomes deprecated or preferred. + needReevaluate = (onLinkPrefix.IsDeprecated() != existingPrefix->IsDeprecated()); + existingPrefix->mPreferredLifetime = onLinkPrefix.mPreferredLifetime; existingPrefix->mTimeLastUpdate = onLinkPrefix.mTimeLastUpdate; - needReevaluate = (existingPrefix->mPreferredLifetime == 0); } mDiscoveredPrefixInvalidTimer.FireAtIfEarlier(existingPrefix->GetExpireTime());