merge endian fix from trunk
authorMike Frysinger <vapier@gentoo.org>
Thu, 15 Sep 2005 01:34:28 +0000 (01:34 -0000)
committerMike Frysinger <vapier@gentoo.org>
Thu, 15 Sep 2005 01:34:28 +0000 (01:34 -0000)
busybox/networking/ping.c

index ddbca2064564a7683d3bf12aa111a2c36a8c1c14..c1864872214f123e997086cc475c03e271fce78c 100644 (file)
@@ -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)