STRUCT BATADV_PRIV_MCAST(9)
πΈ struct batadv_priv_mcast(9) πΈ
okay so this is from the Kernel API Manual, and it's literally the per mesh interface mcast data situation β yes that's the whole vibe, bestie. it's the struct that holds all the multicast bookkeeping for a mesh interface. buckle up π
β¨ SYNOPSIS β¨
struct batadv_priv_mcast {
struct hlist_head mla_list;
struct hlist_head want_all_unsnoopables_list;
struct hlist_head want_all_ipv4_list;
struct hlist_head want_all_ipv6_list;
struct hlist_head want_all_rtr4_list;
struct hlist_head want_all_rtr6_list;
struct batadv_mcast_mla_flags mla_flags;
spinlock_t mla_lock;
atomic_t num_want_all_unsnoopables;
atomic_t num_want_all_ipv4;
atomic_t num_want_all_ipv6;
atomic_t num_want_all_rtr4;
atomic_t num_want_all_rtr6;
atomic_t num_no_mc_ptype_capa;
spinlock_t want_lists_lock;
struct delayed_work work;
};
like, just look at it. it's giving organized. it's giving listener energy. π
π¦ Members π¦
okay so member by member, no skips, no cap:
mla_listβ the list of multicast addresses we're currently announcing via TT. our little announcement roster πwant_all_unsnoopables_listβ a list of orig_nodes wanting all unsnoopable multicast traffic. they want everything unsnoopable, iconic honestly.want_all_ipv4_listβ a list of orig_nodes wanting all IPv4 multicast trafficwant_all_ipv6_listβ a list of orig_nodes wanting all IPv6 multicast trafficwant_all_rtr4_listβ a list of orig_nodes wanting all routable IPv4 multicast trafficwant_all_rtr6_listβ a list of orig_nodes wanting all routable IPv6 multicast trafficmla_flagsβ flags for the querier, bridge and tvlv state. the state-of-mind flags π§mla_lockβ a lock protectingmla_listandmla_flags. protect the babies!!num_want_all_unsnoopablesβ number of nodes wanting unsnoopable IP trafficnum_want_all_ipv4β counter for items inwant_all_ipv4_listnum_want_all_ipv6β counter for items inwant_all_ipv6_listnum_want_all_rtr4β counter for items inwant_all_rtr4_listnum_want_all_rtr6β counter for items inwant_all_rtr6_listnum_no_mc_ptype_capaβ counter for number of nodes without theBATADV_MCAST_HAVE_MC_PTYPE_CAPAflag. not me being the node without the flag πwant_lists_lockβ lock for protecting modifications to mcastswant_all_{unsnoopables,ipv4,ipv6}_list(traversals are rcu-locked). note the curly braces, they're doing the work for us π«Άworkβ work queue callback item for multicast TT and TVLV updates. the little worker bee π
lowkey important: traversals are rcu-locked while this lock covers the modifications β don't mix those up, that's the whole point of the parenthetical, bestie.
π SEE ALSO π
Kernel file ./net/batman-adv/types.h, plus the entire extended friend group:
batadv_dat_addr_t(9)enum batadv_dhcp_recipient(9)BATADV_TT_REMOTE_MASK(9)BATADV_TT_SYNC_MASK(9)struct batadv_ogm_buf(9)struct batadv_hard_iface_bat_iv(9)enum batadv_v_hard_iface_flags(9)struct batadv_hard_iface_bat_v(9)enum batadv_hard_iface_wifi_flags(9)struct batadv_wifi_net_device_state(9)struct batadv_hard_iface(9)struct batadv_orig_ifinfo_bat_iv(9)struct batadv_orig_ifinfo(9)struct batadv_frag_table_entry(9)struct batadv_frag_list_entry(9)struct batadv_vlan_tt(9)struct batadv_orig_node_vlan(9)struct batadv_orig_bat_iv(9)struct batadv_orig_node(9)enum batadv_orig_capabilities(9)struct batadv_gw_node(9)struct batadv_hardif_neigh_node_bat_v(9)struct batadv_hardif_neigh_node(9)struct batadv_neigh_node(9)struct batadv_neigh_ifinfo_bat_iv(9)struct batadv_neigh_ifinfo_bat_v(9)struct batadv_neigh_ifinfo(9)struct batadv_bcast_duplist_entry(9)enum batadv_counters(9)struct batadv_priv_tt(9)struct batadv_priv_bla(9)struct batadv_priv_gw(9)struct batadv_priv_tvlv(9)struct batadv_priv_dat(9)struct batadv_mcast_querier_state(9)struct batadv_mcast_mla_flags(9)struct batadv_tp_unacked(9)struct batadv_tp_vars_common(9)struct batadv_tp_sender_cc(9)struct batadv_tp_sender(9)struct batadv_tp_receiver(9)struct batadv_meshif_vlan(9)struct batadv_priv_bat_v(9)struct batadv_priv(9)enum batadv_bla_backbone_gw_state(9)struct batadv_bla_backbone_gw(9)struct batadv_bla_claim(9)struct batadv_tt_common_entry(9)struct batadv_tt_local_entry(9)struct batadv_tt_global_entry(9)struct batadv_tt_orig_list_entry(9)struct batadv_tt_change_node(9)struct batadv_tt_req_node(9)struct batadv_tt_roam_node(9)struct batadv_skb_cb(9)struct batadv_forw_packet(9)struct batadv_algo_iface_ops(9)struct batadv_algo_neigh_ops(9)struct batadv_algo_orig_ops(9)struct batadv_algo_gw_ops(9)struct batadv_algo_ops(9)struct batadv_dat_entry(9)struct batadv_hw_addr(9)struct batadv_dat_candidate(9)struct batadv_tvlv_container(9)struct batadv_tvlv_handler(9)enum batadv_tvlv_handler_flags(9)
and that's the whole page, bestie, we ate and left no crumbs π β¨
source/version is ./net/batman-adv and it's dated October 2026, so yeah β go read the rest of the manual, struct batadv_priv_mcast(9) out π«Άπ
π¦ 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