aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2009-08-27 11:22:43 +0200
committerTobias Brunner <tobias@strongswan.org>2009-09-01 12:50:50 +0200
commit86e4728550fbf4188c827bbc8f81ca0e243b3031 (patch)
treecccf9460dcfa8d304dfd65b00bae867a3c1b1507 /src
parente822fc576a9c2210aec9fc3d947fa859c03a0f22 (diff)
downloadstrongswan-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.h51
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.