… | |
… | |
33 | #include <signal.h> |
33 | #include <signal.h> |
34 | #include <termios.h> |
34 | #include <termios.h> |
35 | |
35 | |
36 | #include <sys/mman.h> |
36 | #include <sys/mman.h> |
37 | |
37 | |
|
|
38 | #include <openssl/err.h> |
38 | #include <openssl/rand.h> |
39 | #include <openssl/rand.h> |
39 | |
40 | |
40 | #include "gettext.h" |
41 | #include "gettext.h" |
41 | #include "pidfile.h" |
42 | #include "pidfile.h" |
42 | |
43 | |
… | |
… | |
200 | |
201 | |
201 | act.sa_handler = sighup_handler; sigaction (SIGHUP , &act, NULL); |
202 | act.sa_handler = sighup_handler; sigaction (SIGHUP , &act, NULL); |
202 | act.sa_handler = sigusr1_handler; sigaction (SIGUSR1, &act, NULL); |
203 | act.sa_handler = sigusr1_handler; sigaction (SIGUSR1, &act, NULL); |
203 | act.sa_handler = sigusr2_handler; sigaction (SIGUSR2, &act, NULL); |
204 | act.sa_handler = sigusr2_handler; sigaction (SIGUSR2, &act, NULL); |
204 | act.sa_handler = SIG_IGN; sigaction (SIGCHLD, &act, NULL); |
205 | act.sa_handler = SIG_IGN; sigaction (SIGCHLD, &act, NULL); |
|
|
206 | act.sa_handler = SIG_IGN; sigaction (SIGPIPE, &act, NULL); |
205 | act.sa_flags = SA_RESETHAND; |
207 | act.sa_flags = SA_RESETHAND; |
206 | act.sa_handler = sigterm_handler; sigaction (SIGINT , &act, NULL); |
208 | act.sa_handler = sigterm_handler; sigaction (SIGINT , &act, NULL); |
207 | act.sa_handler = sigterm_handler; sigaction (SIGTERM, &act, NULL); |
209 | act.sa_handler = sigterm_handler; sigaction (SIGTERM, &act, NULL); |
208 | } |
210 | } |
209 | |
211 | |
210 | int |
212 | int |
211 | main (int argc, char **argv, char **envp) |
213 | main (int argc, char **argv, char **envp) |
212 | { |
214 | { |
|
|
215 | ERR_load_crypto_strings (); // we have the RAM |
|
|
216 | |
213 | set_loglevel (L_INFO); |
217 | set_loglevel (L_INFO); |
214 | set_identity (argv[0]); |
218 | set_identity (argv[0]); |
215 | log_to (LOGTO_SYSLOG | LOGTO_STDERR); |
219 | log_to (LOGTO_SYSLOG | LOGTO_STDERR); |
216 | |
220 | |
217 | setlocale (LC_ALL, ""); |
221 | setlocale (LC_ALL, ""); |
… | |
… | |
220 | |
224 | |
221 | parse_options (argc, argv, envp); |
225 | parse_options (argc, argv, envp); |
222 | |
226 | |
223 | if (show_version) |
227 | if (show_version) |
224 | { |
228 | { |
225 | printf (_("%s version %s (built %s %s, protocol %d:%d)\n"), get_identity (), |
229 | printf (_("%s version %s (built %s %s, protocol %d.%d)\n"), get_identity (), |
226 | VERSION, __DATE__, __TIME__, PROTOCOL_MAJOR, PROTOCOL_MINOR); |
230 | VERSION, __DATE__, __TIME__, PROTOCOL_MAJOR, PROTOCOL_MINOR); |
227 | printf (_ |
231 | printf (_ |
228 | ("Copyright (C) 2003 Marc Lehmann <vpe@plan9.de> and others.\n" |
232 | ("Copyright (C) 2003 Marc Lehmann <vpe@plan9.de> and others.\n" |
229 | "See the AUTHORS file for a complete list.\n\n" |
233 | "See the AUTHORS file for a complete list.\n\n" |
230 | "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" |
234 | "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" |