projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- Delayed address resolving for ConnectTo lines in configuration file to
[tinc]
/
src
/
tincd.c
diff --git
a/src/tincd.c
b/src/tincd.c
index
2a7b63e
..
f63540a
100644
(file)
--- a/
src/tincd.c
+++ b/
src/tincd.c
@@
-17,7
+17,7
@@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: tincd.c,v 1.10
2000/05/31 18:23:06 zarq
Exp $
+ $Id: tincd.c,v 1.10
.4.6 2000/06/30 11:45:16 guus
Exp $
*/
#include "config.h"
*/
#include "config.h"
@@
-62,7
+62,7
@@
static int kill_tincd = 0;
static int do_detach = 1;
char *confbase = NULL; /* directory in which all config files are */
static int do_detach = 1;
char *confbase = NULL; /* directory in which all config files are */
-
char *configfilename = NULL; /* configuration file name
*/
+
/* char *configfilename = NULL; /* configuration file name, moved to config.c
*/
char *identname; /* program name for syslog */
char *netname = NULL; /* name of the vpn network */
char *pidfilename; /* pid file location */
char *identname; /* program name for syslog */
char *netname = NULL; /* name of the vpn network */
char *pidfilename; /* pid file location */
@@
-156,7
+156,7
@@
parse_options(int argc, char **argv, char **envp)
void memory_full(int size)
{
void memory_full(int size)
{
- syslog(LOG_ERR, _("Memory exhausted (last is %s:%d) (couldn't allocate %d bytes)
;
exiting."), cp_file, cp_line, size);
+ syslog(LOG_ERR, _("Memory exhausted (last is %s:%d) (couldn't allocate %d bytes)
,
exiting."), cp_file, cp_line, size);
exit(1);
}
exit(1);
}
@@
-210,11
+210,11
@@
int detach(void)
openlog(identname, LOG_CONS | LOG_PID, LOG_DAEMON);
openlog(identname, LOG_CONS | LOG_PID, LOG_DAEMON);
- if(debug_lvl >
1
)
- syslog(LOG_NOTICE, _("tincd %s (%s %s) starting, debug level %d
.
"),
+ if(debug_lvl >
0
)
+ syslog(LOG_NOTICE, _("tincd %s (%s %s) starting, debug level %d"),
VERSION, __DATE__, __TIME__, debug_lvl);
else
VERSION, __DATE__, __TIME__, debug_lvl);
else
- syslog(LOG_NOTICE, _("tincd %s starting
, debug level %d.
"), VERSION, debug_lvl);
+ syslog(LOG_NOTICE, _("tincd %s starting"), VERSION, debug_lvl);
xalloc_fail_func = memory_full;
xalloc_fail_func = memory_full;
@@
-229,7
+229,7
@@
void cleanup_and_exit(int c)
close_network_connections();
if(debug_lvl > 0)
close_network_connections();
if(debug_lvl > 0)
- syslog(LOG_INFO, _("Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d
.
"),
+ syslog(LOG_INFO, _("Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d"),
total_tap_out, total_socket_out, total_tap_in, total_socket_in);
closelog();
total_tap_out, total_socket_out, total_tap_in, total_socket_in);
closelog();
@@
-352,7
+352,7
@@
main(int argc, char **argv, char **envp)
if(geteuid())
{
if(geteuid())
{
- fprintf(stderr, _("You must be root to run this program.
s
orry.\n"));
+ fprintf(stderr, _("You must be root to run this program.
S
orry.\n"));
return 1;
}
return 1;
}
@@
-374,13
+374,17
@@
main(int argc, char **argv, char **envp)
if(security_init())
return 1;
if(security_init())
return 1;
- if(setup_network_connections())
- cleanup_and_exit(1);
+ for(;;)
+ {
+ setup_network_connections();
+
+ main_loop();
-
main_loop(
);
+
cleanup_and_exit(1
);
- cleanup_and_exit(1);
- return 1;
+ syslog(LOG_ERR, _("Unrecoverable error, restarting in %d seconds!"), MAXTIMEOUT);
+ sleep(MAXTIMEOUT);
+ }
}
RETSIGTYPE
}
RETSIGTYPE
@@
-410,13
+414,12
@@
RETSIGTYPE
sigsegv_handler(int a)
{
if(cp_file)
sigsegv_handler(int a)
{
if(cp_file)
- syslog(LOG_NOTICE, _("Got SEGV signal after %s line %d
. Trying to re-execute.
"),
+ syslog(LOG_NOTICE, _("Got SEGV signal after %s line %d
, trying to re-execute
"),
cp_file, cp_line);
else
cp_file, cp_line);
else
- syslog(LOG_NOTICE, _("Got SEGV signal
; trying to re-execute.
"));
+ syslog(LOG_NOTICE, _("Got SEGV signal
, trying to re-execute
"));
signal(SIGSEGV, sigsegv_square);
signal(SIGSEGV, sigsegv_square);
-
close_network_connections();
remove_pid(pidfilename);
execvp(g_argv[0], g_argv);
close_network_connections();
remove_pid(pidfilename);
execvp(g_argv[0], g_argv);
@@
-426,17
+429,15
@@
RETSIGTYPE
sighup_handler(int a)
{
if(debug_lvl > 0)
sighup_handler(int a)
{
if(debug_lvl > 0)
- syslog(LOG_NOTICE, _("Got HUP signal"));
- close_network_connections();
- setup_network_connections();
- /* FIXME: read config-file and re-establish network connections */
+ syslog(LOG_NOTICE, _("Got HUP signal, rereading configuration and restarting"));
+ sighup = 1;
}
RETSIGTYPE
sigint_handler(int a)
{
if(debug_lvl > 0)
}
RETSIGTYPE
sigint_handler(int a)
{
if(debug_lvl > 0)
- syslog(LOG_NOTICE, _("Got INT signal"));
+ syslog(LOG_NOTICE, _("Got INT signal
, exiting
"));
cleanup_and_exit(0);
}
cleanup_and_exit(0);
}
@@
-450,7
+451,7
@@
RETSIGTYPE
sigusr2_handler(int a)
{
if(debug_lvl > 1)
sigusr2_handler(int a)
{
if(debug_lvl > 1)
- syslog(LOG_NOTICE, _("
F
orcing new key generation"));
+ syslog(LOG_NOTICE, _("
Got USR2 signal, f
orcing new key generation"));
regenerate_keys();
}
regenerate_keys();
}
@@
-458,10
+459,10
@@
RETSIGTYPE
sighuh(int a)
{
if(cp_file)
sighuh(int a)
{
if(cp_file)
- syslog(LOG_NOTICE, _("Got unexpected signal
(%d) after %s line %d.
"),
+ syslog(LOG_NOTICE, _("Got unexpected signal
%d after %s line %d
"),
a, cp_file, cp_line);
else
a, cp_file, cp_line);
else
- syslog(LOG_NOTICE, _("Got unexpected signal
(%d).
"), a);
+ syslog(LOG_NOTICE, _("Got unexpected signal
%d
"), a);
}
void
}
void
@@
-485,7
+486,7
@@
setup_signals(void)
signal(SIGINT, sigint_handler);
signal(SIGUSR1, sigusr1_handler);
signal(SIGUSR2, sigusr2_handler);
signal(SIGINT, sigint_handler);
signal(SIGUSR1, sigusr1_handler);
signal(SIGUSR2, sigusr2_handler);
- signal(SIGCHLD, parent_exit);
+
//
signal(SIGCHLD, parent_exit);
}
RETSIGTYPE parent_exit(int a)
}
RETSIGTYPE parent_exit(int a)