111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __LINUX_RTNETLINK_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __LINUX_RTNETLINK_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/netlink.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_BASE = 16,
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_BASE RTM_BASE
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWLINK = 16,
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWLINK RTM_NEWLINK
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELLINK,
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELLINK RTM_DELLINK
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETLINK,
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETLINK RTM_GETLINK
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_SETLINK,
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_SETLINK RTM_SETLINK
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWADDR = 20,
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWADDR RTM_NEWADDR
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELADDR,
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELADDR RTM_DELADDR
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETADDR,
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETADDR RTM_GETADDR
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWROUTE = 24,
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWROUTE RTM_NEWROUTE
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELROUTE,
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELROUTE RTM_DELROUTE
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETROUTE,
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETROUTE RTM_GETROUTE
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWNEIGH = 28,
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWNEIGH RTM_NEWNEIGH
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELNEIGH,
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELNEIGH RTM_DELNEIGH
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETNEIGH,
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETNEIGH RTM_GETNEIGH
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWRULE = 32,
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWRULE RTM_NEWRULE
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELRULE,
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELRULE RTM_DELRULE
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETRULE,
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETRULE RTM_GETRULE
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWQDISC = 36,
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWQDISC RTM_NEWQDISC
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELQDISC,
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELQDISC RTM_DELQDISC
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETQDISC,
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETQDISC RTM_GETQDISC
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWTCLASS = 40,
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWTCLASS RTM_NEWTCLASS
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELTCLASS,
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELTCLASS RTM_DELTCLASS
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETTCLASS,
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETTCLASS RTM_GETTCLASS
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWTFILTER = 44,
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWTFILTER RTM_NEWTFILTER
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELTFILTER,
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELTFILTER RTM_DELTFILTER
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETTFILTER,
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETTFILTER RTM_GETTFILTER
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWACTION = 48,
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWACTION RTM_NEWACTION
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_DELACTION,
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_DELACTION RTM_DELACTION
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETACTION,
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETACTION RTM_GETACTION
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWPREFIX = 52,
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWPREFIX RTM_NEWPREFIX
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETPREFIX = 54,
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETPREFIX RTM_GETPREFIX
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETMULTICAST = 58,
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETMULTICAST RTM_GETMULTICAST
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETANYCAST = 62,
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETANYCAST RTM_GETANYCAST
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_NEWNEIGHTBL = 64,
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_GETNEIGHTBL = 66,
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTM_SETNEIGHTBL,
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __RTM_MAX,
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rtattr
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short rta_len;
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short rta_type;
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_ALIGNTO 4
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) &&   (rta)->rta_len >= sizeof(struct rtattr) &&   (rta)->rta_len <= (len))
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len),   (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rtmsg
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_family;
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_dst_len;
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_src_len;
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_tos;
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_table;
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_protocol;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_scope;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtm_type;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned rtm_flags;
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_UNSPEC,
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_UNICAST,
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_LOCAL,
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_BROADCAST,
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_ANYCAST,
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_MULTICAST,
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_BLACKHOLE,
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_UNREACHABLE,
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_PROHIBIT,
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_THROW,
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_NAT,
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTN_XRESOLVE,
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __RTN_MAX
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTN_MAX (__RTN_MAX - 1)
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_UNSPEC 0
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_REDIRECT 1
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_KERNEL 2
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_BOOT 3
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_STATIC 4
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_GATED 8
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_RA 9
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_MRT 10
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_ZEBRA 11
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_BIRD 12
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_DNROUTED 13
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_XORP 14
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTPROT_NTK 15
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum rt_scope_t
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_SCOPE_UNIVERSE=0,
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_SCOPE_SITE=200,
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_SCOPE_LINK=253,
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_SCOPE_HOST=254,
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_SCOPE_NOWHERE=255
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_F_NOTIFY 0x100
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_F_CLONED 0x200
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_F_EQUALIZE 0x400
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_F_PREFIX 0x800
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum rt_class_t
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_TABLE_UNSPEC=0,
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_TABLE_DEFAULT=253,
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_TABLE_MAIN=254,
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RT_TABLE_LOCAL=255,
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __RT_TABLE_MAX
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RT_TABLE_MAX (__RT_TABLE_MAX - 1)
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum rtattr_type_t
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_UNSPEC,
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_DST,
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_SRC,
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_IIF,
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_OIF,
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_GATEWAY,
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_PRIORITY,
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_PREFSRC,
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_METRICS,
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_MULTIPATH,
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_PROTOINFO,
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_FLOW,
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_CACHEINFO,
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_SESSION,
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTA_MP_ALGO,
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __RTA_MAX
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTA_MAX (__RTA_MAX - 1)
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rtnexthop
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short rtnh_len;
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtnh_flags;
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtnh_hops;
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int rtnh_ifindex;
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_F_DEAD 1
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_F_PERVASIVE 2
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_F_ONLINK 4
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_ALIGNTO 4
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) &&   ((int)(rtnh)->rtnh_len) <= (len))
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rta_cacheinfo
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_clntref;
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_lastuse;
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __s32 rta_expires;
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_error;
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_used;
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNETLINK_HAVE_PEERINFO 1
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_id;
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_ts;
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rta_tsage;
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_UNSPEC,
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_UNSPEC RTAX_UNSPEC
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_LOCK,
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_LOCK RTAX_LOCK
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_MTU,
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_MTU RTAX_MTU
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_WINDOW,
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_WINDOW RTAX_WINDOW
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_RTT,
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_RTT RTAX_RTT
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_RTTVAR,
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_RTTVAR RTAX_RTTVAR
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_SSTHRESH,
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_SSTHRESH RTAX_SSTHRESH
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_CWND,
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_CWND RTAX_CWND
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_ADVMSS,
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_ADVMSS RTAX_ADVMSS
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_REORDERING,
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_REORDERING RTAX_REORDERING
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_HOPLIMIT,
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_HOPLIMIT RTAX_HOPLIMIT
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_INITCWND,
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_INITCWND RTAX_INITCWND
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTAX_FEATURES,
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_FEATURES RTAX_FEATURES
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __RTAX_MAX
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_MAX (__RTAX_MAX - 1)
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_FEATURE_ECN 0x00000001
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_FEATURE_SACK 0x00000002
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_FEATURE_TIMESTAMP 0x00000004
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTAX_FEATURE_ALLFRAG 0x00000008
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rta_session
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 proto;
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 pad1;
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 pad2;
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union {
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct {
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 sport;
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 dport;
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } ports;
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct {
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 code;
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 ident;
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } icmpt;
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 spi;
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } u;
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ifaddrmsg
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ifa_family;
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ifa_prefixlen;
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ifa_flags;
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ifa_scope;
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int ifa_index;
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_UNSPEC,
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_ADDRESS,
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_LOCAL,
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_LABEL,
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_BROADCAST,
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_ANYCAST,
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_CACHEINFO,
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFA_MULTICAST,
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __IFA_MAX
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_MAX (__IFA_MAX - 1)
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_F_SECONDARY 0x01
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_F_TEMPORARY IFA_F_SECONDARY
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_F_DEPRECATED 0x20
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_F_TENTATIVE 0x40
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_F_PERMANENT 0x80
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ifa_cacheinfo
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ifa_prefered;
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ifa_valid;
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cstamp;
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tstamp;
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ndmsg
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ndm_family;
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ndm_pad1;
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short ndm_pad2;
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int ndm_ifindex;
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 ndm_state;
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ndm_flags;
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ndm_type;
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDA_UNSPEC,
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDA_DST,
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDA_LLADDR,
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDA_CACHEINFO,
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDA_PROBES,
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __NDA_MAX
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDA_MAX (__NDA_MAX - 1)
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndmsg))))
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndmsg))
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NTF_PROXY 0x08
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NTF_ROUTER 0x80
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_INCOMPLETE 0x01
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_REACHABLE 0x02
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_STALE 0x04
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_DELAY 0x08
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_PROBE 0x10
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_FAILED 0x20
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_NOARP 0x40
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_PERMANENT 0x80
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NUD_NONE 0x00
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nda_cacheinfo
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndm_confirmed;
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndm_used;
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndm_updated;
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndm_refcnt;
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ndt_stats
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_allocs;
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_destroys;
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_hash_grows;
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_res_failed;
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_lookups;
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_hits;
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_rcv_probes_mcast;
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_rcv_probes_ucast;
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_periodic_gc_runs;
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ndts_forced_gc_runs;
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_UNSPEC,
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_IFINDEX,
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_REFCNT,
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_REACHABLE_TIME,
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_BASE_REACHABLE_TIME,
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_RETRANS_TIME,
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_GC_STALETIME,
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_DELAY_PROBE_TIME,
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_QUEUE_LEN,
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_APP_PROBES,
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_UCAST_PROBES,
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_MCAST_PROBES,
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_ANYCAST_DELAY,
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_PROXY_DELAY,
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_PROXY_QLEN,
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTPA_LOCKTIME,
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __NDTPA_MAX
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDTPA_MAX (__NDTPA_MAX - 1)
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ndtmsg
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ndtm_family;
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ndtm_pad1;
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 ndtm_pad2;
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ndt_config
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 ndtc_key_len;
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 ndtc_entry_size;
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_entries;
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_last_flush;
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_last_rand;
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_hash_rnd;
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_hash_mask;
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_hash_chain_gc;
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ndtc_proxy_qlen;
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_UNSPEC,
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_NAME,
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_THRESH1,
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_THRESH2,
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_THRESH3,
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_CONFIG,
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_PARMS,
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_STATS,
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NDTA_GC_INTERVAL,
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __NDTA_MAX
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDTA_MAX (__NDTA_MAX - 1)
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDTA_RTA(r) ((struct rtattr*)(((char*)(r)) +   NLMSG_ALIGN(sizeof(struct ndtmsg))))
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NDTA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndtmsg))
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rtgenmsg
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char rtgen_family;
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ifinfomsg
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ifi_family;
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char __ifi_pad;
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short ifi_type;
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int ifi_index;
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned ifi_flags;
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned ifi_change;
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct prefixmsg
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char prefix_family;
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char prefix_pad1;
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short prefix_pad2;
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int prefix_ifindex;
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char prefix_type;
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char prefix_len;
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char prefix_flags;
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char prefix_pad3;
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PREFIX_UNSPEC,
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PREFIX_ADDRESS,
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PREFIX_CACHEINFO,
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __PREFIX_MAX
51611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define PREFIX_MAX (__PREFIX_MAX - 1)
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
52011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct prefix_cacheinfo
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 preferred_time;
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 valid_time;
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rtnl_link_stats
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_packets;
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_packets;
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_bytes;
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_bytes;
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_errors;
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_errors;
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_dropped;
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_dropped;
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 multicast;
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 collisions;
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
53911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_length_errors;
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_over_errors;
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_crc_errors;
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_frame_errors;
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_fifo_errors;
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_missed_errors;
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_aborted_errors;
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_carrier_errors;
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_fifo_errors;
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_heartbeat_errors;
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_window_errors;
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rx_compressed;
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tx_compressed;
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rtnl_link_ifmap
55711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
55811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 mem_start;
55911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 mem_end;
56011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 base_addr;
56111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 irq;
56211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 dma;
56311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 port;
56411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
56511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
56611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
56711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
56811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_UNSPEC,
56911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_ADDRESS,
57011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_BROADCAST,
57111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_IFNAME,
57211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_MTU,
57311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_LINK,
57411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_QDISC,
57511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_STATS,
57611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_COST,
57711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_COST IFLA_COST
57811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_PRIORITY,
57911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_PRIORITY IFLA_PRIORITY
58011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_MASTER,
58111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_MASTER IFLA_MASTER
58211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_WIRELESS,
58311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_WIRELESS IFLA_WIRELESS
58411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_PROTINFO,
58511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_PROTINFO IFLA_PROTINFO
58611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_TXQLEN,
58711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_TXQLEN IFLA_TXQLEN
58811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_MAP,
58911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_MAP IFLA_MAP
59011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_WEIGHT,
59111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_WEIGHT IFLA_WEIGHT
59211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_OPERSTATE,
59311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_LINKMODE,
59411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __IFLA_MAX
59511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
59611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
59711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_MAX (__IFLA_MAX - 1)
59811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
59911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
60011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
60111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
60211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
60311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
60411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_INET6_UNSPEC,
60511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_INET6_FLAGS,
60611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_INET6_CONF,
60711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_INET6_STATS,
60811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_INET6_MCAST,
60911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IFLA_INET6_CACHEINFO,
61011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __IFLA_INET6_MAX
61111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
61211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
61311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
61411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
61511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ifla_cacheinfo
61611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
61711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 max_reasm_len;
61811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tstamp;
61911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 reachable_time;
62011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 retrans_time;
62111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
62211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
62311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tcmsg
62411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
62511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char tcm_family;
62611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char tcm__pad1;
62711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short tcm__pad2;
62811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int tcm_ifindex;
62911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcm_handle;
63011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcm_parent;
63111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcm_info;
63211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
63311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
63411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
63511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
63611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_UNSPEC,
63711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_KIND,
63811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_OPTIONS,
63911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_STATS,
64011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_XSTATS,
64111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_RATE,
64211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_FCNT,
64311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_STATS2,
64411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_MAX
64511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
64611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
64711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_MAX (__TCA_MAX - 1)
64811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
64911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
65011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
65111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
65211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_LINK 1
65311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_NOTIFY 2
65411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_NEIGH 4
65511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_TC 8
65611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
65711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV4_IFADDR 0x10
65811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV4_MROUTE 0x20
65911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV4_ROUTE 0x40
66011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV4_RULE 0x80
66111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
66211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV6_IFADDR 0x100
66311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV6_MROUTE 0x200
66411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV6_ROUTE 0x400
66511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV6_IFINFO 0x800
66611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
66711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_DECnet_IFADDR 0x1000
66811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_DECnet_ROUTE 0x4000
66911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTMGRP_IPV6_PREFIX 0x20000
67111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum rtnetlink_groups {
67311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_NONE,
67411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_NONE RTNLGRP_NONE
67511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_LINK,
67611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_LINK RTNLGRP_LINK
67711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_NOTIFY,
67811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
67911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_NEIGH,
68011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_NEIGH RTNLGRP_NEIGH
68111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_TC,
68211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_TC RTNLGRP_TC
68311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV4_IFADDR,
68411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
68511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV4_MROUTE,
68611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
68711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV4_ROUTE,
68811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
68911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV4_RULE,
69011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
69111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV6_IFADDR,
69211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
69311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV6_MROUTE,
69411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
69511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV6_ROUTE,
69611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
69711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV6_IFINFO,
69811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
69911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_DECnet_IFADDR,
70011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
70111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_NOP2,
70211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_DECnet_ROUTE,
70311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
70411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_NOP3,
70511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_NOP4,
70611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RTNLGRP_IPV6_PREFIX,
70711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
70811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __RTNLGRP_MAX
70911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
71011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
71111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
71211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tcamsg
71311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
71411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char tca_family;
71511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char tca__pad1;
71611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short tca__pad2;
71711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
71811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
71911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
72011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_ACT_TAB 1
72111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCAA_MAX 1
72211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
72311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
724