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