rpcbind/0021-rpcinfo-make-t-u-options-support-IPv6-addresses-too.patch
Dirk Mueller 868d58656c Accepting request 215477 from home:okir:branches:network
- Fixed rpc broadcast handling (bnc#857324)
  Upgraded to upstream 0.2.1-rc4 as part of this, and rebased the
  patch set.

OBS-URL: https://build.opensuse.org/request/show/215477
OBS-URL: https://build.opensuse.org/package/show/network/rpcbind?expand=0&rev=32
2014-01-30 14:01:34 +00:00

72 lines
1.9 KiB
Diff

From feb828a6db505451e053e4f73332071d53a75c42 Mon Sep 17 00:00:00 2001
From: Olaf Kirch <okir@suse.de>
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 <okir@suse.de>
---
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