summaryrefslogtreecommitdiffstats
path: root/usr.sbin/amd
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>1997-03-22 23:12:08 +0000
committerjoerg <joerg@FreeBSD.org>1997-03-22 23:12:08 +0000
commit970092985ad879d26c5afed6caef706fc31d324d (patch)
tree303043223ee3e48c76507f5145b772cb2a2ee3b6 /usr.sbin/amd
parent761b22f4a33501b0c0f87df699d6b80300701a16 (diff)
downloadFreeBSD-src-970092985ad879d26c5afed6caef706fc31d324d.zip
FreeBSD-src-970092985ad879d26c5afed6caef706fc31d324d.tar.gz
Make the argument handling for select() less bogus. Also, move the
amq service from UDP to TCP for better reliability.
Diffstat (limited to 'usr.sbin/amd')
-rw-r--r--usr.sbin/amd/amd/nfs_start.c38
-rw-r--r--usr.sbin/amd/amq/amq.c6
2 files changed, 22 insertions, 22 deletions
diff --git a/usr.sbin/amd/amd/nfs_start.c b/usr.sbin/amd/amd/nfs_start.c
index fa10b5b..d2cfe0a 100644
--- a/usr.sbin/amd/amd/nfs_start.c
+++ b/usr.sbin/amd/amd/nfs_start.c
@@ -37,7 +37,7 @@
*
* @(#)nfs_start.c 8.1 (Berkeley) 6/6/93
*
- * $Id$
+ * $Id: nfs_start.c,v 1.4 1997/02/22 16:01:38 peter Exp $
*
*/
@@ -64,10 +64,13 @@ unsigned short nfs_port;
SVCXPRT *nfsxprt;
extern int fwd_sock;
-int max_fds = -1;
#define MASKED_SIGS (sigmask(SIGINT)|sigmask(SIGTERM)|sigmask(SIGCHLD)|sigmask(SIGHUP))
+#ifndef FD_SET
+#define FD_SETSIZE 32 /* XXX kludge. bind does it this way */
+#endif
+
#ifdef DEBUG
/*
* Check that we are not burning resources
@@ -173,7 +176,7 @@ static int rpc_pending_now()
#endif /* FD_SET */
tvv.tv_sec = tvv.tv_usec = 0;
- nsel = select(max_fds+1, &readfds, (int *) 0, (int *) 0, &tvv);
+ nsel = select(FD_SETSIZE, &readfds, (int *) 0, (int *) 0, &tvv);
if (nsel < 1)
return(0);
#ifdef FD_SET
@@ -188,7 +191,6 @@ static int rpc_pending_now()
static serv_state run_rpc(P_void)
{
- int dtbsz = max_fds + 1;
int smask = sigblock(MASKED_SIGS);
next_softclock = clocktime();
@@ -251,7 +253,7 @@ static serv_state run_rpc(P_void)
dlog("Select waits for Godot");
#endif /* DEBUG */
- nsel = do_select(smask, dtbsz, &readfds, &tvv);
+ nsel = do_select(smask, FD_SETSIZE, &readfds, &tvv);
switch (nsel) {
@@ -337,6 +339,7 @@ int mount_automounter(ppid)
int ppid;
{
int so = socket(AF_INET, SOCK_DGRAM, 0);
+ int so2 = socket(AF_INET, SOCK_STREAM, 0);
SVCXPRT *amqp;
int nmount;
@@ -345,11 +348,18 @@ int ppid;
return 1;
}
- if ((nfsxprt = svcudp_create(so)) == NULL ||
- (amqp = svcudp_create(so)) == NULL) {
+ if (so2 < 0 || bind_resv_port(so2, NULL) < 0) {
+ perror("Can't create privileged port");
+ return 1;
+ }
+ if ((nfsxprt = svcudp_create(so)) == NULL) {
plog(XLOG_FATAL, "cannot create rpc/udp service");
return 2;
}
+ if ((amqp = svctcp_create(so2, 0, 0)) == NULL) {
+ plog(XLOG_FATAL, "cannot create rpc/tcp service");
+ return 2;
+ }
if (!svc_register(nfsxprt, NFS_PROGRAM, NFS_VERSION, nfs_program_2, 0)) {
plog(XLOG_FATAL, "unable to register (NFS_PROGRAM, NFS_VERSION, 0)");
@@ -363,16 +373,6 @@ int ppid;
return 3;
/*
- * One or other of so, fwd_sock
- * must be the highest fd on
- * which to select.
- */
- if (so > max_fds)
- max_fds = so;
- if (fwd_sock > max_fds)
- max_fds = fwd_sock;
-
- /*
* Construct the root automount node
*/
make_root_node();
@@ -410,8 +410,8 @@ int ppid;
*/
unregister_amq();
- if (!svc_register(amqp, AMQ_PROGRAM, AMQ_VERSION, amq_program_1, IPPROTO_UDP)) {
- plog(XLOG_FATAL, "unable to register (AMQ_PROGRAM, AMQ_VERSION, udp)");
+ if (!svc_register(amqp, AMQ_PROGRAM, AMQ_VERSION, amq_program_1, IPPROTO_TCP)) {
+ plog(XLOG_FATAL, "unable to register (AMQ_PROGRAM, AMQ_VERSION, tcp)");
return 3;
}
#ifdef DEBUG
diff --git a/usr.sbin/amd/amq/amq.c b/usr.sbin/amd/amq/amq.c
index 082a681..a9ac71c 100644
--- a/usr.sbin/amd/amq/amq.c
+++ b/usr.sbin/amd/amq/amq.c
@@ -37,7 +37,7 @@
*
* @(#)amq.c 8.1 (Berkeley) 6/7/93
*
- * $Id$
+ * $Id: amq.c,v 1.4 1997/02/22 16:02:07 peter Exp $
*
*/
@@ -54,7 +54,7 @@ char copyright[] = "\
#endif /* not lint */
#ifndef lint
-static char rcsid[] = "$Id$";
+static char rcsid[] = "$Id: amq.c,v 1.4 1997/02/22 16:02:07 peter Exp $";
static char sccsid[] = "@(#)amq.c 8.1 (Berkeley) 6/7/93";
#endif /* not lint */
@@ -409,7 +409,7 @@ Usage: %s [-h host] [[-f] [-m] [-v] [-s]] | [[-u] directory ...]] |\n\
/*
* Create RPC endpoint
*/
- s = privsock(SOCK_STREAM);
+ s = RPC_ANYSOCK;
clnt = clnttcp_create(&server_addr, AMQ_PROGRAM, AMQ_VERSION, &s, 0, 0);
if (clnt == 0) {
close(s);
OpenPOWER on IntegriCloud