mirror of
https://github.com/espressif/openthread.git
synced 2026-08-08 11:47:46 +00:00
[mle] add AppendSourceAddressAndLeaderDataTlvs() helper (#12867)
This commit introduces `TxMessage::AppendSourceAddressAndLeaderDataTlvs()` to consolidate the appending of `Source Address` and `Leader Data` TLVs. This combination is frequently used together across various MLE messages to provide the sender's identity and leader data. Centralizing this into a single helper method improves code consistency. Additionally, the `TxMessage` methods in `mle.hpp` and `mle.cpp` are organized into "Appending single TLV" and "Appending multiple TLVs" sections for better clarity and maintainability. Existing multi-TLV methods like `AppendLinkAndMleFrameCounterTlvs()` and `AppendActiveAndPendingTimestampTlvs()` are moved to the new section.
This commit is contained in:
@@ -539,8 +539,7 @@ void Mle::SendAdvertisement(const Ip6::Address &aDestination)
|
||||
VerifyOrExit(!mAddressSolicitPending);
|
||||
|
||||
VerifyOrExit((message = NewMleMessage(kCommandAdvertisement)) != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
|
||||
switch (mRole)
|
||||
{
|
||||
@@ -588,8 +587,7 @@ void Mle::SendLinkRequest(Router *aRouter)
|
||||
break;
|
||||
|
||||
case kRoleChild:
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
break;
|
||||
|
||||
case kRoleRouter:
|
||||
@@ -603,8 +601,7 @@ void Mle::SendLinkRequest(Router *aRouter)
|
||||
SuccessOrExit(error = message->AppendTlvRequestTlv(kValidNeighborTlvs));
|
||||
}
|
||||
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
break;
|
||||
|
||||
case kRoleDisabled:
|
||||
@@ -1800,8 +1797,7 @@ void Mle::SendParentResponse(const ParentResponseInfo &aInfo)
|
||||
VerifyOrExit((message = NewMleMessage(kCommandParentResponse)) != nullptr, error = kErrorNoBufs);
|
||||
message->SetDirectTransmission();
|
||||
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
SuccessOrExit(error = message->AppendLinkAndMleFrameCounterTlvs());
|
||||
SuccessOrExit(error = message->AppendResponseTlv(aInfo.mRxChallenge));
|
||||
#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
|
||||
@@ -2886,8 +2882,7 @@ Error Mle::SendChildIdResponse(Child &aChild)
|
||||
TxMessage *message;
|
||||
|
||||
VerifyOrExit((message = NewMleMessage(kCommandChildIdResponse)) != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
|
||||
|
||||
if ((aChild.GetRloc16() == 0) || !HasMatchingRouterIdWith(aChild.GetRloc16()))
|
||||
@@ -2975,8 +2970,7 @@ Error Mle::SendChildUpdateRequestToChild(Child &aChild)
|
||||
Get<MeshForwarder>().RemoveMessagesForChild(aChild, IsMessageChildUpdateRequest);
|
||||
|
||||
VerifyOrExit((message = NewMleMessage(kCommandChildUpdateRequest)) != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
SuccessOrExit(error = message->AppendNetworkDataTlv(aChild.GetNetworkDataType()));
|
||||
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
|
||||
|
||||
@@ -3148,8 +3142,7 @@ void Mle::SendDataResponse(const Ip6::Address &aDestination, const TlvList &aTlv
|
||||
}
|
||||
|
||||
VerifyOrExit((message = NewMleMessage(kCommandDataResponse)) != nullptr, error = kErrorNoBufs);
|
||||
SuccessOrExit(error = message->AppendSourceAddressTlv());
|
||||
SuccessOrExit(error = message->AppendLeaderDataTlv());
|
||||
SuccessOrExit(error = message->AppendSourceAddressAndLeaderDataTlvs());
|
||||
SuccessOrExit(error = message->AppendActiveAndPendingTimestampTlvs());
|
||||
|
||||
for (uint8_t tlvType : aTlvList)
|
||||
|
||||
Reference in New Issue
Block a user