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