STRUCT BATADV_PRIV_GW(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct batadv_priv_gw(9) β€” per mesh interface gateway data

Okay bestie, welcome to the Kernel API Manual ✨ this one's all about struct batadv_priv_gw, aka the lil' bundle of gateway info that lives on every mesh interface. It's giving "backstage pass to the gateway selection drama" and honestly? Iconic. Let's get into it πŸŽ€


✨ SYNOPSIS ✨

struct batadv_priv_gw {
    struct hlist_head gateway_list;
    spinlock_t list_lock;
    struct batadv_gw_node *curr_gw;
    unsigned int generation;
    enum batadv_gw_modes mode;
    u32 sel_class;
    u32 bandwidth_down;
    u32 bandwidth_up;
    atomic_t reselect;
 };

Yes queen, that's the whole struct, copy it exactly, no cap 🫢


🌸 Members 🌸

  • gateway_list β€” the list of all the gateway nodes that are available out there. Basically the group chat roster of gateways πŸ‘‘
  • list_lock β€” the lock that protects gateway_list, curr_gw, and generation. Do not touch those without it, fr fr, that's the whole point πŸ’€
  • curr_gw β€” pointer to the gateway node that's currently selected. The main character of the moment ✨
  • generation β€” the current (generation) sequence number. It's giving "which round of the selection are we on" 🌈
  • mode β€” how the gateway operates: off, client, or server (peep batadv_gw_modes for the deets) πŸ¦‹
  • sel_class β€” the gateway selection class, and yes it only applies if gw_mode is client πŸŽ€
  • bandwidth_down β€” the advertised uplink download bandwidth (only if gw_mode is server) πŸ“
  • bandwidth_up β€” the advertised uplink upload bandwidth (also only if gw_mode is server) πŸ“
  • reselect β€” a bool saying a gateway re-selection is currently in progress. Not me watching the whole thing reshuffle 😭

πŸ‘€ SEE ALSO πŸ‘€

Kernel file ./net/batman-adv/types.h (the mothership πŸ’–), plus this whole star-studded lineup:

  • 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_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)

Go read them, bestie, that's the homework πŸ“šβœ¨ iykyk

And that's the page, mwah πŸ’‹ this cutie came from ./net/batman-adv, dated October 2026, and it's filed under struct batadv_priv_gw(9). Slay, go forth and gateway responsibly πŸ§šβ€β™€οΈπŸ’œ

πŸ“¦ where this page comes from