From: Mike Frysinger Date: Thu, 15 Sep 2005 01:34:28 +0000 (-0000) Subject: merge endian fix from trunk X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2a5044cc46c3c175255c3654b4dd41db26d504d2;p=oweals%2Fbusybox.git merge endian fix from trunk --- diff --git a/busybox/networking/ping.c b/busybox/networking/ping.c index ddbca2064..c18648722 100644 --- a/busybox/networking/ping.c +++ b/busybox/networking/ping.c @@ -223,9 +223,9 @@ static void sendping(int junk) pkt->icmp_type = ICMP_ECHO; pkt->icmp_code = 0; pkt->icmp_cksum = 0; - pkt->icmp_seq = ntransmitted++; + pkt->icmp_seq = htons(ntransmitted++); pkt->icmp_id = myid; - CLR(pkt->icmp_seq % MAX_DUP_CHK); + CLR(ntohs(pkt->icmp_seq) % MAX_DUP_CHK); gettimeofday((struct timeval *) &packet[8], NULL); pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet)); @@ -293,6 +293,7 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) return; /* not our ping */ if (icmppkt->icmp_type == ICMP_ECHOREPLY) { + u_int16_t recv_seq = ntohs(icmppkt->icmp_seq); ++nreceived; tp = (struct timeval *) icmppkt->icmp_data; @@ -309,12 +310,12 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) if (triptime > tmax) tmax = triptime; - if (TST(icmppkt->icmp_seq % MAX_DUP_CHK)) { + if (TST(recv_seq % MAX_DUP_CHK)) { ++nrepeats; --nreceived; dupflag = 1; } else { - SET(icmppkt->icmp_seq % MAX_DUP_CHK); + SET(recv_seq % MAX_DUP_CHK); dupflag = 0; } @@ -323,7 +324,7 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) printf("%d bytes from %s: icmp_seq=%u", sz, inet_ntoa(*(struct in_addr *) &from->sin_addr.s_addr), - icmppkt->icmp_seq); + recv_seq); printf(" ttl=%d", iphdr->ttl); printf(" time=%lu.%lu ms", triptime / 10, triptime % 10); if (dupflag)