]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/exports.c
Imported Debian patch 1.0.7-8
[nfs-utils.git] / support / nfs / exports.c
index 4d8665c6be475ba905435fa2074078194f200909..7194c08e20b20652196565fbefc859470b8ac510 100644 (file)
@@ -87,8 +87,8 @@ getexportent(int fromkernel, int fromexports)
                ee.e_flags &= ~NFSEXP_GATHERED_WRITES;
        }
        ee.e_maptype = CLE_MAP_IDENT;
-       ee.e_anonuid = -2;
-       ee.e_anongid = -2;
+       ee.e_anonuid = 65534;
+       ee.e_anongid = 65534;
        ee.e_squids = NULL;
        ee.e_sqgids = NULL;
        ee.e_mountpoint = NULL;
@@ -161,7 +161,7 @@ putexportent(struct exportent *ep)
 
        fp = efp->x_fp;
        for (i=0; esc[i]; i++)
-               if (iscntrl(esc[i]) || esc[i] == '"' || esc[i] == '\\'|| isspace(esc[i]))
+               if (iscntrl(esc[i]) || esc[i] == '"' || esc[i] == '\\' || esc[i] == '#' || isspace(esc[i]))
                        fprintf(fp, "\\%03o", esc[i]);
                else
                        fprintf(fp, "%c", esc[i]);
@@ -173,7 +173,7 @@ putexportent(struct exportent *ep)
                                "" : "no_");
        fprintf(fp, "%shide,", (ep->e_flags & NFSEXP_NOHIDE)?
                                "no" : "");
-       fprintf(fp, "%scrossmnt,", (ep->e_flags & NFSEXP_CROSSMNT)?
+       fprintf(fp, "%scrossmnt,", (ep->e_flags & NFSEXP_CROSSMOUNT)?
                                "" : "no");
        fprintf(fp, "%ssecure,", (ep->e_flags & NFSEXP_INSECURE_PORT)?
                                "in" : "");
@@ -185,6 +185,8 @@ putexportent(struct exportent *ep)
                "no_" : "");
        fprintf(fp, "%ssecure_locks,", (ep->e_flags & NFSEXP_NOAUTHNLM)?
                "in" : "");
+       fprintf(fp, "%sacl,", (ep->e_flags & NFSEXP_NOACL)?
+               "no_" : "");
        if (ep->e_flags & NFSEXP_FSID) {
                fprintf(fp, "fsid=%d,", ep->e_fsid);
        }
@@ -263,8 +265,8 @@ mkexportent(char *hname, char *path, char *options)
 
        ee.e_flags = EXPORT_DEFAULT_FLAGS;
        ee.e_maptype = CLE_MAP_IDENT;
-       ee.e_anonuid = -2;
-       ee.e_anongid = -2;
+       ee.e_anonuid = 65534;
+       ee.e_anongid = 65534;
        ee.e_squids = NULL;
        ee.e_sqgids = NULL;
        ee.e_mountpoint = NULL;
@@ -347,9 +349,9 @@ parseopts(char *cp, struct exportent *ep, int warn)
                else if (!strcmp(opt, "hide"))
                        ep->e_flags &= ~NFSEXP_NOHIDE;
                else if (!strcmp(opt, "crossmnt"))
-                       ep->e_flags |= NFSEXP_CROSSMNT;
+                       ep->e_flags |= NFSEXP_CROSSMOUNT;
                else if (!strcmp(opt, "nocrossmnt"))
-                       ep->e_flags &= ~NFSEXP_CROSSMNT;
+                       ep->e_flags &= ~NFSEXP_CROSSMOUNT;
                else if (!strcmp(opt, "wdelay"))
                        ep->e_flags |= NFSEXP_GATHERED_WRITES;
                else if (!strcmp(opt, "no_wdelay"))
@@ -374,6 +376,10 @@ parseopts(char *cp, struct exportent *ep, int warn)
                        ep->e_flags &= ~NFSEXP_NOAUTHNLM;
                else if (strcmp(opt, "insecure_locks") == 0)
                        ep->e_flags |= NFSEXP_NOAUTHNLM;
+               else if (strcmp(opt, "acl") == 0)
+                       ep->e_flags &= ~NFSEXP_NOACL;
+               else if (strcmp(opt, "no_acl") == 0)
+                       ep->e_flags |= NFSEXP_NOACL;
                else if (strncmp(opt, "mapping=", 8) == 0)
                        ep->e_maptype = parsemaptype(opt+8);
                else if (strcmp(opt, "map_identity") == 0)      /* old style */
@@ -442,7 +448,7 @@ bad_option:
        ep->e_nsqgids = nsqgids;
 
 out:
-       if (warn && !had_sync_opt)
+       if (warn && !had_sync_opt && !(ep->e_flags & NFSEXP_READONLY))
                xlog(L_WARNING, "%s [%d]: No 'sync' or 'async' option specified for export \"%s:%s\".\n"
                                "  Assuming default behaviour ('sync').\n"
                                "  NOTE: this default has changed from previous versions\n",