From 9d6bbd292aecc232ca0d393b829eccbaba506f18 Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org" Date: Fri, 11 Nov 2005 17:07:37 +0000 Subject: - use local copy of nfnetlink_log.h instead of kernel include file - bump version number to 0.0.11 --- configure.in | 45 +------------ include/libnetfilter_log/Makefile.am | 2 +- include/libnetfilter_log/libnetfilter_log.h | 3 +- include/libnetfilter_log/linux_nfnetlink_log.h | 92 ++++++++++++++++++++++++++ src/libnetfilter_log.c | 3 + 5 files changed, 99 insertions(+), 46 deletions(-) create mode 100644 include/libnetfilter_log/linux_nfnetlink_log.h diff --git a/configure.in b/configure.in index 1f36f0d..ed428e8 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ AC_INIT AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(libnetfilter_log, 0.0.10) +AM_INIT_AUTOMAKE(libnetfilter_log, 0.0.11) AC_PROG_CC AM_PROG_LIBTOOL @@ -19,48 +19,7 @@ case $target in esac AC_CHECK_LIB([nfnetlink], [nfnl_listen]) - - - -dnl-------------------------------- - -AC_DEFUN([NF_KERNEL_SOURCE],[ - - if test "$with_kernel" = ""; then - KERNEL="`uname -r`" - else - KERNEL="$with_kernel" - fi - - THIS_PREFIX="" - for i in "/lib/modules/$KERNEL/build/include" "$KERNEL" "$KERNEL/include" "/usr/src/linux-$KERNEL" "/usr/src/kernel-$KERNEL" "/usr/src/linux-headers-$KERNEL" "/usr/src/kernel-headers-$KERNEL" - do - AC_MSG_CHECKING([Looking for kernel source or headers in $i]) - if test -r "$i/linux/config.h" - then - THIS_PREFIX="$i" - AC_MSG_RESULT([found]) - break - fi - AC_MSG_RESULT([ ]) - done - if test -r "$THIS_PREFIX/linux/config.h" ; then - AC_SUBST(KERNELDIR,[$THIS_PREFIX]) - AC_MSG_RESULT([found]) - else - AC_MSG_ERROR([not found $THIS_PREFIX]) - fi - - # somehow add this as an include path -]) - -AC_ARG_WITH(kernel, - AC_HELP_STRING([--with-kernel=DIR], - [ Show location of kernel source. Default is to use uname -r and look in /lib/modules/KERNEL/build/include. ]), - NF_KERNEL_SOURCE($with_kernel),NF_KERNEL_SOURCE()) - -dnl-------------------------------- - +AC_CHECK_HEADER([libnfnetlink/linux_nfnetlink.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnfnetlink 0.0.12 or later needed])]) dnl Output the makefile AC_OUTPUT(Makefile src/Makefile include/Makefile include/libnetfilter_log/Makefile utils/Makefile) diff --git a/include/libnetfilter_log/Makefile.am b/include/libnetfilter_log/Makefile.am index c182ac7..fe934f1 100644 --- a/include/libnetfilter_log/Makefile.am +++ b/include/libnetfilter_log/Makefile.am @@ -1,3 +1,3 @@ -pkginclude_HEADERS = libnetfilter_log.h libipulog.h +pkginclude_HEADERS = libnetfilter_log.h libipulog.h linux_nfnetlink_log.h diff --git a/include/libnetfilter_log/libnetfilter_log.h b/include/libnetfilter_log/libnetfilter_log.h index 0629180..99e9402 100644 --- a/include/libnetfilter_log/libnetfilter_log.h +++ b/include/libnetfilter_log/libnetfilter_log.h @@ -9,8 +9,7 @@ #ifndef __LIBNETFILTER_LOG_H #define __LIBNETFILTER_LOG_H -#include -#include +#include struct nflog_handle; struct nflog_g_handle; diff --git a/include/libnetfilter_log/linux_nfnetlink_log.h b/include/libnetfilter_log/linux_nfnetlink_log.h new file mode 100644 index 0000000..f52cb2f --- /dev/null +++ b/include/libnetfilter_log/linux_nfnetlink_log.h @@ -0,0 +1,92 @@ +#ifndef _NFNETLINK_LOG_H +#define _NFNETLINK_LOG_H + +/* This file describes the netlink messages (i.e. 'protocol packets'), + * and not any kind of function definitions. It is shared between kernel and + * userspace. Don't put kernel specific stuff in here */ + +#include +#include + +#ifndef aligned_u64 +#define aligned_u64 unsigned long long __attribute__((aligned(8))) +#endif + +enum nfulnl_msg_types { + NFULNL_MSG_PACKET, /* packet from kernel to userspace */ + NFULNL_MSG_CONFIG, /* connect to a particular queue */ + + NFULNL_MSG_MAX +}; + +struct nfulnl_msg_packet_hdr { + u_int16_t hw_protocol; /* hw protocol (network order) */ + u_int8_t hook; /* netfilter hook */ + u_int8_t _pad; +} __attribute__ ((packed)); + +struct nfulnl_msg_packet_hw { + u_int16_t hw_addrlen; + u_int16_t _pad; + u_int8_t hw_addr[8]; +} __attribute__ ((packed)); + +struct nfulnl_msg_packet_timestamp { + aligned_u64 sec; + aligned_u64 usec; +} __attribute__ ((packed)); + +#define NFULNL_PREFIXLEN 30 /* just like old log target */ + +enum nfulnl_attr_type { + NFULA_UNSPEC, + NFULA_PACKET_HDR, + NFULA_MARK, /* u_int32_t nfmark */ + NFULA_TIMESTAMP, /* nfulnl_msg_packet_timestamp */ + NFULA_IFINDEX_INDEV, /* u_int32_t ifindex */ + NFULA_IFINDEX_OUTDEV, /* u_int32_t ifindex */ + NFULA_IFINDEX_PHYSINDEV, /* u_int32_t ifindex */ + NFULA_IFINDEX_PHYSOUTDEV, /* u_int32_t ifindex */ + NFULA_HWADDR, /* nfulnl_msg_packet_hw */ + NFULA_PAYLOAD, /* opaque data payload */ + NFULA_PREFIX, /* string prefix */ + NFULA_UID, /* user id of socket */ + + __NFULA_MAX +}; +#define NFULA_MAX (__NFULA_MAX - 1) + +enum nfulnl_msg_config_cmds { + NFULNL_CFG_CMD_NONE, + NFULNL_CFG_CMD_BIND, + NFULNL_CFG_CMD_UNBIND, + NFULNL_CFG_CMD_PF_BIND, + NFULNL_CFG_CMD_PF_UNBIND, +}; + +struct nfulnl_msg_config_cmd { + u_int8_t command; /* nfulnl_msg_config_cmds */ +} __attribute__ ((packed)); + +struct nfulnl_msg_config_mode { + u_int32_t copy_range; + u_int8_t copy_mode; + u_int8_t _pad; +} __attribute__ ((packed)); + +enum nfulnl_attr_config { + NFULA_CFG_UNSPEC, + NFULA_CFG_CMD, /* nfulnl_msg_config_cmd */ + NFULA_CFG_MODE, /* nfulnl_msg_config_mode */ + NFULA_CFG_NLBUFSIZ, /* u_int32_t buffer size */ + NFULA_CFG_TIMEOUT, /* u_int32_t in 1/100 s */ + NFULA_CFG_QTHRESH, /* u_int32_t */ + __NFULA_CFG_MAX +}; +#define NFULA_CFG_MAX (__NFULA_CFG_MAX -1) + +#define NFULNL_COPY_NONE 0x00 +#define NFULNL_COPY_META 0x01 +#define NFULNL_COPY_PACKET 0x02 + +#endif /* _NFNETLINK_LOG_H */ diff --git a/src/libnetfilter_log.c b/src/libnetfilter_log.c index 45d4b13..dd56cdd 100644 --- a/src/libnetfilter_log.c +++ b/src/libnetfilter_log.c @@ -25,6 +25,9 @@ #include #include #include + +#include + #include #include -- cgit v1.2.3