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