]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mountd/cache.c
Since
[nfs-utils.git] / utils / mountd / cache.c
index 9bbbfb3c3a6cc3a4c616eefd64a3a0d300004f9b..e4e2f228f848a458a9d6e30a3c6e02ef8b43bec1 100644 (file)
@@ -564,7 +564,7 @@ static void write_fsloc(FILE *f, struct exportent *ep, char *path)
        release_replicas(servers);
 }
 
-static void write_secinfo(FILE *f, struct exportent *ep)
+static void write_secinfo(FILE *f, struct exportent *ep, int flag_mask)
 {
        struct sec_entry *p;
 
@@ -578,7 +578,7 @@ static void write_secinfo(FILE *f, struct exportent *ep)
        qword_printint(f, p - ep->e_secinfo);
        for (p = ep->e_secinfo; p->flav; p++) {
                qword_printint(f, p->flav->fnum);
-               qword_printint(f, p->flags);
+               qword_printint(f, p->flags & flag_mask);
        }
 
 }
@@ -590,16 +590,14 @@ static int dump_to_cache(FILE *f, char *domain, char *path, struct exportent *ex
        qword_printint(f, time(0)+30*60);
        if (exp) {
                int different_fs = strcmp(path, exp->e_path) != 0;
-               
-               if (different_fs)
-                       qword_printint(f, exp->e_flags & ~NFSEXP_FSID);
-               else
-                       qword_printint(f, exp->e_flags);
+               int flag_mask = different_fs ? ~NFSEXP_FSID : ~0;
+
+               qword_printint(f, exp->e_flags & flag_mask);
                qword_printint(f, exp->e_anonuid);
                qword_printint(f, exp->e_anongid);
                qword_printint(f, exp->e_fsid);
                write_fsloc(f, exp, path);
-               write_secinfo(f, exp);
+               write_secinfo(f, exp, flag_mask);
                if (exp->e_uuid == NULL || different_fs) {
                        char u[16];
                        if (get_uuid(path, NULL, 16, u)) {