Project

General

Profile

Actions

Bug #459

open

mcast: failed batadv_send_unicast_skb() prevents local delivery (and delivery to independent next hops)

Added by Sven Eckelmann 11 days ago.

Status:
New
Priority:
Normal
Target version:
-
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

Also available in: Atom PDF