batadv_mcast_forw_want_all(9)
π batadv_mcast_forw_want_all(9) π
okay so bestie, this is a page from the Kernel API Manual β yes, the big one β and it's all about batadv_mcast_forw_want_all. it's a batman-adv thing. buckle up π¦
β¨ NAME β¨
batadv_mcast_forw_want_all β forward packet to nodes in a want-all list π
πΈ SYNOPSIS πΈ
int batadv_mcast_forw_want_all (struct batadv_priv *bat_priv , struct
sk_buff *skb , unsigned short vid );
like, that's the whole signature. three args. she's compact. periodt β¨
π ARGUMENTS π
bat_privβ the bat priv with all the mesh interface information π«Ά literally the whole vibe of your mesh interface lives in hereskbβ the multicast packet to transmit π¦ the actual lil package that needs to get sent outvidβ the vlan identifier π·οΈ yes, that vlan
π DESCRIPTION π
so this function sends copies of a frame with a multicast destination to any node that has the BATADV_MCAST_WANT_ALL_IPV4 flag set or the BATADV_MCAST_WANT_ALL_IPV6 flag set. any node. all of them. it's giving "you get a packet, you get a packet" energy π
and the way it does it? for each one of those destination nodes, a transmission is performed via a batman-adv unicast packet. the way that it's unicast on the wire but multicast in spiritβ¦ iconic ππ₯
β RETURN β
NET_XMIT_DROPβ if memory allocation fails π or if the protocol family is neither IPv4 nor IPv6 (likeβ¦ pick a lane bestie π)NET_XMIT_SUCCESSβ otherwise π slay
π SEE ALSO π
the kernel file ./net/batman-adv/multicast.c, plus honestly the entire multicast friend group π«Ά here's the full roster, no cap, every single one:
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_rtr4(9)batadv_mcast_forw_want_all_rtr6(9)batadv_mcast_forw_want_rtr(9)batadv_mcast_forw_send(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)
π real talk: iykyk, but also β memory allocation failure returns NET_XMIT_DROP, and so does a protocol family that isn't IPv4 or IPv6. no guessing, that's straight from the source.
okay bye bestie, go read your packets ππ
sign-off check π this one came from ./net/batman-adv, dated October 2026, and it's page batadv_mcast_forw_want_all(9) of the Kernel API Manual. mwah πβ¨
π¦ 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