From 87d8940abfc379c0748055fc0bf6f4870d5e73ce Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Fri, 12 Jan 2018 01:04:55 +0000 Subject: [PATCH] [mle] request network data on child reattach after reboot (#2466) This commit adds a Network Data TLV request to the MLE Child Update Request message when trying to resynchronize with a parent after reset. This eliminates the need for an MLE Data Request/Response exchange following the MLE Child Update Request/Response exchange. --- src/core/thread/mle.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index e14099c24..3270e5eee 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -1807,14 +1807,18 @@ otError Mle::SendChildUpdateRequest(void) switch (mRole) { case OT_DEVICE_ROLE_DETACHED: + { + static const uint8_t tlvs[] = {Tlv::kNetworkData}; + for (uint8_t i = 0; i < sizeof(mParentRequest.mChallenge); i++) { mParentRequest.mChallenge[i] = static_cast(otPlatRandomGet()); } - SuccessOrExit(error = AppendChallenge(*message, mParentRequest.mChallenge, - sizeof(mParentRequest.mChallenge))); + SuccessOrExit(error = AppendChallenge(*message, mParentRequest.mChallenge, sizeof(mParentRequest.mChallenge))); + SuccessOrExit(error = AppendTlvRequest(*message, tlvs, sizeof(tlvs))); break; + } case OT_DEVICE_ROLE_CHILD: SuccessOrExit(error = AppendSourceAddress(*message));