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