void driver_close(driver_t *driver) { switch(driver->type) { case DRIVER_TYPE_CONSOLE: return driver_console_close(driver->real_driver.console); break; case DRIVER_TYPE_EXEC: return driver_exec_close(driver->real_driver.exec); break; case DRIVER_TYPE_COMMAND: return driver_command_close(driver->real_driver.command); break; case DRIVER_TYPE_PING: return driver_ping_close(driver->real_driver.ping); break; default: LOG_FATAL("UNKNOWN DRIVER TYPE!\n"); exit(1); break; } safe_free(driver); }
void driver_command_destroy(driver_command_t *driver) { if(!driver->is_shutdown) driver_command_close(driver); if(driver->name) safe_free(driver->name); if(driver->stream) command_packet_stream_destroy(driver->stream); safe_free(driver); }