Update route data in a child after parent migration. (#1044)
diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp
index edb6cf4..0ae1fd0 100644
--- a/src/core/thread/mle.cpp
+++ b/src/core/thread/mle.cpp
@@ -2037,6 +2037,7 @@
Neighbor *neighbor;
SourceAddressTlv sourceAddress;
LeaderDataTlv leaderData;
+ RouteTlv route;
uint8_t tlvs[] = {Tlv::kNetworkData};
// Source Address
@@ -2075,6 +2076,15 @@
leaderData.GetLeaderRouterId() != GetLeaderId()))
{
SetLeaderData(leaderData.GetPartitionId(), leaderData.GetWeighting(), leaderData.GetLeaderRouterId());
+
+ if ((mDeviceMode & ModeTlv::kModeFFD) &&
+ (Tlv::GetTlv(aMessage, Tlv::kRoute, sizeof(route), route) == kThreadError_None) &&
+ route.IsValid())
+ {
+ // Overwrite Route Data
+ mMleRouter.ProcessRouteTlv(route);
+ }
+
mRetrieveNewNetworkData = true;
}