10633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#ifndef __LINUX_RTNETLINK_H
20633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define __LINUX_RTNETLINK_H
30633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
467881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger#include <linux/types.h>
50633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#include <linux/netlink.h>
6ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#include <linux/if_link.h>
75a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#include <linux/if_addr.h>
85a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#include <linux/neighbour.h>
90633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
10b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger/* rtnetlink families. Values up to 127 are reserved for real address
11b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger * families, values above 128 may be used arbitrarily.
12b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger */
13b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define RTNL_FAMILY_IPMR		128
14b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define RTNL_FAMILY_IP6MR		129
15b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger#define RTNL_FAMILY_MAX			129
16b4397f580e6eb3f20e8c433833be20283b44a3bcStephen Hemminger
170633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/****
180633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *		Routing/neighbour discovery messages.
190633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger ****/
200633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
210633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* Types of messages */
220633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
23091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemmingerenum {
24091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_BASE	= 16,
25091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_BASE	RTM_BASE
26091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
27091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWLINK	= 16,
28091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWLINK	RTM_NEWLINK
29091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELLINK,
30091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELLINK	RTM_DELLINK
31091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETLINK,
32091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETLINK	RTM_GETLINK
33091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_SETLINK,
34091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_SETLINK	RTM_SETLINK
35091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
36091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWADDR	= 20,
37091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWADDR	RTM_NEWADDR
38091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELADDR,
39091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELADDR	RTM_DELADDR
40091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETADDR,
41091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETADDR	RTM_GETADDR
42091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
43091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWROUTE	= 24,
44091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWROUTE	RTM_NEWROUTE
45091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELROUTE,
46091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELROUTE	RTM_DELROUTE
47091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETROUTE,
48091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETROUTE	RTM_GETROUTE
49091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
50091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWNEIGH	= 28,
51091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWNEIGH	RTM_NEWNEIGH
52091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELNEIGH,
53091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELNEIGH	RTM_DELNEIGH
54091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETNEIGH,
55091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETNEIGH	RTM_GETNEIGH
56091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
57091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWRULE	= 32,
58091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWRULE	RTM_NEWRULE
59091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELRULE,
60091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELRULE	RTM_DELRULE
61091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETRULE,
62091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETRULE	RTM_GETRULE
63091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
64091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWQDISC	= 36,
65091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWQDISC	RTM_NEWQDISC
66091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELQDISC,
67091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELQDISC	RTM_DELQDISC
68091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETQDISC,
69091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETQDISC	RTM_GETQDISC
70091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
71091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWTCLASS	= 40,
72091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWTCLASS	RTM_NEWTCLASS
73091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELTCLASS,
74091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELTCLASS	RTM_DELTCLASS
75091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETTCLASS,
76091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETTCLASS	RTM_GETTCLASS
77091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
78091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWTFILTER	= 44,
79091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWTFILTER	RTM_NEWTFILTER
80091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELTFILTER,
81091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELTFILTER	RTM_DELTFILTER
82091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETTFILTER,
83091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETTFILTER	RTM_GETTFILTER
84091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
85091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWACTION	= 48,
86091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWACTION   RTM_NEWACTION
87091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_DELACTION,
88091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_DELACTION   RTM_DELACTION
89091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETACTION,
90091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETACTION   RTM_GETACTION
91091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
92091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_NEWPREFIX	= 52,
93091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_NEWPREFIX	RTM_NEWPREFIX
94091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
95091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETMULTICAST = 58,
96091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETMULTICAST RTM_GETMULTICAST
97091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
98091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger	RTM_GETANYCAST	= 62,
99091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger#define RTM_GETANYCAST	RTM_GETANYCAST
100091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger
101ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger	RTM_NEWNEIGHTBL	= 64,
102ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_NEWNEIGHTBL	RTM_NEWNEIGHTBL
103ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger	RTM_GETNEIGHTBL	= 66,
104ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_GETNEIGHTBL	RTM_GETNEIGHTBL
105ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger	RTM_SETNEIGHTBL,
106ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_SETNEIGHTBL	RTM_SETNEIGHTBL
107ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger
1085472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	RTM_NEWNDUSEROPT = 68,
1095472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
1105472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger
11170e6e38aadab8cf5b619e0a691d6103fcf5fac48Stephen Hemminger	RTM_NEWADDRLABEL = 72,
11270e6e38aadab8cf5b619e0a691d6103fcf5fac48Stephen Hemminger#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
11370e6e38aadab8cf5b619e0a691d6103fcf5fac48Stephen Hemminger	RTM_DELADDRLABEL,
1148007bfb5adc596030a92607c9c2ef9dc053cf39fStephen Hemminger#define RTM_DELADDRLABEL RTM_DELADDRLABEL
11570e6e38aadab8cf5b619e0a691d6103fcf5fac48Stephen Hemminger	RTM_GETADDRLABEL,
11670e6e38aadab8cf5b619e0a691d6103fcf5fac48Stephen Hemminger#define RTM_GETADDRLABEL RTM_GETADDRLABEL
11770e6e38aadab8cf5b619e0a691d6103fcf5fac48Stephen Hemminger
11867881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger	RTM_GETDCB = 78,
11967881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger#define RTM_GETDCB RTM_GETDCB
12067881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger	RTM_SETDCB,
12167881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger#define RTM_SETDCB RTM_SETDCB
12267881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger
123910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	RTM_NEWNETCONF = 80,
124910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#define RTM_NEWNETCONF RTM_NEWNETCONF
125910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	RTM_GETNETCONF = 82,
126910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#define RTM_GETNETCONF RTM_GETNETCONF
127910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger
1289dca676721215f82327c9f4b6630a6a37bbd60a4Cong Wang	RTM_NEWMDB = 84,
1299dca676721215f82327c9f4b6630a6a37bbd60a4Cong Wang#define RTM_NEWMDB RTM_NEWMDB
1309dca676721215f82327c9f4b6630a6a37bbd60a4Cong Wang	RTM_DELMDB = 85,
1319dca676721215f82327c9f4b6630a6a37bbd60a4Cong Wang#define RTM_DELMDB RTM_DELMDB
132910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	RTM_GETMDB = 86,
133910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#define RTM_GETMDB RTM_GETMDB
134910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger
1358c58d4036b4f4a14c2c65149d4ff65273a72c743Stephen Hemminger	RTM_NEWNSID = 88,
1368c58d4036b4f4a14c2c65149d4ff65273a72c743Stephen Hemminger#define RTM_NEWNSID RTM_NEWNSID
137e46efaed0ff49b475d50ee8ffba2984e65076ba7Stephen Hemminger	RTM_DELNSID = 89,
138e46efaed0ff49b475d50ee8ffba2984e65076ba7Stephen Hemminger#define RTM_DELNSID RTM_DELNSID
1398c58d4036b4f4a14c2c65149d4ff65273a72c743Stephen Hemminger	RTM_GETNSID = 90,
1408c58d4036b4f4a14c2c65149d4ff65273a72c743Stephen Hemminger#define RTM_GETNSID RTM_GETNSID
1418c58d4036b4f4a14c2c65149d4ff65273a72c743Stephen Hemminger
142ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger	__RTM_MAX,
143ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_MAX		(((__RTM_MAX + 3) & ~3) - 1)
144091ed219973108c83f1947f8d3b71018e3f1567eosdl.net!shemminger};
1450633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
146ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_NR_MSGTYPES	(RTM_MAX + 1 - RTM_BASE)
147ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_NR_FAMILIES	(RTM_NR_MSGTYPES >> 2)
148ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger#define RTM_FAM(cmd)	(((cmd) - RTM_BASE) >> 2)
149ea8fc1047d2b88ae1d123e3f79dbffbc2a3fa70cshemminger
1500633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/*
1510633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   Generic structure for encapsulation of optional route information.
1520633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   It is reminiscent of sockaddr, but with sa_family replaced
1530633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   with attribute type.
1540633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger */
1550633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
156ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rtattr {
1570633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned short	rta_len;
1580633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned short	rta_type;
1590633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
1600633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1610633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* Macros to handle rtattributes */
1620633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
16389bb4c6aca8a3b8fe009ece35f4b7380a28ef44dStephen Hemminger#define RTA_ALIGNTO	4U
1640633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
1650633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
1660633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			 (rta)->rta_len >= sizeof(struct rtattr) && \
1670633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			 (rta)->rta_len <= (len))
1680633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_NEXT(rta,attrlen)	((attrlen) -= RTA_ALIGN((rta)->rta_len), \
1690633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger				 (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
1700633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_LENGTH(len)	(RTA_ALIGN(sizeof(struct rtattr)) + (len))
1710633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_SPACE(len)	RTA_ALIGN(RTA_LENGTH(len))
1720633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
1730633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
1740633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1750633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1760633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1770633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1780633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/******************************************************************************
1790633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *		Definitions used in routing table administration.
1800633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger ****/
1810633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
182ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rtmsg {
1830633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_family;
1840633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_dst_len;
1850633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_src_len;
1860633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_tos;
1870633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1880633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_table;	/* Routing table id */
1890633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_protocol;	/* Routing protocol; see below	*/
1900633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_scope;	/* See below */
1910633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtm_type;	/* See below	*/
1920633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1930633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned		rtm_flags;
1940633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
1950633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
1960633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* rtm_type */
1970633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
198ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
1990633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_UNSPEC,
2000633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_UNICAST,		/* Gateway or direct route	*/
2010633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_LOCAL,		/* Accept locally		*/
2020633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_BROADCAST,		/* Accept locally as broadcast,
2030633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger				   send as broadcast */
2040633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_ANYCAST,		/* Accept locally as broadcast,
2050633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger				   but send as unicast */
2060633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_MULTICAST,		/* Multicast route		*/
2070633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_BLACKHOLE,		/* Drop				*/
2080633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_UNREACHABLE,	/* Destination is unreachable   */
2090633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_PROHIBIT,		/* Administratively prohibited	*/
2100633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_THROW,		/* Not in this table		*/
2110633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_NAT,		/* Translate this address	*/
2120633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTN_XRESOLVE,		/* Use external resolver	*/
2130633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__RTN_MAX
2140633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
2150633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2160633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTN_MAX (__RTN_MAX - 1)
2170633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2180633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2190633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* rtm_protocol */
2200633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2210633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_UNSPEC	0
2220633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_REDIRECT	1	/* Route installed by ICMP redirects;
2230633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger				   not used by current IPv4 */
2240633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_KERNEL	2	/* Route installed by kernel		*/
2250633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_BOOT	3	/* Route installed during boot		*/
2260633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_STATIC	4	/* Route installed by administrator	*/
2270633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2280633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
2290633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   they are just passed from user and back as is.
2300633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   It will be used by hypothetical multiple routing daemons.
2310633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   Note that protocol values should be standardized in order to
2320633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   avoid conflicts.
2330633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger */
2340633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2350633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_GATED	8	/* Apparently, GateD */
2360633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_RA	9	/* RDISC/ND router advertisements */
2370633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_MRT	10	/* Merit MRT */
2380633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_ZEBRA	11	/* Zebra */
2390633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_BIRD	12	/* BIRD */
2400633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_DNROUTED	13	/* DECnet routing daemon */
2410633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTPROT_XORP	14	/* XORP */
24240b6c62c6373a4dd4191078fdc6a2994792b2cb6shemminger#define RTPROT_NTK	15	/* Netsukuku */
24367881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger#define RTPROT_DHCP	16      /* DHCP client */
244910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#define RTPROT_MROUTED	17      /* Multicast daemon */
2451fa804e0d37084871a84480d379272a82d025d25Dave Taht#define RTPROT_BABEL	42      /* Babel daemon */
2460633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2470633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* rtm_scope
2480633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2490633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   Really it is not scope, but sort of distance to the destination.
2500633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   NOWHERE are reserved for not existing destinations, HOST is our
2510633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   local addresses, LINK are destinations, located on directly attached
2520633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   link and UNIVERSE is everywhere in the Universe.
2530633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2540633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   Intermediate values are also possible f.e. interior routes
2550633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger   could be assigned a value between UNIVERSE and LINK.
2560633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger*/
2570633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
258ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum rt_scope_t {
2590633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_SCOPE_UNIVERSE=0,
2600633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* User defined values  */
2610633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_SCOPE_SITE=200,
2620633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_SCOPE_LINK=253,
2630633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_SCOPE_HOST=254,
2640633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_SCOPE_NOWHERE=255
2650633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
2660633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2670633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* rtm_flags */
2680633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2690633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTM_F_NOTIFY		0x100	/* Notify user of route change	*/
2700633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTM_F_CLONED		0x200	/* This route is cloned		*/
2710633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTM_F_EQUALIZE		0x400	/* Multipath equalizer: NI	*/
2720633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTM_F_PREFIX		0x800	/* Prefix addresses		*/
2734e39bfb93a94098601699ea3f5de31c02cda1bf4Stephen Hemminger#define RTM_F_LOOKUP_TABLE	0x1000	/* set rtm_table to FIB lookup result */
2740633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2750633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* Reserved table identifiers */
2760633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
277ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum rt_class_t {
2780633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_TABLE_UNSPEC=0,
2790633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* User defined values */
2803ea2fb985f3aa979a2b270d01fa651a5ef814464Stephen Hemminger	RT_TABLE_COMPAT=252,
2810633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_TABLE_DEFAULT=253,
2820633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_TABLE_MAIN=254,
2830633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RT_TABLE_LOCAL=255,
284ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	RT_TABLE_MAX=0xFFFFFFFF
2850633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
2860633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2870633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
2880633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* Routing message attributes */
2890633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
290ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum rtattr_type_t {
2910633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_UNSPEC,
2920633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_DST,
2930633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_SRC,
2940633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_IIF,
2950633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_OIF,
2960633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_GATEWAY,
2970633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_PRIORITY,
2980633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_PREFSRC,
2990633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_METRICS,
3000633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_MULTIPATH,
3013ea2fb985f3aa979a2b270d01fa651a5ef814464Stephen Hemminger	RTA_PROTOINFO, /* no longer used */
3020633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_FLOW,
3030633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTA_CACHEINFO,
3043ea2fb985f3aa979a2b270d01fa651a5ef814464Stephen Hemminger	RTA_SESSION, /* no longer used */
305a6ffa8b00d60c1fff5d197575c2e5a896e2e15b0Stephen Hemminger	RTA_MP_ALGO, /* no longer used */
30634e9564753075c756f96597e7aa57f969a403aafPatrick McHardy	RTA_TABLE,
30704a9fc0a50f9a7677f22c9746cf2f4aadc2c8257Stephen Hemminger	RTA_MARK,
308b7a3df0f3c56c10587e926307daaa87fc3b854bfLorenzo Colitti	RTA_MFC_STATS, /* not used - backported from the future */
309b7a3df0f3c56c10587e926307daaa87fc3b854bfLorenzo Colitti	RTA_UID,
31061333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger	RTA_VIA,
31161333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger	RTA_NEWDST,
31261333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger	RTA_PREF,
313a3563ede2d519047dcb00fec3f12ad234ccdff45Stephen Hemminger	RTA_ENCAP_TYPE,
314a3563ede2d519047dcb00fec3f12ad234ccdff45Stephen Hemminger	RTA_ENCAP,
315741c20b024f5f51bf194435fc4d79f34ae5c5481Stephen Hemminger	RTA_EXPIRES,
3160633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__RTA_MAX
3170633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
3180633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3190633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTA_MAX (__RTA_MAX - 1)
3200633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3210633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
3220633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
3230633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3240633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* RTM_MULTIPATH --- array of struct rtnexthop.
3250633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *
3260633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger * "struct rtnexthop" describes all necessary nexthop information,
3270633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger * i.e. parameters of path to a destination via this nexthop.
3280633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *
3290633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger * At the moment it is impossible to set different prefsrc, mtu, window
3300633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger * and rtt for different paths from multipath.
3310633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger */
3320633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
333ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rtnexthop {
3340633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned short		rtnh_len;
3350633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtnh_flags;
3360633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtnh_hops;
3370633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	int			rtnh_ifindex;
3380633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
3390633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3400633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* rtnh_flags */
3410633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3420633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_F_DEAD		1	/* Nexthop is dead (used by multipath)	*/
3430633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_F_PERVASIVE	2	/* Do recursive gateway lookup	*/
3440633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_F_ONLINK		4	/* Gateway is forced on link	*/
345ebfe49224b28e11d4f1e0b6ea53844301038abaeStephen Hemminger#define RTNH_F_OFFLOAD		8	/* offloaded route */
346ff631c3a101abfa179ca72afb448201cdb862895Stephen Hemminger#define RTNH_F_LINKDOWN		16	/* carrier-down on nexthop */
347ff631c3a101abfa179ca72afb448201cdb862895Stephen Hemminger
348ff631c3a101abfa179ca72afb448201cdb862895Stephen Hemminger#define RTNH_COMPARE_MASK	(RTNH_F_DEAD | RTNH_F_LINKDOWN)
3490633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3500633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* Macros to handle hexthops */
3510633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3520633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_ALIGNTO	4
3530633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
3540633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
3550633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			   ((int)(rtnh)->rtnh_len) <= (len))
3560633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_NEXT(rtnh)	((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
3570633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
3580633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_SPACE(len)	RTNH_ALIGN(RTNH_LENGTH(len))
3590633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNH_DATA(rtnh)   ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
3600633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
36161333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger/* RTA_VIA */
36261333d24428835c1b9d517993a4e7ef08849deceStephen Hemmingerstruct rtvia {
36361333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger	__kernel_sa_family_t	rtvia_family;
36461333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger	__u8			rtvia_addr[0];
36561333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger};
36661333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger
3670633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* RTM_CACHEINFO */
3680633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
369ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rta_cacheinfo {
3700633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_clntref;
3710633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_lastuse;
3720633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__s32	rta_expires;
3730633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_error;
3740633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_used;
3750633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3760633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTNETLINK_HAVE_PEERINFO 1
3770633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_id;
3780633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_ts;
3790633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	rta_tsage;
3800633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
3810633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
3820633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
3830633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
384ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
3850633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_UNSPEC,
3860633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_UNSPEC RTAX_UNSPEC
3870633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_LOCK,
3880633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_LOCK RTAX_LOCK
3890633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_MTU,
3900633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_MTU RTAX_MTU
3910633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_WINDOW,
3920633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_WINDOW RTAX_WINDOW
3930633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_RTT,
3940633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_RTT RTAX_RTT
3950633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_RTTVAR,
3960633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_RTTVAR RTAX_RTTVAR
3970633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_SSTHRESH,
3980633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_SSTHRESH RTAX_SSTHRESH
3990633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_CWND,
4000633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_CWND RTAX_CWND
4010633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_ADVMSS,
4020633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_ADVMSS RTAX_ADVMSS
4030633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_REORDERING,
4040633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_REORDERING RTAX_REORDERING
4050633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_HOPLIMIT,
4060633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_HOPLIMIT RTAX_HOPLIMIT
4070633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_INITCWND,
4080633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_INITCWND RTAX_INITCWND
4090633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	RTAX_FEATURES,
4100633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_FEATURES RTAX_FEATURES
411dfd26e1c4c6a1cae65adb4ca473efb32d6d9297bStephen Hemminger	RTAX_RTO_MIN,
412dfd26e1c4c6a1cae65adb4ca473efb32d6d9297bStephen Hemminger#define RTAX_RTO_MIN RTAX_RTO_MIN
4138ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger	RTAX_INITRWND,
4148ecdcce08319d0e39b0d32c1d17db3f69d85a35cStephen Hemminger#define RTAX_INITRWND RTAX_INITRWND
415ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger	RTAX_QUICKACK,
416ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger#define RTAX_QUICKACK RTAX_QUICKACK
417f233410d207c2985dd8a34c18a8c140200134d31Stephen Hemminger	RTAX_CC_ALGO,
418f233410d207c2985dd8a34c18a8c140200134d31Stephen Hemminger#define RTAX_CC_ALGO RTAX_CC_ALGO
4190633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__RTAX_MAX
4200633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
4210633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4220633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTAX_MAX (__RTAX_MAX - 1)
4230633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4248d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger#define RTAX_FEATURE_ECN	(1 << 0)
4258d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger#define RTAX_FEATURE_SACK	(1 << 1)
4268d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger#define RTAX_FEATURE_TIMESTAMP	(1 << 2)
4278d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger#define RTAX_FEATURE_ALLFRAG	(1 << 3)
4288d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger
4298d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger#define RTAX_FEATURE_MASK	(RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
4308d62f3e2949abb39f1c1b0c8c3200e3cec303920Stephen Hemminger				 RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
4310633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
432ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rta_session {
4330633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u8	proto;
4346864c1e7890c65dd2ee037809f772790b04792b4shemminger	__u8	pad1;
4356864c1e7890c65dd2ee037809f772790b04792b4shemminger	__u16	pad2;
4360633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4370633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	union {
4380633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger		struct {
4390633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			__u16	sport;
4400633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			__u16	dport;
4410633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger		} ports;
4420633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4430633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger		struct {
4440633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			__u8	type;
4450633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			__u8	code;
4460633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger			__u16	ident;
4470633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger		} icmpt;
4480633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4490633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger		__u32		spi;
4500633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	} u;
4510633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
4520633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
453910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemmingerstruct rta_mfc_stats {
454910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	__u64	mfcs_packets;
455910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	__u64	mfcs_bytes;
456910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	__u64	mfcs_wrong_if;
457910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger};
458910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger
4590633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/****
4600633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *		General form of address family dependent message.
4610633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger ****/
4620633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
463ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct rtgenmsg {
4640633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char		rtgen_family;
4650633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
4660633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4670633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/*****************************************************************
4680633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *		Link layer specific messages.
4690633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger ****/
4700633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4710633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* struct ifinfomsg
4720633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger * passes link level specific information, not dependent
4730633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger * on network protocol.
4740633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger */
4750633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
476ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct ifinfomsg {
4770633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	ifi_family;
4780633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	__ifi_pad;
4790633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned short	ifi_type;		/* ARPHRD_* */
4800633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	int		ifi_index;		/* Link index	*/
4810633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned	ifi_flags;		/* IFF_* flags	*/
4820633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned	ifi_change;		/* IFF_* change mask */
4830633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
4840633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
4850633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/********************************************************************
4860633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *		prefix information
4870633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger ****/
4880633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
489ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct prefixmsg {
4900633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	prefix_family;
4916864c1e7890c65dd2ee037809f772790b04792b4shemminger	unsigned char	prefix_pad1;
4926864c1e7890c65dd2ee037809f772790b04792b4shemminger	unsigned short	prefix_pad2;
4930633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	int		prefix_ifindex;
4940633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	prefix_type;
4950633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	prefix_len;
4960633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	prefix_flags;
4976864c1e7890c65dd2ee037809f772790b04792b4shemminger	unsigned char	prefix_pad3;
4980633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
4990633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5000633baa17231b777e75b813439c237e3de380cc8osdl.net!shemmingerenum
5010633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger{
5020633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	PREFIX_UNSPEC,
5030633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	PREFIX_ADDRESS,
5040633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	PREFIX_CACHEINFO,
5050633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__PREFIX_MAX
5060633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
5070633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5080633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define PREFIX_MAX	(__PREFIX_MAX - 1)
5090633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
510ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct prefix_cacheinfo {
5110633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	preferred_time;
5120633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32	valid_time;
5130633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
5140633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5150633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5160633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/*****************************************************************
5170633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger *		Traffic control messages.
5180633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger ****/
5190633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
520ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct tcmsg {
5210633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	tcm_family;
5220633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	tcm__pad1;
5230633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned short	tcm__pad2;
5240633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	int		tcm_ifindex;
5250633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32		tcm_handle;
5260633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32		tcm_parent;
5270633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__u32		tcm_info;
5280633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
5290633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
530ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
5310633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_UNSPEC,
5320633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_KIND,
5330633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_OPTIONS,
5340633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_STATS,
5350633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_XSTATS,
5360633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_RATE,
5370633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	TCA_FCNT,
538e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	TCA_STATS2,
53919ecc16d72bb5767b1427a7579e5884813f2c9e8Stephen Hemminger	TCA_STAB,
5400633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	__TCA_MAX
5410633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
5420633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5430633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TCA_MAX (__TCA_MAX - 1)
5440633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5450633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
5460633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
5470633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5485472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger/********************************************************************
5495472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger *		Neighbor Discovery userland options
5505472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger ****/
5515472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger
552ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct nduseroptmsg {
5535472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	unsigned char	nduseropt_family;
5545472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	unsigned char	nduseropt_pad1;
5555472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	unsigned short	nduseropt_opts_len;	/* Total length of options */
5565472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	int		nduseropt_ifindex;
5575472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	__u8		nduseropt_icmp_type;
5585472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	__u8		nduseropt_icmp_code;
5595472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	unsigned short	nduseropt_pad2;
5605472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	unsigned int	nduseropt_pad3;
5615472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	/* Followed by one or more ND options */
5625472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger};
5635472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger
564ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerenum {
5655472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	NDUSEROPT_UNSPEC,
5665472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	NDUSEROPT_SRCADDR,
5675472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	__NDUSEROPT_MAX
5685472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger};
5695472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger
5705472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger#define NDUSEROPT_MAX	(__NDUSEROPT_MAX - 1)
5715472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger
572351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger/* RTnetlink multicast groups - backwards compatibility for userspace */
5730633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_LINK		1
5740633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_NOTIFY		2
5750633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_NEIGH		4
5760633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_TC		8
5770633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5780633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV4_IFADDR	0x10
5790633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV4_MROUTE	0x20
5800633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV4_ROUTE	0x40
5818f8a36487119a3cd1afe86a9649704aca088567bStephen Hemminger#define RTMGRP_IPV4_RULE	0x80
5820633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5830633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV6_IFADDR	0x100
5840633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV6_MROUTE	0x200
5850633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV6_ROUTE	0x400
5860633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV6_IFINFO	0x800
5870633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5880633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_DECnet_IFADDR    0x1000
5890633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_DECnet_ROUTE     0x4000
5900633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
5910633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define RTMGRP_IPV6_PREFIX	0x20000
5920633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
593351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger/* RTnetlink multicast groups */
594351efcde4e62967362a10b29f3b701cfecd7cdfcshemmingerenum rtnetlink_groups {
595351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_NONE,
596351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_NONE		RTNLGRP_NONE
597351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_LINK,
598351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_LINK		RTNLGRP_LINK
599351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_NOTIFY,
600351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_NOTIFY		RTNLGRP_NOTIFY
601351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_NEIGH,
602351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_NEIGH		RTNLGRP_NEIGH
603351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_TC,
604351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_TC		RTNLGRP_TC
605351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV4_IFADDR,
606351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV4_IFADDR	RTNLGRP_IPV4_IFADDR
607351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV4_MROUTE,
608351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define	RTNLGRP_IPV4_MROUTE	RTNLGRP_IPV4_MROUTE
609351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV4_ROUTE,
610351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV4_ROUTE	RTNLGRP_IPV4_ROUTE
6118f8a36487119a3cd1afe86a9649704aca088567bStephen Hemminger	RTNLGRP_IPV4_RULE,
6128f8a36487119a3cd1afe86a9649704aca088567bStephen Hemminger#define RTNLGRP_IPV4_RULE	RTNLGRP_IPV4_RULE
613351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV6_IFADDR,
614351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV6_IFADDR	RTNLGRP_IPV6_IFADDR
615351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV6_MROUTE,
616351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV6_MROUTE	RTNLGRP_IPV6_MROUTE
617351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV6_ROUTE,
618351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV6_ROUTE	RTNLGRP_IPV6_ROUTE
619351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV6_IFINFO,
620351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV6_IFINFO	RTNLGRP_IPV6_IFINFO
621351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_DECnet_IFADDR,
622351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_DECnet_IFADDR	RTNLGRP_DECnet_IFADDR
62309954dc61adc3051cbb2127e2bfcf692502c8306shemminger	RTNLGRP_NOP2,
624351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_DECnet_ROUTE,
625351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_DECnet_ROUTE	RTNLGRP_DECnet_ROUTE
626ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	RTNLGRP_DECnet_RULE,
627ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define RTNLGRP_DECnet_RULE	RTNLGRP_DECnet_RULE
62809954dc61adc3051cbb2127e2bfcf692502c8306shemminger	RTNLGRP_NOP4,
629351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	RTNLGRP_IPV6_PREFIX,
630351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_IPV6_PREFIX	RTNLGRP_IPV6_PREFIX
631ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	RTNLGRP_IPV6_RULE,
632ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define RTNLGRP_IPV6_RULE	RTNLGRP_IPV6_RULE
6335472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger	RTNLGRP_ND_USEROPT,
6345472ac6f9fab8632b89da31df56419c8423b020dStephen Hemminger#define RTNLGRP_ND_USEROPT	RTNLGRP_ND_USEROPT
63505bfd165958d1859275b0158fedcb00cea58ad0dStephen Hemminger	RTNLGRP_PHONET_IFADDR,
63605bfd165958d1859275b0158fedcb00cea58ad0dStephen Hemminger#define RTNLGRP_PHONET_IFADDR	RTNLGRP_PHONET_IFADDR
63705bfd165958d1859275b0158fedcb00cea58ad0dStephen Hemminger	RTNLGRP_PHONET_ROUTE,
63805bfd165958d1859275b0158fedcb00cea58ad0dStephen Hemminger#define RTNLGRP_PHONET_ROUTE	RTNLGRP_PHONET_ROUTE
639707f612c00a91fe3c17d7af5319e423545a496c5Stephen Hemminger	RTNLGRP_DCB,
640707f612c00a91fe3c17d7af5319e423545a496c5Stephen Hemminger#define RTNLGRP_DCB		RTNLGRP_DCB
641910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	RTNLGRP_IPV4_NETCONF,
642910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#define RTNLGRP_IPV4_NETCONF	RTNLGRP_IPV4_NETCONF
643910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger	RTNLGRP_IPV6_NETCONF,
644910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#define RTNLGRP_IPV6_NETCONF	RTNLGRP_IPV6_NETCONF
6454a4ee61699b8b3ee05fa97f1e90305e4676cf4ecCong Wang	RTNLGRP_MDB,
6464a4ee61699b8b3ee05fa97f1e90305e4676cf4ecCong Wang#define RTNLGRP_MDB		RTNLGRP_MDB
64761333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger	RTNLGRP_MPLS_ROUTE,
64861333d24428835c1b9d517993a4e7ef08849deceStephen Hemminger#define RTNLGRP_MPLS_ROUTE	RTNLGRP_MPLS_ROUTE
649e46efaed0ff49b475d50ee8ffba2984e65076ba7Stephen Hemminger	RTNLGRP_NSID,
650e46efaed0ff49b475d50ee8ffba2984e65076ba7Stephen Hemminger#define RTNLGRP_NSID		RTNLGRP_NSID
651351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger	__RTNLGRP_MAX
652351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger};
653351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger#define RTNLGRP_MAX	(__RTNLGRP_MAX - 1)
654351efcde4e62967362a10b29f3b701cfecd7cdfcshemminger
6550633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* TC action piece */
656ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct tcamsg {
6570633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	tca_family;
6580633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned char	tca__pad1;
6590633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger	unsigned short	tca__pad2;
6600633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger};
6610633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
6620633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
6630633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TCA_ACT_TAB 1 /* attr type must be >=1 */
6640633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger#define TCAA_MAX 1
6650633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
666c23abafbdcdd3754bea50f1452fed36da5515379Stephen Hemminger/* New extended info filters for IFLA_EXT_MASK */
667c23abafbdcdd3754bea50f1452fed36da5515379Stephen Hemminger#define RTEXT_FILTER_VF		(1 << 0)
668609106d3af62256752f97cadca620ec84b6784daStephen Hemminger#define RTEXT_FILTER_BRVLAN	(1 << 1)
669f233410d207c2985dd8a34c18a8c140200134d31Stephen Hemminger#define RTEXT_FILTER_BRVLAN_COMPRESSED	(1 << 2)
6704e39bfb93a94098601699ea3f5de31c02cda1bf4Stephen Hemminger#define	RTEXT_FILTER_SKIP_STATS	(1 << 3)
671c23abafbdcdd3754bea50f1452fed36da5515379Stephen Hemminger
6720633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger/* End of information exported to user level */
6730633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
6740633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
6750633baa17231b777e75b813439c237e3de380cc8osdl.net!shemminger
676910773dc0df1131cbe5220d8b6971ae44a7221bdStephen Hemminger#endif /* __LINUX_RTNETLINK_H */
677