1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4dc78e53SAndroid Build Coastguard Worker #ifndef _LINUX_XFRM_H 3*4dc78e53SAndroid Build Coastguard Worker #define _LINUX_XFRM_H 4*4dc78e53SAndroid Build Coastguard Worker 5*4dc78e53SAndroid Build Coastguard Worker #include <linux/in6.h> 6*4dc78e53SAndroid Build Coastguard Worker #include <linux/types.h> 7*4dc78e53SAndroid Build Coastguard Worker 8*4dc78e53SAndroid Build Coastguard Worker /* All of the structures in this file may not change size as they are 9*4dc78e53SAndroid Build Coastguard Worker * passed into the kernel from userspace via netlink sockets. 10*4dc78e53SAndroid Build Coastguard Worker */ 11*4dc78e53SAndroid Build Coastguard Worker 12*4dc78e53SAndroid Build Coastguard Worker /* Structure to encapsulate addresses. I do not want to use 13*4dc78e53SAndroid Build Coastguard Worker * "standard" structure. My apologies. 14*4dc78e53SAndroid Build Coastguard Worker */ 15*4dc78e53SAndroid Build Coastguard Worker typedef union { 16*4dc78e53SAndroid Build Coastguard Worker __be32 a4; 17*4dc78e53SAndroid Build Coastguard Worker __be32 a6[4]; 18*4dc78e53SAndroid Build Coastguard Worker struct in6_addr in6; 19*4dc78e53SAndroid Build Coastguard Worker } xfrm_address_t; 20*4dc78e53SAndroid Build Coastguard Worker 21*4dc78e53SAndroid Build Coastguard Worker /* Ident of a specific xfrm_state. It is used on input to lookup 22*4dc78e53SAndroid Build Coastguard Worker * the state by (spi,daddr,ah/esp) or to store information about 23*4dc78e53SAndroid Build Coastguard Worker * spi, protocol and tunnel address on output. 24*4dc78e53SAndroid Build Coastguard Worker */ 25*4dc78e53SAndroid Build Coastguard Worker struct xfrm_id { 26*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t daddr; 27*4dc78e53SAndroid Build Coastguard Worker __be32 spi; 28*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 29*4dc78e53SAndroid Build Coastguard Worker }; 30*4dc78e53SAndroid Build Coastguard Worker 31*4dc78e53SAndroid Build Coastguard Worker struct xfrm_sec_ctx { 32*4dc78e53SAndroid Build Coastguard Worker __u8 ctx_doi; 33*4dc78e53SAndroid Build Coastguard Worker __u8 ctx_alg; 34*4dc78e53SAndroid Build Coastguard Worker __u16 ctx_len; 35*4dc78e53SAndroid Build Coastguard Worker __u32 ctx_sid; 36*4dc78e53SAndroid Build Coastguard Worker char ctx_str[]; 37*4dc78e53SAndroid Build Coastguard Worker }; 38*4dc78e53SAndroid Build Coastguard Worker 39*4dc78e53SAndroid Build Coastguard Worker /* Security Context Domains of Interpretation */ 40*4dc78e53SAndroid Build Coastguard Worker #define XFRM_SC_DOI_RESERVED 0 41*4dc78e53SAndroid Build Coastguard Worker #define XFRM_SC_DOI_LSM 1 42*4dc78e53SAndroid Build Coastguard Worker 43*4dc78e53SAndroid Build Coastguard Worker /* Security Context Algorithms */ 44*4dc78e53SAndroid Build Coastguard Worker #define XFRM_SC_ALG_RESERVED 0 45*4dc78e53SAndroid Build Coastguard Worker #define XFRM_SC_ALG_SELINUX 1 46*4dc78e53SAndroid Build Coastguard Worker 47*4dc78e53SAndroid Build Coastguard Worker /* Selector, used as selector both on policy rules (SPD) and SAs. */ 48*4dc78e53SAndroid Build Coastguard Worker 49*4dc78e53SAndroid Build Coastguard Worker struct xfrm_selector { 50*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t daddr; 51*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t saddr; 52*4dc78e53SAndroid Build Coastguard Worker __be16 dport; 53*4dc78e53SAndroid Build Coastguard Worker __be16 dport_mask; 54*4dc78e53SAndroid Build Coastguard Worker __be16 sport; 55*4dc78e53SAndroid Build Coastguard Worker __be16 sport_mask; 56*4dc78e53SAndroid Build Coastguard Worker __u16 family; 57*4dc78e53SAndroid Build Coastguard Worker __u8 prefixlen_d; 58*4dc78e53SAndroid Build Coastguard Worker __u8 prefixlen_s; 59*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 60*4dc78e53SAndroid Build Coastguard Worker int ifindex; 61*4dc78e53SAndroid Build Coastguard Worker __kernel_uid32_t user; 62*4dc78e53SAndroid Build Coastguard Worker }; 63*4dc78e53SAndroid Build Coastguard Worker 64*4dc78e53SAndroid Build Coastguard Worker #define XFRM_INF (~(__u64)0) 65*4dc78e53SAndroid Build Coastguard Worker 66*4dc78e53SAndroid Build Coastguard Worker struct xfrm_lifetime_cfg { 67*4dc78e53SAndroid Build Coastguard Worker __u64 soft_byte_limit; 68*4dc78e53SAndroid Build Coastguard Worker __u64 hard_byte_limit; 69*4dc78e53SAndroid Build Coastguard Worker __u64 soft_packet_limit; 70*4dc78e53SAndroid Build Coastguard Worker __u64 hard_packet_limit; 71*4dc78e53SAndroid Build Coastguard Worker __u64 soft_add_expires_seconds; 72*4dc78e53SAndroid Build Coastguard Worker __u64 hard_add_expires_seconds; 73*4dc78e53SAndroid Build Coastguard Worker __u64 soft_use_expires_seconds; 74*4dc78e53SAndroid Build Coastguard Worker __u64 hard_use_expires_seconds; 75*4dc78e53SAndroid Build Coastguard Worker }; 76*4dc78e53SAndroid Build Coastguard Worker 77*4dc78e53SAndroid Build Coastguard Worker struct xfrm_lifetime_cur { 78*4dc78e53SAndroid Build Coastguard Worker __u64 bytes; 79*4dc78e53SAndroid Build Coastguard Worker __u64 packets; 80*4dc78e53SAndroid Build Coastguard Worker __u64 add_time; 81*4dc78e53SAndroid Build Coastguard Worker __u64 use_time; 82*4dc78e53SAndroid Build Coastguard Worker }; 83*4dc78e53SAndroid Build Coastguard Worker 84*4dc78e53SAndroid Build Coastguard Worker struct xfrm_replay_state { 85*4dc78e53SAndroid Build Coastguard Worker __u32 oseq; 86*4dc78e53SAndroid Build Coastguard Worker __u32 seq; 87*4dc78e53SAndroid Build Coastguard Worker __u32 bitmap; 88*4dc78e53SAndroid Build Coastguard Worker }; 89*4dc78e53SAndroid Build Coastguard Worker 90*4dc78e53SAndroid Build Coastguard Worker #define XFRMA_REPLAY_ESN_MAX 4096 91*4dc78e53SAndroid Build Coastguard Worker 92*4dc78e53SAndroid Build Coastguard Worker struct xfrm_replay_state_esn { 93*4dc78e53SAndroid Build Coastguard Worker unsigned int bmp_len; 94*4dc78e53SAndroid Build Coastguard Worker __u32 oseq; 95*4dc78e53SAndroid Build Coastguard Worker __u32 seq; 96*4dc78e53SAndroid Build Coastguard Worker __u32 oseq_hi; 97*4dc78e53SAndroid Build Coastguard Worker __u32 seq_hi; 98*4dc78e53SAndroid Build Coastguard Worker __u32 replay_window; 99*4dc78e53SAndroid Build Coastguard Worker __u32 bmp[]; 100*4dc78e53SAndroid Build Coastguard Worker }; 101*4dc78e53SAndroid Build Coastguard Worker 102*4dc78e53SAndroid Build Coastguard Worker struct xfrm_algo { 103*4dc78e53SAndroid Build Coastguard Worker char alg_name[64]; 104*4dc78e53SAndroid Build Coastguard Worker unsigned int alg_key_len; /* in bits */ 105*4dc78e53SAndroid Build Coastguard Worker char alg_key[]; 106*4dc78e53SAndroid Build Coastguard Worker }; 107*4dc78e53SAndroid Build Coastguard Worker 108*4dc78e53SAndroid Build Coastguard Worker struct xfrm_algo_auth { 109*4dc78e53SAndroid Build Coastguard Worker char alg_name[64]; 110*4dc78e53SAndroid Build Coastguard Worker unsigned int alg_key_len; /* in bits */ 111*4dc78e53SAndroid Build Coastguard Worker unsigned int alg_trunc_len; /* in bits */ 112*4dc78e53SAndroid Build Coastguard Worker char alg_key[]; 113*4dc78e53SAndroid Build Coastguard Worker }; 114*4dc78e53SAndroid Build Coastguard Worker 115*4dc78e53SAndroid Build Coastguard Worker struct xfrm_algo_aead { 116*4dc78e53SAndroid Build Coastguard Worker char alg_name[64]; 117*4dc78e53SAndroid Build Coastguard Worker unsigned int alg_key_len; /* in bits */ 118*4dc78e53SAndroid Build Coastguard Worker unsigned int alg_icv_len; /* in bits */ 119*4dc78e53SAndroid Build Coastguard Worker char alg_key[]; 120*4dc78e53SAndroid Build Coastguard Worker }; 121*4dc78e53SAndroid Build Coastguard Worker 122*4dc78e53SAndroid Build Coastguard Worker struct xfrm_stats { 123*4dc78e53SAndroid Build Coastguard Worker __u32 replay_window; 124*4dc78e53SAndroid Build Coastguard Worker __u32 replay; 125*4dc78e53SAndroid Build Coastguard Worker __u32 integrity_failed; 126*4dc78e53SAndroid Build Coastguard Worker }; 127*4dc78e53SAndroid Build Coastguard Worker 128*4dc78e53SAndroid Build Coastguard Worker enum { 129*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_TYPE_MAIN = 0, 130*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_TYPE_SUB = 1, 131*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_TYPE_MAX = 2, 132*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_TYPE_ANY = 255 133*4dc78e53SAndroid Build Coastguard Worker }; 134*4dc78e53SAndroid Build Coastguard Worker 135*4dc78e53SAndroid Build Coastguard Worker enum { 136*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_IN = 0, 137*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_OUT = 1, 138*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_FWD = 2, 139*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_MASK = 3, 140*4dc78e53SAndroid Build Coastguard Worker XFRM_POLICY_MAX = 3 141*4dc78e53SAndroid Build Coastguard Worker }; 142*4dc78e53SAndroid Build Coastguard Worker 143*4dc78e53SAndroid Build Coastguard Worker enum { 144*4dc78e53SAndroid Build Coastguard Worker XFRM_SHARE_ANY, /* No limitations */ 145*4dc78e53SAndroid Build Coastguard Worker XFRM_SHARE_SESSION, /* For this session only */ 146*4dc78e53SAndroid Build Coastguard Worker XFRM_SHARE_USER, /* For this user only */ 147*4dc78e53SAndroid Build Coastguard Worker XFRM_SHARE_UNIQUE /* Use once */ 148*4dc78e53SAndroid Build Coastguard Worker }; 149*4dc78e53SAndroid Build Coastguard Worker 150*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MODE_TRANSPORT 0 151*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MODE_TUNNEL 1 152*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MODE_ROUTEOPTIMIZATION 2 153*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MODE_IN_TRIGGER 3 154*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MODE_BEET 4 155*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MODE_MAX 5 156*4dc78e53SAndroid Build Coastguard Worker 157*4dc78e53SAndroid Build Coastguard Worker /* Netlink configuration messages. */ 158*4dc78e53SAndroid Build Coastguard Worker enum { 159*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_BASE = 0x10, 160*4dc78e53SAndroid Build Coastguard Worker 161*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_NEWSA = 0x10, 162*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_NEWSA XFRM_MSG_NEWSA 163*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_DELSA, 164*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_DELSA XFRM_MSG_DELSA 165*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_GETSA, 166*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_GETSA XFRM_MSG_GETSA 167*4dc78e53SAndroid Build Coastguard Worker 168*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_NEWPOLICY, 169*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY 170*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_DELPOLICY, 171*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY 172*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_GETPOLICY, 173*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY 174*4dc78e53SAndroid Build Coastguard Worker 175*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_ALLOCSPI, 176*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI 177*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_ACQUIRE, 178*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE 179*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_EXPIRE, 180*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE 181*4dc78e53SAndroid Build Coastguard Worker 182*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_UPDPOLICY, 183*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY 184*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_UPDSA, 185*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_UPDSA XFRM_MSG_UPDSA 186*4dc78e53SAndroid Build Coastguard Worker 187*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_POLEXPIRE, 188*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE 189*4dc78e53SAndroid Build Coastguard Worker 190*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_FLUSHSA, 191*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA 192*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_FLUSHPOLICY, 193*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY 194*4dc78e53SAndroid Build Coastguard Worker 195*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_NEWAE, 196*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_NEWAE XFRM_MSG_NEWAE 197*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_GETAE, 198*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_GETAE XFRM_MSG_GETAE 199*4dc78e53SAndroid Build Coastguard Worker 200*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_REPORT, 201*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_REPORT XFRM_MSG_REPORT 202*4dc78e53SAndroid Build Coastguard Worker 203*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_MIGRATE, 204*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE 205*4dc78e53SAndroid Build Coastguard Worker 206*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_NEWSADINFO, 207*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO 208*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_GETSADINFO, 209*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO 210*4dc78e53SAndroid Build Coastguard Worker 211*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_NEWSPDINFO, 212*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO 213*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_GETSPDINFO, 214*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO 215*4dc78e53SAndroid Build Coastguard Worker 216*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_MAPPING, 217*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_MAPPING XFRM_MSG_MAPPING 218*4dc78e53SAndroid Build Coastguard Worker 219*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_SETDEFAULT, 220*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_SETDEFAULT XFRM_MSG_SETDEFAULT 221*4dc78e53SAndroid Build Coastguard Worker XFRM_MSG_GETDEFAULT, 222*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_GETDEFAULT XFRM_MSG_GETDEFAULT 223*4dc78e53SAndroid Build Coastguard Worker __XFRM_MSG_MAX 224*4dc78e53SAndroid Build Coastguard Worker }; 225*4dc78e53SAndroid Build Coastguard Worker #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1) 226*4dc78e53SAndroid Build Coastguard Worker 227*4dc78e53SAndroid Build Coastguard Worker #define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE) 228*4dc78e53SAndroid Build Coastguard Worker 229*4dc78e53SAndroid Build Coastguard Worker /* 230*4dc78e53SAndroid Build Coastguard Worker * Generic LSM security context for comunicating to user space 231*4dc78e53SAndroid Build Coastguard Worker * NOTE: Same format as sadb_x_sec_ctx 232*4dc78e53SAndroid Build Coastguard Worker */ 233*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_sec_ctx { 234*4dc78e53SAndroid Build Coastguard Worker __u16 len; 235*4dc78e53SAndroid Build Coastguard Worker __u16 exttype; 236*4dc78e53SAndroid Build Coastguard Worker __u8 ctx_alg; /* LSMs: e.g., selinux == 1 */ 237*4dc78e53SAndroid Build Coastguard Worker __u8 ctx_doi; 238*4dc78e53SAndroid Build Coastguard Worker __u16 ctx_len; 239*4dc78e53SAndroid Build Coastguard Worker }; 240*4dc78e53SAndroid Build Coastguard Worker 241*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_tmpl { 242*4dc78e53SAndroid Build Coastguard Worker struct xfrm_id id; 243*4dc78e53SAndroid Build Coastguard Worker __u16 family; 244*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t saddr; 245*4dc78e53SAndroid Build Coastguard Worker __u32 reqid; 246*4dc78e53SAndroid Build Coastguard Worker __u8 mode; 247*4dc78e53SAndroid Build Coastguard Worker __u8 share; 248*4dc78e53SAndroid Build Coastguard Worker __u8 optional; 249*4dc78e53SAndroid Build Coastguard Worker __u32 aalgos; 250*4dc78e53SAndroid Build Coastguard Worker __u32 ealgos; 251*4dc78e53SAndroid Build Coastguard Worker __u32 calgos; 252*4dc78e53SAndroid Build Coastguard Worker }; 253*4dc78e53SAndroid Build Coastguard Worker 254*4dc78e53SAndroid Build Coastguard Worker struct xfrm_encap_tmpl { 255*4dc78e53SAndroid Build Coastguard Worker __u16 encap_type; 256*4dc78e53SAndroid Build Coastguard Worker __be16 encap_sport; 257*4dc78e53SAndroid Build Coastguard Worker __be16 encap_dport; 258*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t encap_oa; 259*4dc78e53SAndroid Build Coastguard Worker }; 260*4dc78e53SAndroid Build Coastguard Worker 261*4dc78e53SAndroid Build Coastguard Worker /* AEVENT flags */ 262*4dc78e53SAndroid Build Coastguard Worker enum xfrm_ae_ftype_t { 263*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_UNSPEC, 264*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_RTHR=1, /* replay threshold*/ 265*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_RVAL=2, /* replay value */ 266*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_LVAL=4, /* lifetime value */ 267*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_ETHR=8, /* expiry timer threshold */ 268*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_CR=16, /* Event cause is replay update */ 269*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_CE=32, /* Event cause is timer expiry */ 270*4dc78e53SAndroid Build Coastguard Worker XFRM_AE_CU=64, /* Event cause is policy update */ 271*4dc78e53SAndroid Build Coastguard Worker __XFRM_AE_MAX 272*4dc78e53SAndroid Build Coastguard Worker 273*4dc78e53SAndroid Build Coastguard Worker #define XFRM_AE_MAX (__XFRM_AE_MAX - 1) 274*4dc78e53SAndroid Build Coastguard Worker }; 275*4dc78e53SAndroid Build Coastguard Worker 276*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userpolicy_type { 277*4dc78e53SAndroid Build Coastguard Worker __u8 type; 278*4dc78e53SAndroid Build Coastguard Worker __u16 reserved1; 279*4dc78e53SAndroid Build Coastguard Worker __u8 reserved2; 280*4dc78e53SAndroid Build Coastguard Worker }; 281*4dc78e53SAndroid Build Coastguard Worker 282*4dc78e53SAndroid Build Coastguard Worker /* Netlink message attributes. */ 283*4dc78e53SAndroid Build Coastguard Worker enum xfrm_attr_type_t { 284*4dc78e53SAndroid Build Coastguard Worker XFRMA_UNSPEC, 285*4dc78e53SAndroid Build Coastguard Worker XFRMA_ALG_AUTH, /* struct xfrm_algo */ 286*4dc78e53SAndroid Build Coastguard Worker XFRMA_ALG_CRYPT, /* struct xfrm_algo */ 287*4dc78e53SAndroid Build Coastguard Worker XFRMA_ALG_COMP, /* struct xfrm_algo */ 288*4dc78e53SAndroid Build Coastguard Worker XFRMA_ENCAP, /* struct xfrm_algo + struct xfrm_encap_tmpl */ 289*4dc78e53SAndroid Build Coastguard Worker XFRMA_TMPL, /* 1 or more struct xfrm_user_tmpl */ 290*4dc78e53SAndroid Build Coastguard Worker XFRMA_SA, /* struct xfrm_usersa_info */ 291*4dc78e53SAndroid Build Coastguard Worker XFRMA_POLICY, /*struct xfrm_userpolicy_info */ 292*4dc78e53SAndroid Build Coastguard Worker XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */ 293*4dc78e53SAndroid Build Coastguard Worker XFRMA_LTIME_VAL, 294*4dc78e53SAndroid Build Coastguard Worker XFRMA_REPLAY_VAL, 295*4dc78e53SAndroid Build Coastguard Worker XFRMA_REPLAY_THRESH, 296*4dc78e53SAndroid Build Coastguard Worker XFRMA_ETIMER_THRESH, 297*4dc78e53SAndroid Build Coastguard Worker XFRMA_SRCADDR, /* xfrm_address_t */ 298*4dc78e53SAndroid Build Coastguard Worker XFRMA_COADDR, /* xfrm_address_t */ 299*4dc78e53SAndroid Build Coastguard Worker XFRMA_LASTUSED, /* __u64 */ 300*4dc78e53SAndroid Build Coastguard Worker XFRMA_POLICY_TYPE, /* struct xfrm_userpolicy_type */ 301*4dc78e53SAndroid Build Coastguard Worker XFRMA_MIGRATE, 302*4dc78e53SAndroid Build Coastguard Worker XFRMA_ALG_AEAD, /* struct xfrm_algo_aead */ 303*4dc78e53SAndroid Build Coastguard Worker XFRMA_KMADDRESS, /* struct xfrm_user_kmaddress */ 304*4dc78e53SAndroid Build Coastguard Worker XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */ 305*4dc78e53SAndroid Build Coastguard Worker XFRMA_MARK, /* struct xfrm_mark */ 306*4dc78e53SAndroid Build Coastguard Worker XFRMA_TFCPAD, /* __u32 */ 307*4dc78e53SAndroid Build Coastguard Worker XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_state_esn */ 308*4dc78e53SAndroid Build Coastguard Worker XFRMA_SA_EXTRA_FLAGS, /* __u32 */ 309*4dc78e53SAndroid Build Coastguard Worker XFRMA_PROTO, /* __u8 */ 310*4dc78e53SAndroid Build Coastguard Worker XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */ 311*4dc78e53SAndroid Build Coastguard Worker XFRMA_PAD, 312*4dc78e53SAndroid Build Coastguard Worker XFRMA_OFFLOAD_DEV, /* struct xfrm_user_offload */ 313*4dc78e53SAndroid Build Coastguard Worker XFRMA_SET_MARK, /* __u32 */ 314*4dc78e53SAndroid Build Coastguard Worker XFRMA_SET_MARK_MASK, /* __u32 */ 315*4dc78e53SAndroid Build Coastguard Worker XFRMA_IF_ID, /* __u32 */ 316*4dc78e53SAndroid Build Coastguard Worker XFRMA_MTIMER_THRESH, /* __u32 in seconds for input SA */ 317*4dc78e53SAndroid Build Coastguard Worker __XFRMA_MAX 318*4dc78e53SAndroid Build Coastguard Worker 319*4dc78e53SAndroid Build Coastguard Worker #define XFRMA_OUTPUT_MARK XFRMA_SET_MARK /* Compatibility */ 320*4dc78e53SAndroid Build Coastguard Worker #define XFRMA_MAX (__XFRMA_MAX - 1) 321*4dc78e53SAndroid Build Coastguard Worker }; 322*4dc78e53SAndroid Build Coastguard Worker 323*4dc78e53SAndroid Build Coastguard Worker struct xfrm_mark { 324*4dc78e53SAndroid Build Coastguard Worker __u32 v; /* value */ 325*4dc78e53SAndroid Build Coastguard Worker __u32 m; /* mask */ 326*4dc78e53SAndroid Build Coastguard Worker }; 327*4dc78e53SAndroid Build Coastguard Worker 328*4dc78e53SAndroid Build Coastguard Worker enum xfrm_sadattr_type_t { 329*4dc78e53SAndroid Build Coastguard Worker XFRMA_SAD_UNSPEC, 330*4dc78e53SAndroid Build Coastguard Worker XFRMA_SAD_CNT, 331*4dc78e53SAndroid Build Coastguard Worker XFRMA_SAD_HINFO, 332*4dc78e53SAndroid Build Coastguard Worker __XFRMA_SAD_MAX 333*4dc78e53SAndroid Build Coastguard Worker 334*4dc78e53SAndroid Build Coastguard Worker #define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1) 335*4dc78e53SAndroid Build Coastguard Worker }; 336*4dc78e53SAndroid Build Coastguard Worker 337*4dc78e53SAndroid Build Coastguard Worker struct xfrmu_sadhinfo { 338*4dc78e53SAndroid Build Coastguard Worker __u32 sadhcnt; /* current hash bkts */ 339*4dc78e53SAndroid Build Coastguard Worker __u32 sadhmcnt; /* max allowed hash bkts */ 340*4dc78e53SAndroid Build Coastguard Worker }; 341*4dc78e53SAndroid Build Coastguard Worker 342*4dc78e53SAndroid Build Coastguard Worker enum xfrm_spdattr_type_t { 343*4dc78e53SAndroid Build Coastguard Worker XFRMA_SPD_UNSPEC, 344*4dc78e53SAndroid Build Coastguard Worker XFRMA_SPD_INFO, 345*4dc78e53SAndroid Build Coastguard Worker XFRMA_SPD_HINFO, 346*4dc78e53SAndroid Build Coastguard Worker XFRMA_SPD_IPV4_HTHRESH, 347*4dc78e53SAndroid Build Coastguard Worker XFRMA_SPD_IPV6_HTHRESH, 348*4dc78e53SAndroid Build Coastguard Worker __XFRMA_SPD_MAX 349*4dc78e53SAndroid Build Coastguard Worker 350*4dc78e53SAndroid Build Coastguard Worker #define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1) 351*4dc78e53SAndroid Build Coastguard Worker }; 352*4dc78e53SAndroid Build Coastguard Worker 353*4dc78e53SAndroid Build Coastguard Worker struct xfrmu_spdinfo { 354*4dc78e53SAndroid Build Coastguard Worker __u32 incnt; 355*4dc78e53SAndroid Build Coastguard Worker __u32 outcnt; 356*4dc78e53SAndroid Build Coastguard Worker __u32 fwdcnt; 357*4dc78e53SAndroid Build Coastguard Worker __u32 inscnt; 358*4dc78e53SAndroid Build Coastguard Worker __u32 outscnt; 359*4dc78e53SAndroid Build Coastguard Worker __u32 fwdscnt; 360*4dc78e53SAndroid Build Coastguard Worker }; 361*4dc78e53SAndroid Build Coastguard Worker 362*4dc78e53SAndroid Build Coastguard Worker struct xfrmu_spdhinfo { 363*4dc78e53SAndroid Build Coastguard Worker __u32 spdhcnt; 364*4dc78e53SAndroid Build Coastguard Worker __u32 spdhmcnt; 365*4dc78e53SAndroid Build Coastguard Worker }; 366*4dc78e53SAndroid Build Coastguard Worker 367*4dc78e53SAndroid Build Coastguard Worker struct xfrmu_spdhthresh { 368*4dc78e53SAndroid Build Coastguard Worker __u8 lbits; 369*4dc78e53SAndroid Build Coastguard Worker __u8 rbits; 370*4dc78e53SAndroid Build Coastguard Worker }; 371*4dc78e53SAndroid Build Coastguard Worker 372*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_info { 373*4dc78e53SAndroid Build Coastguard Worker struct xfrm_selector sel; 374*4dc78e53SAndroid Build Coastguard Worker struct xfrm_id id; 375*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t saddr; 376*4dc78e53SAndroid Build Coastguard Worker struct xfrm_lifetime_cfg lft; 377*4dc78e53SAndroid Build Coastguard Worker struct xfrm_lifetime_cur curlft; 378*4dc78e53SAndroid Build Coastguard Worker struct xfrm_stats stats; 379*4dc78e53SAndroid Build Coastguard Worker __u32 seq; 380*4dc78e53SAndroid Build Coastguard Worker __u32 reqid; 381*4dc78e53SAndroid Build Coastguard Worker __u16 family; 382*4dc78e53SAndroid Build Coastguard Worker __u8 mode; /* XFRM_MODE_xxx */ 383*4dc78e53SAndroid Build Coastguard Worker __u8 replay_window; 384*4dc78e53SAndroid Build Coastguard Worker __u8 flags; 385*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_NOECN 1 386*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_DECAP_DSCP 2 387*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_NOPMTUDISC 4 388*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_WILDRECV 8 389*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_ICMP 16 390*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_AF_UNSPEC 32 391*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_ALIGN4 64 392*4dc78e53SAndroid Build Coastguard Worker #define XFRM_STATE_ESN 128 393*4dc78e53SAndroid Build Coastguard Worker }; 394*4dc78e53SAndroid Build Coastguard Worker 395*4dc78e53SAndroid Build Coastguard Worker #define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1 396*4dc78e53SAndroid Build Coastguard Worker #define XFRM_SA_XFLAG_OSEQ_MAY_WRAP 2 397*4dc78e53SAndroid Build Coastguard Worker 398*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_id { 399*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t daddr; 400*4dc78e53SAndroid Build Coastguard Worker __be32 spi; 401*4dc78e53SAndroid Build Coastguard Worker __u16 family; 402*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 403*4dc78e53SAndroid Build Coastguard Worker }; 404*4dc78e53SAndroid Build Coastguard Worker 405*4dc78e53SAndroid Build Coastguard Worker struct xfrm_aevent_id { 406*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_id sa_id; 407*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t saddr; 408*4dc78e53SAndroid Build Coastguard Worker __u32 flags; 409*4dc78e53SAndroid Build Coastguard Worker __u32 reqid; 410*4dc78e53SAndroid Build Coastguard Worker }; 411*4dc78e53SAndroid Build Coastguard Worker 412*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userspi_info { 413*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_info info; 414*4dc78e53SAndroid Build Coastguard Worker __u32 min; 415*4dc78e53SAndroid Build Coastguard Worker __u32 max; 416*4dc78e53SAndroid Build Coastguard Worker }; 417*4dc78e53SAndroid Build Coastguard Worker 418*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userpolicy_info { 419*4dc78e53SAndroid Build Coastguard Worker struct xfrm_selector sel; 420*4dc78e53SAndroid Build Coastguard Worker struct xfrm_lifetime_cfg lft; 421*4dc78e53SAndroid Build Coastguard Worker struct xfrm_lifetime_cur curlft; 422*4dc78e53SAndroid Build Coastguard Worker __u32 priority; 423*4dc78e53SAndroid Build Coastguard Worker __u32 index; 424*4dc78e53SAndroid Build Coastguard Worker __u8 dir; 425*4dc78e53SAndroid Build Coastguard Worker __u8 action; 426*4dc78e53SAndroid Build Coastguard Worker #define XFRM_POLICY_ALLOW 0 427*4dc78e53SAndroid Build Coastguard Worker #define XFRM_POLICY_BLOCK 1 428*4dc78e53SAndroid Build Coastguard Worker __u8 flags; 429*4dc78e53SAndroid Build Coastguard Worker #define XFRM_POLICY_LOCALOK 1 /* Allow user to override global policy */ 430*4dc78e53SAndroid Build Coastguard Worker /* Automatically expand selector to include matching ICMP payloads. */ 431*4dc78e53SAndroid Build Coastguard Worker #define XFRM_POLICY_ICMP 2 432*4dc78e53SAndroid Build Coastguard Worker __u8 share; 433*4dc78e53SAndroid Build Coastguard Worker }; 434*4dc78e53SAndroid Build Coastguard Worker 435*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userpolicy_id { 436*4dc78e53SAndroid Build Coastguard Worker struct xfrm_selector sel; 437*4dc78e53SAndroid Build Coastguard Worker __u32 index; 438*4dc78e53SAndroid Build Coastguard Worker __u8 dir; 439*4dc78e53SAndroid Build Coastguard Worker }; 440*4dc78e53SAndroid Build Coastguard Worker 441*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_acquire { 442*4dc78e53SAndroid Build Coastguard Worker struct xfrm_id id; 443*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t saddr; 444*4dc78e53SAndroid Build Coastguard Worker struct xfrm_selector sel; 445*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userpolicy_info policy; 446*4dc78e53SAndroid Build Coastguard Worker __u32 aalgos; 447*4dc78e53SAndroid Build Coastguard Worker __u32 ealgos; 448*4dc78e53SAndroid Build Coastguard Worker __u32 calgos; 449*4dc78e53SAndroid Build Coastguard Worker __u32 seq; 450*4dc78e53SAndroid Build Coastguard Worker }; 451*4dc78e53SAndroid Build Coastguard Worker 452*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_expire { 453*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_info state; 454*4dc78e53SAndroid Build Coastguard Worker __u8 hard; 455*4dc78e53SAndroid Build Coastguard Worker }; 456*4dc78e53SAndroid Build Coastguard Worker 457*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_polexpire { 458*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userpolicy_info pol; 459*4dc78e53SAndroid Build Coastguard Worker __u8 hard; 460*4dc78e53SAndroid Build Coastguard Worker }; 461*4dc78e53SAndroid Build Coastguard Worker 462*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_flush { 463*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 464*4dc78e53SAndroid Build Coastguard Worker }; 465*4dc78e53SAndroid Build Coastguard Worker 466*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_report { 467*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 468*4dc78e53SAndroid Build Coastguard Worker struct xfrm_selector sel; 469*4dc78e53SAndroid Build Coastguard Worker }; 470*4dc78e53SAndroid Build Coastguard Worker 471*4dc78e53SAndroid Build Coastguard Worker /* Used by MIGRATE to pass addresses IKE should use to perform 472*4dc78e53SAndroid Build Coastguard Worker * SA negotiation with the peer */ 473*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_kmaddress { 474*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t local; 475*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t remote; 476*4dc78e53SAndroid Build Coastguard Worker __u32 reserved; 477*4dc78e53SAndroid Build Coastguard Worker __u16 family; 478*4dc78e53SAndroid Build Coastguard Worker }; 479*4dc78e53SAndroid Build Coastguard Worker 480*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_migrate { 481*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t old_daddr; 482*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t old_saddr; 483*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t new_daddr; 484*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t new_saddr; 485*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 486*4dc78e53SAndroid Build Coastguard Worker __u8 mode; 487*4dc78e53SAndroid Build Coastguard Worker __u16 reserved; 488*4dc78e53SAndroid Build Coastguard Worker __u32 reqid; 489*4dc78e53SAndroid Build Coastguard Worker __u16 old_family; 490*4dc78e53SAndroid Build Coastguard Worker __u16 new_family; 491*4dc78e53SAndroid Build Coastguard Worker }; 492*4dc78e53SAndroid Build Coastguard Worker 493*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_mapping { 494*4dc78e53SAndroid Build Coastguard Worker struct xfrm_usersa_id id; 495*4dc78e53SAndroid Build Coastguard Worker __u32 reqid; 496*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t old_saddr; 497*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t new_saddr; 498*4dc78e53SAndroid Build Coastguard Worker __be16 old_sport; 499*4dc78e53SAndroid Build Coastguard Worker __be16 new_sport; 500*4dc78e53SAndroid Build Coastguard Worker }; 501*4dc78e53SAndroid Build Coastguard Worker 502*4dc78e53SAndroid Build Coastguard Worker struct xfrm_address_filter { 503*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t saddr; 504*4dc78e53SAndroid Build Coastguard Worker xfrm_address_t daddr; 505*4dc78e53SAndroid Build Coastguard Worker __u16 family; 506*4dc78e53SAndroid Build Coastguard Worker __u8 splen; 507*4dc78e53SAndroid Build Coastguard Worker __u8 dplen; 508*4dc78e53SAndroid Build Coastguard Worker }; 509*4dc78e53SAndroid Build Coastguard Worker 510*4dc78e53SAndroid Build Coastguard Worker struct xfrm_user_offload { 511*4dc78e53SAndroid Build Coastguard Worker int ifindex; 512*4dc78e53SAndroid Build Coastguard Worker __u8 flags; 513*4dc78e53SAndroid Build Coastguard Worker }; 514*4dc78e53SAndroid Build Coastguard Worker /* This flag was exposed without any kernel code that supports it. 515*4dc78e53SAndroid Build Coastguard Worker * Unfortunately, strongswan has the code that sets this flag, 516*4dc78e53SAndroid Build Coastguard Worker * which makes it impossible to reuse this bit. 517*4dc78e53SAndroid Build Coastguard Worker * 518*4dc78e53SAndroid Build Coastguard Worker * So leave it here to make sure that it won't be reused by mistake. 519*4dc78e53SAndroid Build Coastguard Worker */ 520*4dc78e53SAndroid Build Coastguard Worker #define XFRM_OFFLOAD_IPV6 1 521*4dc78e53SAndroid Build Coastguard Worker #define XFRM_OFFLOAD_INBOUND 2 522*4dc78e53SAndroid Build Coastguard Worker /* Two bits above are relevant for state path only, while 523*4dc78e53SAndroid Build Coastguard Worker * offload is used for both policy and state flows. 524*4dc78e53SAndroid Build Coastguard Worker * 525*4dc78e53SAndroid Build Coastguard Worker * In policy offload mode, they are free and can be safely reused. 526*4dc78e53SAndroid Build Coastguard Worker */ 527*4dc78e53SAndroid Build Coastguard Worker #define XFRM_OFFLOAD_PACKET 4 528*4dc78e53SAndroid Build Coastguard Worker 529*4dc78e53SAndroid Build Coastguard Worker struct xfrm_userpolicy_default { 530*4dc78e53SAndroid Build Coastguard Worker #define XFRM_USERPOLICY_UNSPEC 0 531*4dc78e53SAndroid Build Coastguard Worker #define XFRM_USERPOLICY_BLOCK 1 532*4dc78e53SAndroid Build Coastguard Worker #define XFRM_USERPOLICY_ACCEPT 2 533*4dc78e53SAndroid Build Coastguard Worker __u8 in; 534*4dc78e53SAndroid Build Coastguard Worker __u8 fwd; 535*4dc78e53SAndroid Build Coastguard Worker __u8 out; 536*4dc78e53SAndroid Build Coastguard Worker }; 537*4dc78e53SAndroid Build Coastguard Worker 538*4dc78e53SAndroid Build Coastguard Worker /* backwards compatibility for userspace */ 539*4dc78e53SAndroid Build Coastguard Worker #define XFRMGRP_ACQUIRE 1 540*4dc78e53SAndroid Build Coastguard Worker #define XFRMGRP_EXPIRE 2 541*4dc78e53SAndroid Build Coastguard Worker #define XFRMGRP_SA 4 542*4dc78e53SAndroid Build Coastguard Worker #define XFRMGRP_POLICY 8 543*4dc78e53SAndroid Build Coastguard Worker #define XFRMGRP_REPORT 0x20 544*4dc78e53SAndroid Build Coastguard Worker 545*4dc78e53SAndroid Build Coastguard Worker enum xfrm_nlgroups { 546*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_NONE, 547*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_NONE XFRMNLGRP_NONE 548*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_ACQUIRE, 549*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE 550*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_EXPIRE, 551*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE 552*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_SA, 553*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_SA XFRMNLGRP_SA 554*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_POLICY, 555*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_POLICY XFRMNLGRP_POLICY 556*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_AEVENTS, 557*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS 558*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_REPORT, 559*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_REPORT XFRMNLGRP_REPORT 560*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_MIGRATE, 561*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE 562*4dc78e53SAndroid Build Coastguard Worker XFRMNLGRP_MAPPING, 563*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING 564*4dc78e53SAndroid Build Coastguard Worker __XFRMNLGRP_MAX 565*4dc78e53SAndroid Build Coastguard Worker }; 566*4dc78e53SAndroid Build Coastguard Worker #define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1) 567*4dc78e53SAndroid Build Coastguard Worker 568*4dc78e53SAndroid Build Coastguard Worker #endif /* _LINUX_XFRM_H */ 569