svn commit: r228402 - projects/nfsv4.1-client/sys/rpc
Rick Macklem
rmacklem at FreeBSD.org
Sat Dec 10 23:35:05 UTC 2011
Author: rmacklem
Date: Sat Dec 10 23:35:05 2011
New Revision: 228402
URL: http://svn.freebsd.org/changeset/base/228402
Log:
Add code to handle CLSET_BACKCHANNEL. Basically, just save the xprt
returned by svc_vc_create_backchannel() and pass it down to the
clnt_vc layer. Struct rc_data is now in _krpc.h.
Modified:
projects/nfsv4.1-client/sys/rpc/clnt_rc.c
Modified: projects/nfsv4.1-client/sys/rpc/clnt_rc.c
==============================================================================
--- projects/nfsv4.1-client/sys/rpc/clnt_rc.c Sat Dec 10 23:26:24 2011 (r228401)
+++ projects/nfsv4.1-client/sys/rpc/clnt_rc.c Sat Dec 10 23:35:05 2011 (r228402)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <rpc/rpc.h>
#include <rpc/rpc_com.h>
+#include <rpc/_krpc.h>
static enum clnt_stat clnt_reconnect_call(CLIENT *, struct rpc_callextra *,
rpcproc_t, struct mbuf *, struct mbuf **, struct timeval);
@@ -67,27 +68,6 @@ static struct clnt_ops clnt_reconnect_op
static int fake_wchan;
-struct rc_data {
- struct mtx rc_lock;
- struct sockaddr_storage rc_addr; /* server address */
- struct netconfig* rc_nconf; /* network type */
- rpcprog_t rc_prog; /* program number */
- rpcvers_t rc_vers; /* version number */
- size_t rc_sendsz;
- size_t rc_recvsz;
- struct timeval rc_timeout;
- struct timeval rc_retry;
- int rc_retries;
- int rc_privport;
- char *rc_waitchan;
- int rc_intr;
- int rc_connecting;
- int rc_closed;
- struct ucred *rc_ucred;
- CLIENT* rc_client; /* underlying RPC client */
- struct rpc_err rc_err;
-};
-
CLIENT *
clnt_reconnect_create(
struct netconfig *nconf, /* network type */
@@ -211,6 +191,8 @@ clnt_reconnect_connect(CLIENT *cl)
CLNT_CONTROL(newclient, CLSET_RETRY_TIMEOUT, &rc->rc_retry);
CLNT_CONTROL(newclient, CLSET_WAITCHAN, rc->rc_waitchan);
CLNT_CONTROL(newclient, CLSET_INTERRUPTIBLE, &rc->rc_intr);
+ if (rc->rc_backchannel != NULL)
+ CLNT_CONTROL(newclient, CLSET_BACKCHANNEL, rc->rc_backchannel);
stat = RPC_SUCCESS;
out:
@@ -466,6 +448,10 @@ clnt_reconnect_control(CLIENT *cl, u_int
*(int *) info = rc->rc_privport;
break;
+ case CLSET_BACKCHANNEL:
+ rc->rc_backchannel = info;
+ break;
+
default:
return (FALSE);
}
More information about the svn-src-projects
mailing list