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)" },

Attachment: pgpEaQDF4Q1c6.pgp
Description: PGP signature

Reply via email to