130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_XFRM_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_XFRM_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* All of the structures in this file may not change size as they are 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * passed into the kernel from userspace via netlink sockets. 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Structure to encapsulate addresses. I do not want to use 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * "standard" structure. My apologies. 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1330692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef union { 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 a4; 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 a6[4]; 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} xfrm_address_t; 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Ident of a specific xfrm_state. It is used on input to lookup 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the state by (spi,daddr,ah/esp) or to store information about 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * spi, protocol and tunnel address on output. 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_id { 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t daddr; 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 spi; 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 proto; 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_sec_ctx { 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ctx_doi; 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ctx_alg; 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 ctx_len; 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ctx_sid; 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char ctx_str[0]; 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Security Context Domains of Interpretation */ 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_SC_DOI_RESERVED 0 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_SC_DOI_LSM 1 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Security Context Algorithms */ 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_SC_ALG_RESERVED 0 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_SC_ALG_SELINUX 1 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Selector, used as selector both on policy rules (SPD) and SAs. */ 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_selector { 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t daddr; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t saddr; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 dport; 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 dport_mask; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 sport; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 sport_mask; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 family; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 prefixlen_d; 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 prefixlen_s; 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 proto; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int ifindex; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __kernel_uid32_t user; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_INF (~(__u64)0) 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_lifetime_cfg { 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 soft_byte_limit; 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 hard_byte_limit; 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 soft_packet_limit; 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 hard_packet_limit; 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 soft_add_expires_seconds; 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 hard_add_expires_seconds; 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 soft_use_expires_seconds; 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 hard_use_expires_seconds; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_lifetime_cur { 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 bytes; 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 packets; 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 add_time; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 use_time; 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_replay_state { 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 oseq; 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 seq; 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 bitmap; 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMA_REPLAY_ESN_MAX 4096 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_replay_state_esn { 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int bmp_len; 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 oseq; 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 seq; 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 oseq_hi; 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 seq_hi; 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 replay_window; 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 bmp[0]; 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_algo { 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char alg_name[64]; 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int alg_key_len; /* in bits */ 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char alg_key[0]; 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_algo_auth { 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char alg_name[64]; 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int alg_key_len; /* in bits */ 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int alg_trunc_len; /* in bits */ 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char alg_key[0]; 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_algo_aead { 11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char alg_name[64]; 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int alg_key_len; /* in bits */ 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int alg_icv_len; /* in bits */ 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char alg_key[0]; 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_stats { 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 replay_window; 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 replay; 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 integrity_failed; 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_TYPE_MAIN = 0, 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_TYPE_SUB = 1, 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_TYPE_MAX = 2, 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_TYPE_ANY = 255 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13230692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_IN = 0, 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_OUT = 1, 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_FWD = 2, 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_MASK = 3, 13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_POLICY_MAX = 3 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14030692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_SHARE_ANY, /* No limitations */ 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_SHARE_SESSION, /* For this session only */ 14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_SHARE_USER, /* For this user only */ 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_SHARE_UNIQUE /* Use once */ 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MODE_TRANSPORT 0 14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MODE_TUNNEL 1 14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MODE_ROUTEOPTIMIZATION 2 15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MODE_IN_TRIGGER 3 15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MODE_BEET 4 15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MODE_MAX 5 15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Netlink configuration messages. */ 15530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_BASE = 0x10, 15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_NEWSA = 0x10, 15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA 16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_DELSA, 16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_DELSA XFRM_MSG_DELSA 16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_GETSA, 16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_GETSA XFRM_MSG_GETSA 16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_NEWPOLICY, 16630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY 16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_DELPOLICY, 16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY 16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_GETPOLICY, 17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY 17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_ALLOCSPI, 17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI 17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_ACQUIRE, 17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE 17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_EXPIRE, 17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE 17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_UPDPOLICY, 18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY 18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_UPDSA, 18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA 18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_POLEXPIRE, 18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE 18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_FLUSHSA, 18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA 18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_FLUSHPOLICY, 19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY 19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_NEWAE, 19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE 19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_GETAE, 19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_GETAE XFRM_MSG_GETAE 19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_REPORT, 19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_REPORT XFRM_MSG_REPORT 19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_MIGRATE, 20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE 20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_NEWSADINFO, 20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO 20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_GETSADINFO, 20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO 20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_NEWSPDINFO, 20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO 21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_GETSPDINFO, 21130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO 21230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_MSG_MAPPING, 21430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING 21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __XFRM_MSG_MAX 21630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1) 21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE) 22030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 22130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Generic LSM security context for comunicating to user space 22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * NOTE: Same format as sadb_x_sec_ctx 22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 22530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_sec_ctx { 22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 len; 22730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 exttype; 22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ctx_alg; /* LSMs: e.g., selinux == 1 */ 22930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ctx_doi; 23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 ctx_len; 23130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_tmpl { 23430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_id id; 23530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 family; 23630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t saddr; 23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reqid; 23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 mode; 23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 share; 24030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 optional; 24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 aalgos; 24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ealgos; 24330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 calgos; 24430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 24630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_encap_tmpl { 24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 encap_type; 24830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 encap_sport; 24930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 encap_dport; 25030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t encap_oa; 25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* AEVENT flags */ 25430692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum xfrm_ae_ftype_t { 25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_UNSPEC, 25630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_RTHR=1, /* replay threshold*/ 25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_RVAL=2, /* replay value */ 25830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_LVAL=4, /* lifetime value */ 25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_ETHR=8, /* expiry timer threshold */ 26030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_CR=16, /* Event cause is replay update */ 26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_CE=32, /* Event cause is timer expiry */ 26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRM_AE_CU=64, /* Event cause is policy update */ 26330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __XFRM_AE_MAX 26430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_AE_MAX (__XFRM_AE_MAX - 1) 26630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 26830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_userpolicy_type { 26930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 type; 27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 reserved1; 27130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 reserved2; 27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 27430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Netlink message attributes. */ 27530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum xfrm_attr_type_t { 27630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_UNSPEC, 27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ALG_AUTH, /* struct xfrm_algo */ 27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ALG_CRYPT, /* struct xfrm_algo */ 27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ALG_COMP, /* struct xfrm_algo */ 28030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ENCAP, /* struct xfrm_algo + struct xfrm_encap_tmpl */ 28130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_TMPL, /* 1 or more struct xfrm_user_tmpl */ 28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SA, /* struct xfrm_usersa_info */ 28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_POLICY, /*struct xfrm_userpolicy_info */ 28430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */ 28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_LTIME_VAL, 28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_REPLAY_VAL, 28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_REPLAY_THRESH, 28830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ETIMER_THRESH, 28930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SRCADDR, /* xfrm_address_t */ 29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_COADDR, /* xfrm_address_t */ 29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_LASTUSED, /* unsigned long */ 29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_POLICY_TYPE, /* struct xfrm_userpolicy_type */ 29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_MIGRATE, 29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ALG_AEAD, /* struct xfrm_algo_aead */ 29530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_KMADDRESS, /* struct xfrm_user_kmaddress */ 29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */ 29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_MARK, /* struct xfrm_mark */ 29830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_TFCPAD, /* __u32 */ 29930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_esn */ 30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SA_EXTRA_FLAGS, /* __u32 */ 30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __XFRMA_MAX 30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMA_MAX (__XFRMA_MAX - 1) 30430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_mark { 30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 v; /* value */ 30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 m; /* mask */ 30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 31030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 31130692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum xfrm_sadattr_type_t { 31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SAD_UNSPEC, 31330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SAD_CNT, 31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SAD_HINFO, 31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __XFRMA_SAD_MAX 31630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1) 31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 32030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrmu_sadhinfo { 32130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadhcnt; /* current hash bkts */ 32230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadhmcnt; /* max allowed hash bkts */ 32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 32530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum xfrm_spdattr_type_t { 32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SPD_UNSPEC, 32730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SPD_INFO, 32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMA_SPD_HINFO, 32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __XFRMA_SPD_MAX 33030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1) 33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrmu_spdinfo { 33530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 incnt; 33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 outcnt; 33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 fwdcnt; 33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 inscnt; 33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 outscnt; 34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 fwdscnt; 34130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrmu_spdhinfo { 34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 spdhcnt; 34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 spdhmcnt; 34630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_usersa_info { 34930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_selector sel; 35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_id id; 35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t saddr; 35230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_lifetime_cfg lft; 35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_lifetime_cur curlft; 35430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_stats stats; 35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 seq; 35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reqid; 35730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 family; 35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 mode; /* XFRM_MODE_xxx */ 35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 replay_window; 36030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 flags; 36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_NOECN 1 36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_DECAP_DSCP 2 36330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_NOPMTUDISC 4 36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_WILDRECV 8 36530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_ICMP 16 36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_AF_UNSPEC 32 36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_ALIGN4 64 36830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_STATE_ESN 128 36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 37130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1 37230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 37330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_usersa_id { 37430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t daddr; 37530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 spi; 37630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 family; 37730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 proto; 37830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 37930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 38030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_aevent_id { 38130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_usersa_id sa_id; 38230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t saddr; 38330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 flags; 38430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reqid; 38530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 38630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 38730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_userspi_info { 38830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_usersa_info info; 38930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 min; 39030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 max; 39130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 39230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 39330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_userpolicy_info { 39430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_selector sel; 39530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_lifetime_cfg lft; 39630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_lifetime_cur curlft; 39730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 priority; 39830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 index; 39930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dir; 40030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 action; 40130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_POLICY_ALLOW 0 40230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_POLICY_BLOCK 1 40330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 flags; 40430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_POLICY_LOCALOK 1 /* Allow user to override global policy */ 40530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Automatically expand selector to include matching ICMP payloads. */ 40630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRM_POLICY_ICMP 2 40730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 share; 40830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 40930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 41030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_userpolicy_id { 41130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_selector sel; 41230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 index; 41330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dir; 41430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 41530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 41630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_acquire { 41730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_id id; 41830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t saddr; 41930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_selector sel; 42030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_userpolicy_info policy; 42130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 aalgos; 42230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ealgos; 42330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 calgos; 42430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 seq; 42530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 42630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 42730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_expire { 42830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_usersa_info state; 42930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 hard; 43030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 43130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 43230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_polexpire { 43330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_userpolicy_info pol; 43430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 hard; 43530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 43630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 43730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_usersa_flush { 43830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 proto; 43930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 44030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 44130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_report { 44230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 proto; 44330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_selector sel; 44430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 44530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 44630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Used by MIGRATE to pass addresses IKE should use to perform 44730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * SA negotiation with the peer */ 44830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_kmaddress { 44930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t local; 45030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t remote; 45130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved; 45230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 family; 45330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 45430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 45530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_migrate { 45630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t old_daddr; 45730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t old_saddr; 45830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t new_daddr; 45930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t new_saddr; 46030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 proto; 46130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 mode; 46230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 reserved; 46330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reqid; 46430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 old_family; 46530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 new_family; 46630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 46730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 46830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xfrm_user_mapping { 46930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xfrm_usersa_id id; 47030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reqid; 47130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t old_saddr; 47230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng xfrm_address_t new_saddr; 47330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 old_sport; 47430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 new_sport; 47530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 47630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 47730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __KERNEL__ 47830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* backwards compatibility for userspace */ 47930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMGRP_ACQUIRE 1 48030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMGRP_EXPIRE 2 48130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMGRP_SA 4 48230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMGRP_POLICY 8 48330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMGRP_REPORT 0x20 48430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 48530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 48630692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum xfrm_nlgroups { 48730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_NONE, 48830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_NONE XFRMNLGRP_NONE 48930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_ACQUIRE, 49030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE 49130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_EXPIRE, 49230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE 49330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_SA, 49430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_SA XFRMNLGRP_SA 49530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_POLICY, 49630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY 49730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_AEVENTS, 49830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS 49930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_REPORT, 50030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT 50130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_MIGRATE, 50230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE 50330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng XFRMNLGRP_MAPPING, 50430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING 50530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __XFRMNLGRP_MAX 50630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 50730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1) 50830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 50930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _LINUX_XFRM_H */ 510