49 #include <netlink/xfrm/lifetime.h> 50 #include <netlink-private/netlink.h> 52 static void ltime_cfg_destroy(
struct xfrmnl_ltime_cfg* ltime)
57 if (ltime->refcnt != 1)
59 fprintf(stderr,
"BUG: %s:%d\n", __FILE__, __LINE__);
77 struct xfrmnl_ltime_cfg* ltime;
79 ltime = calloc(1,
sizeof(
struct xfrmnl_ltime_cfg));
96 struct xfrmnl_ltime_cfg*
new;
100 memcpy ((
void*)
new, (
void*)ltime,
sizeof (
struct xfrmnl_ltime_cfg));
112 struct xfrmnl_ltime_cfg* xfrmnl_ltime_cfg_get(
struct xfrmnl_ltime_cfg* ltime)
119 void xfrmnl_ltime_cfg_put(
struct xfrmnl_ltime_cfg* ltime)
124 if (ltime->refcnt == 1)
125 ltime_cfg_destroy(ltime);
137 return ltime->refcnt > 1;
158 if ((a->soft_byte_limit != b->soft_byte_limit) ||
159 (a->soft_packet_limit != b->soft_packet_limit) ||
160 (a->hard_byte_limit != b->hard_byte_limit) ||
161 (a->hard_packet_limit != b->hard_packet_limit) ||
162 (a->soft_add_expires_seconds != b->soft_add_expires_seconds) ||
163 (a->hard_add_expires_seconds != b->hard_add_expires_seconds) ||
164 (a->soft_use_expires_seconds != b->soft_use_expires_seconds) ||
165 (a->hard_use_expires_seconds != b->hard_use_expires_seconds))
178 unsigned long long xfrmnl_ltime_cfg_get_soft_bytelimit (
struct xfrmnl_ltime_cfg* ltime)
180 return ltime->soft_byte_limit;
183 int xfrmnl_ltime_cfg_set_soft_bytelimit (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long soft_byte_limit)
185 ltime->soft_byte_limit = soft_byte_limit;
190 unsigned long long xfrmnl_ltime_cfg_get_hard_bytelimit (
struct xfrmnl_ltime_cfg* ltime)
192 return ltime->hard_byte_limit;
195 int xfrmnl_ltime_cfg_set_hard_bytelimit (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long hard_byte_limit)
197 ltime->hard_byte_limit = hard_byte_limit;
202 unsigned long long xfrmnl_ltime_cfg_get_soft_packetlimit (
struct xfrmnl_ltime_cfg* ltime)
204 return ltime->soft_packet_limit;
207 int xfrmnl_ltime_cfg_set_soft_packetlimit (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long soft_packet_limit)
209 ltime->soft_packet_limit = soft_packet_limit;
214 unsigned long long xfrmnl_ltime_cfg_get_hard_packetlimit (
struct xfrmnl_ltime_cfg* ltime)
216 return ltime->hard_packet_limit;
219 int xfrmnl_ltime_cfg_set_hard_packetlimit (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long hard_packet_limit)
221 ltime->hard_packet_limit = hard_packet_limit;
226 unsigned long long xfrmnl_ltime_cfg_get_soft_addexpires (
struct xfrmnl_ltime_cfg* ltime)
228 return ltime->soft_add_expires_seconds;
231 int xfrmnl_ltime_cfg_set_soft_addexpires (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long soft_add_expires_seconds)
233 ltime->soft_add_expires_seconds = soft_add_expires_seconds;
238 unsigned long long xfrmnl_ltime_cfg_get_hard_addexpires (
struct xfrmnl_ltime_cfg* ltime)
240 return ltime->hard_add_expires_seconds;
243 int xfrmnl_ltime_cfg_set_hard_addexpires (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long hard_add_expires_seconds)
245 ltime->hard_add_expires_seconds = hard_add_expires_seconds;
250 unsigned long long xfrmnl_ltime_cfg_get_soft_useexpires (
struct xfrmnl_ltime_cfg* ltime)
252 return ltime->soft_use_expires_seconds;
255 int xfrmnl_ltime_cfg_set_soft_useexpires (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long soft_use_expires_seconds)
257 ltime->soft_use_expires_seconds = soft_use_expires_seconds;
262 unsigned long long xfrmnl_ltime_cfg_get_hard_useexpires (
struct xfrmnl_ltime_cfg* ltime)
264 return ltime->hard_use_expires_seconds;
267 int xfrmnl_ltime_cfg_set_hard_useexpires (
struct xfrmnl_ltime_cfg* ltime,
unsigned long long hard_use_expires_seconds)
269 ltime->hard_use_expires_seconds = hard_use_expires_seconds;
struct xfrmnl_ltime_cfg * xfrmnl_ltime_cfg_clone(struct xfrmnl_ltime_cfg *ltime)
Clone existing lifetime config object.
int xfrmnl_ltime_cfg_shared(struct xfrmnl_ltime_cfg *ltime)
Check whether an lifetime config object is shared.
struct xfrmnl_ltime_cfg * xfrmnl_ltime_cfg_alloc()
Allocate new lifetime config object.
int xfrmnl_ltime_cfg_cmp(struct xfrmnl_ltime_cfg *a, struct xfrmnl_ltime_cfg *b)
Compares two lifetime config objects.