]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Allow tcpdump to work with earlier libpcaps.
authorfenner <fenner>
Sat, 9 Dec 2000 02:58:45 +0000 (02:58 +0000)
committerfenner <fenner>
Sat, 9 Dec 2000 02:58:45 +0000 (02:58 +0000)
(Tested with libpcap-0.4 as comes with FreeBSD 3.4)

bpf_dump.c [new file with mode: 0644]
configure.in
tcpdump.c

diff --git a/bpf_dump.c b/bpf_dump.c
new file mode 100644 (file)
index 0000000..79ad5bb
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 1992, 1993, 1994, 1995, 1996
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (2)
+ * distributions including binary code include the above copyright notice and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials mentioning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of California,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+#ifndef lint
+static const char rcsid[] =
+    "@(#) $Header: /tcpdump/master/tcpdump/bpf_dump.c,v 1.13 2000-12-09 02:58:45 fenner Exp $ (LBL)";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include <pcap.h>
+#include <stdio.h>
+
+#include "interface.h"
+
+void
+bpf_dump(struct bpf_program *p, int option)
+{
+       struct bpf_insn *insn;
+       int i;
+       int n = p->bf_len;
+
+       insn = p->bf_insns;
+       if (option > 2) {
+               printf("%d\n", n);
+               for (i = 0; i < n; ++insn, ++i) {
+                       printf("%u %u %u %u\n", insn->code,
+                              insn->jt, insn->jf, insn->k);
+               }
+               return ;
+       }
+       if (option > 1) {
+               for (i = 0; i < n; ++insn, ++i)
+                       printf("{ 0x%x, %d, %d, 0x%08x },\n",
+                              insn->code, insn->jt, insn->jf, insn->k);
+               return;
+       }
+       for (i = 0; i < n; ++insn, ++i) {
+#ifdef BDEBUG
+               extern int bids[];
+               printf(bids[i] > 0 ? "[%02d]" : " -- ", bids[i] - 1);
+#endif
+               puts(bpf_image(insn, i));
+       }
+}
index 6fb7c4aded00d6709d363b5c0abd534068573ea6..4b7e10a8b5fb987a72233c1bb9d275d8a9e9e760 100644 (file)
@@ -1,4 +1,4 @@
-dnl @(#) $Header: /tcpdump/master/tcpdump/configure.in,v 1.129 2000-10-24 00:56:49 fenner Exp $ (LBL)
+dnl @(#) $Header: /tcpdump/master/tcpdump/configure.in,v 1.130 2000-12-09 02:58:47 fenner Exp $ (LBL)
 dnl
 dnl Copyright (c) 1994, 1995, 1996, 1997
 dnl    The Regents of the University of California.  All rights reserved.
 dnl
 dnl Copyright (c) 1994, 1995, 1996, 1997
 dnl    The Regents of the University of California.  All rights reserved.
@@ -6,7 +6,7 @@ dnl
 dnl Process this file with autoconf to produce a configure script.
 dnl
 
 dnl Process this file with autoconf to produce a configure script.
 dnl
 
-AC_REVISION($Revision: 1.129 $)
+AC_REVISION($Revision: 1.130 $)
 AC_PREREQ(2.13)
 AC_INIT(tcpdump.c)
 
 AC_PREREQ(2.13)
 AC_INIT(tcpdump.c)
 
@@ -482,6 +482,8 @@ AC_LBL_TYPE_SIGNAL
 
 AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS)
 
 
 AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS)
 
+AC_REPLACE_FUNCS(bpf_dump)     dnl moved to libpcap in 0.6
+
 V_GROUP=0
 if test -f /etc/group -a ! -z "`grep '^wheel:' /etc/group`" ; then
        V_GROUP=wheel
 V_GROUP=0
 if test -f /etc/group -a ! -z "`grep '^wheel:' /etc/group`" ; then
        V_GROUP=wheel
index 086793949749bb4616dbee592b026d6fd8fe1ceb..566ec89893c97cb25147a78baaf4adf8b1adb529 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -24,7 +24,7 @@ static const char copyright[] =
     "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997\n\
 The Regents of the University of California.  All rights reserved.\n";
 static const char rcsid[] =
     "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997\n\
 The Regents of the University of California.  All rights reserved.\n";
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.155 2000-10-12 03:57:13 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.156 2000-12-09 02:58:48 fenner Exp $ (LBL)";
 #endif
 
 /*
 #endif
 
 /*
@@ -107,7 +107,9 @@ static struct printer printers[] = {
 #ifdef DLT_CIP
        { cip_if_print,         DLT_CIP },
 #endif
 #ifdef DLT_CIP
        { cip_if_print,         DLT_CIP },
 #endif
+#ifdef DLT_ATM_CLIP
        { cip_if_print,         DLT_ATM_CLIP },
        { cip_if_print,         DLT_ATM_CLIP },
+#endif
        { sl_if_print,          DLT_SLIP },
        { sl_bsdos_if_print,    DLT_SLIP_BSDOS },
        { ppp_if_print,         DLT_PPP },
        { sl_if_print,          DLT_SLIP },
        { sl_bsdos_if_print,    DLT_SLIP_BSDOS },
        { ppp_if_print,         DLT_PPP },
@@ -116,8 +118,12 @@ static struct printer printers[] = {
        { null_if_print,        DLT_NULL },
        { raw_if_print,         DLT_RAW },
        { atm_if_print,         DLT_ATM_RFC1483 },
        { null_if_print,        DLT_NULL },
        { raw_if_print,         DLT_RAW },
        { atm_if_print,         DLT_ATM_RFC1483 },
+#ifdef DLT_C_HDLC
        { chdlc_if_print,       DLT_C_HDLC },
        { chdlc_if_print,       DLT_C_HDLC },
+#endif
+#ifdef DLT_PPP_SERIAL
        { ppp_hdlc_if_print,    DLT_PPP_SERIAL },
        { ppp_hdlc_if_print,    DLT_PPP_SERIAL },
+#endif
        { NULL,                 0 },
 };
 
        { NULL,                 0 },
 };