]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mountd/v4root.c
mountd: prepend '$' to make use_ipaddr clients self-describing
[nfs-utils.git] / utils / mountd / v4root.c
index 81f813bde067777d4b357c86a2ea30a7d1bf0eee..708eb614b92cc88aee2fa752c7cf1abf0a998c3f 100644 (file)
@@ -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,
@@ -149,13 +150,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;
@@ -192,6 +193,13 @@ v4root_set()
                                 */
                                continue;
 
+                       if (strcmp(exp->m_export.e_path, "/") == 0 &&
+                           !(exp->m_export.e_flags & NFSEXP_FSID)) {
+                               /* Force '/' to be exported as fsid == 0*/
+                               exp->m_export.e_flags |= NFSEXP_FSID;
+                               exp->m_export.e_fsid = 0;
+                       }
+
                        v4root_add_parents(exp);
                        /* XXX: error handling! */
                }