types: remove the [u_]quad type and replace with [u]int64
[deb_libnfs.git] / nfs / nfs.x
index c259aa6e3cf3ff6dc7b96f3d34dc60b095f1951c..ab874a002b0309c2fc23489252373d2f8453d4b9 100644 (file)
--- a/nfs/nfs.x
+++ b/nfs/nfs.x
@@ -1,5 +1,35 @@
-/* NFS part from rfc 1813, NFSACL part is from wireshark sources */
-
+/*
+Copyright (c) 2014, Ronnie Sahlberg
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer. 
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies, 
+either expressed or implied, of the FreeBSD Project.
+*/
+
+/*
+ * NFS v3 Definitions
+ */
 const NFS3_FHSIZE    = 64;    /* Maximum bytes in a V3 file handle */
 const NFS3_WRITEVERFSIZE = 8;
 const NFS3_CREATEVERFSIZE = 8;
@@ -7,16 +37,7 @@ const NFS3_COOKIEVERFSIZE = 8;
 
 typedef opaque cookieverf3[NFS3_COOKIEVERFSIZE];
 
-
-/*unsigned hyper can be overridden by giving rpcgen -DU_INT64_PLATTFORM_TYPE="foo" - for plattforms
-  where rpcgen doesn't know anything about hyper
-  default to unsigned hyper as of rfc 1813 */
-#ifndef U_INT64_PLATTFORM_TYPE
-#define U_INT64_PLATTFORM_TYPE unsigned hyper
-#endif/*U_INT64_PLATTFORM_TYPE*/
-
-typedef U_INT64_PLATTFORM_TYPE uint64;
-typedef uint64 cookie3;
+typedef uint64_t cookie3;
 
 struct nfs_fh3 {
        opaque       data<NFS3_FHSIZE>;
@@ -45,9 +66,9 @@ typedef unsigned int uid3;
 
 typedef unsigned int gid3;
 
-typedef uint64 size3;
+typedef uint64_t size3;
 
-typedef uint64 fileid3;
+typedef uint64_t fileid3;
 
 struct specdata3 {
        unsigned int specdata1;
@@ -68,7 +89,7 @@ struct fattr3 {
        size3        size;
        size3        used;
        specdata3    rdev;
-       uint64       fsid;
+       uint64_t     fsid;
        fileid3      fileid;
        nfstime3     atime;
        nfstime3     mtime;
@@ -121,7 +142,7 @@ enum stable_how {
        FILE_SYNC = 2
 };
 
-typedef uint64 offset3;
+typedef uint64_t offset3;
 
 typedef unsigned int count3;
 
@@ -777,7 +798,338 @@ union SETATTR3res switch (nfsstat3 status) {
                SETATTR3resfail resfail;
 };
 
+/*
+ * NFS v2 Definitions
+ * We share many definitions from v3
+ */
+const FHSIZE2 = 32;
+typedef opaque fhandle2[FHSIZE2];
+
+enum ftype2 {
+       NF2NON    = 0,
+       NF2REG    = 1,
+       NF2DIR    = 2,
+       NF2BLK    = 3,
+       NF2CHR    = 4,
+       NF2LNK    = 5
+};
+
+struct fattr2 {
+       ftype2       type;
+       unsigned int mode;
+       unsigned int nlink;
+       unsigned int uid;
+       unsigned int gid;
+       unsigned int size;
+       unsigned int blocksize;
+       unsigned int rdev;
+       unsigned int blocks;
+       unsigned int fsid;
+       unsigned int fileid;
+       nfstime3 atime;
+       nfstime3 mtime;
+       nfstime3 ctime;
+};
+
+struct sattr2 {
+       unsigned int mode;
+       unsigned int uid;
+       unsigned int gid;
+       unsigned int size;
+       nfstime3     atime;
+       nfstime3     mtime;
+};
+
+const MAXNAMLEN2 = 255;
+typedef string filename2<MAXNAMLEN2>;
+
+const MAXPATHLEN2 = 1024;
+typedef string path2<MAXPATHLEN2>;
+
+const NFSMAXDATA2 = 8192;
+typedef opaque nfsdata2<NFSMAXDATA2>;
+
+const NFSCOOKIESIZE2 = 4;
+typedef opaque nfscookie2[NFSCOOKIESIZE2];
+
+struct entry2 {
+       unsigned int fileid;
+       filename2 name;
+       nfscookie2 cookie;
+       entry2 *nextentry;
+};
+
+struct diropargs2 {
+       fhandle2  dir;
+       filename2 name;
+};
+
+struct GETATTR2args {
+       fhandle2 fhandle;
+};
+
+struct GETATTR2resok {
+       fattr2 attributes;
+};
+
+union GETATTR2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               GETATTR2resok resok;
+       default:
+               void;
+};
+
+struct SETATTR2args {
+       fhandle2 fhandle;
+        sattr2 attributes;
+};
+
+struct SETATTR2resok {
+       fattr2 attributes;
+};
+
+union SETATTR2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               SETATTR2resok resok;
+       default:
+               void;
+};
+
+struct LOOKUP2args {
+       diropargs2 what;
+};
+
+struct LOOKUP2resok {
+       fhandle2 file;
+       fattr2   attributes;
+};
+
+union LOOKUP2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               LOOKUP2resok resok;
+       default:
+               void;
+};
+
+struct READLINK2args {
+       fhandle2 file;
+};
+
+struct READLINK2resok {
+       path2 data;
+};
+
+union READLINK2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               READLINK2resok resok;
+       default:
+               void;
+};
+
+struct READ2args {
+       fhandle2 file;
+       unsigned int offset;
+       unsigned int count;
+       unsigned int totalcount;
+};
+
+struct READ2resok {
+       fattr2   attributes;
+       nfsdata2 data;
+};
+
+union READ2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               READ2resok resok;
+       default:
+               void;
+};
+
+struct WRITE2args {
+       fhandle2 file;
+       unsigned int beginoffset;
+       unsigned int offset;
+       unsigned int totalcount;
+       nfsdata2 data;
+};
+
+struct WRITE2resok {
+       fattr2 attributes;
+};
+
+union WRITE2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               WRITE2resok resok;
+       default:
+               void;
+};
+
+struct CREATE2args {
+       diropargs2 where;
+        sattr2 attributes;
+};
+
+struct CREATE2resok {
+       fhandle2 file;
+       fattr2   attributes;
+};
+
+union CREATE2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               CREATE2resok resok;
+       default:
+               void;
+};
+
+struct REMOVE2args {
+       diropargs2 what;
+};
+
+struct REMOVE2res {
+       nfsstat3 status;
+};
+
+struct RENAME2args {
+       diropargs2 from;
+       diropargs2 to;
+};
+
+struct RENAME2res {
+       nfsstat3 status;
+};
+
+struct LINK2args {
+       fhandle2 from;
+       diropargs2 to;
+};
+
+struct LINK2res {
+       nfsstat3 status;
+};
+
+struct SYMLINK2args {
+       diropargs2 from;
+       path2 to;
+        sattr2 attributes;
+};
+
+struct SYMLINK2res {
+       nfsstat3 status;
+};
+
+struct MKDIR2args {
+       diropargs2 where;
+        sattr2 attributes;
+};
+
+struct MKDIR2resok {
+       fhandle2 file;
+       fattr2   attributes;
+};
+
+union MKDIR2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               MKDIR2resok resok;
+       default:
+               void;
+};
+
+struct RMDIR2args {
+       diropargs2 what;
+};
+
+struct RMDIR2res {
+       nfsstat3 status;
+};
+
+struct READDIR2args {
+       fhandle2 dir;
+       nfscookie2 cookie;
+       unsigned int count;
+};
+
+struct READDIR2resok {
+       entry2 *entries;
+       bool    eof;
+};
+
+union READDIR2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               READDIR2resok resok;
+       default:
+               void;
+};
+
+struct STATFS2args {
+       fhandle2 dir;
+};
+
+struct STATFS2resok {
+       unsigned int tsize;
+       unsigned int bsize;
+       unsigned int blocks;
+       unsigned int bfree;
+       unsigned int bavail;
+};
+
+union STATFS2res switch (nfsstat3 status) {
+       case NFS3_OK:
+               STATFS2resok resok;
+       default:
+               void;
+};
+
 program NFS_PROGRAM {
+       version NFS_V2 {
+               void
+               NFS2_NULL(void)                    = 0;
+
+               GETATTR2res
+               NFS2_GETATTR(GETATTR2args)         = 1;
+
+               SETATTR2res
+               NFS2_SETATTR(SETATTR2args)         = 2;
+
+               LOOKUP2res
+               NFS2_LOOKUP(LOOKUP2args)           = 4;
+
+               READLINK2res
+               NFS2_READLINK(READLINK2args)       = 5;
+
+               READ2res
+               NFS2_READ(READ2args)               = 6;
+
+               WRITE2res
+               NFS2_WRITE(WRITE2args)             = 8;
+
+               CREATE2res
+               NFS2_CREATE(CREATE2args)           = 9;
+
+               REMOVE2res
+               NFS2_REMOVE(REMOVE2args)           = 10;
+
+               RENAME2res
+               NFS2_RENAME(RENAME2args)           = 11;
+
+               LINK2res
+               NFS2_LINK(LINK2args)               = 12;
+
+               SYMLINK2res
+               NFS2_SYMLINK(SYMLINK2args)         = 13;
+
+               MKDIR2res
+               NFS2_MKDIR(MKDIR2args)             = 14;
+
+               RMDIR2res
+               NFS2_RMDIR(RMDIR2args)             = 15;
+
+               READDIR2res
+               NFS2_READDIR(READDIR2args)         = 16;
+
+               STATFS2res
+               NFS2_STATFS(STATFS2args)           = 17;
+       } = 2;
+
        version NFS_V3 {
                void
                NFS3_NULL(void)                    = 0;