X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/cf53dc05f1c854cc8cb94afd3409bbf033a055ed..cbd4cbb99cf9e68c67af16b5b20a050ef8819af6:/tcpdump.c?ds=sidebyside diff --git a/tcpdump.c b/tcpdump.c index b2f19729..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.154 2000-09-29 04:58:53 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.161 2001-04-30 16:08:43 fenner Exp $ (LBL)"; #endif /* @@ -98,45 +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, or that - * aren't present 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 }, @@ -144,25 +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 - - /* - * 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 }, - { ppp_hdlc_if_print, PCAP_ENCAP_PPP_HDLC }, +#ifdef DLT_LINUX_SLL + { sll_if_print, DLT_LINUX_SLL }, +#endif { NULL, 0 }, }; @@ -405,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);