batadv_recv_mcast_packet(9)
π batadv_recv_mcast_packet(9) β the Kernel API Manual page, but make it make sense
okay so bestie, you've stumbled into the Kernel API Manual and the star of the show is batadv_recv_mcast_packet β it's the one that processes a received batman-adv multicast packet. that's literally the whole name. slay. π
β¨ NAME β¨
batadv_recv_mcast_packet β process received batman-adv multicast packet π
no cap, that's it. it takes the multicast packet that just landed and does the processing thing. very main character of it.
π¦ SYNOPSIS π¦
int batadv_recv_mcast_packet (struct sk_buff *skb , struct
batadv_hard_iface *recv_if );
look at that signature. gorgeous. she returns an int, she takes a struct sk_buff * and a struct batadv_hard_iface *. periodt. π
π ARGUMENTS π
skbβ the received batman-adv multicast packet. yes, THE packet, the one we're here for. icon behavior.recv_ifβ interface that the skb is received on. like, which hard interface this whole thing came in through. iykyk.
πΈ DESCRIPTION πΈ
okay so what actually happens: it parses the given, received batman-adv multicast packet. simple enough, right?
but then, depending on the contents of its TVLV, it forwards it and/or decapsulates it to hand it over to the mesh interface. so basically the TVLV is the vibe check β whatever's inside decides whether she forwards, whether she decapsulates, or both. π§ the "and/or" is doing so much work there and honestly? respect it.
β RETURN β
what you get back, bestie:
NET_RX_SUCCESSif the skb was locally received πNET_RX_DROPotherwise π- or a negative errno code when the multicast tracker TVLV could not be processed π
so like, three possible timelines. pick your fighter.
ngl, if you get a negative errno back it's specifically because the multicast tracker TVLV couldn't be processed β that's not a "packet was meh" situation, that's a real problem with the TVLV itself. don't conflate them.
π SEE ALSO π
bestie, this list is LONG and every single one of them is coming to the party. no skips. π«Ά
Kernel file ./net/batman-adv/routing.c, and also:
_batadv_update_route(9)batadv_update_route(9)batadv_window_protected(9)batadv_check_management_packet(9)batadv_skb_decrement_ttl(9)batadv_recv_my_icmp_packet(9)batadv_recv_icmp_ttl_exceeded(9)batadv_recv_icmp_packet(9)batadv_check_unicast_packet(9)batadv_last_bonding_get(9)batadv_last_bonding_replace(9)batadv_find_router(9)batadv_route_unicast_packet(9)batadv_reroute_unicast_packet(9)batadv_check_unicast_ttvn(9)batadv_recv_unhandled_unicast_packet(9)batadv_recv_unicast_packet(9)batadv_recv_unicast_tvlv(9)batadv_recv_frag_packet(9)batadv_recv_bcast_packet(9)
like, go read them. or don't. i'm not your mom. π
π the sign-off π
this lil page lives at ./net/batman-adv, dated October 2026, and it's page batadv_recv_mcast_packet(9) of the Kernel API Manual. go forth and process those multicast packets, bestie. 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