mirror of
https://github.com/espressif/openthread.git
synced 2026-08-06 10:47:46 +00:00
[mle] simplify appending of MLE Discovery TLV in Mle::Discover() (#5059)
This commit is contained in:
+2
-12
@@ -512,9 +512,7 @@ otError Mle::Discover(const Mac::ChannelMask &aScanChannels,
|
||||
otError error = OT_ERROR_NONE;
|
||||
Message * message = NULL;
|
||||
Ip6::Address destination;
|
||||
Tlv tlv;
|
||||
MeshCoP::DiscoveryRequestTlv discoveryRequest;
|
||||
uint16_t startOffset;
|
||||
|
||||
VerifyOrExit(!mDiscoverInProgress, error = OT_ERROR_BUSY);
|
||||
|
||||
@@ -539,20 +537,12 @@ otError Mle::Discover(const Mac::ChannelMask &aScanChannels,
|
||||
message->SetPanId(aPanId);
|
||||
SuccessOrExit(error = AppendHeader(*message, Header::kCommandDiscoveryRequest));
|
||||
|
||||
// Discovery TLV
|
||||
tlv.SetType(Tlv::kDiscovery);
|
||||
SuccessOrExit(error = message->Append(&tlv, sizeof(tlv)));
|
||||
|
||||
startOffset = message->GetLength();
|
||||
|
||||
// Discovery Request TLV
|
||||
// Append MLE Discovery TLV with a single sub-TLV (MeshCoP Discovery Request).
|
||||
discoveryRequest.Init();
|
||||
discoveryRequest.SetVersion(kThreadVersion);
|
||||
discoveryRequest.SetJoiner(aJoiner);
|
||||
SuccessOrExit(error = discoveryRequest.AppendTo(*message));
|
||||
|
||||
tlv.SetLength(static_cast<uint8_t>(message->GetLength() - startOffset));
|
||||
message->Write(startOffset - sizeof(tlv), sizeof(tlv), &tlv);
|
||||
SuccessOrExit(error = Tlv::AppendTlv(*message, Tlv::kDiscovery, &discoveryRequest, sizeof(discoveryRequest)));
|
||||
|
||||
destination.SetToLinkLocalAllRoutersMulticast();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user