xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/xfrm.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _LINUX_XFRM_H
8*8d67ca89SAndroid Build Coastguard Worker #define _LINUX_XFRM_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/in6.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/stddef.h>
12*8d67ca89SAndroid Build Coastguard Worker typedef union {
13*8d67ca89SAndroid Build Coastguard Worker   __be32 a4;
14*8d67ca89SAndroid Build Coastguard Worker   __be32 a6[4];
15*8d67ca89SAndroid Build Coastguard Worker   struct in6_addr in6;
16*8d67ca89SAndroid Build Coastguard Worker } xfrm_address_t;
17*8d67ca89SAndroid Build Coastguard Worker struct xfrm_id {
18*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t daddr;
19*8d67ca89SAndroid Build Coastguard Worker   __be32 spi;
20*8d67ca89SAndroid Build Coastguard Worker   __u8 proto;
21*8d67ca89SAndroid Build Coastguard Worker };
22*8d67ca89SAndroid Build Coastguard Worker struct xfrm_sec_ctx {
23*8d67ca89SAndroid Build Coastguard Worker   __u8 ctx_doi;
24*8d67ca89SAndroid Build Coastguard Worker   __u8 ctx_alg;
25*8d67ca89SAndroid Build Coastguard Worker   __u16 ctx_len;
26*8d67ca89SAndroid Build Coastguard Worker   __u32 ctx_sid;
27*8d67ca89SAndroid Build Coastguard Worker   char ctx_str[] __counted_by(ctx_len);
28*8d67ca89SAndroid Build Coastguard Worker };
29*8d67ca89SAndroid Build Coastguard Worker #define XFRM_SC_DOI_RESERVED 0
30*8d67ca89SAndroid Build Coastguard Worker #define XFRM_SC_DOI_LSM 1
31*8d67ca89SAndroid Build Coastguard Worker #define XFRM_SC_ALG_RESERVED 0
32*8d67ca89SAndroid Build Coastguard Worker #define XFRM_SC_ALG_SELINUX 1
33*8d67ca89SAndroid Build Coastguard Worker struct xfrm_selector {
34*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t daddr;
35*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t saddr;
36*8d67ca89SAndroid Build Coastguard Worker   __be16 dport;
37*8d67ca89SAndroid Build Coastguard Worker   __be16 dport_mask;
38*8d67ca89SAndroid Build Coastguard Worker   __be16 sport;
39*8d67ca89SAndroid Build Coastguard Worker   __be16 sport_mask;
40*8d67ca89SAndroid Build Coastguard Worker   __u16 family;
41*8d67ca89SAndroid Build Coastguard Worker   __u8 prefixlen_d;
42*8d67ca89SAndroid Build Coastguard Worker   __u8 prefixlen_s;
43*8d67ca89SAndroid Build Coastguard Worker   __u8 proto;
44*8d67ca89SAndroid Build Coastguard Worker   int ifindex;
45*8d67ca89SAndroid Build Coastguard Worker   __kernel_uid32_t user;
46*8d67ca89SAndroid Build Coastguard Worker };
47*8d67ca89SAndroid Build Coastguard Worker #define XFRM_INF (~(__u64) 0)
48*8d67ca89SAndroid Build Coastguard Worker struct xfrm_lifetime_cfg {
49*8d67ca89SAndroid Build Coastguard Worker   __u64 soft_byte_limit;
50*8d67ca89SAndroid Build Coastguard Worker   __u64 hard_byte_limit;
51*8d67ca89SAndroid Build Coastguard Worker   __u64 soft_packet_limit;
52*8d67ca89SAndroid Build Coastguard Worker   __u64 hard_packet_limit;
53*8d67ca89SAndroid Build Coastguard Worker   __u64 soft_add_expires_seconds;
54*8d67ca89SAndroid Build Coastguard Worker   __u64 hard_add_expires_seconds;
55*8d67ca89SAndroid Build Coastguard Worker   __u64 soft_use_expires_seconds;
56*8d67ca89SAndroid Build Coastguard Worker   __u64 hard_use_expires_seconds;
57*8d67ca89SAndroid Build Coastguard Worker };
58*8d67ca89SAndroid Build Coastguard Worker struct xfrm_lifetime_cur {
59*8d67ca89SAndroid Build Coastguard Worker   __u64 bytes;
60*8d67ca89SAndroid Build Coastguard Worker   __u64 packets;
61*8d67ca89SAndroid Build Coastguard Worker   __u64 add_time;
62*8d67ca89SAndroid Build Coastguard Worker   __u64 use_time;
63*8d67ca89SAndroid Build Coastguard Worker };
64*8d67ca89SAndroid Build Coastguard Worker struct xfrm_replay_state {
65*8d67ca89SAndroid Build Coastguard Worker   __u32 oseq;
66*8d67ca89SAndroid Build Coastguard Worker   __u32 seq;
67*8d67ca89SAndroid Build Coastguard Worker   __u32 bitmap;
68*8d67ca89SAndroid Build Coastguard Worker };
69*8d67ca89SAndroid Build Coastguard Worker #define XFRMA_REPLAY_ESN_MAX 4096
70*8d67ca89SAndroid Build Coastguard Worker struct xfrm_replay_state_esn {
71*8d67ca89SAndroid Build Coastguard Worker   unsigned int bmp_len;
72*8d67ca89SAndroid Build Coastguard Worker   __u32 oseq;
73*8d67ca89SAndroid Build Coastguard Worker   __u32 seq;
74*8d67ca89SAndroid Build Coastguard Worker   __u32 oseq_hi;
75*8d67ca89SAndroid Build Coastguard Worker   __u32 seq_hi;
76*8d67ca89SAndroid Build Coastguard Worker   __u32 replay_window;
77*8d67ca89SAndroid Build Coastguard Worker   __u32 bmp[];
78*8d67ca89SAndroid Build Coastguard Worker };
79*8d67ca89SAndroid Build Coastguard Worker struct xfrm_algo {
80*8d67ca89SAndroid Build Coastguard Worker   char alg_name[64];
81*8d67ca89SAndroid Build Coastguard Worker   unsigned int alg_key_len;
82*8d67ca89SAndroid Build Coastguard Worker   char alg_key[];
83*8d67ca89SAndroid Build Coastguard Worker };
84*8d67ca89SAndroid Build Coastguard Worker struct xfrm_algo_auth {
85*8d67ca89SAndroid Build Coastguard Worker   char alg_name[64];
86*8d67ca89SAndroid Build Coastguard Worker   unsigned int alg_key_len;
87*8d67ca89SAndroid Build Coastguard Worker   unsigned int alg_trunc_len;
88*8d67ca89SAndroid Build Coastguard Worker   char alg_key[];
89*8d67ca89SAndroid Build Coastguard Worker };
90*8d67ca89SAndroid Build Coastguard Worker struct xfrm_algo_aead {
91*8d67ca89SAndroid Build Coastguard Worker   char alg_name[64];
92*8d67ca89SAndroid Build Coastguard Worker   unsigned int alg_key_len;
93*8d67ca89SAndroid Build Coastguard Worker   unsigned int alg_icv_len;
94*8d67ca89SAndroid Build Coastguard Worker   char alg_key[];
95*8d67ca89SAndroid Build Coastguard Worker };
96*8d67ca89SAndroid Build Coastguard Worker struct xfrm_stats {
97*8d67ca89SAndroid Build Coastguard Worker   __u32 replay_window;
98*8d67ca89SAndroid Build Coastguard Worker   __u32 replay;
99*8d67ca89SAndroid Build Coastguard Worker   __u32 integrity_failed;
100*8d67ca89SAndroid Build Coastguard Worker };
101*8d67ca89SAndroid Build Coastguard Worker enum {
102*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_TYPE_MAIN = 0,
103*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_TYPE_SUB = 1,
104*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_TYPE_MAX = 2,
105*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_TYPE_ANY = 255
106*8d67ca89SAndroid Build Coastguard Worker };
107*8d67ca89SAndroid Build Coastguard Worker enum {
108*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_IN = 0,
109*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_OUT = 1,
110*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_FWD = 2,
111*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_MASK = 3,
112*8d67ca89SAndroid Build Coastguard Worker   XFRM_POLICY_MAX = 3
113*8d67ca89SAndroid Build Coastguard Worker };
114*8d67ca89SAndroid Build Coastguard Worker enum xfrm_sa_dir {
115*8d67ca89SAndroid Build Coastguard Worker   XFRM_SA_DIR_IN = 1,
116*8d67ca89SAndroid Build Coastguard Worker   XFRM_SA_DIR_OUT = 2
117*8d67ca89SAndroid Build Coastguard Worker };
118*8d67ca89SAndroid Build Coastguard Worker enum {
119*8d67ca89SAndroid Build Coastguard Worker   XFRM_SHARE_ANY,
120*8d67ca89SAndroid Build Coastguard Worker   XFRM_SHARE_SESSION,
121*8d67ca89SAndroid Build Coastguard Worker   XFRM_SHARE_USER,
122*8d67ca89SAndroid Build Coastguard Worker   XFRM_SHARE_UNIQUE
123*8d67ca89SAndroid Build Coastguard Worker };
124*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MODE_TRANSPORT 0
125*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MODE_TUNNEL 1
126*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MODE_ROUTEOPTIMIZATION 2
127*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MODE_IN_TRIGGER 3
128*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MODE_BEET 4
129*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MODE_MAX 5
130*8d67ca89SAndroid Build Coastguard Worker enum {
131*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_BASE = 0x10,
132*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_NEWSA = 0x10,
133*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
134*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_DELSA,
135*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_DELSA XFRM_MSG_DELSA
136*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_GETSA,
137*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_GETSA XFRM_MSG_GETSA
138*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_NEWPOLICY,
139*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
140*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_DELPOLICY,
141*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
142*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_GETPOLICY,
143*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
144*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_ALLOCSPI,
145*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
146*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_ACQUIRE,
147*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
148*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_EXPIRE,
149*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
150*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_UPDPOLICY,
151*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
152*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_UPDSA,
153*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
154*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_POLEXPIRE,
155*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
156*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_FLUSHSA,
157*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
158*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_FLUSHPOLICY,
159*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
160*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_NEWAE,
161*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
162*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_GETAE,
163*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_GETAE XFRM_MSG_GETAE
164*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_REPORT,
165*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_REPORT XFRM_MSG_REPORT
166*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_MIGRATE,
167*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
168*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_NEWSADINFO,
169*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
170*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_GETSADINFO,
171*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
172*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_NEWSPDINFO,
173*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
174*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_GETSPDINFO,
175*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
176*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_MAPPING,
177*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
178*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_SETDEFAULT,
179*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_SETDEFAULT XFRM_MSG_SETDEFAULT
180*8d67ca89SAndroid Build Coastguard Worker   XFRM_MSG_GETDEFAULT,
181*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_GETDEFAULT XFRM_MSG_GETDEFAULT
182*8d67ca89SAndroid Build Coastguard Worker   __XFRM_MSG_MAX
183*8d67ca89SAndroid Build Coastguard Worker };
184*8d67ca89SAndroid Build Coastguard Worker #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
185*8d67ca89SAndroid Build Coastguard Worker #define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
186*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_sec_ctx {
187*8d67ca89SAndroid Build Coastguard Worker   __u16 len;
188*8d67ca89SAndroid Build Coastguard Worker   __u16 exttype;
189*8d67ca89SAndroid Build Coastguard Worker   __u8 ctx_alg;
190*8d67ca89SAndroid Build Coastguard Worker   __u8 ctx_doi;
191*8d67ca89SAndroid Build Coastguard Worker   __u16 ctx_len;
192*8d67ca89SAndroid Build Coastguard Worker };
193*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_tmpl {
194*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_id id;
195*8d67ca89SAndroid Build Coastguard Worker   __u16 family;
196*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t saddr;
197*8d67ca89SAndroid Build Coastguard Worker   __u32 reqid;
198*8d67ca89SAndroid Build Coastguard Worker   __u8 mode;
199*8d67ca89SAndroid Build Coastguard Worker   __u8 share;
200*8d67ca89SAndroid Build Coastguard Worker   __u8 optional;
201*8d67ca89SAndroid Build Coastguard Worker   __u32 aalgos;
202*8d67ca89SAndroid Build Coastguard Worker   __u32 ealgos;
203*8d67ca89SAndroid Build Coastguard Worker   __u32 calgos;
204*8d67ca89SAndroid Build Coastguard Worker };
205*8d67ca89SAndroid Build Coastguard Worker struct xfrm_encap_tmpl {
206*8d67ca89SAndroid Build Coastguard Worker   __u16 encap_type;
207*8d67ca89SAndroid Build Coastguard Worker   __be16 encap_sport;
208*8d67ca89SAndroid Build Coastguard Worker   __be16 encap_dport;
209*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t encap_oa;
210*8d67ca89SAndroid Build Coastguard Worker };
211*8d67ca89SAndroid Build Coastguard Worker enum xfrm_ae_ftype_t {
212*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_UNSPEC,
213*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_RTHR = 1,
214*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_RVAL = 2,
215*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_LVAL = 4,
216*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_ETHR = 8,
217*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_CR = 16,
218*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_CE = 32,
219*8d67ca89SAndroid Build Coastguard Worker   XFRM_AE_CU = 64,
220*8d67ca89SAndroid Build Coastguard Worker   __XFRM_AE_MAX
221*8d67ca89SAndroid Build Coastguard Worker #define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
222*8d67ca89SAndroid Build Coastguard Worker };
223*8d67ca89SAndroid Build Coastguard Worker struct xfrm_userpolicy_type {
224*8d67ca89SAndroid Build Coastguard Worker   __u8 type;
225*8d67ca89SAndroid Build Coastguard Worker   __u16 reserved1;
226*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved2;
227*8d67ca89SAndroid Build Coastguard Worker };
228*8d67ca89SAndroid Build Coastguard Worker enum xfrm_attr_type_t {
229*8d67ca89SAndroid Build Coastguard Worker   XFRMA_UNSPEC,
230*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ALG_AUTH,
231*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ALG_CRYPT,
232*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ALG_COMP,
233*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ENCAP,
234*8d67ca89SAndroid Build Coastguard Worker   XFRMA_TMPL,
235*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SA,
236*8d67ca89SAndroid Build Coastguard Worker   XFRMA_POLICY,
237*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SEC_CTX,
238*8d67ca89SAndroid Build Coastguard Worker   XFRMA_LTIME_VAL,
239*8d67ca89SAndroid Build Coastguard Worker   XFRMA_REPLAY_VAL,
240*8d67ca89SAndroid Build Coastguard Worker   XFRMA_REPLAY_THRESH,
241*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ETIMER_THRESH,
242*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SRCADDR,
243*8d67ca89SAndroid Build Coastguard Worker   XFRMA_COADDR,
244*8d67ca89SAndroid Build Coastguard Worker   XFRMA_LASTUSED,
245*8d67ca89SAndroid Build Coastguard Worker   XFRMA_POLICY_TYPE,
246*8d67ca89SAndroid Build Coastguard Worker   XFRMA_MIGRATE,
247*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ALG_AEAD,
248*8d67ca89SAndroid Build Coastguard Worker   XFRMA_KMADDRESS,
249*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ALG_AUTH_TRUNC,
250*8d67ca89SAndroid Build Coastguard Worker   XFRMA_MARK,
251*8d67ca89SAndroid Build Coastguard Worker   XFRMA_TFCPAD,
252*8d67ca89SAndroid Build Coastguard Worker   XFRMA_REPLAY_ESN_VAL,
253*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SA_EXTRA_FLAGS,
254*8d67ca89SAndroid Build Coastguard Worker   XFRMA_PROTO,
255*8d67ca89SAndroid Build Coastguard Worker   XFRMA_ADDRESS_FILTER,
256*8d67ca89SAndroid Build Coastguard Worker   XFRMA_PAD,
257*8d67ca89SAndroid Build Coastguard Worker   XFRMA_OFFLOAD_DEV,
258*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SET_MARK,
259*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SET_MARK_MASK,
260*8d67ca89SAndroid Build Coastguard Worker   XFRMA_IF_ID,
261*8d67ca89SAndroid Build Coastguard Worker   XFRMA_MTIMER_THRESH,
262*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SA_DIR,
263*8d67ca89SAndroid Build Coastguard Worker   XFRMA_NAT_KEEPALIVE_INTERVAL,
264*8d67ca89SAndroid Build Coastguard Worker   __XFRMA_MAX
265*8d67ca89SAndroid Build Coastguard Worker #define XFRMA_OUTPUT_MARK XFRMA_SET_MARK
266*8d67ca89SAndroid Build Coastguard Worker #define XFRMA_MAX (__XFRMA_MAX - 1)
267*8d67ca89SAndroid Build Coastguard Worker };
268*8d67ca89SAndroid Build Coastguard Worker struct xfrm_mark {
269*8d67ca89SAndroid Build Coastguard Worker   __u32 v;
270*8d67ca89SAndroid Build Coastguard Worker   __u32 m;
271*8d67ca89SAndroid Build Coastguard Worker };
272*8d67ca89SAndroid Build Coastguard Worker enum xfrm_sadattr_type_t {
273*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SAD_UNSPEC,
274*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SAD_CNT,
275*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SAD_HINFO,
276*8d67ca89SAndroid Build Coastguard Worker   __XFRMA_SAD_MAX
277*8d67ca89SAndroid Build Coastguard Worker #define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
278*8d67ca89SAndroid Build Coastguard Worker };
279*8d67ca89SAndroid Build Coastguard Worker struct xfrmu_sadhinfo {
280*8d67ca89SAndroid Build Coastguard Worker   __u32 sadhcnt;
281*8d67ca89SAndroid Build Coastguard Worker   __u32 sadhmcnt;
282*8d67ca89SAndroid Build Coastguard Worker };
283*8d67ca89SAndroid Build Coastguard Worker enum xfrm_spdattr_type_t {
284*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SPD_UNSPEC,
285*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SPD_INFO,
286*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SPD_HINFO,
287*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SPD_IPV4_HTHRESH,
288*8d67ca89SAndroid Build Coastguard Worker   XFRMA_SPD_IPV6_HTHRESH,
289*8d67ca89SAndroid Build Coastguard Worker   __XFRMA_SPD_MAX
290*8d67ca89SAndroid Build Coastguard Worker #define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
291*8d67ca89SAndroid Build Coastguard Worker };
292*8d67ca89SAndroid Build Coastguard Worker struct xfrmu_spdinfo {
293*8d67ca89SAndroid Build Coastguard Worker   __u32 incnt;
294*8d67ca89SAndroid Build Coastguard Worker   __u32 outcnt;
295*8d67ca89SAndroid Build Coastguard Worker   __u32 fwdcnt;
296*8d67ca89SAndroid Build Coastguard Worker   __u32 inscnt;
297*8d67ca89SAndroid Build Coastguard Worker   __u32 outscnt;
298*8d67ca89SAndroid Build Coastguard Worker   __u32 fwdscnt;
299*8d67ca89SAndroid Build Coastguard Worker };
300*8d67ca89SAndroid Build Coastguard Worker struct xfrmu_spdhinfo {
301*8d67ca89SAndroid Build Coastguard Worker   __u32 spdhcnt;
302*8d67ca89SAndroid Build Coastguard Worker   __u32 spdhmcnt;
303*8d67ca89SAndroid Build Coastguard Worker };
304*8d67ca89SAndroid Build Coastguard Worker struct xfrmu_spdhthresh {
305*8d67ca89SAndroid Build Coastguard Worker   __u8 lbits;
306*8d67ca89SAndroid Build Coastguard Worker   __u8 rbits;
307*8d67ca89SAndroid Build Coastguard Worker };
308*8d67ca89SAndroid Build Coastguard Worker struct xfrm_usersa_info {
309*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_selector sel;
310*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_id id;
311*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t saddr;
312*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_lifetime_cfg lft;
313*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_lifetime_cur curlft;
314*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_stats stats;
315*8d67ca89SAndroid Build Coastguard Worker   __u32 seq;
316*8d67ca89SAndroid Build Coastguard Worker   __u32 reqid;
317*8d67ca89SAndroid Build Coastguard Worker   __u16 family;
318*8d67ca89SAndroid Build Coastguard Worker   __u8 mode;
319*8d67ca89SAndroid Build Coastguard Worker   __u8 replay_window;
320*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
321*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_NOECN 1
322*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_DECAP_DSCP 2
323*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_NOPMTUDISC 4
324*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_WILDRECV 8
325*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_ICMP 16
326*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_AF_UNSPEC 32
327*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_ALIGN4 64
328*8d67ca89SAndroid Build Coastguard Worker #define XFRM_STATE_ESN 128
329*8d67ca89SAndroid Build Coastguard Worker };
330*8d67ca89SAndroid Build Coastguard Worker #define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
331*8d67ca89SAndroid Build Coastguard Worker #define XFRM_SA_XFLAG_OSEQ_MAY_WRAP 2
332*8d67ca89SAndroid Build Coastguard Worker struct xfrm_usersa_id {
333*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t daddr;
334*8d67ca89SAndroid Build Coastguard Worker   __be32 spi;
335*8d67ca89SAndroid Build Coastguard Worker   __u16 family;
336*8d67ca89SAndroid Build Coastguard Worker   __u8 proto;
337*8d67ca89SAndroid Build Coastguard Worker };
338*8d67ca89SAndroid Build Coastguard Worker struct xfrm_aevent_id {
339*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_usersa_id sa_id;
340*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t saddr;
341*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
342*8d67ca89SAndroid Build Coastguard Worker   __u32 reqid;
343*8d67ca89SAndroid Build Coastguard Worker };
344*8d67ca89SAndroid Build Coastguard Worker struct xfrm_userspi_info {
345*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_usersa_info info;
346*8d67ca89SAndroid Build Coastguard Worker   __u32 min;
347*8d67ca89SAndroid Build Coastguard Worker   __u32 max;
348*8d67ca89SAndroid Build Coastguard Worker };
349*8d67ca89SAndroid Build Coastguard Worker struct xfrm_userpolicy_info {
350*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_selector sel;
351*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_lifetime_cfg lft;
352*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_lifetime_cur curlft;
353*8d67ca89SAndroid Build Coastguard Worker   __u32 priority;
354*8d67ca89SAndroid Build Coastguard Worker   __u32 index;
355*8d67ca89SAndroid Build Coastguard Worker   __u8 dir;
356*8d67ca89SAndroid Build Coastguard Worker   __u8 action;
357*8d67ca89SAndroid Build Coastguard Worker #define XFRM_POLICY_ALLOW 0
358*8d67ca89SAndroid Build Coastguard Worker #define XFRM_POLICY_BLOCK 1
359*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
360*8d67ca89SAndroid Build Coastguard Worker #define XFRM_POLICY_LOCALOK 1
361*8d67ca89SAndroid Build Coastguard Worker #define XFRM_POLICY_ICMP 2
362*8d67ca89SAndroid Build Coastguard Worker   __u8 share;
363*8d67ca89SAndroid Build Coastguard Worker };
364*8d67ca89SAndroid Build Coastguard Worker struct xfrm_userpolicy_id {
365*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_selector sel;
366*8d67ca89SAndroid Build Coastguard Worker   __u32 index;
367*8d67ca89SAndroid Build Coastguard Worker   __u8 dir;
368*8d67ca89SAndroid Build Coastguard Worker };
369*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_acquire {
370*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_id id;
371*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t saddr;
372*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_selector sel;
373*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_userpolicy_info policy;
374*8d67ca89SAndroid Build Coastguard Worker   __u32 aalgos;
375*8d67ca89SAndroid Build Coastguard Worker   __u32 ealgos;
376*8d67ca89SAndroid Build Coastguard Worker   __u32 calgos;
377*8d67ca89SAndroid Build Coastguard Worker   __u32 seq;
378*8d67ca89SAndroid Build Coastguard Worker };
379*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_expire {
380*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_usersa_info state;
381*8d67ca89SAndroid Build Coastguard Worker   __u8 hard;
382*8d67ca89SAndroid Build Coastguard Worker };
383*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_polexpire {
384*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_userpolicy_info pol;
385*8d67ca89SAndroid Build Coastguard Worker   __u8 hard;
386*8d67ca89SAndroid Build Coastguard Worker };
387*8d67ca89SAndroid Build Coastguard Worker struct xfrm_usersa_flush {
388*8d67ca89SAndroid Build Coastguard Worker   __u8 proto;
389*8d67ca89SAndroid Build Coastguard Worker };
390*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_report {
391*8d67ca89SAndroid Build Coastguard Worker   __u8 proto;
392*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_selector sel;
393*8d67ca89SAndroid Build Coastguard Worker };
394*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_kmaddress {
395*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t local;
396*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t remote;
397*8d67ca89SAndroid Build Coastguard Worker   __u32 reserved;
398*8d67ca89SAndroid Build Coastguard Worker   __u16 family;
399*8d67ca89SAndroid Build Coastguard Worker };
400*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_migrate {
401*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t old_daddr;
402*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t old_saddr;
403*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t new_daddr;
404*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t new_saddr;
405*8d67ca89SAndroid Build Coastguard Worker   __u8 proto;
406*8d67ca89SAndroid Build Coastguard Worker   __u8 mode;
407*8d67ca89SAndroid Build Coastguard Worker   __u16 reserved;
408*8d67ca89SAndroid Build Coastguard Worker   __u32 reqid;
409*8d67ca89SAndroid Build Coastguard Worker   __u16 old_family;
410*8d67ca89SAndroid Build Coastguard Worker   __u16 new_family;
411*8d67ca89SAndroid Build Coastguard Worker };
412*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_mapping {
413*8d67ca89SAndroid Build Coastguard Worker   struct xfrm_usersa_id id;
414*8d67ca89SAndroid Build Coastguard Worker   __u32 reqid;
415*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t old_saddr;
416*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t new_saddr;
417*8d67ca89SAndroid Build Coastguard Worker   __be16 old_sport;
418*8d67ca89SAndroid Build Coastguard Worker   __be16 new_sport;
419*8d67ca89SAndroid Build Coastguard Worker };
420*8d67ca89SAndroid Build Coastguard Worker struct xfrm_address_filter {
421*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t saddr;
422*8d67ca89SAndroid Build Coastguard Worker   xfrm_address_t daddr;
423*8d67ca89SAndroid Build Coastguard Worker   __u16 family;
424*8d67ca89SAndroid Build Coastguard Worker   __u8 splen;
425*8d67ca89SAndroid Build Coastguard Worker   __u8 dplen;
426*8d67ca89SAndroid Build Coastguard Worker };
427*8d67ca89SAndroid Build Coastguard Worker struct xfrm_user_offload {
428*8d67ca89SAndroid Build Coastguard Worker   int ifindex;
429*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
430*8d67ca89SAndroid Build Coastguard Worker };
431*8d67ca89SAndroid Build Coastguard Worker #define XFRM_OFFLOAD_IPV6 1
432*8d67ca89SAndroid Build Coastguard Worker #define XFRM_OFFLOAD_INBOUND 2
433*8d67ca89SAndroid Build Coastguard Worker #define XFRM_OFFLOAD_PACKET 4
434*8d67ca89SAndroid Build Coastguard Worker struct xfrm_userpolicy_default {
435*8d67ca89SAndroid Build Coastguard Worker #define XFRM_USERPOLICY_UNSPEC 0
436*8d67ca89SAndroid Build Coastguard Worker #define XFRM_USERPOLICY_BLOCK 1
437*8d67ca89SAndroid Build Coastguard Worker #define XFRM_USERPOLICY_ACCEPT 2
438*8d67ca89SAndroid Build Coastguard Worker   __u8 in;
439*8d67ca89SAndroid Build Coastguard Worker   __u8 fwd;
440*8d67ca89SAndroid Build Coastguard Worker   __u8 out;
441*8d67ca89SAndroid Build Coastguard Worker };
442*8d67ca89SAndroid Build Coastguard Worker #define XFRMGRP_ACQUIRE 1
443*8d67ca89SAndroid Build Coastguard Worker #define XFRMGRP_EXPIRE 2
444*8d67ca89SAndroid Build Coastguard Worker #define XFRMGRP_SA 4
445*8d67ca89SAndroid Build Coastguard Worker #define XFRMGRP_POLICY 8
446*8d67ca89SAndroid Build Coastguard Worker #define XFRMGRP_REPORT 0x20
447*8d67ca89SAndroid Build Coastguard Worker enum xfrm_nlgroups {
448*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_NONE,
449*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_NONE XFRMNLGRP_NONE
450*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_ACQUIRE,
451*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
452*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_EXPIRE,
453*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
454*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_SA,
455*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_SA XFRMNLGRP_SA
456*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_POLICY,
457*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
458*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_AEVENTS,
459*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
460*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_REPORT,
461*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
462*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_MIGRATE,
463*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
464*8d67ca89SAndroid Build Coastguard Worker   XFRMNLGRP_MAPPING,
465*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
466*8d67ca89SAndroid Build Coastguard Worker   __XFRMNLGRP_MAX
467*8d67ca89SAndroid Build Coastguard Worker };
468*8d67ca89SAndroid Build Coastguard Worker #define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
469*8d67ca89SAndroid Build Coastguard Worker #endif
470