diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index a4669fded..9c60f4e1f 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -1819,6 +1819,20 @@ void MleRouter::HandleStateUpdateTimer(void) mRouters[i].mLinkQualityOut = 0; mRouters[i].mLastHeard = Timer::GetNow(); + for (uint8_t j = 0; j <= kMaxRouterId; j++) + { + if (mRouters[j].mNextHop == i) + { + mRouters[j].mNextHop = kInvalidRouterId; + mRouters[j].mCost = 0; + + if (GetLinkCost(j) >= kMaxRouteCost) + { + ResetAdvertiseInterval(); + } + } + } + if (mRouters[i].mNextHop == kInvalidRouterId) { ResetAdvertiseInterval();