xfrm.h revision 96c1db7b9d601c31d103389cac074a6cce0d7633
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_MAX 261#define XFRMA_MAX (__XFRMA_MAX - 1) 262}; 263struct xfrm_mark { 264 __u32 v; 265 __u32 m; 266}; 267enum xfrm_sadattr_type_t { 268 XFRMA_SAD_UNSPEC, 269 XFRMA_SAD_CNT, 270 XFRMA_SAD_HINFO, 271 __XFRMA_SAD_MAX 272#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1) 273}; 274struct xfrmu_sadhinfo { 275 __u32 sadhcnt; 276 __u32 sadhmcnt; 277}; 278enum xfrm_spdattr_type_t { 279 XFRMA_SPD_UNSPEC, 280 XFRMA_SPD_INFO, 281 XFRMA_SPD_HINFO, 282 XFRMA_SPD_IPV4_HTHRESH, 283 XFRMA_SPD_IPV6_HTHRESH, 284 __XFRMA_SPD_MAX 285#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1) 286}; 287struct xfrmu_spdinfo { 288 __u32 incnt; 289 __u32 outcnt; 290 __u32 fwdcnt; 291 __u32 inscnt; 292 __u32 outscnt; 293 __u32 fwdscnt; 294}; 295struct xfrmu_spdhinfo { 296 __u32 spdhcnt; 297 __u32 spdhmcnt; 298}; 299struct xfrmu_spdhthresh { 300 __u8 lbits; 301 __u8 rbits; 302}; 303struct xfrm_usersa_info { 304 struct xfrm_selector sel; 305 struct xfrm_id id; 306 xfrm_address_t saddr; 307 struct xfrm_lifetime_cfg lft; 308 struct xfrm_lifetime_cur curlft; 309 struct xfrm_stats stats; 310 __u32 seq; 311 __u32 reqid; 312 __u16 family; 313 __u8 mode; 314 __u8 replay_window; 315 __u8 flags; 316#define XFRM_STATE_NOECN 1 317#define XFRM_STATE_DECAP_DSCP 2 318#define XFRM_STATE_NOPMTUDISC 4 319#define XFRM_STATE_WILDRECV 8 320#define XFRM_STATE_ICMP 16 321#define XFRM_STATE_AF_UNSPEC 32 322#define XFRM_STATE_ALIGN4 64 323#define XFRM_STATE_ESN 128 324}; 325#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1 326struct xfrm_usersa_id { 327 xfrm_address_t daddr; 328 __be32 spi; 329 __u16 family; 330 __u8 proto; 331}; 332struct xfrm_aevent_id { 333 struct xfrm_usersa_id sa_id; 334 xfrm_address_t saddr; 335 __u32 flags; 336 __u32 reqid; 337}; 338struct xfrm_userspi_info { 339 struct xfrm_usersa_info info; 340 __u32 min; 341 __u32 max; 342}; 343struct 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}; 358struct xfrm_userpolicy_id { 359 struct xfrm_selector sel; 360 __u32 index; 361 __u8 dir; 362}; 363struct 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}; 373struct xfrm_user_expire { 374 struct xfrm_usersa_info state; 375 __u8 hard; 376}; 377struct xfrm_user_polexpire { 378 struct xfrm_userpolicy_info pol; 379 __u8 hard; 380}; 381struct xfrm_usersa_flush { 382 __u8 proto; 383}; 384struct xfrm_user_report { 385 __u8 proto; 386 struct xfrm_selector sel; 387}; 388struct xfrm_user_kmaddress { 389 xfrm_address_t local; 390 xfrm_address_t remote; 391 __u32 reserved; 392 __u16 family; 393}; 394struct 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}; 406struct 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}; 414struct xfrm_address_filter { 415 xfrm_address_t saddr; 416 xfrm_address_t daddr; 417 __u16 family; 418 __u8 splen; 419 __u8 dplen; 420}; 421#define XFRMGRP_ACQUIRE 1 422#define XFRMGRP_EXPIRE 2 423#define XFRMGRP_SA 4 424#define XFRMGRP_POLICY 8 425#define XFRMGRP_REPORT 0x20 426enum xfrm_nlgroups { 427 XFRMNLGRP_NONE, 428#define XFRMNLGRP_NONE XFRMNLGRP_NONE 429 XFRMNLGRP_ACQUIRE, 430#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE 431 XFRMNLGRP_EXPIRE, 432#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE 433 XFRMNLGRP_SA, 434#define XFRMNLGRP_SA XFRMNLGRP_SA 435 XFRMNLGRP_POLICY, 436#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY 437 XFRMNLGRP_AEVENTS, 438#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS 439 XFRMNLGRP_REPORT, 440#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT 441 XFRMNLGRP_MIGRATE, 442#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE 443 XFRMNLGRP_MAPPING, 444#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING 445 __XFRMNLGRP_MAX 446}; 447#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1) 448#endif 449