linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Weston Andros Adamson <dros@primarydata.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH pynfs 12/17] add mntv3, portmapv2 and nfsv3 .x files
Date: Wed, 4 Jun 2014 22:34:44 -0400	[thread overview]
Message-ID: <20140605023444.GD12044@fieldses.org> (raw)
In-Reply-To: <1401915726-29092-13-git-send-email-dros@primarydata.com>

On Wed, Jun 04, 2014 at 05:02:00PM -0400, Weston Andros Adamson wrote:
> mntv3 and nfsv3 .x files made from IETF specs by Tom Haynes
> <thomas.haynes@primarydata.com>.

Some folks actually submitted v3 client code at some point and I never
managed to get it merged.  Maybe I should dig that up again while we're
doing this....  But probably it's still out of scope.

--b.

> 
> portmap2 .x files made from IETF specs by Weston Andros Adamson
> <dros@primarydata.com>.
> 
> Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
> ---
>  nfs4.1/xdrdef/mnt3.x    |  68 ++++
>  nfs4.1/xdrdef/nfs3.x    | 818 ++++++++++++++++++++++++++++++++++++++++++++++++
>  nfs4.1/xdrdef/portmap.x |  51 +++
>  3 files changed, 937 insertions(+)
>  create mode 100644 nfs4.1/xdrdef/mnt3.x
>  create mode 100644 nfs4.1/xdrdef/nfs3.x
>  create mode 100644 nfs4.1/xdrdef/portmap.x
> 
> diff --git a/nfs4.1/xdrdef/mnt3.x b/nfs4.1/xdrdef/mnt3.x
> new file mode 100644
> index 0000000..b632322
> --- /dev/null
> +++ b/nfs4.1/xdrdef/mnt3.x
> @@ -0,0 +1,68 @@
> +const MNTPATHLEN = 1024;   /* Maximum bytes in a path name */
> +const MNTNAMLEN = 255;     /* Maximum bytes in a name */
> +const FHSIZE3 = 64;        /* Maximum bytes in a V3 file handle */
> +
> +typedef opaque  fhandle3 <FHSIZE3>;
> +typedef string  dirpath <MNTPATHLEN>;
> +typedef string  name <MNTNAMLEN>;
> +
> +struct mountres3_ok {
> +        fhandle3        fhandle;
> +        int             auth_flavors <>;
> +};
> +
> +union mountres3 switch (mountstat3 fhs_status) {
> +case MNT3_OK:
> +        mountres3_ok mountinfo;
> +default:
> +        void;
> +};
> +
> +struct mountbody {
> +        name            ml_hostname;
> +        dirpath         ml_directory;
> +        mountlist       ml_next;
> +};
> +
> +typedef mountbody *mountlist;
> +
> +
> +struct groupnode {
> +        name            gr_name;
> +        groups          gr_next;
> +};
> +
> +typedef groupnode *groups;
> +
> +
> +struct exportnode {
> +        dirpath         ex_dir;
> +        groups          ex_groups;
> +        exports         ex_next;
> +};
> +
> +typedef exportnode *exports;
> +
> +enum mountstat3 {
> +        MNT3_OK = 0,                     /* no error */
> +        MNT3ERR_PERM = 1,                /* Not owner */
> +        MNT3ERR_NOENT = 2,               /* No such file or directory */
> +        MNT3ERR_IO = 5,                  /* I/O error */
> +        MNT3ERR_ACCES = 13,              /* Permission denied */
> +        MNT3ERR_NOTDIR = 20,             /* Not a directory */
> +        MNT3ERR_INVAL = 22,              /* Invalid argument */
> +        MNT3ERR_NAMETOOLONG = 63,        /* Filename too long */
> +        MNT3ERR_NOTSUPP = 10004,         /* Operation not supported */
> +        MNT3ERR_SERVERFAULT = 10006      /* A failure on the server */
> +};
> +
> +program MOUNT_PROGRAM {
> +        version MOUNT_V3 {
> +                void            MOUNTPROC3_NULL(void) = 0;
> +                mountres3       MOUNTPROC3_MNT(dirpath) = 1;
> +                mountlist       MOUNTPROC3_DUMP(void) = 2;
> +                void            MOUNTPROC3_UMNT(dirpath) = 3;
> +                void            MOUNTPROC3_UMNTALL(void) = 4;
> +                exports         MOUNTPROC3_EXPORT(void) = 5;
> +        } = 3;
> +} = 100005;
> diff --git a/nfs4.1/xdrdef/nfs3.x b/nfs4.1/xdrdef/nfs3.x
> new file mode 100644
> index 0000000..ddd1395
> --- /dev/null
> +++ b/nfs4.1/xdrdef/nfs3.x
> @@ -0,0 +1,818 @@
> +const NFS3_FHSIZE = 64;        /* Maximum bytes in a V3 file handle */
> +
> +const FALSE = 0;
> +const TRUE = 1;
> +
> +const NFS3_COOKIEVERFSIZE = 8;
> +const NFS3_CREATEVERFSIZE = 8;
> +const NFS3_WRITEVERFSIZE = 8;
> +
> +typedef unsigned hyper uint64;
> +typedef hyper   int64;
> +typedef unsigned int uint32;
> +typedef int    int32;
> +typedef string  filename3 <>;
> +typedef string  nfspath3 <>;
> +typedef uint64  fileid3;
> +typedef uint64  cookie3;
> +typedef opaque  cookieverf3[NFS3_COOKIEVERFSIZE];
> +typedef opaque  createverf3[NFS3_CREATEVERFSIZE];
> +typedef opaque  writeverf3[NFS3_WRITEVERFSIZE];
> +typedef uint32  uid3;
> +typedef uint32  gid3;
> +typedef uint64  size3;
> +typedef uint64  offset3;
> +typedef uint32  mode3;
> +typedef uint32  count3;
> +
> +enum nfsstat3 {
> +        NFS3_OK = 0,
> +        NFS3ERR_PERM = 1,
> +        NFS3ERR_NOENT = 2,
> +        NFS3ERR_IO = 5,
> +        NFS3ERR_NXIO = 6,
> +        NFS3ERR_ACCES = 13,
> +        NFS3ERR_EXIST = 17,
> +        NFS3ERR_XDEV = 18,
> +        NFS3ERR_NODEV = 19,
> +        NFS3ERR_NOTDIR = 20,
> +        NFS3ERR_ISDIR = 21,
> +        NFS3ERR_INVAL = 22,
> +        NFS3ERR_FBIG = 27,
> +        NFS3ERR_NOSPC = 28,
> +        NFS3ERR_ROFS = 30,
> +        NFS3ERR_MLINK = 31,
> +        NFS3ERR_NAMETOOLONG = 63,
> +        NFS3ERR_NOTEMPTY = 66,
> +        NFS3ERR_DQUOT = 69,
> +        NFS3ERR_STALE = 70,
> +        NFS3ERR_REMOTE = 71,
> +        NFS3ERR_BADHANDLE = 10001,
> +        NFS3ERR_NOT_SYNC = 10002,
> +        NFS3ERR_BAD_COOKIE = 10003,
> +        NFS3ERR_NOTSUPP = 10004,
> +        NFS3ERR_TOOSMALL = 10005,
> +        NFS3ERR_SERVERFAULT = 10006,
> +        NFS3ERR_BADTYPE = 10007,
> +        NFS3ERR_JUKEBOX = 10008
> +};
> +
> +enum ftype3 {
> +        NF3REG = 1,
> +        NF3DIR = 2,
> +        NF3BLK = 3,
> +        NF3CHR = 4,
> +        NF3LNK = 5,
> +        NF3SOCK = 6,
> +        NF3FIFO = 7
> +};
> +
> +struct specdata3 {
> +        uint32          specdata1;
> +        uint32          specdata2;
> +};
> +
> +struct nfs_fh3 {
> +        opaque          data <NFS3_FHSIZE>;
> +};
> +
> +struct nfstime3 {
> +        uint32          seconds;
> +        uint32          nseconds;
> +};
> +
> +struct fattr3 {
> +        ftype3          type;
> +        mode3           mode;
> +        uint32          nlink;
> +        uid3            uid;
> +        gid3            gid;
> +        size3           size;
> +        size3           used;
> +        specdata3       rdev;
> +        uint64          fsid;
> +        fileid3         fileid;
> +        nfstime3        atime;
> +        nfstime3        mtime;
> +        nfstime3        ctime;
> +};
> +
> +union post_op_attr switch (bool attributes_follow) {
> +case TRUE:
> +        fattr3 attributes;
> +case FALSE:
> +        void;
> +};
> +
> +struct wcc_attr {
> +        size3           size;
> +        nfstime3        mtime;
> +        nfstime3        ctime;
> +};
> +
> +union pre_op_attr switch (bool attributes_follow) {
> +case TRUE:
> +        wcc_attr attributes;
> +case FALSE:
> +        void;
> +};
> +
> +struct wcc_data {
> +        pre_op_attr     before;
> +        post_op_attr    after;
> +};
> +
> +union post_op_fh3 switch (bool handle_follows) {
> +case TRUE:
> +        nfs_fh3 handle;
> +case FALSE:
> +        void;
> +};
> +
> +enum time_how {
> +        DONT_CHANGE = 0,
> +        SET_TO_SERVER_TIME = 1,
> +        SET_TO_CLIENT_TIME = 2
> +};
> +
> +union set_mode3 switch (bool set_it) {
> +case TRUE:
> +        mode3 mode;
> +default:
> +        void;
> +};
> +
> +union set_uid3 switch (bool set_it) {
> +case TRUE:
> +        uid3 uid;
> +default:
> +        void;
> +};
> +
> +union set_gid3 switch (bool set_it) {
> +case TRUE:
> +        gid3 gid;
> +default:
> +        void;
> +};
> +
> +union set_size3 switch (bool set_it) {
> +case TRUE:
> +        size3 size;
> +default:
> +        void;
> +};
> +
> +union set_atime switch (time_how set_it) {
> +case SET_TO_CLIENT_TIME:
> +        nfstime3 atime;
> +default:
> +        void;
> +};
> +
> +union set_mtime switch (time_how set_it) {
> +case SET_TO_CLIENT_TIME:
> +        nfstime3 mtime;
> +default:
> +        void;
> +};
> +
> +struct sattr3 {
> +        set_mode3       mode;
> +        set_uid3        uid;
> +        set_gid3        gid;
> +        set_size3       size;
> +        set_atime       atime;
> +        set_mtime       mtime;
> +};
> +
> +struct diropargs3 {
> +        nfs_fh3         dir;
> +        filename3       name;
> +};
> +
> +struct GETATTR3args {
> +        nfs_fh3         object;
> +};
> +
> +struct GETATTR3resok {
> +        fattr3          obj_attributes;
> +};
> +
> +union GETATTR3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        GETATTR3resok resok;
> +default:
> +        void;
> +};
> +
> +union sattrguard3 switch (bool check) {
> +case TRUE:
> +        nfstime3 obj_ctime;
> +case FALSE:
> +        void;
> +};
> +
> +struct SETATTR3args {
> +        nfs_fh3         object;
> +        sattr3          new_attributes;
> +        sattrguard3     guard;
> +};
> +
> +struct SETATTR3resok {
> +        wcc_data        obj_wcc;
> +};
> +
> +struct SETATTR3resfail {
> +        wcc_data        obj_wcc;
> +};
> +
> +union SETATTR3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        SETATTR3resok resok;
> +default:
> +        SETATTR3resfail resfail;
> +};
> +
> +struct LOOKUP3args {
> +        diropargs3      what;
> +};
> +
> +struct LOOKUP3resok {
> +        nfs_fh3         object;
> +        post_op_attr    obj_attributes;
> +        post_op_attr    dir_attributes;
> +};
> +
> +struct LOOKUP3resfail {
> +        post_op_attr    dir_attributes;
> +};
> +
> +union LOOKUP3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        LOOKUP3resok resok;
> +default:
> +        LOOKUP3resfail resfail;
> +};
> +
> +const           ACCESS3_READ = 0x0001;
> +const           ACCESS3_LOOKUP = 0x0002;
> +const           ACCESS3_MODIFY = 0x0004;
> +const           ACCESS3_EXTEND = 0x0008;
> +const           ACCESS3_DELETE = 0x0010;
> +const           ACCESS3_EXECUTE = 0x0020;
> +
> +struct ACCESS3args {
> +        nfs_fh3         object;
> +        uint32          access;
> +};
> +
> +struct ACCESS3resok {
> +        post_op_attr    obj_attributes;
> +        uint32          access;
> +};
> +
> +struct ACCESS3resfail {
> +        post_op_attr    obj_attributes;
> +};
> +
> +union ACCESS3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        ACCESS3resok resok;
> +default:
> +        ACCESS3resfail resfail;
> +};
> +
> +struct READLINK3args {
> +        nfs_fh3         symlink;
> +};
> +
> +struct READLINK3resok {
> +        post_op_attr    symlink_attributes;
> +        nfspath3        data;
> +};
> +
> +struct READLINK3resfail {
> +        post_op_attr    symlink_attributes;
> +};
> +
> +union READLINK3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        READLINK3resok resok;
> +default:
> +        READLINK3resfail resfail;
> +};
> +
> +struct READ3args {
> +        nfs_fh3         file;
> +        offset3         offset;
> +        count3          count;
> +};
> +
> +struct READ3resok {
> +        post_op_attr    file_attributes;
> +        count3          count;
> +        bool            eof;
> +        opaque          data <>;
> +};
> +
> +struct READ3resfail {
> +        post_op_attr    file_attributes;
> +};
> +
> +union READ3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        READ3resok resok;
> +default:
> +        READ3resfail resfail;
> +};
> +
> +enum stable_how {
> +        UNSTABLE = 0,
> +        DATA_SYNC = 1,
> +        FILE_SYNC = 2
> +};
> +
> +struct WRITE3args {
> +        nfs_fh3         file;
> +        offset3         offset;
> +        count3          count;
> +        stable_how      stable;
> +        opaque          data <>;
> +};
> +
> +struct WRITE3resok {
> +        wcc_data        file_wcc;
> +        count3          count;
> +        stable_how      committed;
> +        writeverf3      verf;
> +};
> +
> +struct WRITE3resfail {
> +        wcc_data        file_wcc;
> +};
> +
> +union WRITE3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        WRITE3resok resok;
> +default:
> +        WRITE3resfail resfail;
> +};
> +
> +enum createmode3 {
> +        UNCHECKED = 0,
> +        GUARDED = 1,
> +        EXCLUSIVE = 2
> +};
> +
> +union createhow3 switch (createmode3 mode) {
> +case UNCHECKED:
> +case GUARDED:
> +        sattr3 obj_attributes;
> +case EXCLUSIVE:
> +        createverf3 verf;
> +};
> +
> +struct CREATE3args {
> +        diropargs3      where;
> +        createhow3      how;
> +};
> +
> +struct CREATE3resok {
> +        post_op_fh3     obj;
> +        post_op_attr    obj_attributes;
> +        wcc_data        dir_wcc;
> +};
> +
> +struct CREATE3resfail {
> +        wcc_data        dir_wcc;
> +};
> +
> +union CREATE3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        CREATE3resok resok;
> +default:
> +        CREATE3resfail resfail;
> +};
> +
> +struct MKDIR3args {
> +        diropargs3      where;
> +        sattr3          attributes;
> +};
> +
> +struct MKDIR3resok {
> +        post_op_fh3     obj;
> +        post_op_attr    obj_attributes;
> +        wcc_data        dir_wcc;
> +};
> +
> +struct MKDIR3resfail {
> +        wcc_data        dir_wcc;
> +};
> +
> +union MKDIR3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        MKDIR3resok resok;
> +default:
> +        MKDIR3resfail resfail;
> +};
> +
> +struct symlinkdata3 {
> +        sattr3          symlink_attributes;
> +        nfspath3        symlink_data;
> +};
> +
> +struct SYMLINK3args {
> +        diropargs3      where;
> +        symlinkdata3    symlink;
> +};
> +
> +struct SYMLINK3resok {
> +        post_op_fh3     obj;
> +        post_op_attr    obj_attributes;
> +        wcc_data        dir_wcc;
> +};
> +
> +struct SYMLINK3resfail {
> +        wcc_data        dir_wcc;
> +};
> +
> +union SYMLINK3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        SYMLINK3resok resok;
> +default:
> +        SYMLINK3resfail resfail;
> +};
> +
> +struct devicedata3 {
> +        sattr3          dev_attributes;
> +        specdata3       spec;
> +};
> +
> +union mknoddata3 switch (ftype3 type) {
> +case NF3CHR:
> +case NF3BLK:
> +        devicedata3 device;
> +case NF3SOCK:
> +case NF3FIFO:
> +        sattr3 pipe_attributes;
> +default:
> +        void;
> +};
> +
> +struct MKNOD3args {
> +        diropargs3      where;
> +        mknoddata3      what;
> +};
> +
> +struct MKNOD3resok {
> +        post_op_fh3     obj;
> +        post_op_attr    obj_attributes;
> +        wcc_data        dir_wcc;
> +};
> +
> +struct MKNOD3resfail {
> +        wcc_data        dir_wcc;
> +};
> +
> +union MKNOD3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        MKNOD3resok resok;
> +default:
> +        MKNOD3resfail resfail;
> +};
> +
> +struct REMOVE3args {
> +        diropargs3      object;
> +};
> +
> +struct REMOVE3resok {
> +        wcc_data        dir_wcc;
> +};
> +
> +struct REMOVE3resfail {
> +        wcc_data        dir_wcc;
> +};
> +
> +union REMOVE3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        REMOVE3resok resok;
> +default:
> +        REMOVE3resfail resfail;
> +};
> +
> +struct RMDIR3args {
> +        diropargs3      object;
> +};
> +
> +struct RMDIR3resok {
> +        wcc_data        dir_wcc;
> +};
> +
> +struct RMDIR3resfail {
> +        wcc_data        dir_wcc;
> +};
> +
> +union RMDIR3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        RMDIR3resok resok;
> +default:
> +        RMDIR3resfail resfail;
> +};
> +
> +struct RENAME3args {
> +        diropargs3      fromfile;
> +        diropargs3      tofile;
> +};
> +
> +struct RENAME3resok {
> +        wcc_data        fromdir_wcc;
> +        wcc_data        todir_wcc;
> +};
> +
> +struct RENAME3resfail {
> +        wcc_data        fromdir_wcc;
> +        wcc_data        todir_wcc;
> +};
> +
> +union RENAME3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        RENAME3resok resok;
> +default:
> +        RENAME3resfail resfail;
> +};
> +
> +struct LINK3args {
> +        nfs_fh3         file;
> +        diropargs3      link;
> +};
> +
> +struct LINK3resok {
> +        post_op_attr    file_attributes;
> +        wcc_data        linkdir_wcc;
> +};
> +
> +struct LINK3resfail {
> +        post_op_attr    file_attributes;
> +        wcc_data        linkdir_wcc;
> +};
> +
> +union LINK3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        LINK3resok resok;
> +default:
> +        LINK3resfail resfail;
> +};
> +
> +struct READDIR3args {
> +        nfs_fh3         dir;
> +        cookie3         cookie;
> +        cookieverf3     cookieverf;
> +        count3          count;
> +};
> +
> +struct entry3 {
> +        fileid3         fileid;
> +        filename3       name;
> +        cookie3         cookie;
> +        entry3         *nextentry;
> +};
> +
> +struct dirlist3 {
> +        entry3         *entries;
> +        bool            eof;
> +};
> +
> +struct READDIR3resok {
> +        post_op_attr    dir_attributes;
> +        cookieverf3     cookieverf;
> +        dirlist3        reply;
> +};
> +
> +struct READDIR3resfail {
> +        post_op_attr    dir_attributes;
> +};
> +
> +union READDIR3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        READDIR3resok resok;
> +default:
> +        READDIR3resfail resfail;
> +};
> +
> +struct READDIRPLUS3args {
> +        nfs_fh3         dir;
> +        cookie3         cookie;
> +        cookieverf3     cookieverf;
> +        count3          dircount;
> +        count3          maxcount;
> +};
> +
> +struct entryplus3 {
> +        fileid3         fileid;
> +        filename3       name;
> +        cookie3         cookie;
> +        post_op_attr    name_attributes;
> +        post_op_fh3     name_handle;
> +        entryplus3     *nextentry;
> +};
> +
> +struct dirlistplus3 {
> +        entryplus3     *entries;
> +        bool            eof;
> +};
> +
> +struct READDIRPLUS3resok {
> +        post_op_attr    dir_attributes;
> +        cookieverf3     cookieverf;
> +        dirlistplus3    reply;
> +};
> +
> +struct READDIRPLUS3resfail {
> +        post_op_attr    dir_attributes;
> +};
> +
> +union READDIRPLUS3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        READDIRPLUS3resok resok;
> +default:
> +        READDIRPLUS3resfail resfail;
> +};
> +
> +struct FSSTAT3args {
> +        nfs_fh3         fsroot;
> +};
> +
> +struct FSSTAT3resok {
> +        post_op_attr    obj_attributes;
> +        size3           tbytes;
> +        size3           fbytes;
> +        size3           abytes;
> +        size3           tfiles;
> +        size3           ffiles;
> +        size3           afiles;
> +        uint32          invarsec;
> +};
> +
> +struct FSSTAT3resfail {
> +        post_op_attr    obj_attributes;
> +};
> +
> +union FSSTAT3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        FSSTAT3resok resok;
> +default:
> +        FSSTAT3resfail resfail;
> +};
> +
> +const           FSF3_LINK = 0x0001;
> +const           FSF3_SYMLINK = 0x0002;
> +const           FSF3_HOMOGENEOUS = 0x0008;
> +const           FSF3_CANSETTIME = 0x0010;
> +
> +struct FSINFOargs {
> +        nfs_fh3         fsroot;
> +};
> +
> +struct FSINFO3resok {
> +        post_op_attr    obj_attributes;
> +        uint32          rtmax;
> +        uint32          rtpref;
> +        uint32          rtmult;
> +        uint32          wtmax;
> +        uint32          wtpref;
> +        uint32          wtmult;
> +        uint32          dtpref;
> +        size3           maxfilesize;
> +        nfstime3        time_delta;
> +        uint32          properties;
> +};
> +
> +struct FSINFO3resfail {
> +        post_op_attr    obj_attributes;
> +};
> +
> +union FSINFO3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        FSINFO3resok resok;
> +default:
> +        FSINFO3resfail resfail;
> +};
> +
> +struct PATHCONF3args {
> +        nfs_fh3         object;
> +};
> +
> +struct PATHCONF3resok {
> +        post_op_attr    obj_attributes;
> +        uint32          linkmax;
> +        uint32          name_max;
> +        bool            no_trunc;
> +        bool            chown_restricted;
> +        bool            case_insensitive;
> +        bool            case_preserving;
> +};
> +
> +struct PATHCONF3resfail {
> +        post_op_attr    obj_attributes;
> +};
> +
> +union PATHCONF3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        PATHCONF3resok resok;
> +default:
> +        PATHCONF3resfail resfail;
> +};
> +
> +struct COMMIT3args {
> +        nfs_fh3         file;
> +        offset3         offset;
> +        count3          count;
> +};
> +
> +struct COMMIT3resok {
> +        wcc_data        file_wcc;
> +        writeverf3      verf;
> +};
> +
> +struct COMMIT3resfail {
> +        wcc_data        file_wcc;
> +};
> +
> +union COMMIT3res switch (nfsstat3 status) {
> +case NFS3_OK:
> +        COMMIT3resok resok;
> +default:
> +        COMMIT3resfail resfail;
> +};
> +
> +program         NFS_PROGRAM {
> +        version         NFS_V3 {
> +
> +                void
> +                NFSPROC3_NULL(void) = 0;
> +
> +                GETATTR3res
> +                NFSPROC3_GETATTR(GETATTR3args) = 1;
> +
> +                SETATTR3res
> +                NFSPROC3_SETATTR(SETATTR3args) = 2;
> +
> +                LOOKUP3res
> +                NFSPROC3_LOOKUP(LOOKUP3args) = 3;
> +
> +                ACCESS3res
> +                NFSPROC3_ACCESS(ACCESS3args) = 4;
> +
> +                READLINK3res
> +                NFSPROC3_READLINK(READLINK3args) = 5;
> +
> +                READ3res
> +                NFSPROC3_READ(READ3args) = 6;
> +
> +                WRITE3res
> +                NFSPROC3_WRITE(WRITE3args) = 7;
> +
> +                CREATE3res
> +                NFSPROC3_CREATE(CREATE3args) = 8;
> +
> +                MKDIR3res
> +                NFSPROC3_MKDIR(MKDIR3args) = 9;
> +
> +                SYMLINK3res
> +                NFSPROC3_SYMLINK(SYMLINK3args) = 10;
> +
> +                MKNOD3res
> +                NFSPROC3_MKNOD(MKNOD3args) = 11;
> +
> +                REMOVE3res
> +                NFSPROC3_REMOVE(REMOVE3args) = 12;
> +
> +                RMDIR3res
> +                NFSPROC3_RMDIR(RMDIR3args) = 13;
> +
> +                RENAME3res
> +                NFSPROC3_RENAME(RENAME3args) = 14;
> +
> +                LINK3res
> +                NFSPROC3_LINK(LINK3args) = 15;
> +
> +                READDIR3res
> +                NFSPROC3_READDIR(READDIR3args) = 16;
> +
> +                READDIRPLUS3res
> +                NFSPROC3_READDIRPLUS(READDIRPLUS3args) = 17;
> +
> +                FSSTAT3res
> +                NFSPROC3_FSSTAT(FSSTAT3args) = 18;
> +
> +                FSINFO3res
> +                NFSPROC3_FSINFO(FSINFO3args) = 19;
> +
> +                PATHCONF3res
> +                NFSPROC3_PATHCONF(PATHCONF3args) = 20;
> +
> +                COMMIT3res
> +                NFSPROC3_COMMIT(COMMIT3args) = 21;
> +        } = 3;
> +} = 100003;
> diff --git a/nfs4.1/xdrdef/portmap.x b/nfs4.1/xdrdef/portmap.x
> new file mode 100644
> index 0000000..1158d4e
> --- /dev/null
> +++ b/nfs4.1/xdrdef/portmap.x
> @@ -0,0 +1,51 @@
> +const PMAP_PORT = 111;      /* portmapper port number */
> +
> +struct mapping {
> +	unsigned int prog;
> +	unsigned int vers;
> +	unsigned int prot;
> +	unsigned int port;
> +};
> +
> +const IPPROTO_TCP = 6;      /* protocol number for TCP/IP */
> +const IPPROTO_UDP = 17;     /* protocol number for UDP/IP */
> +
> +struct pmaplist {
> +	mapping map;
> +	pmaplist next;
> +};
> +
> +struct call_args {
> +	unsigned int prog;
> +	unsigned int vers;
> +	unsigned int proc;
> +	opaque args<>;
> +};
> +
> +struct call_result {
> +	unsigned int port;
> +	opaque res<>;
> +};
> +
> +program PMAP_PROG {
> +	version PMAP_VERS {
> +		void
> +		PMAPPROC_NULL(void)         = 0;
> +
> +		bool
> +		PMAPPROC_SET(mapping)       = 1;
> +
> +		bool
> +		PMAPPROC_UNSET(mapping)     = 2;
> +
> +		unsigned int
> +		PMAPPROC_GETPORT(mapping)   = 3;
> +
> +		pmaplist
> +		PMAPPROC_DUMP(void)         = 4;
> +
> +		call_result
> +		PMAPPROC_CALLIT(call_args)  = 5;
> +	} = 2;
> +} = 100000;
> +
> -- 
> 1.8.5.2 (Apple Git-48)
> 

  reply	other threads:[~2014-06-05  2:34 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-04 21:01 [PATCH pynfs 00/17] prep for flex file layout server Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 01/17] 4.1 client: reclaim_complete after create_session Weston Andros Adamson
2014-06-05  2:26   ` J. Bruce Fields
2014-06-05 12:54     ` Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 02/17] 4.1 server: service RECLAIM_COMPLETE operations Weston Andros Adamson
2014-06-05  2:29   ` J. Bruce Fields
2014-06-05 12:22     ` Trond Myklebust
2014-06-05 12:58       ` Weston Andros Adamson
2014-06-05 13:06         ` J. Bruce Fields
2014-06-05 13:18           ` Weston Andros Adamson
2014-06-05 13:34             ` Weston Andros Adamson
2014-06-05 13:41               ` J. Bruce Fields
2014-06-05 13:49                 ` Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 03/17] dataserver: only catch connection error Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 04/17] 4.1 server: avoid traceback in DS disconnect() Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 06/17] 4.1 client: remove unused imports Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 07/17] 4.1 server: add -v flag & silence random output Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 08/17] 4.1 server: add -s option to print summary of ops Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 09/17] dataserver: make generic interface to ops Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 10/17] dataserver: don't import * from nfs4 specific mods Weston Andros Adamson
2014-06-04 21:01 ` [PATCH pynfs 11/17] 4.1 server: move nfs4_ops.py to nfs_ops.py Weston Andros Adamson
2014-06-04 21:02 ` [PATCH pynfs 12/17] add mntv3, portmapv2 and nfsv3 .x files Weston Andros Adamson
2014-06-05  2:34   ` J. Bruce Fields [this message]
2014-06-04 21:02 ` [PATCH pynfs 13/17] dataserver: separate generic and 4.1 code Weston Andros Adamson
2014-06-04 21:02 ` [PATCH pynfs 14/17] 4.1 server: add support for NFSv3 data servers Weston Andros Adamson
2014-06-04 21:02 ` [PATCH pynfs 15/17] 4.1 server: get rid of old op_getdeviceinfo Weston Andros Adamson
2014-06-04 21:02 ` [PATCH pynfs 15/17] nfs41 svr: " Weston Andros Adamson
2014-06-04 21:02 ` [PATCH pynfs 16/17] rpc: on socket error, close and mark pipe inactive Weston Andros Adamson
2014-06-04 21:02 ` [PATCH pynfs 17/17] nfs3clnt: reconnect when sending on inactive pipe Weston Andros Adamson
     [not found] ` <1401915726-29092-6-git-send-email-dros@primarydata.com>
2014-06-05  2:31   ` [PATCH pynfs 05/17] move .x files to subdir 'xdrdef' J. Bruce Fields
2014-06-05 12:51     ` Weston Andros Adamson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140605023444.GD12044@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=dros@primarydata.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).