STRUCT BATADV_BLA_BACKBONE_GW(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 struct batadv_bla_backbone_gw(9) 🌸

okay so this is a page from the Kernel API Manual β€” it's struct batadv_bla_backbone_gw(9), and it's literally the whole vibe of a batman-adv gateway that's bridged into the LAN. bestie, let's get into it πŸ’…


✨ NAME ✨

struct batadv_bla_backbone_gw β€” a batman-adv gateway bridged into the LAN. that's the whole thing. iconic. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct batadv_bla_backbone_gw {
    u8 orig[ETH_ALEN];
    unsigned short vid;
    struct hlist_node hash_entry;
    struct batadv_priv *bat_priv;
    unsigned long lasttime;
    u8 wait_periods;
    enum batadv_bla_backbone_gw_state state;
    u16 crc;
    spinlock_t crc_lock;
    struct work_struct report_work;
    struct kref refcount;
    struct rcu_head rcu;
 };

look at her. main character struct energy, no cap. πŸ‘‘


πŸ’– Members πŸ’–

okay so every single field, one by one, let's go 🫢

  • orig β€” the originator address of the backbone node, aka the mac address of the primary iface. that's the whole identity bestie.
  • vid β€” the vlan id this gateway was detected on ✨
  • hash_entry β€” the hlist node for batadv_priv_bla.backbone_hash. it's giving "where do i live in the list."
  • bat_priv β€” pointer to the mesh_iface this backbone gateway belongs to πŸ’œ
  • lasttime β€” the last time we heard of this backbone gw. like, last seen. no news is bad news fr fr.
  • wait_periods β€” grace time for bridge forward delays and bla group forming at bootup phase. no bcast traffic is formwared until it has elapsed. Must only be access with num_requests_lock. 😭 (yes, that's the exact wording, i'm not fixing it, it's part of her lore)
  • state β€” sync state. Must only be access with num_requests_lock. same lock, same rules, periodt.
  • crc β€” crc16 checksum over all claims 🧚
  • crc_lock β€” lock protecting crc. size small, job big.
  • report_work β€” work struct for reporting detected loops πŸ”₯
  • refcount β€” number of contexts the object is used. the popular girl counter.
  • rcu β€” struct used for freeing in an RCU-safe manner 🌈

⭐ SEE ALSO ⭐

Kernel file ./net/batman-adv/types.h β€” and honestly? the whole friend group is here. every single one, in order, no skipping, i don't make the rules πŸ’€

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_tt(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_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)

like i said. the whole friend group. 🫢✨


ngl, if you're touching wait_periods or state without num_requests_lock, that's not a look. the page says it twice for a reason, and it means it both times. πŸ™ˆ

πŸ¦‹ mwah, that's the page! this one lives in ./net/batman-adv, dated October 2026, and it's part of the Kernel API Manual β€” go off, king. πŸ’–πŸŽ€πŸŒΈ

πŸ“¦ where this page comes from