All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.