#include "protocol.h"
#include "control_common.h"
#include "ecdsagen.h"
+#include "info.h"
#include "rsagen.h"
#include "utils.h"
#include "tincctl.h"
static struct option const long_options[] = {
{"config", required_argument, NULL, 'c'},
+ {"debug", optional_argument, NULL, 0},
+ {"no-detach", no_argument, NULL, 0},
+ {"mlock", no_argument, NULL, 0},
{"net", required_argument, NULL, 'n'},
{"help", no_argument, NULL, 1},
{"version", no_argument, NULL, 2},
{"pidfile", required_argument, NULL, 5},
+ {"logfile", required_argument, NULL, 0},
+ {"bypass-security", no_argument, NULL, 0},
+ {"chroot", no_argument, NULL, 0},
+ {"user", required_argument, NULL, 0},
+ {"option", required_argument, NULL, 0},
{NULL, 0, NULL, 0}
};
" [set] VARIABLE VALUE - set VARIABLE to VALUE\n"
" add VARIABLE VALUE - add VARIABLE with the given VALUE\n"
" del VARIABLE [VALUE] - remove VARIABLE [only ones with watching VALUE]\n"
- " start Start tincd.\n"
+ " start [tincd options] Start tincd.\n"
" stop Stop tincd.\n"
" restart Restart tincd.\n"
" reload Partially reload configuration of running tincd.\n"
" subnets - all known subnets in the VPN\n"
" connections - all meta connections with ourself\n"
" graph - graph of the VPN in dotty format\n"
+ " info NODE|SUBNET|ADDRESS Give information about a particular NODE, SUBNET or ADDRESS.\n"
" purge Purge unreachable nodes\n"
" debug N Set debug level\n"
" retry Retry all outgoing connections\n"
int r;
int option_index = 0;
- while((r = getopt_long(argc, argv, "c:n:", long_options, &option_index)) != EOF) {
+ while((r = getopt_long(argc, argv, "c:n:Dd::Lo:RU:", long_options, &option_index)) != EOF) {
switch (r) {
case 0: /* long option */
break;
static int cmd_start(int argc, char *argv[]) {
int i, j;
char *c;
+
+ argc += optind;
+ argv -= optind;
char *slash = strrchr(argv[0], '/');
#ifdef HAVE_MINGW
return 1;
}
+ if(!connect_tincd())
+ return 1;
+
bool do_graph = false;
if(!strcasecmp(argv[1], "nodes"))
return 1;
}
- if(!connect_tincd())
- return 1;
-
if(do_graph)
printf("digraph {\n");
return 0;
}
+static int cmd_info(int argc, char *argv[]) {
+ if(argc != 2) {
+ fprintf(stderr, "Invalid number of arguments.\n");
+ return 1;
+ }
+
+ if(!connect_tincd())
+ return 1;
+
+ return info(fd, argv[1]);
+}
+
static const char *conffiles[] = {
"tinc.conf",
"tinc-up",
{"generate-ecdsa-keys", cmd_generate_ecdsa_keys},
{"help", cmd_help},
{"version", cmd_version},
+ {"info", cmd_info},
{"edit", cmd_edit},
{NULL, NULL},
};