1*858ea5e5SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*858ea5e5SAndroid Build Coastguard Worker #ifndef __LINUX_PKT_CLS_H 3*858ea5e5SAndroid Build Coastguard Worker #define __LINUX_PKT_CLS_H 4*858ea5e5SAndroid Build Coastguard Worker 5*858ea5e5SAndroid Build Coastguard Worker #include <linux/types.h> 6*858ea5e5SAndroid Build Coastguard Worker #include <linux/pkt_sched.h> 7*858ea5e5SAndroid Build Coastguard Worker 8*858ea5e5SAndroid Build Coastguard Worker #define TC_COOKIE_MAX_SIZE 16 9*858ea5e5SAndroid Build Coastguard Worker 10*858ea5e5SAndroid Build Coastguard Worker /* Action attributes */ 11*858ea5e5SAndroid Build Coastguard Worker enum { 12*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_UNSPEC, 13*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_KIND, 14*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_OPTIONS, 15*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_INDEX, 16*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_STATS, 17*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_PAD, 18*858ea5e5SAndroid Build Coastguard Worker TCA_ACT_COOKIE, 19*858ea5e5SAndroid Build Coastguard Worker __TCA_ACT_MAX 20*858ea5e5SAndroid Build Coastguard Worker }; 21*858ea5e5SAndroid Build Coastguard Worker 22*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_MAX __TCA_ACT_MAX 23*858ea5e5SAndroid Build Coastguard Worker #define TCA_OLD_COMPAT (TCA_ACT_MAX+1) 24*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_MAX_PRIO 32 25*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_BIND 1 26*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_NOBIND 0 27*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_UNBIND 1 28*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_NOUNBIND 0 29*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_REPLACE 1 30*858ea5e5SAndroid Build Coastguard Worker #define TCA_ACT_NOREPLACE 0 31*858ea5e5SAndroid Build Coastguard Worker 32*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_UNSPEC (-1) 33*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_OK 0 34*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_RECLASSIFY 1 35*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_SHOT 2 36*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_PIPE 3 37*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_STOLEN 4 38*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_QUEUED 5 39*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_REPEAT 6 40*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_REDIRECT 7 41*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_TRAP 8 /* For hw path, this means "trap to cpu" 42*858ea5e5SAndroid Build Coastguard Worker * and don't further process the frame 43*858ea5e5SAndroid Build Coastguard Worker * in hardware. For sw path, this is 44*858ea5e5SAndroid Build Coastguard Worker * equivalent of TC_ACT_STOLEN - drop 45*858ea5e5SAndroid Build Coastguard Worker * the skb and act like everything 46*858ea5e5SAndroid Build Coastguard Worker * is alright. 47*858ea5e5SAndroid Build Coastguard Worker */ 48*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_VALUE_MAX TC_ACT_TRAP 49*858ea5e5SAndroid Build Coastguard Worker 50*858ea5e5SAndroid Build Coastguard Worker /* There is a special kind of actions called "extended actions", 51*858ea5e5SAndroid Build Coastguard Worker * which need a value parameter. These have a local opcode located in 52*858ea5e5SAndroid Build Coastguard Worker * the highest nibble, starting from 1. The rest of the bits 53*858ea5e5SAndroid Build Coastguard Worker * are used to carry the value. These two parts together make 54*858ea5e5SAndroid Build Coastguard Worker * a combined opcode. 55*858ea5e5SAndroid Build Coastguard Worker */ 56*858ea5e5SAndroid Build Coastguard Worker #define __TC_ACT_EXT_SHIFT 28 57*858ea5e5SAndroid Build Coastguard Worker #define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT) 58*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1) 59*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_EXT_OPCODE(combined) ((combined) & (~TC_ACT_EXT_VAL_MASK)) 60*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_EXT_CMP(combined, opcode) (TC_ACT_EXT_OPCODE(combined) == opcode) 61*858ea5e5SAndroid Build Coastguard Worker 62*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_JUMP __TC_ACT_EXT(1) 63*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2) 64*858ea5e5SAndroid Build Coastguard Worker #define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN 65*858ea5e5SAndroid Build Coastguard Worker 66*858ea5e5SAndroid Build Coastguard Worker /* Action type identifiers*/ 67*858ea5e5SAndroid Build Coastguard Worker enum { 68*858ea5e5SAndroid Build Coastguard Worker TCA_ID_UNSPEC=0, 69*858ea5e5SAndroid Build Coastguard Worker TCA_ID_POLICE=1, 70*858ea5e5SAndroid Build Coastguard Worker /* other actions go here */ 71*858ea5e5SAndroid Build Coastguard Worker __TCA_ID_MAX=255 72*858ea5e5SAndroid Build Coastguard Worker }; 73*858ea5e5SAndroid Build Coastguard Worker 74*858ea5e5SAndroid Build Coastguard Worker #define TCA_ID_MAX __TCA_ID_MAX 75*858ea5e5SAndroid Build Coastguard Worker 76*858ea5e5SAndroid Build Coastguard Worker struct tc_police { 77*858ea5e5SAndroid Build Coastguard Worker __u32 index; 78*858ea5e5SAndroid Build Coastguard Worker int action; 79*858ea5e5SAndroid Build Coastguard Worker #define TC_POLICE_UNSPEC TC_ACT_UNSPEC 80*858ea5e5SAndroid Build Coastguard Worker #define TC_POLICE_OK TC_ACT_OK 81*858ea5e5SAndroid Build Coastguard Worker #define TC_POLICE_RECLASSIFY TC_ACT_RECLASSIFY 82*858ea5e5SAndroid Build Coastguard Worker #define TC_POLICE_SHOT TC_ACT_SHOT 83*858ea5e5SAndroid Build Coastguard Worker #define TC_POLICE_PIPE TC_ACT_PIPE 84*858ea5e5SAndroid Build Coastguard Worker 85*858ea5e5SAndroid Build Coastguard Worker __u32 limit; 86*858ea5e5SAndroid Build Coastguard Worker __u32 burst; 87*858ea5e5SAndroid Build Coastguard Worker __u32 mtu; 88*858ea5e5SAndroid Build Coastguard Worker struct tc_ratespec rate; 89*858ea5e5SAndroid Build Coastguard Worker struct tc_ratespec peakrate; 90*858ea5e5SAndroid Build Coastguard Worker int refcnt; 91*858ea5e5SAndroid Build Coastguard Worker int bindcnt; 92*858ea5e5SAndroid Build Coastguard Worker __u32 capab; 93*858ea5e5SAndroid Build Coastguard Worker }; 94*858ea5e5SAndroid Build Coastguard Worker 95*858ea5e5SAndroid Build Coastguard Worker struct tcf_t { 96*858ea5e5SAndroid Build Coastguard Worker __u64 install; 97*858ea5e5SAndroid Build Coastguard Worker __u64 lastuse; 98*858ea5e5SAndroid Build Coastguard Worker __u64 expires; 99*858ea5e5SAndroid Build Coastguard Worker __u64 firstuse; 100*858ea5e5SAndroid Build Coastguard Worker }; 101*858ea5e5SAndroid Build Coastguard Worker 102*858ea5e5SAndroid Build Coastguard Worker struct tc_cnt { 103*858ea5e5SAndroid Build Coastguard Worker int refcnt; 104*858ea5e5SAndroid Build Coastguard Worker int bindcnt; 105*858ea5e5SAndroid Build Coastguard Worker }; 106*858ea5e5SAndroid Build Coastguard Worker 107*858ea5e5SAndroid Build Coastguard Worker #define tc_gen \ 108*858ea5e5SAndroid Build Coastguard Worker __u32 index; \ 109*858ea5e5SAndroid Build Coastguard Worker __u32 capab; \ 110*858ea5e5SAndroid Build Coastguard Worker int action; \ 111*858ea5e5SAndroid Build Coastguard Worker int refcnt; \ 112*858ea5e5SAndroid Build Coastguard Worker int bindcnt 113*858ea5e5SAndroid Build Coastguard Worker 114*858ea5e5SAndroid Build Coastguard Worker enum { 115*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_UNSPEC, 116*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_TBF, 117*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_RATE, 118*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_PEAKRATE, 119*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_AVRATE, 120*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_RESULT, 121*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_TM, 122*858ea5e5SAndroid Build Coastguard Worker TCA_POLICE_PAD, 123*858ea5e5SAndroid Build Coastguard Worker __TCA_POLICE_MAX 124*858ea5e5SAndroid Build Coastguard Worker #define TCA_POLICE_RESULT TCA_POLICE_RESULT 125*858ea5e5SAndroid Build Coastguard Worker }; 126*858ea5e5SAndroid Build Coastguard Worker 127*858ea5e5SAndroid Build Coastguard Worker #define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1) 128*858ea5e5SAndroid Build Coastguard Worker 129*858ea5e5SAndroid Build Coastguard Worker /* tca flags definitions */ 130*858ea5e5SAndroid Build Coastguard Worker #define TCA_CLS_FLAGS_SKIP_HW (1 << 0) /* don't offload filter to HW */ 131*858ea5e5SAndroid Build Coastguard Worker #define TCA_CLS_FLAGS_SKIP_SW (1 << 1) /* don't use filter in SW */ 132*858ea5e5SAndroid Build Coastguard Worker #define TCA_CLS_FLAGS_IN_HW (1 << 2) /* filter is offloaded to HW */ 133*858ea5e5SAndroid Build Coastguard Worker #define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3) /* filter isn't offloaded to HW */ 134*858ea5e5SAndroid Build Coastguard Worker #define TCA_CLS_FLAGS_VERBOSE (1 << 4) /* verbose logging */ 135*858ea5e5SAndroid Build Coastguard Worker 136*858ea5e5SAndroid Build Coastguard Worker /* U32 filters */ 137*858ea5e5SAndroid Build Coastguard Worker 138*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_HTID(h) ((h)&0xFFF00000) 139*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20) 140*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_HASH(h) (((h)>>12)&0xFF) 141*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_NODE(h) ((h)&0xFFF) 142*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_KEY(h) ((h)&0xFFFFF) 143*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_UNSPEC 0 144*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_ROOT (0xFFF00000) 145*858ea5e5SAndroid Build Coastguard Worker 146*858ea5e5SAndroid Build Coastguard Worker enum { 147*858ea5e5SAndroid Build Coastguard Worker TCA_U32_UNSPEC, 148*858ea5e5SAndroid Build Coastguard Worker TCA_U32_CLASSID, 149*858ea5e5SAndroid Build Coastguard Worker TCA_U32_HASH, 150*858ea5e5SAndroid Build Coastguard Worker TCA_U32_LINK, 151*858ea5e5SAndroid Build Coastguard Worker TCA_U32_DIVISOR, 152*858ea5e5SAndroid Build Coastguard Worker TCA_U32_SEL, 153*858ea5e5SAndroid Build Coastguard Worker TCA_U32_POLICE, 154*858ea5e5SAndroid Build Coastguard Worker TCA_U32_ACT, 155*858ea5e5SAndroid Build Coastguard Worker TCA_U32_INDEV, 156*858ea5e5SAndroid Build Coastguard Worker TCA_U32_PCNT, 157*858ea5e5SAndroid Build Coastguard Worker TCA_U32_MARK, 158*858ea5e5SAndroid Build Coastguard Worker TCA_U32_FLAGS, 159*858ea5e5SAndroid Build Coastguard Worker TCA_U32_PAD, 160*858ea5e5SAndroid Build Coastguard Worker __TCA_U32_MAX 161*858ea5e5SAndroid Build Coastguard Worker }; 162*858ea5e5SAndroid Build Coastguard Worker 163*858ea5e5SAndroid Build Coastguard Worker #define TCA_U32_MAX (__TCA_U32_MAX - 1) 164*858ea5e5SAndroid Build Coastguard Worker 165*858ea5e5SAndroid Build Coastguard Worker struct tc_u32_key { 166*858ea5e5SAndroid Build Coastguard Worker __be32 mask; 167*858ea5e5SAndroid Build Coastguard Worker __be32 val; 168*858ea5e5SAndroid Build Coastguard Worker int off; 169*858ea5e5SAndroid Build Coastguard Worker int offmask; 170*858ea5e5SAndroid Build Coastguard Worker }; 171*858ea5e5SAndroid Build Coastguard Worker 172*858ea5e5SAndroid Build Coastguard Worker struct tc_u32_sel { 173*858ea5e5SAndroid Build Coastguard Worker unsigned char flags; 174*858ea5e5SAndroid Build Coastguard Worker unsigned char offshift; 175*858ea5e5SAndroid Build Coastguard Worker unsigned char nkeys; 176*858ea5e5SAndroid Build Coastguard Worker 177*858ea5e5SAndroid Build Coastguard Worker __be16 offmask; 178*858ea5e5SAndroid Build Coastguard Worker __u16 off; 179*858ea5e5SAndroid Build Coastguard Worker short offoff; 180*858ea5e5SAndroid Build Coastguard Worker 181*858ea5e5SAndroid Build Coastguard Worker short hoff; 182*858ea5e5SAndroid Build Coastguard Worker __be32 hmask; 183*858ea5e5SAndroid Build Coastguard Worker struct tc_u32_key keys[]; 184*858ea5e5SAndroid Build Coastguard Worker }; 185*858ea5e5SAndroid Build Coastguard Worker 186*858ea5e5SAndroid Build Coastguard Worker struct tc_u32_mark { 187*858ea5e5SAndroid Build Coastguard Worker __u32 val; 188*858ea5e5SAndroid Build Coastguard Worker __u32 mask; 189*858ea5e5SAndroid Build Coastguard Worker __u32 success; 190*858ea5e5SAndroid Build Coastguard Worker }; 191*858ea5e5SAndroid Build Coastguard Worker 192*858ea5e5SAndroid Build Coastguard Worker struct tc_u32_pcnt { 193*858ea5e5SAndroid Build Coastguard Worker __u64 rcnt; 194*858ea5e5SAndroid Build Coastguard Worker __u64 rhit; 195*858ea5e5SAndroid Build Coastguard Worker __u64 kcnts[]; 196*858ea5e5SAndroid Build Coastguard Worker }; 197*858ea5e5SAndroid Build Coastguard Worker 198*858ea5e5SAndroid Build Coastguard Worker /* Flags */ 199*858ea5e5SAndroid Build Coastguard Worker 200*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_TERMINAL 1 201*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_OFFSET 2 202*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_VAROFFSET 4 203*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_EAT 8 204*858ea5e5SAndroid Build Coastguard Worker 205*858ea5e5SAndroid Build Coastguard Worker #define TC_U32_MAXDEPTH 8 206*858ea5e5SAndroid Build Coastguard Worker 207*858ea5e5SAndroid Build Coastguard Worker /* ROUTE filter */ 208*858ea5e5SAndroid Build Coastguard Worker 209*858ea5e5SAndroid Build Coastguard Worker enum { 210*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_UNSPEC, 211*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_CLASSID, 212*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_TO, 213*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_FROM, 214*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_IIF, 215*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_POLICE, 216*858ea5e5SAndroid Build Coastguard Worker TCA_ROUTE4_ACT, 217*858ea5e5SAndroid Build Coastguard Worker __TCA_ROUTE4_MAX 218*858ea5e5SAndroid Build Coastguard Worker }; 219*858ea5e5SAndroid Build Coastguard Worker 220*858ea5e5SAndroid Build Coastguard Worker #define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1) 221*858ea5e5SAndroid Build Coastguard Worker 222*858ea5e5SAndroid Build Coastguard Worker 223*858ea5e5SAndroid Build Coastguard Worker /* FW filter */ 224*858ea5e5SAndroid Build Coastguard Worker 225*858ea5e5SAndroid Build Coastguard Worker enum { 226*858ea5e5SAndroid Build Coastguard Worker TCA_FW_UNSPEC, 227*858ea5e5SAndroid Build Coastguard Worker TCA_FW_CLASSID, 228*858ea5e5SAndroid Build Coastguard Worker TCA_FW_POLICE, 229*858ea5e5SAndroid Build Coastguard Worker TCA_FW_INDEV, 230*858ea5e5SAndroid Build Coastguard Worker TCA_FW_ACT, /* used by CONFIG_NET_CLS_ACT */ 231*858ea5e5SAndroid Build Coastguard Worker TCA_FW_MASK, 232*858ea5e5SAndroid Build Coastguard Worker __TCA_FW_MAX 233*858ea5e5SAndroid Build Coastguard Worker }; 234*858ea5e5SAndroid Build Coastguard Worker 235*858ea5e5SAndroid Build Coastguard Worker #define TCA_FW_MAX (__TCA_FW_MAX - 1) 236*858ea5e5SAndroid Build Coastguard Worker 237*858ea5e5SAndroid Build Coastguard Worker /* Flow filter */ 238*858ea5e5SAndroid Build Coastguard Worker 239*858ea5e5SAndroid Build Coastguard Worker enum { 240*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_SRC, 241*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_DST, 242*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_PROTO, 243*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_PROTO_SRC, 244*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_PROTO_DST, 245*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_IIF, 246*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_PRIORITY, 247*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_MARK, 248*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_NFCT, 249*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_NFCT_SRC, 250*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_NFCT_DST, 251*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_NFCT_PROTO_SRC, 252*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_NFCT_PROTO_DST, 253*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_RTCLASSID, 254*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_SKUID, 255*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_SKGID, 256*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_VLAN_TAG, 257*858ea5e5SAndroid Build Coastguard Worker FLOW_KEY_RXHASH, 258*858ea5e5SAndroid Build Coastguard Worker __FLOW_KEY_MAX, 259*858ea5e5SAndroid Build Coastguard Worker }; 260*858ea5e5SAndroid Build Coastguard Worker 261*858ea5e5SAndroid Build Coastguard Worker #define FLOW_KEY_MAX (__FLOW_KEY_MAX - 1) 262*858ea5e5SAndroid Build Coastguard Worker 263*858ea5e5SAndroid Build Coastguard Worker enum { 264*858ea5e5SAndroid Build Coastguard Worker FLOW_MODE_MAP, 265*858ea5e5SAndroid Build Coastguard Worker FLOW_MODE_HASH, 266*858ea5e5SAndroid Build Coastguard Worker }; 267*858ea5e5SAndroid Build Coastguard Worker 268*858ea5e5SAndroid Build Coastguard Worker enum { 269*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_UNSPEC, 270*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_KEYS, 271*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_MODE, 272*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_BASECLASS, 273*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_RSHIFT, 274*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_ADDEND, 275*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_MASK, 276*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_XOR, 277*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_DIVISOR, 278*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_ACT, 279*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_POLICE, 280*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_EMATCHES, 281*858ea5e5SAndroid Build Coastguard Worker TCA_FLOW_PERTURB, 282*858ea5e5SAndroid Build Coastguard Worker __TCA_FLOW_MAX 283*858ea5e5SAndroid Build Coastguard Worker }; 284*858ea5e5SAndroid Build Coastguard Worker 285*858ea5e5SAndroid Build Coastguard Worker #define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1) 286*858ea5e5SAndroid Build Coastguard Worker 287*858ea5e5SAndroid Build Coastguard Worker /* Basic filter */ 288*858ea5e5SAndroid Build Coastguard Worker 289*858ea5e5SAndroid Build Coastguard Worker enum { 290*858ea5e5SAndroid Build Coastguard Worker TCA_BASIC_UNSPEC, 291*858ea5e5SAndroid Build Coastguard Worker TCA_BASIC_CLASSID, 292*858ea5e5SAndroid Build Coastguard Worker TCA_BASIC_EMATCHES, 293*858ea5e5SAndroid Build Coastguard Worker TCA_BASIC_ACT, 294*858ea5e5SAndroid Build Coastguard Worker TCA_BASIC_POLICE, 295*858ea5e5SAndroid Build Coastguard Worker __TCA_BASIC_MAX 296*858ea5e5SAndroid Build Coastguard Worker }; 297*858ea5e5SAndroid Build Coastguard Worker 298*858ea5e5SAndroid Build Coastguard Worker #define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1) 299*858ea5e5SAndroid Build Coastguard Worker 300*858ea5e5SAndroid Build Coastguard Worker 301*858ea5e5SAndroid Build Coastguard Worker /* Cgroup classifier */ 302*858ea5e5SAndroid Build Coastguard Worker 303*858ea5e5SAndroid Build Coastguard Worker enum { 304*858ea5e5SAndroid Build Coastguard Worker TCA_CGROUP_UNSPEC, 305*858ea5e5SAndroid Build Coastguard Worker TCA_CGROUP_ACT, 306*858ea5e5SAndroid Build Coastguard Worker TCA_CGROUP_POLICE, 307*858ea5e5SAndroid Build Coastguard Worker TCA_CGROUP_EMATCHES, 308*858ea5e5SAndroid Build Coastguard Worker __TCA_CGROUP_MAX, 309*858ea5e5SAndroid Build Coastguard Worker }; 310*858ea5e5SAndroid Build Coastguard Worker 311*858ea5e5SAndroid Build Coastguard Worker #define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1) 312*858ea5e5SAndroid Build Coastguard Worker 313*858ea5e5SAndroid Build Coastguard Worker /* BPF classifier */ 314*858ea5e5SAndroid Build Coastguard Worker 315*858ea5e5SAndroid Build Coastguard Worker #define TCA_BPF_FLAG_ACT_DIRECT (1 << 0) 316*858ea5e5SAndroid Build Coastguard Worker 317*858ea5e5SAndroid Build Coastguard Worker enum { 318*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_UNSPEC, 319*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_ACT, 320*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_POLICE, 321*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_CLASSID, 322*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_OPS_LEN, 323*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_OPS, 324*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_FD, 325*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_NAME, 326*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_FLAGS, 327*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_FLAGS_GEN, 328*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_TAG, 329*858ea5e5SAndroid Build Coastguard Worker TCA_BPF_ID, 330*858ea5e5SAndroid Build Coastguard Worker __TCA_BPF_MAX, 331*858ea5e5SAndroid Build Coastguard Worker }; 332*858ea5e5SAndroid Build Coastguard Worker 333*858ea5e5SAndroid Build Coastguard Worker #define TCA_BPF_MAX (__TCA_BPF_MAX - 1) 334*858ea5e5SAndroid Build Coastguard Worker 335*858ea5e5SAndroid Build Coastguard Worker /* Flower classifier */ 336*858ea5e5SAndroid Build Coastguard Worker 337*858ea5e5SAndroid Build Coastguard Worker enum { 338*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_UNSPEC, 339*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_CLASSID, 340*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_INDEV, 341*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_ACT, 342*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ETH_DST, /* ETH_ALEN */ 343*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ETH_DST_MASK, /* ETH_ALEN */ 344*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ETH_SRC, /* ETH_ALEN */ 345*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ETH_SRC_MASK, /* ETH_ALEN */ 346*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ETH_TYPE, /* be16 */ 347*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IP_PROTO, /* u8 */ 348*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV4_SRC, /* be32 */ 349*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV4_SRC_MASK, /* be32 */ 350*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV4_DST, /* be32 */ 351*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV4_DST_MASK, /* be32 */ 352*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV6_SRC, /* struct in6_addr */ 353*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV6_SRC_MASK, /* struct in6_addr */ 354*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV6_DST, /* struct in6_addr */ 355*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IPV6_DST_MASK, /* struct in6_addr */ 356*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_TCP_SRC, /* be16 */ 357*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_TCP_DST, /* be16 */ 358*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_UDP_SRC, /* be16 */ 359*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_UDP_DST, /* be16 */ 360*858ea5e5SAndroid Build Coastguard Worker 361*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_FLAGS, 362*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_VLAN_ID, /* be16 */ 363*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_VLAN_PRIO, /* u8 */ 364*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_VLAN_ETH_TYPE, /* be16 */ 365*858ea5e5SAndroid Build Coastguard Worker 366*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_KEY_ID, /* be32 */ 367*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV4_SRC, /* be32 */ 368*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,/* be32 */ 369*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV4_DST, /* be32 */ 370*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,/* be32 */ 371*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV6_SRC, /* struct in6_addr */ 372*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,/* struct in6_addr */ 373*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV6_DST, /* struct in6_addr */ 374*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,/* struct in6_addr */ 375*858ea5e5SAndroid Build Coastguard Worker 376*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_TCP_SRC_MASK, /* be16 */ 377*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_TCP_DST_MASK, /* be16 */ 378*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_UDP_SRC_MASK, /* be16 */ 379*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_UDP_DST_MASK, /* be16 */ 380*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_SCTP_SRC_MASK, /* be16 */ 381*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_SCTP_DST_MASK, /* be16 */ 382*858ea5e5SAndroid Build Coastguard Worker 383*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_SCTP_SRC, /* be16 */ 384*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_SCTP_DST, /* be16 */ 385*858ea5e5SAndroid Build Coastguard Worker 386*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_UDP_SRC_PORT, /* be16 */ 387*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK, /* be16 */ 388*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_UDP_DST_PORT, /* be16 */ 389*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK, /* be16 */ 390*858ea5e5SAndroid Build Coastguard Worker 391*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_FLAGS, /* be32 */ 392*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_FLAGS_MASK, /* be32 */ 393*858ea5e5SAndroid Build Coastguard Worker 394*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV4_CODE, /* u8 */ 395*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV4_CODE_MASK,/* u8 */ 396*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV4_TYPE, /* u8 */ 397*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,/* u8 */ 398*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV6_CODE, /* u8 */ 399*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV6_CODE_MASK,/* u8 */ 400*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV6_TYPE, /* u8 */ 401*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,/* u8 */ 402*858ea5e5SAndroid Build Coastguard Worker 403*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_SIP, /* be32 */ 404*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_SIP_MASK, /* be32 */ 405*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_TIP, /* be32 */ 406*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_TIP_MASK, /* be32 */ 407*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_OP, /* u8 */ 408*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_OP_MASK, /* u8 */ 409*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_SHA, /* ETH_ALEN */ 410*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_SHA_MASK, /* ETH_ALEN */ 411*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_THA, /* ETH_ALEN */ 412*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ARP_THA_MASK, /* ETH_ALEN */ 413*858ea5e5SAndroid Build Coastguard Worker 414*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_MPLS_TTL, /* u8 - 8 bits */ 415*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_MPLS_BOS, /* u8 - 1 bit */ 416*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_MPLS_TC, /* u8 - 3 bits */ 417*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_MPLS_LABEL, /* be32 - 20 bits */ 418*858ea5e5SAndroid Build Coastguard Worker 419*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_TCP_FLAGS, /* be16 */ 420*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_TCP_FLAGS_MASK, /* be16 */ 421*858ea5e5SAndroid Build Coastguard Worker 422*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IP_TOS, /* u8 */ 423*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IP_TOS_MASK, /* u8 */ 424*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IP_TTL, /* u8 */ 425*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_IP_TTL_MASK, /* u8 */ 426*858ea5e5SAndroid Build Coastguard Worker 427*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_CVLAN_ID, /* be16 */ 428*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_CVLAN_PRIO, /* u8 */ 429*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_CVLAN_ETH_TYPE, /* be16 */ 430*858ea5e5SAndroid Build Coastguard Worker 431*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IP_TOS, /* u8 */ 432*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IP_TOS_MASK, /* u8 */ 433*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IP_TTL, /* u8 */ 434*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_IP_TTL_MASK, /* u8 */ 435*858ea5e5SAndroid Build Coastguard Worker 436*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPTS, 437*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPTS_MASK, 438*858ea5e5SAndroid Build Coastguard Worker 439*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_IN_HW_COUNT, 440*858ea5e5SAndroid Build Coastguard Worker 441*858ea5e5SAndroid Build Coastguard Worker __TCA_FLOWER_MAX, 442*858ea5e5SAndroid Build Coastguard Worker }; 443*858ea5e5SAndroid Build Coastguard Worker 444*858ea5e5SAndroid Build Coastguard Worker #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1) 445*858ea5e5SAndroid Build Coastguard Worker 446*858ea5e5SAndroid Build Coastguard Worker enum { 447*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPTS_UNSPEC, 448*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPTS_GENEVE, /* Nested 449*858ea5e5SAndroid Build Coastguard Worker * TCA_FLOWER_KEY_ENC_OPT_GENEVE_ 450*858ea5e5SAndroid Build Coastguard Worker * attributes 451*858ea5e5SAndroid Build Coastguard Worker */ 452*858ea5e5SAndroid Build Coastguard Worker __TCA_FLOWER_KEY_ENC_OPTS_MAX, 453*858ea5e5SAndroid Build Coastguard Worker }; 454*858ea5e5SAndroid Build Coastguard Worker 455*858ea5e5SAndroid Build Coastguard Worker #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1) 456*858ea5e5SAndroid Build Coastguard Worker 457*858ea5e5SAndroid Build Coastguard Worker enum { 458*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC, 459*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS, /* u16 */ 460*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE, /* u8 */ 461*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA, /* 4 to 128 bytes */ 462*858ea5e5SAndroid Build Coastguard Worker 463*858ea5e5SAndroid Build Coastguard Worker __TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX, 464*858ea5e5SAndroid Build Coastguard Worker }; 465*858ea5e5SAndroid Build Coastguard Worker 466*858ea5e5SAndroid Build Coastguard Worker #define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \ 467*858ea5e5SAndroid Build Coastguard Worker (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1) 468*858ea5e5SAndroid Build Coastguard Worker 469*858ea5e5SAndroid Build Coastguard Worker enum { 470*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0), 471*858ea5e5SAndroid Build Coastguard Worker TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1), 472*858ea5e5SAndroid Build Coastguard Worker }; 473*858ea5e5SAndroid Build Coastguard Worker 474*858ea5e5SAndroid Build Coastguard Worker /* Match-all classifier */ 475*858ea5e5SAndroid Build Coastguard Worker 476*858ea5e5SAndroid Build Coastguard Worker enum { 477*858ea5e5SAndroid Build Coastguard Worker TCA_MATCHALL_UNSPEC, 478*858ea5e5SAndroid Build Coastguard Worker TCA_MATCHALL_CLASSID, 479*858ea5e5SAndroid Build Coastguard Worker TCA_MATCHALL_ACT, 480*858ea5e5SAndroid Build Coastguard Worker TCA_MATCHALL_FLAGS, 481*858ea5e5SAndroid Build Coastguard Worker __TCA_MATCHALL_MAX, 482*858ea5e5SAndroid Build Coastguard Worker }; 483*858ea5e5SAndroid Build Coastguard Worker 484*858ea5e5SAndroid Build Coastguard Worker #define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1) 485*858ea5e5SAndroid Build Coastguard Worker 486*858ea5e5SAndroid Build Coastguard Worker /* Extended Matches */ 487*858ea5e5SAndroid Build Coastguard Worker 488*858ea5e5SAndroid Build Coastguard Worker struct tcf_ematch_tree_hdr { 489*858ea5e5SAndroid Build Coastguard Worker __u16 nmatches; 490*858ea5e5SAndroid Build Coastguard Worker __u16 progid; 491*858ea5e5SAndroid Build Coastguard Worker }; 492*858ea5e5SAndroid Build Coastguard Worker 493*858ea5e5SAndroid Build Coastguard Worker enum { 494*858ea5e5SAndroid Build Coastguard Worker TCA_EMATCH_TREE_UNSPEC, 495*858ea5e5SAndroid Build Coastguard Worker TCA_EMATCH_TREE_HDR, 496*858ea5e5SAndroid Build Coastguard Worker TCA_EMATCH_TREE_LIST, 497*858ea5e5SAndroid Build Coastguard Worker __TCA_EMATCH_TREE_MAX 498*858ea5e5SAndroid Build Coastguard Worker }; 499*858ea5e5SAndroid Build Coastguard Worker #define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1) 500*858ea5e5SAndroid Build Coastguard Worker 501*858ea5e5SAndroid Build Coastguard Worker struct tcf_ematch_hdr { 502*858ea5e5SAndroid Build Coastguard Worker __u16 matchid; 503*858ea5e5SAndroid Build Coastguard Worker __u16 kind; 504*858ea5e5SAndroid Build Coastguard Worker __u16 flags; 505*858ea5e5SAndroid Build Coastguard Worker __u16 pad; /* currently unused */ 506*858ea5e5SAndroid Build Coastguard Worker }; 507*858ea5e5SAndroid Build Coastguard Worker 508*858ea5e5SAndroid Build Coastguard Worker /* 0 1 509*858ea5e5SAndroid Build Coastguard Worker * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 510*858ea5e5SAndroid Build Coastguard Worker * +-----------------------+-+-+---+ 511*858ea5e5SAndroid Build Coastguard Worker * | Unused |S|I| R | 512*858ea5e5SAndroid Build Coastguard Worker * +-----------------------+-+-+---+ 513*858ea5e5SAndroid Build Coastguard Worker * 514*858ea5e5SAndroid Build Coastguard Worker * R(2) ::= relation to next ematch 515*858ea5e5SAndroid Build Coastguard Worker * where: 0 0 END (last ematch) 516*858ea5e5SAndroid Build Coastguard Worker * 0 1 AND 517*858ea5e5SAndroid Build Coastguard Worker * 1 0 OR 518*858ea5e5SAndroid Build Coastguard Worker * 1 1 Unused (invalid) 519*858ea5e5SAndroid Build Coastguard Worker * I(1) ::= invert result 520*858ea5e5SAndroid Build Coastguard Worker * S(1) ::= simple payload 521*858ea5e5SAndroid Build Coastguard Worker */ 522*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_REL_END 0 523*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_REL_AND (1<<0) 524*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_REL_OR (1<<1) 525*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_INVERT (1<<2) 526*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_SIMPLE (1<<3) 527*858ea5e5SAndroid Build Coastguard Worker 528*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_REL_MASK 3 529*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK) 530*858ea5e5SAndroid Build Coastguard Worker 531*858ea5e5SAndroid Build Coastguard Worker enum { 532*858ea5e5SAndroid Build Coastguard Worker TCF_LAYER_LINK, 533*858ea5e5SAndroid Build Coastguard Worker TCF_LAYER_NETWORK, 534*858ea5e5SAndroid Build Coastguard Worker TCF_LAYER_TRANSPORT, 535*858ea5e5SAndroid Build Coastguard Worker __TCF_LAYER_MAX 536*858ea5e5SAndroid Build Coastguard Worker }; 537*858ea5e5SAndroid Build Coastguard Worker #define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1) 538*858ea5e5SAndroid Build Coastguard Worker 539*858ea5e5SAndroid Build Coastguard Worker /* Ematch type assignments 540*858ea5e5SAndroid Build Coastguard Worker * 1..32767 Reserved for ematches inside kernel tree 541*858ea5e5SAndroid Build Coastguard Worker * 32768..65535 Free to use, not reliable 542*858ea5e5SAndroid Build Coastguard Worker */ 543*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_CONTAINER 0 544*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_CMP 1 545*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_NBYTE 2 546*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_U32 3 547*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_META 4 548*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_TEXT 5 549*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_VLAN 6 550*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_CANID 7 551*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_IPSET 8 552*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_IPT 9 553*858ea5e5SAndroid Build Coastguard Worker #define TCF_EM_MAX 9 554*858ea5e5SAndroid Build Coastguard Worker 555*858ea5e5SAndroid Build Coastguard Worker enum { 556*858ea5e5SAndroid Build Coastguard Worker TCF_EM_PROG_TC 557*858ea5e5SAndroid Build Coastguard Worker }; 558*858ea5e5SAndroid Build Coastguard Worker 559*858ea5e5SAndroid Build Coastguard Worker enum { 560*858ea5e5SAndroid Build Coastguard Worker TCF_EM_OPND_EQ, 561*858ea5e5SAndroid Build Coastguard Worker TCF_EM_OPND_GT, 562*858ea5e5SAndroid Build Coastguard Worker TCF_EM_OPND_LT 563*858ea5e5SAndroid Build Coastguard Worker }; 564*858ea5e5SAndroid Build Coastguard Worker 565*858ea5e5SAndroid Build Coastguard Worker #endif 566