[border-router] make RxRaTracker handle netdata events directly (#12016)

This change makes the `RxRaTracker` a direct listener of network data
change events from the `Notifier`.

Previously, the `RoutingManager` would receive the network data change
event and then call `RxRaTracker::HandleNetDataChange()`. This
created an unnecessary dependency between the two components.

By making `RxRaTracker` a direct listener, we decouple it from
`RoutingManager`. The `HandleNetDataChange()` method in `RxRaTracker`
is also made private as it is now only called from within the class.
This commit is contained in:
Abtin Keshavarzian
2025-10-10 12:54:14 -07:00
committed by GitHub
parent c65811fee5
commit 7086ea0dad
4 changed files with 13 additions and 2 deletions
@@ -446,7 +446,6 @@ void RoutingManager::HandleNotifierEvents(Events aEvents)
if (mIsRunning && aEvents.Contains(kEventThreadNetdataChanged))
{
Get<RxRaTracker>().HandleNetDataChange();
mOnLinkPrefixManager.HandleNetDataChange();
ScheduleRoutingPolicyEvaluation(kAfterRandomDelay);
}
+8
View File
@@ -502,6 +502,14 @@ exit:
return;
}
void RxRaTracker::HandleNotifierEvents(Events aEvents)
{
if (aEvents.Contains(kEventThreadNetdataChanged))
{
HandleNetDataChange();
}
}
void RxRaTracker::HandleNetDataChange(void)
{
NetworkData::Iterator iterator = NetworkData::kIteratorInit;
+4 -1
View File
@@ -73,6 +73,7 @@ class NetDataBrTracker;
class RxRaTracker : public InstanceLocator
{
friend class NetDataBrTracker;
friend class ot::Notifier;
public:
/**
@@ -279,7 +280,6 @@ public:
// Callbacks notifying of changes
void RemoveOrDeprecateOldEntries(TimeMilli aTimeThreshold);
void HandleLocalOnLinkPrefixChanged(void);
void HandleNetDataChange(void);
private:
static constexpr uint32_t kStaleTime = 600; // 10 minutes.
@@ -497,6 +497,9 @@ private:
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
void ReportChangesToHistoryTracker(Router &aRouter, bool aRemoved);
#endif
void HandleNotifierEvents(Events aEvents);
void HandleNetDataChange(void);
// Tasklet or timer callbacks
void HandleSignalTask(void);
void HandleRdnssAddrTask(void);
+1
View File
@@ -161,6 +161,7 @@ void Notifier::EmitEvents(void)
Get<Extension::ExtensionBase>().HandleNotifierEvents(events);
#endif
#if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
Get<BorderRouter::RxRaTracker>().HandleNotifierEvents(events);
Get<BorderRouter::RoutingManager>().HandleNotifierEvents(events);
#if OPENTHREAD_CONFIG_BORDER_ROUTING_TRACK_PEER_BR_INFO_ENABLE
Get<BorderRouter::NetDataBrTracker>().HandleNotifierEvents(events);