Send a delete for every CHILD_SA before deleting IKE_SA
This commit is contained in:
@@ -349,13 +349,13 @@ METHOD(task_manager_t, initiate, status_t,
|
|||||||
new_mid = TRUE;
|
new_mid = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (activate_task(this, TASK_ISAKMP_DELETE))
|
if (activate_task(this, TASK_QUICK_DELETE))
|
||||||
{
|
{
|
||||||
exchange = INFORMATIONAL_V1;
|
exchange = INFORMATIONAL_V1;
|
||||||
new_mid = TRUE;
|
new_mid = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (activate_task(this, TASK_QUICK_DELETE))
|
if (activate_task(this, TASK_ISAKMP_DELETE))
|
||||||
{
|
{
|
||||||
exchange = INFORMATIONAL_V1;
|
exchange = INFORMATIONAL_V1;
|
||||||
new_mid = TRUE;
|
new_mid = TRUE;
|
||||||
@@ -499,7 +499,7 @@ METHOD(task_manager_t, initiate, status_t,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return SUCCESS;
|
return initiate(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1075,6 +1075,18 @@ METHOD(task_manager_t, queue_ike_reauth, void,
|
|||||||
METHOD(task_manager_t, queue_ike_delete, void,
|
METHOD(task_manager_t, queue_ike_delete, void,
|
||||||
private_task_manager_t *this)
|
private_task_manager_t *this)
|
||||||
{
|
{
|
||||||
|
enumerator_t *enumerator;
|
||||||
|
child_sa_t *child_sa;
|
||||||
|
|
||||||
|
enumerator = this->ike_sa->create_child_sa_enumerator(this->ike_sa);
|
||||||
|
while (enumerator->enumerate(enumerator, &child_sa))
|
||||||
|
{
|
||||||
|
queue_task(this, (task_t*)
|
||||||
|
quick_delete_create(this->ike_sa, child_sa->get_protocol(child_sa),
|
||||||
|
child_sa->get_spi(child_sa, TRUE), FALSE));
|
||||||
|
}
|
||||||
|
enumerator->destroy(enumerator);
|
||||||
|
|
||||||
queue_task(this, (task_t*)isakmp_delete_create(this->ike_sa, TRUE));
|
queue_task(this, (task_t*)isakmp_delete_create(this->ike_sa, TRUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user