xref: /aosp_15_r20/external/libnl/lib/xfrm/nl-xfrm.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker  * Copyright (c) 2003-2013 Thomas Graf <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker  * Copyright (c) 2013 Sassano Systems LLC <[email protected]>
5*4dc78e53SAndroid Build Coastguard Worker  */
6*4dc78e53SAndroid Build Coastguard Worker 
7*4dc78e53SAndroid Build Coastguard Worker #ifndef __LIB_XFRM_NL_XFRM_H__
8*4dc78e53SAndroid Build Coastguard Worker #define __LIB_XFRM_NL_XFRM_H__
9*4dc78e53SAndroid Build Coastguard Worker 
10*4dc78e53SAndroid Build Coastguard Worker /* Lifetime configuration, used for both policy rules (SPD) and SAs. */
11*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_ltime_cfg {
12*4dc78e53SAndroid Build Coastguard Worker 	uint32_t refcnt;
13*4dc78e53SAndroid Build Coastguard Worker 	uint64_t soft_byte_limit;
14*4dc78e53SAndroid Build Coastguard Worker 	uint64_t hard_byte_limit;
15*4dc78e53SAndroid Build Coastguard Worker 	uint64_t soft_packet_limit;
16*4dc78e53SAndroid Build Coastguard Worker 	uint64_t hard_packet_limit;
17*4dc78e53SAndroid Build Coastguard Worker 	uint64_t soft_add_expires_seconds;
18*4dc78e53SAndroid Build Coastguard Worker 	uint64_t hard_add_expires_seconds;
19*4dc78e53SAndroid Build Coastguard Worker 	uint64_t soft_use_expires_seconds;
20*4dc78e53SAndroid Build Coastguard Worker 	uint64_t hard_use_expires_seconds;
21*4dc78e53SAndroid Build Coastguard Worker };
22*4dc78e53SAndroid Build Coastguard Worker 
23*4dc78e53SAndroid Build Coastguard Worker /* Current lifetime, used for both policy rules (SPD) and SAs. */
24*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_lifetime_cur {
25*4dc78e53SAndroid Build Coastguard Worker 	uint64_t bytes;
26*4dc78e53SAndroid Build Coastguard Worker 	uint64_t packets;
27*4dc78e53SAndroid Build Coastguard Worker 	uint64_t add_time;
28*4dc78e53SAndroid Build Coastguard Worker 	uint64_t use_time;
29*4dc78e53SAndroid Build Coastguard Worker };
30*4dc78e53SAndroid Build Coastguard Worker 
31*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_replay_state {
32*4dc78e53SAndroid Build Coastguard Worker 	uint32_t oseq;
33*4dc78e53SAndroid Build Coastguard Worker 	uint32_t seq;
34*4dc78e53SAndroid Build Coastguard Worker 	uint32_t bitmap;
35*4dc78e53SAndroid Build Coastguard Worker };
36*4dc78e53SAndroid Build Coastguard Worker 
37*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_replay_state_esn {
38*4dc78e53SAndroid Build Coastguard Worker 	uint32_t bmp_len;
39*4dc78e53SAndroid Build Coastguard Worker 	uint32_t oseq;
40*4dc78e53SAndroid Build Coastguard Worker 	uint32_t seq;
41*4dc78e53SAndroid Build Coastguard Worker 	uint32_t oseq_hi;
42*4dc78e53SAndroid Build Coastguard Worker 	uint32_t seq_hi;
43*4dc78e53SAndroid Build Coastguard Worker 	uint32_t replay_window;
44*4dc78e53SAndroid Build Coastguard Worker 	uint32_t bmp[0];
45*4dc78e53SAndroid Build Coastguard Worker };
46*4dc78e53SAndroid Build Coastguard Worker 
47*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_mark {
48*4dc78e53SAndroid Build Coastguard Worker 	uint32_t v; /* value */
49*4dc78e53SAndroid Build Coastguard Worker 	uint32_t m; /* mask */
50*4dc78e53SAndroid Build Coastguard Worker };
51*4dc78e53SAndroid Build Coastguard Worker 
52*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_id {
53*4dc78e53SAndroid Build Coastguard Worker 	struct nl_addr *daddr;
54*4dc78e53SAndroid Build Coastguard Worker 	uint32_t spi;
55*4dc78e53SAndroid Build Coastguard Worker 	uint8_t proto;
56*4dc78e53SAndroid Build Coastguard Worker };
57*4dc78e53SAndroid Build Coastguard Worker 
58*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_user_sec_ctx {
59*4dc78e53SAndroid Build Coastguard Worker 	uint16_t len;
60*4dc78e53SAndroid Build Coastguard Worker 	uint16_t exttype;
61*4dc78e53SAndroid Build Coastguard Worker 	uint8_t ctx_alg;
62*4dc78e53SAndroid Build Coastguard Worker 	uint8_t ctx_doi;
63*4dc78e53SAndroid Build Coastguard Worker 	uint16_t ctx_len;
64*4dc78e53SAndroid Build Coastguard Worker 	char ctx[0];
65*4dc78e53SAndroid Build Coastguard Worker };
66*4dc78e53SAndroid Build Coastguard Worker 
67*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_user_tmpl {
68*4dc78e53SAndroid Build Coastguard Worker 	struct xfrmnl_id id;
69*4dc78e53SAndroid Build Coastguard Worker 	uint16_t family;
70*4dc78e53SAndroid Build Coastguard Worker 	struct nl_addr *saddr;
71*4dc78e53SAndroid Build Coastguard Worker 	uint32_t reqid;
72*4dc78e53SAndroid Build Coastguard Worker 	uint8_t mode;
73*4dc78e53SAndroid Build Coastguard Worker 	uint8_t share;
74*4dc78e53SAndroid Build Coastguard Worker 	uint8_t optional;
75*4dc78e53SAndroid Build Coastguard Worker 	uint32_t aalgos;
76*4dc78e53SAndroid Build Coastguard Worker 	uint32_t ealgos;
77*4dc78e53SAndroid Build Coastguard Worker 	uint32_t calgos;
78*4dc78e53SAndroid Build Coastguard Worker 	struct nl_list_head utmpl_list;
79*4dc78e53SAndroid Build Coastguard Worker };
80*4dc78e53SAndroid Build Coastguard Worker 
81*4dc78e53SAndroid Build Coastguard Worker #endif /* __LIB_XFRM_NL_XFRM_H__  */
82