From: fenner Date: Sat, 9 Dec 2000 02:58:45 +0000 (+0000) Subject: Allow tcpdump to work with earlier libpcaps. X-Git-Tag: tcpdump-3.5.1~47 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/f5c79aedbe9c52dad10a196d805718f55a2be17a Allow tcpdump to work with earlier libpcaps. (Tested with libpcap-0.4 as comes with FreeBSD 3.4) --- diff --git a/bpf_dump.c b/bpf_dump.c new file mode 100644 index 00000000..79ad5bb7 --- /dev/null +++ b/bpf_dump.c @@ -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 +#include + +#include +#include + +#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)); + } +} diff --git a/configure.in b/configure.in index 6fb7c4ad..4b7e10a8 100644 --- a/configure.in +++ b/configure.in @@ -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 diff --git a/tcpdump.c b/tcpdump.c index 08679394..566ec898 100644 --- 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 }, };