From 1ab2919e6ace80f2969ea296c23e2cdff59619ac Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Thu, 16 May 2024 18:20:45 -0700 Subject: [PATCH] [routing-manager] signal table change on M/O flag update of routers (#10250) --- src/core/border_router/routing_manager.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/core/border_router/routing_manager.cpp b/src/core/border_router/routing_manager.cpp index 7a82b6831..7c699b674 100644 --- a/src/core/border_router/routing_manager.cpp +++ b/src/core/border_router/routing_manager.cpp @@ -1183,12 +1183,24 @@ exit: void RoutingManager::DiscoveredPrefixTable::ProcessRaHeader(const RouterAdvert::Header &aRaHeader, Router &aRouter) { + bool managedFlag = aRaHeader.IsManagedAddressConfigFlagSet(); + bool otherFlag = aRaHeader.IsOtherConfigFlagSet(); Entry *entry; Ip6::Prefix prefix; - aRouter.mManagedAddressConfigFlag = aRaHeader.IsManagedAddressConfigFlagSet(); - aRouter.mOtherConfigFlag = aRaHeader.IsOtherConfigFlagSet(); - LogInfo("- RA Header - flags - M:%u O:%u", aRouter.mManagedAddressConfigFlag, aRouter.mOtherConfigFlag); + LogInfo("- RA Header - flags - M:%u O:%u", managedFlag, otherFlag); + + if (aRouter.mManagedAddressConfigFlag != managedFlag) + { + aRouter.mManagedAddressConfigFlag = managedFlag; + SignalTableChanged(); + } + + if (aRouter.mOtherConfigFlag != otherFlag) + { + aRouter.mOtherConfigFlag = otherFlag; + SignalTableChanged(); + } prefix.Clear(); entry = aRouter.mRoutePrefixes.FindMatching(prefix);