Add ping -f. [rsc] --rw-rw-r-- M 771144 glenda sys 3489 Feb 11 09:12 sys/man/8/ping /n/sourcesdump/2006/0211/plan9/sys/man/8/ping:4,10 - /n/sourcesdump/2006/0212/plan9/sys/man/8/ping:4,10 .SH SYNOPSIS .B ping [ - .B -alq + .B -aflq ] [ .B -i .I interval /n/sourcesdump/2006/0211/plan9/sys/man/8/ping:73,78 - /n/sourcesdump/2006/0212/plan9/sys/man/8/ping:73,81 .TP .B a adds the IP source and destination addresses to each report. + .TP + .B f + send messages as fast as possible (flood). .TP .B i sets the time between messages [rsc] --rw-rw-r-- M 771144 glenda sys 5708 Feb 11 09:12 sys/src/cmd/ip/ping.c /n/sourcesdump/2006/0211/plan9/sys/src/cmd/ip/ping.c:67,72 - /n/sourcesdump/2006/0212/plan9/sys/src/cmd/ip/ping.c:67,73 vlong sum; ushort firstseq; int addresses; + int flood; void usage(void); void lost(Req*, Icmp*); /n/sourcesdump/2006/0211/plan9/sys/src/cmd/ip/ping.c:93,98 - /n/sourcesdump/2006/0212/plan9/sys/src/cmd/ip/ping.c:94,100 Req **l, *r; lock(&listlock); + last = nil; for(l = &first; *l; ){ r = *l; /n/sourcesdump/2006/0211/plan9/sys/src/cmd/ip/ping.c:110,116 - /n/sourcesdump/2006/0212/plan9/sys/src/cmd/ip/ping.c:112,118 if(r->replied == 0) lost(r, ip); free(r); - } else { + }else{ last = r; l = &(r->next); } /n/sourcesdump/2006/0211/plan9/sys/src/cmd/ip/ping.c:147,152 - /n/sourcesdump/2006/0212/plan9/sys/src/cmd/ip/ping.c:149,156 hnputs(ip->seq, seq); r->seq = seq; r->next = nil; + r->replied = 0; + r->time = nsec(); /* avoid early free in reply! */ lock(&listlock); if(first == nil) first = r; /n/sourcesdump/2006/0211/plan9/sys/src/cmd/ip/ping.c:154,160 - /n/sourcesdump/2006/0212/plan9/sys/src/cmd/ip/ping.c:158,163 last->next = r; last = r; unlock(&listlock); - r->replied = 0; r->time = nsec(); if(write(fd, ip, msglen) < msglen){ fprint(2, "%s: write failed: %r\n", argv0); /n/sourcesdump/2006/0211/plan9/sys/src/cmd/ip/ping.c:261,272 - /n/sourcesdump/2006/0212/plan9/sys/src/cmd/ip/ping.c:264,278 case 'r': rint = 1; break; + case 'f': + flood = 1; + break; } ARGEND; if(msglen < 32) msglen = 64; if(msglen >= 65*1024) msglen = 65*1024-1; - if(interval <= 0) + if(interval <= 0 && !flood) interval = SLEEPMS; if(argc < 1)