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