/* directory_delete */ void directory_delete(Directory * directory) { if(directory->config != NULL) config_delete(directory->config); if(directory->appserver != NULL) appserver_delete(directory->appserver); object_delete(directory); }
/* vpn */ int vpn(AppServerOptions options) { if((_appserver = appserver_new("VPN", options)) == NULL) { error_print(PACKAGE); return 1; } _client_init(); appserver_loop(_appserver); _client_destroy(); appserver_delete(_appserver); return 0; }
/* probe */ static int _probe(AppServerOptions options) { Probe probe; AppServer * appserver; Event * event; struct timeval tv; memset(&probe, 0, sizeof(Probe)); if(_probe_timeout(&probe) != 0) { free(probe.ifinfo); free(probe.volinfo); return 1; } if((event = event_new()) == NULL) { free(probe.ifinfo); free(probe.volinfo); return _probe_error(1); } if((appserver = appserver_new_event(&probe, options, "Probe", NULL, event)) == NULL) { free(probe.ifinfo); free(probe.volinfo); event_delete(event); return _probe_error(1); } tv.tv_sec = PROBE_REFRESH; tv.tv_usec = 0; if(event_register_timeout(event, &tv, (EventTimeoutFunc)_probe_timeout, &probe) != 0) _probe_error(0); else event_loop(event); appserver_delete(appserver); event_delete(event); free(probe.ifinfo); free(probe.volinfo); return 1; }