Process Link and MLE Frame Counter TLVs in Child Update Response. (#1209)

This commit is contained in:
Jonathan Hui
2017-01-26 05:28:32 -08:00
committed by GitHub
parent ab8b30459c
commit 8769b86c85
+19
View File
@@ -2697,6 +2697,8 @@ ThreadError Mle::HandleChildUpdateResponse(const Message &aMessage, const Ip6::M
StatusTlv status;
ModeTlv mode;
ResponseTlv response;
LinkFrameCounterTlv linkFrameCounter;
MleFrameCounterTlv mleFrameCounter;
LeaderDataTlv leaderData;
SourceAddressTlv sourceAddress;
TimeoutTlv timeout;
@@ -2727,6 +2729,23 @@ ThreadError Mle::HandleChildUpdateResponse(const Message &aMessage, const Ip6::M
sizeof(mParentRequest.mChallenge)) == 0,
error = kThreadError_Drop);
SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kLinkFrameCounter, sizeof(linkFrameCounter),
linkFrameCounter));
VerifyOrExit(linkFrameCounter.IsValid(), error = kThreadError_Parse);
if (Tlv::GetTlv(aMessage, Tlv::kMleFrameCounter, sizeof(mleFrameCounter), mleFrameCounter) ==
kThreadError_None)
{
VerifyOrExit(mleFrameCounter.IsValid(), error = kThreadError_Parse);
}
else
{
mleFrameCounter.SetFrameCounter(linkFrameCounter.GetFrameCounter());
}
mParent.mValid.mLinkFrameCounter = linkFrameCounter.GetFrameCounter();
mParent.mValid.mMleFrameCounter = mleFrameCounter.GetFrameCounter();
SetStateChild(GetRloc16());
// fall through