]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-icmp.c
- update the extd community decoder as per draft-ietf-idr-bgp-ext-communities-05
[tcpdump] / print-icmp.c
index df0970c80bf78c86effad19b5704893d1c9bd71b..4ea464a004e91304609447ba1dc50c4026478bd5 100644 (file)
@@ -21,7 +21,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.71 2002-12-11 07:14:01 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.73 2003-06-07 11:57:53 guy Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -39,6 +39,7 @@ static const char rcsid[] =
 
 #include "ip.h"
 #include "udp.h"
+#include "ipproto.h"
 
 /*
  * Interface Control Message Protocol Definitions.
@@ -260,7 +261,7 @@ struct id_rdiscovery {
 };
 
 void
-icmp_print(const u_char *bp, u_int plen, const u_char *bp2)
+icmp_print(const u_char *bp, u_int plen, const u_char *bp2, int fragmented)
 {
        char *cp;
        const struct icmp *dp;
@@ -476,7 +477,7 @@ icmp_print(const u_char *bp, u_int plen, const u_char *bp2)
                break;
        }
        (void)printf("icmp %d: %s", plen, str);
-       if (vflag) {
+       if (vflag && !fragmented) { /* don't attempt checksumming if this is a frag */
                u_int16_t sum, icmp_sum;
                if (TTEST2(*bp, plen)) {
                        sum = in_cksum((u_short*)dp, plen, 0);