Actions
Bug #459
openmcast: failed batadv_send_unicast_skb() prevents local delivery (and delivery to independent next hops)
Start date:
07/30/2026
Due date:
% Done:
0%
Estimated time:
Description
Whenever batadv_send_unicast_skb returns an error in batadv_mcast_forw_packet, it will stop preventing local delivery of a packet. This happens because it directly returns:
batadv_inc_counter(bat_priv, BATADV_CNT_MCAST_TX);
batadv_add_counter(bat_priv, BATADV_CNT_MCAST_TX_BYTES,
nexthop_skb->len + ETH_HLEN);
xmitted = true;
ret = batadv_send_unicast_skb(nexthop_skb, neigh_node);
batadv_neigh_node_put(neigh_node);
if (ret < 0)
return ret;
with a negative error code. And the local delivery requires a positive return code.
if (local_recv)
return NET_RX_SUCCESS;
else
return NET_RX_DROP;
It sounds to me like stopping the transmission in the middle of forwarding it to different next hops is also incorrect because the error for this next hop might have been caused by things like an interface which went down and might not be relevant for all the other next hops for which the multicast packet needs to be transferred to.
No data to display
Actions