batadv_mcast_forw_send(9)
π batadv_mcast_forw_send(9) β the Kernel API Manual, bestie edition
okay so we're in the batadv_mcast_forw_send page of the Kernel API Manual and honestly? this one's a little baddie. it takes a multicast packet and makes sure the right mesh besties actually get it. let's get into it π
β¨ NAME β¨
batadv_mcast_forw_send β literally sends a packet to any detected multicast recipient π
πΈ SYNOPSIS πΈ
int batadv_mcast_forw_send (struct batadv_priv *bat_priv , struct
sk_buff *skb , unsigned short vid , int is_routable );
like, that's the whole signature, no notes π₯
π¦ ARGUMENTS π¦
bat_privβ the bat priv, aka the thing holding all the mesh interface information π«Άskbβ the multicast packet we're transmitting, the main character frvidβ the vlan identifier, iykykis_routableβ stores whether the destination is routable π
π DESCRIPTION π
so what it does: it sends copies of a frame with a multicast destination to any node that signaled interest in it. and "signaled interest" means either via the translation table or via the according want-all flags. for each such destination node, a transmission is performed via a batman-adv unicast packet. cute, right? π§
β οΈ heads up bestie: the given skb is consumed/freed. like, it's gone. do not touch it after. no cap π
π RETURN π
NET_XMIT_DROPβ when memory allocation fails, or when the protocol family is neither IPv4 nor IPv6 πNET_XMIT_SUCCESSβ otherwise, slay β¨
β SEE ALSO β
the whole group chat, in Kernel file ./net/batman-adv/multicast.c:
batadv_mcast_start_timer(9)batadv_mcast_get_bridge(9)batadv_mcast_mla_rtr_flags_meshif_get_ipv4(9)batadv_mcast_mla_rtr_flags_meshif_get_ipv6(9)batadv_mcast_mla_rtr_flags_meshif_get(9)batadv_mcast_mla_rtr_flags_bridge_get(9)batadv_mcast_mla_rtr_flags_get(9)batadv_mcast_mla_forw_flags_get(9)batadv_mcast_mla_flags_get(9)batadv_mcast_mla_is_duplicate(9)batadv_mcast_mla_meshif_get_ipv4(9)batadv_mcast_mla_meshif_get_ipv6(9)batadv_mcast_mla_meshif_get(9)batadv_mcast_mla_br_addr_cpy(9)batadv_mcast_mla_bridge_get(9)batadv_mcast_mla_list_free(9)batadv_mcast_mla_tt_retract(9)batadv_mcast_mla_tt_add(9)batadv_mcast_querier_log(9)batadv_mcast_bridge_log(9)batadv_mcast_flags_log(9)batadv_mcast_mla_flags_update(9)__batadv_mcast_mla_update(9)batadv_mcast_mla_update(9)batadv_mcast_is_report_ipv4(9)batadv_mcast_forw_mode_check_ipv4(9)batadv_mcast_is_report_ipv6(9)batadv_mcast_forw_mode_check_ipv6(9)batadv_mcast_forw_mode_check(9)batadv_mcast_forw_want_all_ip_count(9)batadv_mcast_forw_rtr_count(9)batadv_mcast_forw_mode_by_count(9)batadv_mcast_forw_mode(9)batadv_mcast_forw_send_orig(9)batadv_mcast_forw_tt(9)batadv_mcast_forw_want_all_ipv4(9)batadv_mcast_forw_want_all_ipv6(9)batadv_mcast_forw_want_all(9)batadv_mcast_forw_want_all_rtr4(9)batadv_mcast_forw_want_all_rtr6(9)batadv_mcast_forw_want_rtr(9)batadv_mcast_want_unsnoop_update(9)batadv_mcast_want_ipv4_update(9)batadv_mcast_want_ipv6_update(9)batadv_mcast_want_rtr4_update(9)batadv_mcast_want_rtr6_update(9)batadv_mcast_have_mc_ptype_update(9)batadv_mcast_tvlv_flags_get(9)batadv_mcast_tvlv_ogm_handler(9)batadv_mcast_init(9)batadv_mcast_mesh_info_put(9)batadv_mcast_flags_dump_entry(9)batadv_mcast_flags_dump_bucket(9)__batadv_mcast_flags_dump(9)batadv_mcast_netlink_get_primary(9)batadv_mcast_flags_dump(9)batadv_mcast_free(9)batadv_mcast_purge_orig(9)
and that's the page!! this one came out of ./net/batman-adv in October 2026, part of the Kernel API Manual, and it's filed under batadv_mcast_forw_send(9) β mwah, go read the whole multicast.c bestie π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms