aboutsummaryrefslogtreecommitdiff
path: root/sbin/ping/ping.c
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2020-11-26 04:29:30 +0000
committerAlan Somers <asomers@FreeBSD.org>2020-11-26 04:29:30 +0000
commit3cde9171d2d50852ab782e90acf734f416246e86 (patch)
tree0d4e70ec68ec4ba273dfc9081f85959963620917 /sbin/ping/ping.c
parentb05f17a12fc58914e0a5b17f90331627b600432d (diff)
downloadsrc-3cde9171d2d50852ab782e90acf734f416246e86.tar.gz
src-3cde9171d2d50852ab782e90acf734f416246e86.zip
Merge ping6 to ping
There is now a single ping binary, which chooses to use ICMP or ICMPv4 based on the -4 and -6 options, and the format of the address. Submitted by: Ján Sučan <sucanjan@gmail.com> Sponsored by: Google LLC (Google Summer of Code 2019) MFC after: Never Differential Revision: https://reviews.freebsd.org/D21377
Notes
Notes: svn path=/head/; revision=368045
Diffstat (limited to 'sbin/ping/ping.c')
-rw-r--r--sbin/ping/ping.c31
1 files changed, 7 insertions, 24 deletions
diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c
index e53e5013a71c..fe197928085e 100644
--- a/sbin/ping/ping.c
+++ b/sbin/ping/ping.c
@@ -100,6 +100,8 @@ __FBSDID("$FreeBSD$");
#include <time.h>
#include <unistd.h>
+#include "main.h"
+#include "ping.h"
#include "utils.h"
#define INADDR_LEN ((int)sizeof(in_addr_t))
@@ -225,10 +227,9 @@ static void pr_pack(char *, ssize_t, struct sockaddr_in *, struct timespec *);
static void pr_retip(struct ip *, const u_char *);
static void status(int);
static void stopit(int);
-static void usage(void) __dead2;
int
-main(int argc, char *const *argv)
+ping(int argc, char *const *argv)
{
struct sockaddr_in from, sock_in;
struct in_addr ifaddr;
@@ -301,7 +302,7 @@ main(int argc, char *const *argv)
outpack = outpackhdr + sizeof(struct ip);
while ((ch = getopt(argc, argv,
- "AaC:c:DdfG:g:Hh:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:"
+ "4AaC:c:DdfG:g:Hh:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:"
#ifdef IPSEC
#ifdef IPSEC_POLICY_IPSEC
"P:"
@@ -310,6 +311,9 @@ main(int argc, char *const *argv)
)) != -1)
{
switch(ch) {
+ case '4':
+ /* This option is processed in main(). */
+ break;
case 'A':
options |= F_MISSED;
break;
@@ -1769,24 +1773,3 @@ capdns_setup(void)
#endif
return (capdnsloc);
}
-
-#if defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
-#define SECOPT " [-P policy]"
-#else
-#define SECOPT ""
-#endif
-static void
-usage(void)
-{
-
- (void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
-"usage: ping [-AaDdfHnoQqRrv] [-C pcp] [-c count] [-G sweepmaxsize] [-g sweepminsize]",
-" [-h sweepincrsize] [-i wait] [-l preload] [-M mask | time] [-m ttl]",
-" " SECOPT " [-p pattern] [-S src_addr] [-s packetsize] [-t timeout]",
-" [-W waittime] [-z tos] host",
-" ping [-AaDdfHLnoQqRrv] [-C pcp] [-c count] [-I iface] [-i wait] [-l preload]",
-" [-M mask | time] [-m ttl]" SECOPT " [-p pattern] [-S src_addr]",
-" [-s packetsize] [-T ttl] [-t timeout] [-W waittime]",
-" [-z tos] mcast-group");
- exit(EX_USAGE);
-}