mirror of
https://github.com/espressif/openthread.git
synced 2026-08-16 15:47:46 +00:00
[history-tracker] move HistoryTracker to its own namespace (#11756)
This commit refactors `Utils::HistoryTracker` by moving it into its own dedicated `ot::HistoryTracker` namespace for better code organization. The main implementation class is renamed from `HistoryTracker` to `Local`, making the new class `ot::HistoryTracker::Local`. This allows additional components (like server and client) to be defined within the `HistoryTracker` namespace. Nested types, such as `Iterator`, are now direct members of the new `HistoryTracker` namespace.
This commit is contained in:
@@ -47,7 +47,7 @@ const otHistoryTrackerNetworkInfo *otHistoryTrackerIterateNetInfoHistory(otInsta
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateNetInfoHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateNetInfoHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
}
|
||||
|
||||
const otHistoryTrackerUnicastAddressInfo *otHistoryTrackerIterateUnicastAddressHistory(
|
||||
@@ -57,7 +57,7 @@ const otHistoryTrackerUnicastAddressInfo *otHistoryTrackerIterateUnicastAddressH
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateUnicastAddressHistory(AsCoreType(aIterator),
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateUnicastAddressHistory(AsCoreType(aIterator),
|
||||
*aEntryAge);
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ const otHistoryTrackerMulticastAddressInfo *otHistoryTrackerIterateMulticastAddr
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateMulticastAddressHistory(AsCoreType(aIterator),
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateMulticastAddressHistory(AsCoreType(aIterator),
|
||||
*aEntryAge);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ const otHistoryTrackerMessageInfo *otHistoryTrackerIterateRxHistory(otInstance
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateRxHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateRxHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
}
|
||||
|
||||
const otHistoryTrackerMessageInfo *otHistoryTrackerIterateTxHistory(otInstance *aInstance,
|
||||
@@ -87,7 +87,7 @@ const otHistoryTrackerMessageInfo *otHistoryTrackerIterateTxHistory(otInstance
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateTxHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateTxHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
}
|
||||
|
||||
const otHistoryTrackerNeighborInfo *otHistoryTrackerIterateNeighborHistory(otInstance *aInstance,
|
||||
@@ -96,7 +96,7 @@ const otHistoryTrackerNeighborInfo *otHistoryTrackerIterateNeighborHistory(otIns
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateNeighborHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateNeighborHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
}
|
||||
|
||||
const otHistoryTrackerRouterInfo *otHistoryTrackerIterateRouterHistory(otInstance *aInstance,
|
||||
@@ -105,7 +105,7 @@ const otHistoryTrackerRouterInfo *otHistoryTrackerIterateRouterHistory(otInstanc
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateRouterHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateRouterHistory(AsCoreType(aIterator), *aEntryAge);
|
||||
}
|
||||
|
||||
const otHistoryTrackerOnMeshPrefixInfo *otHistoryTrackerIterateOnMeshPrefixHistory(otInstance *aInstance,
|
||||
@@ -114,7 +114,7 @@ const otHistoryTrackerOnMeshPrefixInfo *otHistoryTrackerIterateOnMeshPrefixHisto
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateOnMeshPrefixHistory(AsCoreType(aIterator),
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateOnMeshPrefixHistory(AsCoreType(aIterator),
|
||||
*aEntryAge);
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ const otHistoryTrackerExternalRouteInfo *otHistoryTrackerIterateExternalRouteHis
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateExternalRouteHistory(AsCoreType(aIterator),
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateExternalRouteHistory(AsCoreType(aIterator),
|
||||
*aEntryAge);
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ const otHistoryTrackerDnsSrpAddrInfo *otHistoryTrackerIterateDnsSrpAddrHistory(o
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateDnsSrpAddrHistory(AsCoreType(aIterator),
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateDnsSrpAddrHistory(AsCoreType(aIterator),
|
||||
*aEntryAge);
|
||||
}
|
||||
|
||||
@@ -147,14 +147,14 @@ const otHistoryTrackerBorderAgentEpskcEvent *otHistoryTrackerIterateBorderAgentE
|
||||
{
|
||||
AssertPointerIsNotNull(aEntryAge);
|
||||
|
||||
return AsCoreType(aInstance).Get<Utils::HistoryTracker>().IterateEpskcEventHistory(AsCoreType(aIterator),
|
||||
return AsCoreType(aInstance).Get<HistoryTracker::Local>().IterateEpskcEventHistory(AsCoreType(aIterator),
|
||||
*aEntryAge);
|
||||
}
|
||||
#endif
|
||||
|
||||
void otHistoryTrackerEntryAgeToString(uint32_t aEntryAge, char *aBuffer, uint16_t aSize)
|
||||
{
|
||||
Utils::HistoryTracker::EntryAgeToString(aEntryAge, aBuffer, aSize);
|
||||
HistoryTracker::Local::EntryAgeToString(aEntryAge, aBuffer, aSize);
|
||||
}
|
||||
|
||||
#endif // OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
|
||||
@@ -152,7 +152,7 @@ void Notifier::EmitEvents(void)
|
||||
Get<Utils::Otns>().HandleNotifierEvents(events);
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().HandleNotifierEvents(events);
|
||||
Get<HistoryTracker::Local>().HandleNotifierEvents(events);
|
||||
#endif
|
||||
#if OPENTHREAD_ENABLE_VENDOR_EXTENSION
|
||||
Get<Extension::ExtensionBase>().HandleNotifierEvents(events);
|
||||
|
||||
@@ -247,7 +247,7 @@ Instance::Instance(void)
|
||||
, mMeshDiag(*this)
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
, mHistoryTracker(*this)
|
||||
, mHistoryTrackerLocal(*this)
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_LINK_METRICS_MANAGER_ENABLE
|
||||
, mLinkMetricsManager(*this)
|
||||
|
||||
@@ -682,7 +682,7 @@ private:
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Utils::HistoryTracker mHistoryTracker;
|
||||
HistoryTracker::Local mHistoryTrackerLocal;
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_LINK_METRICS_MANAGER_ENABLE
|
||||
@@ -993,7 +993,7 @@ template <> inline Utils::MeshDiag &Instance::Get(void) { return mMeshDiag; }
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
template <> inline Utils::HistoryTracker &Instance::Get(void) { return mHistoryTracker; }
|
||||
template <> inline HistoryTracker::Local &Instance::Get(void) { return mHistoryTrackerLocal; }
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_LINK_METRICS_MANAGER_ENABLE
|
||||
|
||||
@@ -741,7 +741,7 @@ exit:
|
||||
case kErrorNone:
|
||||
Get<BorderAgent>().mCounters.mEpskcActivations++;
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(Utils::HistoryTracker::kEpskcActivated);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(HistoryTracker::Local::kEpskcActivated);
|
||||
#endif
|
||||
break;
|
||||
case kErrorInvalidState:
|
||||
@@ -790,14 +790,14 @@ void BorderAgent::EphemeralKeyManager::UpdateCountersAndRecordEvent(Deactivation
|
||||
struct ReasonToCounterEventEntry
|
||||
{
|
||||
DeactivationReason mReason;
|
||||
uint8_t mEvent; // Raw values of `Utils::HistoryTracker::Epskc` enum.
|
||||
uint8_t mEvent; // Raw values of `HistoryTracker::Local::Epskc` enum.
|
||||
uint32_t Counters::*mCounterPtr;
|
||||
};
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
#define ReasonEntry(kReason, kCounter, kEvent) \
|
||||
{ \
|
||||
kReason, Utils::HistoryTracker::kEvent, &Counters::kCounter, \
|
||||
kReason, HistoryTracker::Local::kEvent, &Counters::kCounter, \
|
||||
}
|
||||
#else
|
||||
#define ReasonEntry(kReason, kCounter, kEvent) \
|
||||
@@ -818,7 +818,7 @@ void BorderAgent::EphemeralKeyManager::UpdateCountersAndRecordEvent(Deactivation
|
||||
#undef ReasonEntry
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Utils::HistoryTracker::EpskcEvent event = Utils::HistoryTracker::kEpskcDeactivatedUnknown;
|
||||
HistoryTracker::EpskcEvent event = HistoryTracker::Local::kEpskcDeactivatedUnknown;
|
||||
#endif
|
||||
|
||||
for (const ReasonToCounterEventEntry &entry : kReasonToCounterEventEntries)
|
||||
@@ -827,14 +827,14 @@ void BorderAgent::EphemeralKeyManager::UpdateCountersAndRecordEvent(Deactivation
|
||||
{
|
||||
(Get<BorderAgent>().mCounters.*(entry.mCounterPtr))++;
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
event = static_cast<Utils::HistoryTracker::EpskcEvent>(entry.mEvent);
|
||||
event = static_cast<HistoryTracker::EpskcEvent>(entry.mEvent);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(event);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(event);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -900,7 +900,7 @@ void BorderAgent::EphemeralKeyManager::HandleSessionConnected(void)
|
||||
SetState(kStateConnected);
|
||||
Get<BorderAgent>().mCounters.mEpskcSecureSessionSuccesses++;
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(Utils::HistoryTracker::kEpskcConnected);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(HistoryTracker::Local::kEpskcConnected);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -940,7 +940,7 @@ void BorderAgent::EphemeralKeyManager::HandleCommissionerPetitionAccepted(void)
|
||||
SetState(kStateAccepted);
|
||||
Get<BorderAgent>().mCounters.mEpskcCommissionerPetitions++;
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(Utils::HistoryTracker::kEpskcPetitioned);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(HistoryTracker::Local::kEpskcPetitioned);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1168,7 +1168,7 @@ void BorderAgent::CoapDtlsSession::HandleTmfCommissionerKeepAlive(Coap::Message
|
||||
#if OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE && OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
if (Get<EphemeralKeyManager>().OwnsSession(*this))
|
||||
{
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(Utils::HistoryTracker::kEpskcKeepAlive);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(HistoryTracker::Local::kEpskcKeepAlive);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1504,7 +1504,7 @@ void BorderAgent::CoapDtlsSession::HandleTmfDatasetGet(Coap::Message &aMessage,
|
||||
#if OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE && OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
if (Get<EphemeralKeyManager>().OwnsSession(*this))
|
||||
{
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(Utils::HistoryTracker::kEpskcRetrievedActiveDataset);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(HistoryTracker::Local::kEpskcRetrievedActiveDataset);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
@@ -1515,7 +1515,7 @@ void BorderAgent::CoapDtlsSession::HandleTmfDatasetGet(Coap::Message &aMessage,
|
||||
#if OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE && OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
if (Get<EphemeralKeyManager>().OwnsSession(*this))
|
||||
{
|
||||
Get<Utils::HistoryTracker>().RecordEpskcEvent(Utils::HistoryTracker::kEpskcRetrievedPendingDataset);
|
||||
Get<HistoryTracker::Local>().RecordEpskcEvent(HistoryTracker::Local::kEpskcRetrievedPendingDataset);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -235,7 +235,7 @@ void Netif::SignalMulticastAddressChange(AddressEvent aEvent, const MulticastAdd
|
||||
Get<Notifier>().Signal(aEvent == kAddressAdded ? kEventIp6MulticastSubscribed : kEventIp6MulticastUnsubscribed);
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordAddressEvent(aEvent, aAddress, aOrigin);
|
||||
Get<HistoryTracker::Local>().RecordAddressEvent(aEvent, aAddress, aOrigin);
|
||||
#endif
|
||||
|
||||
if ((aOrigin == kOriginThread) && mAddressCallback.IsSet())
|
||||
@@ -414,7 +414,7 @@ void Netif::SignalUnicastAddressChange(AddressEvent aEvent, const UnicastAddress
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordAddressEvent(aEvent, aAddress);
|
||||
Get<HistoryTracker::Local>().RecordAddressEvent(aEvent, aAddress);
|
||||
#endif
|
||||
|
||||
if (!IsUnicastAddressExternal(aAddress) && mAddressCallback.IsSet())
|
||||
|
||||
@@ -1246,7 +1246,7 @@ void MeshForwarder::UpdateSendMessage(Error aFrameTxError, Mac::Address &aMacDes
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordTxMessage(*mSendMessage, aMacDest);
|
||||
Get<HistoryTracker::Local>().RecordTxMessage(*mSendMessage, aMacDest);
|
||||
#endif
|
||||
|
||||
LogMessage(kMessageTransmit, *mSendMessage, txError, &aMacDest);
|
||||
@@ -1614,7 +1614,7 @@ exit:
|
||||
Error MeshForwarder::HandleDatagram(Message &aMessage, const Mac::Address &aMacSource)
|
||||
{
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordRxMessage(aMessage, aMacSource);
|
||||
Get<HistoryTracker::Local>().RecordRxMessage(aMessage, aMacSource);
|
||||
#endif
|
||||
|
||||
LogMessage(kMessageReceive, aMessage, kErrorNone, &aMacSource);
|
||||
|
||||
@@ -836,7 +836,7 @@ Error Mle::SetDeviceMode(DeviceMode aDeviceMode)
|
||||
mDeviceMode = aDeviceMode;
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordNetworkInfo();
|
||||
Get<HistoryTracker::Local>().RecordNetworkInfo();
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_OTNS_ENABLE
|
||||
|
||||
@@ -289,7 +289,7 @@ void NeighborTable::Signal(Event aEvent, const Neighbor &aNeighbor)
|
||||
}
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordNeighborEvent(aEvent, info);
|
||||
Get<HistoryTracker::Local>().RecordNeighborEvent(aEvent, info);
|
||||
|
||||
if (mCallback != nullptr)
|
||||
#endif
|
||||
|
||||
@@ -887,7 +887,7 @@ void RouterTable::HandleTableChanged(void)
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
Get<Utils::HistoryTracker>().RecordRouterTableChange();
|
||||
Get<HistoryTracker::Local>().RecordRouterTableChange();
|
||||
#endif
|
||||
|
||||
Get<Mle::Mle>().UpdateAdvertiseInterval();
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
#include "instance/instance.hpp"
|
||||
|
||||
namespace ot {
|
||||
namespace Utils {
|
||||
namespace HistoryTracker {
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
// HistoryTracker
|
||||
// Local
|
||||
|
||||
HistoryTracker::HistoryTracker(Instance &aInstance)
|
||||
Local::Local(Instance &aInstance)
|
||||
: InstanceLocator(aInstance)
|
||||
, mTimer(aInstance)
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
|
||||
@@ -57,7 +57,7 @@ HistoryTracker::HistoryTracker(Instance &aInstance)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordNetworkInfo(void)
|
||||
void Local::RecordNetworkInfo(void)
|
||||
{
|
||||
NetworkInfo *entry = mNetInfoHistory.AddNewEntry();
|
||||
Mle::DeviceMode mode;
|
||||
@@ -74,7 +74,7 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordMessage(const Message &aMessage, const Mac::Address &aMacAddress, MessageType aType)
|
||||
void Local::RecordMessage(const Message &aMessage, const Mac::Address &aMacAddress, MessageType aType)
|
||||
{
|
||||
MessageInfo *entry = nullptr;
|
||||
Ip6::Headers headers;
|
||||
@@ -178,7 +178,7 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordNeighborEvent(NeighborTable::Event aEvent, const NeighborTable::EntryInfo &aInfo)
|
||||
void Local::RecordNeighborEvent(NeighborTable::Event aEvent, const NeighborTable::EntryInfo &aInfo)
|
||||
{
|
||||
NeighborInfo *entry = mNeighborHistory.AddNewEntry();
|
||||
|
||||
@@ -239,8 +239,7 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordAddressEvent(Ip6::Netif::AddressEvent aEvent,
|
||||
const Ip6::Netif::UnicastAddress &aUnicastAddress)
|
||||
void Local::RecordAddressEvent(Ip6::Netif::AddressEvent aEvent, const Ip6::Netif::UnicastAddress &aUnicastAddress)
|
||||
{
|
||||
UnicastAddressInfo *entry = mUnicastAddressHistory.AddNewEntry();
|
||||
|
||||
@@ -259,9 +258,9 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordAddressEvent(Ip6::Netif::AddressEvent aEvent,
|
||||
const Ip6::Netif::MulticastAddress &aMulticastAddress,
|
||||
Ip6::Netif::AddressOrigin aAddressOrigin)
|
||||
void Local::RecordAddressEvent(Ip6::Netif::AddressEvent aEvent,
|
||||
const Ip6::Netif::MulticastAddress &aMulticastAddress,
|
||||
Ip6::Netif::AddressOrigin aAddressOrigin)
|
||||
{
|
||||
MulticastAddressInfo *entry = mMulticastAddressHistory.AddNewEntry();
|
||||
|
||||
@@ -276,7 +275,7 @@ exit:
|
||||
}
|
||||
|
||||
#if OPENTHREAD_FTD
|
||||
void HistoryTracker::RecordRouterTableChange(void)
|
||||
void Local::RecordRouterTableChange(void)
|
||||
{
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ROUTER_LIST_SIZE > 0
|
||||
|
||||
@@ -346,7 +345,7 @@ void HistoryTracker::RecordRouterTableChange(void)
|
||||
#endif // OPENTHREAD_FTD
|
||||
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
|
||||
void HistoryTracker::RecordNetworkDataChange(void)
|
||||
void Local::RecordNetworkDataChange(void)
|
||||
{
|
||||
static const NetworkData::Service::DnsSrpUnicastType kDnsSrpUnicastTypes[] = {
|
||||
NetworkData::Service::kAddrInServiceData,
|
||||
@@ -453,7 +452,7 @@ void HistoryTracker::RecordNetworkDataChange(void)
|
||||
SuccessOrAssert(Get<NetworkData::Leader>().CopyNetworkData(NetworkData::kFullSet, mPreviousNetworkData));
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordOnMeshPrefixEvent(NetDataEvent aEvent, const NetworkData::OnMeshPrefixConfig &aPrefix)
|
||||
void Local::RecordOnMeshPrefixEvent(NetDataEvent aEvent, const NetworkData::OnMeshPrefixConfig &aPrefix)
|
||||
{
|
||||
OnMeshPrefixInfo *entry = mOnMeshPrefixHistory.AddNewEntry();
|
||||
|
||||
@@ -465,7 +464,7 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordExternalRouteEvent(NetDataEvent aEvent, const NetworkData::ExternalRouteConfig &aRoute)
|
||||
void Local::RecordExternalRouteEvent(NetDataEvent aEvent, const NetworkData::ExternalRouteConfig &aRoute)
|
||||
{
|
||||
ExternalRouteInfo *entry = mExternalRouteHistory.AddNewEntry();
|
||||
|
||||
@@ -477,9 +476,9 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordDnsSrpAddrEvent(NetDataEvent aEvent,
|
||||
const NetworkData::Service::DnsSrpUnicastInfo &aUnicastInfo,
|
||||
NetworkData::Service::DnsSrpUnicastType aType)
|
||||
void Local::RecordDnsSrpAddrEvent(NetDataEvent aEvent,
|
||||
const NetworkData::Service::DnsSrpUnicastInfo &aUnicastInfo,
|
||||
NetworkData::Service::DnsSrpUnicastType aType)
|
||||
{
|
||||
DnsSrpAddrInfo *entry = mDnsSrpAddrHistory.AddNewEntry();
|
||||
|
||||
@@ -506,8 +505,7 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void HistoryTracker::RecordDnsSrpAddrEvent(NetDataEvent aEvent,
|
||||
const NetworkData::Service::DnsSrpAnycastInfo &aAnycastInfo)
|
||||
void Local::RecordDnsSrpAddrEvent(NetDataEvent aEvent, const NetworkData::Service::DnsSrpAnycastInfo &aAnycastInfo)
|
||||
{
|
||||
DnsSrpAddrInfo *entry = mDnsSrpAddrHistory.AddNewEntry();
|
||||
|
||||
@@ -525,9 +523,9 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
bool HistoryTracker::NetDataContainsDnsSrpUnicast(const NetworkData::NetworkData &aNetworkData,
|
||||
const NetworkData::Service::DnsSrpUnicastInfo &aUnicastInfo,
|
||||
NetworkData::Service::DnsSrpUnicastType aType) const
|
||||
bool Local::NetDataContainsDnsSrpUnicast(const NetworkData::NetworkData &aNetworkData,
|
||||
const NetworkData::Service::DnsSrpUnicastInfo &aUnicastInfo,
|
||||
NetworkData::Service::DnsSrpUnicastType aType) const
|
||||
{
|
||||
bool contains = false;
|
||||
NetworkData::Service::Iterator iterator(GetInstance(), aNetworkData);
|
||||
@@ -545,8 +543,8 @@ bool HistoryTracker::NetDataContainsDnsSrpUnicast(const NetworkData::NetworkData
|
||||
return contains;
|
||||
}
|
||||
|
||||
bool HistoryTracker::NetDataContainsDnsSrpAnycast(const NetworkData::NetworkData &aNetworkData,
|
||||
const NetworkData::Service::DnsSrpAnycastInfo &aAnycastInfo) const
|
||||
bool Local::NetDataContainsDnsSrpAnycast(const NetworkData::NetworkData &aNetworkData,
|
||||
const NetworkData::Service::DnsSrpAnycastInfo &aAnycastInfo) const
|
||||
{
|
||||
bool contains = false;
|
||||
NetworkData::Service::Iterator iterator(GetInstance(), aNetworkData);
|
||||
@@ -567,7 +565,7 @@ bool HistoryTracker::NetDataContainsDnsSrpAnycast(const NetworkData::NetworkData
|
||||
#endif // OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
|
||||
|
||||
#if OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE && OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE
|
||||
void HistoryTracker::RecordEpskcEvent(EpskcEvent aEvent)
|
||||
void Local::RecordEpskcEvent(EpskcEvent aEvent)
|
||||
{
|
||||
EpskcEvent *entry = mEpskcEventHistory.AddNewEntry();
|
||||
|
||||
@@ -579,7 +577,7 @@ exit:
|
||||
}
|
||||
#endif
|
||||
|
||||
void HistoryTracker::HandleNotifierEvents(Events aEvents)
|
||||
void Local::HandleNotifierEvents(Events aEvents)
|
||||
{
|
||||
if (aEvents.ContainsAny(kEventThreadRoleChanged | kEventThreadRlocAdded | kEventThreadRlocRemoved |
|
||||
kEventThreadPartitionIdChanged))
|
||||
@@ -595,7 +593,7 @@ void HistoryTracker::HandleNotifierEvents(Events aEvents)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HistoryTracker::HandleTimer(void)
|
||||
void Local::HandleTimer(void)
|
||||
{
|
||||
mNetInfoHistory.UpdateAgedEntries();
|
||||
mUnicastAddressHistory.UpdateAgedEntries();
|
||||
@@ -612,7 +610,7 @@ void HistoryTracker::HandleTimer(void)
|
||||
mTimer.Start(kAgeCheckPeriod);
|
||||
}
|
||||
|
||||
void HistoryTracker::EntryAgeToString(uint32_t aEntryAge, char *aBuffer, uint16_t aSize)
|
||||
void Local::EntryAgeToString(uint32_t aEntryAge, char *aBuffer, uint16_t aSize)
|
||||
{
|
||||
StringWriter writer(aBuffer, aSize);
|
||||
|
||||
@@ -638,9 +636,9 @@ void HistoryTracker::EntryAgeToString(uint32_t aEntryAge, char *aBuffer, uint16_
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
// HistoryTracker::Timestamp
|
||||
// Local::Timestamp
|
||||
|
||||
void HistoryTracker::Timestamp::SetToNow(void)
|
||||
void Local::Timestamp::SetToNow(void)
|
||||
{
|
||||
mTime = TimerMilli::GetNow();
|
||||
|
||||
@@ -653,27 +651,27 @@ void HistoryTracker::Timestamp::SetToNow(void)
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t HistoryTracker::Timestamp::GetDurationTill(TimeMilli aTime) const
|
||||
uint32_t Local::Timestamp::GetDurationTill(TimeMilli aTime) const
|
||||
{
|
||||
return IsDistantPast() ? kMaxAge : Min(aTime - mTime, kMaxAge);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
// HistoryTracker::List
|
||||
// Local::List
|
||||
|
||||
HistoryTracker::List::List(void)
|
||||
Local::List::List(void)
|
||||
: mStartIndex(0)
|
||||
, mSize(0)
|
||||
{
|
||||
}
|
||||
|
||||
void HistoryTracker::List::Clear(void)
|
||||
void Local::List::Clear(void)
|
||||
{
|
||||
mStartIndex = 0;
|
||||
mSize = 0;
|
||||
}
|
||||
|
||||
uint16_t HistoryTracker::List::Add(uint16_t aMaxSize, Timestamp aTimestamps[])
|
||||
uint16_t Local::List::Add(uint16_t aMaxSize, Timestamp aTimestamps[])
|
||||
{
|
||||
// Add a new entry and return its list index. Overwrites the
|
||||
// oldest entry if list is full.
|
||||
@@ -690,11 +688,11 @@ uint16_t HistoryTracker::List::Add(uint16_t aMaxSize, Timestamp aTimestamps[])
|
||||
return mStartIndex;
|
||||
}
|
||||
|
||||
Error HistoryTracker::List::Iterate(uint16_t aMaxSize,
|
||||
const Timestamp aTimestamps[],
|
||||
Iterator &aIterator,
|
||||
uint16_t &aListIndex,
|
||||
uint32_t &aEntryAge) const
|
||||
Error Local::List::Iterate(uint16_t aMaxSize,
|
||||
const Timestamp aTimestamps[],
|
||||
Iterator &aIterator,
|
||||
uint16_t &aListIndex,
|
||||
uint32_t &aEntryAge) const
|
||||
{
|
||||
Error error = kErrorNone;
|
||||
|
||||
@@ -709,7 +707,7 @@ exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
uint16_t HistoryTracker::List::MapEntryNumberToListIndex(uint16_t aEntryNumber, uint16_t aMaxSize) const
|
||||
uint16_t Local::List::MapEntryNumberToListIndex(uint16_t aEntryNumber, uint16_t aMaxSize) const
|
||||
{
|
||||
// Map the `aEntryNumber` to the list index. `aEntryNumber` value
|
||||
// of zero corresponds to the newest (the most recently added)
|
||||
@@ -727,7 +725,7 @@ uint16_t HistoryTracker::List::MapEntryNumberToListIndex(uint16_t aEntryNumber,
|
||||
return static_cast<uint16_t>(index);
|
||||
}
|
||||
|
||||
void HistoryTracker::List::UpdateAgedEntries(uint16_t aMaxSize, Timestamp aTimestamps[])
|
||||
void Local::List::UpdateAgedEntries(uint16_t aMaxSize, Timestamp aTimestamps[])
|
||||
{
|
||||
TimeMilli now = TimerMilli::GetNow();
|
||||
|
||||
@@ -754,7 +752,7 @@ void HistoryTracker::List::UpdateAgedEntries(uint16_t aMaxSize, Timestamp aTimes
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Utils
|
||||
} // namespace HistoryTracker
|
||||
} // namespace ot
|
||||
|
||||
#endif // #if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
#include "thread/router_table.hpp"
|
||||
|
||||
namespace ot {
|
||||
|
||||
namespace Utils {
|
||||
namespace HistoryTracker {
|
||||
|
||||
#ifdef OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA
|
||||
#error "OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_DATA should not be defined directly." \
|
||||
@@ -72,10 +71,68 @@ namespace Utils {
|
||||
(OPENTHREAD_CONFIG_HISTORY_TRACKER_EXTERNAL_ROUTE_LIST_SIZE > 0) || \
|
||||
(OPENTHREAD_CONFIG_HISTORY_TRACKER_DNSSRP_ADDR_LIST_SIZE > 0))
|
||||
|
||||
class Local;
|
||||
|
||||
/**
|
||||
* Implements History Tracker.
|
||||
* Represents an iterator to iterate through a history list.
|
||||
*/
|
||||
class HistoryTracker : public InstanceLocator, private NonCopyable
|
||||
class Iterator : public otHistoryTrackerIterator
|
||||
{
|
||||
friend class Local;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Initializes an `Iterator`
|
||||
*
|
||||
* An iterator MUST be initialized before it is used. An iterator can be initialized again to start from
|
||||
* the beginning of the list.
|
||||
*/
|
||||
void Init(void) { ResetEntryNumber(), SetInitTime(); }
|
||||
|
||||
private:
|
||||
uint16_t GetEntryNumber(void) const { return mData16; }
|
||||
void ResetEntryNumber(void) { mData16 = 0; }
|
||||
void IncrementEntryNumber(void) { mData16++; }
|
||||
TimeMilli GetInitTime(void) const { return TimeMilli(mData32); }
|
||||
void SetInitTime(void) { mData32 = TimerMilli::GetNow().GetValue(); }
|
||||
};
|
||||
|
||||
typedef otHistoryTrackerNetworkInfo NetworkInfo; ///< Thread network info.
|
||||
typedef otHistoryTrackerUnicastAddressInfo UnicastAddressInfo; ///< Unicast IPv6 address info.
|
||||
typedef otHistoryTrackerMulticastAddressInfo MulticastAddressInfo; ///< Multicast IPv6 address info.
|
||||
typedef otHistoryTrackerMessageInfo MessageInfo; ///< RX/TX IPv6 message info.
|
||||
typedef otHistoryTrackerNeighborInfo NeighborInfo; ///< Neighbor info.
|
||||
typedef otHistoryTrackerRouterInfo RouterInfo; ///< Router info.
|
||||
typedef otHistoryTrackerOnMeshPrefixInfo OnMeshPrefixInfo; ///< Network Data on mesh prefix info.
|
||||
typedef otHistoryTrackerExternalRouteInfo ExternalRouteInfo; ///< Network Data external route info
|
||||
typedef otHistoryTrackerDnsSrpAddrInfo DnsSrpAddrInfo; ///< Network Data SRP/DNS address info.
|
||||
#if OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE && OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE
|
||||
typedef otHistoryTrackerBorderAgentEpskcEvent EpskcEvent; ///< Border Agent ePSKc Event.
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This constant specifies the maximum age of entries which is 49 days (value in msec).
|
||||
*
|
||||
* Entries older than the max age will give this value as their age.
|
||||
*/
|
||||
static constexpr uint32_t kMaxAge = OT_HISTORY_TRACKER_MAX_AGE;
|
||||
|
||||
/**
|
||||
* This constant specifies the recommend string size to represent an entry age
|
||||
*/
|
||||
static constexpr uint16_t kEntryAgeStringSize = OT_HISTORY_TRACKER_ENTRY_AGE_STRING_SIZE;
|
||||
|
||||
/**
|
||||
* This constants specified no next hop.
|
||||
*
|
||||
* Used for `mNextHop` in `RouteInfo` structure.
|
||||
*/
|
||||
static constexpr uint8_t kNoNextHop = OT_HISTORY_TRACKER_NO_NEXT_HOP;
|
||||
|
||||
/**
|
||||
* Implements the local history tracker.
|
||||
*/
|
||||
class Local : public InstanceLocator, private NonCopyable
|
||||
{
|
||||
friend class ot::MeshForwarder;
|
||||
friend class ot::Notifier;
|
||||
@@ -92,67 +149,11 @@ class HistoryTracker : public InstanceLocator, private NonCopyable
|
||||
|
||||
public:
|
||||
/**
|
||||
* This constant specifies the maximum age of entries which is 49 days (value in msec).
|
||||
*
|
||||
* Entries older than the max age will give this value as their age.
|
||||
*/
|
||||
static constexpr uint32_t kMaxAge = OT_HISTORY_TRACKER_MAX_AGE;
|
||||
|
||||
/**
|
||||
* This constant specifies the recommend string size to represent an entry age
|
||||
*/
|
||||
static constexpr uint16_t kEntryAgeStringSize = OT_HISTORY_TRACKER_ENTRY_AGE_STRING_SIZE;
|
||||
|
||||
/**
|
||||
* This constants specified no next hop.
|
||||
*
|
||||
* Used for `mNextHop` in `RouteInfo` structure.
|
||||
*/
|
||||
static constexpr uint8_t kNoNextHop = OT_HISTORY_TRACKER_NO_NEXT_HOP;
|
||||
|
||||
/**
|
||||
* Represents an iterator to iterate through a history list.
|
||||
*/
|
||||
class Iterator : public otHistoryTrackerIterator
|
||||
{
|
||||
friend class HistoryTracker;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Initializes an `Iterator`
|
||||
*
|
||||
* An iterator MUST be initialized before it is used. An iterator can be initialized again to start from
|
||||
* the beginning of the list.
|
||||
*/
|
||||
void Init(void) { ResetEntryNumber(), SetInitTime(); }
|
||||
|
||||
private:
|
||||
uint16_t GetEntryNumber(void) const { return mData16; }
|
||||
void ResetEntryNumber(void) { mData16 = 0; }
|
||||
void IncrementEntryNumber(void) { mData16++; }
|
||||
TimeMilli GetInitTime(void) const { return TimeMilli(mData32); }
|
||||
void SetInitTime(void) { mData32 = TimerMilli::GetNow().GetValue(); }
|
||||
};
|
||||
|
||||
typedef otHistoryTrackerNetworkInfo NetworkInfo; ///< Thread network info.
|
||||
typedef otHistoryTrackerUnicastAddressInfo UnicastAddressInfo; ///< Unicast IPv6 address info.
|
||||
typedef otHistoryTrackerMulticastAddressInfo MulticastAddressInfo; ///< Multicast IPv6 address info.
|
||||
typedef otHistoryTrackerMessageInfo MessageInfo; ///< RX/TX IPv6 message info.
|
||||
typedef otHistoryTrackerNeighborInfo NeighborInfo; ///< Neighbor info.
|
||||
typedef otHistoryTrackerRouterInfo RouterInfo; ///< Router info.
|
||||
typedef otHistoryTrackerOnMeshPrefixInfo OnMeshPrefixInfo; ///< Network Data on mesh prefix info.
|
||||
typedef otHistoryTrackerExternalRouteInfo ExternalRouteInfo; ///< Network Data external route info
|
||||
typedef otHistoryTrackerDnsSrpAddrInfo DnsSrpAddrInfo; ///< Network Data SRP/DNS address info.
|
||||
#if OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE && OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE
|
||||
typedef otHistoryTrackerBorderAgentEpskcEvent EpskcEvent; ///< Border Agent ePSKc Event.
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Initializes the `HistoryTracker`.
|
||||
* Initializes the local tracker.
|
||||
*
|
||||
* @param[in] aInstance A reference to the OpenThread instance.
|
||||
*/
|
||||
explicit HistoryTracker(Instance &aInstance);
|
||||
explicit Local(Instance &aInstance);
|
||||
|
||||
/**
|
||||
* Iterates over the entries in the network info history list.
|
||||
@@ -477,7 +478,7 @@ private:
|
||||
void RecordEpskcEvent(EpskcEvent aEvent);
|
||||
#endif
|
||||
|
||||
using TrackerTimer = TimerMilliIn<HistoryTracker, &HistoryTracker::HandleTimer>;
|
||||
using TrackerTimer = TimerMilliIn<Local, &Local::HandleTimer>;
|
||||
|
||||
EntryList<NetworkInfo, kNetInfoListSize> mNetInfoHistory;
|
||||
EntryList<UnicastAddressInfo, kUnicastAddrListSize> mUnicastAddressHistory;
|
||||
@@ -513,15 +514,15 @@ private:
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace Utils
|
||||
} // namespace HistoryTracker
|
||||
|
||||
DefineCoreType(otHistoryTrackerIterator, Utils::HistoryTracker::Iterator);
|
||||
DefineCoreType(otHistoryTrackerNetworkInfo, Utils::HistoryTracker::NetworkInfo);
|
||||
DefineCoreType(otHistoryTrackerMessageInfo, Utils::HistoryTracker::MessageInfo);
|
||||
DefineCoreType(otHistoryTrackerNeighborInfo, Utils::HistoryTracker::NeighborInfo);
|
||||
DefineCoreType(otHistoryTrackerRouterInfo, Utils::HistoryTracker::RouterInfo);
|
||||
DefineCoreType(otHistoryTrackerOnMeshPrefixInfo, Utils::HistoryTracker::OnMeshPrefixInfo);
|
||||
DefineCoreType(otHistoryTrackerExternalRouteInfo, Utils::HistoryTracker::ExternalRouteInfo);
|
||||
DefineCoreType(otHistoryTrackerIterator, HistoryTracker::Iterator);
|
||||
DefineCoreType(otHistoryTrackerNetworkInfo, HistoryTracker::NetworkInfo);
|
||||
DefineCoreType(otHistoryTrackerMessageInfo, HistoryTracker::MessageInfo);
|
||||
DefineCoreType(otHistoryTrackerNeighborInfo, HistoryTracker::NeighborInfo);
|
||||
DefineCoreType(otHistoryTrackerRouterInfo, HistoryTracker::RouterInfo);
|
||||
DefineCoreType(otHistoryTrackerOnMeshPrefixInfo, HistoryTracker::OnMeshPrefixInfo);
|
||||
DefineCoreType(otHistoryTrackerExternalRouteInfo, HistoryTracker::ExternalRouteInfo);
|
||||
|
||||
} // namespace ot
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@ namespace Nexus {
|
||||
using ActiveDatasetManager = MeshCoP::ActiveDatasetManager;
|
||||
using BorderAgent = MeshCoP::BorderAgent;
|
||||
using EphemeralKeyManager = MeshCoP::BorderAgent::EphemeralKeyManager;
|
||||
using HistoryTracker = Utils::HistoryTracker;
|
||||
using EpskcEvent = HistoryTracker::EpskcEvent;
|
||||
using Iterator = HistoryTracker::Iterator;
|
||||
using ExtendedPanIdManager = MeshCoP::ExtendedPanIdManager;
|
||||
@@ -764,7 +763,7 @@ EpskcEvent GetNewestEpskcEvent(Node &aNode)
|
||||
uint32_t age;
|
||||
iter.Init();
|
||||
|
||||
epskcEvent = aNode.Get<HistoryTracker>().IterateEpskcEventHistory(iter, age);
|
||||
epskcEvent = aNode.Get<HistoryTracker::Local>().IterateEpskcEventHistory(iter, age);
|
||||
|
||||
VerifyOrQuit(epskcEvent != nullptr);
|
||||
return *epskcEvent;
|
||||
|
||||
Reference in New Issue
Block a user