| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 1 | /**************************************************************************** | 
|  | 2 | **************************************************************************** | 
|  | 3 | *** | 
|  | 4 | ***   This header was automatically generated from a Linux kernel header | 
|  | 5 | ***   of the same name, to make information necessary for userspace to | 
|  | 6 | ***   call into the kernel available to libc.  It contains only constants, | 
|  | 7 | ***   structures, and macros generated from the original header, and thus, | 
|  | 8 | ***   contains no copyrightable information. | 
|  | 9 | *** | 
|  | 10 | **************************************************************************** | 
|  | 11 | ****************************************************************************/ | 
|  | 12 | #ifndef __LINUX_RTNETLINK_H | 
|  | 13 | #define __LINUX_RTNETLINK_H | 
|  | 14 |  | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 15 | #include <linux/types.h> | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 16 | #include <linux/netlink.h> | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 17 | #include <linux/if_link.h> | 
|  | 18 | #include <linux/if_addr.h> | 
|  | 19 | #include <linux/neighbour.h> | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 20 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 21 | #define RTNL_FAMILY_IPMR 128 | 
|  | 22 | #define RTNL_FAMILY_IP6MR 129 | 
|  | 23 | #define RTNL_FAMILY_MAX 129 | 
|  | 24 |  | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 25 | enum { | 
|  | 26 | RTM_BASE = 16, | 
|  | 27 | #define RTM_BASE RTM_BASE | 
|  | 28 |  | 
|  | 29 | RTM_NEWLINK = 16, | 
|  | 30 | #define RTM_NEWLINK RTM_NEWLINK | 
|  | 31 | RTM_DELLINK, | 
|  | 32 | #define RTM_DELLINK RTM_DELLINK | 
|  | 33 | RTM_GETLINK, | 
|  | 34 | #define RTM_GETLINK RTM_GETLINK | 
|  | 35 | RTM_SETLINK, | 
|  | 36 | #define RTM_SETLINK RTM_SETLINK | 
|  | 37 |  | 
|  | 38 | RTM_NEWADDR = 20, | 
|  | 39 | #define RTM_NEWADDR RTM_NEWADDR | 
|  | 40 | RTM_DELADDR, | 
|  | 41 | #define RTM_DELADDR RTM_DELADDR | 
|  | 42 | RTM_GETADDR, | 
|  | 43 | #define RTM_GETADDR RTM_GETADDR | 
|  | 44 |  | 
|  | 45 | RTM_NEWROUTE = 24, | 
|  | 46 | #define RTM_NEWROUTE RTM_NEWROUTE | 
|  | 47 | RTM_DELROUTE, | 
|  | 48 | #define RTM_DELROUTE RTM_DELROUTE | 
|  | 49 | RTM_GETROUTE, | 
|  | 50 | #define RTM_GETROUTE RTM_GETROUTE | 
|  | 51 |  | 
|  | 52 | RTM_NEWNEIGH = 28, | 
|  | 53 | #define RTM_NEWNEIGH RTM_NEWNEIGH | 
|  | 54 | RTM_DELNEIGH, | 
|  | 55 | #define RTM_DELNEIGH RTM_DELNEIGH | 
|  | 56 | RTM_GETNEIGH, | 
|  | 57 | #define RTM_GETNEIGH RTM_GETNEIGH | 
|  | 58 |  | 
|  | 59 | RTM_NEWRULE = 32, | 
|  | 60 | #define RTM_NEWRULE RTM_NEWRULE | 
|  | 61 | RTM_DELRULE, | 
|  | 62 | #define RTM_DELRULE RTM_DELRULE | 
|  | 63 | RTM_GETRULE, | 
|  | 64 | #define RTM_GETRULE RTM_GETRULE | 
|  | 65 |  | 
|  | 66 | RTM_NEWQDISC = 36, | 
|  | 67 | #define RTM_NEWQDISC RTM_NEWQDISC | 
|  | 68 | RTM_DELQDISC, | 
|  | 69 | #define RTM_DELQDISC RTM_DELQDISC | 
|  | 70 | RTM_GETQDISC, | 
|  | 71 | #define RTM_GETQDISC RTM_GETQDISC | 
|  | 72 |  | 
|  | 73 | RTM_NEWTCLASS = 40, | 
|  | 74 | #define RTM_NEWTCLASS RTM_NEWTCLASS | 
|  | 75 | RTM_DELTCLASS, | 
|  | 76 | #define RTM_DELTCLASS RTM_DELTCLASS | 
|  | 77 | RTM_GETTCLASS, | 
|  | 78 | #define RTM_GETTCLASS RTM_GETTCLASS | 
|  | 79 |  | 
|  | 80 | RTM_NEWTFILTER = 44, | 
|  | 81 | #define RTM_NEWTFILTER RTM_NEWTFILTER | 
|  | 82 | RTM_DELTFILTER, | 
|  | 83 | #define RTM_DELTFILTER RTM_DELTFILTER | 
|  | 84 | RTM_GETTFILTER, | 
|  | 85 | #define RTM_GETTFILTER RTM_GETTFILTER | 
|  | 86 |  | 
|  | 87 | RTM_NEWACTION = 48, | 
|  | 88 | #define RTM_NEWACTION RTM_NEWACTION | 
|  | 89 | RTM_DELACTION, | 
|  | 90 | #define RTM_DELACTION RTM_DELACTION | 
|  | 91 | RTM_GETACTION, | 
|  | 92 | #define RTM_GETACTION RTM_GETACTION | 
|  | 93 |  | 
|  | 94 | RTM_NEWPREFIX = 52, | 
|  | 95 | #define RTM_NEWPREFIX RTM_NEWPREFIX | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 96 |  | 
|  | 97 | RTM_GETMULTICAST = 58, | 
|  | 98 | #define RTM_GETMULTICAST RTM_GETMULTICAST | 
|  | 99 |  | 
|  | 100 | RTM_GETANYCAST = 62, | 
|  | 101 | #define RTM_GETANYCAST RTM_GETANYCAST | 
|  | 102 |  | 
|  | 103 | RTM_NEWNEIGHTBL = 64, | 
|  | 104 | #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL | 
|  | 105 | RTM_GETNEIGHTBL = 66, | 
|  | 106 | #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL | 
|  | 107 | RTM_SETNEIGHTBL, | 
|  | 108 | #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL | 
|  | 109 |  | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 110 | RTM_NEWNDUSEROPT = 68, | 
|  | 111 | #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT | 
|  | 112 |  | 
|  | 113 | RTM_NEWADDRLABEL = 72, | 
|  | 114 | #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL | 
|  | 115 | RTM_DELADDRLABEL, | 
|  | 116 | #define RTM_DELADDRLABEL RTM_DELADDRLABEL | 
|  | 117 | RTM_GETADDRLABEL, | 
|  | 118 | #define RTM_GETADDRLABEL RTM_GETADDRLABEL | 
|  | 119 |  | 
|  | 120 | RTM_GETDCB = 78, | 
|  | 121 | #define RTM_GETDCB RTM_GETDCB | 
|  | 122 | RTM_SETDCB, | 
|  | 123 | #define RTM_SETDCB RTM_SETDCB | 
|  | 124 |  | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 125 | __RTM_MAX, | 
|  | 126 | #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) | 
|  | 127 | }; | 
|  | 128 |  | 
|  | 129 | #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE) | 
|  | 130 | #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2) | 
|  | 131 | #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2) | 
|  | 132 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 133 | struct rtattr { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 134 | unsigned short rta_len; | 
|  | 135 | unsigned short rta_type; | 
|  | 136 | }; | 
|  | 137 |  | 
|  | 138 | #define RTA_ALIGNTO 4 | 
|  | 139 | #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) | 
|  | 140 | #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) &&   (rta)->rta_len >= sizeof(struct rtattr) &&   (rta)->rta_len <= (len)) | 
|  | 141 | #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len),   (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len))) | 
|  | 142 | #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len)) | 
|  | 143 | #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len)) | 
|  | 144 | #define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0))) | 
|  | 145 | #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0)) | 
|  | 146 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 147 | struct rtmsg { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 148 | unsigned char rtm_family; | 
|  | 149 | unsigned char rtm_dst_len; | 
|  | 150 | unsigned char rtm_src_len; | 
|  | 151 | unsigned char rtm_tos; | 
|  | 152 |  | 
|  | 153 | unsigned char rtm_table; | 
|  | 154 | unsigned char rtm_protocol; | 
|  | 155 | unsigned char rtm_scope; | 
|  | 156 | unsigned char rtm_type; | 
|  | 157 |  | 
|  | 158 | unsigned rtm_flags; | 
|  | 159 | }; | 
|  | 160 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 161 | enum { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 162 | RTN_UNSPEC, | 
|  | 163 | RTN_UNICAST, | 
|  | 164 | RTN_LOCAL, | 
|  | 165 | RTN_BROADCAST, | 
|  | 166 | RTN_ANYCAST, | 
|  | 167 | RTN_MULTICAST, | 
|  | 168 | RTN_BLACKHOLE, | 
|  | 169 | RTN_UNREACHABLE, | 
|  | 170 | RTN_PROHIBIT, | 
|  | 171 | RTN_THROW, | 
|  | 172 | RTN_NAT, | 
|  | 173 | RTN_XRESOLVE, | 
|  | 174 | __RTN_MAX | 
|  | 175 | }; | 
|  | 176 |  | 
|  | 177 | #define RTN_MAX (__RTN_MAX - 1) | 
|  | 178 |  | 
|  | 179 | #define RTPROT_UNSPEC 0 | 
|  | 180 | #define RTPROT_REDIRECT 1 | 
|  | 181 | #define RTPROT_KERNEL 2 | 
|  | 182 | #define RTPROT_BOOT 3 | 
|  | 183 | #define RTPROT_STATIC 4 | 
|  | 184 |  | 
|  | 185 | #define RTPROT_GATED 8 | 
|  | 186 | #define RTPROT_RA 9 | 
|  | 187 | #define RTPROT_MRT 10 | 
|  | 188 | #define RTPROT_ZEBRA 11 | 
|  | 189 | #define RTPROT_BIRD 12 | 
|  | 190 | #define RTPROT_DNROUTED 13 | 
|  | 191 | #define RTPROT_XORP 14 | 
|  | 192 | #define RTPROT_NTK 15 | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 193 | #define RTPROT_DHCP 16 | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 194 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 195 | enum rt_scope_t { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 196 | RT_SCOPE_UNIVERSE=0, | 
|  | 197 |  | 
|  | 198 | RT_SCOPE_SITE=200, | 
|  | 199 | RT_SCOPE_LINK=253, | 
|  | 200 | RT_SCOPE_HOST=254, | 
|  | 201 | RT_SCOPE_NOWHERE=255 | 
|  | 202 | }; | 
|  | 203 |  | 
|  | 204 | #define RTM_F_NOTIFY 0x100 | 
|  | 205 | #define RTM_F_CLONED 0x200 | 
|  | 206 | #define RTM_F_EQUALIZE 0x400 | 
|  | 207 | #define RTM_F_PREFIX 0x800 | 
|  | 208 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 209 | enum rt_class_t { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 210 | RT_TABLE_UNSPEC=0, | 
|  | 211 |  | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 212 | RT_TABLE_COMPAT=252, | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 213 | RT_TABLE_DEFAULT=253, | 
|  | 214 | RT_TABLE_MAIN=254, | 
|  | 215 | RT_TABLE_LOCAL=255, | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 216 | RT_TABLE_MAX=0xFFFFFFFF | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 217 | }; | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 218 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 219 | enum rtattr_type_t { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 220 | RTA_UNSPEC, | 
|  | 221 | RTA_DST, | 
|  | 222 | RTA_SRC, | 
|  | 223 | RTA_IIF, | 
|  | 224 | RTA_OIF, | 
|  | 225 | RTA_GATEWAY, | 
|  | 226 | RTA_PRIORITY, | 
|  | 227 | RTA_PREFSRC, | 
|  | 228 | RTA_METRICS, | 
|  | 229 | RTA_MULTIPATH, | 
|  | 230 | RTA_PROTOINFO, | 
|  | 231 | RTA_FLOW, | 
|  | 232 | RTA_CACHEINFO, | 
|  | 233 | RTA_SESSION, | 
|  | 234 | RTA_MP_ALGO, | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 235 | RTA_TABLE, | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 236 | RTA_MARK, | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 237 | __RTA_MAX | 
|  | 238 | }; | 
|  | 239 |  | 
|  | 240 | #define RTA_MAX (__RTA_MAX - 1) | 
|  | 241 |  | 
|  | 242 | #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) | 
|  | 243 | #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) | 
|  | 244 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 245 | struct rtnexthop { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 246 | unsigned short rtnh_len; | 
|  | 247 | unsigned char rtnh_flags; | 
|  | 248 | unsigned char rtnh_hops; | 
|  | 249 | int rtnh_ifindex; | 
|  | 250 | }; | 
|  | 251 |  | 
|  | 252 | #define RTNH_F_DEAD 1 | 
|  | 253 | #define RTNH_F_PERVASIVE 2 | 
|  | 254 | #define RTNH_F_ONLINK 4 | 
|  | 255 |  | 
|  | 256 | #define RTNH_ALIGNTO 4 | 
|  | 257 | #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) ) | 
|  | 258 | #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) &&   ((int)(rtnh)->rtnh_len) <= (len)) | 
|  | 259 | #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) | 
|  | 260 | #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len)) | 
|  | 261 | #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len)) | 
|  | 262 | #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) | 
|  | 263 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 264 | struct rta_cacheinfo { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 265 | __u32 rta_clntref; | 
|  | 266 | __u32 rta_lastuse; | 
|  | 267 | __s32 rta_expires; | 
|  | 268 | __u32 rta_error; | 
|  | 269 | __u32 rta_used; | 
|  | 270 |  | 
|  | 271 | #define RTNETLINK_HAVE_PEERINFO 1 | 
|  | 272 | __u32 rta_id; | 
|  | 273 | __u32 rta_ts; | 
|  | 274 | __u32 rta_tsage; | 
|  | 275 | }; | 
|  | 276 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 277 | enum { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 278 | RTAX_UNSPEC, | 
|  | 279 | #define RTAX_UNSPEC RTAX_UNSPEC | 
|  | 280 | RTAX_LOCK, | 
|  | 281 | #define RTAX_LOCK RTAX_LOCK | 
|  | 282 | RTAX_MTU, | 
|  | 283 | #define RTAX_MTU RTAX_MTU | 
|  | 284 | RTAX_WINDOW, | 
|  | 285 | #define RTAX_WINDOW RTAX_WINDOW | 
|  | 286 | RTAX_RTT, | 
|  | 287 | #define RTAX_RTT RTAX_RTT | 
|  | 288 | RTAX_RTTVAR, | 
|  | 289 | #define RTAX_RTTVAR RTAX_RTTVAR | 
|  | 290 | RTAX_SSTHRESH, | 
|  | 291 | #define RTAX_SSTHRESH RTAX_SSTHRESH | 
|  | 292 | RTAX_CWND, | 
|  | 293 | #define RTAX_CWND RTAX_CWND | 
|  | 294 | RTAX_ADVMSS, | 
|  | 295 | #define RTAX_ADVMSS RTAX_ADVMSS | 
|  | 296 | RTAX_REORDERING, | 
|  | 297 | #define RTAX_REORDERING RTAX_REORDERING | 
|  | 298 | RTAX_HOPLIMIT, | 
|  | 299 | #define RTAX_HOPLIMIT RTAX_HOPLIMIT | 
|  | 300 | RTAX_INITCWND, | 
|  | 301 | #define RTAX_INITCWND RTAX_INITCWND | 
|  | 302 | RTAX_FEATURES, | 
|  | 303 | #define RTAX_FEATURES RTAX_FEATURES | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 304 | RTAX_RTO_MIN, | 
|  | 305 | #define RTAX_RTO_MIN RTAX_RTO_MIN | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 306 | RTAX_INITRWND, | 
|  | 307 | #define RTAX_INITRWND RTAX_INITRWND | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 308 | __RTAX_MAX | 
|  | 309 | }; | 
|  | 310 |  | 
|  | 311 | #define RTAX_MAX (__RTAX_MAX - 1) | 
|  | 312 |  | 
|  | 313 | #define RTAX_FEATURE_ECN 0x00000001 | 
|  | 314 | #define RTAX_FEATURE_SACK 0x00000002 | 
|  | 315 | #define RTAX_FEATURE_TIMESTAMP 0x00000004 | 
|  | 316 | #define RTAX_FEATURE_ALLFRAG 0x00000008 | 
|  | 317 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 318 | struct rta_session { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 319 | __u8 proto; | 
|  | 320 | __u8 pad1; | 
|  | 321 | __u16 pad2; | 
|  | 322 |  | 
|  | 323 | union { | 
|  | 324 | struct { | 
|  | 325 | __u16 sport; | 
|  | 326 | __u16 dport; | 
|  | 327 | } ports; | 
|  | 328 |  | 
|  | 329 | struct { | 
|  | 330 | __u8 type; | 
|  | 331 | __u8 code; | 
|  | 332 | __u16 ident; | 
|  | 333 | } icmpt; | 
|  | 334 |  | 
|  | 335 | __u32 spi; | 
|  | 336 | } u; | 
|  | 337 | }; | 
|  | 338 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 339 | struct rtgenmsg { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 340 | unsigned char rtgen_family; | 
|  | 341 | }; | 
|  | 342 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 343 | struct ifinfomsg { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 344 | unsigned char ifi_family; | 
|  | 345 | unsigned char __ifi_pad; | 
|  | 346 | unsigned short ifi_type; | 
|  | 347 | int ifi_index; | 
|  | 348 | unsigned ifi_flags; | 
|  | 349 | unsigned ifi_change; | 
|  | 350 | }; | 
|  | 351 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 352 | struct prefixmsg { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 353 | unsigned char prefix_family; | 
|  | 354 | unsigned char prefix_pad1; | 
|  | 355 | unsigned short prefix_pad2; | 
|  | 356 | int prefix_ifindex; | 
|  | 357 | unsigned char prefix_type; | 
|  | 358 | unsigned char prefix_len; | 
|  | 359 | unsigned char prefix_flags; | 
|  | 360 | unsigned char prefix_pad3; | 
|  | 361 | }; | 
|  | 362 |  | 
|  | 363 | enum | 
|  | 364 | { | 
|  | 365 | PREFIX_UNSPEC, | 
|  | 366 | PREFIX_ADDRESS, | 
|  | 367 | PREFIX_CACHEINFO, | 
|  | 368 | __PREFIX_MAX | 
|  | 369 | }; | 
|  | 370 |  | 
|  | 371 | #define PREFIX_MAX (__PREFIX_MAX - 1) | 
|  | 372 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 373 | struct prefix_cacheinfo { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 374 | __u32 preferred_time; | 
|  | 375 | __u32 valid_time; | 
|  | 376 | }; | 
|  | 377 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 378 | struct tcmsg { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 379 | unsigned char tcm_family; | 
|  | 380 | unsigned char tcm__pad1; | 
|  | 381 | unsigned short tcm__pad2; | 
|  | 382 | int tcm_ifindex; | 
|  | 383 | __u32 tcm_handle; | 
|  | 384 | __u32 tcm_parent; | 
|  | 385 | __u32 tcm_info; | 
|  | 386 | }; | 
|  | 387 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 388 | enum { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 389 | TCA_UNSPEC, | 
|  | 390 | TCA_KIND, | 
|  | 391 | TCA_OPTIONS, | 
|  | 392 | TCA_STATS, | 
|  | 393 | TCA_XSTATS, | 
|  | 394 | TCA_RATE, | 
|  | 395 | TCA_FCNT, | 
|  | 396 | TCA_STATS2, | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 397 | TCA_STAB, | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 398 | __TCA_MAX | 
|  | 399 | }; | 
|  | 400 |  | 
|  | 401 | #define TCA_MAX (__TCA_MAX - 1) | 
|  | 402 |  | 
|  | 403 | #define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg)))) | 
|  | 404 | #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg)) | 
|  | 405 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 406 | struct nduseroptmsg { | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 407 | unsigned char nduseropt_family; | 
|  | 408 | unsigned char nduseropt_pad1; | 
|  | 409 | unsigned short nduseropt_opts_len; | 
|  | 410 | int nduseropt_ifindex; | 
|  | 411 | __u8 nduseropt_icmp_type; | 
|  | 412 | __u8 nduseropt_icmp_code; | 
|  | 413 | unsigned short nduseropt_pad2; | 
|  | 414 | unsigned int nduseropt_pad3; | 
|  | 415 |  | 
|  | 416 | }; | 
|  | 417 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 418 | enum { | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 419 | NDUSEROPT_UNSPEC, | 
|  | 420 | NDUSEROPT_SRCADDR, | 
|  | 421 | __NDUSEROPT_MAX | 
|  | 422 | }; | 
|  | 423 |  | 
|  | 424 | #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1) | 
|  | 425 |  | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 426 | #define RTMGRP_LINK 1 | 
|  | 427 | #define RTMGRP_NOTIFY 2 | 
|  | 428 | #define RTMGRP_NEIGH 4 | 
|  | 429 | #define RTMGRP_TC 8 | 
|  | 430 |  | 
|  | 431 | #define RTMGRP_IPV4_IFADDR 0x10 | 
|  | 432 | #define RTMGRP_IPV4_MROUTE 0x20 | 
|  | 433 | #define RTMGRP_IPV4_ROUTE 0x40 | 
|  | 434 | #define RTMGRP_IPV4_RULE 0x80 | 
|  | 435 |  | 
|  | 436 | #define RTMGRP_IPV6_IFADDR 0x100 | 
|  | 437 | #define RTMGRP_IPV6_MROUTE 0x200 | 
|  | 438 | #define RTMGRP_IPV6_ROUTE 0x400 | 
|  | 439 | #define RTMGRP_IPV6_IFINFO 0x800 | 
|  | 440 |  | 
|  | 441 | #define RTMGRP_DECnet_IFADDR 0x1000 | 
|  | 442 | #define RTMGRP_DECnet_ROUTE 0x4000 | 
|  | 443 |  | 
|  | 444 | #define RTMGRP_IPV6_PREFIX 0x20000 | 
|  | 445 |  | 
|  | 446 | enum rtnetlink_groups { | 
|  | 447 | RTNLGRP_NONE, | 
|  | 448 | #define RTNLGRP_NONE RTNLGRP_NONE | 
|  | 449 | RTNLGRP_LINK, | 
|  | 450 | #define RTNLGRP_LINK RTNLGRP_LINK | 
|  | 451 | RTNLGRP_NOTIFY, | 
|  | 452 | #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY | 
|  | 453 | RTNLGRP_NEIGH, | 
|  | 454 | #define RTNLGRP_NEIGH RTNLGRP_NEIGH | 
|  | 455 | RTNLGRP_TC, | 
|  | 456 | #define RTNLGRP_TC RTNLGRP_TC | 
|  | 457 | RTNLGRP_IPV4_IFADDR, | 
|  | 458 | #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR | 
|  | 459 | RTNLGRP_IPV4_MROUTE, | 
|  | 460 | #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE | 
|  | 461 | RTNLGRP_IPV4_ROUTE, | 
|  | 462 | #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE | 
|  | 463 | RTNLGRP_IPV4_RULE, | 
|  | 464 | #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE | 
|  | 465 | RTNLGRP_IPV6_IFADDR, | 
|  | 466 | #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR | 
|  | 467 | RTNLGRP_IPV6_MROUTE, | 
|  | 468 | #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE | 
|  | 469 | RTNLGRP_IPV6_ROUTE, | 
|  | 470 | #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE | 
|  | 471 | RTNLGRP_IPV6_IFINFO, | 
|  | 472 | #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO | 
|  | 473 | RTNLGRP_DECnet_IFADDR, | 
|  | 474 | #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR | 
|  | 475 | RTNLGRP_NOP2, | 
|  | 476 | RTNLGRP_DECnet_ROUTE, | 
|  | 477 | #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 478 | RTNLGRP_DECnet_RULE, | 
|  | 479 | #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 480 | RTNLGRP_NOP4, | 
|  | 481 | RTNLGRP_IPV6_PREFIX, | 
|  | 482 | #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX | 
| San Mehat | 9163872 | 2010-04-06 18:49:49 -0700 | [diff] [blame] | 483 | RTNLGRP_IPV6_RULE, | 
|  | 484 | #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE | 
|  | 485 | RTNLGRP_ND_USEROPT, | 
|  | 486 | #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT | 
|  | 487 | RTNLGRP_PHONET_IFADDR, | 
|  | 488 | #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR | 
|  | 489 | RTNLGRP_PHONET_ROUTE, | 
|  | 490 | #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 491 | __RTNLGRP_MAX | 
|  | 492 | }; | 
|  | 493 | #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) | 
|  | 494 |  | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 495 | struct tcamsg { | 
| The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 496 | unsigned char tca_family; | 
|  | 497 | unsigned char tca__pad1; | 
|  | 498 | unsigned short tca__pad2; | 
|  | 499 | }; | 
|  | 500 | #define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg)))) | 
|  | 501 | #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg)) | 
|  | 502 | #define TCA_ACT_TAB 1 | 
|  | 503 | #define TCAA_MAX 1 | 
|  | 504 |  | 
|  | 505 | #endif | 
| Dmitry Shmidt | ce69c5e | 2011-01-06 15:30:35 -0800 | [diff] [blame] | 506 |  |