Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Dec 2011 23:35:05 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r228402 - projects/nfsv4.1-client/sys/rpc
Message-ID:  <201112102335.pBANZ5PC026702@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112102335.pBANZ5PC026702>