blob: a34b3990f9d3a3c98d8638118e3c41ea2c468359 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _LINUX_XFRM_H
8#define _LINUX_XFRM_H
Christopher Ferris05d08e92016-02-04 13:16:38 -08009#include <linux/in6.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070010#include <linux/types.h>
Christopher Ferris05d08e92016-02-04 13:16:38 -080011typedef union {
Tao Baod7db5942015-01-28 10:07:51 -080012 __be32 a4;
13 __be32 a6[4];
Christopher Ferris05d08e92016-02-04 13:16:38 -080014 struct in6_addr in6;
Ben Cheng655a7c02013-10-16 16:09:24 -070015} xfrm_address_t;
16struct xfrm_id {
Tao Baod7db5942015-01-28 10:07:51 -080017 xfrm_address_t daddr;
18 __be32 spi;
19 __u8 proto;
Ben Cheng655a7c02013-10-16 16:09:24 -070020};
Ben Cheng655a7c02013-10-16 16:09:24 -070021struct xfrm_sec_ctx {
Tao Baod7db5942015-01-28 10:07:51 -080022 __u8 ctx_doi;
23 __u8 ctx_alg;
24 __u16 ctx_len;
Tao Baod7db5942015-01-28 10:07:51 -080025 __u32 ctx_sid;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070026 char ctx_str[];
Ben Cheng655a7c02013-10-16 16:09:24 -070027};
28#define XFRM_SC_DOI_RESERVED 0
Ben Cheng655a7c02013-10-16 16:09:24 -070029#define XFRM_SC_DOI_LSM 1
30#define XFRM_SC_ALG_RESERVED 0
31#define XFRM_SC_ALG_SELINUX 1
32struct xfrm_selector {
Tao Baod7db5942015-01-28 10:07:51 -080033 xfrm_address_t daddr;
34 xfrm_address_t saddr;
35 __be16 dport;
36 __be16 dport_mask;
Tao Baod7db5942015-01-28 10:07:51 -080037 __be16 sport;
38 __be16 sport_mask;
39 __u16 family;
40 __u8 prefixlen_d;
Tao Baod7db5942015-01-28 10:07:51 -080041 __u8 prefixlen_s;
42 __u8 proto;
43 int ifindex;
44 __kernel_uid32_t user;
Ben Cheng655a7c02013-10-16 16:09:24 -070045};
Tao Baod7db5942015-01-28 10:07:51 -080046#define XFRM_INF (~(__u64) 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070047struct xfrm_lifetime_cfg {
Tao Baod7db5942015-01-28 10:07:51 -080048 __u64 soft_byte_limit;
Tao Baod7db5942015-01-28 10:07:51 -080049 __u64 hard_byte_limit;
50 __u64 soft_packet_limit;
51 __u64 hard_packet_limit;
52 __u64 soft_add_expires_seconds;
Tao Baod7db5942015-01-28 10:07:51 -080053 __u64 hard_add_expires_seconds;
54 __u64 soft_use_expires_seconds;
55 __u64 hard_use_expires_seconds;
Ben Cheng655a7c02013-10-16 16:09:24 -070056};
Ben Cheng655a7c02013-10-16 16:09:24 -070057struct xfrm_lifetime_cur {
Tao Baod7db5942015-01-28 10:07:51 -080058 __u64 bytes;
59 __u64 packets;
60 __u64 add_time;
Tao Baod7db5942015-01-28 10:07:51 -080061 __u64 use_time;
Ben Cheng655a7c02013-10-16 16:09:24 -070062};
63struct xfrm_replay_state {
Tao Baod7db5942015-01-28 10:07:51 -080064 __u32 oseq;
Tao Baod7db5942015-01-28 10:07:51 -080065 __u32 seq;
66 __u32 bitmap;
Ben Cheng655a7c02013-10-16 16:09:24 -070067};
68#define XFRMA_REPLAY_ESN_MAX 4096
Ben Cheng655a7c02013-10-16 16:09:24 -070069struct xfrm_replay_state_esn {
Tao Baod7db5942015-01-28 10:07:51 -080070 unsigned int bmp_len;
71 __u32 oseq;
72 __u32 seq;
Tao Baod7db5942015-01-28 10:07:51 -080073 __u32 oseq_hi;
74 __u32 seq_hi;
75 __u32 replay_window;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070076 __u32 bmp[];
Ben Cheng655a7c02013-10-16 16:09:24 -070077};
78struct xfrm_algo {
Tao Baod7db5942015-01-28 10:07:51 -080079 char alg_name[64];
80 unsigned int alg_key_len;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070081 char alg_key[];
Ben Cheng655a7c02013-10-16 16:09:24 -070082};
83struct xfrm_algo_auth {
Tao Baod7db5942015-01-28 10:07:51 -080084 char alg_name[64];
Tao Baod7db5942015-01-28 10:07:51 -080085 unsigned int alg_key_len;
86 unsigned int alg_trunc_len;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070087 char alg_key[];
Ben Cheng655a7c02013-10-16 16:09:24 -070088};
Ben Cheng655a7c02013-10-16 16:09:24 -070089struct xfrm_algo_aead {
Tao Baod7db5942015-01-28 10:07:51 -080090 char alg_name[64];
91 unsigned int alg_key_len;
92 unsigned int alg_icv_len;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070093 char alg_key[];
Ben Cheng655a7c02013-10-16 16:09:24 -070094};
95struct xfrm_stats {
Tao Baod7db5942015-01-28 10:07:51 -080096 __u32 replay_window;
Tao Baod7db5942015-01-28 10:07:51 -080097 __u32 replay;
98 __u32 integrity_failed;
Ben Cheng655a7c02013-10-16 16:09:24 -070099};
100enum {
Tao Baod7db5942015-01-28 10:07:51 -0800101 XFRM_POLICY_TYPE_MAIN = 0,
102 XFRM_POLICY_TYPE_SUB = 1,
103 XFRM_POLICY_TYPE_MAX = 2,
104 XFRM_POLICY_TYPE_ANY = 255
Ben Cheng655a7c02013-10-16 16:09:24 -0700105};
106enum {
Tao Baod7db5942015-01-28 10:07:51 -0800107 XFRM_POLICY_IN = 0,
108 XFRM_POLICY_OUT = 1,
Tao Baod7db5942015-01-28 10:07:51 -0800109 XFRM_POLICY_FWD = 2,
110 XFRM_POLICY_MASK = 3,
111 XFRM_POLICY_MAX = 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700112};
Ben Cheng655a7c02013-10-16 16:09:24 -0700113enum {
Tao Baod7db5942015-01-28 10:07:51 -0800114 XFRM_SHARE_ANY,
115 XFRM_SHARE_SESSION,
116 XFRM_SHARE_USER,
Tao Baod7db5942015-01-28 10:07:51 -0800117 XFRM_SHARE_UNIQUE
Ben Cheng655a7c02013-10-16 16:09:24 -0700118};
119#define XFRM_MODE_TRANSPORT 0
120#define XFRM_MODE_TUNNEL 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700121#define XFRM_MODE_ROUTEOPTIMIZATION 2
122#define XFRM_MODE_IN_TRIGGER 3
123#define XFRM_MODE_BEET 4
124#define XFRM_MODE_MAX 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700125enum {
Tao Baod7db5942015-01-28 10:07:51 -0800126 XFRM_MSG_BASE = 0x10,
127 XFRM_MSG_NEWSA = 0x10,
Ben Cheng655a7c02013-10-16 16:09:24 -0700128#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
Tao Baod7db5942015-01-28 10:07:51 -0800129 XFRM_MSG_DELSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700130#define XFRM_MSG_DELSA XFRM_MSG_DELSA
Tao Baod7db5942015-01-28 10:07:51 -0800131 XFRM_MSG_GETSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700132#define XFRM_MSG_GETSA XFRM_MSG_GETSA
Tao Baod7db5942015-01-28 10:07:51 -0800133 XFRM_MSG_NEWPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700134#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800135 XFRM_MSG_DELPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700136#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800137 XFRM_MSG_GETPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700138#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800139 XFRM_MSG_ALLOCSPI,
Ben Cheng655a7c02013-10-16 16:09:24 -0700140#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
Tao Baod7db5942015-01-28 10:07:51 -0800141 XFRM_MSG_ACQUIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700142#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
Tao Baod7db5942015-01-28 10:07:51 -0800143 XFRM_MSG_EXPIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700144#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800145 XFRM_MSG_UPDPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700146#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800147 XFRM_MSG_UPDSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700148#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
Tao Baod7db5942015-01-28 10:07:51 -0800149 XFRM_MSG_POLEXPIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700150#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800151 XFRM_MSG_FLUSHSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700152#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
Tao Baod7db5942015-01-28 10:07:51 -0800153 XFRM_MSG_FLUSHPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700154#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800155 XFRM_MSG_NEWAE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700156#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
Tao Baod7db5942015-01-28 10:07:51 -0800157 XFRM_MSG_GETAE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700158#define XFRM_MSG_GETAE XFRM_MSG_GETAE
Tao Baod7db5942015-01-28 10:07:51 -0800159 XFRM_MSG_REPORT,
Ben Cheng655a7c02013-10-16 16:09:24 -0700160#define XFRM_MSG_REPORT XFRM_MSG_REPORT
Tao Baod7db5942015-01-28 10:07:51 -0800161 XFRM_MSG_MIGRATE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700162#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
Tao Baod7db5942015-01-28 10:07:51 -0800163 XFRM_MSG_NEWSADINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700164#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
Tao Baod7db5942015-01-28 10:07:51 -0800165 XFRM_MSG_GETSADINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700166#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
Tao Baod7db5942015-01-28 10:07:51 -0800167 XFRM_MSG_NEWSPDINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700168#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
Tao Baod7db5942015-01-28 10:07:51 -0800169 XFRM_MSG_GETSPDINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700170#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
Tao Baod7db5942015-01-28 10:07:51 -0800171 XFRM_MSG_MAPPING,
Ben Cheng655a7c02013-10-16 16:09:24 -0700172#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700173 XFRM_MSG_SETDEFAULT,
174#define XFRM_MSG_SETDEFAULT XFRM_MSG_SETDEFAULT
175 XFRM_MSG_GETDEFAULT,
176#define XFRM_MSG_GETDEFAULT XFRM_MSG_GETDEFAULT
Tao Baod7db5942015-01-28 10:07:51 -0800177 __XFRM_MSG_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700178};
179#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
180#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
Ben Cheng655a7c02013-10-16 16:09:24 -0700181struct xfrm_user_sec_ctx {
Tao Baod7db5942015-01-28 10:07:51 -0800182 __u16 len;
183 __u16 exttype;
184 __u8 ctx_alg;
Tao Baod7db5942015-01-28 10:07:51 -0800185 __u8 ctx_doi;
186 __u16 ctx_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700187};
188struct xfrm_user_tmpl {
Tao Baod7db5942015-01-28 10:07:51 -0800189 struct xfrm_id id;
190 __u16 family;
191 xfrm_address_t saddr;
192 __u32 reqid;
Tao Baod7db5942015-01-28 10:07:51 -0800193 __u8 mode;
194 __u8 share;
195 __u8 optional;
196 __u32 aalgos;
Tao Baod7db5942015-01-28 10:07:51 -0800197 __u32 ealgos;
198 __u32 calgos;
Ben Cheng655a7c02013-10-16 16:09:24 -0700199};
200struct xfrm_encap_tmpl {
Tao Baod7db5942015-01-28 10:07:51 -0800201 __u16 encap_type;
202 __be16 encap_sport;
203 __be16 encap_dport;
204 xfrm_address_t encap_oa;
Ben Cheng655a7c02013-10-16 16:09:24 -0700205};
206enum xfrm_ae_ftype_t {
Tao Baod7db5942015-01-28 10:07:51 -0800207 XFRM_AE_UNSPEC,
208 XFRM_AE_RTHR = 1,
Tao Baod7db5942015-01-28 10:07:51 -0800209 XFRM_AE_RVAL = 2,
210 XFRM_AE_LVAL = 4,
211 XFRM_AE_ETHR = 8,
212 XFRM_AE_CR = 16,
Tao Baod7db5942015-01-28 10:07:51 -0800213 XFRM_AE_CE = 32,
214 XFRM_AE_CU = 64,
215 __XFRM_AE_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700216#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700217};
218struct xfrm_userpolicy_type {
Tao Baod7db5942015-01-28 10:07:51 -0800219 __u8 type;
220 __u16 reserved1;
Tao Baod7db5942015-01-28 10:07:51 -0800221 __u8 reserved2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700222};
223enum xfrm_attr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800224 XFRMA_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800225 XFRMA_ALG_AUTH,
226 XFRMA_ALG_CRYPT,
227 XFRMA_ALG_COMP,
228 XFRMA_ENCAP,
Tao Baod7db5942015-01-28 10:07:51 -0800229 XFRMA_TMPL,
230 XFRMA_SA,
231 XFRMA_POLICY,
232 XFRMA_SEC_CTX,
Tao Baod7db5942015-01-28 10:07:51 -0800233 XFRMA_LTIME_VAL,
234 XFRMA_REPLAY_VAL,
235 XFRMA_REPLAY_THRESH,
236 XFRMA_ETIMER_THRESH,
Tao Baod7db5942015-01-28 10:07:51 -0800237 XFRMA_SRCADDR,
238 XFRMA_COADDR,
239 XFRMA_LASTUSED,
240 XFRMA_POLICY_TYPE,
Tao Baod7db5942015-01-28 10:07:51 -0800241 XFRMA_MIGRATE,
242 XFRMA_ALG_AEAD,
243 XFRMA_KMADDRESS,
244 XFRMA_ALG_AUTH_TRUNC,
Tao Baod7db5942015-01-28 10:07:51 -0800245 XFRMA_MARK,
246 XFRMA_TFCPAD,
247 XFRMA_REPLAY_ESN_VAL,
248 XFRMA_SA_EXTRA_FLAGS,
Tao Baod7db5942015-01-28 10:07:51 -0800249 XFRMA_PROTO,
250 XFRMA_ADDRESS_FILTER,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700251 XFRMA_PAD,
Christopher Ferris525ce912017-07-26 13:12:53 -0700252 XFRMA_OFFLOAD_DEV,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700253 XFRMA_SET_MARK,
254 XFRMA_SET_MARK_MASK,
255 XFRMA_IF_ID,
Christopher Ferris1ed55342022-03-22 16:06:25 -0700256 XFRMA_MTIMER_THRESH,
Tao Baod7db5942015-01-28 10:07:51 -0800257 __XFRMA_MAX
Christopher Ferris9ce28842018-10-25 12:11:39 -0700258#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK
Ben Cheng655a7c02013-10-16 16:09:24 -0700259#define XFRMA_MAX (__XFRMA_MAX - 1)
260};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700261struct xfrm_mark {
Tao Baod7db5942015-01-28 10:07:51 -0800262 __u32 v;
263 __u32 m;
Ben Cheng655a7c02013-10-16 16:09:24 -0700264};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700265enum xfrm_sadattr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800266 XFRMA_SAD_UNSPEC,
267 XFRMA_SAD_CNT,
Tao Baod7db5942015-01-28 10:07:51 -0800268 XFRMA_SAD_HINFO,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700269 __XFRMA_SAD_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700270#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
271};
272struct xfrmu_sadhinfo {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700273 __u32 sadhcnt;
Tao Baod7db5942015-01-28 10:07:51 -0800274 __u32 sadhmcnt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700275};
276enum xfrm_spdattr_type_t {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700277 XFRMA_SPD_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800278 XFRMA_SPD_INFO,
279 XFRMA_SPD_HINFO,
Tao Baod7db5942015-01-28 10:07:51 -0800280 XFRMA_SPD_IPV4_HTHRESH,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700281 XFRMA_SPD_IPV6_HTHRESH,
Tao Baod7db5942015-01-28 10:07:51 -0800282 __XFRMA_SPD_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700283#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700284};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700285struct xfrmu_spdinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800286 __u32 incnt;
287 __u32 outcnt;
Tao Baod7db5942015-01-28 10:07:51 -0800288 __u32 fwdcnt;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700289 __u32 inscnt;
Tao Baod7db5942015-01-28 10:07:51 -0800290 __u32 outscnt;
291 __u32 fwdscnt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700292};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700293struct xfrmu_spdhinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800294 __u32 spdhcnt;
295 __u32 spdhmcnt;
Christopher Ferris82d75042015-01-26 10:57:07 -0800296};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700297struct xfrmu_spdhthresh {
Tao Baod7db5942015-01-28 10:07:51 -0800298 __u8 lbits;
299 __u8 rbits;
Ben Cheng655a7c02013-10-16 16:09:24 -0700300};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700301struct xfrm_usersa_info {
Tao Baod7db5942015-01-28 10:07:51 -0800302 struct xfrm_selector sel;
303 struct xfrm_id id;
Tao Baod7db5942015-01-28 10:07:51 -0800304 xfrm_address_t saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700305 struct xfrm_lifetime_cfg lft;
Tao Baod7db5942015-01-28 10:07:51 -0800306 struct xfrm_lifetime_cur curlft;
307 struct xfrm_stats stats;
Tao Baod7db5942015-01-28 10:07:51 -0800308 __u32 seq;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700309 __u32 reqid;
Tao Baod7db5942015-01-28 10:07:51 -0800310 __u16 family;
311 __u8 mode;
Tao Baod7db5942015-01-28 10:07:51 -0800312 __u8 replay_window;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700313 __u8 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700314#define XFRM_STATE_NOECN 1
315#define XFRM_STATE_DECAP_DSCP 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700316#define XFRM_STATE_NOPMTUDISC 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700317#define XFRM_STATE_WILDRECV 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700318#define XFRM_STATE_ICMP 16
319#define XFRM_STATE_AF_UNSPEC 32
Ben Cheng655a7c02013-10-16 16:09:24 -0700320#define XFRM_STATE_ALIGN4 64
Christopher Ferris106b3a82016-08-24 12:15:38 -0700321#define XFRM_STATE_ESN 128
Ben Cheng655a7c02013-10-16 16:09:24 -0700322};
323#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
Christopher Ferris25c18d42020-10-14 17:42:58 -0700324#define XFRM_SA_XFLAG_OSEQ_MAY_WRAP 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700325struct xfrm_usersa_id {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700326 xfrm_address_t daddr;
Tao Baod7db5942015-01-28 10:07:51 -0800327 __be32 spi;
328 __u16 family;
Tao Baod7db5942015-01-28 10:07:51 -0800329 __u8 proto;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700330};
Ben Cheng655a7c02013-10-16 16:09:24 -0700331struct xfrm_aevent_id {
Tao Baod7db5942015-01-28 10:07:51 -0800332 struct xfrm_usersa_id sa_id;
Tao Baod7db5942015-01-28 10:07:51 -0800333 xfrm_address_t saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700334 __u32 flags;
Tao Baod7db5942015-01-28 10:07:51 -0800335 __u32 reqid;
Ben Cheng655a7c02013-10-16 16:09:24 -0700336};
Ben Cheng655a7c02013-10-16 16:09:24 -0700337struct xfrm_userspi_info {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700338 struct xfrm_usersa_info info;
Tao Baod7db5942015-01-28 10:07:51 -0800339 __u32 min;
340 __u32 max;
Ben Cheng655a7c02013-10-16 16:09:24 -0700341};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700342struct xfrm_userpolicy_info {
Tao Baod7db5942015-01-28 10:07:51 -0800343 struct xfrm_selector sel;
344 struct xfrm_lifetime_cfg lft;
Tao Baod7db5942015-01-28 10:07:51 -0800345 struct xfrm_lifetime_cur curlft;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700346 __u32 priority;
Tao Baod7db5942015-01-28 10:07:51 -0800347 __u32 index;
348 __u8 dir;
Tao Baod7db5942015-01-28 10:07:51 -0800349 __u8 action;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700350#define XFRM_POLICY_ALLOW 0
Ben Cheng655a7c02013-10-16 16:09:24 -0700351#define XFRM_POLICY_BLOCK 1
Tao Baod7db5942015-01-28 10:07:51 -0800352 __u8 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700353#define XFRM_POLICY_LOCALOK 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700354#define XFRM_POLICY_ICMP 2
Tao Baod7db5942015-01-28 10:07:51 -0800355 __u8 share;
Ben Cheng655a7c02013-10-16 16:09:24 -0700356};
Ben Cheng655a7c02013-10-16 16:09:24 -0700357struct xfrm_userpolicy_id {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700358 struct xfrm_selector sel;
Tao Baod7db5942015-01-28 10:07:51 -0800359 __u32 index;
360 __u8 dir;
Ben Cheng655a7c02013-10-16 16:09:24 -0700361};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700362struct xfrm_user_acquire {
Tao Baod7db5942015-01-28 10:07:51 -0800363 struct xfrm_id id;
364 xfrm_address_t saddr;
Tao Baod7db5942015-01-28 10:07:51 -0800365 struct xfrm_selector sel;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700366 struct xfrm_userpolicy_info policy;
Tao Baod7db5942015-01-28 10:07:51 -0800367 __u32 aalgos;
368 __u32 ealgos;
Tao Baod7db5942015-01-28 10:07:51 -0800369 __u32 calgos;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700370 __u32 seq;
Ben Cheng655a7c02013-10-16 16:09:24 -0700371};
372struct xfrm_user_expire {
Tao Baod7db5942015-01-28 10:07:51 -0800373 struct xfrm_usersa_info state;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700374 __u8 hard;
Ben Cheng655a7c02013-10-16 16:09:24 -0700375};
376struct xfrm_user_polexpire {
Tao Baod7db5942015-01-28 10:07:51 -0800377 struct xfrm_userpolicy_info pol;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700378 __u8 hard;
Ben Cheng655a7c02013-10-16 16:09:24 -0700379};
380struct xfrm_usersa_flush {
Tao Baod7db5942015-01-28 10:07:51 -0800381 __u8 proto;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700382};
Ben Cheng655a7c02013-10-16 16:09:24 -0700383struct xfrm_user_report {
Tao Baod7db5942015-01-28 10:07:51 -0800384 __u8 proto;
Tao Baod7db5942015-01-28 10:07:51 -0800385 struct xfrm_selector sel;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700386};
Ben Cheng655a7c02013-10-16 16:09:24 -0700387struct xfrm_user_kmaddress {
Tao Baod7db5942015-01-28 10:07:51 -0800388 xfrm_address_t local;
Tao Baod7db5942015-01-28 10:07:51 -0800389 xfrm_address_t remote;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700390 __u32 reserved;
Tao Baod7db5942015-01-28 10:07:51 -0800391 __u16 family;
Ben Cheng655a7c02013-10-16 16:09:24 -0700392};
Ben Cheng655a7c02013-10-16 16:09:24 -0700393struct xfrm_user_migrate {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700394 xfrm_address_t old_daddr;
Tao Baod7db5942015-01-28 10:07:51 -0800395 xfrm_address_t old_saddr;
396 xfrm_address_t new_daddr;
Tao Baod7db5942015-01-28 10:07:51 -0800397 xfrm_address_t new_saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700398 __u8 proto;
Tao Baod7db5942015-01-28 10:07:51 -0800399 __u8 mode;
400 __u16 reserved;
Tao Baod7db5942015-01-28 10:07:51 -0800401 __u32 reqid;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700402 __u16 old_family;
Tao Baod7db5942015-01-28 10:07:51 -0800403 __u16 new_family;
Ben Cheng655a7c02013-10-16 16:09:24 -0700404};
Ben Cheng655a7c02013-10-16 16:09:24 -0700405struct xfrm_user_mapping {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700406 struct xfrm_usersa_id id;
Tao Baod7db5942015-01-28 10:07:51 -0800407 __u32 reqid;
408 xfrm_address_t old_saddr;
Tao Baod7db5942015-01-28 10:07:51 -0800409 xfrm_address_t new_saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700410 __be16 old_sport;
Tao Baod7db5942015-01-28 10:07:51 -0800411 __be16 new_sport;
Ben Cheng655a7c02013-10-16 16:09:24 -0700412};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700413struct xfrm_address_filter {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700414 xfrm_address_t saddr;
Tao Baod7db5942015-01-28 10:07:51 -0800415 xfrm_address_t daddr;
416 __u16 family;
Tao Baod7db5942015-01-28 10:07:51 -0800417 __u8 splen;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700418 __u8 dplen;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700419};
Christopher Ferris525ce912017-07-26 13:12:53 -0700420struct xfrm_user_offload {
421 int ifindex;
422 __u8 flags;
423};
424#define XFRM_OFFLOAD_IPV6 1
425#define XFRM_OFFLOAD_INBOUND 2
Christopher Ferris8b7fdc92023-02-21 13:36:32 -0800426#define XFRM_OFFLOAD_PACKET 4
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700427struct xfrm_userpolicy_default {
428#define XFRM_USERPOLICY_UNSPEC 0
429#define XFRM_USERPOLICY_BLOCK 1
430#define XFRM_USERPOLICY_ACCEPT 2
431 __u8 in;
432 __u8 fwd;
433 __u8 out;
434};
Ben Cheng655a7c02013-10-16 16:09:24 -0700435#define XFRMGRP_ACQUIRE 1
436#define XFRMGRP_EXPIRE 2
Christopher Ferris106b3a82016-08-24 12:15:38 -0700437#define XFRMGRP_SA 4
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700438#define XFRMGRP_POLICY 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700439#define XFRMGRP_REPORT 0x20
440enum xfrm_nlgroups {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700441 XFRMNLGRP_NONE,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700442#define XFRMNLGRP_NONE XFRMNLGRP_NONE
Tao Baod7db5942015-01-28 10:07:51 -0800443 XFRMNLGRP_ACQUIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700444#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
Christopher Ferris106b3a82016-08-24 12:15:38 -0700445 XFRMNLGRP_EXPIRE,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700446#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800447 XFRMNLGRP_SA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700448#define XFRMNLGRP_SA XFRMNLGRP_SA
Christopher Ferris106b3a82016-08-24 12:15:38 -0700449 XFRMNLGRP_POLICY,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700450#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
Tao Baod7db5942015-01-28 10:07:51 -0800451 XFRMNLGRP_AEVENTS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700452#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
Christopher Ferris106b3a82016-08-24 12:15:38 -0700453 XFRMNLGRP_REPORT,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700454#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
Tao Baod7db5942015-01-28 10:07:51 -0800455 XFRMNLGRP_MIGRATE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700456#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
Christopher Ferris106b3a82016-08-24 12:15:38 -0700457 XFRMNLGRP_MAPPING,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700458#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
Tao Baod7db5942015-01-28 10:07:51 -0800459 __XFRMNLGRP_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700460};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700461#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700462#endif