mirror of
https://github.com/espressif/openthread.git
synced 2026-08-24 19:29:52 +00:00
Process Link and MLE Frame Counter TLVs in Child Update Response. (#1209)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user