Date: Wed, 24 Jul 2002 17:50:08 -0700 From: Bakul Shah <bakul@bitblocks.com> To: current@freebsd.org Subject: mount_nfs -T breakage Message-ID: <200207250050.UAA20544@wellington.cnchost.com>
next in thread | raw e-mail | index | archive | help
TCP mount of nfs seems to be broken.
# mount bar:/usr /mnt
[tcp] bar:/usr: RPCPROG_NFS: RPC: Unknown protocol
I tracked this down to lib/libc/rpc/rpcb_clnt.c. Seems like
the problem is in __rpcb_findaddr_timed().
diff -r 1.9 rpcb_clnt.c
--- rpcb_clnt.c 22 Mar 2002 23:18:37 -0000 1.9
+++ rpcb_clnt.c 11 Jul 2002 16:23:04 -0000 1.10
...[deleted]...
@@ -672,13 +731,15 @@
* starts working properly. Also look under clnt_vc.c.
*/
struct netbuf *
-__rpcb_findaddr(program, version, nconf, host, clpp)
+__rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
rpcprog_t program;
...[deleted]...
@@ -710,22 +777,31 @@
*/
if (strcmp(nconf->nc_proto, NC_TCP) == 0) {
struct netconfig *newnconf;
+ void *handle;
- if ((newnconf = getnetconfigent("udp")) == NULL) {
+ if ((handle = getnetconfigent("udp")) == NULL) {
+ rpc_createerr.cf_stat = RPC_UNKNOWNPROTO;
+ return (NULL);
+ }
+ if ((newnconf = __rpc_getconf(handle)) == NULL) {
+ __rpc_endconf(handle);
rpc_createerr.cf_stat = RPC_UNKNOWNPROTO;
return (NULL);
}
client = getclnthandle(host, newnconf, &parms.r_addr);
- freenetconfigent(newnconf);
+ __rpc_endconf(handle);
} else {
client = getclnthandle(host, nconf, &parms.r_addr);
Notice how newnconf, the second arg of getclnthandle(), is
derived. Previously it was the output of getnetconfigent()
while now it is output of __rpc_getconf(). It expects its
arg to be of type ``struct handle*'', but it is given an arg
of type ``struct netconfig*'' The two structs are not congruent.
I don't really understand this code so I don't know what the real
fix is.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207250050.UAA20544>
