mirror of
https://github.com/espressif/openthread.git
synced 2026-08-29 05:19:54 +00:00
Router should attempt to keep child links valid during partition migration. (#291)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user