]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-icmp.c
(fs_reply_print): support parsing and printing of the errors in abort
[tcpdump] / print-icmp.c
index ce674b330ad06d62b82ad640f725e9a9b43eb37c..5895ce983d383b267db0a43f5687541832a83c59 100644 (file)
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.41 1999-11-21 03:46:38 assar Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.43 1999-11-22 04:28:21 fenner Exp $ (LBL)";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
 #endif
 
 #include <sys/param.h>
@@ -350,11 +354,18 @@ icmp_print(register const u_char *bp, u_int plen, register const u_char *bp2)
        }
         (void)printf("icmp: %s", str);
        if (vflag) {
-               if (((u_char*)bp) + plen <= snapend) {
+               if (TTEST2(*bp, plen)) {
                        if (in_cksum((u_short*)dp, plen, 0))
                                printf(" (wrong icmp csum)");
                }
        }
+       if (vflag > 1 && !ICMP_INFOTYPE(dp->icmp_type)) {
+               bp += 8;
+               (void)printf(" for ");
+               ip = (struct ip *)bp;
+               snaplen = snapend - bp;
+               ip_print(bp, ntohs(ip->ip_len));
+       }
        return;
 trunc:
        fputs("[|icmp]", stdout);