STRUCT BATADV_PRIV_TT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 & unanswered tt_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 protecting changes_list & local_changes. do not touch without the lock, fr fr πŸ”’
  • req_list_lock β€” lock protecting req_list. πŸ”
  • roam_list_lock β€” lock protecting roam_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 a u16 πŸ“
  • last_changeset_lock β€” lock protecting last_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