xref: /aosp_15_r20/external/iproute2/include/uapi/linux/pfkeyv2.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*de1e4e89SAndroid Build Coastguard Worker /* PF_KEY user interface, this is defined by rfc2367 so
3*de1e4e89SAndroid Build Coastguard Worker  * do not make arbitrary modifications or else this header
4*de1e4e89SAndroid Build Coastguard Worker  * file will not be compliant.
5*de1e4e89SAndroid Build Coastguard Worker  */
6*de1e4e89SAndroid Build Coastguard Worker 
7*de1e4e89SAndroid Build Coastguard Worker #ifndef _LINUX_PFKEY2_H
8*de1e4e89SAndroid Build Coastguard Worker #define _LINUX_PFKEY2_H
9*de1e4e89SAndroid Build Coastguard Worker 
10*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h>
11*de1e4e89SAndroid Build Coastguard Worker 
12*de1e4e89SAndroid Build Coastguard Worker #define PF_KEY_V2		2
13*de1e4e89SAndroid Build Coastguard Worker #define PFKEYV2_REVISION	199806L
14*de1e4e89SAndroid Build Coastguard Worker 
15*de1e4e89SAndroid Build Coastguard Worker struct sadb_msg {
16*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_msg_version;
17*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_msg_type;
18*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_msg_errno;
19*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_msg_satype;
20*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_msg_len;
21*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_msg_reserved;
22*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_msg_seq;
23*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_msg_pid;
24*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
25*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_msg) == 16 */
26*de1e4e89SAndroid Build Coastguard Worker 
27*de1e4e89SAndroid Build Coastguard Worker struct sadb_ext {
28*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_ext_len;
29*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_ext_type;
30*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
31*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_ext) == 4 */
32*de1e4e89SAndroid Build Coastguard Worker 
33*de1e4e89SAndroid Build Coastguard Worker struct sadb_sa {
34*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_sa_len;
35*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_sa_exttype;
36*de1e4e89SAndroid Build Coastguard Worker 	__be32		sadb_sa_spi;
37*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sa_replay;
38*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sa_state;
39*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sa_auth;
40*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sa_encrypt;
41*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_sa_flags;
42*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
43*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_sa) == 16 */
44*de1e4e89SAndroid Build Coastguard Worker 
45*de1e4e89SAndroid Build Coastguard Worker struct sadb_lifetime {
46*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_lifetime_len;
47*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_lifetime_exttype;
48*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_lifetime_allocations;
49*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_lifetime_bytes;
50*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_lifetime_addtime;
51*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_lifetime_usetime;
52*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
53*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_lifetime) == 32 */
54*de1e4e89SAndroid Build Coastguard Worker 
55*de1e4e89SAndroid Build Coastguard Worker struct sadb_address {
56*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_address_len;
57*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_address_exttype;
58*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_address_proto;
59*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_address_prefixlen;
60*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_address_reserved;
61*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
62*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_address) == 8 */
63*de1e4e89SAndroid Build Coastguard Worker 
64*de1e4e89SAndroid Build Coastguard Worker struct sadb_key {
65*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_key_len;
66*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_key_exttype;
67*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_key_bits;
68*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_key_reserved;
69*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
70*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_key) == 8 */
71*de1e4e89SAndroid Build Coastguard Worker 
72*de1e4e89SAndroid Build Coastguard Worker struct sadb_ident {
73*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_ident_len;
74*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_ident_exttype;
75*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_ident_type;
76*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_ident_reserved;
77*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_ident_id;
78*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
79*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_ident) == 16 */
80*de1e4e89SAndroid Build Coastguard Worker 
81*de1e4e89SAndroid Build Coastguard Worker struct sadb_sens {
82*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_sens_len;
83*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_sens_exttype;
84*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_sens_dpd;
85*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sens_sens_level;
86*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sens_sens_len;
87*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sens_integ_level;
88*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_sens_integ_len;
89*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_sens_reserved;
90*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
91*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_sens) == 16 */
92*de1e4e89SAndroid Build Coastguard Worker 
93*de1e4e89SAndroid Build Coastguard Worker /* followed by:
94*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_sens_bitmap[sens_len];
95*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_integ_bitmap[integ_len];  */
96*de1e4e89SAndroid Build Coastguard Worker 
97*de1e4e89SAndroid Build Coastguard Worker struct sadb_prop {
98*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_prop_len;
99*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_prop_exttype;
100*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_prop_replay;
101*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_prop_reserved[3];
102*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
103*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_prop) == 8 */
104*de1e4e89SAndroid Build Coastguard Worker 
105*de1e4e89SAndroid Build Coastguard Worker /* followed by:
106*de1e4e89SAndroid Build Coastguard Worker 	struct sadb_comb sadb_combs[(sadb_prop_len +
107*de1e4e89SAndroid Build Coastguard Worker 		sizeof(__u64) - sizeof(struct sadb_prop)) /
108*de1e4e89SAndroid Build Coastguard Worker 		sizeof(struct sadb_comb)]; */
109*de1e4e89SAndroid Build Coastguard Worker 
110*de1e4e89SAndroid Build Coastguard Worker struct sadb_comb {
111*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_comb_auth;
112*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_comb_encrypt;
113*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_comb_flags;
114*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_comb_auth_minbits;
115*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_comb_auth_maxbits;
116*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_comb_encrypt_minbits;
117*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_comb_encrypt_maxbits;
118*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_comb_reserved;
119*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_comb_soft_allocations;
120*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_comb_hard_allocations;
121*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_comb_soft_bytes;
122*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_comb_hard_bytes;
123*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_comb_soft_addtime;
124*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_comb_hard_addtime;
125*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_comb_soft_usetime;
126*de1e4e89SAndroid Build Coastguard Worker 	__u64	sadb_comb_hard_usetime;
127*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
128*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_comb) == 72 */
129*de1e4e89SAndroid Build Coastguard Worker 
130*de1e4e89SAndroid Build Coastguard Worker struct sadb_supported {
131*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_supported_len;
132*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_supported_exttype;
133*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_supported_reserved;
134*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
135*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_supported) == 8 */
136*de1e4e89SAndroid Build Coastguard Worker 
137*de1e4e89SAndroid Build Coastguard Worker /* followed by:
138*de1e4e89SAndroid Build Coastguard Worker 	struct sadb_alg sadb_algs[(sadb_supported_len +
139*de1e4e89SAndroid Build Coastguard Worker 		sizeof(__u64) - sizeof(struct sadb_supported)) /
140*de1e4e89SAndroid Build Coastguard Worker 		sizeof(struct sadb_alg)]; */
141*de1e4e89SAndroid Build Coastguard Worker 
142*de1e4e89SAndroid Build Coastguard Worker struct sadb_alg {
143*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_alg_id;
144*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_alg_ivlen;
145*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_alg_minbits;
146*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_alg_maxbits;
147*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_alg_reserved;
148*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
149*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_alg) == 8 */
150*de1e4e89SAndroid Build Coastguard Worker 
151*de1e4e89SAndroid Build Coastguard Worker struct sadb_spirange {
152*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_spirange_len;
153*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_spirange_exttype;
154*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_spirange_min;
155*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_spirange_max;
156*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_spirange_reserved;
157*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
158*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_spirange) == 16 */
159*de1e4e89SAndroid Build Coastguard Worker 
160*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_kmprivate {
161*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_kmprivate_len;
162*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_kmprivate_exttype;
163*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_kmprivate_reserved;
164*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
165*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_kmprivate) == 8 */
166*de1e4e89SAndroid Build Coastguard Worker 
167*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_sa2 {
168*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_sa2_len;
169*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_sa2_exttype;
170*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_sa2_mode;
171*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_sa2_reserved1;
172*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_sa2_reserved2;
173*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_sa2_sequence;
174*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_sa2_reqid;
175*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
176*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_sa2) == 16 */
177*de1e4e89SAndroid Build Coastguard Worker 
178*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_policy {
179*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_policy_len;
180*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_policy_exttype;
181*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_policy_type;
182*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_policy_dir;
183*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_policy_reserved;
184*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_policy_id;
185*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_policy_priority;
186*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
187*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_policy) == 16 */
188*de1e4e89SAndroid Build Coastguard Worker 
189*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_ipsecrequest {
190*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_ipsecrequest_len;
191*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_ipsecrequest_proto;
192*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_ipsecrequest_mode;
193*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_ipsecrequest_level;
194*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_ipsecrequest_reserved1;
195*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_ipsecrequest_reqid;
196*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_ipsecrequest_reserved2;
197*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
198*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_ipsecrequest) == 16 */
199*de1e4e89SAndroid Build Coastguard Worker 
200*de1e4e89SAndroid Build Coastguard Worker /* This defines the TYPE of Nat Traversal in use.  Currently only one
201*de1e4e89SAndroid Build Coastguard Worker  * type of NAT-T is supported, draft-ietf-ipsec-udp-encaps-06
202*de1e4e89SAndroid Build Coastguard Worker  */
203*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_nat_t_type {
204*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_nat_t_type_len;
205*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_nat_t_type_exttype;
206*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_nat_t_type_type;
207*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_nat_t_type_reserved[3];
208*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
209*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_nat_t_type) == 8 */
210*de1e4e89SAndroid Build Coastguard Worker 
211*de1e4e89SAndroid Build Coastguard Worker /* Pass a NAT Traversal port (Source or Dest port) */
212*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_nat_t_port {
213*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_nat_t_port_len;
214*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_nat_t_port_exttype;
215*de1e4e89SAndroid Build Coastguard Worker 	__be16		sadb_x_nat_t_port_port;
216*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_nat_t_port_reserved;
217*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
218*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_nat_t_port) == 8 */
219*de1e4e89SAndroid Build Coastguard Worker 
220*de1e4e89SAndroid Build Coastguard Worker /* Generic LSM security context */
221*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_sec_ctx {
222*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_sec_len;
223*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_sec_exttype;
224*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_ctx_alg;  /* LSMs: e.g., selinux == 1 */
225*de1e4e89SAndroid Build Coastguard Worker 	__u8		sadb_x_ctx_doi;
226*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_ctx_len;
227*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
228*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_sec_ctx) = 8 */
229*de1e4e89SAndroid Build Coastguard Worker 
230*de1e4e89SAndroid Build Coastguard Worker /* Used by MIGRATE to pass addresses IKE will use to perform
231*de1e4e89SAndroid Build Coastguard Worker  * negotiation with the peer */
232*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_kmaddress {
233*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_kmaddress_len;
234*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_kmaddress_exttype;
235*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_kmaddress_reserved;
236*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
237*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_kmaddress) == 8 */
238*de1e4e89SAndroid Build Coastguard Worker 
239*de1e4e89SAndroid Build Coastguard Worker /* To specify the SA dump filter */
240*de1e4e89SAndroid Build Coastguard Worker struct sadb_x_filter {
241*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_filter_len;
242*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_filter_exttype;
243*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_filter_saddr[4];
244*de1e4e89SAndroid Build Coastguard Worker 	__u32	sadb_x_filter_daddr[4];
245*de1e4e89SAndroid Build Coastguard Worker 	__u16	sadb_x_filter_family;
246*de1e4e89SAndroid Build Coastguard Worker 	__u8	sadb_x_filter_splen;
247*de1e4e89SAndroid Build Coastguard Worker 	__u8	sadb_x_filter_dplen;
248*de1e4e89SAndroid Build Coastguard Worker } __attribute__((packed));
249*de1e4e89SAndroid Build Coastguard Worker /* sizeof(struct sadb_x_filter) == 40 */
250*de1e4e89SAndroid Build Coastguard Worker 
251*de1e4e89SAndroid Build Coastguard Worker /* Message types */
252*de1e4e89SAndroid Build Coastguard Worker #define SADB_RESERVED		0
253*de1e4e89SAndroid Build Coastguard Worker #define SADB_GETSPI		1
254*de1e4e89SAndroid Build Coastguard Worker #define SADB_UPDATE		2
255*de1e4e89SAndroid Build Coastguard Worker #define SADB_ADD		3
256*de1e4e89SAndroid Build Coastguard Worker #define SADB_DELETE		4
257*de1e4e89SAndroid Build Coastguard Worker #define SADB_GET		5
258*de1e4e89SAndroid Build Coastguard Worker #define SADB_ACQUIRE		6
259*de1e4e89SAndroid Build Coastguard Worker #define SADB_REGISTER		7
260*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXPIRE		8
261*de1e4e89SAndroid Build Coastguard Worker #define SADB_FLUSH		9
262*de1e4e89SAndroid Build Coastguard Worker #define SADB_DUMP		10
263*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_PROMISC		11
264*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_PCHANGE		12
265*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDUPDATE	13
266*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDADD		14
267*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDDELETE	15
268*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDGET		16
269*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDACQUIRE	17
270*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDDUMP		18
271*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDFLUSH		19
272*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDSETIDX	20
273*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDEXPIRE	21
274*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SPDDELETE2	22
275*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_NAT_T_NEW_MAPPING	23
276*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_MIGRATE		24
277*de1e4e89SAndroid Build Coastguard Worker #define SADB_MAX		24
278*de1e4e89SAndroid Build Coastguard Worker 
279*de1e4e89SAndroid Build Coastguard Worker /* Security Association flags */
280*de1e4e89SAndroid Build Coastguard Worker #define SADB_SAFLAGS_PFS	1
281*de1e4e89SAndroid Build Coastguard Worker #define SADB_SAFLAGS_NOPMTUDISC	0x20000000
282*de1e4e89SAndroid Build Coastguard Worker #define SADB_SAFLAGS_DECAP_DSCP	0x40000000
283*de1e4e89SAndroid Build Coastguard Worker #define SADB_SAFLAGS_NOECN	0x80000000
284*de1e4e89SAndroid Build Coastguard Worker 
285*de1e4e89SAndroid Build Coastguard Worker /* Security Association states */
286*de1e4e89SAndroid Build Coastguard Worker #define SADB_SASTATE_LARVAL	0
287*de1e4e89SAndroid Build Coastguard Worker #define SADB_SASTATE_MATURE	1
288*de1e4e89SAndroid Build Coastguard Worker #define SADB_SASTATE_DYING	2
289*de1e4e89SAndroid Build Coastguard Worker #define SADB_SASTATE_DEAD	3
290*de1e4e89SAndroid Build Coastguard Worker #define SADB_SASTATE_MAX	3
291*de1e4e89SAndroid Build Coastguard Worker 
292*de1e4e89SAndroid Build Coastguard Worker /* Security Association types */
293*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_UNSPEC	0
294*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_AH		2
295*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_ESP		3
296*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_RSVP	5
297*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_OSPFV2	6
298*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_RIPV2	7
299*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_MIP		8
300*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_SATYPE_IPCOMP	9
301*de1e4e89SAndroid Build Coastguard Worker #define SADB_SATYPE_MAX		9
302*de1e4e89SAndroid Build Coastguard Worker 
303*de1e4e89SAndroid Build Coastguard Worker /* Authentication algorithms */
304*de1e4e89SAndroid Build Coastguard Worker #define SADB_AALG_NONE			0
305*de1e4e89SAndroid Build Coastguard Worker #define SADB_AALG_MD5HMAC		2
306*de1e4e89SAndroid Build Coastguard Worker #define SADB_AALG_SHA1HMAC		3
307*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_AALG_SHA2_256HMAC	5
308*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_AALG_SHA2_384HMAC	6
309*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_AALG_SHA2_512HMAC	7
310*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_AALG_RIPEMD160HMAC	8
311*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_AALG_AES_XCBC_MAC	9
312*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_AALG_NULL		251	/* kame */
313*de1e4e89SAndroid Build Coastguard Worker #define SADB_AALG_MAX			251
314*de1e4e89SAndroid Build Coastguard Worker 
315*de1e4e89SAndroid Build Coastguard Worker /* Encryption algorithms */
316*de1e4e89SAndroid Build Coastguard Worker #define SADB_EALG_NONE			0
317*de1e4e89SAndroid Build Coastguard Worker #define SADB_EALG_DESCBC		2
318*de1e4e89SAndroid Build Coastguard Worker #define SADB_EALG_3DESCBC		3
319*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_CASTCBC		6
320*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_BLOWFISHCBC		7
321*de1e4e89SAndroid Build Coastguard Worker #define SADB_EALG_NULL			11
322*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AESCBC		12
323*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AESCTR		13
324*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AES_CCM_ICV8	14
325*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AES_CCM_ICV12	15
326*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AES_CCM_ICV16	16
327*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AES_GCM_ICV8	18
328*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AES_GCM_ICV12	19
329*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_AES_GCM_ICV16	20
330*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_CAMELLIACBC		22
331*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_NULL_AES_GMAC	23
332*de1e4e89SAndroid Build Coastguard Worker #define SADB_EALG_MAX                   253 /* last EALG */
333*de1e4e89SAndroid Build Coastguard Worker /* private allocations should use 249-255 (RFC2407) */
334*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_SERPENTCBC  252     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
335*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EALG_TWOFISHCBC  253     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
336*de1e4e89SAndroid Build Coastguard Worker 
337*de1e4e89SAndroid Build Coastguard Worker /* Compression algorithms */
338*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_CALG_NONE		0
339*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_CALG_OUI			1
340*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_CALG_DEFLATE		2
341*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_CALG_LZS			3
342*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_CALG_LZJH		4
343*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_CALG_MAX			4
344*de1e4e89SAndroid Build Coastguard Worker 
345*de1e4e89SAndroid Build Coastguard Worker /* Extension Header values */
346*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_RESERVED		0
347*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_SA			1
348*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_LIFETIME_CURRENT	2
349*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_LIFETIME_HARD		3
350*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_LIFETIME_SOFT		4
351*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_ADDRESS_SRC		5
352*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_ADDRESS_DST		6
353*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_ADDRESS_PROXY		7
354*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_KEY_AUTH		8
355*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_KEY_ENCRYPT		9
356*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_IDENTITY_SRC		10
357*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_IDENTITY_DST		11
358*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_SENSITIVITY		12
359*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_PROPOSAL		13
360*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_SUPPORTED_AUTH		14
361*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_SUPPORTED_ENCRYPT	15
362*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_SPIRANGE		16
363*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_KMPRIVATE		17
364*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_POLICY		18
365*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_SA2			19
366*de1e4e89SAndroid Build Coastguard Worker /* The next four entries are for setting up NAT Traversal */
367*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_NAT_T_TYPE		20
368*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_NAT_T_SPORT		21
369*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_NAT_T_DPORT		22
370*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_NAT_T_OA		23
371*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_SEC_CTX		24
372*de1e4e89SAndroid Build Coastguard Worker /* Used with MIGRATE to pass @ to IKE for negotiation */
373*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_KMADDRESS		25
374*de1e4e89SAndroid Build Coastguard Worker #define SADB_X_EXT_FILTER		26
375*de1e4e89SAndroid Build Coastguard Worker #define SADB_EXT_MAX			26
376*de1e4e89SAndroid Build Coastguard Worker 
377*de1e4e89SAndroid Build Coastguard Worker /* Identity Extension values */
378*de1e4e89SAndroid Build Coastguard Worker #define SADB_IDENTTYPE_RESERVED	0
379*de1e4e89SAndroid Build Coastguard Worker #define SADB_IDENTTYPE_PREFIX	1
380*de1e4e89SAndroid Build Coastguard Worker #define SADB_IDENTTYPE_FQDN	2
381*de1e4e89SAndroid Build Coastguard Worker #define SADB_IDENTTYPE_USERFQDN	3
382*de1e4e89SAndroid Build Coastguard Worker #define SADB_IDENTTYPE_MAX	3
383*de1e4e89SAndroid Build Coastguard Worker 
384*de1e4e89SAndroid Build Coastguard Worker #endif /* !(_LINUX_PFKEY2_H) */
385