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