STRUCT BATADV_PRIV_TT(9)
π struct batadv_priv_tt(9) π
okay so bestie, welcome to the kernel API manual for struct batadv_priv_tt β it's the per mesh interface translation table data, and honestly it's giving very main character energy in the batman-adv world. let's get into it π¦
β¨ NAME β¨
struct batadv_priv_tt β per mesh interface translation table data π
πΈ SYNOPSIS πΈ
struct batadv_priv_tt {
atomic_t vn;
atomic_t ogm_append_cnt;
size_t local_changes;
struct list_head changes_list;
struct batadv_hashtable *local_hash;
struct batadv_hashtable *global_hash;
struct hlist_head req_list;
struct list_head roam_list;
spinlock_t changes_list_lock;
spinlock_t req_list_lock;
spinlock_t roam_list_lock;
unsigned char *last_changeset;
u16 last_changeset_len;
spinlock_t last_changeset_lock;
spinlock_t commit_lock;
struct delayed_work work;
};
look at her. seventeen fields. absolutely iconic behavior π
π MEMBERS π
vnβ the translation table version number. it's literally the vibe check number for the whole table β¨ogm_append_cntβ a counter of the number of OGMs containing the local tt diff. keeping count, no cap πlocal_changesβ the changes registered in an originator interval. lowkey tracking everything you did this round π«Άchanges_listβ tracks tt local changes within an originator interval. it's the receipts list for this window π§Ύlocal_hashβ the local translation table hash table. your home turf πΈglobal_hashβ the global translation table hash table. the whole wide mesh πreq_listβ list of pending & unansweredtt_requests. the "left on read" pile πroam_listβ list of the last roaming events of each client, and it limits the number of roaming events to avoid route flapping. she's setting boundaries so nobody flips out π¦changes_list_lockβ lock protectingchanges_list&local_changes. do not touch without the lock, fr fr πreq_list_lockβ lock protectingreq_list. πroam_list_lockβ lock protectingroam_list. ποΈlast_changesetβ the last tt changeset this host has generated. proud of her output ngl β¨last_changeset_lenβ the length of the last tt changeset this host has generated. yes, size matters, it's au16πlast_changeset_lockβ lock protectinglast_changeset&last_changeset_len. πcommit_lockβ this one prevents from executing a local TT commit while reading the local table. the local TT commit is made up of two operations (data structure update and metadata -CRC/TTVN- recalculation) and they have to be executed atomically in order to avoid another thread to read the table/metadata between those. that's right β atomically, bestie, no sneaky mid-commit reads allowed ππ₯workβ work queue callback item for translation table purging. she cleans up on a delay, on brand π§Ή
π«Ά SEE ALSO π«Ά
Kernel file ./net/batman-adv/types.h, plus this whole friend group right here:
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_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_priv_mcast(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)
that's the whole list, bestie β every single one of them, no skips, iykyk π«Ά
and that's a wrap! π this page lives under ./net/batman-adv, and it's dated October 2026 β so yes, she's from the future, and she 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