--- gvpe/src/vped.C 2003/03/06 18:43:07 1.2 +++ gvpe/src/vped.C 2003/10/14 19:57:55 1.10 @@ -33,8 +33,11 @@ #include #include -#include +#if HAVE_SYS_MMAN_H +# include +#endif +#include #include #include "gettext.h" @@ -43,7 +46,8 @@ #include "conf.h" #include "slog.h" #include "util.h" -#include "protocol.h" +#include "vpn.h" +#include "iom.h" vpn network; @@ -55,10 +59,8 @@ /* If nonzero, print the version on standard output and exit. */ static int show_version; -#if HAVE_MLOCKALL /* If nonzero, disable swapping for this process. */ static int do_mlock = 0; -#endif /* If zero, don't detach from the terminal. */ static int do_detach = 1; @@ -70,9 +72,7 @@ {"version", no_argument, &show_version, 1}, {"no-detach", no_argument, &do_detach, 0}, {"log-level", required_argument, NULL, 'l'}, -#if HAVE_MLOCKALL {"mlock", no_argument, &do_mlock, 1}, -#endif {NULL, 0, NULL, 0} }; @@ -122,11 +122,9 @@ do_detach = 0; break; -#if HAVE_MLOCKALL case 'L': /* lock into memory */ do_mlock = 1; break; -#endif case 'l': /* inc debug level */ { @@ -168,17 +166,20 @@ sigterm_handler (int a) { network.events |= vpn::EVENT_SHUTDOWN; + network.event.start (0); } RETSIGTYPE sighup_handler (int a) { network.events |= vpn::EVENT_RECONNECT; + network.event.start (0); } RETSIGTYPE sigusr1_handler (int a) { + network.dump_status (); } RETSIGTYPE @@ -198,6 +199,7 @@ act.sa_handler = sigusr1_handler; sigaction (SIGUSR1, &act, NULL); act.sa_handler = sigusr2_handler; sigaction (SIGUSR2, &act, NULL); act.sa_handler = SIG_IGN; sigaction (SIGCHLD, &act, NULL); + act.sa_handler = SIG_IGN; sigaction (SIGPIPE, &act, NULL); act.sa_flags = SA_RESETHAND; act.sa_handler = sigterm_handler; sigaction (SIGINT , &act, NULL); act.sa_handler = sigterm_handler; sigaction (SIGTERM, &act, NULL); @@ -206,6 +208,8 @@ int main (int argc, char **argv, char **envp) { + ERR_load_crypto_strings (); // we have the RAM + set_loglevel (L_INFO); set_identity (argv[0]); log_to (LOGTO_SYSLOG | LOGTO_STDERR); @@ -218,7 +222,7 @@ if (show_version) { - printf (_("%s version %s (built %s %s, protocol %d:%d)\n"), get_identity (), + printf (_("%s version %s (built %s %s, protocol %d.%d)\n"), get_identity (), VERSION, __DATE__, __TIME__, PROTOCOL_MAJOR, PROTOCOL_MINOR); printf (_ ("Copyright (C) 2003 Marc Lehmann and others.\n" @@ -237,7 +241,7 @@ /* Lock all pages into memory if requested */ -#if HAVE_MLOCKALL +#if HAVE_MLOCKALL && HAVE_SYS_MMAN_H && _POSIX_MEMLOCK if (do_mlock) if (mlockall (MCL_CURRENT | MCL_FUTURE)) slog (L_ERR, _("system call `%s' failed: %s"), "mlockall", strerror (errno)); @@ -250,7 +254,7 @@ RAND_load_file ("/dev/urandom", 1024); - if (!thisnode) + if (!THISNODE) { slog (L_ERR, _("current node not set, or node '%s' not found in configfile, use the -n switch when starting vped."), thisnode ? thisnode : ""); @@ -264,7 +268,7 @@ if (!network.setup ()) { - network.main_loop (); + iom.loop (); cleanup_and_exit (1); }