Small fixes to make LZO compression work.
[tinc] / src / tincd.c
index 6bd92ec..f3ffc19 100644 (file)
@@ -17,7 +17,7 @@
     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.4.63 2002/09/09 21:25:16 guus Exp $
+    $Id: tincd.c,v 1.10.4.67 2003/05/06 23:14:45 guus Exp $
 */
 
 #include "config.h"
 #include <signal.h>
 #include <string.h>
 #include <termios.h>
+
+/* Darwin (MacOS/X) needs the following definition... */
+#ifndef _P1003_1B_VISIBLE
+#define _P1003_1B_VISIBLE
+#endif
+
 #include <sys/mman.h>
 
 #ifdef HAVE_SYS_IOCTL_H
@@ -44,6 +50,8 @@
 #include <openssl/pem.h>
 #include <openssl/evp.h>
 
+#include <lzo1x.h>
+
 #include <utils.h>
 #include <xalloc.h>
 
@@ -104,8 +112,7 @@ static void usage(int status)
                                program_name);
        else {
                printf(_("Usage: %s [option]...\n\n"), program_name);
-               printf(_
-                          ("  -c, --config=DIR           Read configuration options from DIR.\n"
+               printf(_("  -c, --config=DIR           Read configuration options from DIR.\n"
                                "  -D, --no-detach            Don't fork and detach.\n"
                                "  -d, --debug[=LEVEL]        Increase debug level or set it to LEVEL.\n"
                                "  -k, --kill[=SIGNAL]        Attempt to kill a running tincd and exit.\n"
@@ -172,9 +179,7 @@ void parse_options(int argc, char **argv, char **envp)
                                                kill_tincd = atoi(optarg);
 
                                                if(!kill_tincd) {
-                                                       fprintf(stderr,
-                                                                       _
-                                                                       ("Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, USR1, USR2, WINCH, INT or ALRM.\n"),
+                                                       fprintf(stderr, _("Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, USR1, USR2, WINCH, INT or ALRM.\n"),
                                                                        optarg);
                                                        usage(1);
                                                }
@@ -193,9 +198,7 @@ void parse_options(int argc, char **argv, char **envp)
                                        generate_keys = atoi(optarg);
 
                                        if(generate_keys < 512) {
-                                               fprintf(stderr,
-                                                               _
-                                                               ("Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"),
+                                               fprintf(stderr, _("Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"),
                                                                optarg);
                                                usage(1);
                                        }
@@ -360,6 +363,9 @@ int main(int argc, char **argv, char **envp)
        if(show_help)
                usage(0);
 
+       if(kill_tincd)
+               exit(kill_other(kill_tincd));
+
 #ifndef LOG_PERROR
        openlog("tinc", LOG_CONS, LOG_DAEMON);  /* Catch all syslog() calls issued before detaching */
 #else
@@ -389,10 +395,18 @@ int main(int argc, char **argv, char **envp)
 
        RAND_load_file("/dev/urandom", 1024);
 
+#ifdef HAVE_OPENSSL_ADD_ALL_ALGORITHMS_NOCONF
+       OPENSSL_add_all_algorithms_noconf();
+#else
+#ifdef HAVE_OPENSSL_ADD_ALL_ALGORITHMS
+       OpenSSL_add_all_algorithms();
+#else
 #ifdef HAVE_SSLEAY_ADD_ALL_ALGORITHMS
        SSLeay_add_all_algorithms();
 #else
-       OpenSSL_add_all_algorithms();
+#error No add_all_algorithms function available!
+#endif
+#endif
 #endif
 
        if(generate_keys) {
@@ -400,15 +414,17 @@ int main(int argc, char **argv, char **envp)
                exit(keygen(generate_keys));
        }
 
-       if(kill_tincd)
-               exit(kill_other(kill_tincd));
-
        if(read_server_config())
                exit(1);
 
+       if(lzo_init() != LZO_E_OK) {
+               syslog(LOG_ERR, _("Error initializing LZO compressor!"));
+               exit(1);
+       }
+
        if(detach())
                exit(0);
-
+               
        for(;;) {
                if(!setup_network_connections()) {
                        main_loop();