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