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);