include/uapi/linux/neighbour.h

Source file repositories/reference/linux-study-clean/include/uapi/linux/neighbour.h

File Facts

System
Linux kernel
Corpus path
include/uapi/linux/neighbour.h
Extension
.h
Size
6386 bytes
Lines
230
Domain
Core OS
Bucket
Core Kernel Interface
Inferred role
Core OS: implementation source
Status
source implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ndmsg {
	__u8		ndm_family;
	__u8		ndm_pad1;
	__u16		ndm_pad2;
	__s32		ndm_ifindex;
	__u16		ndm_state;
	__u8		ndm_flags;
	__u8		ndm_type;
};

enum {
	NDA_UNSPEC,
	NDA_DST,
	NDA_LLADDR,
	NDA_CACHEINFO,
	NDA_PROBES,
	NDA_VLAN,
	NDA_PORT,
	NDA_VNI,
	NDA_IFINDEX,
	NDA_MASTER,
	NDA_LINK_NETNSID,
	NDA_SRC_VNI,
	NDA_PROTOCOL,  /* Originator of entry */
	NDA_NH_ID,
	NDA_FDB_EXT_ATTRS,
	NDA_FLAGS_EXT,
	NDA_NDM_STATE_MASK,
	NDA_NDM_FLAGS_MASK,
	__NDA_MAX
};

#define NDA_MAX (__NDA_MAX - 1)

/*
 *	Neighbor Cache Entry Flags
 */

#define NTF_USE		(1 << 0)
#define NTF_SELF	(1 << 1)
#define NTF_MASTER	(1 << 2)
#define NTF_PROXY	(1 << 3)	/* == ATF_PUBL */
#define NTF_EXT_LEARNED	(1 << 4)
#define NTF_OFFLOADED   (1 << 5)
#define NTF_STICKY	(1 << 6)
#define NTF_ROUTER	(1 << 7)
/* Extended flags under NDA_FLAGS_EXT: */
#define NTF_EXT_MANAGED		(1 << 0)
#define NTF_EXT_LOCKED		(1 << 1)
#define NTF_EXT_EXT_VALIDATED	(1 << 2)

/*
 *	Neighbor Cache Entry States.
 */

#define NUD_INCOMPLETE	0x01
#define NUD_REACHABLE	0x02
#define NUD_STALE	0x04
#define NUD_DELAY	0x08
#define NUD_PROBE	0x10
#define NUD_FAILED	0x20

/* Dummy states */
#define NUD_NOARP	0x40
#define NUD_PERMANENT	0x80
#define NUD_NONE	0x00

/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change and make no
 * address resolution or NUD.
 *
 * NUD_PERMANENT also cannot be deleted by garbage collectors. This holds true
 * for dynamic entries with NTF_EXT_LEARNED flag as well. However, upon carrier
 * down event, NUD_PERMANENT entries are not flushed whereas NTF_EXT_LEARNED
 * flagged entries explicitly are (which is also consistent with the routing
 * subsystem).
 *
 * When NTF_EXT_LEARNED is set for a bridge fdb entry the different cache entry
 * states don't make sense and thus are ignored. Such entries don't age and
 * can roam.
 *
 * NTF_EXT_MANAGED flagged neigbor entries are managed by the kernel on behalf
 * of a user space control plane, and automatically refreshed so that (if
 * possible) they remain in NUD_REACHABLE state.
 *
 * NTF_EXT_LOCKED flagged bridge FDB entries are entries generated by the
 * bridge in response to a host trying to communicate via a locked bridge port
 * with MAB enabled. Their purpose is to notify user space that a host requires
 * authentication.
 *
 * NTF_EXT_EXT_VALIDATED flagged neighbor entries were externally validated by

Annotation

Implementation Notes