X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/e556f2501b863df05d9c3d58eb0f13358272e6eb..cbd4cbb99cf9e68c67af16b5b20a050ef8819af6:/tcpdump.c diff --git a/tcpdump.c b/tcpdump.c index be9e031b..4903a623 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.151 2000-09-17 04:13:13 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.161 2001-04-30 16:08:43 fenner Exp $ (LBL)"; #endif /* @@ -52,8 +52,6 @@ static const char rcsid[] = #include #include -#include -#include #include "interface.h" #include "addrtoname.h" @@ -100,44 +98,12 @@ struct printer { int type; }; -/* - * This table checks some DLT_* codes as well as checking PCAP_ENCAP_* - * codes, so that those DLT_* codes that aren't the same on all platforms - * (and thus don't have values identical to the values of the corresponding - * PCAP_ENCAP_* codes) are, at least, handled on the platform that wrote - * the capture file. - * - * (This may result in two identical entries in the table, if there's - * a DLT_* code defined to have the same value as the corresponding - * PCAP_ENCAP_* code. Those duplicate entries are harmless.) - */ static struct printer printers[] = { - /* - * PCAP_ENCAP_* codes that correspond to DLT_* codes whose values - * are the same on all platforms (the PCAP_ENCAP_* code values - * are the same as the DLT_* code values). - */ - { null_if_print, PCAP_ENCAP_NULL }, - { ether_if_print, PCAP_ENCAP_ETHERNET }, - { token_if_print, PCAP_ENCAP_TOKEN_RING }, - { sl_if_print, PCAP_ENCAP_SLIP }, - { ppp_if_print, PCAP_ENCAP_PPP }, - { fddi_if_print, PCAP_ENCAP_FDDI }, - - /* - * DLT_* codes that aren't the same on all platforms. - */ -#ifdef DLT_ATM_RFC1483 - { atm_if_print, DLT_ATM_RFC1483 }, -#endif -#ifdef DLT_RAW - { raw_if_print, DLT_RAW }, -#endif -#ifdef DLT_SLIP_BSDOS - { sl_bsdos_if_print, DLT_SLIP_BSDOS }, -#endif -#ifdef DLT_PPP_BSDOS - { ppp_bsdos_if_print, DLT_PPP_BSDOS }, + { arcnet_if_print, DLT_ARCNET }, + { ether_if_print, DLT_EN10MB }, + { token_if_print, DLT_IEEE802 }, +#ifdef DLT_LANE8023 + { lane_if_print, DLT_LANE8023 }, #endif #ifdef DLT_CIP { cip_if_print, DLT_CIP }, @@ -145,21 +111,29 @@ static struct printer printers[] = { #ifdef DLT_ATM_CLIP { cip_if_print, DLT_ATM_CLIP }, #endif -#ifdef DLT_LANE8023 - { lane_if_print, DLT_LANE8023 }, + { sl_if_print, DLT_SLIP }, + { sl_bsdos_if_print, DLT_SLIP_BSDOS }, + { ppp_if_print, DLT_PPP }, + { ppp_bsdos_if_print, DLT_PPP_BSDOS }, + { fddi_if_print, DLT_FDDI }, + { null_if_print, DLT_NULL }, +#ifdef DLT_LOOP + { null_if_print, DLT_LOOP }, +#endif + { raw_if_print, DLT_RAW }, + { atm_if_print, DLT_ATM_RFC1483 }, +#ifdef DLT_C_HDLC + { chdlc_if_print, DLT_C_HDLC }, +#endif +#ifdef DLT_HDLC + { chdlc_if_print, DLT_HDLC }, +#endif +#ifdef DLT_PPP_SERIAL + { ppp_hdlc_if_print, DLT_PPP_SERIAL }, +#endif +#ifdef DLT_LINUX_SLL + { sll_if_print, DLT_LINUX_SLL }, #endif - - /* - * PCAP_ENCAP_* codes corresponding to DLT_* codes that aren't - * necessarily the same on all platforms, and PCAP_ENCAP_* codes - * for which there aren't DLT_* codes. - */ - { atm_if_print, PCAP_ENCAP_ATM_RFC1483 }, - { raw_if_print, PCAP_ENCAP_RAW }, - { sl_bsdos_if_print, PCAP_ENCAP_SLIP_BSDOS }, - { ppp_bsdos_if_print, PCAP_ENCAP_PPP_BSDOS }, - { chdlc_if_print, PCAP_ENCAP_C_HDLC }, - { cip_if_print, PCAP_ENCAP_ATM_CLIP }, { NULL, 0 }, }; @@ -402,9 +376,12 @@ main(int argc, char **argv) if (device == NULL) error("%s", ebuf); } + *ebuf = '\0'; pd = pcap_open_live(device, snaplen, !pflag, 1000, ebuf); if (pd == NULL) error("%s", ebuf); + else if (*ebuf) + warning("%s", ebuf); i = pcap_snapshot(pd); if (snaplen < i) { warning("snaplen raised from %d to %d", snaplen, i);