diff options
author | DaveLacerte <36926543+DaveLacerte@users.noreply.github.com> | 2024-04-05 14:19:39 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-05 11:19:39 -0700 |
commit | a5c17b77635bb43d02d4dec96fbf4b7eeb43be06 (patch) | |
tree | bbef72f474bca02f5f615a6d386dade8d760f2ee | |
parent | b146766e3a485ffc860968673fe818c23a8bed93 (diff) | |
download | openthread-a5c17b77635bb43d02d4dec96fbf4b7eeb43be06.tar.gz |
[mle] MTD to handle udp time sync message (#9978)
This commit add the possibility to handle a udp time sync message when
configured as MTD.
-rw-r--r-- | src/core/thread/mle.cpp | 57 | ||||
-rw-r--r-- | src/core/thread/mle.hpp | 10 | ||||
-rw-r--r-- | src/core/thread/mle_router.cpp | 14 | ||||
-rw-r--r-- | src/core/thread/mle_router.hpp | 3 |
4 files changed, 46 insertions, 38 deletions
diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 7ba5d8705..99e6809f8 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -2652,13 +2652,13 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn case kCommandChildIdRequest: Get<MleRouter>().HandleChildIdRequest(rxInfo); break; +#endif // OPENTHREAD_FTD #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE case kCommandTimeSync: - Get<MleRouter>().HandleTimeSync(rxInfo); + HandleTimeSync(rxInfo); break; #endif -#endif // OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE case kCommandLinkMetricsManagementRequest: @@ -3791,6 +3791,22 @@ exit: } #endif +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE +void Mle::HandleTimeSync(RxInfo &aRxInfo) +{ + Log(kMessageReceive, kTypeTimeSync, aRxInfo.mMessageInfo.GetPeerAddr()); + + VerifyOrExit(aRxInfo.IsNeighborStateValid()); + + aRxInfo.mClass = RxInfo::kPeerMessage; + + Get<TimeSync>().HandleTimeSyncMessage(aRxInfo.mMessage); + +exit: + return; +} +#endif + #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE void Mle::HandleLinkMetricsManagementResponse(RxInfo &aRxInfo) { @@ -4110,14 +4126,14 @@ const char *Mle::MessageTypeToString(MessageType aType) "Link Reject", // (25) kTypeLinkReject "Link Request", // (26) kTypeLinkRequest "Parent Request", // (27) kTypeParentRequest -#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE - "Time Sync", // (28) kTypeTimeSync -#endif #endif #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE - "Link Metrics Management Request", // (29) kTypeLinkMetricsManagementRequest - "Link Metrics Management Response", // (30) kTypeLinkMetricsManagementResponse - "Link Probe", // (31) kTypeLinkProbe + "Link Metrics Management Request", // (28) kTypeLinkMetricsManagementRequest + "Link Metrics Management Response", // (29) kTypeLinkMetricsManagementResponse + "Link Probe", // (30) kTypeLinkProbe +#endif +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + "Time Sync", // (31) kTypeTimeSync #endif }; @@ -4150,25 +4166,30 @@ const char *Mle::MessageTypeToString(MessageType aType) static_assert(kTypeLinkReject == 25, "kTypeLinkReject value is incorrect"); static_assert(kTypeLinkRequest == 26, "kTypeLinkRequest value is incorrect"); static_assert(kTypeParentRequest == 27, "kTypeParentRequest value is incorrect"); -#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE - static_assert(kTypeTimeSync == 28, "kTypeTimeSync value is incorrect"); -#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE - static_assert(kTypeLinkMetricsManagementRequest == 29, "kTypeLinkMetricsManagementRequest value is incorrect)"); - static_assert(kTypeLinkMetricsManagementResponse == 30, "kTypeLinkMetricsManagementResponse value is incorrect)"); - static_assert(kTypeLinkProbe == 31, "kTypeLinkProbe value is incorrect)"); -#endif -#else // OPENTHREAD_CONFIG_TIME_SYNC_ENABLE #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE static_assert(kTypeLinkMetricsManagementRequest == 28, "kTypeLinkMetricsManagementRequest value is incorrect)"); static_assert(kTypeLinkMetricsManagementResponse == 29, "kTypeLinkMetricsManagementResponse value is incorrect)"); static_assert(kTypeLinkProbe == 30, "kTypeLinkProbe value is incorrect)"); +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + static_assert(kTypeTimeSync == 31, "kTypeTimeSync value is incorrect"); #endif -#endif // OPENTHREAD_CONFIG_TIME_SYNC_ENABLE -#else // OPENTHREAD_FTD +#else +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + static_assert(kTypeTimeSync == 28, "kTypeTimeSync value is incorrect"); +#endif +#endif +#else // OPENTHREAD_FTD #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE static_assert(kTypeLinkMetricsManagementRequest == 16, "kTypeLinkMetricsManagementRequest value is incorrect)"); static_assert(kTypeLinkMetricsManagementResponse == 17, "kTypeLinkMetricsManagementResponse value is incorrect)"); static_assert(kTypeLinkProbe == 18, "kTypeLinkProbe value is incorrect)"); +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + static_assert(kTypeTimeSync == 19, "kTypeTimeSync value is incorrect"); +#endif +#else +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + static_assert(kTypeTimeSync == 16, "kTypeTimeSync value is incorrect"); +#endif #endif #endif // OPENTHREAD_FTD diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 208922bcd..873e33835 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -973,15 +973,15 @@ private: kTypeLinkReject, kTypeLinkRequest, kTypeParentRequest, -#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE - kTypeTimeSync, -#endif #endif #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE kTypeLinkMetricsManagementRequest, kTypeLinkMetricsManagementResponse, kTypeLinkProbe, #endif +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + kTypeTimeSync, +#endif }; //------------------------------------------------------------------------------------------------------------------ @@ -1313,6 +1313,10 @@ private: void UpdateServiceAlocs(void); #endif +#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE + void HandleTimeSync(RxInfo &aRxInfo); +#endif + #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE void HandleLinkMetricsManagementRequest(RxInfo &aRxInfo); void HandleLinkProbe(RxInfo &aRxInfo); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index b7489e651..b55341f9b 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -3891,20 +3891,6 @@ exit: } #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE -void MleRouter::HandleTimeSync(RxInfo &aRxInfo) -{ - Log(kMessageReceive, kTypeTimeSync, aRxInfo.mMessageInfo.GetPeerAddr()); - - VerifyOrExit(aRxInfo.IsNeighborStateValid()); - - aRxInfo.mClass = RxInfo::kPeerMessage; - - Get<TimeSync>().HandleTimeSyncMessage(aRxInfo.mMessage); - -exit: - return; -} - Error MleRouter::SendTimeSync(void) { Error error = kErrorNone; diff --git a/src/core/thread/mle_router.hpp b/src/core/thread/mle_router.hpp index 3deda33dc..955674c42 100644 --- a/src/core/thread/mle_router.hpp +++ b/src/core/thread/mle_router.hpp @@ -649,9 +649,6 @@ private: void HandleDataRequest(RxInfo &aRxInfo); void HandleNetworkDataUpdateRouter(void); void HandleDiscoveryRequest(RxInfo &aRxInfo); -#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE - void HandleTimeSync(RxInfo &aRxInfo); -#endif Error ProcessRouteTlv(const RouteTlv &aRouteTlv, RxInfo &aRxInfo); Error ReadAndProcessRouteTlvOnFed(RxInfo &aRxInfo, uint8_t aParentId); |