xref: /aosp_15_r20/external/iproute2/include/uapi/linux/pkt_cls.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
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