batadv_mcast_forw_want_rtr(9)
π batadv_mcast_forw_want_rtr β Kernel API Manual realness
Okay so bestie, buckle up, because we're diving into batadv_mcast_forw_want_rtr from the Kernel API Manual, fr fr. This is a batman-adv multicast forwarding function and it's giving "quietly important" main character energy, iykyk. π¦
β¨ NAME β¨
batadv_mcast_forw_want_rtr β forward packet to nodes in a want-all-rtr list
No cap, that's literally the whole vibe. It forwards a packet to the nodes chillin' on the want-all-rtr list. π
πΈ SYNOPSIS πΈ
int batadv_mcast_forw_want_rtr (struct batadv_priv *bat_priv , struct
sk_buff *skb , unsigned short vid );
Three args, one int coming back. Slay. β¨
π ARGUMENTS π
bat_privβ the bat priv with all the mesh interface information. Like, it's the whole registry of mesh interface tea. πskbβ the multicast packet to transmit. This is the actual cargo we're shipping out. π¦vidβ the vlan identifier. Yep, need to know which VLAN we're repping. π·οΈ
π¦ DESCRIPTION π¦
So here's what's happening: this function sends copies of a frame with a multicast destination to any node with a BATADV_MCAST_WANT_NO_RTR4 or BATADV_MCAST_WANT_NO_RTR6 flag unset. Read that again β unset. Those are the nodes that actually want it. π
And the way it does it? A transmission is performed via a batman-adv unicast packet for each such destination node. One copy, one unicast packet, per node. Periodt. π
Not me making sure you caught the "unset" part β if the flag were set, they'd be saying "no thanks, I don't want the router stuff," and they wouldn't be getting a copy. Vibe check passed. β
π₯ RETURN π₯
NET_XMIT_DROPβ returned on memory allocation failure π, or if the protocol family is neither IPv4 nor IPv6. Like, if it's not one of those two, we're not doing it, bestie. πNET_XMIT_SUCCESSβ returned otherwise. That's the win. πβ
π SEE ALSO π
Kernel file ./net/batman-adv/multicast.c, plus this absolute constellation of friends:
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_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)
Okay that's the page!! π«Ά This one came out of ./net/batman-adv in October 2026, and the whole thing is filed under batadv_mcast_forw_want_rtr(9) β go read the friends list, it's lowkey iconic. Go off, kernel docs. πβ¨
π¦ 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