diff options
author | David Howells <dhowells@redhat.com> | 2012-10-13 05:46:48 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2012-10-13 05:46:48 -0400 |
commit | 607ca46e97a1b6594b29647d98a32d545c24bdff (patch) | |
tree | 30f4c0784bfddb57332cdc0678bd06d1e77fa185 /include/linux/rtnetlink.h | |
parent | 08cce05c5a91f5017f4edc9866cf026908c73f9f (diff) |
UAPI: (Scripted) Disintegrate include/linux
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Dave Jones <davej@redhat.com>
Diffstat (limited to 'include/linux/rtnetlink.h')
-rw-r--r-- | include/linux/rtnetlink.h | 611 |
1 files changed, 1 insertions, 610 deletions
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index db71c4ad8624..7002bbfd5d4a 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h | |||
@@ -1,616 +1,10 @@ | |||
1 | #ifndef __LINUX_RTNETLINK_H | 1 | #ifndef __LINUX_RTNETLINK_H |
2 | #define __LINUX_RTNETLINK_H | 2 | #define __LINUX_RTNETLINK_H |
3 | 3 | ||
4 | #include <linux/types.h> | ||
5 | #include <linux/netlink.h> | ||
6 | #include <linux/if_link.h> | ||
7 | #include <linux/if_addr.h> | ||
8 | #include <linux/neighbour.h> | ||
9 | |||
10 | /* rtnetlink families. Values up to 127 are reserved for real address | ||
11 | * families, values above 128 may be used arbitrarily. | ||
12 | */ | ||
13 | #define RTNL_FAMILY_IPMR 128 | ||
14 | #define RTNL_FAMILY_IP6MR 129 | ||
15 | #define RTNL_FAMILY_MAX 129 | ||
16 | |||
17 | /**** | ||
18 | * Routing/neighbour discovery messages. | ||
19 | ****/ | ||
20 | |||
21 | /* Types of messages */ | ||
22 | |||
23 | enum { | ||
24 | RTM_BASE = 16, | ||
25 | #define RTM_BASE RTM_BASE | ||
26 | |||
27 | RTM_NEWLINK = 16, | ||
28 | #define RTM_NEWLINK RTM_NEWLINK | ||
29 | RTM_DELLINK, | ||
30 | #define RTM_DELLINK RTM_DELLINK | ||
31 | RTM_GETLINK, | ||
32 | #define RTM_GETLINK RTM_GETLINK | ||
33 | RTM_SETLINK, | ||
34 | #define RTM_SETLINK RTM_SETLINK | ||
35 | |||
36 | RTM_NEWADDR = 20, | ||
37 | #define RTM_NEWADDR RTM_NEWADDR | ||
38 | RTM_DELADDR, | ||
39 | #define RTM_DELADDR RTM_DELADDR | ||
40 | RTM_GETADDR, | ||
41 | #define RTM_GETADDR RTM_GETADDR | ||
42 | |||
43 | RTM_NEWROUTE = 24, | ||
44 | #define RTM_NEWROUTE RTM_NEWROUTE | ||
45 | RTM_DELROUTE, | ||
46 | #define RTM_DELROUTE RTM_DELROUTE | ||
47 | RTM_GETROUTE, | ||
48 | #define RTM_GETROUTE RTM_GETROUTE | ||
49 | |||
50 | RTM_NEWNEIGH = 28, | ||
51 | #define RTM_NEWNEIGH RTM_NEWNEIGH | ||
52 | RTM_DELNEIGH, | ||
53 | #define RTM_DELNEIGH RTM_DELNEIGH | ||
54 | RTM_GETNEIGH, | ||
55 | #define RTM_GETNEIGH RTM_GETNEIGH | ||
56 | |||
57 | RTM_NEWRULE = 32, | ||
58 | #define RTM_NEWRULE RTM_NEWRULE | ||
59 | RTM_DELRULE, | ||
60 | #define RTM_DELRULE RTM_DELRULE | ||
61 | RTM_GETRULE, | ||
62 | #define RTM_GETRULE RTM_GETRULE | ||
63 | |||
64 | RTM_NEWQDISC = 36, | ||
65 | #define RTM_NEWQDISC RTM_NEWQDISC | ||
66 | RTM_DELQDISC, | ||
67 | #define RTM_DELQDISC RTM_DELQDISC | ||
68 | RTM_GETQDISC, | ||
69 | #define RTM_GETQDISC RTM_GETQDISC | ||
70 | |||
71 | RTM_NEWTCLASS = 40, | ||
72 | #define RTM_NEWTCLASS RTM_NEWTCLASS | ||
73 | RTM_DELTCLASS, | ||
74 | #define RTM_DELTCLASS RTM_DELTCLASS | ||
75 | RTM_GETTCLASS, | ||
76 | #define RTM_GETTCLASS RTM_GETTCLASS | ||
77 | |||
78 | RTM_NEWTFILTER = 44, | ||
79 | #define RTM_NEWTFILTER RTM_NEWTFILTER | ||
80 | RTM_DELTFILTER, | ||
81 | #define RTM_DELTFILTER RTM_DELTFILTER | ||
82 | RTM_GETTFILTER, | ||
83 | #define RTM_GETTFILTER RTM_GETTFILTER | ||
84 | |||
85 | RTM_NEWACTION = 48, | ||
86 | #define RTM_NEWACTION RTM_NEWACTION | ||
87 | RTM_DELACTION, | ||
88 | #define RTM_DELACTION RTM_DELACTION | ||
89 | RTM_GETACTION, | ||
90 | #define RTM_GETACTION RTM_GETACTION | ||
91 | |||
92 | RTM_NEWPREFIX = 52, | ||
93 | #define RTM_NEWPREFIX RTM_NEWPREFIX | ||
94 | |||
95 | RTM_GETMULTICAST = 58, | ||
96 | #define RTM_GETMULTICAST RTM_GETMULTICAST | ||
97 | |||
98 | RTM_GETANYCAST = 62, | ||
99 | #define RTM_GETANYCAST RTM_GETANYCAST | ||
100 | |||
101 | RTM_NEWNEIGHTBL = 64, | ||
102 | #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL | ||
103 | RTM_GETNEIGHTBL = 66, | ||
104 | #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL | ||
105 | RTM_SETNEIGHTBL, | ||
106 | #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL | ||
107 | |||
108 | RTM_NEWNDUSEROPT = 68, | ||
109 | #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT | ||
110 | |||
111 | RTM_NEWADDRLABEL = 72, | ||
112 | #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL | ||
113 | RTM_DELADDRLABEL, | ||
114 | #define RTM_DELADDRLABEL RTM_DELADDRLABEL | ||
115 | RTM_GETADDRLABEL, | ||
116 | #define RTM_GETADDRLABEL RTM_GETADDRLABEL | ||
117 | |||
118 | RTM_GETDCB = 78, | ||
119 | #define RTM_GETDCB RTM_GETDCB | ||
120 | RTM_SETDCB, | ||
121 | #define RTM_SETDCB RTM_SETDCB | ||
122 | |||
123 | __RTM_MAX, | ||
124 | #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) | ||
125 | }; | ||
126 | |||
127 | #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE) | ||
128 | #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2) | ||
129 | #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2) | ||
130 | |||
131 | /* | ||
132 | Generic structure for encapsulation of optional route information. | ||
133 | It is reminiscent of sockaddr, but with sa_family replaced | ||
134 | with attribute type. | ||
135 | */ | ||
136 | |||
137 | struct rtattr { | ||
138 | unsigned short rta_len; | ||
139 | unsigned short rta_type; | ||
140 | }; | ||
141 | |||
142 | /* Macros to handle rtattributes */ | ||
143 | |||
144 | #define RTA_ALIGNTO 4 | ||
145 | #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) | ||
146 | #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \ | ||
147 | (rta)->rta_len >= sizeof(struct rtattr) && \ | ||
148 | (rta)->rta_len <= (len)) | ||
149 | #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), \ | ||
150 | (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len))) | ||
151 | #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len)) | ||
152 | #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len)) | ||
153 | #define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0))) | ||
154 | #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0)) | ||
155 | |||
156 | |||
157 | |||
158 | |||
159 | /****************************************************************************** | ||
160 | * Definitions used in routing table administration. | ||
161 | ****/ | ||
162 | |||
163 | struct rtmsg { | ||
164 | unsigned char rtm_family; | ||
165 | unsigned char rtm_dst_len; | ||
166 | unsigned char rtm_src_len; | ||
167 | unsigned char rtm_tos; | ||
168 | |||
169 | unsigned char rtm_table; /* Routing table id */ | ||
170 | unsigned char rtm_protocol; /* Routing protocol; see below */ | ||
171 | unsigned char rtm_scope; /* See below */ | ||
172 | unsigned char rtm_type; /* See below */ | ||
173 | |||
174 | unsigned rtm_flags; | ||
175 | }; | ||
176 | |||
177 | /* rtm_type */ | ||
178 | |||
179 | enum { | ||
180 | RTN_UNSPEC, | ||
181 | RTN_UNICAST, /* Gateway or direct route */ | ||
182 | RTN_LOCAL, /* Accept locally */ | ||
183 | RTN_BROADCAST, /* Accept locally as broadcast, | ||
184 | send as broadcast */ | ||
185 | RTN_ANYCAST, /* Accept locally as broadcast, | ||
186 | but send as unicast */ | ||
187 | RTN_MULTICAST, /* Multicast route */ | ||
188 | RTN_BLACKHOLE, /* Drop */ | ||
189 | RTN_UNREACHABLE, /* Destination is unreachable */ | ||
190 | RTN_PROHIBIT, /* Administratively prohibited */ | ||
191 | RTN_THROW, /* Not in this table */ | ||
192 | RTN_NAT, /* Translate this address */ | ||
193 | RTN_XRESOLVE, /* Use external resolver */ | ||
194 | __RTN_MAX | ||
195 | }; | ||
196 | |||
197 | #define RTN_MAX (__RTN_MAX - 1) | ||
198 | |||
199 | |||
200 | /* rtm_protocol */ | ||
201 | |||
202 | #define RTPROT_UNSPEC 0 | ||
203 | #define RTPROT_REDIRECT 1 /* Route installed by ICMP redirects; | ||
204 | not used by current IPv4 */ | ||
205 | #define RTPROT_KERNEL 2 /* Route installed by kernel */ | ||
206 | #define RTPROT_BOOT 3 /* Route installed during boot */ | ||
207 | #define RTPROT_STATIC 4 /* Route installed by administrator */ | ||
208 | |||
209 | /* Values of protocol >= RTPROT_STATIC are not interpreted by kernel; | ||
210 | they are just passed from user and back as is. | ||
211 | It will be used by hypothetical multiple routing daemons. | ||
212 | Note that protocol values should be standardized in order to | ||
213 | avoid conflicts. | ||
214 | */ | ||
215 | |||
216 | #define RTPROT_GATED 8 /* Apparently, GateD */ | ||
217 | #define RTPROT_RA 9 /* RDISC/ND router advertisements */ | ||
218 | #define RTPROT_MRT 10 /* Merit MRT */ | ||
219 | #define RTPROT_ZEBRA 11 /* Zebra */ | ||
220 | #define RTPROT_BIRD 12 /* BIRD */ | ||
221 | #define RTPROT_DNROUTED 13 /* DECnet routing daemon */ | ||
222 | #define RTPROT_XORP 14 /* XORP */ | ||
223 | #define RTPROT_NTK 15 /* Netsukuku */ | ||
224 | #define RTPROT_DHCP 16 /* DHCP client */ | ||
225 | |||
226 | /* rtm_scope | ||
227 | |||
228 | Really it is not scope, but sort of distance to the destination. | ||
229 | NOWHERE are reserved for not existing destinations, HOST is our | ||
230 | local addresses, LINK are destinations, located on directly attached | ||
231 | link and UNIVERSE is everywhere in the Universe. | ||
232 | |||
233 | Intermediate values are also possible f.e. interior routes | ||
234 | could be assigned a value between UNIVERSE and LINK. | ||
235 | */ | ||
236 | |||
237 | enum rt_scope_t { | ||
238 | RT_SCOPE_UNIVERSE=0, | ||
239 | /* User defined values */ | ||
240 | RT_SCOPE_SITE=200, | ||
241 | RT_SCOPE_LINK=253, | ||
242 | RT_SCOPE_HOST=254, | ||
243 | RT_SCOPE_NOWHERE=255 | ||
244 | }; | ||
245 | |||
246 | /* rtm_flags */ | ||
247 | |||
248 | #define RTM_F_NOTIFY 0x100 /* Notify user of route change */ | ||
249 | #define RTM_F_CLONED 0x200 /* This route is cloned */ | ||
250 | #define RTM_F_EQUALIZE 0x400 /* Multipath equalizer: NI */ | ||
251 | #define RTM_F_PREFIX 0x800 /* Prefix addresses */ | ||
252 | |||
253 | /* Reserved table identifiers */ | ||
254 | |||
255 | enum rt_class_t { | ||
256 | RT_TABLE_UNSPEC=0, | ||
257 | /* User defined values */ | ||
258 | RT_TABLE_COMPAT=252, | ||
259 | RT_TABLE_DEFAULT=253, | ||
260 | RT_TABLE_MAIN=254, | ||
261 | RT_TABLE_LOCAL=255, | ||
262 | RT_TABLE_MAX=0xFFFFFFFF | ||
263 | }; | ||
264 | |||
265 | |||
266 | /* Routing message attributes */ | ||
267 | |||
268 | enum rtattr_type_t { | ||
269 | RTA_UNSPEC, | ||
270 | RTA_DST, | ||
271 | RTA_SRC, | ||
272 | RTA_IIF, | ||
273 | RTA_OIF, | ||
274 | RTA_GATEWAY, | ||
275 | RTA_PRIORITY, | ||
276 | RTA_PREFSRC, | ||
277 | RTA_METRICS, | ||
278 | RTA_MULTIPATH, | ||
279 | RTA_PROTOINFO, /* no longer used */ | ||
280 | RTA_FLOW, | ||
281 | RTA_CACHEINFO, | ||
282 | RTA_SESSION, /* no longer used */ | ||
283 | RTA_MP_ALGO, /* no longer used */ | ||
284 | RTA_TABLE, | ||
285 | RTA_MARK, | ||
286 | __RTA_MAX | ||
287 | }; | ||
288 | |||
289 | #define RTA_MAX (__RTA_MAX - 1) | ||
290 | |||
291 | #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) | ||
292 | #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) | ||
293 | |||
294 | /* RTM_MULTIPATH --- array of struct rtnexthop. | ||
295 | * | ||
296 | * "struct rtnexthop" describes all necessary nexthop information, | ||
297 | * i.e. parameters of path to a destination via this nexthop. | ||
298 | * | ||
299 | * At the moment it is impossible to set different prefsrc, mtu, window | ||
300 | * and rtt for different paths from multipath. | ||
301 | */ | ||
302 | |||
303 | struct rtnexthop { | ||
304 | unsigned short rtnh_len; | ||
305 | unsigned char rtnh_flags; | ||
306 | unsigned char rtnh_hops; | ||
307 | int rtnh_ifindex; | ||
308 | }; | ||
309 | |||
310 | /* rtnh_flags */ | ||
311 | |||
312 | #define RTNH_F_DEAD 1 /* Nexthop is dead (used by multipath) */ | ||
313 | #define RTNH_F_PERVASIVE 2 /* Do recursive gateway lookup */ | ||
314 | #define RTNH_F_ONLINK 4 /* Gateway is forced on link */ | ||
315 | |||
316 | /* Macros to handle hexthops */ | ||
317 | |||
318 | #define RTNH_ALIGNTO 4 | ||
319 | #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) ) | ||
320 | #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \ | ||
321 | ((int)(rtnh)->rtnh_len) <= (len)) | ||
322 | #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) | ||
323 | #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len)) | ||
324 | #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len)) | ||
325 | #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) | ||
326 | |||
327 | /* RTM_CACHEINFO */ | ||
328 | |||
329 | struct rta_cacheinfo { | ||
330 | __u32 rta_clntref; | ||
331 | __u32 rta_lastuse; | ||
332 | __s32 rta_expires; | ||
333 | __u32 rta_error; | ||
334 | __u32 rta_used; | ||
335 | |||
336 | #define RTNETLINK_HAVE_PEERINFO 1 | ||
337 | __u32 rta_id; | ||
338 | __u32 rta_ts; | ||
339 | __u32 rta_tsage; | ||
340 | }; | ||
341 | |||
342 | /* RTM_METRICS --- array of struct rtattr with types of RTAX_* */ | ||
343 | |||
344 | enum { | ||
345 | RTAX_UNSPEC, | ||
346 | #define RTAX_UNSPEC RTAX_UNSPEC | ||
347 | RTAX_LOCK, | ||
348 | #define RTAX_LOCK RTAX_LOCK | ||
349 | RTAX_MTU, | ||
350 | #define RTAX_MTU RTAX_MTU | ||
351 | RTAX_WINDOW, | ||
352 | #define RTAX_WINDOW RTAX_WINDOW | ||
353 | RTAX_RTT, | ||
354 | #define RTAX_RTT RTAX_RTT | ||
355 | RTAX_RTTVAR, | ||
356 | #define RTAX_RTTVAR RTAX_RTTVAR | ||
357 | RTAX_SSTHRESH, | ||
358 | #define RTAX_SSTHRESH RTAX_SSTHRESH | ||
359 | RTAX_CWND, | ||
360 | #define RTAX_CWND RTAX_CWND | ||
361 | RTAX_ADVMSS, | ||
362 | #define RTAX_ADVMSS RTAX_ADVMSS | ||
363 | RTAX_REORDERING, | ||
364 | #define RTAX_REORDERING RTAX_REORDERING | ||
365 | RTAX_HOPLIMIT, | ||
366 | #define RTAX_HOPLIMIT RTAX_HOPLIMIT | ||
367 | RTAX_INITCWND, | ||
368 | #define RTAX_INITCWND RTAX_INITCWND | ||
369 | RTAX_FEATURES, | ||
370 | #define RTAX_FEATURES RTAX_FEATURES | ||
371 | RTAX_RTO_MIN, | ||
372 | #define RTAX_RTO_MIN RTAX_RTO_MIN | ||
373 | RTAX_INITRWND, | ||
374 | #define RTAX_INITRWND RTAX_INITRWND | ||
375 | __RTAX_MAX | ||
376 | }; | ||
377 | |||
378 | #define RTAX_MAX (__RTAX_MAX - 1) | ||
379 | |||
380 | #define RTAX_FEATURE_ECN 0x00000001 | ||
381 | #define RTAX_FEATURE_SACK 0x00000002 | ||
382 | #define RTAX_FEATURE_TIMESTAMP 0x00000004 | ||
383 | #define RTAX_FEATURE_ALLFRAG 0x00000008 | ||
384 | |||
385 | struct rta_session { | ||
386 | __u8 proto; | ||
387 | __u8 pad1; | ||
388 | __u16 pad2; | ||
389 | |||
390 | union { | ||
391 | struct { | ||
392 | __u16 sport; | ||
393 | __u16 dport; | ||
394 | } ports; | ||
395 | |||
396 | struct { | ||
397 | __u8 type; | ||
398 | __u8 code; | ||
399 | __u16 ident; | ||
400 | } icmpt; | ||
401 | |||
402 | __u32 spi; | ||
403 | } u; | ||
404 | }; | ||
405 | |||
406 | /**** | ||
407 | * General form of address family dependent message. | ||
408 | ****/ | ||
409 | |||
410 | struct rtgenmsg { | ||
411 | unsigned char rtgen_family; | ||
412 | }; | ||
413 | |||
414 | /***************************************************************** | ||
415 | * Link layer specific messages. | ||
416 | ****/ | ||
417 | |||
418 | /* struct ifinfomsg | ||
419 | * passes link level specific information, not dependent | ||
420 | * on network protocol. | ||
421 | */ | ||
422 | |||
423 | struct ifinfomsg { | ||
424 | unsigned char ifi_family; | ||
425 | unsigned char __ifi_pad; | ||
426 | unsigned short ifi_type; /* ARPHRD_* */ | ||
427 | int ifi_index; /* Link index */ | ||
428 | unsigned ifi_flags; /* IFF_* flags */ | ||
429 | unsigned ifi_change; /* IFF_* change mask */ | ||
430 | }; | ||
431 | |||
432 | /******************************************************************** | ||
433 | * prefix information | ||
434 | ****/ | ||
435 | |||
436 | struct prefixmsg { | ||
437 | unsigned char prefix_family; | ||
438 | unsigned char prefix_pad1; | ||
439 | unsigned short prefix_pad2; | ||
440 | int prefix_ifindex; | ||
441 | unsigned char prefix_type; | ||
442 | unsigned char prefix_len; | ||
443 | unsigned char prefix_flags; | ||
444 | unsigned char prefix_pad3; | ||
445 | }; | ||
446 | |||
447 | enum | ||
448 | { | ||
449 | PREFIX_UNSPEC, | ||
450 | PREFIX_ADDRESS, | ||
451 | PREFIX_CACHEINFO, | ||
452 | __PREFIX_MAX | ||
453 | }; | ||
454 | |||
455 | #define PREFIX_MAX (__PREFIX_MAX - 1) | ||
456 | |||
457 | struct prefix_cacheinfo { | ||
458 | __u32 preferred_time; | ||
459 | __u32 valid_time; | ||
460 | }; | ||
461 | |||
462 | |||
463 | /***************************************************************** | ||
464 | * Traffic control messages. | ||
465 | ****/ | ||
466 | |||
467 | struct tcmsg { | ||
468 | unsigned char tcm_family; | ||
469 | unsigned char tcm__pad1; | ||
470 | unsigned short tcm__pad2; | ||
471 | int tcm_ifindex; | ||
472 | __u32 tcm_handle; | ||
473 | __u32 tcm_parent; | ||
474 | __u32 tcm_info; | ||
475 | }; | ||
476 | |||
477 | enum { | ||
478 | TCA_UNSPEC, | ||
479 | TCA_KIND, | ||
480 | TCA_OPTIONS, | ||
481 | TCA_STATS, | ||
482 | TCA_XSTATS, | ||
483 | TCA_RATE, | ||
484 | TCA_FCNT, | ||
485 | TCA_STATS2, | ||
486 | TCA_STAB, | ||
487 | __TCA_MAX | ||
488 | }; | ||
489 | |||
490 | #define TCA_MAX (__TCA_MAX - 1) | ||
491 | |||
492 | #define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg)))) | ||
493 | #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg)) | ||
494 | |||
495 | /******************************************************************** | ||
496 | * Neighbor Discovery userland options | ||
497 | ****/ | ||
498 | |||
499 | struct nduseroptmsg { | ||
500 | unsigned char nduseropt_family; | ||
501 | unsigned char nduseropt_pad1; | ||
502 | unsigned short nduseropt_opts_len; /* Total length of options */ | ||
503 | int nduseropt_ifindex; | ||
504 | __u8 nduseropt_icmp_type; | ||
505 | __u8 nduseropt_icmp_code; | ||
506 | unsigned short nduseropt_pad2; | ||
507 | unsigned int nduseropt_pad3; | ||
508 | /* Followed by one or more ND options */ | ||
509 | }; | ||
510 | |||
511 | enum { | ||
512 | NDUSEROPT_UNSPEC, | ||
513 | NDUSEROPT_SRCADDR, | ||
514 | __NDUSEROPT_MAX | ||
515 | }; | ||
516 | |||
517 | #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1) | ||
518 | |||
519 | #ifndef __KERNEL__ | ||
520 | /* RTnetlink multicast groups - backwards compatibility for userspace */ | ||
521 | #define RTMGRP_LINK 1 | ||
522 | #define RTMGRP_NOTIFY 2 | ||
523 | #define RTMGRP_NEIGH 4 | ||
524 | #define RTMGRP_TC 8 | ||
525 | |||
526 | #define RTMGRP_IPV4_IFADDR 0x10 | ||
527 | #define RTMGRP_IPV4_MROUTE 0x20 | ||
528 | #define RTMGRP_IPV4_ROUTE 0x40 | ||
529 | #define RTMGRP_IPV4_RULE 0x80 | ||
530 | |||
531 | #define RTMGRP_IPV6_IFADDR 0x100 | ||
532 | #define RTMGRP_IPV6_MROUTE 0x200 | ||
533 | #define RTMGRP_IPV6_ROUTE 0x400 | ||
534 | #define RTMGRP_IPV6_IFINFO 0x800 | ||
535 | |||
536 | #define RTMGRP_DECnet_IFADDR 0x1000 | ||
537 | #define RTMGRP_DECnet_ROUTE 0x4000 | ||
538 | |||
539 | #define RTMGRP_IPV6_PREFIX 0x20000 | ||
540 | #endif | ||
541 | |||
542 | /* RTnetlink multicast groups */ | ||
543 | enum rtnetlink_groups { | ||
544 | RTNLGRP_NONE, | ||
545 | #define RTNLGRP_NONE RTNLGRP_NONE | ||
546 | RTNLGRP_LINK, | ||
547 | #define RTNLGRP_LINK RTNLGRP_LINK | ||
548 | RTNLGRP_NOTIFY, | ||
549 | #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY | ||
550 | RTNLGRP_NEIGH, | ||
551 | #define RTNLGRP_NEIGH RTNLGRP_NEIGH | ||
552 | RTNLGRP_TC, | ||
553 | #define RTNLGRP_TC RTNLGRP_TC | ||
554 | RTNLGRP_IPV4_IFADDR, | ||
555 | #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR | ||
556 | RTNLGRP_IPV4_MROUTE, | ||
557 | #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE | ||
558 | RTNLGRP_IPV4_ROUTE, | ||
559 | #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE | ||
560 | RTNLGRP_IPV4_RULE, | ||
561 | #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE | ||
562 | RTNLGRP_IPV6_IFADDR, | ||
563 | #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR | ||
564 | RTNLGRP_IPV6_MROUTE, | ||
565 | #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE | ||
566 | RTNLGRP_IPV6_ROUTE, | ||
567 | #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE | ||
568 | RTNLGRP_IPV6_IFINFO, | ||
569 | #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO | ||
570 | RTNLGRP_DECnet_IFADDR, | ||
571 | #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR | ||
572 | RTNLGRP_NOP2, | ||
573 | RTNLGRP_DECnet_ROUTE, | ||
574 | #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE | ||
575 | RTNLGRP_DECnet_RULE, | ||
576 | #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE | ||
577 | RTNLGRP_NOP4, | ||
578 | RTNLGRP_IPV6_PREFIX, | ||
579 | #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX | ||
580 | RTNLGRP_IPV6_RULE, | ||
581 | #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE | ||
582 | RTNLGRP_ND_USEROPT, | ||
583 | #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT | ||
584 | RTNLGRP_PHONET_IFADDR, | ||
585 | #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR | ||
586 | RTNLGRP_PHONET_ROUTE, | ||
587 | #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE | ||
588 | RTNLGRP_DCB, | ||
589 | #define RTNLGRP_DCB RTNLGRP_DCB | ||
590 | __RTNLGRP_MAX | ||
591 | }; | ||
592 | #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) | ||
593 | |||
594 | /* TC action piece */ | ||
595 | struct tcamsg { | ||
596 | unsigned char tca_family; | ||
597 | unsigned char tca__pad1; | ||
598 | unsigned short tca__pad2; | ||
599 | }; | ||
600 | #define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg)))) | ||
601 | #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg)) | ||
602 | #define TCA_ACT_TAB 1 /* attr type must be >=1 */ | ||
603 | #define TCAA_MAX 1 | ||
604 | |||
605 | /* New extended info filters for IFLA_EXT_MASK */ | ||
606 | #define RTEXT_FILTER_VF (1 << 0) | ||
607 | |||
608 | /* End of information exported to user level */ | ||
609 | |||
610 | #ifdef __KERNEL__ | ||
611 | 4 | ||
612 | #include <linux/mutex.h> | 5 | #include <linux/mutex.h> |
613 | #include <linux/netdevice.h> | 6 | #include <linux/netdevice.h> |
7 | #include <uapi/linux/rtnetlink.h> | ||
614 | 8 | ||
615 | extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo); | 9 | extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo); |
616 | extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid); | 10 | extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid); |
@@ -675,7 +69,4 @@ extern int ndo_dflt_fdb_dump(struct sk_buff *skb, | |||
675 | struct netlink_callback *cb, | 69 | struct netlink_callback *cb, |
676 | struct net_device *dev, | 70 | struct net_device *dev, |
677 | int idx); | 71 | int idx); |
678 | #endif /* __KERNEL__ */ | ||
679 | |||
680 | |||
681 | #endif /* __LINUX_RTNETLINK_H */ | 72 | #endif /* __LINUX_RTNETLINK_H */ |