batadv_mcast...w_mode_check(9)
πΈ batadv_mcast_forw_mode_check(9) β the kernel API manual, bestie edition πΈ
okay so this is a page from the kernel API manual (man section 9, kernel internals territory π), and it's all about batadv_mcast_forw_mode_check β a little function that does a vibe check on multicast frames. no cap, it's lowkey important π¦
β¨ NAME β¨
batadv_mcast_forw_mode_check β checks whether there's any optimized-forwarding potential, i.e. whether this frame could slay harder than plain flooding π
β¨ SYNOPSIS β¨
int batadv_mcast_forw_mode_check (struct batadv_priv *bat_priv , struct
sk_buff *skb , bool *is_unsnoopable , int *is_routable );
she takes four args and returns an int, periodt.
β¨ ARGUMENTS β¨
bat_privβ the bat priv, aka the struct holding all the mesh interface info. it's giving main character energy because everything else hangs off of it πskbβ the multicast frame we're checking. the actual vibe in question πis_unsnoopableβ an out-param: it stores whether the destination is snoopable πis_routableβ another out-param: it stores whether the destination is routable π£οΈ
β¨ DESCRIPTION β¨
so what does she actually do? she checks whether the given multicast ethernet frame has the potential to be forwarded with a mode that's more optimal than classic flooding π₯ that's the whole assignment. no extra lore, that's it.
tl;dr: is this frame special enough to forward smarter than just yeeting it everywhere? she finds out π
β¨ RETURN β¨
if so, then 0 β we love a success story π«Ά
otherwise -EINVAL is, or -ENOMEM if we are out of memory π (yes, that's exactly how the original words it β copying the phrasing verbatim because the facts do not change, only the vibe does)
β¨ SEE ALSO β¨
the kernel file lives at ./net/batman-adv/multicast.c, and here's the whole friend group β literally every single one, no skipping, we don't do that here π§
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_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_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)
and that's the whole page, bestie π this cutie comes from the source tree at ./net/batman-adv and the date on the tin is October 2026 β bookmark it, cite it, iykyk βππΈ
π¦ 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