From 2f72c2fe16f49a09d69137b13972d8f5cdc36134 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Mon, 8 Jan 2018 21:22:54 +0000 Subject: [PATCH] [mesh-forwarder] always perform routing lookup (#2452) --- src/core/thread/mesh_forwarder.cpp | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index 7c7ef31ef..fa021dfd2 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -958,21 +958,15 @@ otError MeshForwarder::UpdateIp6Route(Message &aMessage) VerifyOrExit(mMeshDest != Mac::kShortAddrInvalid, error = OT_ERROR_DROP); - if (netif.GetMle().GetNeighbor(mMeshDest) != NULL) - { - // destination is neighbor - mMacDest.mLength = sizeof(mMacDest.mShortAddress); - mMacDest.mShortAddress = mMeshDest; - } - else + mMeshSource = netif.GetMac().GetShortAddress(); + mMacDest.mLength = sizeof(mMacDest.mShortAddress); + + SuccessOrExit(error = netif.GetMle().CheckReachability(mMeshSource, mMeshDest, ip6Header)); + mMacDest.mShortAddress = netif.GetMle().GetNextHop(mMeshDest); + + if (mMacDest.mShortAddress != mMeshDest) { // destination is not neighbor - mMeshSource = netif.GetMac().GetShortAddress(); - - SuccessOrExit(error = netif.GetMle().CheckReachability(mMeshSource, mMeshDest, ip6Header)); - - mMacDest.mLength = sizeof(mMacDest.mShortAddress); - mMacDest.mShortAddress = netif.GetMle().GetNextHop(mMeshDest); mMacSource.mLength = sizeof(mMacSource.mShortAddress); mMacSource.mShortAddress = mMeshSource; mAddMeshHeader = true;