diff options
author | bz <bz@FreeBSD.org> | 2008-05-27 10:51:19 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2008-05-27 10:51:19 +0000 |
commit | 08921e6dda68b6e98a89e884f0903049ce3c6ba5 (patch) | |
tree | 991405f7236fac6a4105ad280ef8b6df560f69ff /sbin/ping6 | |
parent | 87fbf5762c02a0e9d828b5b8cd889c16d7ea8942 (diff) | |
download | FreeBSD-src-08921e6dda68b6e98a89e884f0903049ce3c6ba5.zip FreeBSD-src-08921e6dda68b6e98a89e884f0903049ce3c6ba5.tar.gz |
Change the exit status for 0 and 2 to be the same as with ping(1)
and be usable in scripts, etc.
This also changes the semantics in case when we lose one of n packets.
In that case, before we exited by SIG, now we exit with return(0).
Submitted by: Gert Doering (gert space.net)
MFC after: 10 days
Diffstat (limited to 'sbin/ping6')
-rw-r--r-- | sbin/ping6/ping6.8 | 6 | ||||
-rw-r--r-- | sbin/ping6/ping6.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/sbin/ping6/ping6.8 b/sbin/ping6/ping6.8 index fc59591..fe57b99 100644 --- a/sbin/ping6/ping6.8 +++ b/sbin/ping6/ping6.8 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 15, 2007 +.Dd May 27, 2008 .Dt PING6 8 .Os .Sh NAME @@ -409,7 +409,9 @@ option of The .Nm utility returns 0 on success (the host is alive), -and non-zero if the arguments are incorrect or the host is not responding. +2 if the transmission was successful but no responses were received, +any other non-zero value if the arguments are incorrect or +another error has occured. .Sh EXAMPLES Normally, .Nm diff --git a/sbin/ping6/ping6.c b/sbin/ping6/ping6.c index ee0847e..849c17a 100644 --- a/sbin/ping6/ping6.c +++ b/sbin/ping6/ping6.c @@ -1074,6 +1074,9 @@ main(argc, argv) /* signal handling */ if (seenalrm) { + /* last packet sent, timeout reached? */ + if (npackets && ntransmitted >= npackets) + break; retransmit(); seenalrm = 0; continue; @@ -1173,7 +1176,7 @@ main(argc, argv) break; } summary(); - exit(nreceived == 0); + exit(nreceived == 0 ? 2 : 0); } void @@ -1224,7 +1227,7 @@ retransmit() itimer.it_interval.tv_usec = 0; itimer.it_value.tv_usec = 0; - (void)signal(SIGALRM, onint); + (void)signal(SIGALRM, onsignal); (void)setitimer(ITIMER_REAL, &itimer, NULL); } |