net/batman-adv/types.h
Source file repositories/reference/linux-study-clean/net/batman-adv/types.h
File Facts
- System
- Linux kernel
- Corpus path
net/batman-adv/types.h- Extension
.h- Size
- 59771 bytes
- Lines
- 2295
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/average.hlinux/bitops.hlinux/compiler.hlinux/completion.hlinux/if.hlinux/if_ether.hlinux/kref.hlinux/mutex.hlinux/netdevice.hlinux/netlink.hlinux/rhashtable-types.hlinux/sched.hlinux/skbuff.hlinux/spinlock.hlinux/timer.hlinux/types.hlinux/wait.hlinux/workqueue.huapi/linux/batadv_packet.huapi/linux/batman_adv.h
Detected Declarations
struct batadv_ogm_bufstruct batadv_hard_iface_bat_ivstruct batadv_hard_iface_bat_vstruct batadv_wifi_net_device_statestruct batadv_hard_ifacestruct batadv_orig_ifinfo_bat_ivstruct batadv_orig_ifinfostruct batadv_frag_table_entrystruct batadv_frag_list_entrystruct batadv_vlan_ttstruct batadv_orig_node_vlanstruct batadv_orig_bat_ivstruct batadv_orig_nodestruct batadv_gw_nodestruct batadv_hardif_neigh_node_bat_vstruct batadv_hardif_neigh_nodestruct batadv_neigh_nodestruct batadv_neigh_ifinfo_bat_ivstruct batadv_neigh_ifinfo_bat_vstruct batadv_neigh_ifinfostruct batadv_bcast_duplist_entrystruct batadv_priv_ttstruct batadv_priv_blastruct batadv_priv_gwstruct batadv_priv_tvlvstruct batadv_priv_datstruct batadv_mcast_querier_statestruct batadv_mcast_mla_flagsstruct batadv_priv_mcaststruct batadv_tp_unackedstruct batadv_tp_vars_commonstruct batadv_tp_sender_ccstruct batadv_tp_senderstruct batadv_tp_receiverstruct batadv_meshif_vlanstruct batadv_priv_bat_vstruct batadv_privstruct batadv_bla_backbone_gwstruct batadv_bla_claimstruct batadv_tt_common_entrystruct batadv_tt_local_entrystruct batadv_tt_global_entrystruct batadv_tt_orig_list_entrystruct batadv_tt_change_nodestruct batadv_tt_req_nodestruct batadv_tt_roam_nodestruct batadv_skb_cbstruct batadv_forw_packet
Annotated Snippet
struct batadv_ogm_buf {
/** @buf: buffer holding the OGM packet */
void *buf;
/** @len: length of the OGM packet buffer data */
size_t len;
/** @capacity: size of allocated buf */
size_t capacity;
/** @header_length: fixed size header length (must be <= len) */
size_t header_length;
};
/**
* struct batadv_hard_iface_bat_iv - per hard-interface B.A.T.M.A.N. IV data
*/
struct batadv_hard_iface_bat_iv {
/** @ogm_buff: buffer holding the OGM packet */
struct batadv_ogm_buf ogm_buff;
/** @ogm_seqno: OGM sequence number - used to identify each OGM */
atomic_t ogm_seqno;
/** @reschedule_work: recover OGM schedule after schedule error */
struct delayed_work reschedule_work;
/** @ogm_buff_mutex: lock protecting ogm_buff */
struct mutex ogm_buff_mutex;
};
/**
* enum batadv_v_hard_iface_flags - interface flags useful to B.A.T.M.A.N. V
*/
enum batadv_v_hard_iface_flags {
/**
* @BATADV_FULL_DUPLEX: tells if the connection over this link is
* full-duplex
*/
BATADV_FULL_DUPLEX = BIT(0),
/**
* @BATADV_WARNING_DEFAULT: tells whether we have warned the user that
* no throughput data is available for this interface and that default
* values are assumed.
*/
BATADV_WARNING_DEFAULT = BIT(1),
};
/**
* struct batadv_hard_iface_bat_v - per hard-interface B.A.T.M.A.N. V data
*/
struct batadv_hard_iface_bat_v {
/** @elp_interval: time interval between two ELP transmissions */
u32 elp_interval;
/** @elp_seqno: current ELP sequence number */
atomic_t elp_seqno;
/** @elp_skb: base skb containing the ELP message to send */
struct sk_buff *elp_skb;
/** @elp_wq: workqueue used to schedule ELP transmissions */
struct delayed_work elp_wq;
/** @aggr_wq: workqueue used to transmit queued OGM packets */
struct delayed_work aggr_wq;
/** @aggr_list: queue for to be aggregated OGM packets */
struct sk_buff_head aggr_list;
/** @aggr_len: size of the OGM aggregate (excluding ethernet header) */
unsigned int aggr_len;
/**
* @throughput_override: throughput override to disable link
* auto-detection
*/
u32 throughput_override;
/** @flags: interface specific flags */
u8 flags;
};
/**
* enum batadv_hard_iface_wifi_flags - Flags describing the wifi configuration
* of a batadv_hard_iface
*/
enum batadv_hard_iface_wifi_flags {
/** @BATADV_HARDIF_WIFI_WEXT_DIRECT: it is a wext wifi device */
Annotation
- Immediate include surface: `linux/average.h`, `linux/bitops.h`, `linux/compiler.h`, `linux/completion.h`, `linux/if.h`, `linux/if_ether.h`, `linux/kref.h`, `linux/mutex.h`.
- Detected declarations: `struct batadv_ogm_buf`, `struct batadv_hard_iface_bat_iv`, `struct batadv_hard_iface_bat_v`, `struct batadv_wifi_net_device_state`, `struct batadv_hard_iface`, `struct batadv_orig_ifinfo_bat_iv`, `struct batadv_orig_ifinfo`, `struct batadv_frag_table_entry`, `struct batadv_frag_list_entry`, `struct batadv_vlan_tt`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.