diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index d37c760b4..516a4f9b6 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -1630,8 +1630,7 @@ void Mle::SendDelayedResponse(TxMessage &aMessage, const DelayedResponseMetadata if (aMessage.GetSubType() == Message::kSubTypeMleDataRequest) { - SuccessOrExit(error = aMessage.AppendActiveTimestampTlv()); - SuccessOrExit(error = aMessage.AppendPendingTimestampTlv()); + SuccessOrExit(error = aMessage.AppendActiveAndPendingTimestampTlvs()); } SuccessOrExit(error = aMessage.SendTo(aMetadata.mDestination)); @@ -1807,8 +1806,7 @@ Error Mle::SendChildIdRequest(void) } SuccessOrExit(error = message->AppendTlvRequestTlv(kTlvs, tlvsLen)); - SuccessOrExit(error = message->AppendActiveTimestampTlv()); - SuccessOrExit(error = message->AppendPendingTimestampTlv()); + SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs()); mParentCandidate.SetState(Neighbor::kStateValid); @@ -1878,8 +1876,7 @@ Error Mle::SendDataRequest(const Ip6::Address &aDestination, const uint8_t *aTlv } else { - SuccessOrExit(error = message->AppendActiveTimestampTlv()); - SuccessOrExit(error = message->AppendPendingTimestampTlv()); + SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs()); SuccessOrExit(error = message->SendTo(aDestination)); Log(kMessageSend, kTypeDataRequest, aDestination); @@ -4749,6 +4746,17 @@ exit: return error; } +Error Mle::TxMessage::AppendActiveAndPendingTimestampTlvs(void) +{ + Error error; + + SuccessOrExit(error = AppendActiveTimestampTlv()); + error = AppendPendingTimestampTlv(); + +exit: + return error; +} + #if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE Error Mle::TxMessage::AppendCslChannelTlv(void) { diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 045ea7ea4..7633ffbd2 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -1024,6 +1024,7 @@ private: Error AppendXtalAccuracyTlv(void); Error AppendActiveTimestampTlv(void); Error AppendPendingTimestampTlv(void); + Error AppendActiveAndPendingTimestampTlvs(void); #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE Error AppendTimeRequestTlv(void); Error AppendTimeParameterTlv(void); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 67dd68dde..7c12d8133 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -2775,8 +2775,7 @@ Error MleRouter::SendChildIdResponse(Child &aChild) VerifyOrExit((message = NewMleMessage(kCommandChildIdResponse)) != nullptr, error = kErrorNoBufs); SuccessOrExit(error = message->AppendSourceAddressTlv()); SuccessOrExit(error = message->AppendLeaderDataTlv()); - SuccessOrExit(error = message->AppendActiveTimestampTlv()); - SuccessOrExit(error = message->AppendPendingTimestampTlv()); + SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs()); if ((aChild.GetRloc16() == 0) || !RouterIdMatch(aChild.GetRloc16(), GetRloc16())) { @@ -2895,8 +2894,7 @@ Error MleRouter::SendChildUpdateRequest(Child &aChild) SuccessOrExit(error = message->AppendSourceAddressTlv()); SuccessOrExit(error = message->AppendLeaderDataTlv()); SuccessOrExit(error = message->AppendNetworkDataTlv(aChild.GetNetworkDataType())); - SuccessOrExit(error = message->AppendActiveTimestampTlv()); - SuccessOrExit(error = message->AppendPendingTimestampTlv()); + SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs()); if (!aChild.IsStateValid()) { @@ -2999,8 +2997,7 @@ void MleRouter::SendChildUpdateResponse(Child *aChild, case Tlv::kNetworkData: SuccessOrExit(error = message->AppendNetworkDataTlv(aChild->GetNetworkDataType())); - SuccessOrExit(error = message->AppendActiveTimestampTlv()); - SuccessOrExit(error = message->AppendPendingTimestampTlv()); + SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs()); break; case Tlv::kTimeout: @@ -3057,8 +3054,7 @@ void MleRouter::SendDataResponse(const Ip6::Address &aDestination, VerifyOrExit((message = NewMleMessage(kCommandDataResponse)) != nullptr, error = kErrorNoBufs); SuccessOrExit(error = message->AppendSourceAddressTlv()); SuccessOrExit(error = message->AppendLeaderDataTlv()); - SuccessOrExit(error = message->AppendActiveTimestampTlv()); - SuccessOrExit(error = message->AppendPendingTimestampTlv()); + SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs()); for (uint8_t tlvType : aTlvList) {