#include <daemon.h>
#include <threading/thread.h>
#include <processing/jobs/callback_job.h>
+#include <processing/jobs/delete_ike_sa_job.h>
#define RADIUS_DAE_PORT 3799
{
enumerator_t *enumerator;
ike_sa_t *ike_sa;
+ ike_sa_id_t *id;
enumerator = charon->ike_sa_manager->create_enumerator(
charon->ike_sa_manager, FALSE);
{
if (user->matches(user, ike_sa->get_other_eap_id(ike_sa)))
{
- list->insert_last(list,
- (void*)(uintptr_t)ike_sa->get_unique_id(ike_sa));
+ id = ike_sa->get_id(ike_sa);
+ list->insert_last(list, id->clone(id));
}
}
enumerator->destroy(enumerator);
{
enumerator_t *enumerator;
linked_list_t *ids;
- uintptr_t id;
+ ike_sa_id_t *id;
ids = get_matching_ike_sas(this, request, client);
enumerator = ids->create_enumerator(ids);
while (enumerator->enumerate(enumerator, &id))
{
- charon->controller->terminate_ike(charon->controller,
- id, NULL, NULL, 0);
+ lib->processor->queue_job(lib->processor, (job_t*)
+ delete_ike_sa_job_create(id, TRUE));
}
enumerator->destroy(enumerator);
radius_message_code_names, RMC_DISCONNECT_NAK);
send_response(this, request, RMC_DISCONNECT_NAK, client);
}
- ids->destroy(ids);
+ ids->destroy_offset(ids, offsetof(ike_sa_id_t, destroy));
}
/**