net/batman-adv/distributed-arp-table.h
Source file repositories/reference/linux-study-clean/net/batman-adv/distributed-arp-table.h
File Facts
- System
- Linux kernel
- Corpus path
net/batman-adv/distributed-arp-table.h- Extension
.h- Size
- 4823 bytes
- Lines
- 187
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
main.hlinux/compiler.hlinux/netdevice.hlinux/netlink.hlinux/skbuff.hlinux/types.huapi/linux/batadv_packet.horiginator.h
Detected Declarations
function batadv_dat_init_orig_node_addrfunction batadv_dat_init_own_addrfunction batadv_dat_inc_counterfunction batadv_dat_status_updatefunction batadv_dat_snoop_incoming_arp_requestfunction batadv_dat_snoop_outgoing_arp_replyfunction batadv_dat_snoop_incoming_arp_replyfunction batadv_dat_snoop_outgoing_dhcp_ackfunction batadv_dat_init_orig_node_addrfunction batadv_dat_freefunction batadv_dat_inc_counter
Annotated Snippet
#ifndef _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
#define _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
#include "main.h"
#include <linux/compiler.h>
#include <linux/netdevice.h>
#include <linux/netlink.h>
#include <linux/skbuff.h>
#include <linux/types.h>
#include <uapi/linux/batadv_packet.h>
#include "originator.h"
#ifdef CONFIG_BATMAN_ADV_DAT
/* BATADV_DAT_ADDR_MAX - maximum address value in the DHT space */
#define BATADV_DAT_ADDR_MAX ((batadv_dat_addr_t)~(batadv_dat_addr_t)0)
void batadv_dat_status_update(struct net_device *net_dev);
bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,
struct sk_buff *skb);
bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,
struct sk_buff *skb, int hdr_size);
void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv,
struct sk_buff *skb);
bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
struct sk_buff *skb, int hdr_size);
void batadv_dat_snoop_outgoing_dhcp_ack(struct batadv_priv *bat_priv,
struct sk_buff *skb,
__be16 proto,
unsigned short vid);
void batadv_dat_snoop_incoming_dhcp_ack(struct batadv_priv *bat_priv,
struct sk_buff *skb, int hdr_size);
bool batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv,
struct batadv_forw_packet *forw_packet);
/**
* batadv_dat_init_orig_node_addr() - assign a DAT address to the orig_node
* @orig_node: the node to assign the DAT address to
*/
static inline void
batadv_dat_init_orig_node_addr(struct batadv_orig_node *orig_node)
{
u32 addr;
addr = batadv_choose_orig(orig_node->orig, BATADV_DAT_ADDR_MAX);
orig_node->dat_addr = (batadv_dat_addr_t)addr;
}
/**
* batadv_dat_init_own_addr() - assign a DAT address to the node itself
* @bat_priv: the bat priv with all the mesh interface information
* @primary_if: a pointer to the primary interface
*/
static inline void
batadv_dat_init_own_addr(struct batadv_priv *bat_priv,
struct batadv_hard_iface *primary_if)
{
u32 addr;
addr = batadv_choose_orig(primary_if->net_dev->dev_addr,
BATADV_DAT_ADDR_MAX);
bat_priv->dat.addr = (batadv_dat_addr_t)addr;
}
int batadv_dat_init(struct batadv_priv *bat_priv);
void batadv_dat_free(struct batadv_priv *bat_priv);
int batadv_dat_cache_dump(struct sk_buff *msg, struct netlink_callback *cb);
/**
* batadv_dat_inc_counter() - increment the correct DAT packet counter
* @bat_priv: the bat priv with all the mesh interface information
* @subtype: the 4addr subtype of the packet to be counted
*
* Updates the ethtool statistics for the received packet if it is a DAT subtype
*/
static inline void batadv_dat_inc_counter(struct batadv_priv *bat_priv,
u8 subtype)
{
switch (subtype) {
case BATADV_P_DAT_DHT_GET:
batadv_inc_counter(bat_priv,
BATADV_CNT_DAT_GET_RX);
break;
case BATADV_P_DAT_DHT_PUT:
batadv_inc_counter(bat_priv,
BATADV_CNT_DAT_PUT_RX);
break;
Annotation
- Immediate include surface: `main.h`, `linux/compiler.h`, `linux/netdevice.h`, `linux/netlink.h`, `linux/skbuff.h`, `linux/types.h`, `uapi/linux/batadv_packet.h`, `originator.h`.
- Detected declarations: `function batadv_dat_init_orig_node_addr`, `function batadv_dat_init_own_addr`, `function batadv_dat_inc_counter`, `function batadv_dat_status_update`, `function batadv_dat_snoop_incoming_arp_request`, `function batadv_dat_snoop_outgoing_arp_reply`, `function batadv_dat_snoop_incoming_arp_reply`, `function batadv_dat_snoop_outgoing_dhcp_ack`, `function batadv_dat_init_orig_node_addr`, `function batadv_dat_free`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
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.