]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/nfsexport.c
2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
[nfs-utils.git] / support / nfs / nfsexport.c
index 97de651ab080a1490cc2784ab0bd0874ee401a69..782cc50806a9a5771c4d1084454c273f0e9ee3a4 100644 (file)
@@ -42,13 +42,15 @@ exp_unexp(struct nfsctl_export *exp, int export)
        if (f == NULL) return -1;
        qword_print(f, exp->ex_client);
        qword_print(f, exp->ex_path);
-       qword_printint(f, 0x7fffffff);
        if (export) {
+               qword_printint(f, 0x7fffffff);
                qword_printint(f, exp->ex_flags);
                qword_printint(f, exp->ex_anon_uid);
                qword_printint(f, exp->ex_anon_gid);
                qword_printint(f, exp->ex_dev);
-       }
+       } else
+               qword_printint(f, 1);
+
        qword_eol(f);
        fclose(f);
 
@@ -61,9 +63,12 @@ exp_unexp(struct nfsctl_export *exp, int export)
                qword_printint(f,1);
                fsid = exp->ex_dev;
                qword_printhex(f, (char*)&fsid, 4);
-               qword_printint(f, 0x7fffffff);
-               if (export)
+               if (export) {
+                       qword_printint(f, 0x7fffffff);
                        qword_print(f, exp->ex_path);
+               } else
+                       qword_printint(f, 1);
+
                qword_eol(f);
        }
        qword_print(f,exp->ex_client);
@@ -73,9 +78,11 @@ exp_unexp(struct nfsctl_export *exp, int export)
        inode = stb.st_ino; memcpy(fsidstr+4, &inode, 4);
        
        qword_printhex(f, fsidstr, 8);
-       qword_printint(f, 0x7fffffff);
-       if (export)
+       if (export) {
+               qword_printint(f, 0x7fffffff);
                qword_print(f, exp->ex_path);
+       } else
+               qword_printint(f, 1);
        qword_eol(f);
        fclose(f);
        return 0;
@@ -86,7 +93,7 @@ nfsexport(struct nfsctl_export *exp)
 {
        struct nfsctl_arg       arg;
        int fd;
-       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_RDWR))>= 0) {
+       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_WRONLY))>= 0) {
                close(fd);
                return exp_unexp(exp, 1);
        }
@@ -101,7 +108,7 @@ nfsunexport(struct nfsctl_export *exp)
        struct nfsctl_arg       arg;
 
        int fd;
-       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_RDWR))>= 0) {
+       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_WRONLY))>= 0) {
                close(fd);
                return exp_unexp(exp, 0);
        }