batadv_tvlv_...ler_register(9)
π batadv_tvlv_handler_register(9) π
okay so bestie, welcome to the kernel API manual for batadv_tvlv_handler_register β yes the header up top got squished down to batadv_tvlv_...ler_register(9) because it's long, we don't judge, we love a abbreviated queen π
β¨ NAME β¨
batadv_tvlv_handler_register β register a tvlv handler based on the provided type and version (both need to match, no exceptions bestie) for ogm tvlv payload and/or unicast payload π
πΈ SYNOPSIS πΈ
void batadv_tvlv_handler_register (struct batadv_priv *bat_priv , void
(*optr)(struct batadv_priv *bat_priv, struct batadv_orig_node *orig, u8
flags, void *tvlv_value, u16 tvlv_value_len) , int (*uptr)(struct batadv_priv
*bat_priv, u8 *src, u8 *dst, void *tvlv_value, u16 tvlv_value_len) , int
(*mptr)(struct batadv_priv *bat_priv, struct sk_buff *skb) , u8 type , u8
version , u8 flags );
it returns void, so likeβ¦ she doesn't hand you a status back, she just does the thing π
π¦ ARGUMENTS π¦
bat_privβ the bat priv with all the mesh interface information β¨ like, this is the main character struct holding everything you need to know about the mesh interface, periodt.optrβ ogm tvlv handler callback function. This function receives the orig node,flagsand the tvlv content as argument to process π«Ά (yes, the callback gets handed the orig node and the flags and the tvlv content β she's thorough).uptrβ unicast tvlv handler callback function. This function receives the source & destination of the unicast packet as well as the tvlv content to process π so like,src,dst, and the tvlv content all show up to the function.mptrβ multicast packet tvlv handler callback function. This function receives the fullskbto process, with the skb network header pointing to the current tvlv and the skb transport header pointing to the first byte after the current tvlv π₯ (ngl this one is the detail-heavy icon, memorize those two header positions fr fr).typeβ tvlv handler type to be registered π·οΈversionβ tvlv handler version to be registered β (remember: type and version both need to match, that's the whole vibe check from NAME)flagsβ flags to enable or disable TVLV API behavior ποΈ
π SEE ALSO π
kernel file ./net/batman-adv/tvlv.c β and honestly the whole friend group shows up here:
batadv_tvlv_handler_release(9)batadv_tvlv_handler_put(9)batadv_tvlv_handler_get(9)batadv_tvlv_container_release(9)batadv_tvlv_container_put(9)batadv_tvlv_container_get(9)batadv_tvlv_container_list_size(9)batadv_tvlv_container_remove(9)batadv_tvlv_container_unregister(9)batadv_tvlv_container_register(9)batadv_tvlv_realloc_packet_buff(9)batadv_tvlv_container_ogm_append(9)batadv_tvlv_call_handler(9)batadv_tvlv_hdr_next(9)batadv_tvlv_containers_contain(9)batadv_tvlv_containers_process(9)batadv_tvlv_ogm_receive(9)batadv_tvlv_handler_unregister(9)batadv_tvlv_unicast_send(9)
lowkey a whole tvlv cinematic universe going on in ./net/batman-adv π
and that's the page bestie!! this one lives in ./net/batman-adv, dated October 2026, and it's filed under that iconic batadv_tvlv_...ler_register(9) name π go register a handler, slay, and stay hydrated ππ§β¨
π¦ 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