Add a pmap_getport_timeout() call hack that allows rpc.umntall to control
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 9 Nov 2003 07:10:16 +0000 (07:10 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 9 Nov 2003 07:10:16 +0000 (07:10 +0000)
pmap_getport()'s portmap timeout.  Otherwise rpc.umntall can hang for up
to 60 seconds per /var/db/mounttab entry during the boot sequence.

include/rpc/pmap_clnt.h
lib/libc/rpc/pmap_getport.c

index 2529b57..1bd0afe 100644 (file)
@@ -29,7 +29,7 @@
  *     from: @(#)pmap_clnt.h 1.11 88/02/08 SMI
  *     from: @(#)pmap_clnt.h   2.1 88/07/29 4.0 RPCSRC
  * $FreeBSD: src/include/rpc/pmap_clnt.h,v 1.11 1999/08/27 23:45:04 peter Exp $
- * $DragonFly: src/include/rpc/pmap_clnt.h,v 1.2 2003/06/17 04:25:58 dillon Exp $
+ * $DragonFly: src/include/rpc/pmap_clnt.h,v 1.3 2003/11/09 07:10:13 dillon Exp $
  */
 
 /*
@@ -41,6 +41,7 @@
 
 /*
  * Usage:
+ *     void pmap_getport_timeout(&otv, &ntv);
  *     success = pmap_set(program, version, protocol, port);
  *     success = pmap_unset(program, version);
  *     port = pmap_getport(address, program, version, protocol);
@@ -81,6 +82,8 @@ extern enum clnt_stat clnt_broadcast  __P((u_long, u_long, u_long,
                                                 struct sockaddr_in *))));
 extern u_short         pmap_getport    __P((struct sockaddr_in *,
                                             u_long, u_long, u_int));
+extern void            pmap_getport_timeout((struct timeval *otv,
+                                            struct timeval *ntv));
 __END_DECLS
 
 #endif /* !_RPC_PMAPCLNT_H */
index 100e52b..0414b30 100644 (file)
@@ -29,7 +29,7 @@
  * @(#)pmap_getport.c 1.9 87/08/11 Copyr 1984 Sun Micro
  * @(#)pmap_getport.c  2.2 88/08/01 4.0 RPCSRC
  * $FreeBSD: src/lib/libc/rpc/pmap_getport.c,v 1.10 2000/01/27 23:06:40 jasone Exp $
- * $DragonFly: src/lib/libc/rpc/pmap_getport.c,v 1.2 2003/06/17 04:26:45 dillon Exp $
+ * $DragonFly: src/lib/libc/rpc/pmap_getport.c,v 1.3 2003/11/09 07:10:16 dillon Exp $
  */
 
 /*
 static struct timeval timeout = { 5, 0 };
 static struct timeval tottimeout = { 60, 0 };
 
+/*
+ * Change the primary pmap_getport() timeout
+ */
+void
+pmap_getport_timeout(struct timeval *otv, struct timeval *ntv)
+{
+       if (otv)
+               *otv = tottimeout;
+       if (ntv)
+               tottimeout = *ntv;
+}
+
 /*
  * Find the mapped port for program,version.
  * Calls the pmap service remotely to do the lookup.