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