Your message dated Sun, 21 Jan 2007 11:36:42 +0200
with message-id <[EMAIL PROTECTED]>
and subject line Bugs fixed by switch to iputils-ping
has caused the attached Bug report to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere. Please contact me immediately.)
Debian bug tracking system administrator
(administrator, Debian Bugs database)
--- Begin Message ---
Package: netkit-ping
Version: 0.10-10.3
Severity: normal
Tags: patch
This patch allows for -i to specify ping intervals of less than one
second. I have configured it to allow 1/2 second intervals for non root
users and 1/100 second -i 0.01 for root users.
(those values are arbitrary, but the lower bound would appear to be
one tick).
patch below...
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1,
'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /UNIONFS/bin/bash
Kernel: Linux 2.6.15
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C)
Versions of packages netkit-ping depends on:
ii libc6 2.3.5-13 GNU C Library: Shared libraries an
netkit-ping recommends no packages.
-- no debconf information
-- Patch:
--- ping/ping.c 1997/06/08 19:39:47 1.22
+++ ping/ping.c 2006/03/31 19:26:23
@@ -40,7 +40,7 @@
/*
* From: @(#)ping.c 5.9 (Berkeley) 5/12/91
*/
-char rcsid[] = "$Id: ping.c,v 1.22 1997/06/08 19:39:47 dholland Exp $";
+char rcsid[] = "$Id: ping.c,v 1.23 2006/03/31 19:21:39 samuel Exp $";
char pkg[] = "netkit-base-0.10";
/*
@@ -80,6 +80,7 @@
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
+#include <limits.h>
/*
* Note: on some systems dropping root makes the process dumpable or
* traceable. In that case if you enable dropping root and someone
@@ -188,7 +189,8 @@
static long nreceived; /* # of packets we got back */
static long nrepeats; /* number of duplicates */
static long ntransmitted; /* sequence # for outbound packets = #sent */
-static int interval = 1; /* interval between packets */
+static double interval = 1.0; /* interval between packets */
+static int interticks; /* interval between packets */
static int floodok = 1; /* okay to send next flood ping? */
/* timing */
@@ -232,6 +234,7 @@
static char *null = NULL;
__environ = &null;
am_i_root = (getuid()==0);
+ interticks= CLK_TCK; /* interval between packets */
/*
* Pull this stuff up front so we can drop root if desired.
@@ -277,12 +280,19 @@
setbuf(stdout, NULL);
break;
case 'i': /* wait between sending packets */
- interval = atoi(optarg);
- if (interval <= 0) {
+ interval = atof(optarg);
+ if (interval < 0.01) {
(void)fprintf(stderr,
"ping: bad timing interval.\n");
exit(2);
+ };
+ if (interval<0.5 && !am_i_root) {
+ (void)fprintf(stderr,
+ "ping: %s\n", strerror(EPERM));
+ exit(2);
}
+ interticks = interval*CLK_TCK; /* interval between
packets */
+ if( interticks<2){ interticks= 2 ; };
options |= F_INTERVAL;
break;
case 'l':
@@ -535,6 +545,58 @@
}
/*
+ * timeval_to_d --
+ * d_to_timeval --
+ * convert between the double-long timeval struct and a double floating point
+ * ( I think this should have existed a long time ago)
+ */
+static double timeval_to_d( const struct timeval * tv ){
+ return tv->tv_sec+(((double)tv->tv_usec) / 1000000);
+};
+static void d_to_timeval(double dsec, struct timeval *tv){
+ if(dsec < (double)LONG_MAX && dsec > (double)LONG_MIN){
+ tv->tv_sec= dsec;
+ tv->tv_usec = (dsec - tv->tv_sec)*1000000;
+ return;
+ }else if(dsec>0){
+ tv->tv_sec=LONG_MAX;
+ }else{
+ tv->tv_sec=LONG_MIN;
+ };
+};
+
+
+/*
+ * dalarm --
+ * Does the same thing as alarm(2) does,
+ * except that it accepts a double floating point value for
+ * the length of time to wait.
+ */
+
+static double dalarm(const double altime){
+ struct itimerval old, new;
+ double dsec;
+ int res;
+
+ /* getitimer(ITIMER_REAL, &new ); */
+ new.it_interval.tv_sec=0;
+ new.it_interval.tv_usec=0;
+
+ d_to_timeval(altime,&(new.it_value));
+ /* printf("alarm:%5.2f,",timeval_to_d(&new.it_value)); */
+
+ if( (res= setitimer(ITIMER_REAL,&new,&old)) != 0 ){
+ perror("setitimer call failed");
+ exit(res);
+ };
+ /* assert(res==0); */
+ dsec=timeval_to_d(&(old.it_value));
+ /* printf("-> %5.2f,%5.2f:
",timeval_to_d(&(old.it_value)),timeval_to_d(&(old.it_interval))); */
+ return( dsec) ;
+};
+
+
+/*
* catcher --
* This routine causes another PING to be transmitted, and then
* schedules another SIGALRM for 1 second from now.
@@ -554,7 +616,7 @@
if (signum) {
current = times(&buf);
- if (current - last >= CLK_TCK - 1 || current < last) {
+ if (current - last >= interticks - 1 || current < last) {
last = current;
pinger();
}
@@ -563,7 +625,7 @@
(void)signal(SIGALRM, catcher);
if (!npackets || ntransmitted < npackets)
- alarm((u_int)interval);
+ dalarm((double)interval);
else {
if (nreceived) {
waittime = 2 * tmax / 1000;
--- ping/ping.8 1997/02/01 23:08:04 1.4
+++ ping/ping.8 2006/03/31 19:34:05
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)ping.8 6.7 (Berkeley) 3/16/91
-.\" $Id: ping.8,v 1.4 1997/02/01 23:08:04 dholland Exp $
+.\" $Id: ping.8,v 1.5 2006/03/31 19:33:53 samuel Exp samuel $
.\"
.Dd August 30, 1996
.Dt PING 8
@@ -96,6 +96,7 @@
.Ar wait
seconds
.Em between sending each packet .
+Shortest interval allowed is 0.5 seconds for non-root users 0.01 for root.
The default is to wait for one second between each packet.
This option is incompatible with the
.Fl f
--- End Message ---
--- Begin Message ---
Hello,
All of these bugs should be fixed automagically by switching to
iputils-ping which replaces netkit-ping in Debian Etch.
#262304 was tagged Woody, but this is not a supported release anymore.
#36663: it is in fact the number of packet *sent* that matters, not the
the number of received ones. iputils-ping manpage is consistent.
#66551: the -I option is fixed with iputils-ping.
Regards,
--
Rémi Denis-Courmont
http://www.remlab.net/
pgpGrIFOBRfzu.pgp
Description: PGP signature
--- End Message ---