]> The Tcpdump Group git mirrors - tcpdump/blobdiff - tcpdump.c
don't pass on src & dst MAC adresses to the isoclns decoder as MAC adresses
[tcpdump] / tcpdump.c
index d596dbe846cfe5d81ed836ad8e3a1efb1985ea5e..fcf5be8e4640241b01c8283e0be22911c7fffdad 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -30,7 +30,7 @@ static const char copyright[] =
     "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\
 The Regents of the University of California.  All rights reserved.\n";
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.197 2003-01-07 09:51:20 hannes Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.207 2003-05-22 16:33:07 hannes Exp $ (LBL)";
 #endif
 
 /*
@@ -132,6 +132,9 @@ struct printer {
 
 static struct printer printers[] = {
        { arcnet_if_print,      DLT_ARCNET },
+#ifdef DLT_ARCNET_LINUX
+       { arcnet_linux_if_print, DLT_ARCNET_LINUX },
+#endif
        { ether_if_print,       DLT_EN10MB },
        { token_if_print,       DLT_IEEE802 },
 #ifdef DLT_LANE8023
@@ -144,9 +147,13 @@ static struct printer printers[] = {
        { cip_if_print,         DLT_ATM_CLIP },
 #endif
        { sl_if_print,          DLT_SLIP },
+#ifdef DLT_SLIP_BSDOS
        { sl_bsdos_if_print,    DLT_SLIP_BSDOS },
+#endif
        { ppp_if_print,         DLT_PPP },
+#ifdef DLT_PPP_BSDOS
        { ppp_bsdos_if_print,   DLT_PPP_BSDOS },
+#endif
        { fddi_if_print,        DLT_FDDI },
        { null_if_print,        DLT_NULL },
 #ifdef DLT_LOOP
@@ -195,6 +202,9 @@ static struct printer printers[] = {
 #endif
 #ifdef DLT_IEEE802_11_RADIO
        { ieee802_11_radio_if_print,    DLT_IEEE802_11_RADIO },
+#endif
+#ifdef DLT_ENC
+       { enc_if_print,         DLT_ENC },
 #endif
        { NULL,                 0 },
 };
@@ -532,6 +542,8 @@ main(int argc, char **argv)
                                packettype = PT_SNMP;
                        else if (strcasecmp(optarg, "cnfp") == 0)
                                packettype = PT_CNFP;
+                       else if (strcasecmp(optarg, "tftp") == 0)
+                               packettype = PT_TFTP;
                        else
                                error("unknown packet type `%s'", optarg);
                        break;
@@ -606,6 +618,9 @@ main(int argc, char **argv)
 #endif /* WIN32 */
 
                pd = pcap_open_offline(RFileName, ebuf);
+                printf("reading from file %s, link-type %u\n",
+                      RFileName,
+                      pcap_datalink(pd));
                if (pd == NULL)
                        error("%s", ebuf);
                localnet = 0;
@@ -727,10 +742,15 @@ main(int argc, char **argv)
 #endif
 #ifndef WIN32
        if (RFileName == NULL) {
-            if (vflag == 0)
-                (void)fprintf(stderr, "%s: verbose output suppressed, use -v or -vv for full protocol decode\n",program_name);
-            (void)fprintf(stderr, "listening on %s, capture size %u bytes\n", device, snaplen);
-            (void)fflush(stderr);
+               if (!vflag && !WFileName) {
+                       (void)fprintf(stderr,
+                           "%s: verbose output suppressed, use -v or -vv for full protocol decode\n",
+                           program_name);
+               } else
+                       (void)fprintf(stderr, "%s: ", program_name);
+               (void)fprintf(stderr, "listening on %s, link-type %u, capture size %u bytes\n",
+                   device, type, snaplen);
+               (void)fflush(stderr);
        }
 #endif /* WIN32 */
        if (pcap_loop(pd, cnt, callback, pcap_userdata) < 0) {
@@ -988,21 +1008,28 @@ static void
 usage(void)
 {
        extern char version[];
+#ifndef HAVE_PCAP_LIB_VERSION
 #if defined(WIN32) || defined(HAVE_PCAP_VERSION)
        extern char pcap_version[];
-#else
+#else /* defined(WIN32) || defined(HAVE_PCAP_VERSION) */
        static char pcap_version[] = "unknown";
-#endif
+#endif /* defined(WIN32) || defined(HAVE_PCAP_VERSION) */
+#endif /* HAVE_PCAP_LIB_VERSION */
 
+#ifdef HAVE_PCAP_LIB_VERSION
+       (void)fprintf(stderr, "%s version %s\n", program_name, version);
+       (void)fprintf(stderr, "%s\n", pcap_lib_version());
+#else /* HAVE_PCAP_LIB_VERSION */
 #ifdef WIN32
        (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version);
        (void)fprintf(stderr, "WinPcap version %s, based on libpcap version %s\n",Wpcap_version, pcap_version);
-#else  
+#else /* WIN32 */
        (void)fprintf(stderr, "%s version %s\n", program_name, version);
        (void)fprintf(stderr, "libpcap version %s\n", pcap_version);
 #endif /* WIN32 */
+#endif /* HAVE_PCAP_LIB_VERSION */
        (void)fprintf(stderr,
-"Usage: %s [-aAd" D_FLAG "eflLnNOpqRStu" U_FLAG "vxXy]" B_FLAG_USAGE " [-c count] [ -C file_size ]\n", program_name);
+"Usage: %s [-aAd" D_FLAG "eflLnNOpqRStu" U_FLAG "vxX]" B_FLAG_USAGE " [-c count] [ -C file_size ]\n", program_name);
        (void)fprintf(stderr,
 "\t\t[ -E algo:secret ] [ -F file ] [ -i interface ] [ -r file ]\n");
        (void)fprintf(stderr,