]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/export/xtab.c
1/ be less trusting of information in /var/lib/nfs/xtab. Add things to
[nfs-utils.git] / support / export / xtab.c
index c8adc0672b3c96ba67d18530d8e0bd3057aa2652..b0c309575313fcfc41ae1877b87b8dd8da136cfa 100644 (file)
 static int
 xtab_read(char *xtab, int is_export)
 {
+    /* is_export == 0  => reading /proc/fs/nfs/exports - we know these things are exported to kernel
+     * is_export == 1  => reading /var/lib/nfs/etab - these things are allowed to be exported
+     * is_export == 2  => reading /var/lib/nfs/xtab - these things might be known to kernel
+     */
        struct exportent        *xp;
        nfs_export              *exp;
        int                     lockid;
@@ -33,11 +37,18 @@ xtab_read(char *xtab, int is_export)
                    !(exp = export_create(xp))) {
                        continue;
                }
-               if (is_export) {
+               switch (is_export) {
+               case 0:
+                       exp->m_exported = 1;
+                       break;
+               case 1:
                        exp->m_xtabent = 1;
                        exp->m_mayexport = 1;
-               } else
-                       exp->m_exported = 1;
+                       break;
+               case 2:
+                       exp->m_exported = -1;/* may be exported */
+                       break;
+               }
        }
        endexportent();
        xfunlock(lockid);
@@ -53,7 +64,7 @@ xtab_mount_read(void)
                close(fd);
                return xtab_read(_PATH_PROC_EXPORTS, 0);
        } else
-               return xtab_read(_PATH_XTAB, 1);
+               return xtab_read(_PATH_XTAB, 2);
 }
 
 int