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