Add --disable-zlib configure option

This commit is contained in:
Timothy Redaelli 2010-02-10 14:52:15 +01:00 committed by Guus Sliepen
parent eeb505af36
commit ddb8cb0779
2 changed files with 46 additions and 28 deletions

View file

@ -2,32 +2,37 @@ dnl Check to find the zlib headers/libraries
AC_DEFUN([tinc_ZLIB], AC_DEFUN([tinc_ZLIB],
[ [
AC_ARG_WITH(zlib, AC_ARG_ENABLE([zlib],
AS_HELP_STRING([--with-zlib=DIR], [zlib base directory, or:]), AS_HELP_STRING([--disable-zlib], [disable zlib compression support]))
[zlib="$withval" AS_IF([test "x$enable_zlib" != "xno"], [
CPPFLAGS="$CPPFLAGS -I$withval/include" AC_DEFINE(HAVE_ZLIB, 1, [have zlib compression support])
LDFLAGS="$LDFLAGS -L$withval/lib"] 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, AC_ARG_WITH(zlib-include,
AS_HELP_STRING([--with-zlib-include=DIR], [zlib headers directory]), AS_HELP_STRING([--with-zlib-include=DIR], [zlib headers directory]),
[zlib_include="$withval" [zlib_include="$withval"
CPPFLAGS="$CPPFLAGS -I$withval"] CPPFLAGS="$CPPFLAGS -I$withval"]
) )
AC_ARG_WITH(zlib-lib, AC_ARG_WITH(zlib-lib,
AS_HELP_STRING([--with-zlib-lib=DIR], [zlib library directory]), AS_HELP_STRING([--with-zlib-lib=DIR], [zlib library directory]),
[zlib_lib="$withval" [zlib_lib="$withval"
LDFLAGS="$LDFLAGS -L$withval"] LDFLAGS="$LDFLAGS -L$withval"]
) )
AC_CHECK_HEADERS(zlib.h, AC_CHECK_HEADERS(zlib.h,
[], [],
[AC_MSG_ERROR("zlib header files not found."); break] [AC_MSG_ERROR("zlib header files not found."); break]
) )
AC_CHECK_LIB(z, compress2, AC_CHECK_LIB(z, compress2,
[LIBS="$LIBS -lz"], [LIBS="$LIBS -lz"],
[AC_MSG_ERROR("zlib libraries not found.")] [AC_MSG_ERROR("zlib libraries not found.")]
) )
])
]) ])

View file

@ -26,7 +26,9 @@
#include <openssl/pem.h> #include <openssl/pem.h>
#include <openssl/hmac.h> #include <openssl/hmac.h>
#ifdef HAVE_ZLIB
#include <zlib.h> #include <zlib.h>
#endif
#ifdef HAVE_LZO #ifdef HAVE_LZO
#include LZO1X_H #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) { 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 #ifdef HAVE_LZO
lzo_uint lzolen = MAXSIZE; lzo_uint lzolen = MAXSIZE;
lzo1x_1_compress(source, len, dest, &lzolen, lzo_wrkmem); 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; return -1;
#endif #endif
} else if(level < 10) { } else if(level < 10) {
#ifdef HAVE_ZLIB
unsigned long destlen = MAXSIZE; unsigned long destlen = MAXSIZE;
if(compress2(dest, &destlen, source, len, level) == Z_OK) if(compress2(dest, &destlen, source, len, level) == Z_OK)
return destlen; return destlen;
else else
#endif
return -1; return -1;
} else { } else {
#ifdef HAVE_LZO #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) { 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 #ifdef HAVE_LZO
lzo_uint lzolen = MAXSIZE; lzo_uint lzolen = MAXSIZE;
if(lzo1x_decompress_safe(source, len, dest, &lzolen, NULL) == LZO_E_OK) 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 else
#endif #endif
return -1; return -1;
} else { }
#ifdef HAVE_ZLIB
else {
unsigned long destlen = MAXSIZE; unsigned long destlen = MAXSIZE;
if(uncompress(dest, &destlen, source, len) == Z_OK) if(uncompress(dest, &destlen, source, len) == Z_OK)
return destlen; return destlen;
else else
return -1; return -1;
} }
#endif
return -1; return -1;
} }