blob: 3ab173af621f8f219ef12beb9dc5dc30823554c1 [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
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_XFRM_H
20#define _LINUX_XFRM_H
21#include <linux/types.h>
22typedef union {
23/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080024 __be32 a4;
25 __be32 a6[4];
Ben Cheng655a7c02013-10-16 16:09:24 -070026} xfrm_address_t;
27struct xfrm_id {
28/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080029 xfrm_address_t daddr;
30 __be32 spi;
31 __u8 proto;
Ben Cheng655a7c02013-10-16 16:09:24 -070032};
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34struct xfrm_sec_ctx {
Tao Baod7db5942015-01-28 10:07:51 -080035 __u8 ctx_doi;
36 __u8 ctx_alg;
37 __u16 ctx_len;
Ben Cheng655a7c02013-10-16 16:09:24 -070038/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080039 __u32 ctx_sid;
40 char ctx_str[0];
Ben Cheng655a7c02013-10-16 16:09:24 -070041};
42#define XFRM_SC_DOI_RESERVED 0
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44#define XFRM_SC_DOI_LSM 1
45#define XFRM_SC_ALG_RESERVED 0
46#define XFRM_SC_ALG_SELINUX 1
47struct xfrm_selector {
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080049 xfrm_address_t daddr;
50 xfrm_address_t saddr;
51 __be16 dport;
52 __be16 dport_mask;
Ben Cheng655a7c02013-10-16 16:09:24 -070053/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080054 __be16 sport;
55 __be16 sport_mask;
56 __u16 family;
57 __u8 prefixlen_d;
Ben Cheng655a7c02013-10-16 16:09:24 -070058/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080059 __u8 prefixlen_s;
60 __u8 proto;
61 int ifindex;
62 __kernel_uid32_t user;
Ben Cheng655a7c02013-10-16 16:09:24 -070063/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64};
Tao Baod7db5942015-01-28 10:07:51 -080065#define XFRM_INF (~(__u64) 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070066struct xfrm_lifetime_cfg {
Tao Baod7db5942015-01-28 10:07:51 -080067 __u64 soft_byte_limit;
Ben Cheng655a7c02013-10-16 16:09:24 -070068/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080069 __u64 hard_byte_limit;
70 __u64 soft_packet_limit;
71 __u64 hard_packet_limit;
72 __u64 soft_add_expires_seconds;
Ben Cheng655a7c02013-10-16 16:09:24 -070073/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080074 __u64 hard_add_expires_seconds;
75 __u64 soft_use_expires_seconds;
76 __u64 hard_use_expires_seconds;
Ben Cheng655a7c02013-10-16 16:09:24 -070077};
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79struct xfrm_lifetime_cur {
Tao Baod7db5942015-01-28 10:07:51 -080080 __u64 bytes;
81 __u64 packets;
82 __u64 add_time;
Ben Cheng655a7c02013-10-16 16:09:24 -070083/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080084 __u64 use_time;
Ben Cheng655a7c02013-10-16 16:09:24 -070085};
86struct xfrm_replay_state {
Tao Baod7db5942015-01-28 10:07:51 -080087 __u32 oseq;
Ben Cheng655a7c02013-10-16 16:09:24 -070088/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080089 __u32 seq;
90 __u32 bitmap;
Ben Cheng655a7c02013-10-16 16:09:24 -070091};
92#define XFRMA_REPLAY_ESN_MAX 4096
93/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94struct xfrm_replay_state_esn {
Tao Baod7db5942015-01-28 10:07:51 -080095 unsigned int bmp_len;
96 __u32 oseq;
97 __u32 seq;
Ben Cheng655a7c02013-10-16 16:09:24 -070098/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -080099 __u32 oseq_hi;
100 __u32 seq_hi;
101 __u32 replay_window;
102 __u32 bmp[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104};
105struct xfrm_algo {
Tao Baod7db5942015-01-28 10:07:51 -0800106 char alg_name[64];
107 unsigned int alg_key_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800109 char alg_key[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700110};
111struct xfrm_algo_auth {
Tao Baod7db5942015-01-28 10:07:51 -0800112 char alg_name[64];
Ben Cheng655a7c02013-10-16 16:09:24 -0700113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800114 unsigned int alg_key_len;
115 unsigned int alg_trunc_len;
116 char alg_key[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700117};
118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119struct xfrm_algo_aead {
Tao Baod7db5942015-01-28 10:07:51 -0800120 char alg_name[64];
121 unsigned int alg_key_len;
122 unsigned int alg_icv_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800124 char alg_key[0];
Ben Cheng655a7c02013-10-16 16:09:24 -0700125};
126struct xfrm_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800127 __u32 replay_window;
Ben Cheng655a7c02013-10-16 16:09:24 -0700128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800129 __u32 replay;
130 __u32 integrity_failed;
Ben Cheng655a7c02013-10-16 16:09:24 -0700131};
132enum {
133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800134 XFRM_POLICY_TYPE_MAIN = 0,
135 XFRM_POLICY_TYPE_SUB = 1,
136 XFRM_POLICY_TYPE_MAX = 2,
137 XFRM_POLICY_TYPE_ANY = 255
Ben Cheng655a7c02013-10-16 16:09:24 -0700138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139};
140enum {
Tao Baod7db5942015-01-28 10:07:51 -0800141 XFRM_POLICY_IN = 0,
142 XFRM_POLICY_OUT = 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800144 XFRM_POLICY_FWD = 2,
145 XFRM_POLICY_MASK = 3,
146 XFRM_POLICY_MAX = 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700147};
148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149enum {
Tao Baod7db5942015-01-28 10:07:51 -0800150 XFRM_SHARE_ANY,
151 XFRM_SHARE_SESSION,
152 XFRM_SHARE_USER,
Ben Cheng655a7c02013-10-16 16:09:24 -0700153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800154 XFRM_SHARE_UNIQUE
Ben Cheng655a7c02013-10-16 16:09:24 -0700155};
156#define XFRM_MODE_TRANSPORT 0
157#define XFRM_MODE_TUNNEL 1
158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159#define XFRM_MODE_ROUTEOPTIMIZATION 2
160#define XFRM_MODE_IN_TRIGGER 3
161#define XFRM_MODE_BEET 4
162#define XFRM_MODE_MAX 5
163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164enum {
Tao Baod7db5942015-01-28 10:07:51 -0800165 XFRM_MSG_BASE = 0x10,
166 XFRM_MSG_NEWSA = 0x10,
Ben Cheng655a7c02013-10-16 16:09:24 -0700167#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800169 XFRM_MSG_DELSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700170#define XFRM_MSG_DELSA XFRM_MSG_DELSA
Tao Baod7db5942015-01-28 10:07:51 -0800171 XFRM_MSG_GETSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700172#define XFRM_MSG_GETSA XFRM_MSG_GETSA
173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800174 XFRM_MSG_NEWPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700175#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800176 XFRM_MSG_DELPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700177#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800179 XFRM_MSG_GETPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700180#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800181 XFRM_MSG_ALLOCSPI,
Ben Cheng655a7c02013-10-16 16:09:24 -0700182#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800184 XFRM_MSG_ACQUIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700185#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
Tao Baod7db5942015-01-28 10:07:51 -0800186 XFRM_MSG_EXPIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700187#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800189 XFRM_MSG_UPDPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700190#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800191 XFRM_MSG_UPDSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700192#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800194 XFRM_MSG_POLEXPIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700195#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800196 XFRM_MSG_FLUSHSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700197#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800199 XFRM_MSG_FLUSHPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700200#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800201 XFRM_MSG_NEWAE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700202#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
203/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800204 XFRM_MSG_GETAE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700205#define XFRM_MSG_GETAE XFRM_MSG_GETAE
Tao Baod7db5942015-01-28 10:07:51 -0800206 XFRM_MSG_REPORT,
Ben Cheng655a7c02013-10-16 16:09:24 -0700207#define XFRM_MSG_REPORT XFRM_MSG_REPORT
208/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800209 XFRM_MSG_MIGRATE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700210#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
Tao Baod7db5942015-01-28 10:07:51 -0800211 XFRM_MSG_NEWSADINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700212#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
213/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800214 XFRM_MSG_GETSADINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700215#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
Tao Baod7db5942015-01-28 10:07:51 -0800216 XFRM_MSG_NEWSPDINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700217#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800219 XFRM_MSG_GETSPDINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700220#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
Tao Baod7db5942015-01-28 10:07:51 -0800221 XFRM_MSG_MAPPING,
Ben Cheng655a7c02013-10-16 16:09:24 -0700222#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
223/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800224 __XFRM_MSG_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700225};
226#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
227#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
228/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
229struct xfrm_user_sec_ctx {
Tao Baod7db5942015-01-28 10:07:51 -0800230 __u16 len;
231 __u16 exttype;
232 __u8 ctx_alg;
Ben Cheng655a7c02013-10-16 16:09:24 -0700233/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800234 __u8 ctx_doi;
235 __u16 ctx_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700236};
237struct xfrm_user_tmpl {
238/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800239 struct xfrm_id id;
240 __u16 family;
241 xfrm_address_t saddr;
242 __u32 reqid;
Ben Cheng655a7c02013-10-16 16:09:24 -0700243/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800244 __u8 mode;
245 __u8 share;
246 __u8 optional;
247 __u32 aalgos;
Ben Cheng655a7c02013-10-16 16:09:24 -0700248/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800249 __u32 ealgos;
250 __u32 calgos;
Ben Cheng655a7c02013-10-16 16:09:24 -0700251};
252struct xfrm_encap_tmpl {
253/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800254 __u16 encap_type;
255 __be16 encap_sport;
256 __be16 encap_dport;
257 xfrm_address_t encap_oa;
Ben Cheng655a7c02013-10-16 16:09:24 -0700258/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
259};
260enum xfrm_ae_ftype_t {
Tao Baod7db5942015-01-28 10:07:51 -0800261 XFRM_AE_UNSPEC,
262 XFRM_AE_RTHR = 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700263/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800264 XFRM_AE_RVAL = 2,
265 XFRM_AE_LVAL = 4,
266 XFRM_AE_ETHR = 8,
267 XFRM_AE_CR = 16,
Ben Cheng655a7c02013-10-16 16:09:24 -0700268/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800269 XFRM_AE_CE = 32,
270 XFRM_AE_CU = 64,
271 __XFRM_AE_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700272#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
273/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
274};
275struct xfrm_userpolicy_type {
Tao Baod7db5942015-01-28 10:07:51 -0800276 __u8 type;
277 __u16 reserved1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700278/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800279 __u8 reserved2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700280};
281enum xfrm_attr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800282 XFRMA_UNSPEC,
Ben Cheng655a7c02013-10-16 16:09:24 -0700283/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800284 XFRMA_ALG_AUTH,
285 XFRMA_ALG_CRYPT,
286 XFRMA_ALG_COMP,
287 XFRMA_ENCAP,
Ben Cheng655a7c02013-10-16 16:09:24 -0700288/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800289 XFRMA_TMPL,
290 XFRMA_SA,
291 XFRMA_POLICY,
292 XFRMA_SEC_CTX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700293/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800294 XFRMA_LTIME_VAL,
295 XFRMA_REPLAY_VAL,
296 XFRMA_REPLAY_THRESH,
297 XFRMA_ETIMER_THRESH,
Ben Cheng655a7c02013-10-16 16:09:24 -0700298/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800299 XFRMA_SRCADDR,
300 XFRMA_COADDR,
301 XFRMA_LASTUSED,
302 XFRMA_POLICY_TYPE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700303/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800304 XFRMA_MIGRATE,
305 XFRMA_ALG_AEAD,
306 XFRMA_KMADDRESS,
307 XFRMA_ALG_AUTH_TRUNC,
Ben Cheng655a7c02013-10-16 16:09:24 -0700308/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800309 XFRMA_MARK,
310 XFRMA_TFCPAD,
311 XFRMA_REPLAY_ESN_VAL,
312 XFRMA_SA_EXTRA_FLAGS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700313/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800314 XFRMA_PROTO,
315 XFRMA_ADDRESS_FILTER,
316 __XFRMA_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700317#define XFRMA_MAX (__XFRMA_MAX - 1)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700318/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700319};
320struct xfrm_mark {
Tao Baod7db5942015-01-28 10:07:51 -0800321 __u32 v;
322 __u32 m;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700323/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700324};
325enum xfrm_sadattr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800326 XFRMA_SAD_UNSPEC,
327 XFRMA_SAD_CNT,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700328/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800329 XFRMA_SAD_HINFO,
330 __XFRMA_SAD_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700331#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
332};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700333/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700334struct xfrmu_sadhinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800335 __u32 sadhcnt;
336 __u32 sadhmcnt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700337};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700338/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700339enum xfrm_spdattr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800340 XFRMA_SPD_UNSPEC,
341 XFRMA_SPD_INFO,
342 XFRMA_SPD_HINFO,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700343/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800344 XFRMA_SPD_IPV4_HTHRESH,
345 XFRMA_SPD_IPV6_HTHRESH,
346 __XFRMA_SPD_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700347#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
Christopher Ferris82d75042015-01-26 10:57:07 -0800348/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700349};
350struct xfrmu_spdinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800351 __u32 incnt;
352 __u32 outcnt;
Christopher Ferris82d75042015-01-26 10:57:07 -0800353/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800354 __u32 fwdcnt;
355 __u32 inscnt;
356 __u32 outscnt;
357 __u32 fwdscnt;
Christopher Ferris82d75042015-01-26 10:57:07 -0800358/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700359};
360struct xfrmu_spdhinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800361 __u32 spdhcnt;
362 __u32 spdhmcnt;
Christopher Ferris82d75042015-01-26 10:57:07 -0800363/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
364};
365struct xfrmu_spdhthresh {
Tao Baod7db5942015-01-28 10:07:51 -0800366 __u8 lbits;
367 __u8 rbits;
Christopher Ferris82d75042015-01-26 10:57:07 -0800368/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700369};
370struct xfrm_usersa_info {
Tao Baod7db5942015-01-28 10:07:51 -0800371 struct xfrm_selector sel;
372 struct xfrm_id id;
Christopher Ferris82d75042015-01-26 10:57:07 -0800373/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800374 xfrm_address_t saddr;
375 struct xfrm_lifetime_cfg lft;
376 struct xfrm_lifetime_cur curlft;
377 struct xfrm_stats stats;
Christopher Ferris82d75042015-01-26 10:57:07 -0800378/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800379 __u32 seq;
380 __u32 reqid;
381 __u16 family;
382 __u8 mode;
Christopher Ferris82d75042015-01-26 10:57:07 -0800383/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800384 __u8 replay_window;
385 __u8 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700386#define XFRM_STATE_NOECN 1
387#define XFRM_STATE_DECAP_DSCP 2
Christopher Ferris82d75042015-01-26 10:57:07 -0800388/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700389#define XFRM_STATE_NOPMTUDISC 4
390#define XFRM_STATE_WILDRECV 8
391#define XFRM_STATE_ICMP 16
392#define XFRM_STATE_AF_UNSPEC 32
Christopher Ferris82d75042015-01-26 10:57:07 -0800393/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700394#define XFRM_STATE_ALIGN4 64
395#define XFRM_STATE_ESN 128
396};
397#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
Christopher Ferris82d75042015-01-26 10:57:07 -0800398/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700399struct xfrm_usersa_id {
Tao Baod7db5942015-01-28 10:07:51 -0800400 xfrm_address_t daddr;
401 __be32 spi;
402 __u16 family;
Christopher Ferris82d75042015-01-26 10:57:07 -0800403/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800404 __u8 proto;
Ben Cheng655a7c02013-10-16 16:09:24 -0700405};
406struct xfrm_aevent_id {
Tao Baod7db5942015-01-28 10:07:51 -0800407 struct xfrm_usersa_id sa_id;
Christopher Ferris82d75042015-01-26 10:57:07 -0800408/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800409 xfrm_address_t saddr;
410 __u32 flags;
411 __u32 reqid;
Ben Cheng655a7c02013-10-16 16:09:24 -0700412};
Christopher Ferris82d75042015-01-26 10:57:07 -0800413/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700414struct xfrm_userspi_info {
Tao Baod7db5942015-01-28 10:07:51 -0800415 struct xfrm_usersa_info info;
416 __u32 min;
417 __u32 max;
Christopher Ferris82d75042015-01-26 10:57:07 -0800418/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700419};
420struct xfrm_userpolicy_info {
Tao Baod7db5942015-01-28 10:07:51 -0800421 struct xfrm_selector sel;
422 struct xfrm_lifetime_cfg lft;
Christopher Ferris82d75042015-01-26 10:57:07 -0800423/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800424 struct xfrm_lifetime_cur curlft;
425 __u32 priority;
426 __u32 index;
427 __u8 dir;
Christopher Ferris82d75042015-01-26 10:57:07 -0800428/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800429 __u8 action;
Ben Cheng655a7c02013-10-16 16:09:24 -0700430#define XFRM_POLICY_ALLOW 0
431#define XFRM_POLICY_BLOCK 1
Tao Baod7db5942015-01-28 10:07:51 -0800432 __u8 flags;
Christopher Ferris82d75042015-01-26 10:57:07 -0800433/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700434#define XFRM_POLICY_LOCALOK 1
435#define XFRM_POLICY_ICMP 2
Tao Baod7db5942015-01-28 10:07:51 -0800436 __u8 share;
Ben Cheng655a7c02013-10-16 16:09:24 -0700437};
Christopher Ferris82d75042015-01-26 10:57:07 -0800438/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700439struct xfrm_userpolicy_id {
Tao Baod7db5942015-01-28 10:07:51 -0800440 struct xfrm_selector sel;
441 __u32 index;
442 __u8 dir;
Christopher Ferris82d75042015-01-26 10:57:07 -0800443/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700444};
445struct xfrm_user_acquire {
Tao Baod7db5942015-01-28 10:07:51 -0800446 struct xfrm_id id;
447 xfrm_address_t saddr;
Christopher Ferris82d75042015-01-26 10:57:07 -0800448/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800449 struct xfrm_selector sel;
450 struct xfrm_userpolicy_info policy;
451 __u32 aalgos;
452 __u32 ealgos;
Christopher Ferris82d75042015-01-26 10:57:07 -0800453/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800454 __u32 calgos;
455 __u32 seq;
Ben Cheng655a7c02013-10-16 16:09:24 -0700456};
457struct xfrm_user_expire {
Christopher Ferris82d75042015-01-26 10:57:07 -0800458/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800459 struct xfrm_usersa_info state;
460 __u8 hard;
Ben Cheng655a7c02013-10-16 16:09:24 -0700461};
462struct xfrm_user_polexpire {
Christopher Ferris82d75042015-01-26 10:57:07 -0800463/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800464 struct xfrm_userpolicy_info pol;
465 __u8 hard;
Ben Cheng655a7c02013-10-16 16:09:24 -0700466};
467struct xfrm_usersa_flush {
Christopher Ferris82d75042015-01-26 10:57:07 -0800468/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800469 __u8 proto;
Ben Cheng655a7c02013-10-16 16:09:24 -0700470};
471struct xfrm_user_report {
Tao Baod7db5942015-01-28 10:07:51 -0800472 __u8 proto;
Christopher Ferris82d75042015-01-26 10:57:07 -0800473/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800474 struct xfrm_selector sel;
Ben Cheng655a7c02013-10-16 16:09:24 -0700475};
476struct xfrm_user_kmaddress {
Tao Baod7db5942015-01-28 10:07:51 -0800477 xfrm_address_t local;
Christopher Ferris82d75042015-01-26 10:57:07 -0800478/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800479 xfrm_address_t remote;
480 __u32 reserved;
481 __u16 family;
Ben Cheng655a7c02013-10-16 16:09:24 -0700482};
Christopher Ferris82d75042015-01-26 10:57:07 -0800483/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700484struct xfrm_user_migrate {
Tao Baod7db5942015-01-28 10:07:51 -0800485 xfrm_address_t old_daddr;
486 xfrm_address_t old_saddr;
487 xfrm_address_t new_daddr;
Christopher Ferris82d75042015-01-26 10:57:07 -0800488/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800489 xfrm_address_t new_saddr;
490 __u8 proto;
491 __u8 mode;
492 __u16 reserved;
Christopher Ferris82d75042015-01-26 10:57:07 -0800493/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800494 __u32 reqid;
495 __u16 old_family;
496 __u16 new_family;
Ben Cheng655a7c02013-10-16 16:09:24 -0700497};
Christopher Ferris82d75042015-01-26 10:57:07 -0800498/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700499struct xfrm_user_mapping {
Tao Baod7db5942015-01-28 10:07:51 -0800500 struct xfrm_usersa_id id;
501 __u32 reqid;
502 xfrm_address_t old_saddr;
Christopher Ferris82d75042015-01-26 10:57:07 -0800503/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800504 xfrm_address_t new_saddr;
505 __be16 old_sport;
506 __be16 new_sport;
Ben Cheng655a7c02013-10-16 16:09:24 -0700507};
Christopher Ferris82d75042015-01-26 10:57:07 -0800508/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700509struct xfrm_address_filter {
Tao Baod7db5942015-01-28 10:07:51 -0800510 xfrm_address_t saddr;
511 xfrm_address_t daddr;
512 __u16 family;
Christopher Ferris82d75042015-01-26 10:57:07 -0800513/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Tao Baod7db5942015-01-28 10:07:51 -0800514 __u8 splen;
515 __u8 dplen;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700516};
Ben Cheng655a7c02013-10-16 16:09:24 -0700517#define XFRMGRP_ACQUIRE 1
Christopher Ferris82d75042015-01-26 10:57:07 -0800518/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700519#define XFRMGRP_EXPIRE 2
520#define XFRMGRP_SA 4
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700521#define XFRMGRP_POLICY 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700522#define XFRMGRP_REPORT 0x20
Christopher Ferris82d75042015-01-26 10:57:07 -0800523/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700524enum xfrm_nlgroups {
Tao Baod7db5942015-01-28 10:07:51 -0800525 XFRMNLGRP_NONE,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700526#define XFRMNLGRP_NONE XFRMNLGRP_NONE
Tao Baod7db5942015-01-28 10:07:51 -0800527 XFRMNLGRP_ACQUIRE,
Christopher Ferris82d75042015-01-26 10:57:07 -0800528/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700529#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
Tao Baod7db5942015-01-28 10:07:51 -0800530 XFRMNLGRP_EXPIRE,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700531#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800532 XFRMNLGRP_SA,
Christopher Ferris82d75042015-01-26 10:57:07 -0800533/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700534#define XFRMNLGRP_SA XFRMNLGRP_SA
Tao Baod7db5942015-01-28 10:07:51 -0800535 XFRMNLGRP_POLICY,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700536#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
Tao Baod7db5942015-01-28 10:07:51 -0800537 XFRMNLGRP_AEVENTS,
Christopher Ferris82d75042015-01-26 10:57:07 -0800538/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700539#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
Tao Baod7db5942015-01-28 10:07:51 -0800540 XFRMNLGRP_REPORT,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700541#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
Tao Baod7db5942015-01-28 10:07:51 -0800542 XFRMNLGRP_MIGRATE,
Christopher Ferris82d75042015-01-26 10:57:07 -0800543/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700544#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
Tao Baod7db5942015-01-28 10:07:51 -0800545 XFRMNLGRP_MAPPING,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700546#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
Tao Baod7db5942015-01-28 10:07:51 -0800547 __XFRMNLGRP_MAX
Christopher Ferris82d75042015-01-26 10:57:07 -0800548/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700549};
550#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700551#endif