From 397f344879d05a1834438369f77dada52698ec15 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 25 Sep 2006 06:38:58 +0000 Subject: [PATCH] fixed dpd for responder --- src/charon/sa/ike_sa.c | 9 +++++++++ src/charon/sa/ike_sa.h | 8 ++++++++ src/charon/sa/transactions/ike_sa_init.c | 2 ++ 3 files changed, 19 insertions(+) diff --git a/src/charon/sa/ike_sa.c b/src/charon/sa/ike_sa.c index 2a8633b..8c181b3 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 39536d5..a50df3e 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 b14a074..7343e2a 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); -- 2.7.4