Re: mount_nfs -T breakage

2002-07-26 Thread Bakul Shah

 Yes, that code is very broken indeed. It probably was supposed to
 call __rpc_setconf(udp) and not getnetconfigent(udp), but that
 seems to pick up an ipv6 address. I think the best plan is to go
 back to the way that part of the code was before revision 1.10.
 
 Could you try the following patch?

Thank you for the patch!  Yes, it works.  Right after I sent
out my message I tried an almost identical patch which also
worked but, as I said I don't understand this code, didn't
have time to understand it and my patch seemed a bit hacky so
I kept quiet.  Actually this whole routine seems hacky -- why
look up udp when you are told explicitly to use tcp?  Oh
well, I should keep quiet until I really understand it:-)

Thanks again!

-- bakul

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: mount_nfs -T breakage

2002-07-26 Thread Alfred Perlstein

* Bakul Shah [EMAIL PROTECTED] [020725 23:14] wrote:
  Yes, that code is very broken indeed. It probably was supposed to
  call __rpc_setconf(udp) and not getnetconfigent(udp), but that
  seems to pick up an ipv6 address. I think the best plan is to go
  back to the way that part of the code was before revision 1.10.
  
  Could you try the following patch?
 
 Thank you for the patch!  Yes, it works.  Right after I sent
 out my message I tried an almost identical patch which also
 worked but, as I said I don't understand this code, didn't
 have time to understand it and my patch seemed a bit hacky so
 I kept quiet.  Actually this whole routine seems hacky -- why
 look up udp when you are told explicitly to use tcp?  Oh
 well, I should keep quiet until I really understand it:-)

Ian, can you commit this fix?

-Alfred

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



mount_nfs -T breakage

2002-07-24 Thread Bakul Shah

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 -  1.9
+++ rpcb_clnt.c 11 Jul 2002 16:23:04 -  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 [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message