130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* PF_KEY user interface, this is defined by rfc2367 so 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * do not make arbitrary modifications or else this header 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * file will not be compliant. 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_PFKEY2_H 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_PFKEY2_H 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define PF_KEY_V2 2 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define PFKEYV2_REVISION 199806L 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_msg { 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_msg_version; 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_msg_type; 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_msg_errno; 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_msg_satype; 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_msg_len; 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_msg_reserved; 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_msg_seq; 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_msg_pid; 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_msg) == 16 */ 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_ext { 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_ext_len; 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_ext_type; 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_ext) == 4 */ 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_sa { 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_sa_len; 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_sa_exttype; 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 sadb_sa_spi; 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sa_replay; 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sa_state; 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sa_auth; 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sa_encrypt; 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_sa_flags; 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_sa) == 16 */ 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_lifetime { 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_lifetime_len; 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_lifetime_exttype; 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_lifetime_allocations; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_lifetime_bytes; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_lifetime_addtime; 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_lifetime_usetime; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_lifetime) == 32 */ 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_address { 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_address_len; 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_address_exttype; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_address_proto; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_address_prefixlen; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_address_reserved; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_address) == 8 */ 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_key { 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_key_len; 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_key_exttype; 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_key_bits; 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_key_reserved; 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_key) == 8 */ 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_ident { 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_ident_len; 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_ident_exttype; 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_ident_type; 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_ident_reserved; 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_ident_id; 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_ident) == 16 */ 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_sens { 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_sens_len; 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_sens_exttype; 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_sens_dpd; 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sens_sens_level; 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sens_sens_len; 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sens_integ_level; 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_sens_integ_len; 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_sens_reserved; 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_sens) == 16 */ 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* followed by: 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_sens_bitmap[sens_len]; 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_integ_bitmap[integ_len]; */ 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_prop { 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_prop_len; 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_prop_exttype; 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_prop_replay; 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_prop_reserved[3]; 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_prop) == 8 */ 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* followed by: 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct sadb_comb sadb_combs[(sadb_prop_len + 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng sizeof(__u64) - sizeof(struct sadb_prop)) / 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng sizeof(struct sadb_comb)]; */ 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_comb { 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_comb_auth; 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_comb_encrypt; 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_comb_flags; 11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_comb_auth_minbits; 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_comb_auth_maxbits; 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_comb_encrypt_minbits; 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_comb_encrypt_maxbits; 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_comb_reserved; 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_comb_soft_allocations; 11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_comb_hard_allocations; 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_comb_soft_bytes; 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_comb_hard_bytes; 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_comb_soft_addtime; 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_comb_hard_addtime; 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_comb_soft_usetime; 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 sadb_comb_hard_usetime; 12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_comb) == 72 */ 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_supported { 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_supported_len; 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_supported_exttype; 13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_supported_reserved; 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_supported) == 8 */ 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* followed by: 13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct sadb_alg sadb_algs[(sadb_supported_len + 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng sizeof(__u64) - sizeof(struct sadb_supported)) / 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng sizeof(struct sadb_alg)]; */ 14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_alg { 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_alg_id; 14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_alg_ivlen; 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_alg_minbits; 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_alg_maxbits; 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_alg_reserved; 14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_alg) == 8 */ 14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_spirange { 15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_spirange_len; 15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_spirange_exttype; 15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_spirange_min; 15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_spirange_max; 15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_spirange_reserved; 15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_spirange) == 16 */ 15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_kmprivate { 16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_kmprivate_len; 16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_kmprivate_exttype; 16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_kmprivate_reserved; 16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_kmprivate) == 8 */ 16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 16630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_sa2 { 16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_sa2_len; 16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_sa2_exttype; 16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_sa2_mode; 17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_sa2_reserved1; 17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_sa2_reserved2; 17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_sa2_sequence; 17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_sa2_reqid; 17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_sa2) == 16 */ 17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_policy { 17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_policy_len; 17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_policy_exttype; 18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_policy_type; 18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_policy_dir; 18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_policy_reserved; 18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_policy_id; 18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_policy_priority; 18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_policy) == 16 */ 18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_ipsecrequest { 18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_ipsecrequest_len; 19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_ipsecrequest_proto; 19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_ipsecrequest_mode; 19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_ipsecrequest_level; 19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_ipsecrequest_reserved1; 19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_ipsecrequest_reqid; 19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_ipsecrequest_reserved2; 19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_ipsecrequest) == 16 */ 19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* This defines the TYPE of Nat Traversal in use. Currently only one 20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * type of NAT-T is supported, draft-ietf-ipsec-udp-encaps-06 20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 20230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_nat_t_type { 20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_nat_t_type_len; 20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_nat_t_type_exttype; 20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_nat_t_type_type; 20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_nat_t_type_reserved[3]; 20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_nat_t_type) == 8 */ 20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Pass a NAT Traversal port (Source or Dest port) */ 21130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_nat_t_port { 21230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_nat_t_port_len; 21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_nat_t_port_exttype; 21430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be16 sadb_x_nat_t_port_port; 21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_nat_t_port_reserved; 21630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_nat_t_port) == 8 */ 21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Generic LSM security context */ 22030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_sec_ctx { 22130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_sec_len; 22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_sec_exttype; 22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_ctx_alg; /* LSMs: e.g., selinux == 1 */ 22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 sadb_x_ctx_doi; 22530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_ctx_len; 22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 22730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_sec_ctx) = 8 */ 22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 22930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Used by MIGRATE to pass addresses IKE will use to perform 23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * negotiation with the peer */ 23130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct sadb_x_kmaddress { 23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_kmaddress_len; 23330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 sadb_x_kmaddress_exttype; 23430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 sadb_x_kmaddress_reserved; 23530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed)); 23630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* sizeof(struct sadb_x_kmaddress) == 8 */ 23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Message types */ 23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_RESERVED 0 24030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_GETSPI 1 24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_UPDATE 2 24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_ADD 3 24330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_DELETE 4 24430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_GET 5 24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_ACQUIRE 6 24630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_REGISTER 7 24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXPIRE 8 24830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_FLUSH 9 24930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_DUMP 10 25030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_PROMISC 11 25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_PCHANGE 12 25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDUPDATE 13 25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDADD 14 25430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDDELETE 15 25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDGET 16 25630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDACQUIRE 17 25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDDUMP 18 25830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDFLUSH 19 25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDSETIDX 20 26030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDEXPIRE 21 26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SPDDELETE2 22 26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_NAT_T_NEW_MAPPING 23 26330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_MIGRATE 24 26430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_MAX 24 26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 26630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Security Association flags */ 26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SAFLAGS_PFS 1 26830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SAFLAGS_NOPMTUDISC 0x20000000 26930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SAFLAGS_DECAP_DSCP 0x40000000 27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SAFLAGS_NOECN 0x80000000 27130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Security Association states */ 27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SASTATE_LARVAL 0 27430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SASTATE_MATURE 1 27530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SASTATE_DYING 2 27630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SASTATE_DEAD 3 27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SASTATE_MAX 3 27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Security Association types */ 28030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_UNSPEC 0 28130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_AH 2 28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_ESP 3 28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_RSVP 5 28430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_OSPFV2 6 28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_RIPV2 7 28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_MIP 8 28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_SATYPE_IPCOMP 9 28830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_SATYPE_MAX 9 28930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Authentication algorithms */ 29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_AALG_NONE 0 29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_AALG_MD5HMAC 2 29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_AALG_SHA1HMAC 3 29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_AALG_SHA2_256HMAC 5 29530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_AALG_SHA2_384HMAC 6 29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_AALG_SHA2_512HMAC 7 29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_AALG_RIPEMD160HMAC 8 29830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_AALG_AES_XCBC_MAC 9 29930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_AALG_NULL 251 /* kame */ 30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_AALG_MAX 251 30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Encryption algorithms */ 30330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EALG_NONE 0 30430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EALG_DESCBC 2 30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EALG_3DESCBC 3 30630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_CASTCBC 6 30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_BLOWFISHCBC 7 30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EALG_NULL 11 30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AESCBC 12 31030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AESCTR 13 31130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AES_CCM_ICV8 14 31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AES_CCM_ICV12 15 31330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AES_CCM_ICV16 16 31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AES_GCM_ICV8 18 31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AES_GCM_ICV12 19 31630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_AES_GCM_ICV16 20 31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_CAMELLIACBC 22 31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_NULL_AES_GMAC 23 31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EALG_MAX 253 /* last EALG */ 32030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* private allocations should use 249-255 (RFC2407) */ 32130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_SERPENTCBC 252 /* draft-ietf-ipsec-ciph-aes-cbc-00 */ 32230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EALG_TWOFISHCBC 253 /* draft-ietf-ipsec-ciph-aes-cbc-00 */ 32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Compression algorithms */ 32530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_CALG_NONE 0 32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_CALG_OUI 1 32730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_CALG_DEFLATE 2 32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_CALG_LZS 3 32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_CALG_LZJH 4 33030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_CALG_MAX 4 33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Extension Header values */ 33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_RESERVED 0 33430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_SA 1 33530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_LIFETIME_CURRENT 2 33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_LIFETIME_HARD 3 33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_LIFETIME_SOFT 4 33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_ADDRESS_SRC 5 33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_ADDRESS_DST 6 34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_ADDRESS_PROXY 7 34130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_KEY_AUTH 8 34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_KEY_ENCRYPT 9 34330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_IDENTITY_SRC 10 34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_IDENTITY_DST 11 34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_SENSITIVITY 12 34630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_PROPOSAL 13 34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_SUPPORTED_AUTH 14 34830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_SUPPORTED_ENCRYPT 15 34930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_SPIRANGE 16 35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_KMPRIVATE 17 35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_POLICY 18 35230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_SA2 19 35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* The next four entries are for setting up NAT Traversal */ 35430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_NAT_T_TYPE 20 35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_NAT_T_SPORT 21 35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_NAT_T_DPORT 22 35730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_NAT_T_OA 23 35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_SEC_CTX 24 35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Used with MIGRATE to pass @ to IKE for negotiation */ 36030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_X_EXT_KMADDRESS 25 36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_EXT_MAX 25 36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 36330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Identity Extension values */ 36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_IDENTTYPE_RESERVED 0 36530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_IDENTTYPE_PREFIX 1 36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_IDENTTYPE_FQDN 2 36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_IDENTTYPE_USERFQDN 3 36830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SADB_IDENTTYPE_MAX 3 36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* !(_LINUX_PFKEY2_H) */ 371