X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnfs%2Fnfsexport.c;h=782cc50806a9a5771c4d1084454c273f0e9ee3a4;hp=97de651ab080a1490cc2784ab0bd0874ee401a69;hb=f73e7b9f69835d483cee95e6a20b6307b9d16b77;hpb=f6a8d3907cd24a4c255234b0161c868763736fdf diff --git a/support/nfs/nfsexport.c b/support/nfs/nfsexport.c index 97de651..782cc50 100644 --- a/support/nfs/nfsexport.c +++ b/support/nfs/nfsexport.c @@ -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); }