]> 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.
@@ -6,7 +6,7 @@ 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)
 
@@ -482,6 +482,8 @@ AC_LBL_TYPE_SIGNAL
 
 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
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[] =
-    "@(#) $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
 
 /*
@@ -107,7 +107,9 @@ static struct printer printers[] = {
 #ifdef DLT_CIP
        { cip_if_print,         DLT_CIP },
 #endif
+#ifdef 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 },
@@ -116,8 +118,12 @@ static struct printer printers[] = {
        { 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 },
+#endif
+#ifdef DLT_PPP_SERIAL
        { ppp_hdlc_if_print,    DLT_PPP_SERIAL },
+#endif
        { NULL,                 0 },
 };