AC_DEFUN([tinc_LZO],
[
- AC_ARG_WITH(lzo,
- AS_HELP_STRING([--with-lzo=DIR], [lzo base directory, or:]),
- [lzo="$withval"
- CPPFLAGS="$CPPFLAGS -I$withval/include"
- LDFLAGS="$LDFLAGS -L$withval/lib"]
- )
+ AC_ARG_ENABLE([lzo],
+ AS_HELP_STRING([--disable-lzo], [disable lzo compression support]))
+ AS_IF([test "x$enable_lzo" != "xno"], [
+ AC_DEFINE(HAVE_LZO, 1, [enable lzo compression support])
+ AC_ARG_WITH(lzo,
+ AS_HELP_STRING([--with-lzo=DIR], [lzo base directory, or:]),
+ [lzo="$withval"
+ CPPFLAGS="$CPPFLAGS -I$withval/include"
+ LDFLAGS="$LDFLAGS -L$withval/lib"]
+ )
- AC_ARG_WITH(lzo-include,
- AS_HELP_STRING([--with-lzo-include=DIR], [lzo headers directory]),
- [lzo_include="$withval"
- CPPFLAGS="$CPPFLAGS -I$withval"]
- )
+ AC_ARG_WITH(lzo-include,
+ AS_HELP_STRING([--with-lzo-include=DIR], [lzo headers directory]),
+ [lzo_include="$withval"
+ CPPFLAGS="$CPPFLAGS -I$withval"]
+ )
- AC_ARG_WITH(lzo-lib,
- AS_HELP_STRING([--with-lzo-lib=DIR], [lzo library directory]),
- [lzo_lib="$withval"
- LDFLAGS="$LDFLAGS -L$withval"]
- )
+ AC_ARG_WITH(lzo-lib,
+ AS_HELP_STRING([--with-lzo-lib=DIR], [lzo library directory]),
+ [lzo_lib="$withval"
+ LDFLAGS="$LDFLAGS -L$withval"]
+ )
- AC_CHECK_LIB(lzo2, lzo1x_1_compress,
- [LIBS="$LIBS -llzo2"],
- [AC_CHECK_LIB(lzo, lzo1x_1_compress,
- [LIBS="$LIBS -llzo"],
- [AC_MSG_ERROR("lzo libraries not found."); break]
- )]
- )
+ AC_CHECK_LIB(lzo2, lzo1x_1_compress,
+ [LIBS="$LIBS -llzo2"],
+ [AC_CHECK_LIB(lzo, lzo1x_1_compress,
+ [LIBS="$LIBS -llzo"],
+ [AC_MSG_ERROR("lzo libraries not found."); break]
+ )]
+ )
- AC_CHECK_HEADERS(lzo/lzo1x.h,
- [AC_DEFINE(LZO1X_H, [<lzo/lzo1x.h>], [Location of lzo1x.h])],
- [AC_CHECK_HEADERS(lzo2/lzo1x.h,
- [AC_DEFINE(LZO1X_H, [<lzo2/lzo1x.h>], [Location of lzo1x.h])],
- [AC_CHECK_HEADERS(lzo1x.h,
- [AC_DEFINE(LZO1X_H, [<lzo1x.h>], [Location of lzo1x.h])],
- [AC_MSG_ERROR("lzo header files not found."); break]
+ AC_CHECK_HEADERS(lzo/lzo1x.h,
+ [AC_DEFINE(LZO1X_H, [<lzo/lzo1x.h>], [Location of lzo1x.h])],
+ [AC_CHECK_HEADERS(lzo2/lzo1x.h,
+ [AC_DEFINE(LZO1X_H, [<lzo2/lzo1x.h>], [Location of lzo1x.h])],
+ [AC_CHECK_HEADERS(lzo1x.h,
+ [AC_DEFINE(LZO1X_H, [<lzo1x.h>], [Location of lzo1x.h])],
+ [AC_MSG_ERROR("lzo header files not found."); break]
+ )]
)]
- )]
- )
+ )
+ ])
])
#include <openssl/hmac.h>
#include <zlib.h>
+
+#ifdef HAVE_LZO
#include LZO1X_H
+#endif
#include "avl_tree.h"
#include "conf.h"
int keylifetime = 0;
int keyexpires = 0;
+#ifdef HAVE_LZO
static char lzo_wrkmem[LZO1X_999_MEM_COMPRESS > LZO1X_1_MEM_COMPRESS ? LZO1X_999_MEM_COMPRESS : LZO1X_1_MEM_COMPRESS];
+#endif
static void send_udppacket(node_t *, vpn_packet_t *);
static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) {
if(level == 10) {
+#ifdef HAVE_LZO
lzo_uint lzolen = MAXSIZE;
lzo1x_1_compress(source, len, dest, &lzolen, lzo_wrkmem);
return lzolen;
+#else
+ return -1;
+#endif
} else if(level < 10) {
unsigned long destlen = MAXSIZE;
if(compress2(dest, &destlen, source, len, level) == Z_OK)
else
return -1;
} else {
+#ifdef HAVE_LZO
lzo_uint lzolen = MAXSIZE;
lzo1x_999_compress(source, len, dest, &lzolen, lzo_wrkmem);
return lzolen;
+#else
+ return -1;
+#endif
}
return -1;
static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) {
if(level > 9) {
+#ifdef HAVE_LZO
lzo_uint lzolen = MAXSIZE;
if(lzo1x_decompress_safe(source, len, dest, &lzolen, NULL) == LZO_E_OK)
return lzolen;
else
+#endif
return -1;
} else {
unsigned long destlen = MAXSIZE;