X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/d85ca877ea45309df03744f25e60d105c3054ba3..cbd4cbb99cf9e68c67af16b5b20a050ef8819af6:/tcpdump.c diff --git a/tcpdump.c b/tcpdump.c index 78fbaffa..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.148 2000-06-18 11:12:06 assar 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" @@ -90,7 +88,7 @@ int32_t thiszone; /* seconds offset from gmt to local time */ /* Forwards */ static RETSIGTYPE cleanup(int); -extern __dead void usage(void) __attribute__((volatile)); +static void usage(void) __attribute__((noreturn)); /* Length of saved portion of packet. */ int snaplen = DEFAULT_SNAPLEN; @@ -101,13 +99,17 @@ struct printer { }; static struct printer printers[] = { + { arcnet_if_print, DLT_ARCNET }, { ether_if_print, DLT_EN10MB }, - { ether_if_print, DLT_IEEE802 }, + { token_if_print, DLT_IEEE802 }, #ifdef DLT_LANE8023 { lane_if_print, DLT_LANE8023 }, #endif #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 }, @@ -115,10 +117,22 @@ static struct printer printers[] = { { 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_CHDLC - { chdlc_if_print, DLT_CHDLC }, +#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 { NULL, 0 }, }; @@ -132,7 +146,7 @@ lookup_printer(int type) if (type == p->type) return p->f; - error("unknown data link type 0x%x", type); + error("unknown data link type %d", type); /* NOTREACHED */ } @@ -362,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); @@ -483,7 +500,7 @@ default_print(register const u_char *bp, register u_int length) default_print_unaligned(bp, length); } -__dead void +static void usage(void) { extern char version[];