diff options
author | Tobias Brunner <tobias@strongswan.org> | 2009-08-27 11:22:43 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2009-09-01 12:50:50 +0200 |
commit | 86e4728550fbf4188c827bbc8f81ca0e243b3031 (patch) | |
tree | cccf9460dcfa8d304dfd65b00bae867a3c1b1507 /src | |
parent | e822fc576a9c2210aec9fc3d947fa859c03a0f22 (diff) | |
download | strongswan-86e4728550fbf4188c827bbc8f81ca0e243b3031.tar.bz2 strongswan-86e4728550fbf4188c827bbc8f81ca0e243b3031.tar.xz |
lifetime_cfg_t added to configure lifetime limits of a CHILD_SA.
Diffstat (limited to 'src')
-rw-r--r-- | src/charon/config/child_cfg.h | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/charon/config/child_cfg.h b/src/charon/config/child_cfg.h index 33c75701c..a72034e6a 100644 --- a/src/charon/config/child_cfg.h +++ b/src/charon/config/child_cfg.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Tobias Brunner + * Copyright (C) 2008-2009 Tobias Brunner * Copyright (C) 2005-2007 Martin Willi * Copyright (C) 2005 Jan Hutter * Hochschule fuer Technik Rapperswil @@ -25,6 +25,7 @@ typedef enum action_t action_t; typedef enum ipcomp_transform_t ipcomp_transform_t; +typedef struct lifetime_cfg_t lifetime_cfg_t; typedef struct child_cfg_t child_cfg_t; #include <library.h> @@ -66,6 +67,54 @@ enum ipcomp_transform_t { extern enum_name_t *ipcomp_transform_names; /** + * A lifetime_cfg_t defines the lifetime limits of a CHILD_SA. + * + * Set any of these values to 0 to ignore. + */ +struct lifetime_cfg_t { + /** Time in seconds before the CHILD_SA gets invalid. */ + u_int64_t life_time; + /** Number of bytes transmitted before the CHILD_SA gets invalid. */ + u_int64_t life_bytes; + /** Number of packets transmitted before the CHILD_SA gets invalid. */ + u_int64_t life_packets; + /** Time in seconds before the CHILD_SA gets rekeyed. */ + u_int64_t rekey_time; + /** Number of bytes transmitted before the CHILD_SA gets rekeyed. */ + u_int64_t rekey_bytes; + /** Number of packets transmitted before the CHILD_SA gets rekeyed. */ + u_int64_t rekey_packets; + /** The range of a random value subtracted from rekey_time */ + u_int64_t jitter_time; + /** The range of a random value subtracted from rekey_bytes */ + u_int64_t jitter_bytes; + /** The range of a random value subtracted from rekey_packets */ + u_int64_t jitter_packets; +}; + +/** + * Create a new lifetime_cfg_t object. + */ +static inline lifetime_cfg_t* lifetime_cfg_create() { + lifetime_cfg_t *this = malloc_thing(lifetime_cfg_t); + memset(this, 0, sizeof(lifetime_cfg_t)); + return this; +} + +/** + * Special constructor for the (currently) most common case. + */ +static inline lifetime_cfg_t* lifetime_cfg_create_time(u_int64_t life, + u_int64_t rekey, u_int64_t jitter) +{ + lifetime_cfg_t *this = lifetime_cfg_create(); + this->life_time = life; + this->rekey_time = rekey; + this->jitter_time = jitter; + return this; +} + +/** * A child_cfg_t defines the config template for a CHILD_SA. * * After creation, proposals and traffic selectors may be added to the config. |