@c from the manpage
@table @samp
-@item ALRM
-Forces tinc to try to connect to all uplinks immediately.
-Usually tinc attempts to do this itself,
-but increases the time it waits between the attempts each time it failed,
-and if tinc didn't succeed to connect to an uplink the first time after it started,
-it defaults to the maximum time of 15 minutes.
-
@item HUP
Partially rereads configuration files.
Connections to hosts whose host config file are removed are closed.
@item debug @var{level}
Sets debug level to @var{level}.
+@item retry
+Forces tinc to try to connect to all uplinks immediately.
+Usually tinc attempts to do this itself,
+but increases the time it waits between the attempts each time it failed,
+and if tinc didn't succeed to connect to an uplink the first time after it started,
+it defaults to the maximum time of 15 minutes.
+
@end table
.It debug Ar N
Sets debug level to
.Ar N .
+.It retry
+Forces
+.Xr tincd 8
+to try to connect to all uplinks immediately.
+Usually
+.Xr tincd 8
+attempts to do this itself,
+but increases the time it waits between the attempts each time it failed,
+and if
+.Xr tincd 8
+didn't succeed to connect to an uplink the first time after it started,
+it defaults to the maximum time of 15 minutes.
.El
.Sh BUGS
The "start", "restart", and "reload" commands are not yet implemented.
.El
.Sh SIGNALS
.Bl -tag -width indent
-.It ALRM
-Forces
-.Nm
-to try to connect to all uplinks immediately.
-Usually
-.Nm
-attempts to do this itself,
-but increases the time it waits between the attempts each time it failed,
-and if
-.Nm
-didn't succeed to connect to an uplink the first time after it started,
-it defaults to the maximum time of 15 minutes.
.It HUP
Partially rereads configuration files.
Connections to hosts whose host config file are removed are closed.
goto respond;
}
+ if(req.type == REQ_RETRY) {
+ logger(LOG_NOTICE, _("Got '%s' command"), "retry");
+ retry();
+ goto respond;
+ }
+
logger(LOG_DEBUG, _("Malformed control command received"));
res.res_errno = EINVAL;
REQ_DUMP_GRAPH,
REQ_PURGE,
REQ_SET_DEBUG,
+ REQ_RETRY,
};
#define TINC_CTL_VERSION_CURRENT 0
try_outgoing_connections();
}
-static void sigalrm_handler(int signal, short events, void *data) {
- logger(LOG_NOTICE, _("Got %s signal"), strsignal(signal));
-
+void retry(void) {
connection_t *c;
splay_node_t *node;
struct event sighup_event;
struct event sigterm_event;
struct event sigquit_event;
- struct event sigalrm_event;
cp();
signal_add(&sigterm_event, NULL);
signal_set(&sigquit_event, SIGQUIT, sigterm_handler, NULL);
signal_add(&sigquit_event, NULL);
- signal_set(&sigalrm_event, SIGALRM, sigalrm_handler, NULL);
- signal_add(&sigalrm_event, NULL);
if(event_loop(0) < 0) {
logger(LOG_ERR, _("Error while waiting for input: %s"), strerror(errno));
signal_del(&sighup_event);
signal_del(&sigterm_event);
signal_del(&sigquit_event);
- signal_del(&sigalrm_event);
event_del(&timeout_event);
return 0;
extern void handle_meta_connection_data(int, short, void *);
extern void regenerate_key();
extern void purge(void);
+extern void retry(void);
#ifndef HAVE_MINGW
#define closesocket(s) close(s)
" graph - graph of the VPN in dotty format\n"
" purge Purge unreachable nodes\n"
" debug N Set debug level\n"
+ " retry Retry all outgoing connections\n"
"\n"));
printf(_("Report bugs to tinc@tinc-vpn.org.\n"));
}
sizeof(debuglevel)) != -1;
}
+ if(!strcasecmp(argv[optind], "retry")) {
+ return send_ctl_request_cooked(fd, REQ_RETRY, NULL, 0) != -1;
+ }
+
fprintf(stderr, _("Unknown command `%s'.\n"), argv[optind]);
usage(true);