blob: b8e79e804108e6297aa6869accd1d190762aa9f5 [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 Ferris0f795212024-01-17 14:17:28 -080011#include <linux/stddef.h>
Christopher Ferris05d08e92016-02-04 13:16:38 -080012typedef union {
Tao Baod7db5942015-01-28 10:07:51 -080013 __be32 a4;
14 __be32 a6[4];
Christopher Ferris05d08e92016-02-04 13:16:38 -080015 struct in6_addr in6;
Ben Cheng655a7c02013-10-16 16:09:24 -070016} xfrm_address_t;
17struct xfrm_id {
Tao Baod7db5942015-01-28 10:07:51 -080018 xfrm_address_t daddr;
19 __be32 spi;
20 __u8 proto;
Ben Cheng655a7c02013-10-16 16:09:24 -070021};
Ben Cheng655a7c02013-10-16 16:09:24 -070022struct xfrm_sec_ctx {
Tao Baod7db5942015-01-28 10:07:51 -080023 __u8 ctx_doi;
24 __u8 ctx_alg;
25 __u16 ctx_len;
Tao Baod7db5942015-01-28 10:07:51 -080026 __u32 ctx_sid;
Christopher Ferris0f795212024-01-17 14:17:28 -080027 char ctx_str[] __counted_by(ctx_len);
Ben Cheng655a7c02013-10-16 16:09:24 -070028};
29#define XFRM_SC_DOI_RESERVED 0
Ben Cheng655a7c02013-10-16 16:09:24 -070030#define XFRM_SC_DOI_LSM 1
31#define XFRM_SC_ALG_RESERVED 0
32#define XFRM_SC_ALG_SELINUX 1
33struct xfrm_selector {
Tao Baod7db5942015-01-28 10:07:51 -080034 xfrm_address_t daddr;
35 xfrm_address_t saddr;
36 __be16 dport;
37 __be16 dport_mask;
Tao Baod7db5942015-01-28 10:07:51 -080038 __be16 sport;
39 __be16 sport_mask;
40 __u16 family;
41 __u8 prefixlen_d;
Tao Baod7db5942015-01-28 10:07:51 -080042 __u8 prefixlen_s;
43 __u8 proto;
44 int ifindex;
45 __kernel_uid32_t user;
Ben Cheng655a7c02013-10-16 16:09:24 -070046};
Tao Baod7db5942015-01-28 10:07:51 -080047#define XFRM_INF (~(__u64) 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070048struct xfrm_lifetime_cfg {
Tao Baod7db5942015-01-28 10:07:51 -080049 __u64 soft_byte_limit;
Tao Baod7db5942015-01-28 10:07:51 -080050 __u64 hard_byte_limit;
51 __u64 soft_packet_limit;
52 __u64 hard_packet_limit;
53 __u64 soft_add_expires_seconds;
Tao Baod7db5942015-01-28 10:07:51 -080054 __u64 hard_add_expires_seconds;
55 __u64 soft_use_expires_seconds;
56 __u64 hard_use_expires_seconds;
Ben Cheng655a7c02013-10-16 16:09:24 -070057};
Ben Cheng655a7c02013-10-16 16:09:24 -070058struct xfrm_lifetime_cur {
Tao Baod7db5942015-01-28 10:07:51 -080059 __u64 bytes;
60 __u64 packets;
61 __u64 add_time;
Tao Baod7db5942015-01-28 10:07:51 -080062 __u64 use_time;
Ben Cheng655a7c02013-10-16 16:09:24 -070063};
64struct xfrm_replay_state {
Tao Baod7db5942015-01-28 10:07:51 -080065 __u32 oseq;
Tao Baod7db5942015-01-28 10:07:51 -080066 __u32 seq;
67 __u32 bitmap;
Ben Cheng655a7c02013-10-16 16:09:24 -070068};
69#define XFRMA_REPLAY_ESN_MAX 4096
Ben Cheng655a7c02013-10-16 16:09:24 -070070struct xfrm_replay_state_esn {
Tao Baod7db5942015-01-28 10:07:51 -080071 unsigned int bmp_len;
72 __u32 oseq;
73 __u32 seq;
Tao Baod7db5942015-01-28 10:07:51 -080074 __u32 oseq_hi;
75 __u32 seq_hi;
76 __u32 replay_window;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070077 __u32 bmp[];
Ben Cheng655a7c02013-10-16 16:09:24 -070078};
79struct xfrm_algo {
Tao Baod7db5942015-01-28 10:07:51 -080080 char alg_name[64];
81 unsigned int alg_key_len;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070082 char alg_key[];
Ben Cheng655a7c02013-10-16 16:09:24 -070083};
84struct xfrm_algo_auth {
Tao Baod7db5942015-01-28 10:07:51 -080085 char alg_name[64];
Tao Baod7db5942015-01-28 10:07:51 -080086 unsigned int alg_key_len;
87 unsigned int alg_trunc_len;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070088 char alg_key[];
Ben Cheng655a7c02013-10-16 16:09:24 -070089};
Ben Cheng655a7c02013-10-16 16:09:24 -070090struct xfrm_algo_aead {
Tao Baod7db5942015-01-28 10:07:51 -080091 char alg_name[64];
92 unsigned int alg_key_len;
93 unsigned int alg_icv_len;
Christopher Ferris7447a1c2022-10-04 18:24:44 -070094 char alg_key[];
Ben Cheng655a7c02013-10-16 16:09:24 -070095};
96struct xfrm_stats {
Tao Baod7db5942015-01-28 10:07:51 -080097 __u32 replay_window;
Tao Baod7db5942015-01-28 10:07:51 -080098 __u32 replay;
99 __u32 integrity_failed;
Ben Cheng655a7c02013-10-16 16:09:24 -0700100};
101enum {
Tao Baod7db5942015-01-28 10:07:51 -0800102 XFRM_POLICY_TYPE_MAIN = 0,
103 XFRM_POLICY_TYPE_SUB = 1,
104 XFRM_POLICY_TYPE_MAX = 2,
105 XFRM_POLICY_TYPE_ANY = 255
Ben Cheng655a7c02013-10-16 16:09:24 -0700106};
107enum {
Tao Baod7db5942015-01-28 10:07:51 -0800108 XFRM_POLICY_IN = 0,
109 XFRM_POLICY_OUT = 1,
Tao Baod7db5942015-01-28 10:07:51 -0800110 XFRM_POLICY_FWD = 2,
111 XFRM_POLICY_MASK = 3,
112 XFRM_POLICY_MAX = 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700113};
Christopher Ferris7ac54f52024-08-07 21:07:12 +0000114enum xfrm_sa_dir {
115 XFRM_SA_DIR_IN = 1,
116 XFRM_SA_DIR_OUT = 2
117};
Ben Cheng655a7c02013-10-16 16:09:24 -0700118enum {
Tao Baod7db5942015-01-28 10:07:51 -0800119 XFRM_SHARE_ANY,
120 XFRM_SHARE_SESSION,
121 XFRM_SHARE_USER,
Tao Baod7db5942015-01-28 10:07:51 -0800122 XFRM_SHARE_UNIQUE
Ben Cheng655a7c02013-10-16 16:09:24 -0700123};
124#define XFRM_MODE_TRANSPORT 0
125#define XFRM_MODE_TUNNEL 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700126#define XFRM_MODE_ROUTEOPTIMIZATION 2
127#define XFRM_MODE_IN_TRIGGER 3
128#define XFRM_MODE_BEET 4
129#define XFRM_MODE_MAX 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700130enum {
Tao Baod7db5942015-01-28 10:07:51 -0800131 XFRM_MSG_BASE = 0x10,
132 XFRM_MSG_NEWSA = 0x10,
Ben Cheng655a7c02013-10-16 16:09:24 -0700133#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
Tao Baod7db5942015-01-28 10:07:51 -0800134 XFRM_MSG_DELSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700135#define XFRM_MSG_DELSA XFRM_MSG_DELSA
Tao Baod7db5942015-01-28 10:07:51 -0800136 XFRM_MSG_GETSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700137#define XFRM_MSG_GETSA XFRM_MSG_GETSA
Tao Baod7db5942015-01-28 10:07:51 -0800138 XFRM_MSG_NEWPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700139#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800140 XFRM_MSG_DELPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700141#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800142 XFRM_MSG_GETPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700143#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800144 XFRM_MSG_ALLOCSPI,
Ben Cheng655a7c02013-10-16 16:09:24 -0700145#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
Tao Baod7db5942015-01-28 10:07:51 -0800146 XFRM_MSG_ACQUIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700147#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
Tao Baod7db5942015-01-28 10:07:51 -0800148 XFRM_MSG_EXPIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700149#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800150 XFRM_MSG_UPDPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700151#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800152 XFRM_MSG_UPDSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700153#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
Tao Baod7db5942015-01-28 10:07:51 -0800154 XFRM_MSG_POLEXPIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700155#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800156 XFRM_MSG_FLUSHSA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700157#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
Tao Baod7db5942015-01-28 10:07:51 -0800158 XFRM_MSG_FLUSHPOLICY,
Ben Cheng655a7c02013-10-16 16:09:24 -0700159#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
Tao Baod7db5942015-01-28 10:07:51 -0800160 XFRM_MSG_NEWAE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700161#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
Tao Baod7db5942015-01-28 10:07:51 -0800162 XFRM_MSG_GETAE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700163#define XFRM_MSG_GETAE XFRM_MSG_GETAE
Tao Baod7db5942015-01-28 10:07:51 -0800164 XFRM_MSG_REPORT,
Ben Cheng655a7c02013-10-16 16:09:24 -0700165#define XFRM_MSG_REPORT XFRM_MSG_REPORT
Tao Baod7db5942015-01-28 10:07:51 -0800166 XFRM_MSG_MIGRATE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700167#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
Tao Baod7db5942015-01-28 10:07:51 -0800168 XFRM_MSG_NEWSADINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700169#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
Tao Baod7db5942015-01-28 10:07:51 -0800170 XFRM_MSG_GETSADINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700171#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
Tao Baod7db5942015-01-28 10:07:51 -0800172 XFRM_MSG_NEWSPDINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700173#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
Tao Baod7db5942015-01-28 10:07:51 -0800174 XFRM_MSG_GETSPDINFO,
Ben Cheng655a7c02013-10-16 16:09:24 -0700175#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
Tao Baod7db5942015-01-28 10:07:51 -0800176 XFRM_MSG_MAPPING,
Ben Cheng655a7c02013-10-16 16:09:24 -0700177#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700178 XFRM_MSG_SETDEFAULT,
179#define XFRM_MSG_SETDEFAULT XFRM_MSG_SETDEFAULT
180 XFRM_MSG_GETDEFAULT,
181#define XFRM_MSG_GETDEFAULT XFRM_MSG_GETDEFAULT
Tao Baod7db5942015-01-28 10:07:51 -0800182 __XFRM_MSG_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700183};
184#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
185#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
Ben Cheng655a7c02013-10-16 16:09:24 -0700186struct xfrm_user_sec_ctx {
Tao Baod7db5942015-01-28 10:07:51 -0800187 __u16 len;
188 __u16 exttype;
189 __u8 ctx_alg;
Tao Baod7db5942015-01-28 10:07:51 -0800190 __u8 ctx_doi;
191 __u16 ctx_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700192};
193struct xfrm_user_tmpl {
Tao Baod7db5942015-01-28 10:07:51 -0800194 struct xfrm_id id;
195 __u16 family;
196 xfrm_address_t saddr;
197 __u32 reqid;
Tao Baod7db5942015-01-28 10:07:51 -0800198 __u8 mode;
199 __u8 share;
200 __u8 optional;
201 __u32 aalgos;
Tao Baod7db5942015-01-28 10:07:51 -0800202 __u32 ealgos;
203 __u32 calgos;
Ben Cheng655a7c02013-10-16 16:09:24 -0700204};
205struct xfrm_encap_tmpl {
Tao Baod7db5942015-01-28 10:07:51 -0800206 __u16 encap_type;
207 __be16 encap_sport;
208 __be16 encap_dport;
209 xfrm_address_t encap_oa;
Ben Cheng655a7c02013-10-16 16:09:24 -0700210};
211enum xfrm_ae_ftype_t {
Tao Baod7db5942015-01-28 10:07:51 -0800212 XFRM_AE_UNSPEC,
213 XFRM_AE_RTHR = 1,
Tao Baod7db5942015-01-28 10:07:51 -0800214 XFRM_AE_RVAL = 2,
215 XFRM_AE_LVAL = 4,
216 XFRM_AE_ETHR = 8,
217 XFRM_AE_CR = 16,
Tao Baod7db5942015-01-28 10:07:51 -0800218 XFRM_AE_CE = 32,
219 XFRM_AE_CU = 64,
220 __XFRM_AE_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700221#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700222};
223struct xfrm_userpolicy_type {
Tao Baod7db5942015-01-28 10:07:51 -0800224 __u8 type;
225 __u16 reserved1;
Tao Baod7db5942015-01-28 10:07:51 -0800226 __u8 reserved2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700227};
228enum xfrm_attr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800229 XFRMA_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800230 XFRMA_ALG_AUTH,
231 XFRMA_ALG_CRYPT,
232 XFRMA_ALG_COMP,
233 XFRMA_ENCAP,
Tao Baod7db5942015-01-28 10:07:51 -0800234 XFRMA_TMPL,
235 XFRMA_SA,
236 XFRMA_POLICY,
237 XFRMA_SEC_CTX,
Tao Baod7db5942015-01-28 10:07:51 -0800238 XFRMA_LTIME_VAL,
239 XFRMA_REPLAY_VAL,
240 XFRMA_REPLAY_THRESH,
241 XFRMA_ETIMER_THRESH,
Tao Baod7db5942015-01-28 10:07:51 -0800242 XFRMA_SRCADDR,
243 XFRMA_COADDR,
244 XFRMA_LASTUSED,
245 XFRMA_POLICY_TYPE,
Tao Baod7db5942015-01-28 10:07:51 -0800246 XFRMA_MIGRATE,
247 XFRMA_ALG_AEAD,
248 XFRMA_KMADDRESS,
249 XFRMA_ALG_AUTH_TRUNC,
Tao Baod7db5942015-01-28 10:07:51 -0800250 XFRMA_MARK,
251 XFRMA_TFCPAD,
252 XFRMA_REPLAY_ESN_VAL,
253 XFRMA_SA_EXTRA_FLAGS,
Tao Baod7db5942015-01-28 10:07:51 -0800254 XFRMA_PROTO,
255 XFRMA_ADDRESS_FILTER,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700256 XFRMA_PAD,
Christopher Ferris525ce912017-07-26 13:12:53 -0700257 XFRMA_OFFLOAD_DEV,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700258 XFRMA_SET_MARK,
259 XFRMA_SET_MARK_MASK,
260 XFRMA_IF_ID,
Christopher Ferris1ed55342022-03-22 16:06:25 -0700261 XFRMA_MTIMER_THRESH,
Christopher Ferris7ac54f52024-08-07 21:07:12 +0000262 XFRMA_SA_DIR,
Tao Baod7db5942015-01-28 10:07:51 -0800263 __XFRMA_MAX
Christopher Ferris9ce28842018-10-25 12:11:39 -0700264#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK
Ben Cheng655a7c02013-10-16 16:09:24 -0700265#define XFRMA_MAX (__XFRMA_MAX - 1)
266};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700267struct xfrm_mark {
Tao Baod7db5942015-01-28 10:07:51 -0800268 __u32 v;
269 __u32 m;
Ben Cheng655a7c02013-10-16 16:09:24 -0700270};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700271enum xfrm_sadattr_type_t {
Tao Baod7db5942015-01-28 10:07:51 -0800272 XFRMA_SAD_UNSPEC,
273 XFRMA_SAD_CNT,
Tao Baod7db5942015-01-28 10:07:51 -0800274 XFRMA_SAD_HINFO,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700275 __XFRMA_SAD_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700276#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
277};
278struct xfrmu_sadhinfo {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700279 __u32 sadhcnt;
Tao Baod7db5942015-01-28 10:07:51 -0800280 __u32 sadhmcnt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700281};
282enum xfrm_spdattr_type_t {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700283 XFRMA_SPD_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800284 XFRMA_SPD_INFO,
285 XFRMA_SPD_HINFO,
Tao Baod7db5942015-01-28 10:07:51 -0800286 XFRMA_SPD_IPV4_HTHRESH,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700287 XFRMA_SPD_IPV6_HTHRESH,
Tao Baod7db5942015-01-28 10:07:51 -0800288 __XFRMA_SPD_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700289#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700290};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700291struct xfrmu_spdinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800292 __u32 incnt;
293 __u32 outcnt;
Tao Baod7db5942015-01-28 10:07:51 -0800294 __u32 fwdcnt;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700295 __u32 inscnt;
Tao Baod7db5942015-01-28 10:07:51 -0800296 __u32 outscnt;
297 __u32 fwdscnt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700298};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700299struct xfrmu_spdhinfo {
Tao Baod7db5942015-01-28 10:07:51 -0800300 __u32 spdhcnt;
301 __u32 spdhmcnt;
Christopher Ferris82d75042015-01-26 10:57:07 -0800302};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700303struct xfrmu_spdhthresh {
Tao Baod7db5942015-01-28 10:07:51 -0800304 __u8 lbits;
305 __u8 rbits;
Ben Cheng655a7c02013-10-16 16:09:24 -0700306};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700307struct xfrm_usersa_info {
Tao Baod7db5942015-01-28 10:07:51 -0800308 struct xfrm_selector sel;
309 struct xfrm_id id;
Tao Baod7db5942015-01-28 10:07:51 -0800310 xfrm_address_t saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700311 struct xfrm_lifetime_cfg lft;
Tao Baod7db5942015-01-28 10:07:51 -0800312 struct xfrm_lifetime_cur curlft;
313 struct xfrm_stats stats;
Tao Baod7db5942015-01-28 10:07:51 -0800314 __u32 seq;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700315 __u32 reqid;
Tao Baod7db5942015-01-28 10:07:51 -0800316 __u16 family;
317 __u8 mode;
Tao Baod7db5942015-01-28 10:07:51 -0800318 __u8 replay_window;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700319 __u8 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700320#define XFRM_STATE_NOECN 1
321#define XFRM_STATE_DECAP_DSCP 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700322#define XFRM_STATE_NOPMTUDISC 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700323#define XFRM_STATE_WILDRECV 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700324#define XFRM_STATE_ICMP 16
325#define XFRM_STATE_AF_UNSPEC 32
Ben Cheng655a7c02013-10-16 16:09:24 -0700326#define XFRM_STATE_ALIGN4 64
Christopher Ferris106b3a82016-08-24 12:15:38 -0700327#define XFRM_STATE_ESN 128
Ben Cheng655a7c02013-10-16 16:09:24 -0700328};
329#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
Christopher Ferris25c18d42020-10-14 17:42:58 -0700330#define XFRM_SA_XFLAG_OSEQ_MAY_WRAP 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700331struct xfrm_usersa_id {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700332 xfrm_address_t daddr;
Tao Baod7db5942015-01-28 10:07:51 -0800333 __be32 spi;
334 __u16 family;
Tao Baod7db5942015-01-28 10:07:51 -0800335 __u8 proto;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700336};
Ben Cheng655a7c02013-10-16 16:09:24 -0700337struct xfrm_aevent_id {
Tao Baod7db5942015-01-28 10:07:51 -0800338 struct xfrm_usersa_id sa_id;
Tao Baod7db5942015-01-28 10:07:51 -0800339 xfrm_address_t saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700340 __u32 flags;
Tao Baod7db5942015-01-28 10:07:51 -0800341 __u32 reqid;
Ben Cheng655a7c02013-10-16 16:09:24 -0700342};
Ben Cheng655a7c02013-10-16 16:09:24 -0700343struct xfrm_userspi_info {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700344 struct xfrm_usersa_info info;
Tao Baod7db5942015-01-28 10:07:51 -0800345 __u32 min;
346 __u32 max;
Ben Cheng655a7c02013-10-16 16:09:24 -0700347};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700348struct xfrm_userpolicy_info {
Tao Baod7db5942015-01-28 10:07:51 -0800349 struct xfrm_selector sel;
350 struct xfrm_lifetime_cfg lft;
Tao Baod7db5942015-01-28 10:07:51 -0800351 struct xfrm_lifetime_cur curlft;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700352 __u32 priority;
Tao Baod7db5942015-01-28 10:07:51 -0800353 __u32 index;
354 __u8 dir;
Tao Baod7db5942015-01-28 10:07:51 -0800355 __u8 action;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700356#define XFRM_POLICY_ALLOW 0
Ben Cheng655a7c02013-10-16 16:09:24 -0700357#define XFRM_POLICY_BLOCK 1
Tao Baod7db5942015-01-28 10:07:51 -0800358 __u8 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700359#define XFRM_POLICY_LOCALOK 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700360#define XFRM_POLICY_ICMP 2
Tao Baod7db5942015-01-28 10:07:51 -0800361 __u8 share;
Ben Cheng655a7c02013-10-16 16:09:24 -0700362};
Ben Cheng655a7c02013-10-16 16:09:24 -0700363struct xfrm_userpolicy_id {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700364 struct xfrm_selector sel;
Tao Baod7db5942015-01-28 10:07:51 -0800365 __u32 index;
366 __u8 dir;
Ben Cheng655a7c02013-10-16 16:09:24 -0700367};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700368struct xfrm_user_acquire {
Tao Baod7db5942015-01-28 10:07:51 -0800369 struct xfrm_id id;
370 xfrm_address_t saddr;
Tao Baod7db5942015-01-28 10:07:51 -0800371 struct xfrm_selector sel;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700372 struct xfrm_userpolicy_info policy;
Tao Baod7db5942015-01-28 10:07:51 -0800373 __u32 aalgos;
374 __u32 ealgos;
Tao Baod7db5942015-01-28 10:07:51 -0800375 __u32 calgos;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700376 __u32 seq;
Ben Cheng655a7c02013-10-16 16:09:24 -0700377};
378struct xfrm_user_expire {
Tao Baod7db5942015-01-28 10:07:51 -0800379 struct xfrm_usersa_info state;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700380 __u8 hard;
Ben Cheng655a7c02013-10-16 16:09:24 -0700381};
382struct xfrm_user_polexpire {
Tao Baod7db5942015-01-28 10:07:51 -0800383 struct xfrm_userpolicy_info pol;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700384 __u8 hard;
Ben Cheng655a7c02013-10-16 16:09:24 -0700385};
386struct xfrm_usersa_flush {
Tao Baod7db5942015-01-28 10:07:51 -0800387 __u8 proto;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700388};
Ben Cheng655a7c02013-10-16 16:09:24 -0700389struct xfrm_user_report {
Tao Baod7db5942015-01-28 10:07:51 -0800390 __u8 proto;
Tao Baod7db5942015-01-28 10:07:51 -0800391 struct xfrm_selector sel;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700392};
Ben Cheng655a7c02013-10-16 16:09:24 -0700393struct xfrm_user_kmaddress {
Tao Baod7db5942015-01-28 10:07:51 -0800394 xfrm_address_t local;
Tao Baod7db5942015-01-28 10:07:51 -0800395 xfrm_address_t remote;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700396 __u32 reserved;
Tao Baod7db5942015-01-28 10:07:51 -0800397 __u16 family;
Ben Cheng655a7c02013-10-16 16:09:24 -0700398};
Ben Cheng655a7c02013-10-16 16:09:24 -0700399struct xfrm_user_migrate {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700400 xfrm_address_t old_daddr;
Tao Baod7db5942015-01-28 10:07:51 -0800401 xfrm_address_t old_saddr;
402 xfrm_address_t new_daddr;
Tao Baod7db5942015-01-28 10:07:51 -0800403 xfrm_address_t new_saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700404 __u8 proto;
Tao Baod7db5942015-01-28 10:07:51 -0800405 __u8 mode;
406 __u16 reserved;
Tao Baod7db5942015-01-28 10:07:51 -0800407 __u32 reqid;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700408 __u16 old_family;
Tao Baod7db5942015-01-28 10:07:51 -0800409 __u16 new_family;
Ben Cheng655a7c02013-10-16 16:09:24 -0700410};
Ben Cheng655a7c02013-10-16 16:09:24 -0700411struct xfrm_user_mapping {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700412 struct xfrm_usersa_id id;
Tao Baod7db5942015-01-28 10:07:51 -0800413 __u32 reqid;
414 xfrm_address_t old_saddr;
Tao Baod7db5942015-01-28 10:07:51 -0800415 xfrm_address_t new_saddr;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700416 __be16 old_sport;
Tao Baod7db5942015-01-28 10:07:51 -0800417 __be16 new_sport;
Ben Cheng655a7c02013-10-16 16:09:24 -0700418};
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700419struct xfrm_address_filter {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700420 xfrm_address_t saddr;
Tao Baod7db5942015-01-28 10:07:51 -0800421 xfrm_address_t daddr;
422 __u16 family;
Tao Baod7db5942015-01-28 10:07:51 -0800423 __u8 splen;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700424 __u8 dplen;
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700425};
Christopher Ferris525ce912017-07-26 13:12:53 -0700426struct xfrm_user_offload {
427 int ifindex;
428 __u8 flags;
429};
430#define XFRM_OFFLOAD_IPV6 1
431#define XFRM_OFFLOAD_INBOUND 2
Christopher Ferris8b7fdc92023-02-21 13:36:32 -0800432#define XFRM_OFFLOAD_PACKET 4
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700433struct xfrm_userpolicy_default {
434#define XFRM_USERPOLICY_UNSPEC 0
435#define XFRM_USERPOLICY_BLOCK 1
436#define XFRM_USERPOLICY_ACCEPT 2
437 __u8 in;
438 __u8 fwd;
439 __u8 out;
440};
Ben Cheng655a7c02013-10-16 16:09:24 -0700441#define XFRMGRP_ACQUIRE 1
442#define XFRMGRP_EXPIRE 2
Christopher Ferris106b3a82016-08-24 12:15:38 -0700443#define XFRMGRP_SA 4
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700444#define XFRMGRP_POLICY 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700445#define XFRMGRP_REPORT 0x20
446enum xfrm_nlgroups {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700447 XFRMNLGRP_NONE,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700448#define XFRMNLGRP_NONE XFRMNLGRP_NONE
Tao Baod7db5942015-01-28 10:07:51 -0800449 XFRMNLGRP_ACQUIRE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700450#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
Christopher Ferris106b3a82016-08-24 12:15:38 -0700451 XFRMNLGRP_EXPIRE,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700452#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
Tao Baod7db5942015-01-28 10:07:51 -0800453 XFRMNLGRP_SA,
Ben Cheng655a7c02013-10-16 16:09:24 -0700454#define XFRMNLGRP_SA XFRMNLGRP_SA
Christopher Ferris106b3a82016-08-24 12:15:38 -0700455 XFRMNLGRP_POLICY,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700456#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
Tao Baod7db5942015-01-28 10:07:51 -0800457 XFRMNLGRP_AEVENTS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700458#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
Christopher Ferris106b3a82016-08-24 12:15:38 -0700459 XFRMNLGRP_REPORT,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700460#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
Tao Baod7db5942015-01-28 10:07:51 -0800461 XFRMNLGRP_MIGRATE,
Ben Cheng655a7c02013-10-16 16:09:24 -0700462#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
Christopher Ferris106b3a82016-08-24 12:15:38 -0700463 XFRMNLGRP_MAPPING,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700464#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
Tao Baod7db5942015-01-28 10:07:51 -0800465 __XFRMNLGRP_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700466};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700467#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
Christopher Ferrisba8d4f42014-09-03 19:56:49 -0700468#endif