Patch for ping6 -o



The ping(8) utility has an -o switch that tells it to exit after
receiving the first reply. This is useful, but ping6(8) doesn't have
it.

Simple patch attached.

Comments/reviews/whatnots?

I'll commit to HEAD in a few days if I don't hear any objections.

--
Dima Dorfman
Index: ping6.8
===================================================================
RCS file: /home/ncvs/src/sbin/ping6/ping6.8,v
retrieving revision 1.23
diff -u -r1.23 ping6.8
--- ping6.8 10 Feb 2005 09:19:32 -0000 1.23
+++ ping6.8 15 Nov 2007 11:44:31 -0000
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD: src/sbin/ping6/ping6.8,v 1.23 2005/02/10 09:19:32 ru Exp $
.\"
-.Dd May 17, 1998
+.Dd November 15, 2007
.Dt PING6 8
.Os
.Sh NAME
@@ -40,7 +40,7 @@
.Sh SYNOPSIS
.Nm
.\" without ipsec, or new ipsec
-.Op Fl dfHmnNqtvwW
+.Op Fl dfHmnNoqtvwW
.\" old ipsec
.\" .Op Fl AdEfmnNqRtvwW
.Bk -words
@@ -225,6 +225,8 @@
outgoing interface needs to be specified by
.Fl I
option.
+.It Fl o
+Exit successfully after receiving one reply packet.
.It Fl p Ar pattern
You may specify up to 16
.Dq pad
Index: ping6.c
===================================================================
RCS file: /home/ncvs/src/sbin/ping6/ping6.c,v
retrieving revision 1.31
diff -u -r1.31 ping6.c
--- ping6.c 1 Jul 2007 12:08:06 -0000 1.31
+++ ping6.c 15 Nov 2007 11:45:12 -0000
@@ -188,6 +188,7 @@
#define F_NIGROUP 0x40000
#define F_SUPTYPES 0x80000
#define F_NOMINMTU 0x100000
+#define F_ONCE 0x200000
#define F_NOUSERDATA (F_NODEADDR | F_FQDN | F_FQDNOLD | F_SUPTYPES)
u_int options;

@@ -344,7 +345,7 @@
#endif /*IPSEC_POLICY_IPSEC*/
#endif
while ((ch = getopt(argc, argv,
- "a:b:c:dfHg:h:I:i:l:mnNp:qS:s:tvwW" ADDOPTS)) != -1) {
+ "a:b:c:dfHg:h:I:i:l:mnNop:qS:s:tvwW" ADDOPTS)) != -1) {
#undef ADDOPTS
switch (ch) {
case 'a':
@@ -485,6 +486,9 @@
case 'N':
options |= F_NIGROUP;
break;
+ case 'o':
+ options |= F_ONCE;
+ break;
case 'p': /* fill buffer with user pattern */
options |= F_PINGFILLED;
fill((char *)datap, optarg);
@@ -1164,7 +1168,8 @@
*/
pr_pack(packet, cc, &m);
}
- if (npackets && nreceived >= npackets)
+ if (( (options & F_ONCE) != 0 && nreceived > 0) ||
+ (npackets > 0 && nreceived >= npackets))
break;
}
summary();
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"

Relevant Pages

  • Re: Word takes too long to shutdown
    ... starting Word with the /a switch is one of the solutions in the document ... "I also have customizations added for exit, ... it loads instantly and closes instantly. ...
    (microsoft.public.word.docmanagement)
  • Re: "BBC Two first to go fully digital"
    ... switch off a major channel a month before many people are able to receive it ... reception - separately from next April). ... from analogue to digital distribution. ... rents many of them will be receiving by then. ...
    (uk.telecom.broadband)
  • Re: Bash script Slack >> Deb-Etch
    ... echo>> ~/.signature ... -wF chokes cut, and the switch isn't ... Somehow in the script ...
    (comp.os.linux.misc)
  • Re: VB or C#
    ... which is far more powerful than the Cswitch() ... The Exit keyword, which allows you to specify what to ... Operator overloading and xml comments will be added to VB.NET in the Visual ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Bash script Slack >> Deb-Etch
    ... echo>> ~/.signature ... and cut is counting each one as a delimiter. ... -wF chokes cut, and the switch isn't ...
    (comp.os.linux.misc)