Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
neighbour.h
Go to the documentation of this file.
1 #ifndef __LINUX_NEIGHBOUR_H
2 #define __LINUX_NEIGHBOUR_H
3 
4 #include <linux/types.h>
5 #include <linux/netlink.h>
6 
7 struct ndmsg {
15 };
16 
17 enum {
24 };
25 
26 #define NDA_MAX (__NDA_MAX - 1)
27 
28 /*
29  * Neighbor Cache Entry Flags
30  */
31 
32 #define NTF_USE 0x01
33 #define NTF_PROXY 0x08 /* == ATF_PUBL */
34 #define NTF_ROUTER 0x80
35 
36 #define NTF_SELF 0x02
37 #define NTF_MASTER 0x04
38 
39 /*
40  * Neighbor Cache Entry States.
41  */
42 
43 #define NUD_INCOMPLETE 0x01
44 #define NUD_REACHABLE 0x02
45 #define NUD_STALE 0x04
46 #define NUD_DELAY 0x08
47 #define NUD_PROBE 0x10
48 #define NUD_FAILED 0x20
49 
50 /* Dummy states */
51 #define NUD_NOARP 0x40
52 #define NUD_PERMANENT 0x80
53 #define NUD_NONE 0x00
54 
55 /* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
56  and make no address resolution or NUD.
57  NUD_PERMANENT is also cannot be deleted by garbage collectors.
58  */
59 
60 struct nda_cacheinfo {
65 };
66 
67 /*****************************************************************
68  * Neighbour tables specific messages.
69  *
70  * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
71  * NLM_F_DUMP flag set. Every neighbour table configuration is
72  * spread over multiple messages to avoid running into message
73  * size limits on systems with many interfaces. The first message
74  * in the sequence transports all not device specific data such as
75  * statistics, configuration, and the default parameter set.
76  * This message is followed by 0..n messages carrying device
77  * specific parameter sets.
78  * Although the ordering should be sufficient, NDTA_NAME can be
79  * used to identify sequences. The initial message can be identified
80  * by checking for NDTA_CONFIG. The device specific messages do
81  * not contain this TLV but have NDTPA_IFINDEX set to the
82  * corresponding interface index.
83  *
84  * To change neighbour table attributes, send RTM_SETNEIGHTBL
85  * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
86  * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
87  * otherwise. Device specific parameter sets can be changed by
88  * setting NDTPA_IFINDEX to the interface index of the corresponding
89  * device.
90  ****/
91 
92 struct ndt_stats {
103 };
104 
105 enum {
107  NDTPA_IFINDEX, /* u32, unchangeable */
108  NDTPA_REFCNT, /* u32, read-only */
109  NDTPA_REACHABLE_TIME, /* u64, read-only, msecs */
110  NDTPA_BASE_REACHABLE_TIME, /* u64, msecs */
111  NDTPA_RETRANS_TIME, /* u64, msecs */
112  NDTPA_GC_STALETIME, /* u64, msecs */
113  NDTPA_DELAY_PROBE_TIME, /* u64, msecs */
114  NDTPA_QUEUE_LEN, /* u32 */
115  NDTPA_APP_PROBES, /* u32 */
118  NDTPA_ANYCAST_DELAY, /* u64, msecs */
119  NDTPA_PROXY_DELAY, /* u64, msecs */
120  NDTPA_PROXY_QLEN, /* u32 */
121  NDTPA_LOCKTIME, /* u64, msecs */
124 };
125 #define NDTPA_MAX (__NDTPA_MAX - 1)
126 
127 struct ndtmsg {
131 };
132 
133 struct ndt_config {
137  __u32 ndtc_last_flush; /* delta to now in msecs */
138  __u32 ndtc_last_rand; /* delta to now in msecs */
143 };
144 
145 enum {
147  NDTA_NAME, /* char *, unchangeable */
148  NDTA_THRESH1, /* u32 */
149  NDTA_THRESH2, /* u32 */
150  NDTA_THRESH3, /* u32 */
151  NDTA_CONFIG, /* struct ndt_config, read-only */
152  NDTA_PARMS, /* nested TLV NDTPA_* */
153  NDTA_STATS, /* struct ndt_stats, read-only */
154  NDTA_GC_INTERVAL, /* u64, msecs */
156 };
157 #define NDTA_MAX (__NDTA_MAX - 1)
158 
159 #endif