aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/charon/sa/ike_sa.c9
-rw-r--r--src/charon/sa/ike_sa.h8
-rw-r--r--src/charon/sa/transactions/ike_sa_init.c2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/charon/sa/ike_sa.c b/src/charon/sa/ike_sa.c
index 2a8633bdf..8c181b375 100644
--- a/src/charon/sa/ike_sa.c
+++ b/src/charon/sa/ike_sa.c
@@ -300,6 +300,14 @@ static void set_name(private_ike_sa_t *this, char* name)
}
/**
+ * Implementation of ike_sa_t.set_dpd_delay.
+ */
+static void set_dpd_delay(private_ike_sa_t *this, u_int32_t delay)
+{
+ this->dpd_delay = delay;
+}
+
+/**
* Implementation of ike_sa_t.get_my_host.
*/
static host_t *get_my_host(private_ike_sa_t *this)
@@ -2050,6 +2058,7 @@ ike_sa_t * ike_sa_create(ike_sa_id_t *ike_sa_id)
this->public.enable_natt = (void(*)(ike_sa_t*, bool)) enable_natt;
this->public.is_natt_enabled = (bool(*)(ike_sa_t*)) is_natt_enabled;
this->public.set_lifetimes = (void(*)(ike_sa_t*,u_int32_t,u_int32_t))set_lifetimes;
+ this->public.set_dpd_delay = (void(*)(ike_sa_t*,u_int32_t))set_dpd_delay;
this->public.rekey = (status_t(*)(ike_sa_t*))rekey;
this->public.get_rekeying_transaction = (void*(*)(ike_sa_t*))get_rekeying_transaction;
this->public.set_rekeying_transaction = (void(*)(ike_sa_t*,void*))set_rekeying_transaction;
diff --git a/src/charon/sa/ike_sa.h b/src/charon/sa/ike_sa.h
index 39536d5d5..a50df3e6c 100644
--- a/src/charon/sa/ike_sa.h
+++ b/src/charon/sa/ike_sa.h
@@ -371,6 +371,14 @@ struct ike_sa_t {
void (*enable_natt) (ike_sa_t *this, bool local);
/**
+ * @brief Set the delay before starting a DPD check in case of inactivity.
+ *
+ * @param this calling object
+ * @param delay dpd delay in seconds
+ */
+ void (*set_dpd_delay) (ike_sa_t *this, u_int32_t delay);
+
+ /**
* @brief Sends a DPD request to the peer.
*
* To check if a peer is still alive, periodic
diff --git a/src/charon/sa/transactions/ike_sa_init.c b/src/charon/sa/transactions/ike_sa_init.c
index b14a0743b..7343e2aef 100644
--- a/src/charon/sa/transactions/ike_sa_init.c
+++ b/src/charon/sa/transactions/ike_sa_init.c
@@ -581,6 +581,8 @@ static status_t get_response(private_ike_sa_init_t *this,
{
this->ike_sa->set_name(this->ike_sa, name);
}
+ this->ike_sa->set_dpd_delay(this->ike_sa,
+ this->connection->get_dpd_delay(this->connection));
/* Precompute NAT-D hashes for incoming NAT notify comparison */
ike_sa_id = request->get_ike_sa_id(request);