--- include-glibc/netinet/ip.h | 4 ping.c | 13 ping_common.c | 21 - ping_common.h | 10 tracepath.c | 8 tracepath6.c | 2 7 files changed, 795 insertions(+), 33 deletions(-) Index: iputils/include-glibc/netinet/ip.h =================================================================== --- iputils.orig/include-glibc/netinet/ip.h +++ iputils/include-glibc/netinet/ip.h @@ -6,6 +6,10 @@ #include +/* From glibc, most of the time it is a bad idea to copy not complete + header files */ +#define IP_MAXPACKET 65535 /* maximum packet size */ + #ifdef __USE_BSD /* * Copyright (c) 1982, 1986, 1993 Index: iputils/ping.c =================================================================== --- iputils.orig/ping.c +++ iputils/ping.c @@ -389,8 +389,7 @@ main(int argc, char **argv) } hold = 1; - if (setsockopt(icmp_sock, SOL_IP, IP_RECVERR, (char *)&hold, sizeof(hold))) - fprintf(stderr, "WARNING: your kernel is veeery old. No problems.\n"); + setsockopt(icmp_sock, SOL_IP, IP_RECVERR, (char *)&hold, sizeof(hold)); /* record route option */ if (options & F_RROUTE) { @@ -750,16 +749,6 @@ parse_reply(struct msghdr *msg, int cc, acknowledge(ntohs(icp1->un.echo.sequence)); if (working_recverr) { return 0; - } else { - static int once; - /* Sigh, IP_RECVERR for raw socket - * was broken until 2.4.9. So, we ignore - * the first error and warn on the second. - */ - if (once++ == 1) - fprintf(stderr, "\rWARNING: kernel is not very fresh, upgrade is recommended.\n"); - if (once == 1) - return 0; } } nerrors+=error_pkt; Index: iputils/ping_common.c =================================================================== --- iputils.orig/ping_common.c +++ iputils/ping_common.c @@ -39,16 +39,16 @@ int confirm_flag = MSG_CONFIRM; int working_recverr; /* timing */ -int timing; /* flag to do timing */ -long tmin = LONG_MAX; /* minimum round trip time */ -long tmax; /* maximum round trip time */ +unsigned long long timing; /* flag to do timing */ +unsigned long long tmin = LONG_MAX; /* minimum round trip time */ +unsigned long long tmax; /* maximum round trip time */ /* Message for rpm maintainers: have _shame_. If you want * to fix something send the patch to me for sanity checking. * "sparcfix" patch is a complete non-sense, apparenly the person * prepared it was stoned. */ -long long tsum; /* sum of all times, for doing average */ -long long tsum2; +unsigned long long tsum; /* sum of all times, for doing average */ +unsigned long long tsum2; int pipesize = -1; int datalen = DEFDATALEN; @@ -662,7 +662,6 @@ restamp: tvsub(tv, &tmp_tv); triptime = tv->tv_sec * 1000000 + tv->tv_usec; if (triptime < 0) { - fprintf(stderr, "Warning: time of day goes back (%ldus), taking countermeasures.\n", triptime); triptime = 0; if (!(options & F_LATENCY)) { gettimeofday(tv, NULL); @@ -809,10 +808,10 @@ void finish(void) tmdev = llsqrt(tsum2 - tsum * tsum); printf("rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld/%ld.%03ld/%ld.%03ld ms", - tmin/1000, tmin%1000, + (long)tmin/1000, (long)tmin%1000, (unsigned long)(tsum/1000), (long)(tsum%1000), - tmax/1000, tmax%1000, - tmdev/1000, tmdev%1000 + (long)tmax/1000, (long)tmax%1000, + (long)tmdev/1000, (long)tmdev%1000 ); } if (pipesize > 1) @@ -843,10 +842,10 @@ void status(void) tavg = tsum / (nreceived + nrepeats); fprintf(stderr, ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld/%d.%03d/%ld.%03ld ms", - tmin/1000, tmin%1000, + (long)tmin/1000, (long)tmin%1000, tavg/1000, tavg%1000, rtt/8000, (rtt/8)%1000, - tmax/1000, tmax%1000 + (long)tmax/1000, (long)tmax%1000 ); } fprintf(stderr, "\n"); Index: iputils/ping_common.h =================================================================== --- iputils.orig/ping_common.h +++ iputils/ping_common.h @@ -103,11 +103,11 @@ extern int working_recverr; /* timing */ -extern int timing; /* flag to do timing */ -extern long tmin; /* minimum round trip time */ -extern long tmax; /* maximum round trip time */ -extern long long tsum; /* sum of all times, for doing average */ -extern long long tsum2; +extern unsigned long long timing; /* flag to do timing */ +extern unsigned long long tmin; /* minimum round trip time */ +extern unsigned long long tmax; /* maximum round trip time */ +extern unsigned long long tsum; /* sum of all times, for doing average */ +extern unsigned long long tsum2; extern int rtt; extern __u16 acked; extern int pipesize; Index: iputils/tracepath.c =================================================================== --- iputils.orig/tracepath.c +++ iputils/tracepath.c @@ -75,7 +75,7 @@ int recverr(int fd, int ttl) int sndhops; int progress = -1; int broken_router; - + restart: memset(&rcvbuf, -1, sizeof(rcvbuf)); iov.iov_base = &rcvbuf; @@ -124,8 +124,8 @@ restart: e = (struct sock_extended_err *) CMSG_DATA(cmsg); } else if (cmsg->cmsg_type == IP_TTL) { rethops = *(int*)CMSG_DATA(cmsg); - } else { - printf("cmsg:%d\n ", cmsg->cmsg_type); + } else { + printf("cmsg:%d\n ", cmsg->cmsg_type); } } } @@ -330,7 +330,7 @@ main(int argc, char **argv) } for (ttl=1; ttl<32; ttl++) { - int res; + int res = 0; int i; on = ttl; Index: iputils/tracepath6.c =================================================================== --- iputils.orig/tracepath6.c +++ iputils/tracepath6.c @@ -364,7 +364,7 @@ int main(int argc, char **argv) } for (ttl=1; ttl<32; ttl++) { - int res; + int res = 0; int i; on = ttl;