diff --git a/subsys/net/ip/ipv6_nbr.c b/subsys/net/ip/ipv6_nbr.c index b1928f7d138..6677df73ae8 100644 --- a/subsys/net/ip/ipv6_nbr.c +++ b/subsys/net/ip/ipv6_nbr.c @@ -852,7 +852,9 @@ enum net_verdict net_ipv6_prepare_for_send(struct net_pkt *pkt) */ if ((net_pkt_lladdr_dst(pkt)->addr && ((IS_ENABLED(CONFIG_NET_ROUTING) && - net_ipv6_is_ll_addr((struct in6_addr *)ip_hdr->dst)) || + (net_ipv6_is_ll_addr((struct in6_addr *)ip_hdr->dst) || + net_if_ipv6_addr_onlink(NULL, (struct in6_addr *)ip_hdr->dst) || + net_pkt_forwarding(pkt))) || !IS_ENABLED(CONFIG_NET_ROUTING))) || net_ipv6_is_addr_mcast((struct in6_addr *)ip_hdr->dst) || /* Workaround Linux bug, see: