From 00059947d3b84552f88e40e0db9c75f9c43d8764 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 6 Oct 2016 08:59:11 -0700 Subject: [PATCH] Clean up Route TLV processing in Advertisement message. (#759) --- src/core/thread/mle_router.cpp | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index d0e6cd753..ceb0a1ee1 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -1310,7 +1310,12 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M ExitNow(); } - if (mDeviceMode & ModeTlv::kModeFFD) + VerifyOrExit(IsActiveRouter(sourceAddress.GetRloc16()), ;); + routerId = GetRouterId(sourceAddress.GetRloc16()); + VerifyOrExit(IsRouterIdValid(routerId), error = kThreadError_Parse); + + if ((mDeviceMode & ModeTlv::kModeFFD) && + static_cast(route.GetRouterIdSequence() - mRouterIdSequence) > 0) { bool processRouteTlv = false; @@ -1321,20 +1326,12 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M break; case kDeviceStateChild: - if (sourceAddress.GetRloc16() == mParent.mValid.mRloc16) - { - processRouteTlv = true; - } - + processRouteTlv = (sourceAddress.GetRloc16() == mParent.mValid.mRloc16); break; case kDeviceStateRouter: case kDeviceStateLeader: - if (static_cast(route.GetRouterIdSequence() - mRouterIdSequence) > 0) - { - processRouteTlv = true; - } - + processRouteTlv = true; break; } @@ -1344,11 +1341,6 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M } } - VerifyOrExit(IsActiveRouter(sourceAddress.GetRloc16()), ;); - - routerId = GetRouterId(sourceAddress.GetRloc16()); - VerifyOrExit(IsRouterIdValid(routerId), error = kThreadError_Parse); - router = NULL; switch (GetDeviceState())