X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ftincctl.c;h=98f4a1b9093b2d792b3cbbda8160b9244b80d528;hb=ee8a214318fd6dbe6bc5d6b510896f30d92d46c6;hp=93bb465ce874309061b67f905b4abcd4021bd8b1;hpb=5bc957074a35e58f49cbcf8d1fb5d6237d37363d;p=tinc diff --git a/src/tincctl.c b/src/tincctl.c index 93bb465c..98f4a1b9 100644 --- a/src/tincctl.c +++ b/src/tincctl.c @@ -38,19 +38,12 @@ static bool show_help = false; /* If nonzero, print the version on standard output and exit. */ static bool show_version = false; -/* If nonzero, it will attempt to kill a running tincd and exit. */ -static int kill_tincd = 0; - -/* If nonzero, generate public/private keypair for this host/net. */ -static int generate_keys = 0; - static char *name = NULL; static char *identname = NULL; /* program name for syslog */ -static char *controlcookiename = NULL; /* cookie file location */ +static char *pidfilename = NULL; /* pid file location */ static char controlcookie[1024]; char *netname = NULL; char *confbase = NULL; -static char *host = NULL; #ifdef HAVE_MINGW static struct WSAData wsa_state; @@ -58,11 +51,10 @@ static struct WSAData wsa_state; static struct option const long_options[] = { {"config", required_argument, NULL, 'c'}, - {"host", required_argument, NULL, 'h'}, {"net", required_argument, NULL, 'n'}, {"help", no_argument, NULL, 1}, {"version", no_argument, NULL, 2}, - {"controlcookie", required_argument, NULL, 5}, + {"pidfile", required_argument, NULL, 5}, {NULL, 0, NULL, 0} }; @@ -73,11 +65,11 @@ static void usage(bool status) { else { printf("Usage: %s [options] command\n\n", program_name); printf("Valid options are:\n" - " -c, --config=DIR Read configuration options from DIR.\n" - " -n, --net=NETNAME Connect to net NETNAME.\n" - " --controlcookie=FILENAME Read control socket from FILENAME.\n" - " --help Display this help and exit.\n" - " --version Output version information and exit.\n" + " -c, --config=DIR Read configuration options from DIR.\n" + " -n, --net=NETNAME Connect to net NETNAME.\n" + " --pidfile=FILENAME Read control cookie from FILENAME.\n" + " --help Display this help and exit.\n" + " --version Output version information and exit.\n" "\n" "Valid commands are:\n" " start Start tincd.\n" @@ -110,7 +102,7 @@ static bool parse_options(int argc, char **argv) { int r; int option_index = 0; - while((r = getopt_long(argc, argv, "c:n:h:", long_options, &option_index)) != EOF) { + while((r = getopt_long(argc, argv, "c:n:", long_options, &option_index)) != EOF) { switch (r) { case 0: /* long option */ break; @@ -119,10 +111,6 @@ static bool parse_options(int argc, char **argv) { confbase = xstrdup(optarg); break; - case 'h': /* alternative host to connect to */ - host = xstrdup(optarg); - break; - case 'n': /* net name given */ netname = xstrdup(optarg); break; @@ -136,7 +124,7 @@ static bool parse_options(int argc, char **argv) { break; case 5: /* open control socket here */ - controlcookiename = xstrdup(optarg); + pidfilename = xstrdup(optarg); break; case '?': @@ -156,7 +144,6 @@ FILE *ask_and_open(const char *filename, const char *what, const char *mode) { char *directory; char buf[PATH_MAX]; char buf2[PATH_MAX]; - size_t len; /* Check stdin and stdout */ if(isatty(0) && isatty(1)) { @@ -171,7 +158,7 @@ FILE *ask_and_open(const char *filename, const char *what, const char *mode) { return NULL; } - len = strlen(buf); + size_t len = strlen(buf); if(len) buf[--len] = 0; @@ -286,16 +273,16 @@ static void make_names(void) { xasprintf(&confbase, "%s", installdir); } } - if(!controlcookiename) - xasprintf(&controlcookiename, "%s/cookie", confbase); + if(!pidfilename) + xasprintf(&pidfilename, "%s/pid", confbase); RegCloseKey(key); if(*installdir) return; } #endif - if(!controlcookiename) - xasprintf(&controlcookiename, "%s/run/%s.cookie", LOCALSTATEDIR, identname); + if(!pidfilename) + xasprintf(&pidfilename, "%s/run/%s.pid", LOCALSTATEDIR, identname); if(netname) { if(!confbase) @@ -436,6 +423,7 @@ void pcap(int fd, FILE *out) { int main(int argc, char *argv[], char *envp[]) { int fd; int result; + char host[128]; char port[128]; int pid; @@ -489,13 +477,13 @@ int main(int argc, char *argv[], char *envp[]) { * ancestors are writable only by trusted users, which we don't verify. */ - FILE *f = fopen(controlcookiename, "r"); + FILE *f = fopen(pidfilename, "r"); if(!f) { - fprintf(stderr, "Could not open control socket cookie file %s: %s\n", controlcookiename, strerror(errno)); + fprintf(stderr, "Could not open pid file %s: %s\n", pidfilename, strerror(errno)); return 1; } - if(fscanf(f, "%1024s %128s %d", controlcookie, port, &pid) != 3) { - fprintf(stderr, "Could not parse control socket cookie file %s\n", controlcookiename); + if(fscanf(f, "%20d %1024s %128s port %128s", &pid, controlcookie, host, port) != 4) { + fprintf(stderr, "Could not parse pid file %s\n", pidfilename); return 1; } @@ -535,8 +523,7 @@ int main(int argc, char *argv[], char *envp[]) { #endif if(connect(fd, res->ai_addr, res->ai_addrlen) < 0) { - - fprintf(stderr, "Cannot connect to %s: %s\n", controlcookiename, sockstrerror(sockerrno)); + fprintf(stderr, "Cannot connect to %s port %s: %s\n", host ?: "localhost", port, sockstrerror(sockerrno)); return 1; }