Deleted Added
full compact
21c21
< * $FreeBSD: head/contrib/tcpdump/print-icmp.c 111729 2003-03-02 08:25:48Z fenner $
---
> * $FreeBSD: head/contrib/tcpdump/print-icmp.c 127675 2004-03-31 14:57:24Z bms $
25,26c25,26
< static const char rcsid[] =
< "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.62.4.1 2002/06/01 23:51:13 guy Exp $ (LBL)";
---
> static const char rcsid[] _U_ =
> "@(#) $Header: /tcpdump/master/tcpdump/print-icmp.c,v 1.73.2.3 2004/03/24 00:56:34 guy Exp $ (LBL)";
33,35c33
< #include <sys/param.h>
< #include <sys/time.h>
< #include <sys/socket.h>
---
> #include <tcpdump-stdinc.h>
37,38d34
< #include <netinet/in.h>
<
41d36
< #include <netdb.h> /* for MAXHOSTNAMELEN on some platforms */
48a44
> #include "ipproto.h"
73c69
< u_int16_t ipm_void;
---
> u_int16_t ipm_void;
270c266
< 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)
287a284,292
> case ICMP_ECHO:
> case ICMP_ECHOREPLY:
> TCHECK(dp->icmp_seq);
> (void)snprintf(buf, sizeof(buf), "echo %s seq %u",
> dp->icmp_type == ICMP_ECHO ?
> "request" : "reply",
> EXTRACT_16BITS(&dp->icmp_seq));
> break;
>
305c310,311
< dport = ntohs(ouh->uh_dport);
---
> TCHECK(ouh->uh_dport);
> dport = EXTRACT_16BITS(&ouh->uh_dport);
450c456
< (unsigned)ntohl(dp->icmp_mask));
---
> EXTRACT_32BITS(&dp->icmp_mask));
457,458c463,464
< (unsigned)ntohs(dp->icmp_id),
< (unsigned)ntohs(dp->icmp_seq));
---
> EXTRACT_16BITS(&dp->icmp_id),
> EXTRACT_16BITS(&dp->icmp_seq));
464,469c470,475
< "time stamp reply id %u seq %u : org 0x%lx recv 0x%lx xmit 0x%lx",
< (unsigned)ntohs(dp->icmp_id),
< (unsigned)ntohs(dp->icmp_seq),
< (unsigned long)ntohl(dp->icmp_otime),
< (unsigned long)ntohl(dp->icmp_rtime),
< (unsigned long)ntohl(dp->icmp_ttime));
---
> "time stamp reply id %u seq %u : org 0x%x recv 0x%x xmit 0x%x",
> EXTRACT_16BITS(&dp->icmp_id),
> EXTRACT_16BITS(&dp->icmp_seq),
> EXTRACT_32BITS(&dp->icmp_otime),
> EXTRACT_32BITS(&dp->icmp_rtime),
> EXTRACT_32BITS(&dp->icmp_ttime));
476,477c482,484
< (void)printf("icmp: %s", str);
< if (vflag) {
---
> (void)printf("icmp %d: %s", plen, str);
> if (vflag && !fragmented) { /* don't attempt checksumming if this is a frag */
> u_int16_t sum, icmp_sum;
479,480c486,492
< if (in_cksum((u_short*)dp, plen, 0))
< printf(" (wrong icmp csum)");
---
> sum = in_cksum((u_short*)dp, plen, 0);
> if (sum != 0) {
> icmp_sum = EXTRACT_16BITS(&dp->icmp_cksum);
> (void)printf(" (wrong icmp cksum %x (->%x)!)",
> icmp_sum,
> in_cksum_shouldbe(icmp_sum, sum));
> }
483,489c495,501
< 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));
< }
---
> if (vflag > 1 && !ICMP_INFOTYPE(dp->icmp_type)) {
> bp += 8;
> (void)printf(" for ");
> ip = (struct ip *)bp;
> snaplen = snapend - bp;
> ip_print(bp, EXTRACT_16BITS(&ip->ip_len));
> }