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)
>
next prev parent 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).