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 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19#ifndef __LINUX_PKT_CLS_H 20#define __LINUX_PKT_CLS_H 21#include <linux/types.h> 22#include <linux/pkt_sched.h> 23#define TC_COOKIE_MAX_SIZE 16 24enum { 25 TCA_ACT_UNSPEC, 26 TCA_ACT_KIND, 27 TCA_ACT_OPTIONS, 28 TCA_ACT_INDEX, 29 TCA_ACT_STATS, 30 TCA_ACT_PAD, 31 TCA_ACT_COOKIE, 32 __TCA_ACT_MAX 33}; 34#define TCA_ACT_MAX __TCA_ACT_MAX 35#define TCA_OLD_COMPAT (TCA_ACT_MAX + 1) 36#define TCA_ACT_MAX_PRIO 32 37#define TCA_ACT_BIND 1 38#define TCA_ACT_NOBIND 0 39#define TCA_ACT_UNBIND 1 40#define TCA_ACT_NOUNBIND 0 41#define TCA_ACT_REPLACE 1 42#define TCA_ACT_NOREPLACE 0 43#define TC_ACT_UNSPEC (- 1) 44#define TC_ACT_OK 0 45#define TC_ACT_RECLASSIFY 1 46#define TC_ACT_SHOT 2 47#define TC_ACT_PIPE 3 48#define TC_ACT_STOLEN 4 49#define TC_ACT_QUEUED 5 50#define TC_ACT_REPEAT 6 51#define TC_ACT_REDIRECT 7 52#define TC_ACT_TRAP 8 53#define __TC_ACT_EXT_SHIFT 28 54#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT) 55#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1) 56#define TC_ACT_EXT_CMP(combined,opcode) (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode) 57#define TC_ACT_JUMP __TC_ACT_EXT(1) 58#define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2) 59enum { 60 TCA_ID_UNSPEC = 0, 61 TCA_ID_POLICE = 1, 62 __TCA_ID_MAX = 255 63}; 64#define TCA_ID_MAX __TCA_ID_MAX 65struct tc_police { 66 __u32 index; 67 int action; 68#define TC_POLICE_UNSPEC TC_ACT_UNSPEC 69#define TC_POLICE_OK TC_ACT_OK 70#define TC_POLICE_RECLASSIFY TC_ACT_RECLASSIFY 71#define TC_POLICE_SHOT TC_ACT_SHOT 72#define TC_POLICE_PIPE TC_ACT_PIPE 73 __u32 limit; 74 __u32 burst; 75 __u32 mtu; 76 struct tc_ratespec rate; 77 struct tc_ratespec peakrate; 78 int refcnt; 79 int bindcnt; 80 __u32 capab; 81}; 82struct tcf_t { 83 __u64 install; 84 __u64 lastuse; 85 __u64 expires; 86 __u64 firstuse; 87}; 88struct tc_cnt { 89 int refcnt; 90 int bindcnt; 91}; 92#define tc_gen __u32 index; __u32 capab; int action; int refcnt; int bindcnt 93enum { 94 TCA_POLICE_UNSPEC, 95 TCA_POLICE_TBF, 96 TCA_POLICE_RATE, 97 TCA_POLICE_PEAKRATE, 98 TCA_POLICE_AVRATE, 99 TCA_POLICE_RESULT, 100 TCA_POLICE_TM, 101 TCA_POLICE_PAD, 102 __TCA_POLICE_MAX 103#define TCA_POLICE_RESULT TCA_POLICE_RESULT 104}; 105#define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1) 106#define TCA_CLS_FLAGS_SKIP_HW (1 << 0) 107#define TCA_CLS_FLAGS_SKIP_SW (1 << 1) 108#define TCA_CLS_FLAGS_IN_HW (1 << 2) 109#define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3) 110#define TC_U32_HTID(h) ((h) & 0xFFF00000) 111#define TC_U32_USERHTID(h) (TC_U32_HTID(h) >> 20) 112#define TC_U32_HASH(h) (((h) >> 12) & 0xFF) 113#define TC_U32_NODE(h) ((h) & 0xFFF) 114#define TC_U32_KEY(h) ((h) & 0xFFFFF) 115#define TC_U32_UNSPEC 0 116#define TC_U32_ROOT (0xFFF00000) 117enum { 118 TCA_U32_UNSPEC, 119 TCA_U32_CLASSID, 120 TCA_U32_HASH, 121 TCA_U32_LINK, 122 TCA_U32_DIVISOR, 123 TCA_U32_SEL, 124 TCA_U32_POLICE, 125 TCA_U32_ACT, 126 TCA_U32_INDEV, 127 TCA_U32_PCNT, 128 TCA_U32_MARK, 129 TCA_U32_FLAGS, 130 TCA_U32_PAD, 131 __TCA_U32_MAX 132}; 133#define TCA_U32_MAX (__TCA_U32_MAX - 1) 134struct tc_u32_key { 135 __be32 mask; 136 __be32 val; 137 int off; 138 int offmask; 139}; 140struct tc_u32_sel { 141 unsigned char flags; 142 unsigned char offshift; 143 unsigned char nkeys; 144 __be16 offmask; 145 __u16 off; 146 short offoff; 147 short hoff; 148 __be32 hmask; 149 struct tc_u32_key keys[0]; 150}; 151struct tc_u32_mark { 152 __u32 val; 153 __u32 mask; 154 __u32 success; 155}; 156struct tc_u32_pcnt { 157 __u64 rcnt; 158 __u64 rhit; 159 __u64 kcnts[0]; 160}; 161#define TC_U32_TERMINAL 1 162#define TC_U32_OFFSET 2 163#define TC_U32_VAROFFSET 4 164#define TC_U32_EAT 8 165#define TC_U32_MAXDEPTH 8 166enum { 167 TCA_RSVP_UNSPEC, 168 TCA_RSVP_CLASSID, 169 TCA_RSVP_DST, 170 TCA_RSVP_SRC, 171 TCA_RSVP_PINFO, 172 TCA_RSVP_POLICE, 173 TCA_RSVP_ACT, 174 __TCA_RSVP_MAX 175}; 176#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1) 177struct tc_rsvp_gpi { 178 __u32 key; 179 __u32 mask; 180 int offset; 181}; 182struct tc_rsvp_pinfo { 183 struct tc_rsvp_gpi dpi; 184 struct tc_rsvp_gpi spi; 185 __u8 protocol; 186 __u8 tunnelid; 187 __u8 tunnelhdr; 188 __u8 pad; 189}; 190enum { 191 TCA_ROUTE4_UNSPEC, 192 TCA_ROUTE4_CLASSID, 193 TCA_ROUTE4_TO, 194 TCA_ROUTE4_FROM, 195 TCA_ROUTE4_IIF, 196 TCA_ROUTE4_POLICE, 197 TCA_ROUTE4_ACT, 198 __TCA_ROUTE4_MAX 199}; 200#define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1) 201enum { 202 TCA_FW_UNSPEC, 203 TCA_FW_CLASSID, 204 TCA_FW_POLICE, 205 TCA_FW_INDEV, 206 TCA_FW_ACT, 207 TCA_FW_MASK, 208 __TCA_FW_MAX 209}; 210#define TCA_FW_MAX (__TCA_FW_MAX - 1) 211enum { 212 TCA_TCINDEX_UNSPEC, 213 TCA_TCINDEX_HASH, 214 TCA_TCINDEX_MASK, 215 TCA_TCINDEX_SHIFT, 216 TCA_TCINDEX_FALL_THROUGH, 217 TCA_TCINDEX_CLASSID, 218 TCA_TCINDEX_POLICE, 219 TCA_TCINDEX_ACT, 220 __TCA_TCINDEX_MAX 221}; 222#define TCA_TCINDEX_MAX (__TCA_TCINDEX_MAX - 1) 223enum { 224 FLOW_KEY_SRC, 225 FLOW_KEY_DST, 226 FLOW_KEY_PROTO, 227 FLOW_KEY_PROTO_SRC, 228 FLOW_KEY_PROTO_DST, 229 FLOW_KEY_IIF, 230 FLOW_KEY_PRIORITY, 231 FLOW_KEY_MARK, 232 FLOW_KEY_NFCT, 233 FLOW_KEY_NFCT_SRC, 234 FLOW_KEY_NFCT_DST, 235 FLOW_KEY_NFCT_PROTO_SRC, 236 FLOW_KEY_NFCT_PROTO_DST, 237 FLOW_KEY_RTCLASSID, 238 FLOW_KEY_SKUID, 239 FLOW_KEY_SKGID, 240 FLOW_KEY_VLAN_TAG, 241 FLOW_KEY_RXHASH, 242 __FLOW_KEY_MAX, 243}; 244#define FLOW_KEY_MAX (__FLOW_KEY_MAX - 1) 245enum { 246 FLOW_MODE_MAP, 247 FLOW_MODE_HASH, 248}; 249enum { 250 TCA_FLOW_UNSPEC, 251 TCA_FLOW_KEYS, 252 TCA_FLOW_MODE, 253 TCA_FLOW_BASECLASS, 254 TCA_FLOW_RSHIFT, 255 TCA_FLOW_ADDEND, 256 TCA_FLOW_MASK, 257 TCA_FLOW_XOR, 258 TCA_FLOW_DIVISOR, 259 TCA_FLOW_ACT, 260 TCA_FLOW_POLICE, 261 TCA_FLOW_EMATCHES, 262 TCA_FLOW_PERTURB, 263 __TCA_FLOW_MAX 264}; 265#define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1) 266enum { 267 TCA_BASIC_UNSPEC, 268 TCA_BASIC_CLASSID, 269 TCA_BASIC_EMATCHES, 270 TCA_BASIC_ACT, 271 TCA_BASIC_POLICE, 272 __TCA_BASIC_MAX 273}; 274#define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1) 275enum { 276 TCA_CGROUP_UNSPEC, 277 TCA_CGROUP_ACT, 278 TCA_CGROUP_POLICE, 279 TCA_CGROUP_EMATCHES, 280 __TCA_CGROUP_MAX, 281}; 282#define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1) 283#define TCA_BPF_FLAG_ACT_DIRECT (1 << 0) 284enum { 285 TCA_BPF_UNSPEC, 286 TCA_BPF_ACT, 287 TCA_BPF_POLICE, 288 TCA_BPF_CLASSID, 289 TCA_BPF_OPS_LEN, 290 TCA_BPF_OPS, 291 TCA_BPF_FD, 292 TCA_BPF_NAME, 293 TCA_BPF_FLAGS, 294 TCA_BPF_FLAGS_GEN, 295 TCA_BPF_TAG, 296 TCA_BPF_ID, 297 __TCA_BPF_MAX, 298}; 299#define TCA_BPF_MAX (__TCA_BPF_MAX - 1) 300enum { 301 TCA_FLOWER_UNSPEC, 302 TCA_FLOWER_CLASSID, 303 TCA_FLOWER_INDEV, 304 TCA_FLOWER_ACT, 305 TCA_FLOWER_KEY_ETH_DST, 306 TCA_FLOWER_KEY_ETH_DST_MASK, 307 TCA_FLOWER_KEY_ETH_SRC, 308 TCA_FLOWER_KEY_ETH_SRC_MASK, 309 TCA_FLOWER_KEY_ETH_TYPE, 310 TCA_FLOWER_KEY_IP_PROTO, 311 TCA_FLOWER_KEY_IPV4_SRC, 312 TCA_FLOWER_KEY_IPV4_SRC_MASK, 313 TCA_FLOWER_KEY_IPV4_DST, 314 TCA_FLOWER_KEY_IPV4_DST_MASK, 315 TCA_FLOWER_KEY_IPV6_SRC, 316 TCA_FLOWER_KEY_IPV6_SRC_MASK, 317 TCA_FLOWER_KEY_IPV6_DST, 318 TCA_FLOWER_KEY_IPV6_DST_MASK, 319 TCA_FLOWER_KEY_TCP_SRC, 320 TCA_FLOWER_KEY_TCP_DST, 321 TCA_FLOWER_KEY_UDP_SRC, 322 TCA_FLOWER_KEY_UDP_DST, 323 TCA_FLOWER_FLAGS, 324 TCA_FLOWER_KEY_VLAN_ID, 325 TCA_FLOWER_KEY_VLAN_PRIO, 326 TCA_FLOWER_KEY_VLAN_ETH_TYPE, 327 TCA_FLOWER_KEY_ENC_KEY_ID, 328 TCA_FLOWER_KEY_ENC_IPV4_SRC, 329 TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK, 330 TCA_FLOWER_KEY_ENC_IPV4_DST, 331 TCA_FLOWER_KEY_ENC_IPV4_DST_MASK, 332 TCA_FLOWER_KEY_ENC_IPV6_SRC, 333 TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK, 334 TCA_FLOWER_KEY_ENC_IPV6_DST, 335 TCA_FLOWER_KEY_ENC_IPV6_DST_MASK, 336 TCA_FLOWER_KEY_TCP_SRC_MASK, 337 TCA_FLOWER_KEY_TCP_DST_MASK, 338 TCA_FLOWER_KEY_UDP_SRC_MASK, 339 TCA_FLOWER_KEY_UDP_DST_MASK, 340 TCA_FLOWER_KEY_SCTP_SRC_MASK, 341 TCA_FLOWER_KEY_SCTP_DST_MASK, 342 TCA_FLOWER_KEY_SCTP_SRC, 343 TCA_FLOWER_KEY_SCTP_DST, 344 TCA_FLOWER_KEY_ENC_UDP_SRC_PORT, 345 TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK, 346 TCA_FLOWER_KEY_ENC_UDP_DST_PORT, 347 TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK, 348 TCA_FLOWER_KEY_FLAGS, 349 TCA_FLOWER_KEY_FLAGS_MASK, 350 TCA_FLOWER_KEY_ICMPV4_CODE, 351 TCA_FLOWER_KEY_ICMPV4_CODE_MASK, 352 TCA_FLOWER_KEY_ICMPV4_TYPE, 353 TCA_FLOWER_KEY_ICMPV4_TYPE_MASK, 354 TCA_FLOWER_KEY_ICMPV6_CODE, 355 TCA_FLOWER_KEY_ICMPV6_CODE_MASK, 356 TCA_FLOWER_KEY_ICMPV6_TYPE, 357 TCA_FLOWER_KEY_ICMPV6_TYPE_MASK, 358 TCA_FLOWER_KEY_ARP_SIP, 359 TCA_FLOWER_KEY_ARP_SIP_MASK, 360 TCA_FLOWER_KEY_ARP_TIP, 361 TCA_FLOWER_KEY_ARP_TIP_MASK, 362 TCA_FLOWER_KEY_ARP_OP, 363 TCA_FLOWER_KEY_ARP_OP_MASK, 364 TCA_FLOWER_KEY_ARP_SHA, 365 TCA_FLOWER_KEY_ARP_SHA_MASK, 366 TCA_FLOWER_KEY_ARP_THA, 367 TCA_FLOWER_KEY_ARP_THA_MASK, 368 TCA_FLOWER_KEY_MPLS_TTL, 369 TCA_FLOWER_KEY_MPLS_BOS, 370 TCA_FLOWER_KEY_MPLS_TC, 371 TCA_FLOWER_KEY_MPLS_LABEL, 372 TCA_FLOWER_KEY_TCP_FLAGS, 373 TCA_FLOWER_KEY_TCP_FLAGS_MASK, 374 TCA_FLOWER_KEY_IP_TOS, 375 TCA_FLOWER_KEY_IP_TOS_MASK, 376 TCA_FLOWER_KEY_IP_TTL, 377 TCA_FLOWER_KEY_IP_TTL_MASK, 378 __TCA_FLOWER_MAX, 379}; 380#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1) 381enum { 382 TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0), 383}; 384enum { 385 TCA_MATCHALL_UNSPEC, 386 TCA_MATCHALL_CLASSID, 387 TCA_MATCHALL_ACT, 388 TCA_MATCHALL_FLAGS, 389 __TCA_MATCHALL_MAX, 390}; 391#define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1) 392struct tcf_ematch_tree_hdr { 393 __u16 nmatches; 394 __u16 progid; 395}; 396enum { 397 TCA_EMATCH_TREE_UNSPEC, 398 TCA_EMATCH_TREE_HDR, 399 TCA_EMATCH_TREE_LIST, 400 __TCA_EMATCH_TREE_MAX 401}; 402#define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1) 403struct tcf_ematch_hdr { 404 __u16 matchid; 405 __u16 kind; 406 __u16 flags; 407 __u16 pad; 408}; 409#define TCF_EM_REL_END 0 410#define TCF_EM_REL_AND (1 << 0) 411#define TCF_EM_REL_OR (1 << 1) 412#define TCF_EM_INVERT (1 << 2) 413#define TCF_EM_SIMPLE (1 << 3) 414#define TCF_EM_REL_MASK 3 415#define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK) 416enum { 417 TCF_LAYER_LINK, 418 TCF_LAYER_NETWORK, 419 TCF_LAYER_TRANSPORT, 420 __TCF_LAYER_MAX 421}; 422#define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1) 423#define TCF_EM_CONTAINER 0 424#define TCF_EM_CMP 1 425#define TCF_EM_NBYTE 2 426#define TCF_EM_U32 3 427#define TCF_EM_META 4 428#define TCF_EM_TEXT 5 429#define TCF_EM_VLAN 6 430#define TCF_EM_CANID 7 431#define TCF_EM_IPSET 8 432#define TCF_EM_MAX 8 433enum { 434 TCF_EM_PROG_TC 435}; 436enum { 437 TCF_EM_OPND_EQ, 438 TCF_EM_OPND_GT, 439 TCF_EM_OPND_LT 440}; 441#endif 442