/*
tincd.c -- the main file for tincd
Copyright (C) 1998-2005 Ivo Timmermans
- 2000-2014 Guus Sliepen <guus@tinc-vpn.org>
+ 2000-2016 Guus Sliepen <guus@tinc-vpn.org>
2008 Max Rijevski <maksuf@gmail.com>
2009 Michael Tokarev <mjt@tls.msk.ru>
2010 Julien Muchembled <jm@jmuchemb.eu>
#include <time.h>
#endif
-#include <getopt.h>
-
#include "conf.h"
#include "control.h"
#include "crypto.h"
netname = NULL;
}
- if(netname && (strpbrk(netname, "\\/") || *netname == '.')) {
+ if(netname && !check_netname(netname, false)) {
fprintf(stderr, "Invalid character in netname!\n");
return false;
}
+ if(netname && !check_netname(netname, true))
+ fprintf(stderr, "Warning: unsafe character in netname!\n");
+
return true;
}
if(!parse_options(argc, argv))
return 1;
- make_names();
+ make_names(true);
+ chdir(confbase);
if(show_version) {
printf("%s version %s (built %s %s, protocol %d.%d)\n", PACKAGE,
BUILD_VERSION, BUILD_DATE, BUILD_TIME, PROT_MAJOR, PROT_MINOR);
- printf("Copyright (C) 1998-2014 Ivo Timmermans, Guus Sliepen and others.\n"
+ printf("Copyright (C) 1998-2016 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"
logger(DEBUG_ALWAYS, LOG_ERR, "System call `%s' failed: %s", "WSAStartup", winerror(GetLastError()));
return 1;
}
+#else
+ // Check if we got an umbilical fd from the process that started us
+ char *umbstr = getenv("TINC_UMBILICAL");
+ if(umbstr) {
+ umbilical = atoi(umbstr);
+ if(fcntl(umbilical, F_GETFL) < 0)
+ umbilical = 0;
+#ifdef FD_CLOEXEC
+ if(umbilical)
+ fcntl(umbilical, F_SETFD, FD_CLOEXEC);
+#endif
+ }
#endif
openlogger("tinc", use_logfile?LOGMODE_FILE:LOGMODE_STDERR);
logger(DEBUG_ALWAYS, LOG_NOTICE, "Ready");
+ if(umbilical) { // snip!
+ write(umbilical, "", 1);
+ close(umbilical);
+ umbilical = 0;
+ }
+
try_outgoing_connections();
status = main_loop();