xref: /aosp_15_r20/external/iproute2/include/uapi/linux/neighbour.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*de1e4e89SAndroid Build Coastguard Worker #ifndef __LINUX_NEIGHBOUR_H
3*de1e4e89SAndroid Build Coastguard Worker #define __LINUX_NEIGHBOUR_H
4*de1e4e89SAndroid Build Coastguard Worker 
5*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h>
6*de1e4e89SAndroid Build Coastguard Worker #include <linux/netlink.h>
7*de1e4e89SAndroid Build Coastguard Worker 
8*de1e4e89SAndroid Build Coastguard Worker struct ndmsg {
9*de1e4e89SAndroid Build Coastguard Worker 	__u8		ndm_family;
10*de1e4e89SAndroid Build Coastguard Worker 	__u8		ndm_pad1;
11*de1e4e89SAndroid Build Coastguard Worker 	__u16		ndm_pad2;
12*de1e4e89SAndroid Build Coastguard Worker 	__s32		ndm_ifindex;
13*de1e4e89SAndroid Build Coastguard Worker 	__u16		ndm_state;
14*de1e4e89SAndroid Build Coastguard Worker 	__u8		ndm_flags;
15*de1e4e89SAndroid Build Coastguard Worker 	__u8		ndm_type;
16*de1e4e89SAndroid Build Coastguard Worker };
17*de1e4e89SAndroid Build Coastguard Worker 
18*de1e4e89SAndroid Build Coastguard Worker enum {
19*de1e4e89SAndroid Build Coastguard Worker 	NDA_UNSPEC,
20*de1e4e89SAndroid Build Coastguard Worker 	NDA_DST,
21*de1e4e89SAndroid Build Coastguard Worker 	NDA_LLADDR,
22*de1e4e89SAndroid Build Coastguard Worker 	NDA_CACHEINFO,
23*de1e4e89SAndroid Build Coastguard Worker 	NDA_PROBES,
24*de1e4e89SAndroid Build Coastguard Worker 	NDA_VLAN,
25*de1e4e89SAndroid Build Coastguard Worker 	NDA_PORT,
26*de1e4e89SAndroid Build Coastguard Worker 	NDA_VNI,
27*de1e4e89SAndroid Build Coastguard Worker 	NDA_IFINDEX,
28*de1e4e89SAndroid Build Coastguard Worker 	NDA_MASTER,
29*de1e4e89SAndroid Build Coastguard Worker 	NDA_LINK_NETNSID,
30*de1e4e89SAndroid Build Coastguard Worker 	NDA_SRC_VNI,
31*de1e4e89SAndroid Build Coastguard Worker 	__NDA_MAX
32*de1e4e89SAndroid Build Coastguard Worker };
33*de1e4e89SAndroid Build Coastguard Worker 
34*de1e4e89SAndroid Build Coastguard Worker #define NDA_MAX (__NDA_MAX - 1)
35*de1e4e89SAndroid Build Coastguard Worker 
36*de1e4e89SAndroid Build Coastguard Worker /*
37*de1e4e89SAndroid Build Coastguard Worker  *	Neighbor Cache Entry Flags
38*de1e4e89SAndroid Build Coastguard Worker  */
39*de1e4e89SAndroid Build Coastguard Worker 
40*de1e4e89SAndroid Build Coastguard Worker #define NTF_USE		0x01
41*de1e4e89SAndroid Build Coastguard Worker #define NTF_SELF	0x02
42*de1e4e89SAndroid Build Coastguard Worker #define NTF_MASTER	0x04
43*de1e4e89SAndroid Build Coastguard Worker #define NTF_PROXY	0x08	/* == ATF_PUBL */
44*de1e4e89SAndroid Build Coastguard Worker #define NTF_EXT_LEARNED	0x10
45*de1e4e89SAndroid Build Coastguard Worker #define NTF_OFFLOADED   0x20
46*de1e4e89SAndroid Build Coastguard Worker #define NTF_ROUTER	0x80
47*de1e4e89SAndroid Build Coastguard Worker 
48*de1e4e89SAndroid Build Coastguard Worker /*
49*de1e4e89SAndroid Build Coastguard Worker  *	Neighbor Cache Entry States.
50*de1e4e89SAndroid Build Coastguard Worker  */
51*de1e4e89SAndroid Build Coastguard Worker 
52*de1e4e89SAndroid Build Coastguard Worker #define NUD_INCOMPLETE	0x01
53*de1e4e89SAndroid Build Coastguard Worker #define NUD_REACHABLE	0x02
54*de1e4e89SAndroid Build Coastguard Worker #define NUD_STALE	0x04
55*de1e4e89SAndroid Build Coastguard Worker #define NUD_DELAY	0x08
56*de1e4e89SAndroid Build Coastguard Worker #define NUD_PROBE	0x10
57*de1e4e89SAndroid Build Coastguard Worker #define NUD_FAILED	0x20
58*de1e4e89SAndroid Build Coastguard Worker 
59*de1e4e89SAndroid Build Coastguard Worker /* Dummy states */
60*de1e4e89SAndroid Build Coastguard Worker #define NUD_NOARP	0x40
61*de1e4e89SAndroid Build Coastguard Worker #define NUD_PERMANENT	0x80
62*de1e4e89SAndroid Build Coastguard Worker #define NUD_NONE	0x00
63*de1e4e89SAndroid Build Coastguard Worker 
64*de1e4e89SAndroid Build Coastguard Worker /* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
65*de1e4e89SAndroid Build Coastguard Worker    and make no address resolution or NUD.
66*de1e4e89SAndroid Build Coastguard Worker    NUD_PERMANENT also cannot be deleted by garbage collectors.
67*de1e4e89SAndroid Build Coastguard Worker  */
68*de1e4e89SAndroid Build Coastguard Worker 
69*de1e4e89SAndroid Build Coastguard Worker struct nda_cacheinfo {
70*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndm_confirmed;
71*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndm_used;
72*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndm_updated;
73*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndm_refcnt;
74*de1e4e89SAndroid Build Coastguard Worker };
75*de1e4e89SAndroid Build Coastguard Worker 
76*de1e4e89SAndroid Build Coastguard Worker /*****************************************************************
77*de1e4e89SAndroid Build Coastguard Worker  *		Neighbour tables specific messages.
78*de1e4e89SAndroid Build Coastguard Worker  *
79*de1e4e89SAndroid Build Coastguard Worker  * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
80*de1e4e89SAndroid Build Coastguard Worker  * NLM_F_DUMP flag set. Every neighbour table configuration is
81*de1e4e89SAndroid Build Coastguard Worker  * spread over multiple messages to avoid running into message
82*de1e4e89SAndroid Build Coastguard Worker  * size limits on systems with many interfaces. The first message
83*de1e4e89SAndroid Build Coastguard Worker  * in the sequence transports all not device specific data such as
84*de1e4e89SAndroid Build Coastguard Worker  * statistics, configuration, and the default parameter set.
85*de1e4e89SAndroid Build Coastguard Worker  * This message is followed by 0..n messages carrying device
86*de1e4e89SAndroid Build Coastguard Worker  * specific parameter sets.
87*de1e4e89SAndroid Build Coastguard Worker  * Although the ordering should be sufficient, NDTA_NAME can be
88*de1e4e89SAndroid Build Coastguard Worker  * used to identify sequences. The initial message can be identified
89*de1e4e89SAndroid Build Coastguard Worker  * by checking for NDTA_CONFIG. The device specific messages do
90*de1e4e89SAndroid Build Coastguard Worker  * not contain this TLV but have NDTPA_IFINDEX set to the
91*de1e4e89SAndroid Build Coastguard Worker  * corresponding interface index.
92*de1e4e89SAndroid Build Coastguard Worker  *
93*de1e4e89SAndroid Build Coastguard Worker  * To change neighbour table attributes, send RTM_SETNEIGHTBL
94*de1e4e89SAndroid Build Coastguard Worker  * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
95*de1e4e89SAndroid Build Coastguard Worker  * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
96*de1e4e89SAndroid Build Coastguard Worker  * otherwise. Device specific parameter sets can be changed by
97*de1e4e89SAndroid Build Coastguard Worker  * setting NDTPA_IFINDEX to the interface index of the corresponding
98*de1e4e89SAndroid Build Coastguard Worker  * device.
99*de1e4e89SAndroid Build Coastguard Worker  ****/
100*de1e4e89SAndroid Build Coastguard Worker 
101*de1e4e89SAndroid Build Coastguard Worker struct ndt_stats {
102*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_allocs;
103*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_destroys;
104*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_hash_grows;
105*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_res_failed;
106*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_lookups;
107*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_hits;
108*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_rcv_probes_mcast;
109*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_rcv_probes_ucast;
110*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_periodic_gc_runs;
111*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_forced_gc_runs;
112*de1e4e89SAndroid Build Coastguard Worker 	__u64		ndts_table_fulls;
113*de1e4e89SAndroid Build Coastguard Worker };
114*de1e4e89SAndroid Build Coastguard Worker 
115*de1e4e89SAndroid Build Coastguard Worker enum {
116*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_UNSPEC,
117*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_IFINDEX,			/* u32, unchangeable */
118*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_REFCNT,			/* u32, read-only */
119*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_REACHABLE_TIME,		/* u64, read-only, msecs */
120*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_BASE_REACHABLE_TIME,	/* u64, msecs */
121*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_RETRANS_TIME,		/* u64, msecs */
122*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_GC_STALETIME,		/* u64, msecs */
123*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_DELAY_PROBE_TIME,		/* u64, msecs */
124*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_QUEUE_LEN,		/* u32 */
125*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_APP_PROBES,		/* u32 */
126*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_UCAST_PROBES,		/* u32 */
127*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_MCAST_PROBES,		/* u32 */
128*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_ANYCAST_DELAY,		/* u64, msecs */
129*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_PROXY_DELAY,		/* u64, msecs */
130*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_PROXY_QLEN,		/* u32 */
131*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_LOCKTIME,			/* u64, msecs */
132*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_QUEUE_LENBYTES,		/* u32 */
133*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_MCAST_REPROBES,		/* u32 */
134*de1e4e89SAndroid Build Coastguard Worker 	NDTPA_PAD,
135*de1e4e89SAndroid Build Coastguard Worker 	__NDTPA_MAX
136*de1e4e89SAndroid Build Coastguard Worker };
137*de1e4e89SAndroid Build Coastguard Worker #define NDTPA_MAX (__NDTPA_MAX - 1)
138*de1e4e89SAndroid Build Coastguard Worker 
139*de1e4e89SAndroid Build Coastguard Worker struct ndtmsg {
140*de1e4e89SAndroid Build Coastguard Worker 	__u8		ndtm_family;
141*de1e4e89SAndroid Build Coastguard Worker 	__u8		ndtm_pad1;
142*de1e4e89SAndroid Build Coastguard Worker 	__u16		ndtm_pad2;
143*de1e4e89SAndroid Build Coastguard Worker };
144*de1e4e89SAndroid Build Coastguard Worker 
145*de1e4e89SAndroid Build Coastguard Worker struct ndt_config {
146*de1e4e89SAndroid Build Coastguard Worker 	__u16		ndtc_key_len;
147*de1e4e89SAndroid Build Coastguard Worker 	__u16		ndtc_entry_size;
148*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_entries;
149*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_last_flush;	/* delta to now in msecs */
150*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_last_rand;		/* delta to now in msecs */
151*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_hash_rnd;
152*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_hash_mask;
153*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_hash_chain_gc;
154*de1e4e89SAndroid Build Coastguard Worker 	__u32		ndtc_proxy_qlen;
155*de1e4e89SAndroid Build Coastguard Worker };
156*de1e4e89SAndroid Build Coastguard Worker 
157*de1e4e89SAndroid Build Coastguard Worker enum {
158*de1e4e89SAndroid Build Coastguard Worker 	NDTA_UNSPEC,
159*de1e4e89SAndroid Build Coastguard Worker 	NDTA_NAME,			/* char *, unchangeable */
160*de1e4e89SAndroid Build Coastguard Worker 	NDTA_THRESH1,			/* u32 */
161*de1e4e89SAndroid Build Coastguard Worker 	NDTA_THRESH2,			/* u32 */
162*de1e4e89SAndroid Build Coastguard Worker 	NDTA_THRESH3,			/* u32 */
163*de1e4e89SAndroid Build Coastguard Worker 	NDTA_CONFIG,			/* struct ndt_config, read-only */
164*de1e4e89SAndroid Build Coastguard Worker 	NDTA_PARMS,			/* nested TLV NDTPA_* */
165*de1e4e89SAndroid Build Coastguard Worker 	NDTA_STATS,			/* struct ndt_stats, read-only */
166*de1e4e89SAndroid Build Coastguard Worker 	NDTA_GC_INTERVAL,		/* u64, msecs */
167*de1e4e89SAndroid Build Coastguard Worker 	NDTA_PAD,
168*de1e4e89SAndroid Build Coastguard Worker 	__NDTA_MAX
169*de1e4e89SAndroid Build Coastguard Worker };
170*de1e4e89SAndroid Build Coastguard Worker #define NDTA_MAX (__NDTA_MAX - 1)
171*de1e4e89SAndroid Build Coastguard Worker 
172*de1e4e89SAndroid Build Coastguard Worker #endif
173