xfrm.h revision 525ce914edf136d2bd02ac8c404d56c52e737f4d
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>
23typedef union {
24  __be32 a4;
25  __be32 a6[4];
26  struct in6_addr in6;
27} xfrm_address_t;
28struct xfrm_id {
29  xfrm_address_t daddr;
30  __be32 spi;
31  __u8 proto;
32};
33struct xfrm_sec_ctx {
34  __u8 ctx_doi;
35  __u8 ctx_alg;
36  __u16 ctx_len;
37  __u32 ctx_sid;
38  char ctx_str[0];
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
44struct 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)
59struct 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};
69struct xfrm_lifetime_cur {
70  __u64 bytes;
71  __u64 packets;
72  __u64 add_time;
73  __u64 use_time;
74};
75struct xfrm_replay_state {
76  __u32 oseq;
77  __u32 seq;
78  __u32 bitmap;
79};
80#define XFRMA_REPLAY_ESN_MAX 4096
81struct 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[0];
89};
90struct xfrm_algo {
91  char alg_name[64];
92  unsigned int alg_key_len;
93  char alg_key[0];
94};
95struct xfrm_algo_auth {
96  char alg_name[64];
97  unsigned int alg_key_len;
98  unsigned int alg_trunc_len;
99  char alg_key[0];
100};
101struct xfrm_algo_aead {
102  char alg_name[64];
103  unsigned int alg_key_len;
104  unsigned int alg_icv_len;
105  char alg_key[0];
106};
107struct xfrm_stats {
108  __u32 replay_window;
109  __u32 replay;
110  __u32 integrity_failed;
111};
112enum {
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};
118enum {
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};
125enum {
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
137enum {
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_MAX
186};
187#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
188#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
189struct xfrm_user_sec_ctx {
190  __u16 len;
191  __u16 exttype;
192  __u8 ctx_alg;
193  __u8 ctx_doi;
194  __u16 ctx_len;
195};
196struct xfrm_user_tmpl {
197  struct xfrm_id id;
198  __u16 family;
199  xfrm_address_t saddr;
200  __u32 reqid;
201  __u8 mode;
202  __u8 share;
203  __u8 optional;
204  __u32 aalgos;
205  __u32 ealgos;
206  __u32 calgos;
207};
208struct xfrm_encap_tmpl {
209  __u16 encap_type;
210  __be16 encap_sport;
211  __be16 encap_dport;
212  xfrm_address_t encap_oa;
213};
214enum xfrm_ae_ftype_t {
215  XFRM_AE_UNSPEC,
216  XFRM_AE_RTHR = 1,
217  XFRM_AE_RVAL = 2,
218  XFRM_AE_LVAL = 4,
219  XFRM_AE_ETHR = 8,
220  XFRM_AE_CR = 16,
221  XFRM_AE_CE = 32,
222  XFRM_AE_CU = 64,
223  __XFRM_AE_MAX
224#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
225};
226struct xfrm_userpolicy_type {
227  __u8 type;
228  __u16 reserved1;
229  __u8 reserved2;
230};
231enum xfrm_attr_type_t {
232  XFRMA_UNSPEC,
233  XFRMA_ALG_AUTH,
234  XFRMA_ALG_CRYPT,
235  XFRMA_ALG_COMP,
236  XFRMA_ENCAP,
237  XFRMA_TMPL,
238  XFRMA_SA,
239  XFRMA_POLICY,
240  XFRMA_SEC_CTX,
241  XFRMA_LTIME_VAL,
242  XFRMA_REPLAY_VAL,
243  XFRMA_REPLAY_THRESH,
244  XFRMA_ETIMER_THRESH,
245  XFRMA_SRCADDR,
246  XFRMA_COADDR,
247  XFRMA_LASTUSED,
248  XFRMA_POLICY_TYPE,
249  XFRMA_MIGRATE,
250  XFRMA_ALG_AEAD,
251  XFRMA_KMADDRESS,
252  XFRMA_ALG_AUTH_TRUNC,
253  XFRMA_MARK,
254  XFRMA_TFCPAD,
255  XFRMA_REPLAY_ESN_VAL,
256  XFRMA_SA_EXTRA_FLAGS,
257  XFRMA_PROTO,
258  XFRMA_ADDRESS_FILTER,
259  XFRMA_PAD,
260  XFRMA_OFFLOAD_DEV,
261  __XFRMA_MAX
262#define XFRMA_MAX (__XFRMA_MAX - 1)
263};
264struct xfrm_mark {
265  __u32 v;
266  __u32 m;
267};
268enum xfrm_sadattr_type_t {
269  XFRMA_SAD_UNSPEC,
270  XFRMA_SAD_CNT,
271  XFRMA_SAD_HINFO,
272  __XFRMA_SAD_MAX
273#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
274};
275struct xfrmu_sadhinfo {
276  __u32 sadhcnt;
277  __u32 sadhmcnt;
278};
279enum xfrm_spdattr_type_t {
280  XFRMA_SPD_UNSPEC,
281  XFRMA_SPD_INFO,
282  XFRMA_SPD_HINFO,
283  XFRMA_SPD_IPV4_HTHRESH,
284  XFRMA_SPD_IPV6_HTHRESH,
285  __XFRMA_SPD_MAX
286#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
287};
288struct xfrmu_spdinfo {
289  __u32 incnt;
290  __u32 outcnt;
291  __u32 fwdcnt;
292  __u32 inscnt;
293  __u32 outscnt;
294  __u32 fwdscnt;
295};
296struct xfrmu_spdhinfo {
297  __u32 spdhcnt;
298  __u32 spdhmcnt;
299};
300struct xfrmu_spdhthresh {
301  __u8 lbits;
302  __u8 rbits;
303};
304struct xfrm_usersa_info {
305  struct xfrm_selector sel;
306  struct xfrm_id id;
307  xfrm_address_t saddr;
308  struct xfrm_lifetime_cfg lft;
309  struct xfrm_lifetime_cur curlft;
310  struct xfrm_stats stats;
311  __u32 seq;
312  __u32 reqid;
313  __u16 family;
314  __u8 mode;
315  __u8 replay_window;
316  __u8 flags;
317#define XFRM_STATE_NOECN 1
318#define XFRM_STATE_DECAP_DSCP 2
319#define XFRM_STATE_NOPMTUDISC 4
320#define XFRM_STATE_WILDRECV 8
321#define XFRM_STATE_ICMP 16
322#define XFRM_STATE_AF_UNSPEC 32
323#define XFRM_STATE_ALIGN4 64
324#define XFRM_STATE_ESN 128
325};
326#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
327struct xfrm_usersa_id {
328  xfrm_address_t daddr;
329  __be32 spi;
330  __u16 family;
331  __u8 proto;
332};
333struct xfrm_aevent_id {
334  struct xfrm_usersa_id sa_id;
335  xfrm_address_t saddr;
336  __u32 flags;
337  __u32 reqid;
338};
339struct xfrm_userspi_info {
340  struct xfrm_usersa_info info;
341  __u32 min;
342  __u32 max;
343};
344struct xfrm_userpolicy_info {
345  struct xfrm_selector sel;
346  struct xfrm_lifetime_cfg lft;
347  struct xfrm_lifetime_cur curlft;
348  __u32 priority;
349  __u32 index;
350  __u8 dir;
351  __u8 action;
352#define XFRM_POLICY_ALLOW 0
353#define XFRM_POLICY_BLOCK 1
354  __u8 flags;
355#define XFRM_POLICY_LOCALOK 1
356#define XFRM_POLICY_ICMP 2
357  __u8 share;
358};
359struct xfrm_userpolicy_id {
360  struct xfrm_selector sel;
361  __u32 index;
362  __u8 dir;
363};
364struct xfrm_user_acquire {
365  struct xfrm_id id;
366  xfrm_address_t saddr;
367  struct xfrm_selector sel;
368  struct xfrm_userpolicy_info policy;
369  __u32 aalgos;
370  __u32 ealgos;
371  __u32 calgos;
372  __u32 seq;
373};
374struct xfrm_user_expire {
375  struct xfrm_usersa_info state;
376  __u8 hard;
377};
378struct xfrm_user_polexpire {
379  struct xfrm_userpolicy_info pol;
380  __u8 hard;
381};
382struct xfrm_usersa_flush {
383  __u8 proto;
384};
385struct xfrm_user_report {
386  __u8 proto;
387  struct xfrm_selector sel;
388};
389struct xfrm_user_kmaddress {
390  xfrm_address_t local;
391  xfrm_address_t remote;
392  __u32 reserved;
393  __u16 family;
394};
395struct xfrm_user_migrate {
396  xfrm_address_t old_daddr;
397  xfrm_address_t old_saddr;
398  xfrm_address_t new_daddr;
399  xfrm_address_t new_saddr;
400  __u8 proto;
401  __u8 mode;
402  __u16 reserved;
403  __u32 reqid;
404  __u16 old_family;
405  __u16 new_family;
406};
407struct xfrm_user_mapping {
408  struct xfrm_usersa_id id;
409  __u32 reqid;
410  xfrm_address_t old_saddr;
411  xfrm_address_t new_saddr;
412  __be16 old_sport;
413  __be16 new_sport;
414};
415struct xfrm_address_filter {
416  xfrm_address_t saddr;
417  xfrm_address_t daddr;
418  __u16 family;
419  __u8 splen;
420  __u8 dplen;
421};
422struct xfrm_user_offload {
423  int ifindex;
424  __u8 flags;
425};
426#define XFRM_OFFLOAD_IPV6 1
427#define XFRM_OFFLOAD_INBOUND 2
428#define XFRMGRP_ACQUIRE 1
429#define XFRMGRP_EXPIRE 2
430#define XFRMGRP_SA 4
431#define XFRMGRP_POLICY 8
432#define XFRMGRP_REPORT 0x20
433enum xfrm_nlgroups {
434  XFRMNLGRP_NONE,
435#define XFRMNLGRP_NONE XFRMNLGRP_NONE
436  XFRMNLGRP_ACQUIRE,
437#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
438  XFRMNLGRP_EXPIRE,
439#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
440  XFRMNLGRP_SA,
441#define XFRMNLGRP_SA XFRMNLGRP_SA
442  XFRMNLGRP_POLICY,
443#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
444  XFRMNLGRP_AEVENTS,
445#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
446  XFRMNLGRP_REPORT,
447#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
448  XFRMNLGRP_MIGRATE,
449#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
450  XFRMNLGRP_MAPPING,
451#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
452  __XFRMNLGRP_MAX
453};
454#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
455#endif
456