X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmountd%2Fv4root.c;h=34d098ad28d18ee3441f2a068b6acdae8122ea5d;hp=b4fdcce611d1fe3e6e7662d8731dc87693e58224;hb=bbee50bbebc245d4e1d496d046ff0ae04217612d;hpb=91bb95f2689e84856ecdf6fac365489d36709cf9 diff --git a/utils/mountd/v4root.c b/utils/mountd/v4root.c index b4fdcce..34d098a 100644 --- a/utils/mountd/v4root.c +++ b/utils/mountd/v4root.c @@ -46,6 +46,7 @@ static nfs_export pseudo_root = { .e_nsqgids = 0, .e_fsid = 0, .e_mountpoint = NULL, + .e_ttl = DEFAULT_TTL, }, .m_exported = 0, .m_xtabent = 1, @@ -54,13 +55,16 @@ static nfs_export pseudo_root = { .m_warned = 0, }; -void set_pseudofs_security(struct exportent *pseudo, struct exportent *source) +static void +set_pseudofs_security(struct exportent *pseudo, struct exportent *source) { struct sec_entry *se; int i; if (source->e_flags & NFSEXP_INSECURE_PORT) pseudo->e_flags |= NFSEXP_INSECURE_PORT; + if ((source->e_flags & NFSEXP_ROOTSQUASH) == 0) + pseudo->e_flags &= ~NFSEXP_ROOTSQUASH; for (se = source->e_secinfo; se->flav; se++) { struct sec_entry *new; @@ -91,7 +95,8 @@ v4root_create(char *path, nfs_export *export) exp = export_create(&eep, 0); if (exp == NULL) return NULL; - xlog(D_CALL, "v4root_create: path '%s'", exp->m_export.e_path); + xlog(D_CALL, "v4root_create: path '%s' flags 0x%x", + exp->m_export.e_path, exp->m_export.e_flags); return &exp->m_export; } @@ -117,7 +122,8 @@ v4root_support(void) return 0; } -int pseudofs_update(char *hostname, char *path, nfs_export *source) +static int +pseudofs_update(char *hostname, char *path, nfs_export *source) { nfs_export *exp; @@ -149,13 +155,13 @@ static int v4root_add_parents(nfs_export *exp) "pseudo export for '%s'", exp->m_export.e_path); return -ENOMEM; } - for (ptr = path + 1; ptr; ptr = strchr(ptr, '/')) { + for (ptr = path; ptr; ptr = strchr(ptr, '/')) { int ret; char saved; saved = *ptr; *ptr = '\0'; - ret = pseudofs_update(hostname, path, exp); + ret = pseudofs_update(hostname, *path ? path : "/", exp); if (ret) return ret; *ptr = saved;