aboutsummaryrefslogtreecommitdiff
path: root/nfsd/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'nfsd/main.c')
-rw-r--r--nfsd/main.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/nfsd/main.c b/nfsd/main.c
index 69099361..ee071090 100644
--- a/nfsd/main.c
+++ b/nfsd/main.c
@@ -1,5 +1,5 @@
/* Main NFS server program
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 2002 Free Software Foundation, Inc.
Written by Michael I. Bushnell, p/BSG.
This file is part of the GNU Hurd.
@@ -23,16 +23,20 @@
#include <unistd.h>
#include <rpc/pmap_prot.h>
#include <maptime.h>
+#include <hurd.h>
+#include <error.h>
int main_udp_socket, pmap_udp_socket;
struct sockaddr_in main_address, pmap_address;
-char *index_file_name;
+static char index_file[] = LOCALSTATEDIR "/state/misc/nfsd.index";
+char *index_file_name = index_file;
int
main (int argc, char **argv)
{
int nthreads;
-
+ int fail;
+
if (argc > 2)
{
fprintf (stderr, "%s [num-threads]\n", argv[0]);
@@ -44,9 +48,8 @@ main (int argc, char **argv)
nthreads = atoi (argv[1]);
if (!nthreads)
nthreads = 4;
-
- index_file_name = asprintf ("%s/state/misc/nfsd.index", LOCALSTATEDIR);
+ authserver = getauth ();
maptime_map (0, 0, &mapped_time);
main_address.sin_family = AF_INET;
@@ -58,16 +61,25 @@ main (int argc, char **argv)
main_udp_socket = socket (PF_INET, SOCK_DGRAM, 0);
pmap_udp_socket = socket (PF_INET, SOCK_DGRAM, 0);
- bind (main_udp_socket, (struct sockaddr *)&main_address,
- sizeof (struct sockaddr_in));
- bind (pmap_udp_socket, (struct sockaddr *)&pmap_address,
- sizeof (struct sockaddr_in));
+ fail = bind (main_udp_socket, (struct sockaddr *)&main_address,
+ sizeof (struct sockaddr_in));
+ if (fail)
+ error (1, errno, "Binding NFS socket");
+
+ fail = bind (pmap_udp_socket, (struct sockaddr *)&pmap_address,
+ sizeof (struct sockaddr_in));
+ if (fail)
+ error (1, errno, "Binding PMAP socket");
init_filesystems ();
+ cthread_detach (cthread_fork ((cthread_fn_t) server_loop,
+ (any_t)(intptr_t) pmap_udp_socket));
+
while (nthreads--)
- cthread_detach (cthread_fork ((cthread_fn_t) server_loop, 0));
-
+ cthread_detach (cthread_fork ((cthread_fn_t) server_loop,
+ (any_t)(intptr_t) main_udp_socket));
+
for (;;)
{
sleep (1);