rtnetlink.h revision 9163872132a3e92f986b1d684badb1dd4482ad8e
11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/****************************************************************************
21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ****************************************************************************
31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***
41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***   This header was automatically generated from a Linux kernel header
51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***   of the same name, to make information necessary for userspace to
61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***   call into the kernel available to libc.  It contains only constants,
71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***   structures, and macros generated from the original header, and thus,
81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***   contains no copyrightable information.
91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ***
101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ****************************************************************************
111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ****************************************************************************/
121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef __LINUX_RTNETLINK_H
131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __LINUX_RTNETLINK_H
141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
159163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#include <linux/types.h>
161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/netlink.h>
179163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#include <linux/if_link.h>
189163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#include <linux/if_addr.h>
199163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#include <linux/neighbour.h>
201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum {
221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_BASE = 16,
231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_BASE RTM_BASE
241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWLINK = 16,
261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWLINK RTM_NEWLINK
271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELLINK,
281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELLINK RTM_DELLINK
291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETLINK,
301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETLINK RTM_GETLINK
311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_SETLINK,
321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_SETLINK RTM_SETLINK
331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWADDR = 20,
351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWADDR RTM_NEWADDR
361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELADDR,
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELADDR RTM_DELADDR
381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETADDR,
391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETADDR RTM_GETADDR
401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWROUTE = 24,
421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWROUTE RTM_NEWROUTE
431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELROUTE,
441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELROUTE RTM_DELROUTE
451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETROUTE,
461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETROUTE RTM_GETROUTE
471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWNEIGH = 28,
491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWNEIGH RTM_NEWNEIGH
501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELNEIGH,
511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELNEIGH RTM_DELNEIGH
521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETNEIGH,
531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETNEIGH RTM_GETNEIGH
541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWRULE = 32,
561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWRULE RTM_NEWRULE
571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELRULE,
581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELRULE RTM_DELRULE
591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETRULE,
601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETRULE RTM_GETRULE
611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWQDISC = 36,
631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWQDISC RTM_NEWQDISC
641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELQDISC,
651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELQDISC RTM_DELQDISC
661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETQDISC,
671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETQDISC RTM_GETQDISC
681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWTCLASS = 40,
701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWTCLASS RTM_NEWTCLASS
711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELTCLASS,
721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELTCLASS RTM_DELTCLASS
731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETTCLASS,
741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETTCLASS RTM_GETTCLASS
751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWTFILTER = 44,
771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWTFILTER RTM_NEWTFILTER
781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELTFILTER,
791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELTFILTER RTM_DELTFILTER
801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETTFILTER,
811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETTFILTER RTM_GETTFILTER
821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWACTION = 48,
841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWACTION RTM_NEWACTION
851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_DELACTION,
861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_DELACTION RTM_DELACTION
871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETACTION,
881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETACTION RTM_GETACTION
891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWPREFIX = 52,
911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWPREFIX RTM_NEWPREFIX
921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETMULTICAST = 58,
941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETMULTICAST RTM_GETMULTICAST
951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETANYCAST = 62,
971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETANYCAST RTM_GETANYCAST
981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_NEWNEIGHTBL = 64,
1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_GETNEIGHTBL = 66,
1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTM_SETNEIGHTBL,
1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1069163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTM_NEWNDUSEROPT = 68,
1079163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
1089163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
1099163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTM_NEWADDRLABEL = 72,
1109163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
1119163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTM_DELADDRLABEL,
1129163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTM_DELADDRLABEL RTM_DELADDRLABEL
1139163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTM_GETADDRLABEL,
1149163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTM_GETADDRLABEL RTM_GETADDRLABEL
1159163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
1169163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTM_GETDCB = 78,
1179163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTM_GETDCB RTM_GETDCB
1189163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTM_SETDCB,
1199163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTM_SETDCB RTM_SETDCB
1209163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __RTM_MAX,
1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rtattr
1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short rta_len;
1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short rta_type;
1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_ALIGNTO 4
1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) &&   (rta)->rta_len >= sizeof(struct rtattr) &&   (rta)->rta_len <= (len))
1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len),   (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rtmsg
1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_family;
1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_dst_len;
1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_src_len;
1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_tos;
1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_table;
1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_protocol;
1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_scope;
1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtm_type;
1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned rtm_flags;
1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum
1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_UNSPEC,
1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_UNICAST,
1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_LOCAL,
1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_BROADCAST,
1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_ANYCAST,
1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_MULTICAST,
1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_BLACKHOLE,
1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_UNREACHABLE,
1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_PROHIBIT,
1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_THROW,
1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_NAT,
1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTN_XRESOLVE,
1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __RTN_MAX
1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTN_MAX (__RTN_MAX - 1)
1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_UNSPEC 0
1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_REDIRECT 1
1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_KERNEL 2
1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_BOOT 3
1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_STATIC 4
1831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_GATED 8
1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_RA 9
1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_MRT 10
1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_ZEBRA 11
1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_BIRD 12
1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_DNROUTED 13
1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_XORP 14
1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTPROT_NTK 15
1929163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTPROT_DHCP 16
1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum rt_scope_t
1951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_SCOPE_UNIVERSE=0,
1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_SCOPE_SITE=200,
1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_SCOPE_LINK=253,
2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_SCOPE_HOST=254,
2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_SCOPE_NOWHERE=255
2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_F_NOTIFY 0x100
2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_F_CLONED 0x200
2061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_F_EQUALIZE 0x400
2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_F_PREFIX 0x800
2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum rt_class_t
2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_TABLE_UNSPEC=0,
2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2139163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RT_TABLE_COMPAT=252,
2141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_TABLE_DEFAULT=253,
2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_TABLE_MAIN=254,
2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RT_TABLE_LOCAL=255,
2179163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RT_TABLE_MAX=0xFFFFFFFF
2181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
2191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum rtattr_type_t
2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_UNSPEC,
2231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_DST,
2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_SRC,
2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_IIF,
2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_OIF,
2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_GATEWAY,
2281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_PRIORITY,
2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_PREFSRC,
2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_METRICS,
2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_MULTIPATH,
2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_PROTOINFO,
2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_FLOW,
2341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_CACHEINFO,
2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_SESSION,
2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTA_MP_ALGO,
2379163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTA_TABLE,
2381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __RTA_MAX
2391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
2401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTA_MAX (__RTA_MAX - 1)
2421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
2441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
2451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rtnexthop
2471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
2481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short rtnh_len;
2491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtnh_flags;
2501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtnh_hops;
2511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int rtnh_ifindex;
2521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
2531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_F_DEAD 1
2551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_F_PERVASIVE 2
2561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_F_ONLINK 4
2571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_ALIGNTO 4
2591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
2601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) &&   ((int)(rtnh)->rtnh_len) <= (len))
2611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
2621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
2631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
2641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
2651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rta_cacheinfo
2671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
2681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_clntref;
2691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_lastuse;
2701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __s32 rta_expires;
2711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_error;
2721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_used;
2731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNETLINK_HAVE_PEERINFO 1
2751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_id;
2761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_ts;
2771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 rta_tsage;
2781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
2791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
2801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum
2811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
2821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_UNSPEC,
2831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_UNSPEC RTAX_UNSPEC
2841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_LOCK,
2851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_LOCK RTAX_LOCK
2861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_MTU,
2871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_MTU RTAX_MTU
2881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_WINDOW,
2891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_WINDOW RTAX_WINDOW
2901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_RTT,
2911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_RTT RTAX_RTT
2921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_RTTVAR,
2931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_RTTVAR RTAX_RTTVAR
2941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_SSTHRESH,
2951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_SSTHRESH RTAX_SSTHRESH
2961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_CWND,
2971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_CWND RTAX_CWND
2981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_ADVMSS,
2991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_ADVMSS RTAX_ADVMSS
3001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_REORDERING,
3011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_REORDERING RTAX_REORDERING
3021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_HOPLIMIT,
3031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_HOPLIMIT RTAX_HOPLIMIT
3041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_INITCWND,
3051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_INITCWND RTAX_INITCWND
3061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTAX_FEATURES,
3071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_FEATURES RTAX_FEATURES
3089163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTAX_RTO_MIN,
3099163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTAX_RTO_MIN RTAX_RTO_MIN
3101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __RTAX_MAX
3111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_MAX (__RTAX_MAX - 1)
3141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_FEATURE_ECN 0x00000001
3161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_FEATURE_SACK 0x00000002
3171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_FEATURE_TIMESTAMP 0x00000004
3181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTAX_FEATURE_ALLFRAG 0x00000008
3191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rta_session
3211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u8 proto;
3231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u8 pad1;
3241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u16 pad2;
3251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project union {
3271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct {
3281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u16 sport;
3291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u16 dport;
3301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } ports;
3311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct {
3331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u8 type;
3341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u8 code;
3351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u16 ident;
3361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } icmpt;
3371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 spi;
3391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } u;
3401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rtgenmsg
3431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char rtgen_family;
3451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct ifinfomsg
3481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char ifi_family;
3501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char __ifi_pad;
3511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short ifi_type;
3521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int ifi_index;
3531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned ifi_flags;
3541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned ifi_change;
3551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct prefixmsg
3581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char prefix_family;
3601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char prefix_pad1;
3611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short prefix_pad2;
3621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int prefix_ifindex;
3631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char prefix_type;
3641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char prefix_len;
3651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char prefix_flags;
3661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char prefix_pad3;
3671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum
3701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project PREFIX_UNSPEC,
3721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project PREFIX_ADDRESS,
3731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project PREFIX_CACHEINFO,
3741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __PREFIX_MAX
3751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define PREFIX_MAX (__PREFIX_MAX - 1)
3781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct prefix_cacheinfo
3801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 preferred_time;
3821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 valid_time;
3831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct tcmsg
3861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char tcm_family;
3881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char tcm__pad1;
3891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short tcm__pad2;
3901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int tcm_ifindex;
3911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 tcm_handle;
3921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 tcm_parent;
3931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u32 tcm_info;
3941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
3951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
3961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum
3971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
3981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_UNSPEC,
3991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_KIND,
4001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_OPTIONS,
4011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_STATS,
4021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_XSTATS,
4031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_RATE,
4041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_FCNT,
4051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project TCA_STATS2,
4069163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat TCA_STAB,
4071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __TCA_MAX
4081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
4091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TCA_MAX (__TCA_MAX - 1)
4111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
4131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
4141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4159163872132a3e92f986b1d684badb1dd4482ad8eSan Mehatstruct nduseroptmsg
4169163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat{
4179163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat unsigned char nduseropt_family;
4189163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat unsigned char nduseropt_pad1;
4199163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat unsigned short nduseropt_opts_len;
4209163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat int nduseropt_ifindex;
4219163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat __u8 nduseropt_icmp_type;
4229163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat __u8 nduseropt_icmp_code;
4239163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat unsigned short nduseropt_pad2;
4249163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat unsigned int nduseropt_pad3;
4259163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
4269163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat};
4279163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
4289163872132a3e92f986b1d684badb1dd4482ad8eSan Mehatenum
4299163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat{
4309163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat NDUSEROPT_UNSPEC,
4319163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat NDUSEROPT_SRCADDR,
4329163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat __NDUSEROPT_MAX
4339163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat};
4349163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
4359163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
4369163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat
4371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_LINK 1
4381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_NOTIFY 2
4391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_NEIGH 4
4401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_TC 8
4411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV4_IFADDR 0x10
4431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV4_MROUTE 0x20
4441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV4_ROUTE 0x40
4451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV4_RULE 0x80
4461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV6_IFADDR 0x100
4481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV6_MROUTE 0x200
4491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV6_ROUTE 0x400
4501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV6_IFINFO 0x800
4511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_DECnet_IFADDR 0x1000
4531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_DECnet_ROUTE 0x4000
4541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTMGRP_IPV6_PREFIX 0x20000
4561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
4571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectenum rtnetlink_groups {
4581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_NONE,
4591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_NONE RTNLGRP_NONE
4601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_LINK,
4611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_LINK RTNLGRP_LINK
4621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_NOTIFY,
4631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
4641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_NEIGH,
4651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_NEIGH RTNLGRP_NEIGH
4661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_TC,
4671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_TC RTNLGRP_TC
4681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV4_IFADDR,
4691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
4701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV4_MROUTE,
4711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
4721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV4_ROUTE,
4731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
4741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV4_RULE,
4751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
4761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV6_IFADDR,
4771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
4781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV6_MROUTE,
4791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
4801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV6_ROUTE,
4811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
4821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV6_IFINFO,
4831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
4841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_DECnet_IFADDR,
4851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
4861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_NOP2,
4871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_DECnet_ROUTE,
4881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
4899163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTNLGRP_DECnet_RULE,
4909163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
4911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_NOP4,
4921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project RTNLGRP_IPV6_PREFIX,
4931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
4949163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTNLGRP_IPV6_RULE,
4959163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
4969163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTNLGRP_ND_USEROPT,
4979163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
4989163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTNLGRP_PHONET_IFADDR,
4999163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
5009163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat RTNLGRP_PHONET_ROUTE,
5019163872132a3e92f986b1d684badb1dd4482ad8eSan Mehat#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
5021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __RTNLGRP_MAX
5031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
5041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
5051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
5061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct tcamsg
5071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project{
5081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char tca_family;
5091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char tca__pad1;
5101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short tca__pad2;
5111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project};
5121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
5131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
5141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TCA_ACT_TAB 1
5151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define TCAA_MAX 1
5161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
5171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
518