X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmountd%2Fmountd.c;h=bcf5080a7351b522c436abd24712ae7ff1b43f76;hp=1a14a858813aefbfb45e9c9d55820cc86616882e;hb=014e00dfaea0efc92150e2aedc5ca43aa337545e;hpb=ef32b76ae37926faacaf4b8121eba638567c4692 diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c index 1a14a85..bcf5080 100644 --- a/utils/mountd/mountd.c +++ b/utils/mountd/mountd.c @@ -99,12 +99,9 @@ static int version_any(void) static void unregister_services (void) { - if (version2()) { - nfs_svc_unregister(MOUNTPROG, MOUNTVERS); - nfs_svc_unregister(MOUNTPROG, MOUNTVERS_POSIX); - } - if (version3()) - nfs_svc_unregister(MOUNTPROG, MOUNTVERS_NFSV3); + nfs_svc_unregister(MOUNTPROG, MOUNTVERS); + nfs_svc_unregister(MOUNTPROG, MOUNTVERS_POSIX); + nfs_svc_unregister(MOUNTPROG, MOUNTVERS_NFSV3); } static void @@ -474,27 +471,27 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, nfs_export **expret, /* Now authenticate the intruder... */ exp = auth_authenticate("mount", sap, p); if (exp == NULL) { - *error = NFSERR_ACCES; + *error = MNT3ERR_ACCES; return NULL; } if (stat(p, &stb) < 0) { xlog(L_WARNING, "can't stat exported dir %s: %s", p, strerror(errno)); if (errno == ENOENT) - *error = NFSERR_NOENT; + *error = MNT3ERR_NOENT; else - *error = NFSERR_ACCES; + *error = MNT3ERR_ACCES; return NULL; } if (!S_ISDIR(stb.st_mode) && !S_ISREG(stb.st_mode)) { xlog(L_WARNING, "%s is not a directory or regular file", p); - *error = NFSERR_NOTDIR; + *error = MNT3ERR_NOTDIR; return NULL; } if (stat(exp->m_export.e_path, &estb) < 0) { xlog(L_WARNING, "can't stat export point %s: %s", p, strerror(errno)); - *error = NFSERR_NOENT; + *error = MNT3ERR_NOENT; return NULL; } if (estb.st_dev != stb.st_dev @@ -502,7 +499,7 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, nfs_export **expret, || !(exp->m_export.e_flags & NFSEXP_CROSSMOUNT))) { xlog(L_WARNING, "request to export directory %s below nearest filesystem %s", p, exp->m_export.e_path); - *error = NFSERR_ACCES; + *error = MNT3ERR_ACCES; return NULL; } if (exp->m_export.e_mountpoint && @@ -511,7 +508,7 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, nfs_export **expret, exp->m_export.e_path)) { xlog(L_WARNING, "request to export an unmounted filesystem: %s", p); - *error = NFSERR_NOENT; + *error = MNT3ERR_NOENT; return NULL; } @@ -522,12 +519,12 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, nfs_export **expret, */ if (cache_export(exp, p)) { - *error = NFSERR_ACCES; + *error = MNT3ERR_ACCES; return NULL; } fh = cache_get_filehandle(exp, v3?64:32, p); if (fh == NULL) { - *error = NFSERR_ACCES; + *error = MNT3ERR_ACCES; return NULL; } } else { @@ -557,11 +554,11 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, nfs_export **expret, if (fh == NULL) { xlog(L_WARNING, "getfh failed: %s", strerror(errno)); - *error = NFSERR_ACCES; + *error = MNT3ERR_ACCES; return NULL; } } - *error = NFS_OK; + *error = MNT_OK; mountlist_add(host_ntop(sap, buf, sizeof(buf)), p); if (expret) *expret = exp; @@ -636,7 +633,7 @@ static void insert_group(struct exportnode *e, char *newname) struct groupnode *g; for (g = e->ex_groups; g; g = g->gr_next) - if (strcmp(g->gr_name, newname)) + if (!strcmp(g->gr_name, newname)) return; g = xmalloc(sizeof(*g)); @@ -840,6 +837,7 @@ main(int argc, char **argv) if (new_cache) cache_open(); + unregister_services(); if (version2()) { listeners += nfs_svc_create("mountd", MOUNTPROG, MOUNTVERS, mount_dispatch, port);