Home | History | Annotate | Download | only in linux
      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[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
     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[0];
     89 };
     90 struct xfrm_algo {
     91   char alg_name[64];
     92   unsigned int alg_key_len;
     93   char alg_key[0];
     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[0];
    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[0];
    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_MAX
    186 };
    187 #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
    188 #define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
    189 struct xfrm_user_sec_ctx {
    190   __u16 len;
    191   __u16 exttype;
    192   __u8 ctx_alg;
    193   __u8 ctx_doi;
    194   __u16 ctx_len;
    195 };
    196 struct 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 };
    208 struct xfrm_encap_tmpl {
    209   __u16 encap_type;
    210   __be16 encap_sport;
    211   __be16 encap_dport;
    212   xfrm_address_t encap_oa;
    213 };
    214 enum 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 };
    226 struct xfrm_userpolicy_type {
    227   __u8 type;
    228   __u16 reserved1;
    229   __u8 reserved2;
    230 };
    231 enum 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 };
    265 struct xfrm_mark {
    266   __u32 v;
    267   __u32 m;
    268 };
    269 enum 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 };
    276 struct xfrmu_sadhinfo {
    277   __u32 sadhcnt;
    278   __u32 sadhmcnt;
    279 };
    280 enum 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 };
    289 struct xfrmu_spdinfo {
    290   __u32 incnt;
    291   __u32 outcnt;
    292   __u32 fwdcnt;
    293   __u32 inscnt;
    294   __u32 outscnt;
    295   __u32 fwdscnt;
    296 };
    297 struct xfrmu_spdhinfo {
    298   __u32 spdhcnt;
    299   __u32 spdhmcnt;
    300 };
    301 struct xfrmu_spdhthresh {
    302   __u8 lbits;
    303   __u8 rbits;
    304 };
    305 struct 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
    328 struct xfrm_usersa_id {
    329   xfrm_address_t daddr;
    330   __be32 spi;
    331   __u16 family;
    332   __u8 proto;
    333 };
    334 struct xfrm_aevent_id {
    335   struct xfrm_usersa_id sa_id;
    336   xfrm_address_t saddr;
    337   __u32 flags;
    338   __u32 reqid;
    339 };
    340 struct xfrm_userspi_info {
    341   struct xfrm_usersa_info info;
    342   __u32 min;
    343   __u32 max;
    344 };
    345 struct 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 };
    360 struct xfrm_userpolicy_id {
    361   struct xfrm_selector sel;
    362   __u32 index;
    363   __u8 dir;
    364 };
    365 struct 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 };
    375 struct xfrm_user_expire {
    376   struct xfrm_usersa_info state;
    377   __u8 hard;
    378 };
    379 struct xfrm_user_polexpire {
    380   struct xfrm_userpolicy_info pol;
    381   __u8 hard;
    382 };
    383 struct xfrm_usersa_flush {
    384   __u8 proto;
    385 };
    386 struct xfrm_user_report {
    387   __u8 proto;
    388   struct xfrm_selector sel;
    389 };
    390 struct xfrm_user_kmaddress {
    391   xfrm_address_t local;
    392   xfrm_address_t remote;
    393   __u32 reserved;
    394   __u16 family;
    395 };
    396 struct 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 };
    408 struct 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 };
    416 struct xfrm_address_filter {
    417   xfrm_address_t saddr;
    418   xfrm_address_t daddr;
    419   __u16 family;
    420   __u8 splen;
    421   __u8 dplen;
    422 };
    423 struct 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
    434 enum 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