1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
4*4dc78e53SAndroid Build Coastguard Worker *
5*4dc78e53SAndroid Build Coastguard Worker *
6*4dc78e53SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without
7*4dc78e53SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions
8*4dc78e53SAndroid Build Coastguard Worker * are met:
9*4dc78e53SAndroid Build Coastguard Worker *
10*4dc78e53SAndroid Build Coastguard Worker * Redistributions of source code must retain the above copyright
11*4dc78e53SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer.
12*4dc78e53SAndroid Build Coastguard Worker *
13*4dc78e53SAndroid Build Coastguard Worker * Redistributions in binary form must reproduce the above copyright
14*4dc78e53SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the
15*4dc78e53SAndroid Build Coastguard Worker * documentation and/or other materials provided with the
16*4dc78e53SAndroid Build Coastguard Worker * distribution.
17*4dc78e53SAndroid Build Coastguard Worker *
18*4dc78e53SAndroid Build Coastguard Worker * Neither the name of Texas Instruments Incorporated nor the names of
19*4dc78e53SAndroid Build Coastguard Worker * its contributors may be used to endorse or promote products derived
20*4dc78e53SAndroid Build Coastguard Worker * from this software without specific prior written permission.
21*4dc78e53SAndroid Build Coastguard Worker *
22*4dc78e53SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23*4dc78e53SAndroid Build Coastguard Worker * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24*4dc78e53SAndroid Build Coastguard Worker * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25*4dc78e53SAndroid Build Coastguard Worker * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26*4dc78e53SAndroid Build Coastguard Worker * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27*4dc78e53SAndroid Build Coastguard Worker * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28*4dc78e53SAndroid Build Coastguard Worker * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29*4dc78e53SAndroid Build Coastguard Worker * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30*4dc78e53SAndroid Build Coastguard Worker * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31*4dc78e53SAndroid Build Coastguard Worker * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32*4dc78e53SAndroid Build Coastguard Worker * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33*4dc78e53SAndroid Build Coastguard Worker *
34*4dc78e53SAndroid Build Coastguard Worker */
35*4dc78e53SAndroid Build Coastguard Worker /**
36*4dc78e53SAndroid Build Coastguard Worker * @ingroup xfrmnl
37*4dc78e53SAndroid Build Coastguard Worker * @defgroup XFRM Lifetime Configuration Object
38*4dc78e53SAndroid Build Coastguard Worker *
39*4dc78e53SAndroid Build Coastguard Worker * Abstract data type representing XFRM SA lifetime properties
40*4dc78e53SAndroid Build Coastguard Worker *
41*4dc78e53SAndroid Build Coastguard Worker * @{
42*4dc78e53SAndroid Build Coastguard Worker *
43*4dc78e53SAndroid Build Coastguard Worker * Header
44*4dc78e53SAndroid Build Coastguard Worker * ------
45*4dc78e53SAndroid Build Coastguard Worker * ~~~~{.c}
46*4dc78e53SAndroid Build Coastguard Worker * #include <netlink/xfrm/lifetime.h>
47*4dc78e53SAndroid Build Coastguard Worker * ~~~~
48*4dc78e53SAndroid Build Coastguard Worker */
49*4dc78e53SAndroid Build Coastguard Worker
50*4dc78e53SAndroid Build Coastguard Worker #include "nl-default.h"
51*4dc78e53SAndroid Build Coastguard Worker
52*4dc78e53SAndroid Build Coastguard Worker #include <netlink/xfrm/lifetime.h>
53*4dc78e53SAndroid Build Coastguard Worker
54*4dc78e53SAndroid Build Coastguard Worker #include "nl-xfrm.h"
55*4dc78e53SAndroid Build Coastguard Worker
ltime_cfg_destroy(struct xfrmnl_ltime_cfg * ltime)56*4dc78e53SAndroid Build Coastguard Worker static void ltime_cfg_destroy(struct xfrmnl_ltime_cfg* ltime)
57*4dc78e53SAndroid Build Coastguard Worker {
58*4dc78e53SAndroid Build Coastguard Worker if (!ltime)
59*4dc78e53SAndroid Build Coastguard Worker return;
60*4dc78e53SAndroid Build Coastguard Worker
61*4dc78e53SAndroid Build Coastguard Worker if (ltime->refcnt != 1)
62*4dc78e53SAndroid Build Coastguard Worker {
63*4dc78e53SAndroid Build Coastguard Worker fprintf(stderr, "BUG: %s:%d\n", __FILE__, __LINE__);
64*4dc78e53SAndroid Build Coastguard Worker assert(0);
65*4dc78e53SAndroid Build Coastguard Worker }
66*4dc78e53SAndroid Build Coastguard Worker
67*4dc78e53SAndroid Build Coastguard Worker free(ltime);
68*4dc78e53SAndroid Build Coastguard Worker }
69*4dc78e53SAndroid Build Coastguard Worker
70*4dc78e53SAndroid Build Coastguard Worker /**
71*4dc78e53SAndroid Build Coastguard Worker * @name Creating Selector
72*4dc78e53SAndroid Build Coastguard Worker * @{
73*4dc78e53SAndroid Build Coastguard Worker */
74*4dc78e53SAndroid Build Coastguard Worker
75*4dc78e53SAndroid Build Coastguard Worker /**
76*4dc78e53SAndroid Build Coastguard Worker * Allocate new lifetime config object.
77*4dc78e53SAndroid Build Coastguard Worker * @return Newly allocated lifetime config object or NULL
78*4dc78e53SAndroid Build Coastguard Worker */
xfrmnl_ltime_cfg_alloc()79*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_ltime_cfg* xfrmnl_ltime_cfg_alloc()
80*4dc78e53SAndroid Build Coastguard Worker {
81*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_ltime_cfg* ltime;
82*4dc78e53SAndroid Build Coastguard Worker
83*4dc78e53SAndroid Build Coastguard Worker ltime = calloc(1, sizeof(struct xfrmnl_ltime_cfg));
84*4dc78e53SAndroid Build Coastguard Worker if (!ltime)
85*4dc78e53SAndroid Build Coastguard Worker return NULL;
86*4dc78e53SAndroid Build Coastguard Worker
87*4dc78e53SAndroid Build Coastguard Worker ltime->refcnt = 1;
88*4dc78e53SAndroid Build Coastguard Worker
89*4dc78e53SAndroid Build Coastguard Worker return ltime;
90*4dc78e53SAndroid Build Coastguard Worker }
91*4dc78e53SAndroid Build Coastguard Worker
92*4dc78e53SAndroid Build Coastguard Worker /**
93*4dc78e53SAndroid Build Coastguard Worker * Clone existing lifetime config object.
94*4dc78e53SAndroid Build Coastguard Worker * @arg ltime Selector object.
95*4dc78e53SAndroid Build Coastguard Worker * @return Newly allocated lifetime config object being a duplicate of the
96*4dc78e53SAndroid Build Coastguard Worker * specified lifetime config object or NULL if a failure occured.
97*4dc78e53SAndroid Build Coastguard Worker */
xfrmnl_ltime_cfg_clone(struct xfrmnl_ltime_cfg * ltime)98*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_ltime_cfg* xfrmnl_ltime_cfg_clone(struct xfrmnl_ltime_cfg* ltime)
99*4dc78e53SAndroid Build Coastguard Worker {
100*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_ltime_cfg* new;
101*4dc78e53SAndroid Build Coastguard Worker
102*4dc78e53SAndroid Build Coastguard Worker new = xfrmnl_ltime_cfg_alloc();
103*4dc78e53SAndroid Build Coastguard Worker if (new)
104*4dc78e53SAndroid Build Coastguard Worker memcpy ((void*)new, (void*)ltime, sizeof (struct xfrmnl_ltime_cfg));
105*4dc78e53SAndroid Build Coastguard Worker
106*4dc78e53SAndroid Build Coastguard Worker return new;
107*4dc78e53SAndroid Build Coastguard Worker }
108*4dc78e53SAndroid Build Coastguard Worker
109*4dc78e53SAndroid Build Coastguard Worker /** @} */
110*4dc78e53SAndroid Build Coastguard Worker
111*4dc78e53SAndroid Build Coastguard Worker /**
112*4dc78e53SAndroid Build Coastguard Worker * @name Managing Usage References
113*4dc78e53SAndroid Build Coastguard Worker * @{
114*4dc78e53SAndroid Build Coastguard Worker */
115*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get(struct xfrmnl_ltime_cfg * ltime)116*4dc78e53SAndroid Build Coastguard Worker struct xfrmnl_ltime_cfg* xfrmnl_ltime_cfg_get(struct xfrmnl_ltime_cfg* ltime)
117*4dc78e53SAndroid Build Coastguard Worker {
118*4dc78e53SAndroid Build Coastguard Worker ltime->refcnt++;
119*4dc78e53SAndroid Build Coastguard Worker
120*4dc78e53SAndroid Build Coastguard Worker return ltime;
121*4dc78e53SAndroid Build Coastguard Worker }
122*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_put(struct xfrmnl_ltime_cfg * ltime)123*4dc78e53SAndroid Build Coastguard Worker void xfrmnl_ltime_cfg_put(struct xfrmnl_ltime_cfg* ltime)
124*4dc78e53SAndroid Build Coastguard Worker {
125*4dc78e53SAndroid Build Coastguard Worker if (!ltime)
126*4dc78e53SAndroid Build Coastguard Worker return;
127*4dc78e53SAndroid Build Coastguard Worker
128*4dc78e53SAndroid Build Coastguard Worker if (ltime->refcnt == 1)
129*4dc78e53SAndroid Build Coastguard Worker ltime_cfg_destroy(ltime);
130*4dc78e53SAndroid Build Coastguard Worker else
131*4dc78e53SAndroid Build Coastguard Worker ltime->refcnt--;
132*4dc78e53SAndroid Build Coastguard Worker }
133*4dc78e53SAndroid Build Coastguard Worker
134*4dc78e53SAndroid Build Coastguard Worker /**
135*4dc78e53SAndroid Build Coastguard Worker * Check whether an lifetime config object is shared.
136*4dc78e53SAndroid Build Coastguard Worker * @arg addr Selector object.
137*4dc78e53SAndroid Build Coastguard Worker * @return Non-zero if the lifetime config object is shared, otherwise 0.
138*4dc78e53SAndroid Build Coastguard Worker */
xfrmnl_ltime_cfg_shared(struct xfrmnl_ltime_cfg * ltime)139*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_shared(struct xfrmnl_ltime_cfg* ltime)
140*4dc78e53SAndroid Build Coastguard Worker {
141*4dc78e53SAndroid Build Coastguard Worker return ltime->refcnt > 1;
142*4dc78e53SAndroid Build Coastguard Worker }
143*4dc78e53SAndroid Build Coastguard Worker
144*4dc78e53SAndroid Build Coastguard Worker /** @} */
145*4dc78e53SAndroid Build Coastguard Worker
146*4dc78e53SAndroid Build Coastguard Worker /**
147*4dc78e53SAndroid Build Coastguard Worker * @name Miscellaneous
148*4dc78e53SAndroid Build Coastguard Worker * @{
149*4dc78e53SAndroid Build Coastguard Worker */
150*4dc78e53SAndroid Build Coastguard Worker
151*4dc78e53SAndroid Build Coastguard Worker /**
152*4dc78e53SAndroid Build Coastguard Worker * Compares two lifetime config objects.
153*4dc78e53SAndroid Build Coastguard Worker * @arg a A lifetime config object.
154*4dc78e53SAndroid Build Coastguard Worker * @arg b Another lifetime config object.
155*4dc78e53SAndroid Build Coastguard Worker *
156*4dc78e53SAndroid Build Coastguard Worker * @return Non zero if difference is found, 0 otherwise if both
157*4dc78e53SAndroid Build Coastguard Worker * the objects are identical.
158*4dc78e53SAndroid Build Coastguard Worker */
xfrmnl_ltime_cfg_cmp(struct xfrmnl_ltime_cfg * a,struct xfrmnl_ltime_cfg * b)159*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_cmp(struct xfrmnl_ltime_cfg* a, struct xfrmnl_ltime_cfg* b)
160*4dc78e53SAndroid Build Coastguard Worker {
161*4dc78e53SAndroid Build Coastguard Worker /* Check for any differences */
162*4dc78e53SAndroid Build Coastguard Worker if ((a->soft_byte_limit != b->soft_byte_limit) ||
163*4dc78e53SAndroid Build Coastguard Worker (a->soft_packet_limit != b->soft_packet_limit) ||
164*4dc78e53SAndroid Build Coastguard Worker (a->hard_byte_limit != b->hard_byte_limit) ||
165*4dc78e53SAndroid Build Coastguard Worker (a->hard_packet_limit != b->hard_packet_limit) ||
166*4dc78e53SAndroid Build Coastguard Worker (a->soft_add_expires_seconds != b->soft_add_expires_seconds) ||
167*4dc78e53SAndroid Build Coastguard Worker (a->hard_add_expires_seconds != b->hard_add_expires_seconds) ||
168*4dc78e53SAndroid Build Coastguard Worker (a->soft_use_expires_seconds != b->soft_use_expires_seconds) ||
169*4dc78e53SAndroid Build Coastguard Worker (a->hard_use_expires_seconds != b->hard_use_expires_seconds))
170*4dc78e53SAndroid Build Coastguard Worker return 1;
171*4dc78e53SAndroid Build Coastguard Worker
172*4dc78e53SAndroid Build Coastguard Worker /* The objects are identical */
173*4dc78e53SAndroid Build Coastguard Worker return 0;
174*4dc78e53SAndroid Build Coastguard Worker }
175*4dc78e53SAndroid Build Coastguard Worker
176*4dc78e53SAndroid Build Coastguard Worker /** @} */
177*4dc78e53SAndroid Build Coastguard Worker
178*4dc78e53SAndroid Build Coastguard Worker /**
179*4dc78e53SAndroid Build Coastguard Worker * @name Attributes
180*4dc78e53SAndroid Build Coastguard Worker * @{
181*4dc78e53SAndroid Build Coastguard Worker */
xfrmnl_ltime_cfg_get_soft_bytelimit(struct xfrmnl_ltime_cfg * ltime)182*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_soft_bytelimit (struct xfrmnl_ltime_cfg* ltime)
183*4dc78e53SAndroid Build Coastguard Worker {
184*4dc78e53SAndroid Build Coastguard Worker return ltime->soft_byte_limit;
185*4dc78e53SAndroid Build Coastguard Worker }
186*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_soft_bytelimit(struct xfrmnl_ltime_cfg * ltime,unsigned long long soft_byte_limit)187*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_soft_bytelimit (struct xfrmnl_ltime_cfg* ltime, unsigned long long soft_byte_limit)
188*4dc78e53SAndroid Build Coastguard Worker {
189*4dc78e53SAndroid Build Coastguard Worker ltime->soft_byte_limit = soft_byte_limit;
190*4dc78e53SAndroid Build Coastguard Worker
191*4dc78e53SAndroid Build Coastguard Worker return 0;
192*4dc78e53SAndroid Build Coastguard Worker }
193*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_hard_bytelimit(struct xfrmnl_ltime_cfg * ltime)194*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_hard_bytelimit (struct xfrmnl_ltime_cfg* ltime)
195*4dc78e53SAndroid Build Coastguard Worker {
196*4dc78e53SAndroid Build Coastguard Worker return ltime->hard_byte_limit;
197*4dc78e53SAndroid Build Coastguard Worker }
198*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_hard_bytelimit(struct xfrmnl_ltime_cfg * ltime,unsigned long long hard_byte_limit)199*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_hard_bytelimit (struct xfrmnl_ltime_cfg* ltime, unsigned long long hard_byte_limit)
200*4dc78e53SAndroid Build Coastguard Worker {
201*4dc78e53SAndroid Build Coastguard Worker ltime->hard_byte_limit = hard_byte_limit;
202*4dc78e53SAndroid Build Coastguard Worker
203*4dc78e53SAndroid Build Coastguard Worker return 0;
204*4dc78e53SAndroid Build Coastguard Worker }
205*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_soft_packetlimit(struct xfrmnl_ltime_cfg * ltime)206*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_soft_packetlimit (struct xfrmnl_ltime_cfg* ltime)
207*4dc78e53SAndroid Build Coastguard Worker {
208*4dc78e53SAndroid Build Coastguard Worker return ltime->soft_packet_limit;
209*4dc78e53SAndroid Build Coastguard Worker }
210*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_soft_packetlimit(struct xfrmnl_ltime_cfg * ltime,unsigned long long soft_packet_limit)211*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_soft_packetlimit (struct xfrmnl_ltime_cfg* ltime, unsigned long long soft_packet_limit)
212*4dc78e53SAndroid Build Coastguard Worker {
213*4dc78e53SAndroid Build Coastguard Worker ltime->soft_packet_limit = soft_packet_limit;
214*4dc78e53SAndroid Build Coastguard Worker
215*4dc78e53SAndroid Build Coastguard Worker return 0;
216*4dc78e53SAndroid Build Coastguard Worker }
217*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_hard_packetlimit(struct xfrmnl_ltime_cfg * ltime)218*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_hard_packetlimit (struct xfrmnl_ltime_cfg* ltime)
219*4dc78e53SAndroid Build Coastguard Worker {
220*4dc78e53SAndroid Build Coastguard Worker return ltime->hard_packet_limit;
221*4dc78e53SAndroid Build Coastguard Worker }
222*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_hard_packetlimit(struct xfrmnl_ltime_cfg * ltime,unsigned long long hard_packet_limit)223*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_hard_packetlimit (struct xfrmnl_ltime_cfg* ltime, unsigned long long hard_packet_limit)
224*4dc78e53SAndroid Build Coastguard Worker {
225*4dc78e53SAndroid Build Coastguard Worker ltime->hard_packet_limit = hard_packet_limit;
226*4dc78e53SAndroid Build Coastguard Worker
227*4dc78e53SAndroid Build Coastguard Worker return 0;
228*4dc78e53SAndroid Build Coastguard Worker }
229*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_soft_addexpires(struct xfrmnl_ltime_cfg * ltime)230*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_soft_addexpires (struct xfrmnl_ltime_cfg* ltime)
231*4dc78e53SAndroid Build Coastguard Worker {
232*4dc78e53SAndroid Build Coastguard Worker return ltime->soft_add_expires_seconds;
233*4dc78e53SAndroid Build Coastguard Worker }
234*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_soft_addexpires(struct xfrmnl_ltime_cfg * ltime,unsigned long long soft_add_expires_seconds)235*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_soft_addexpires (struct xfrmnl_ltime_cfg* ltime, unsigned long long soft_add_expires_seconds)
236*4dc78e53SAndroid Build Coastguard Worker {
237*4dc78e53SAndroid Build Coastguard Worker ltime->soft_add_expires_seconds = soft_add_expires_seconds;
238*4dc78e53SAndroid Build Coastguard Worker
239*4dc78e53SAndroid Build Coastguard Worker return 0;
240*4dc78e53SAndroid Build Coastguard Worker }
241*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_hard_addexpires(struct xfrmnl_ltime_cfg * ltime)242*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_hard_addexpires (struct xfrmnl_ltime_cfg* ltime)
243*4dc78e53SAndroid Build Coastguard Worker {
244*4dc78e53SAndroid Build Coastguard Worker return ltime->hard_add_expires_seconds;
245*4dc78e53SAndroid Build Coastguard Worker }
246*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_hard_addexpires(struct xfrmnl_ltime_cfg * ltime,unsigned long long hard_add_expires_seconds)247*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_hard_addexpires (struct xfrmnl_ltime_cfg* ltime, unsigned long long hard_add_expires_seconds)
248*4dc78e53SAndroid Build Coastguard Worker {
249*4dc78e53SAndroid Build Coastguard Worker ltime->hard_add_expires_seconds = hard_add_expires_seconds;
250*4dc78e53SAndroid Build Coastguard Worker
251*4dc78e53SAndroid Build Coastguard Worker return 0;
252*4dc78e53SAndroid Build Coastguard Worker }
253*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_soft_useexpires(struct xfrmnl_ltime_cfg * ltime)254*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_soft_useexpires (struct xfrmnl_ltime_cfg* ltime)
255*4dc78e53SAndroid Build Coastguard Worker {
256*4dc78e53SAndroid Build Coastguard Worker return ltime->soft_use_expires_seconds;
257*4dc78e53SAndroid Build Coastguard Worker }
258*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_soft_useexpires(struct xfrmnl_ltime_cfg * ltime,unsigned long long soft_use_expires_seconds)259*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_soft_useexpires (struct xfrmnl_ltime_cfg* ltime, unsigned long long soft_use_expires_seconds)
260*4dc78e53SAndroid Build Coastguard Worker {
261*4dc78e53SAndroid Build Coastguard Worker ltime->soft_use_expires_seconds = soft_use_expires_seconds;
262*4dc78e53SAndroid Build Coastguard Worker
263*4dc78e53SAndroid Build Coastguard Worker return 0;
264*4dc78e53SAndroid Build Coastguard Worker }
265*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_get_hard_useexpires(struct xfrmnl_ltime_cfg * ltime)266*4dc78e53SAndroid Build Coastguard Worker unsigned long long xfrmnl_ltime_cfg_get_hard_useexpires (struct xfrmnl_ltime_cfg* ltime)
267*4dc78e53SAndroid Build Coastguard Worker {
268*4dc78e53SAndroid Build Coastguard Worker return ltime->hard_use_expires_seconds;
269*4dc78e53SAndroid Build Coastguard Worker }
270*4dc78e53SAndroid Build Coastguard Worker
xfrmnl_ltime_cfg_set_hard_useexpires(struct xfrmnl_ltime_cfg * ltime,unsigned long long hard_use_expires_seconds)271*4dc78e53SAndroid Build Coastguard Worker int xfrmnl_ltime_cfg_set_hard_useexpires (struct xfrmnl_ltime_cfg* ltime, unsigned long long hard_use_expires_seconds)
272*4dc78e53SAndroid Build Coastguard Worker {
273*4dc78e53SAndroid Build Coastguard Worker ltime->hard_use_expires_seconds = hard_use_expires_seconds;
274*4dc78e53SAndroid Build Coastguard Worker
275*4dc78e53SAndroid Build Coastguard Worker return 0;
276*4dc78e53SAndroid Build Coastguard Worker }
277*4dc78e53SAndroid Build Coastguard Worker
278*4dc78e53SAndroid Build Coastguard Worker /** @} */
279