From b25694320f2bdd79de82f2003209b8229eafff36 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Tue, 1 Dec 2009 07:20:43 -0500 Subject: [PATCH] exports: turn on pseudo exports If a pseudo root is not defined in the export file, the v4root_needed global variable will be set, signaling v4root_set() create the dynamic pseudo root. Signed-off-by: Steve Dickson --- support/export/xtab.c | 6 ++++++ utils/mountd/auth.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/support/export/xtab.c b/support/export/xtab.c index 3b1dcce..2a43193 100644 --- a/support/export/xtab.c +++ b/support/export/xtab.c @@ -19,7 +19,9 @@ #include "exportfs.h" #include "xio.h" #include "xlog.h" +#include "v4root.h" +int v4root_needed; static void cond_rename(char *newfile, char *oldfile); static int @@ -36,6 +38,8 @@ xtab_read(char *xtab, char *lockfn, int is_export) if ((lockid = xflock(lockfn, "r")) < 0) return 0; setexportent(xtab, "r"); + if (is_export == 1) + v4root_needed = 1; while ((xp = getexportent(is_export==0, 0)) != NULL) { if (!(exp = export_lookup(xp->e_hostname, xp->e_path, is_export != 1)) && !(exp = export_create(xp, is_export!=1))) { @@ -48,6 +52,8 @@ xtab_read(char *xtab, char *lockfn, int is_export) case 1: exp->m_xtabent = 1; exp->m_mayexport = 1; + if ((xp->e_flags & NFSEXP_FSID) && xp->e_fsid == 0) + v4root_needed = 0; break; case 2: exp->m_exported = -1;/* may be exported */ diff --git a/utils/mountd/auth.c b/utils/mountd/auth.c index 5a7ff8c..2ed80bc 100644 --- a/utils/mountd/auth.c +++ b/utils/mountd/auth.c @@ -20,6 +20,7 @@ #include "exportfs.h" #include "mountd.h" #include "xmalloc.h" +#include "v4root.h" enum auth_error { @@ -102,6 +103,8 @@ auth_reload() memset(&my_client, 0, sizeof(my_client)); xtab_export_read(); check_useipaddr(); + v4root_set(); + ++counter; return counter; -- 2.39.2