Hi, the attached makes libpcap and tcpdump use pfvar.h/if_pflog.h from the host system (if available) - which is what most people will want[*]. Tested with OpenBSD 4.1 and FreeBSD where I'm in the progress of doing an update to pf which will break the header format - hence the interest in this.
Is this something that can be included? Thanks in advance. [*] While pflog pcap files have their use too, it's not that helpful either as the header format is different everywhere anyhow. So people who need to look at pcaps at a different host need to jump through hoops already. I can also submit an update for pf.h, but that would break backward compat. Also, NetBSD and DragonflyBSD are using the even older format still - afaik. So this is broken already. -- /"\ Best regards, | [EMAIL PROTECTED] \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | [EMAIL PROTECTED] / \ ASCII Ribbon Campaign | Against HTML Mail and News
? autom4te.cache
Index: config.h.in
===================================================================
RCS file: /tcpdump/master/libpcap/config.h.in,v
retrieving revision 1.28
diff -u -r1.28 config.h.in
--- config.h.in 15 Jun 2007 17:56:30 -0000 1.28
+++ config.h.in 29 Jun 2007 20:06:43 -0000
@@ -50,6 +50,9 @@
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
+/* Define to 1 if you have the <net/pfvar.h> header file. */
+#undef HAVE_NET_PFVAR_H
+
/* Define to 1 if you have the <netinet/ether.h> header file. */
#undef HAVE_NETINET_ETHER_H
Index: configure
===================================================================
RCS file: /tcpdump/master/libpcap/configure,v
retrieving revision 1.77
diff -u -r1.77 configure
--- configure 15 Jun 2007 17:56:30 -0000 1.77
+++ configure 29 Jun 2007 20:06:46 -0000
@@ -3669,6 +3669,70 @@
done
+
+for ac_header in net/pfvar.h net/if_pflog.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in netinet/if_ether.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
Index: configure.in
===================================================================
RCS file: /tcpdump/master/libpcap/configure.in,v
retrieving revision 1.136
diff -u -r1.136 configure.in
--- configure.in 15 Jun 2007 17:55:50 -0000 1.136
+++ configure.in 29 Jun 2007 20:06:47 -0000
@@ -27,6 +27,9 @@
dnl "AC_LBL_FIXINCLUDES" won't work on some platforms such as Solaris.
dnl
AC_CHECK_HEADERS(sys/ioccom.h sys/sockio.h limits.h paths.h)
+AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>])
AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include <sys/types.h>
#include <sys/socket.h>])
if test "$ac_cv_header_netinet_if_ether_h" != yes; then
Index: gencode.c
===================================================================
RCS file: /tcpdump/master/libpcap/gencode.c,v
retrieving revision 1.284
diff -u -r1.284 gencode.c
--- gencode.c 22 Jun 2007 06:32:06 -0000 1.284
+++ gencode.c 29 Jun 2007 20:06:49 -0000
@@ -73,7 +73,14 @@
#include "ppp.h"
#include "pcap/sll.h"
#include "arcnet.h"
+#ifdef HAVE_NET_PFVAR_H
+#include <sys/socket.h>
+#include <net/if.h>
+#include <net/pfvar.h>
+#include <net/if_pflog.h>
+#else
#include "pf.h"
+#endif
#ifndef offsetof
#define offsetof(s, e) ((size_t)&((s *)0)->e)
#endif
Index: grammar.y
===================================================================
RCS file: /tcpdump/master/libpcap/grammar.y,v
retrieving revision 1.97
diff -u -r1.97 grammar.y
--- grammar.y 11 Jun 2007 10:04:25 -0000 1.97
+++ grammar.y 29 Jun 2007 20:06:49 -0000
@@ -52,7 +52,13 @@
#include "pcap-int.h"
#include "gencode.h"
+#ifdef HAVE_NET_PFVAR_H
+#include <net/if.h>
+#include <net/pfvar.h>
+#include <net/if_pflog.h>
+#else
#include "pf.h"
+#endif
#include "ieee80211.h"
#include <pcap/namedb.h>
Index: config.h.in
===================================================================
RCS file: /tcpdump/master/tcpdump/config.h.in,v
retrieving revision 1.65
diff -u -r1.65 config.h.in
--- config.h.in 3 Jun 2005 22:08:52 -0000 1.65
+++ config.h.in 29 Jun 2007 20:06:26 -0000
@@ -175,6 +175,9 @@
/* Define to 1 if you have the <netdnet/dnetdb.h> header file. */
#undef HAVE_NETDNET_DNETDB_H
+/* Define to 1 if you have the <net/pfvar.h> header file. */
+#undef HAVE_NET_PFVAR_H
+
/* Define to 1 if you have the <netinet/ether.h> header file. */
#undef HAVE_NETINET_ETHER_H
Index: configure
===================================================================
RCS file: /tcpdump/master/tcpdump/configure,v
retrieving revision 1.146
diff -u -r1.146 configure
--- configure 8 Nov 2005 02:59:40 -0000 1.146
+++ configure 29 Jun 2007 20:06:31 -0000
@@ -3428,6 +3428,69 @@
done
+for ac_header in net/pfvar.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in netinet/if_ether.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
Index: configure.in
===================================================================
RCS file: /tcpdump/master/tcpdump/configure.in,v
retrieving revision 1.195
diff -u -r1.195 configure.in
--- configure.in 21 Sep 2005 16:48:00 -0000 1.195
+++ configure.in 29 Jun 2007 20:06:32 -0000
@@ -16,6 +16,9 @@
AC_LBL_C_INLINE
AC_C___ATTRIBUTE__
AC_CHECK_HEADERS(fcntl.h rpc/rpcent.h netdnet/dnetdb.h)
+AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>])
AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include <sys/types.h>
#include <sys/socket.h>])
if test "$ac_cv_header_netinet_if_ether_h" != yes; then
Index: print-pflog.c
===================================================================
RCS file: /tcpdump/master/tcpdump/print-pflog.c,v
retrieving revision 1.15
diff -u -r1.15 print-pflog.c
--- print-pflog.c 25 Oct 2006 22:13:10 -0000 1.15
+++ print-pflog.c 29 Jun 2007 20:06:32 -0000
@@ -28,6 +28,16 @@
#include "config.h"
#endif
+#ifdef HAVE_NET_PFVAR_H
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <net/pfvar.h>
+#include <net/if_pflog.h>
+#else
+#include "pf.h"
+#endif
+
#include <tcpdump-stdinc.h>
#include <stdio.h>
@@ -35,7 +45,6 @@
#include "interface.h"
#include "addrtoname.h"
-#include "pf.h"
static struct tok pf_reasons[] = {
{ 0, "0(match)" },
pgpEaQDF4Q1c6.pgp
Description: PGP signature
