diff -rup inetutils-1.6/ping/libping.c newinetutils/ping/libping.c --- inetutils-1.6/ping/libping.c 2008-12-27 21:06:55.000000000 +0100 +++ newinetutils/ping/libping.c 2009-07-27 17:46:49.000000000 +0200 @@ -117,7 +117,7 @@ ping_xmit (PING * p) buflen = _ping_packetsize (p); /* Mark sequence number as sent */ - _PING_CLR (p, p->ping_num_xmit % p->ping_cktab_size); + _PING_CLR (p, p->ping_num_xmit); /* Encode ICMP header */ switch (p->ping_type) @@ -208,7 +208,7 @@ ping_recv (PING * p) inet_ntoa (p->ping_from.ping_sockaddr.sin_addr)); p->ping_num_recv++; - if (_PING_TST (p, icmp->icmp_seq % p->ping_cktab_size)) + if (_PING_TST (p, icmp->icmp_seq)) { p->ping_num_rept++; p->ping_num_recv--; @@ -216,7 +216,7 @@ ping_recv (PING * p) } else { - _PING_SET (p, icmp->icmp_seq % p->ping_cktab_size); + _PING_SET (p, icmp->icmp_seq); dupflag = 0; } diff -rup inetutils-1.6/ping/ping6.c newinetutils/ping/ping6.c --- inetutils-1.6/ping/ping6.c 2008-12-27 21:07:03.000000000 +0100 +++ newinetutils/ping/ping6.c 2009-07-27 17:42:13.000000000 +0200 @@ -753,7 +753,7 @@ ping_xmit (PING * p) buflen = p->ping_datalen + sizeof (struct icmp6_hdr); /* Mark sequence number as sent */ - _PING_CLR (p, p->ping_num_xmit % p->ping_cktab_size); + _PING_CLR (p, p->ping_num_xmit); icmp6 = (struct icmp6_hdr *) p->ping_buffer; icmp6->icmp6_type = ICMP6_ECHO_REQUEST; @@ -832,7 +832,7 @@ ping_recv (PING * p) if (ntohs (icmp6->icmp6_id) != p->ping_ident) return -1; /* It's not a response to us. */ - if (_PING_TST (p, ntohs (icmp6->icmp6_seq) % p->ping_cktab_size)) + if (_PING_TST (p, ntohs (icmp6->icmp6_seq))) { /* We already got the reply for this echo request. */ p->ping_num_rept++; @@ -840,7 +840,7 @@ ping_recv (PING * p) } else { - _PING_SET (p, ntohs (icmp6->icmp6_seq) % p->ping_cktab_size); + _PING_SET (p, ntohs (icmp6->icmp6_seq)); p->ping_num_recv++; dupflag = 0; } diff -rup inetutils-1.6/ping/ping6.h newinetutils/ping/ping6.h --- inetutils-1.6/ping/ping6.h 2008-10-14 21:25:31.000000000 +0200 +++ newinetutils/ping/ping6.h 2009-07-27 17:46:47.000000000 +0200 @@ -22,7 +22,8 @@ #define PING_MAX_DATALEN (65535 - sizeof (struct icmp6_hdr)) #define USE_IPV6 1 -#define _C_BIT(p,bit) (p)->ping_cktab[(bit)>>3] /* byte in ck array */ + +#define _C_BIT(p,bit) (p)->ping_cktab[((bit) >> 3) % p->ping_cktab_size] /* byte in ck array */ #define _C_MASK(bit) (1 << ((bit) & 0x07)) #define _PING_SET(p,bit) (_C_BIT (p,bit) |= _C_MASK (bit)) diff -rup inetutils-1.6/ping/ping.c newinetutils/ping/ping.c --- inetutils-1.6/ping/ping.c 2008-12-27 22:11:02.000000000 +0100 +++ newinetutils/ping/ping.c 2009-07-27 17:47:06.000000000 +0200 @@ -309,7 +315,7 @@ ping_run (PING * ping, int (*finish) ()) int fdmax; struct timeval timeout; struct timeval last, intvl, now; - struct timeval *t = NULL; + //struct timeval *t = NULL; who needs this ?!? int finishing = 0; int nresp = 0; int i; @@ -367,11 +373,14 @@ ping_run (PING * ping, int (*finish) ()) { if (ping_recv (ping) == 0) nresp++; +#if 0 + strange... this is the only appearance of t if (t == 0) { gettimeofday (&now, NULL); t = &now; } +#endif if (ping->ping_count && nresp >= ping->ping_count) break; } diff -rup inetutils-1.6/ping/ping_common.h newinetutils/ping/ping_common.h --- inetutils-1.6/ping/ping_common.h 2008-12-27 21:07:12.000000000 +0100 +++ newinetutils/ping/ping_common.h 2009-07-23 14:49:36.000000000 +0200 @@ -35,6 +35,7 @@ #define OPT_QUIET 0x008 #define OPT_RROUTE 0x010 #define OPT_VERBOSE 0x020 struct ping_stat { diff -rup inetutils-1.6/ping/ping.h newinetutils/ping/ping.h --- inetutils-1.6/ping/ping.h 2008-10-14 21:25:31.000000000 +0200 +++ newinetutils/ping/ping.h 2009-07-27 17:46:48.000000000 +0200 @@ -21,7 +21,7 @@ #define USE_IPV6 0 -#define _C_BIT(p,bit) (p)->ping_cktab[(bit)>>3] /* byte in ck array */ +#define _C_BIT(p,bit) (p)->ping_cktab[((bit) >> 3) % p->ping_cktab_size] /* byte in ck array */ #define _C_MASK(bit) (1 << ((bit) & 0x07)) #define _PING_SET(p,bit) (_C_BIT (p,bit) |= _C_MASK (bit))