xfrm.h revision 96c1db7b9d601c31d103389cac074a6cce0d7633
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_MAX
261#define XFRMA_MAX (__XFRMA_MAX - 1)
262};
263struct xfrm_mark {
264  __u32 v;
265  __u32 m;
266};
267enum xfrm_sadattr_type_t {
268  XFRMA_SAD_UNSPEC,
269  XFRMA_SAD_CNT,
270  XFRMA_SAD_HINFO,
271  __XFRMA_SAD_MAX
272#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
273};
274struct xfrmu_sadhinfo {
275  __u32 sadhcnt;
276  __u32 sadhmcnt;
277};
278enum xfrm_spdattr_type_t {
279  XFRMA_SPD_UNSPEC,
280  XFRMA_SPD_INFO,
281  XFRMA_SPD_HINFO,
282  XFRMA_SPD_IPV4_HTHRESH,
283  XFRMA_SPD_IPV6_HTHRESH,
284  __XFRMA_SPD_MAX
285#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
286};
287struct xfrmu_spdinfo {
288  __u32 incnt;
289  __u32 outcnt;
290  __u32 fwdcnt;
291  __u32 inscnt;
292  __u32 outscnt;
293  __u32 fwdscnt;
294};
295struct xfrmu_spdhinfo {
296  __u32 spdhcnt;
297  __u32 spdhmcnt;
298};
299struct xfrmu_spdhthresh {
300  __u8 lbits;
301  __u8 rbits;
302};
303struct xfrm_usersa_info {
304  struct xfrm_selector sel;
305  struct xfrm_id id;
306  xfrm_address_t saddr;
307  struct xfrm_lifetime_cfg lft;
308  struct xfrm_lifetime_cur curlft;
309  struct xfrm_stats stats;
310  __u32 seq;
311  __u32 reqid;
312  __u16 family;
313  __u8 mode;
314  __u8 replay_window;
315  __u8 flags;
316#define XFRM_STATE_NOECN 1
317#define XFRM_STATE_DECAP_DSCP 2
318#define XFRM_STATE_NOPMTUDISC 4
319#define XFRM_STATE_WILDRECV 8
320#define XFRM_STATE_ICMP 16
321#define XFRM_STATE_AF_UNSPEC 32
322#define XFRM_STATE_ALIGN4 64
323#define XFRM_STATE_ESN 128
324};
325#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
326struct xfrm_usersa_id {
327  xfrm_address_t daddr;
328  __be32 spi;
329  __u16 family;
330  __u8 proto;
331};
332struct xfrm_aevent_id {
333  struct xfrm_usersa_id sa_id;
334  xfrm_address_t saddr;
335  __u32 flags;
336  __u32 reqid;
337};
338struct xfrm_userspi_info {
339  struct xfrm_usersa_info info;
340  __u32 min;
341  __u32 max;
342};
343struct xfrm_userpolicy_info {
344  struct xfrm_selector sel;
345  struct xfrm_lifetime_cfg lft;
346  struct xfrm_lifetime_cur curlft;
347  __u32 priority;
348  __u32 index;
349  __u8 dir;
350  __u8 action;
351#define XFRM_POLICY_ALLOW 0
352#define XFRM_POLICY_BLOCK 1
353  __u8 flags;
354#define XFRM_POLICY_LOCALOK 1
355#define XFRM_POLICY_ICMP 2
356  __u8 share;
357};
358struct xfrm_userpolicy_id {
359  struct xfrm_selector sel;
360  __u32 index;
361  __u8 dir;
362};
363struct xfrm_user_acquire {
364  struct xfrm_id id;
365  xfrm_address_t saddr;
366  struct xfrm_selector sel;
367  struct xfrm_userpolicy_info policy;
368  __u32 aalgos;
369  __u32 ealgos;
370  __u32 calgos;
371  __u32 seq;
372};
373struct xfrm_user_expire {
374  struct xfrm_usersa_info state;
375  __u8 hard;
376};
377struct xfrm_user_polexpire {
378  struct xfrm_userpolicy_info pol;
379  __u8 hard;
380};
381struct xfrm_usersa_flush {
382  __u8 proto;
383};
384struct xfrm_user_report {
385  __u8 proto;
386  struct xfrm_selector sel;
387};
388struct xfrm_user_kmaddress {
389  xfrm_address_t local;
390  xfrm_address_t remote;
391  __u32 reserved;
392  __u16 family;
393};
394struct xfrm_user_migrate {
395  xfrm_address_t old_daddr;
396  xfrm_address_t old_saddr;
397  xfrm_address_t new_daddr;
398  xfrm_address_t new_saddr;
399  __u8 proto;
400  __u8 mode;
401  __u16 reserved;
402  __u32 reqid;
403  __u16 old_family;
404  __u16 new_family;
405};
406struct xfrm_user_mapping {
407  struct xfrm_usersa_id id;
408  __u32 reqid;
409  xfrm_address_t old_saddr;
410  xfrm_address_t new_saddr;
411  __be16 old_sport;
412  __be16 new_sport;
413};
414struct xfrm_address_filter {
415  xfrm_address_t saddr;
416  xfrm_address_t daddr;
417  __u16 family;
418  __u8 splen;
419  __u8 dplen;
420};
421#define XFRMGRP_ACQUIRE 1
422#define XFRMGRP_EXPIRE 2
423#define XFRMGRP_SA 4
424#define XFRMGRP_POLICY 8
425#define XFRMGRP_REPORT 0x20
426enum xfrm_nlgroups {
427  XFRMNLGRP_NONE,
428#define XFRMNLGRP_NONE XFRMNLGRP_NONE
429  XFRMNLGRP_ACQUIRE,
430#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
431  XFRMNLGRP_EXPIRE,
432#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
433  XFRMNLGRP_SA,
434#define XFRMNLGRP_SA XFRMNLGRP_SA
435  XFRMNLGRP_POLICY,
436#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
437  XFRMNLGRP_AEVENTS,
438#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
439  XFRMNLGRP_REPORT,
440#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
441  XFRMNLGRP_MIGRATE,
442#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
443  XFRMNLGRP_MAPPING,
444#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
445  __XFRMNLGRP_MAX
446};
447#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
448#endif
449