summaryrefslogtreecommitdiffstats
path: root/support/nfs/conn.c
diff options
context:
space:
mode:
authorGreg Banks <gnb@melbourne.sgi.com>2006-07-03 14:21:48 +1000
committerGreg Banks <gnb@melbourne.sgi.com>2006-07-03 14:21:48 +1000
commit940c7c304d4a43c00c27529cdddc7c87db6eef87 (patch)
treeb2d1f4d190afd1c21e8e31eada9d6e58cfa0f93b /support/nfs/conn.c
parentb90d201551aaa712c011c3d5de900fad714a26a6 (diff)
parenta503848d423fe1681879936da7b526b15f7eca23 (diff)
downloadnfs-utils-940c7c304d4a43c00c27529cdddc7c87db6eef87.tar.gz
nfs-utils-940c7c304d4a43c00c27529cdddc7c87db6eef87.tar.xz
nfs-utils-940c7c304d4a43c00c27529cdddc7c87db6eef87.zip
Merge branch 'master' of git://linux-nfs.org/nfs-utils
Diffstat (limited to 'support/nfs/conn.c')
-rw-r--r--support/nfs/conn.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/support/nfs/conn.c b/support/nfs/conn.c
index bf2afad..733bf24 100644
--- a/support/nfs/conn.c
+++ b/support/nfs/conn.c
@@ -93,7 +93,7 @@ int get_socket(struct sockaddr_in *saddr, u_int p_prot, int resvp)
return RPC_ANYSOCK;
}
}
- if (type == SOCK_STREAM) {
+ if (type == SOCK_STREAM || type == SOCK_DGRAM) {
cc = connect(so, (struct sockaddr *)saddr, namelen);
if (cc < 0) {
rpc_createerr.cf_stat = RPC_SYSTEMERROR;
@@ -119,7 +119,7 @@ int get_socket(struct sockaddr_in *saddr, u_int p_prot, int resvp)
*/
int
clnt_ping(struct sockaddr_in *saddr, const u_long prog, const u_long vers,
- const u_int prot)
+ const u_int prot, struct sockaddr_in *caddr)
{
CLIENT *clnt=NULL;
int sock, stat;
@@ -161,8 +161,15 @@ clnt_ping(struct sockaddr_in *saddr, const u_long prog, const u_long vers,
rpc_createerr.cf_stat = stat;
}
clnt_destroy(clnt);
- if (sock != -1)
+ if (sock != -1) {
+ if (caddr) {
+ /* Get the address of our end of this connection */
+ int len = sizeof(*caddr);
+ if (getsockname(sock, caddr, &len) != 0)
+ caddr->sin_family = 0;
+ }
close(sock);
+ }
if (stat == RPC_SUCCESS)
return 1;