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