diff options
author | Greg Banks <gnb@melbourne.sgi.com> | 2006-07-03 14:21:48 +1000 |
---|---|---|
committer | Greg Banks <gnb@melbourne.sgi.com> | 2006-07-03 14:21:48 +1000 |
commit | 940c7c304d4a43c00c27529cdddc7c87db6eef87 (patch) | |
tree | b2d1f4d190afd1c21e8e31eada9d6e58cfa0f93b /support/nfs/conn.c | |
parent | b90d201551aaa712c011c3d5de900fad714a26a6 (diff) | |
parent | a503848d423fe1681879936da7b526b15f7eca23 (diff) | |
download | nfs-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.c | 13 |
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; |