X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmountd%2Fmountd.c;h=14f5fa26f9691238f3a15ec3577d41f4f1e8b72e;hp=1eeefdcf0ffa872211d177366717dd7f6f7bc00d;hb=63049fd3c95c67df5ac175c746f8ec9058f8a76c;hpb=82d42dffa84fb884684f75769ca13668c5188a5e diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c index 1eeefdc..14f5fa2 100644 --- a/utils/mountd/mountd.c +++ b/utils/mountd/mountd.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,7 @@ static struct option longopts[] = { "no-nfs-version", 1, 0, 'N' }, { "version", 0, 0, 'v' }, { "port", 1, 0, 'p' }, + { "no-tcp", 0, 0, 'n' }, { NULL, 0, 0, 0 } }; @@ -419,6 +421,9 @@ main(int argc, char **argv) case 'N': nfs_version &= ~(1 << (atoi (optarg) - 1)); break; + case 'n': + _rpcfdtype = SOCK_DGRAM; + break; case 'V': nfs_version |= 1 << (atoi (optarg) - 1); break; @@ -436,6 +441,12 @@ main(int argc, char **argv) if (optind != argc || !(nfs_version & 0x7)) usage(argv [0], 1); + if (chdir(NFS_STATEDIR)) { + fprintf(stderr, "%s: chdir(%s) failed: %s\n", + argv [0], NFS_STATEDIR, strerror(errno)); + exit(1); + } + /* Initialize logging. */ /* xlog_open("mountd"); */ @@ -445,16 +456,18 @@ main(int argc, char **argv) sigaction(SIGHUP, &sa, NULL); sigaction(SIGINT, &sa, NULL); sigaction(SIGTERM, &sa, NULL); + /* WARNING: the following works on Linux and SysV, but not BSD! */ + sigaction(SIGCHLD, &sa, NULL); if (nfs_version & 0x1) rpc_init("mountd", MOUNTPROG, MOUNTVERS, - mount_dispatch, port, 0); + mount_dispatch, port); if (nfs_version & (0x1 << 1)) rpc_init("mountd", MOUNTPROG, MOUNTVERS_POSIX, - mount_dispatch, port, 0); + mount_dispatch, port); if (nfs_version & (0x1 << 2)) rpc_init("mountd", MOUNTPROG, MOUNTVERS_NFSV3, - mount_dispatch, port, 0); + mount_dispatch, port); sa.sa_handler = killer; sigaction(SIGHUP, &sa, NULL); @@ -497,6 +510,6 @@ usage(const char *prog, int n) "Usage: %s [-Fhnv] [-d kind] [-f exports-file] [-V version]\n" " [-N version] [--debug kind] [-p|--port port] [--help] [--version]\n" " [--exports-file=file] [--nfs-version version]\n" -" [--no-nfs-version version]\n", prog); +" [--no-nfs-version version] [--no-tcp]\n", prog); exit(n); }