From feb828a6db505451e053e4f73332071d53a75c42 Mon Sep 17 00:00:00 2001 From: Olaf Kirch Date: Mon, 20 Jan 2014 12:26:40 +0100 Subject: [PATCH 21/24] rpcinfo: make -t/-u options support IPv6 addresses, too Currently, rpcinfo supports two ways to test whether a given service is alive. For IPv4 hosts, you can use -u and -t. But for IPv6, you need to use "rpcinfo -a" and specify the host through a universal address, which is fairly inconvenient. This patch modifies ip_ping to allow using -u and -t for IPv6 addresses and hosts as well. Signed-off-by: Olaf Kirch --- src/rpcinfo.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/rpcinfo.c b/src/rpcinfo.c index 89dee56..3fea753 100644 --- a/src/rpcinfo.c +++ b/src/rpcinfo.c @@ -412,16 +412,15 @@ ip_ping_one(client, vers) * version 0 calls succeeds, it tries for MAXVERS call and repeats the same. */ static void -ip_ping (portnum, trans, argc, argv) +ip_ping (portnum, proto, argc, argv) u_short portnum; - char *trans; + char *proto; int argc; char **argv; { CLIENT *client; - int fd = RPC_ANYFD; - struct sockaddr_in addr; enum clnt_stat rpc_stat; + const char *hostname; u_long prognum, vers, minvers, maxvers; struct rpc_err rpcerr; int failure = 0; @@ -431,8 +430,9 @@ ip_ping (portnum, trans, argc, argv) usage (); exit (1); } + + hostname = argv[0]; prognum = getprognum (argv[1]); - get_inet_address (&addr, argv[0]); if (argc == 2) { /* Version number not known */ /* @@ -445,8 +445,9 @@ ip_ping (portnum, trans, argc, argv) { vers = getvers (argv[2]); } - addr.sin_port = htons (portnum); - client = clnt_com_create (&addr, prognum, vers, &fd, trans); + + client = ip_getclient(hostname, prognum, vers, proto); + rpc_stat = ip_ping_one(client, vers); if (argc != 2) { -- 1.7.12.4