Browse Source

add checks for netfilter's headers

pull/140/head
Max Lv 10 years ago
parent
commit
e3e9018f37
4 changed files with 60 additions and 0 deletions
  1. 10
      config.h.in
  2. 29
      configure
  3. 17
      configure.ac
  4. 4
      src/redir.c

10
config.h.in

@ -79,6 +79,16 @@
/* Define to 1 if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define to 1 if you have the <linux/if.h> header file. */
#undef HAVE_LINUX_IF_H
/* Define to 1 if you have the <linux/netfilter_ipv4.h> header file. */
#undef HAVE_LINUX_NETFILTER_IPV4_H
/* Define to 1 if you have the <linux/netfilter_ipv6/ip6_tables.h> header
file. */
#undef HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H

29
configure

@ -13290,6 +13290,35 @@ else
as_fn_error $? "Missing MinGW headers" "$LINENO" 5
fi
done
;;
*-linux*)
for ac_header in linux/if.h linux/netfilter_ipv4.h linux/netfilter_ipv6/ip6_tables.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
#if HAVE_LIMITS_H
#include <limits.h>
#endif
/* Netfilter ip(6)tables v1.4.0 has broken headers */
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_LINUX_IF_H
#include <net/if.h>
#endif
"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
else
as_fn_error $? "Missing netfilter headers" "$LINENO" 5
fi
done
;;

17
configure.ac

@ -119,6 +119,23 @@ case $host in
*-mingw*)
AC_CHECK_HEADERS([windows.h winsock2.h ws2tcpip.h], [], [AC_MSG_ERROR([Missing MinGW headers])], [])
;;
*-linux*)
dnl Checks for netfilter headers
AC_CHECK_HEADERS([linux/if.h linux/netfilter_ipv4.h linux/netfilter_ipv6/ip6_tables.h],
[], [AC_MSG_ERROR([Missing netfilter headers])],
[[
#if HAVE_LIMITS_H
#include <limits.h>
#endif
/* Netfilter ip(6)tables v1.4.0 has broken headers */
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_LINUX_IF_H
#include <net/if.h>
#endif
]])
;;
*)
# These are POSIX-like systems using BSD-like sockets API.
;;

4
src/redir.c

@ -60,6 +60,10 @@
#define BUF_SIZE 2048
#endif
#ifndef IP6T_SO_ORIGINAL_DST
#define IP6T_SO_ORIGINAL_DST 80
#endif
int getdestaddr(int fd, struct sockaddr_storage *destaddr)
{
socklen_t socklen = sizeof(*destaddr);

Loading…
Cancel
Save