Clear traps during shutdown before unloading kernel plugins

This commit is contained in:
Martin Willi
2011-09-12 13:02:51 +02:00
parent 40e53c40d4
commit f8437dd8d2
3 changed files with 16 additions and 0 deletions
+4
View File
@@ -106,6 +106,10 @@ static void destroy(private_daemon_t *this)
{
this->public.ike_sa_manager->flush(this->public.ike_sa_manager);
}
if (this->public.traps)
{
this->public.traps->flush(this->public.traps);
}
DESTROY_IF(this->public.receiver);
DESTROY_IF(this->public.sender);
/* unload plugins to release threads */
+7
View File
@@ -350,6 +350,12 @@ METHOD(listener_t, child_state_change, bool,
}
}
METHOD(trap_manager_t, flush, void,
private_trap_manager_t *this)
{
this->traps->invoke_function(this->traps, (void*)destroy_entry);
}
METHOD(trap_manager_t, destroy, void,
private_trap_manager_t *this)
{
@@ -373,6 +379,7 @@ trap_manager_t *trap_manager_create(void)
.uninstall = _uninstall,
.create_enumerator = _create_enumerator,
.acquire = _acquire,
.flush = _flush,
.destroy = _destroy,
},
.listener = {
+5
View File
@@ -67,6 +67,11 @@ struct trap_manager_t {
void (*acquire)(trap_manager_t *this, u_int32_t reqid,
traffic_selector_t *src, traffic_selector_t *dst);
/**
* Clear any installed trap.
*/
void (*flush)(trap_manager_t *this);
/**
* Destroy a trap_manager_t.
*/