diff --git a/src/core/net/ip6.cpp b/src/core/net/ip6.cpp index 3f5ec0de3..b510fb12c 100644 --- a/src/core/net/ip6.cpp +++ b/src/core/net/ip6.cpp @@ -1309,43 +1309,29 @@ exit: bool Ip6::ShouldForwardToThread(const MessageInfo &aMessageInfo, bool aFromHost) const { - OT_UNUSED_VARIABLE(aFromHost); + bool shouldForward = false; - bool rval = false; - - if (aMessageInfo.GetSockAddr().IsMulticast()) + if (aMessageInfo.GetSockAddr().IsMulticast() || aMessageInfo.GetSockAddr().IsLinkLocal()) { - // multicast - ExitNow(rval = true); - } - else if (aMessageInfo.GetSockAddr().IsLinkLocal()) - { - // on-link link-local address - ExitNow(rval = true); + shouldForward = true; } else if (IsOnLink(aMessageInfo.GetSockAddr())) { - // on-link global address #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_DUA_NDPROXYING_ENABLE - ExitNow(rval = (aFromHost || - !Get().ShouldForwardDuaToBackbone(aMessageInfo.GetSockAddr()))); + shouldForward = + (aFromHost || !Get().ShouldForwardDuaToBackbone(aMessageInfo.GetSockAddr())); #else - ExitNow(rval = true); + OT_UNUSED_VARIABLE(aFromHost); + shouldForward = true; #endif } else if (Get().RouteLookup(aMessageInfo.GetPeerAddr(), aMessageInfo.GetSockAddr(), nullptr) == kErrorNone) { - // route - ExitNow(rval = true); - } - else - { - ExitNow(rval = false); + shouldForward = true; } -exit: - return rval; + return shouldForward; } const Netif::UnicastAddress *Ip6::SelectSourceAddress(MessageInfo &aMessageInfo)