1951a39d68df598db08dfced8b4707755864a0492Ying Wang/****************************************************************************
2951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
3951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
4951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   This header was automatically generated from a Linux kernel header
5951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   of the same name, to make information necessary for userspace to
6951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   call into the kernel available to libc.  It contains only constants,
7951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   structures, and macros generated from the original header, and thus,
8951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   contains no copyrightable information.
9951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
10951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/
12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef __LINUX_RTNETLINK_H
13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __LINUX_RTNETLINK_H
14951a39d68df598db08dfced8b4707755864a0492Ying Wang
15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/netlink.h>
16951a39d68df598db08dfced8b4707755864a0492Ying Wang
17951a39d68df598db08dfced8b4707755864a0492Ying Wangenum {
18951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_BASE = 16,
19951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_BASE RTM_BASE
20951a39d68df598db08dfced8b4707755864a0492Ying Wang
21951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWLINK = 16,
22951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWLINK RTM_NEWLINK
23951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELLINK,
24951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELLINK RTM_DELLINK
25951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETLINK,
26951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETLINK RTM_GETLINK
27951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_SETLINK,
28951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_SETLINK RTM_SETLINK
29951a39d68df598db08dfced8b4707755864a0492Ying Wang
30951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWADDR = 20,
31951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWADDR RTM_NEWADDR
32951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELADDR,
33951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELADDR RTM_DELADDR
34951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETADDR,
35951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETADDR RTM_GETADDR
36951a39d68df598db08dfced8b4707755864a0492Ying Wang
37951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWROUTE = 24,
38951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWROUTE RTM_NEWROUTE
39951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELROUTE,
40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELROUTE RTM_DELROUTE
41951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETROUTE,
42951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETROUTE RTM_GETROUTE
43951a39d68df598db08dfced8b4707755864a0492Ying Wang
44951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWNEIGH = 28,
45951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWNEIGH RTM_NEWNEIGH
46951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELNEIGH,
47951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELNEIGH RTM_DELNEIGH
48951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETNEIGH,
49951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETNEIGH RTM_GETNEIGH
50951a39d68df598db08dfced8b4707755864a0492Ying Wang
51951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWRULE = 32,
52951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWRULE RTM_NEWRULE
53951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELRULE,
54951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELRULE RTM_DELRULE
55951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETRULE,
56951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETRULE RTM_GETRULE
57951a39d68df598db08dfced8b4707755864a0492Ying Wang
58951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWQDISC = 36,
59951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWQDISC RTM_NEWQDISC
60951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELQDISC,
61951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELQDISC RTM_DELQDISC
62951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETQDISC,
63951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETQDISC RTM_GETQDISC
64951a39d68df598db08dfced8b4707755864a0492Ying Wang
65951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWTCLASS = 40,
66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWTCLASS RTM_NEWTCLASS
67951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELTCLASS,
68951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELTCLASS RTM_DELTCLASS
69951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETTCLASS,
70951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETTCLASS RTM_GETTCLASS
71951a39d68df598db08dfced8b4707755864a0492Ying Wang
72951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWTFILTER = 44,
73951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWTFILTER RTM_NEWTFILTER
74951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELTFILTER,
75951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELTFILTER RTM_DELTFILTER
76951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETTFILTER,
77951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETTFILTER RTM_GETTFILTER
78951a39d68df598db08dfced8b4707755864a0492Ying Wang
79951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWACTION = 48,
80951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWACTION RTM_NEWACTION
81951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_DELACTION,
82951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_DELACTION RTM_DELACTION
83951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETACTION,
84951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETACTION RTM_GETACTION
85951a39d68df598db08dfced8b4707755864a0492Ying Wang
86951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWPREFIX = 52,
87951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWPREFIX RTM_NEWPREFIX
88951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETPREFIX = 54,
89951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETPREFIX RTM_GETPREFIX
90951a39d68df598db08dfced8b4707755864a0492Ying Wang
91951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETMULTICAST = 58,
92951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETMULTICAST RTM_GETMULTICAST
93951a39d68df598db08dfced8b4707755864a0492Ying Wang
94951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETANYCAST = 62,
95951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETANYCAST RTM_GETANYCAST
96951a39d68df598db08dfced8b4707755864a0492Ying Wang
97951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_NEWNEIGHTBL = 64,
98951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
99951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_GETNEIGHTBL = 66,
100951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
101951a39d68df598db08dfced8b4707755864a0492Ying Wang RTM_SETNEIGHTBL,
102951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
103951a39d68df598db08dfced8b4707755864a0492Ying Wang
104951a39d68df598db08dfced8b4707755864a0492Ying Wang __RTM_MAX,
105951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
106951a39d68df598db08dfced8b4707755864a0492Ying Wang};
107951a39d68df598db08dfced8b4707755864a0492Ying Wang
108951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
109951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
110951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
111951a39d68df598db08dfced8b4707755864a0492Ying Wang
112951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rtattr
113951a39d68df598db08dfced8b4707755864a0492Ying Wang{
114951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short rta_len;
115951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short rta_type;
116951a39d68df598db08dfced8b4707755864a0492Ying Wang};
117951a39d68df598db08dfced8b4707755864a0492Ying Wang
118951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_ALIGNTO 4
119951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
120951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) &&   (rta)->rta_len >= sizeof(struct rtattr) &&   (rta)->rta_len <= (len))
121951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len),   (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
122951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
123951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
124951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
125951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
126951a39d68df598db08dfced8b4707755864a0492Ying Wang
127951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rtmsg
128951a39d68df598db08dfced8b4707755864a0492Ying Wang{
129951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_family;
130951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_dst_len;
131951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_src_len;
132951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_tos;
133951a39d68df598db08dfced8b4707755864a0492Ying Wang
134951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_table;
135951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_protocol;
136951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_scope;
137951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtm_type;
138951a39d68df598db08dfced8b4707755864a0492Ying Wang
139951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned rtm_flags;
140951a39d68df598db08dfced8b4707755864a0492Ying Wang};
141951a39d68df598db08dfced8b4707755864a0492Ying Wang
142951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
143951a39d68df598db08dfced8b4707755864a0492Ying Wang{
144951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_UNSPEC,
145951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_UNICAST,
146951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_LOCAL,
147951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_BROADCAST,
148951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_ANYCAST,
149951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_MULTICAST,
150951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_BLACKHOLE,
151951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_UNREACHABLE,
152951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_PROHIBIT,
153951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_THROW,
154951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_NAT,
155951a39d68df598db08dfced8b4707755864a0492Ying Wang RTN_XRESOLVE,
156951a39d68df598db08dfced8b4707755864a0492Ying Wang __RTN_MAX
157951a39d68df598db08dfced8b4707755864a0492Ying Wang};
158951a39d68df598db08dfced8b4707755864a0492Ying Wang
159951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTN_MAX (__RTN_MAX - 1)
160951a39d68df598db08dfced8b4707755864a0492Ying Wang
161951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_UNSPEC 0
162951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_REDIRECT 1
163951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_KERNEL 2
164951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_BOOT 3
165951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_STATIC 4
166951a39d68df598db08dfced8b4707755864a0492Ying Wang
167951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_GATED 8
168951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_RA 9
169951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_MRT 10
170951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_ZEBRA 11
171951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_BIRD 12
172951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_DNROUTED 13
173951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_XORP 14
174951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTPROT_NTK 15
175951a39d68df598db08dfced8b4707755864a0492Ying Wang
176951a39d68df598db08dfced8b4707755864a0492Ying Wangenum rt_scope_t
177951a39d68df598db08dfced8b4707755864a0492Ying Wang{
178951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_SCOPE_UNIVERSE=0,
179951a39d68df598db08dfced8b4707755864a0492Ying Wang
180951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_SCOPE_SITE=200,
181951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_SCOPE_LINK=253,
182951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_SCOPE_HOST=254,
183951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_SCOPE_NOWHERE=255
184951a39d68df598db08dfced8b4707755864a0492Ying Wang};
185951a39d68df598db08dfced8b4707755864a0492Ying Wang
186951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_F_NOTIFY 0x100
187951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_F_CLONED 0x200
188951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_F_EQUALIZE 0x400
189951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_F_PREFIX 0x800
190951a39d68df598db08dfced8b4707755864a0492Ying Wang
191951a39d68df598db08dfced8b4707755864a0492Ying Wangenum rt_class_t
192951a39d68df598db08dfced8b4707755864a0492Ying Wang{
193951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_TABLE_UNSPEC=0,
194951a39d68df598db08dfced8b4707755864a0492Ying Wang
195951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_TABLE_DEFAULT=253,
196951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_TABLE_MAIN=254,
197951a39d68df598db08dfced8b4707755864a0492Ying Wang RT_TABLE_LOCAL=255,
198951a39d68df598db08dfced8b4707755864a0492Ying Wang __RT_TABLE_MAX
199951a39d68df598db08dfced8b4707755864a0492Ying Wang};
200951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RT_TABLE_MAX (__RT_TABLE_MAX - 1)
201951a39d68df598db08dfced8b4707755864a0492Ying Wang
202951a39d68df598db08dfced8b4707755864a0492Ying Wangenum rtattr_type_t
203951a39d68df598db08dfced8b4707755864a0492Ying Wang{
204951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_UNSPEC,
205951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_DST,
206951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_SRC,
207951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_IIF,
208951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_OIF,
209951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_GATEWAY,
210951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_PRIORITY,
211951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_PREFSRC,
212951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_METRICS,
213951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_MULTIPATH,
214951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_PROTOINFO,
215951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_FLOW,
216951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_CACHEINFO,
217951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_SESSION,
218951a39d68df598db08dfced8b4707755864a0492Ying Wang RTA_MP_ALGO,
219951a39d68df598db08dfced8b4707755864a0492Ying Wang __RTA_MAX
220951a39d68df598db08dfced8b4707755864a0492Ying Wang};
221951a39d68df598db08dfced8b4707755864a0492Ying Wang
222951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTA_MAX (__RTA_MAX - 1)
223951a39d68df598db08dfced8b4707755864a0492Ying Wang
224951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
225951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
226951a39d68df598db08dfced8b4707755864a0492Ying Wang
227951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rtnexthop
228951a39d68df598db08dfced8b4707755864a0492Ying Wang{
229951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short rtnh_len;
230951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtnh_flags;
231951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtnh_hops;
232951a39d68df598db08dfced8b4707755864a0492Ying Wang int rtnh_ifindex;
233951a39d68df598db08dfced8b4707755864a0492Ying Wang};
234951a39d68df598db08dfced8b4707755864a0492Ying Wang
235951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_F_DEAD 1
236951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_F_PERVASIVE 2
237951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_F_ONLINK 4
238951a39d68df598db08dfced8b4707755864a0492Ying Wang
239951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_ALIGNTO 4
240951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
241951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) &&   ((int)(rtnh)->rtnh_len) <= (len))
242951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
243951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
244951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
245951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
246951a39d68df598db08dfced8b4707755864a0492Ying Wang
247951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rta_cacheinfo
248951a39d68df598db08dfced8b4707755864a0492Ying Wang{
249951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_clntref;
250951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_lastuse;
251951a39d68df598db08dfced8b4707755864a0492Ying Wang __s32 rta_expires;
252951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_error;
253951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_used;
254951a39d68df598db08dfced8b4707755864a0492Ying Wang
255951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNETLINK_HAVE_PEERINFO 1
256951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_id;
257951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_ts;
258951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rta_tsage;
259951a39d68df598db08dfced8b4707755864a0492Ying Wang};
260951a39d68df598db08dfced8b4707755864a0492Ying Wang
261951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
262951a39d68df598db08dfced8b4707755864a0492Ying Wang{
263951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_UNSPEC,
264951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_UNSPEC RTAX_UNSPEC
265951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_LOCK,
266951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_LOCK RTAX_LOCK
267951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_MTU,
268951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_MTU RTAX_MTU
269951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_WINDOW,
270951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_WINDOW RTAX_WINDOW
271951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_RTT,
272951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_RTT RTAX_RTT
273951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_RTTVAR,
274951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_RTTVAR RTAX_RTTVAR
275951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_SSTHRESH,
276951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_SSTHRESH RTAX_SSTHRESH
277951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_CWND,
278951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_CWND RTAX_CWND
279951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_ADVMSS,
280951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_ADVMSS RTAX_ADVMSS
281951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_REORDERING,
282951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_REORDERING RTAX_REORDERING
283951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_HOPLIMIT,
284951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_HOPLIMIT RTAX_HOPLIMIT
285951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_INITCWND,
286951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_INITCWND RTAX_INITCWND
287951a39d68df598db08dfced8b4707755864a0492Ying Wang RTAX_FEATURES,
288951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_FEATURES RTAX_FEATURES
289951a39d68df598db08dfced8b4707755864a0492Ying Wang __RTAX_MAX
290951a39d68df598db08dfced8b4707755864a0492Ying Wang};
291951a39d68df598db08dfced8b4707755864a0492Ying Wang
292951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_MAX (__RTAX_MAX - 1)
293951a39d68df598db08dfced8b4707755864a0492Ying Wang
294951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_FEATURE_ECN 0x00000001
295951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_FEATURE_SACK 0x00000002
296951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_FEATURE_TIMESTAMP 0x00000004
297951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTAX_FEATURE_ALLFRAG 0x00000008
298951a39d68df598db08dfced8b4707755864a0492Ying Wang
299951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rta_session
300951a39d68df598db08dfced8b4707755864a0492Ying Wang{
301951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 proto;
302951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 pad1;
303951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 pad2;
304951a39d68df598db08dfced8b4707755864a0492Ying Wang
305951a39d68df598db08dfced8b4707755864a0492Ying Wang union {
306951a39d68df598db08dfced8b4707755864a0492Ying Wang struct {
307951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 sport;
308951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 dport;
309951a39d68df598db08dfced8b4707755864a0492Ying Wang } ports;
310951a39d68df598db08dfced8b4707755864a0492Ying Wang
311951a39d68df598db08dfced8b4707755864a0492Ying Wang struct {
312951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 type;
313951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 code;
314951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 ident;
315951a39d68df598db08dfced8b4707755864a0492Ying Wang } icmpt;
316951a39d68df598db08dfced8b4707755864a0492Ying Wang
317951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 spi;
318951a39d68df598db08dfced8b4707755864a0492Ying Wang } u;
319951a39d68df598db08dfced8b4707755864a0492Ying Wang};
320951a39d68df598db08dfced8b4707755864a0492Ying Wang
321951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ifaddrmsg
322951a39d68df598db08dfced8b4707755864a0492Ying Wang{
323951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ifa_family;
324951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ifa_prefixlen;
325951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ifa_flags;
326951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ifa_scope;
327951a39d68df598db08dfced8b4707755864a0492Ying Wang int ifa_index;
328951a39d68df598db08dfced8b4707755864a0492Ying Wang};
329951a39d68df598db08dfced8b4707755864a0492Ying Wang
330951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
331951a39d68df598db08dfced8b4707755864a0492Ying Wang{
332951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_UNSPEC,
333951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_ADDRESS,
334951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_LOCAL,
335951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_LABEL,
336951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_BROADCAST,
337951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_ANYCAST,
338951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_CACHEINFO,
339951a39d68df598db08dfced8b4707755864a0492Ying Wang IFA_MULTICAST,
340951a39d68df598db08dfced8b4707755864a0492Ying Wang __IFA_MAX
341951a39d68df598db08dfced8b4707755864a0492Ying Wang};
342951a39d68df598db08dfced8b4707755864a0492Ying Wang
343951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_MAX (__IFA_MAX - 1)
344951a39d68df598db08dfced8b4707755864a0492Ying Wang
345951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_F_SECONDARY 0x01
346951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_F_TEMPORARY IFA_F_SECONDARY
347951a39d68df598db08dfced8b4707755864a0492Ying Wang
348951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_F_DEPRECATED 0x20
349951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_F_TENTATIVE 0x40
350951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_F_PERMANENT 0x80
351951a39d68df598db08dfced8b4707755864a0492Ying Wang
352951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ifa_cacheinfo
353951a39d68df598db08dfced8b4707755864a0492Ying Wang{
354951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ifa_prefered;
355951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ifa_valid;
356951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 cstamp;
357951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tstamp;
358951a39d68df598db08dfced8b4707755864a0492Ying Wang};
359951a39d68df598db08dfced8b4707755864a0492Ying Wang
360951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
361951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
362951a39d68df598db08dfced8b4707755864a0492Ying Wang
363951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ndmsg
364951a39d68df598db08dfced8b4707755864a0492Ying Wang{
365951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ndm_family;
366951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ndm_pad1;
367951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short ndm_pad2;
368951a39d68df598db08dfced8b4707755864a0492Ying Wang int ndm_ifindex;
369951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 ndm_state;
370951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 ndm_flags;
371951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 ndm_type;
372951a39d68df598db08dfced8b4707755864a0492Ying Wang};
373951a39d68df598db08dfced8b4707755864a0492Ying Wang
374951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
375951a39d68df598db08dfced8b4707755864a0492Ying Wang{
376951a39d68df598db08dfced8b4707755864a0492Ying Wang NDA_UNSPEC,
377951a39d68df598db08dfced8b4707755864a0492Ying Wang NDA_DST,
378951a39d68df598db08dfced8b4707755864a0492Ying Wang NDA_LLADDR,
379951a39d68df598db08dfced8b4707755864a0492Ying Wang NDA_CACHEINFO,
380951a39d68df598db08dfced8b4707755864a0492Ying Wang NDA_PROBES,
381951a39d68df598db08dfced8b4707755864a0492Ying Wang __NDA_MAX
382951a39d68df598db08dfced8b4707755864a0492Ying Wang};
383951a39d68df598db08dfced8b4707755864a0492Ying Wang
384951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDA_MAX (__NDA_MAX - 1)
385951a39d68df598db08dfced8b4707755864a0492Ying Wang
386951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndmsg))))
387951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndmsg))
388951a39d68df598db08dfced8b4707755864a0492Ying Wang
389951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NTF_PROXY 0x08
390951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NTF_ROUTER 0x80
391951a39d68df598db08dfced8b4707755864a0492Ying Wang
392951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_INCOMPLETE 0x01
393951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_REACHABLE 0x02
394951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_STALE 0x04
395951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_DELAY 0x08
396951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_PROBE 0x10
397951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_FAILED 0x20
398951a39d68df598db08dfced8b4707755864a0492Ying Wang
399951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_NOARP 0x40
400951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_PERMANENT 0x80
401951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NUD_NONE 0x00
402951a39d68df598db08dfced8b4707755864a0492Ying Wang
403951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct nda_cacheinfo
404951a39d68df598db08dfced8b4707755864a0492Ying Wang{
405951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndm_confirmed;
406951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndm_used;
407951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndm_updated;
408951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndm_refcnt;
409951a39d68df598db08dfced8b4707755864a0492Ying Wang};
410951a39d68df598db08dfced8b4707755864a0492Ying Wang
411951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ndt_stats
412951a39d68df598db08dfced8b4707755864a0492Ying Wang{
413951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_allocs;
414951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_destroys;
415951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_hash_grows;
416951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_res_failed;
417951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_lookups;
418951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_hits;
419951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_rcv_probes_mcast;
420951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_rcv_probes_ucast;
421951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_periodic_gc_runs;
422951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 ndts_forced_gc_runs;
423951a39d68df598db08dfced8b4707755864a0492Ying Wang};
424951a39d68df598db08dfced8b4707755864a0492Ying Wang
425951a39d68df598db08dfced8b4707755864a0492Ying Wangenum {
426951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_UNSPEC,
427951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_IFINDEX,
428951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_REFCNT,
429951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_REACHABLE_TIME,
430951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_BASE_REACHABLE_TIME,
431951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_RETRANS_TIME,
432951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_GC_STALETIME,
433951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_DELAY_PROBE_TIME,
434951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_QUEUE_LEN,
435951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_APP_PROBES,
436951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_UCAST_PROBES,
437951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_MCAST_PROBES,
438951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_ANYCAST_DELAY,
439951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_PROXY_DELAY,
440951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_PROXY_QLEN,
441951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTPA_LOCKTIME,
442951a39d68df598db08dfced8b4707755864a0492Ying Wang __NDTPA_MAX
443951a39d68df598db08dfced8b4707755864a0492Ying Wang};
444951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDTPA_MAX (__NDTPA_MAX - 1)
445951a39d68df598db08dfced8b4707755864a0492Ying Wang
446951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ndtmsg
447951a39d68df598db08dfced8b4707755864a0492Ying Wang{
448951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 ndtm_family;
449951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 ndtm_pad1;
450951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 ndtm_pad2;
451951a39d68df598db08dfced8b4707755864a0492Ying Wang};
452951a39d68df598db08dfced8b4707755864a0492Ying Wang
453951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ndt_config
454951a39d68df598db08dfced8b4707755864a0492Ying Wang{
455951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 ndtc_key_len;
456951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 ndtc_entry_size;
457951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_entries;
458951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_last_flush;
459951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_last_rand;
460951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_hash_rnd;
461951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_hash_mask;
462951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_hash_chain_gc;
463951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 ndtc_proxy_qlen;
464951a39d68df598db08dfced8b4707755864a0492Ying Wang};
465951a39d68df598db08dfced8b4707755864a0492Ying Wang
466951a39d68df598db08dfced8b4707755864a0492Ying Wangenum {
467951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_UNSPEC,
468951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_NAME,
469951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_THRESH1,
470951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_THRESH2,
471951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_THRESH3,
472951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_CONFIG,
473951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_PARMS,
474951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_STATS,
475951a39d68df598db08dfced8b4707755864a0492Ying Wang NDTA_GC_INTERVAL,
476951a39d68df598db08dfced8b4707755864a0492Ying Wang __NDTA_MAX
477951a39d68df598db08dfced8b4707755864a0492Ying Wang};
478951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDTA_MAX (__NDTA_MAX - 1)
479951a39d68df598db08dfced8b4707755864a0492Ying Wang
480951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDTA_RTA(r) ((struct rtattr*)(((char*)(r)) +   NLMSG_ALIGN(sizeof(struct ndtmsg))))
481951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NDTA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndtmsg))
482951a39d68df598db08dfced8b4707755864a0492Ying Wang
483951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rtgenmsg
484951a39d68df598db08dfced8b4707755864a0492Ying Wang{
485951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char rtgen_family;
486951a39d68df598db08dfced8b4707755864a0492Ying Wang};
487951a39d68df598db08dfced8b4707755864a0492Ying Wang
488951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ifinfomsg
489951a39d68df598db08dfced8b4707755864a0492Ying Wang{
490951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char ifi_family;
491951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char __ifi_pad;
492951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short ifi_type;
493951a39d68df598db08dfced8b4707755864a0492Ying Wang int ifi_index;
494951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned ifi_flags;
495951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned ifi_change;
496951a39d68df598db08dfced8b4707755864a0492Ying Wang};
497951a39d68df598db08dfced8b4707755864a0492Ying Wang
498951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct prefixmsg
499951a39d68df598db08dfced8b4707755864a0492Ying Wang{
500951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char prefix_family;
501951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char prefix_pad1;
502951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short prefix_pad2;
503951a39d68df598db08dfced8b4707755864a0492Ying Wang int prefix_ifindex;
504951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char prefix_type;
505951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char prefix_len;
506951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char prefix_flags;
507951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char prefix_pad3;
508951a39d68df598db08dfced8b4707755864a0492Ying Wang};
509951a39d68df598db08dfced8b4707755864a0492Ying Wang
510951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
511951a39d68df598db08dfced8b4707755864a0492Ying Wang{
512951a39d68df598db08dfced8b4707755864a0492Ying Wang PREFIX_UNSPEC,
513951a39d68df598db08dfced8b4707755864a0492Ying Wang PREFIX_ADDRESS,
514951a39d68df598db08dfced8b4707755864a0492Ying Wang PREFIX_CACHEINFO,
515951a39d68df598db08dfced8b4707755864a0492Ying Wang __PREFIX_MAX
516951a39d68df598db08dfced8b4707755864a0492Ying Wang};
517951a39d68df598db08dfced8b4707755864a0492Ying Wang
518951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PREFIX_MAX (__PREFIX_MAX - 1)
519951a39d68df598db08dfced8b4707755864a0492Ying Wang
520951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct prefix_cacheinfo
521951a39d68df598db08dfced8b4707755864a0492Ying Wang{
522951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 preferred_time;
523951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 valid_time;
524951a39d68df598db08dfced8b4707755864a0492Ying Wang};
525951a39d68df598db08dfced8b4707755864a0492Ying Wang
526951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rtnl_link_stats
527951a39d68df598db08dfced8b4707755864a0492Ying Wang{
528951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_packets;
529951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_packets;
530951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_bytes;
531951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_bytes;
532951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_errors;
533951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_errors;
534951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_dropped;
535951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_dropped;
536951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 multicast;
537951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 collisions;
538951a39d68df598db08dfced8b4707755864a0492Ying Wang
539951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_length_errors;
540951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_over_errors;
541951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_crc_errors;
542951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_frame_errors;
543951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_fifo_errors;
544951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_missed_errors;
545951a39d68df598db08dfced8b4707755864a0492Ying Wang
546951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_aborted_errors;
547951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_carrier_errors;
548951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_fifo_errors;
549951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_heartbeat_errors;
550951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_window_errors;
551951a39d68df598db08dfced8b4707755864a0492Ying Wang
552951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 rx_compressed;
553951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tx_compressed;
554951a39d68df598db08dfced8b4707755864a0492Ying Wang};
555951a39d68df598db08dfced8b4707755864a0492Ying Wang
556951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct rtnl_link_ifmap
557951a39d68df598db08dfced8b4707755864a0492Ying Wang{
558951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 mem_start;
559951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 mem_end;
560951a39d68df598db08dfced8b4707755864a0492Ying Wang __u64 base_addr;
561951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 irq;
562951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 dma;
563951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 port;
564951a39d68df598db08dfced8b4707755864a0492Ying Wang};
565951a39d68df598db08dfced8b4707755864a0492Ying Wang
566951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
567951a39d68df598db08dfced8b4707755864a0492Ying Wang{
568951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_UNSPEC,
569951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_ADDRESS,
570951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_BROADCAST,
571951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_IFNAME,
572951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_MTU,
573951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_LINK,
574951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_QDISC,
575951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_STATS,
576951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_COST,
577951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_COST IFLA_COST
578951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_PRIORITY,
579951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_PRIORITY IFLA_PRIORITY
580951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_MASTER,
581951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_MASTER IFLA_MASTER
582951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_WIRELESS,
583951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_WIRELESS IFLA_WIRELESS
584951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_PROTINFO,
585951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_PROTINFO IFLA_PROTINFO
586951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_TXQLEN,
587951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_TXQLEN IFLA_TXQLEN
588951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_MAP,
589951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_MAP IFLA_MAP
590951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_WEIGHT,
591951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_WEIGHT IFLA_WEIGHT
592951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_OPERSTATE,
593951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_LINKMODE,
594951a39d68df598db08dfced8b4707755864a0492Ying Wang __IFLA_MAX
595951a39d68df598db08dfced8b4707755864a0492Ying Wang};
596951a39d68df598db08dfced8b4707755864a0492Ying Wang
597951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_MAX (__IFLA_MAX - 1)
598951a39d68df598db08dfced8b4707755864a0492Ying Wang
599951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
600951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
601951a39d68df598db08dfced8b4707755864a0492Ying Wang
602951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
603951a39d68df598db08dfced8b4707755864a0492Ying Wang{
604951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_INET6_UNSPEC,
605951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_INET6_FLAGS,
606951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_INET6_CONF,
607951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_INET6_STATS,
608951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_INET6_MCAST,
609951a39d68df598db08dfced8b4707755864a0492Ying Wang IFLA_INET6_CACHEINFO,
610951a39d68df598db08dfced8b4707755864a0492Ying Wang __IFLA_INET6_MAX
611951a39d68df598db08dfced8b4707755864a0492Ying Wang};
612951a39d68df598db08dfced8b4707755864a0492Ying Wang
613951a39d68df598db08dfced8b4707755864a0492Ying Wang#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
614951a39d68df598db08dfced8b4707755864a0492Ying Wang
615951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct ifla_cacheinfo
616951a39d68df598db08dfced8b4707755864a0492Ying Wang{
617951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 max_reasm_len;
618951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tstamp;
619951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 reachable_time;
620951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 retrans_time;
621951a39d68df598db08dfced8b4707755864a0492Ying Wang};
622951a39d68df598db08dfced8b4707755864a0492Ying Wang
623951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct tcmsg
624951a39d68df598db08dfced8b4707755864a0492Ying Wang{
625951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char tcm_family;
626951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char tcm__pad1;
627951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short tcm__pad2;
628951a39d68df598db08dfced8b4707755864a0492Ying Wang int tcm_ifindex;
629951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tcm_handle;
630951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tcm_parent;
631951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 tcm_info;
632951a39d68df598db08dfced8b4707755864a0492Ying Wang};
633951a39d68df598db08dfced8b4707755864a0492Ying Wang
634951a39d68df598db08dfced8b4707755864a0492Ying Wangenum
635951a39d68df598db08dfced8b4707755864a0492Ying Wang{
636951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_UNSPEC,
637951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_KIND,
638951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_OPTIONS,
639951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_STATS,
640951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_XSTATS,
641951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_RATE,
642951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_FCNT,
643951a39d68df598db08dfced8b4707755864a0492Ying Wang TCA_STATS2,
644951a39d68df598db08dfced8b4707755864a0492Ying Wang __TCA_MAX
645951a39d68df598db08dfced8b4707755864a0492Ying Wang};
646951a39d68df598db08dfced8b4707755864a0492Ying Wang
647951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TCA_MAX (__TCA_MAX - 1)
648951a39d68df598db08dfced8b4707755864a0492Ying Wang
649951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
650951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
651951a39d68df598db08dfced8b4707755864a0492Ying Wang
652951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_LINK 1
653951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_NOTIFY 2
654951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_NEIGH 4
655951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_TC 8
656951a39d68df598db08dfced8b4707755864a0492Ying Wang
657951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV4_IFADDR 0x10
658951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV4_MROUTE 0x20
659951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV4_ROUTE 0x40
660951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV4_RULE 0x80
661951a39d68df598db08dfced8b4707755864a0492Ying Wang
662951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV6_IFADDR 0x100
663951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV6_MROUTE 0x200
664951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV6_ROUTE 0x400
665951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV6_IFINFO 0x800
666951a39d68df598db08dfced8b4707755864a0492Ying Wang
667951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_DECnet_IFADDR 0x1000
668951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_DECnet_ROUTE 0x4000
669951a39d68df598db08dfced8b4707755864a0492Ying Wang
670951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTMGRP_IPV6_PREFIX 0x20000
671951a39d68df598db08dfced8b4707755864a0492Ying Wang
672951a39d68df598db08dfced8b4707755864a0492Ying Wangenum rtnetlink_groups {
673951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_NONE,
674951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_NONE RTNLGRP_NONE
675951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_LINK,
676951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_LINK RTNLGRP_LINK
677951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_NOTIFY,
678951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
679951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_NEIGH,
680951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_NEIGH RTNLGRP_NEIGH
681951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_TC,
682951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_TC RTNLGRP_TC
683951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV4_IFADDR,
684951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
685951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV4_MROUTE,
686951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
687951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV4_ROUTE,
688951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
689951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV4_RULE,
690951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
691951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV6_IFADDR,
692951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
693951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV6_MROUTE,
694951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
695951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV6_ROUTE,
696951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
697951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV6_IFINFO,
698951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
699951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_DECnet_IFADDR,
700951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
701951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_NOP2,
702951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_DECnet_ROUTE,
703951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
704951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_NOP3,
705951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_NOP4,
706951a39d68df598db08dfced8b4707755864a0492Ying Wang RTNLGRP_IPV6_PREFIX,
707951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
708951a39d68df598db08dfced8b4707755864a0492Ying Wang __RTNLGRP_MAX
709951a39d68df598db08dfced8b4707755864a0492Ying Wang};
710951a39d68df598db08dfced8b4707755864a0492Ying Wang#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
711951a39d68df598db08dfced8b4707755864a0492Ying Wang
712951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct tcamsg
713951a39d68df598db08dfced8b4707755864a0492Ying Wang{
714951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char tca_family;
715951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char tca__pad1;
716951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short tca__pad2;
717951a39d68df598db08dfced8b4707755864a0492Ying Wang};
718951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
719951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
720951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TCA_ACT_TAB 1
721951a39d68df598db08dfced8b4707755864a0492Ying Wang#define TCAA_MAX 1
722951a39d68df598db08dfced8b4707755864a0492Ying Wang
723951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
724