batadv_mcast...tvlv_handler(9)
π batadv_mcast...tvlv_handler(9) π
okay bestie, so this is a page from the Kernel API Manual β the batadv_mcast...tvlv_handler(9) one β and it's genuinely one of those little functions that does a LOT of heavy lifting, so let's get into it π«Ά
β¨ NAME β¨
batadv_mcast_forw_tracker_tvlv_handler β literally handles an mcast tracker tvlv. that's the whole vibe π
πΈ SYNOPSIS πΈ
int batadv_mcast_forw_tracker_tvlv_handler (struct batadv_priv *bat_priv
, struct sk_buff *skb );
π ARGUMENTS π
bat_privβ the bat priv, aka the glow-up container holding all the mesh interface information πskbβ the received batman-adv multicast packet, freshly arrived, main character energy β
π¦ DESCRIPTION π¦
so what it actually does: it parses the tracker TVLV of an incoming batman-adv multicast packet, and then forwards the packet exactly as that TVLV says to. no cap, it just reads the vibe check and sends it on β¨
now the important part β the contract with whoever's calling this (that's you, bestie, so listen up π):
- the caller needs to set the skb network header to the start of the multicast tracker TVLV β and that's excluding the generic TVLV header, k? π
- the caller also needs to set the skb transport header to the next byte after this multicast tracker TVLV π―
- and the caller needs to free the skb. yes, that's on you. don't leave it hanging π
π₯ RETURN π₯
so it returns NET_RX_SUCCESS or NET_RX_DROP on success, or a negative error code on failure π
and the tea on the two success-ish ones:
NET_RX_SUCCESSβ the received packet is supposed to be decapsulated and forwarded to the own mesh interface π₯³NET_RX_DROPβ otherwise. it's getting dropped, bestie, that's just how it is π
π SEE ALSO π
go look at the actual kernel file, it's right here:
./net/batman-adv/multicast_forw.c
and then the whole squad of sibling functions, all of them, every single one, because they're all iconic in their own way π:
batadv_mcast_forw_skb_push(9)batadv_mcast_forw_push_padding(9)batadv_mcast_forw_push_est_padding(9)batadv_mcast_forw_orig_entry(9)batadv_mcast_forw_push_dest(9)batadv_mcast_forw_push_dests_list(9)batadv_mcast_forw_push_tt(9)batadv_mcast_forw_push_want_all(9)batadv_mcast_forw_push_want_rtr(9)batadv_mcast_forw_scrape(9)batadv_mcast_forw_push_scrape_padding(9)batadv_mcast_forw_push_insert_padding(9)batadv_mcast_forw_push_adjust_padding(9)batadv_mcast_forw_push_dests(9)batadv_mcast_forw_push_tracker(9)batadv_mcast_forw_push_tvlvs(9)batadv_mcast_forw_push_hdr(9)batadv_mcast_forw_scrub_dests(9)batadv_mcast_forw_shrink_fill(9)batadv_mcast_forw_shrink_pack_dests(9)batadv_mcast_forw_shrink_align_offset(9)batadv_mcast_forw_shrink_update_headers(9)batadv_mcast_forw_shrink_move_headers(9)batadv_mcast_forw_shrink_tracker(9)batadv_mcast_forw_packet(9)batadv_mcast_forw_packet_hdrlen(9)batadv_mcast_forw_expand_head(9)batadv_mcast_forw_push(9)batadv_mcast_forw_mcsend(9)
ngl that's a long list but every one of them is doing something, so go read them, iykyk π§
mwah π that's the page β brought to you by the fine folks at ./net/batman-adv, dated October 2026, and yes this whole thing is batadv_mcast...tvlv_handler(9) and it ate π
β¨
π¦ 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