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