X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fmountd%2Fmountd.c;h=8779afed4a4fbb73ff59c3a3e1d6a93da15591be;hb=9a85442298a46c364ec71d54719d74eeb16088b8;hp=1cfdc7463c7344d8d6994de4b25c9397227f85d7;hpb=553ba8456a0303021564d7ad5640e8cb7ce7c7a7;p=nfs-utils.git diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c index 1cfdc74..8779afe 100644 --- a/utils/mountd/mountd.c +++ b/utils/mountd/mountd.c @@ -36,6 +36,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 } }; @@ -263,7 +264,7 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, int *error, int v3) } else { struct nfs_fh_len *fh; - if (!exp->m_exported) + if (exp->m_exported<1) export_export(exp); if (!exp->m_xtabent) xtab_append(exp); @@ -419,6 +420,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; @@ -445,16 +449,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 +503,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); }