Add --disable-zlib configure option
authorTimothy Redaelli <timothy@redaelli.eu>
Wed, 10 Feb 2010 13:52:15 +0000 (14:52 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 10 Feb 2010 15:47:52 +0000 (16:47 +0100)
m4/zlib.m4
src/net_packet.c

index 71f39f717ce895038c68edf0b87f7247f4643788..64245a505825f865260f5d061ff9983bece0eb49 100644 (file)
@@ -2,32 +2,37 @@ dnl Check to find the zlib headers/libraries
 
 AC_DEFUN([tinc_ZLIB],
 [
-  AC_ARG_WITH(zlib,
-    AS_HELP_STRING([--with-zlib=DIR], [zlib base directory, or:]),
-    [zlib="$withval"
-     CPPFLAGS="$CPPFLAGS -I$withval/include"
-     LDFLAGS="$LDFLAGS -L$withval/lib"]
-  )
+  AC_ARG_ENABLE([zlib],
+    AS_HELP_STRING([--disable-zlib], [disable zlib compression support]))
+  AS_IF([test "x$enable_zlib" != "xno"], [
+  AC_DEFINE(HAVE_ZLIB, 1, [have zlib compression support])
+    AC_ARG_WITH(zlib,
+      AS_HELP_STRING([--with-zlib=DIR], [zlib base directory, or:]),
+      [zlib="$withval"
+       CPPFLAGS="$CPPFLAGS -I$withval/include"
+       LDFLAGS="$LDFLAGS -L$withval/lib"]
+    )
 
-  AC_ARG_WITH(zlib-include,
-    AS_HELP_STRING([--with-zlib-include=DIR], [zlib headers directory]),
-    [zlib_include="$withval"
-     CPPFLAGS="$CPPFLAGS -I$withval"]
-  )
+    AC_ARG_WITH(zlib-include,
+      AS_HELP_STRING([--with-zlib-include=DIR], [zlib headers directory]),
+      [zlib_include="$withval"
+       CPPFLAGS="$CPPFLAGS -I$withval"]
+    )
 
-  AC_ARG_WITH(zlib-lib,
-    AS_HELP_STRING([--with-zlib-lib=DIR], [zlib library directory]),
-    [zlib_lib="$withval"
-     LDFLAGS="$LDFLAGS -L$withval"]
-  )
+    AC_ARG_WITH(zlib-lib,
+      AS_HELP_STRING([--with-zlib-lib=DIR], [zlib library directory]),
+      [zlib_lib="$withval"
+       LDFLAGS="$LDFLAGS -L$withval"]
+    )
 
-  AC_CHECK_HEADERS(zlib.h,
-    [],
-    [AC_MSG_ERROR("zlib header files not found."); break]
-  )
+    AC_CHECK_HEADERS(zlib.h,
+      [],
+      [AC_MSG_ERROR("zlib header files not found."); break]
+    )
 
-  AC_CHECK_LIB(z, compress2,
-    [LIBS="$LIBS -lz"],
-    [AC_MSG_ERROR("zlib libraries not found.")]
-  )
+    AC_CHECK_LIB(z, compress2,
+      [LIBS="$LIBS -lz"],
+      [AC_MSG_ERROR("zlib libraries not found.")]
+    )
+  ])
 ])
index cf42a3d236b7fd49e250d60042beda76f8c319d2..a438d3e9577e45aefd5ffeabc49d5da1955fe6ce 100644 (file)
@@ -26,7 +26,9 @@
 #include <openssl/pem.h>
 #include <openssl/hmac.h>
 
+#ifdef HAVE_ZLIB
 #include <zlib.h>
+#endif
 
 #ifdef HAVE_LZO
 #include LZO1X_H
@@ -152,7 +154,10 @@ void mtu_probe_h(node_t *n, vpn_packet_t *packet, length_t len) {
 }
 
 static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) {
-       if(level == 10) {
+       if(level == 0) {
+               memcpy(dest, source, len);
+               return len;
+       } else if(level == 10) {
 #ifdef HAVE_LZO
                lzo_uint lzolen = MAXSIZE;
                lzo1x_1_compress(source, len, dest, &lzolen, lzo_wrkmem);
@@ -161,10 +166,12 @@ static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t l
                return -1;
 #endif
        } else if(level < 10) {
+#ifdef HAVE_ZLIB
                unsigned long destlen = MAXSIZE;
                if(compress2(dest, &destlen, source, len, level) == Z_OK)
                        return destlen;
                else
+#endif
                        return -1;
        } else {
 #ifdef HAVE_LZO
@@ -180,7 +187,10 @@ static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t l
 }
 
 static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) {
-       if(level > 9) {
+       if(level == 0) {
+               memcpy(dest, source, len);
+               return len;
+       } else if(level > 9) {
 #ifdef HAVE_LZO
                lzo_uint lzolen = MAXSIZE;
                if(lzo1x_decompress_safe(source, len, dest, &lzolen, NULL) == LZO_E_OK)
@@ -188,14 +198,17 @@ static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t
                else
 #endif
                        return -1;
-       } else {
+       }
+#ifdef HAVE_ZLIB
+       else {
                unsigned long destlen = MAXSIZE;
                if(uncompress(dest, &destlen, source, len) == Z_OK)
                        return destlen;
                else
                        return -1;
        }
-       
+#endif
+
        return -1;
 }