Router should attempt to keep child links valid during partition migration. (#291)

This commit is contained in:
Jonathan Hui
2016-07-28 10:52:25 -07:00
committed by GitHub
parent 083b5f59de
commit 5f3f992b11
+19 -6
View File
@@ -264,11 +264,6 @@ ThreadError MleRouter::HandleDetachStart(void)
mRouters[i].mState = Neighbor::kStateInvalid;
}
for (int i = 0; i < kMaxChildren; i++)
{
mChildren[i].mState = Neighbor::kStateInvalid;
}
mAdvertiseTimer.Stop();
mStateUpdateTimer.Stop();
mNetworkData.Stop();
@@ -2593,9 +2588,27 @@ void MleRouter::HandleAddressSolicitResponse(Message &aMessage)
// send child id responses
for (int i = 0; i < kMaxChildren; i++)
{
if (mChildren[i].mState == Neighbor::kStateChildIdRequest)
switch (mChildren[i].mState)
{
case Neighbor::kStateInvalid:
case Neighbor::kStateParentRequest:
break;
case Neighbor::kStateChildIdRequest:
SendChildIdResponse(&mChildren[i]);
break;
case Neighbor::kStateLinkRequest:
assert(false);
break;
case Neighbor::kStateValid:
if (GetRouterId(mChildren[i].mValid.mRloc16) != mRouterId)
{
mChildren[i].mState = Neighbor::kStateInvalid;
}
break;
}
}