diff --git a/src/core/border_router/routing_manager.cpp b/src/core/border_router/routing_manager.cpp index b88465106..64a4ae42b 100644 --- a/src/core/border_router/routing_manager.cpp +++ b/src/core/border_router/routing_manager.cpp @@ -1213,7 +1213,7 @@ void RoutingManager::MultiAilDetector::Evaluate(void) mNetDataPeerBrCount = count; } - count = Get().mRxRaTracker.CountReachablePeerBrs(); + count = Get().mRxRaTracker.GetReachablePeerBrCount(); if (count != mRxRaTrackerReachablePeerBrCount) { @@ -1812,6 +1812,10 @@ void RoutingManager::RxRaTracker::Evaluate(void) } } +#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE + mDecisionFactors.mReachablePeerBrCount = CountReachablePeerBrs(); +#endif + if (oldFactors != mDecisionFactors) { mSignalTask.Post(); @@ -2021,14 +2025,6 @@ void RoutingManager::RxRaTracker::HandleRouterTimer(void) { entry.ClearLifetime(); } - -#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE - // When a Peer BR becomes unreachable, post a task that will do multi-ail evaluation. - if (router.IsPeerBr()) - { - mSignalTask.Post(); - } -#endif } } @@ -2182,7 +2178,7 @@ exit: return error; } -#if OPENTHREAD_CONFIG_BORDER_ROUTING_TRACK_PEER_BR_INFO_ENABLE +#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE uint16_t RoutingManager::RxRaTracker::CountReachablePeerBrs(void) const { uint16_t count = 0; @@ -2198,6 +2194,7 @@ uint16_t RoutingManager::RxRaTracker::CountReachablePeerBrs(void) const return count; } #endif + //--------------------------------------------------------------------------------------------------------------------- // RxRaTracker::Iterator diff --git a/src/core/border_router/routing_manager.hpp b/src/core/border_router/routing_manager.hpp index 85bd5ab5c..dcd5551fd 100644 --- a/src/core/border_router/routing_manager.hpp +++ b/src/core/border_router/routing_manager.hpp @@ -1036,6 +1036,9 @@ private: bool ContainsDefaultOrNonUlaRoutePrefix(void) const { return mDecisionFactors.mHasNonUlaRoute; } bool ContainsNonUlaOnLinkPrefix(void) const { return mDecisionFactors.mHasNonUlaOnLink; } bool ContainsUlaOnLinkPrefix(void) const { return mDecisionFactors.mHasUlaOnLink; } +#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE + uint16_t GetReachablePeerBrCount(void) const { return mDecisionFactors.mReachablePeerBrCount; } +#endif const Ip6::Prefix &GetFavoredOnLinkPrefix(void) const { return mDecisionFactors.mFavoredOnLinkPrefix; } void SetHeaderFlagsOn(RouterAdvert::Header &aHeader) const; @@ -1051,10 +1054,6 @@ private: Error GetNextRouter(PrefixTableIterator &aIterator, RouterEntry &aEntry) const; Error GetNextRdnssAddr(PrefixTableIterator &aIterator, RdnssAddrEntry &aEntry) const; -#if OPENTHREAD_CONFIG_BORDER_ROUTING_TRACK_PEER_BR_INFO_ENABLE - uint16_t CountReachablePeerBrs(void) const; -#endif - // Callbacks notifying of changes void RemoveOrDeprecateOldEntries(TimeMilli aTimeThreshold); void HandleLocalOnLinkPrefixChanged(void); @@ -1242,6 +1241,9 @@ private: bool mHasUlaOnLink : 1; bool mHeaderManagedAddressConfigFlag : 1; bool mHeaderOtherConfigFlag : 1; +#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE + uint16_t mReachablePeerBrCount; +#endif }; //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1254,6 +1256,9 @@ private: void DetermineStaleTimeFor(const OnLinkPrefix &aPrefix, NextFireTime &aStaleTime); void DetermineStaleTimeFor(const RoutePrefix &aPrefix, NextFireTime &aStaleTime); void SendNeighborSolicitToRouter(const Router &aRouter); +#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE + uint16_t CountReachablePeerBrs(void) const; +#endif #if OPENTHREAD_CONFIG_BORDER_ROUTING_USE_HEAP_ENABLE template Entry *AllocateEntry(void) { return Entry::Allocate(); } #else