void driver_destroy(driver_t *driver) { switch(driver->type) { case DRIVER_TYPE_CONSOLE: return driver_console_destroy(driver->real_driver.console); break; case DRIVER_TYPE_EXEC: return driver_exec_destroy(driver->real_driver.exec); break; case DRIVER_TYPE_COMMAND: return driver_command_destroy(driver->real_driver.command); break; case DRIVER_TYPE_PING: return driver_ping_destroy(driver->real_driver.ping); break; default: LOG_FATAL("UNKNOWN DRIVER TYPE!\n"); exit(1); break; } safe_free(driver); }
static void cleanup(void) { LOG_WARNING("Terminating"); message_post_shutdown(); message_cleanup(); if(group) select_group_destroy(group); if(driver_console) driver_console_destroy(driver_console); if(driver_command) driver_command_destroy(driver_command); if(driver_dns) driver_dns_destroy(driver_dns); if(driver_exec) driver_exec_destroy(driver_exec); if(driver_listener) driver_listener_destroy(driver_listener); if(driver_ping) driver_ping_destroy(driver_ping); print_memory(); }