[mesh-forwarder] always perform routing lookup (#2452)

This commit is contained in:
Jonathan Hui
2018-01-08 21:22:54 +00:00
committed by GitHub
parent 3043674f4f
commit 2f72c2fe16
+7 -13
View File
@@ -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;