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