From 5f23be840bd90c874ca14a8a036cf8de647edc68 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 14 Dec 2011 15:27:12 +0100 Subject: [PATCH] Use the IKEv1 specific delete in IKEv1 SAs --- src/libcharon/sa/ike_sa.c | 14 +++++++++++--- src/libcharon/sa/task_manager_v1.c | 2 +- src/libcharon/sa/tasks/informational.c | 6 +++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c index 11e7b18d2..fa07f5876 100644 --- a/src/libcharon/sa/ike_sa.c +++ b/src/libcharon/sa/ike_sa.c @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -1373,14 +1374,21 @@ METHOD(ike_sa_t, destroy_child_sa, status_t, METHOD(ike_sa_t, delete_, status_t, private_ike_sa_t *this) { - ike_delete_t *ike_delete; + task_t *task; switch (this->state) { case IKE_ESTABLISHED: case IKE_REKEYING: - ike_delete = ike_delete_create(&this->public, TRUE); - this->task_manager->queue_task(this->task_manager, &ike_delete->task); + if (this->version == IKEV1) + { + task = (task_t*)isakmp_delete_create(&this->public, TRUE); + } + else + { + task = (task_t*)ike_delete_create(&this->public, TRUE); + } + this->task_manager->queue_task(this->task_manager, task); return this->task_manager->initiate(this->task_manager); case IKE_CREATED: DBG1(DBG_IKE, "deleting unestablished IKE_SA"); diff --git a/src/libcharon/sa/task_manager_v1.c b/src/libcharon/sa/task_manager_v1.c index baf7bb437..bdb55a07e 100755 --- a/src/libcharon/sa/task_manager_v1.c +++ b/src/libcharon/sa/task_manager_v1.c @@ -334,7 +334,7 @@ METHOD(task_manager_t, initiate, status_t, exchange = INFORMATIONAL_V1; new_mid = TRUE; } - if (activate_task(this, TASK_IKE_DELETE)) + if (activate_task(this, TASK_ISAKMP_DELETE)) { exchange = INFORMATIONAL_V1; new_mid = TRUE; diff --git a/src/libcharon/sa/tasks/informational.c b/src/libcharon/sa/tasks/informational.c index c2c6aa5fa..5391dd32f 100644 --- a/src/libcharon/sa/tasks/informational.c +++ b/src/libcharon/sa/tasks/informational.c @@ -16,7 +16,7 @@ #include "informational.h" #include -#include +#include #include #include @@ -99,8 +99,8 @@ METHOD(task_t, process_r, status_t, delete = (delete_payload_t*)payload; if (delete->get_protocol_id(delete) == PROTO_IKE) { - this->del = (task_t*)ike_delete_create(this->ike_sa, - FALSE); + this->del = (task_t*)isakmp_delete_create(this->ike_sa, + FALSE); } else {