X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ftincd.c;h=21623647fb1eb0be7876a74c49fa16d19263494b;hb=103543aa2c15d9f1e2aa313a2e593a7524cce484;hp=1a9bad0d55cea46abe899685bd89ecfa80d1b2d6;hpb=108b238915c5f58b3d94ab433dc5d04e064c2b11;p=tinc diff --git a/src/tincd.c b/src/tincd.c index 1a9bad0d..21623647 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -1,7 +1,7 @@ /* tincd.c -- the main file for tincd Copyright (C) 1998-2005 Ivo Timmermans - 2000-2009 Guus Sliepen + 2000-2010 Guus Sliepen 2008 Max Rijevski 2009 Michael Tokarev @@ -31,7 +31,15 @@ #include #endif +#include +#include +#include +#include +#include + +#ifdef HAVE_LZO #include LZO1X_H +#endif #ifndef HAVE_MINGW #include @@ -78,8 +86,8 @@ static const char *switchuser = NULL; bool use_logfile = false; char *identname = NULL; /* program name for syslog */ -char *controlsocketname = NULL; /* control socket location */ char *logfilename = NULL; /* log file location */ +char *controlcookiename = NULL; char **g_argv; /* a copy of the cmdline arguments */ static int status; @@ -96,7 +104,7 @@ static struct option const long_options[] = { {"chroot", no_argument, NULL, 'R'}, {"user", required_argument, NULL, 'U'}, {"logfile", optional_argument, NULL, 4}, - {"controlsocket", required_argument, NULL, 5}, + {"controlcookie", required_argument, NULL, 5}, {NULL, 0, NULL, 0} }; @@ -117,7 +125,7 @@ static void usage(bool status) { " -n, --net=NETNAME Connect to net NETNAME.\n" " -L, --mlock Lock tinc into main memory.\n" " --logfile[=FILENAME] Write log entries to a logfile.\n" - " --controlsocket=FILENAME Open control socket at FILENAME.\n" + " --controlcookie=FILENAME Write control socket cookie to FILENAME.\n" " --bypass-security Disables meta protocol security, for debugging.\n" " -R, --chroot chroot to NET dir at startup.\n" " -U, --user=USER setuid to given USER at startup.\n" " --help Display this help and exit.\n" @@ -190,7 +198,7 @@ static bool parse_options(int argc, char **argv) { break; case 5: /* open control socket here */ - controlsocketname = xstrdup(optarg); + controlcookiename = xstrdup(optarg); break; case '?': @@ -231,6 +239,8 @@ static void make_names(void) { else xasprintf(&confbase, "%s", installdir); } + if(!controlcookiename) + xasprintf(&controlcookiename, "%s/cookie", confbase); } RegCloseKey(key); if(*installdir) @@ -238,12 +248,12 @@ static void make_names(void) { } #endif - if(!controlsocketname) - xasprintf(&controlsocketname, "%s/run/%s.control/socket", LOCALSTATEDIR, identname); - if(!logfilename) xasprintf(&logfilename, LOCALSTATEDIR "/log/%s.log", identname); + if(!controlcookiename) + xasprintf(&controlcookiename, LOCALSTATEDIR "/run/%s.cookie", identname); + if(netname) { if(!confbase) xasprintf(&confbase, CONFDIR "/tinc/%s", netname); @@ -258,7 +268,7 @@ static void make_names(void) { static void free_names() { if (identname) free(identname); if (netname) free(netname); - if (controlsocketname) free(controlsocketname); + if (controlcookiename) free(controlcookiename); if (logfilename) free(logfilename); if (confbase) free(confbase); } @@ -331,7 +341,7 @@ int main(int argc, char **argv) { if(show_version) { printf("%s version %s (built %s %s, protocol %d)\n", PACKAGE, VERSION, __DATE__, __TIME__, PROT_CURRENT); - printf("Copyright (C) 1998-2009 Ivo Timmermans, Guus Sliepen and others.\n" + printf("Copyright (C) 1998-2010 Ivo Timmermans, Guus Sliepen and others.\n" "See the AUTHORS file for a complete list.\n\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" "and you are welcome to redistribute it under certain conditions;\n" @@ -345,6 +355,13 @@ int main(int argc, char **argv) { return 0; } +#ifdef HAVE_MINGW + if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) { + logger(LOG_ERR, "System call `%s' failed: %s", "WSAStartup", winerror(GetLastError())); + return 1; + } +#endif + openlogger("tinc", use_logfile?LOGMODE_FILE:LOGMODE_STDERR); if(!event_init()) { @@ -352,9 +369,6 @@ int main(int argc, char **argv) { return 1; } - if(!init_control()) - return 1; - g_argv = argv; init_configuration(&config_tree); @@ -367,17 +381,14 @@ int main(int argc, char **argv) { if(!read_server_config()) return 1; +#ifdef HAVE_LZO if(lzo_init() != LZO_E_OK) { logger(LOG_ERR, "Error initializing LZO compressor!"); return 1; } +#endif #ifdef HAVE_MINGW - if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) { - logger(LOG_ERR, "System call `%s' failed: %s", "WSAStartup", winerror(GetLastError())); - return 1; - } - if(!do_detach || !init_service()) return main2(argc, argv); else @@ -408,6 +419,9 @@ int main2(int argc, char **argv) { if(!setup_network()) goto end; + if(!init_control()) + return 1; + /* Initiate all outgoing connections. */ try_outgoing_connections(); @@ -447,9 +461,7 @@ int main2(int argc, char **argv) { end: logger(LOG_NOTICE, "Terminating"); -#ifndef HAVE_MINGW exit_control(); -#endif crypto_exit();