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