Add protocol definitions for NFSv3. Use -DWANT_NFS3 with rpcgen to get
the new protocol. Obtained from: rfc1813
This commit is contained in:
parent
03dcce7f3d
commit
7538921e31
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=25000
@ -35,13 +35,16 @@
|
||||
%#ifndef lint
|
||||
%/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
|
||||
%/*static char sccsid[] = "from: @(#)mount.x 2.1 88/08/01 4.0 RPCSRC";*/
|
||||
%static char rcsid[] = "$Id$";
|
||||
%static char rcsid[] = "$Id: mount.x,v 1.3 1997/02/23 09:17:29 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */
|
||||
const MNTNAMLEN = 255; /* maximum bytes in a name argument */
|
||||
const FHSIZE = 32; /* size in bytes of a file handle */
|
||||
#ifdef WANT_NFS3
|
||||
const FHSIZE3 = 64; /* size in bytes of a file handle (v3) */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The fhandle is the file handle that the server passes to the client.
|
||||
@ -50,6 +53,9 @@ const FHSIZE = 32; /* size in bytes of a file handle */
|
||||
* server needs to distinguish an individual file.
|
||||
*/
|
||||
typedef opaque fhandle[FHSIZE];
|
||||
#ifdef WANT_NFS3
|
||||
typedef opaque fhandle3<FHSIZE3>;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If a status of zero is returned, the call completed successfully, and
|
||||
@ -63,6 +69,36 @@ default:
|
||||
void;
|
||||
};
|
||||
|
||||
#ifdef WANT_NFS3
|
||||
/*
|
||||
* Status codes returned by the version 3 mount call.
|
||||
*/
|
||||
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 */
|
||||
};
|
||||
|
||||
struct mountres3_ok {
|
||||
fhandle3 fhandle;
|
||||
int auth_flavors<>;
|
||||
};
|
||||
|
||||
union mountres3 switch (mountstat3 fhs_status) {
|
||||
case 0:
|
||||
mountres3_ok mountinfo;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The type dirpath is the pathname of a directory
|
||||
*/
|
||||
@ -105,8 +141,10 @@ struct exportnode {
|
||||
program MOUNTPROG {
|
||||
/*
|
||||
* Version one of the mount protocol communicates with version two
|
||||
* of the NFS protocol. The only connecting point is the fhandle
|
||||
* structure, which is the same for both protocols.
|
||||
* of the NFS protocol. Version three communicates with
|
||||
* version three of the NFS protocol. The only connecting
|
||||
* point is the fhandle structure, which is the same for both
|
||||
* protocols.
|
||||
*/
|
||||
version MOUNTVERS {
|
||||
/*
|
||||
@ -162,4 +200,57 @@ program MOUNTPROG {
|
||||
exports
|
||||
MOUNTPROC_EXPORTALL(void) = 6;
|
||||
} = 1;
|
||||
#ifdef WANT_NFS3
|
||||
version MOUNTVERS3 {
|
||||
/*
|
||||
* Does no work. It is made available in all RPC services
|
||||
* to allow server reponse testing and timing
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_NULL(void) = 0;
|
||||
|
||||
/*
|
||||
* If mountres3.fhs_status is MNT3_OK, then
|
||||
* mountres3.mountinfo contains the file handle for
|
||||
* the directory and a list of acceptable
|
||||
* authentication flavors. This file handle may only
|
||||
* be used in the NFS version 3 protocol. This
|
||||
* procedure also results in the server adding a new
|
||||
* entry to its mount list recording that this client
|
||||
* has mounted the directory. AUTH_UNIX authentication
|
||||
* or better is required.
|
||||
*/
|
||||
mountres3
|
||||
MOUNTPROC_MNT(dirpath) = 1;
|
||||
|
||||
/*
|
||||
* Returns the list of remotely mounted filesystems. The
|
||||
* mountlist contains one entry for each hostname and
|
||||
* directory pair.
|
||||
*/
|
||||
mountlist
|
||||
MOUNTPROC_DUMP(void) = 2;
|
||||
|
||||
/*
|
||||
* Removes the mount list entry for the directory
|
||||
* Unix authentication required.
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_UMNT(dirpath) = 3;
|
||||
|
||||
/*
|
||||
* Removes all of the mount list entries for this client
|
||||
* Unix authentication required.
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_UMNTALL(void) = 4;
|
||||
|
||||
/*
|
||||
* Returns a list of all the exported filesystems, and which
|
||||
* machines are allowed to import it.
|
||||
*/
|
||||
exports
|
||||
MOUNTPROC_EXPORT(void) = 5;
|
||||
} = 3;
|
||||
#endif
|
||||
} = 100005;
|
||||
|
@ -31,7 +31,7 @@
|
||||
%#ifndef lint
|
||||
%/*static char sccsid[] = "from: @(#)nfs_prot.x 1.2 87/10/12 Copyr 1987 Sun Micro";*/
|
||||
%/*static char sccsid[] = "from: @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
|
||||
%static char rcsid[] = "$Id$";
|
||||
%static char rcsid[] = "$Id: nfs_prot.x,v 1.3 1997/02/23 09:17:29 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
@ -294,6 +294,842 @@ default:
|
||||
void;
|
||||
};
|
||||
|
||||
#ifdef WANT_NFS3
|
||||
|
||||
/*
|
||||
* NFSv3 constants and types
|
||||
*/
|
||||
const NFS3_FHSIZE = 64; /* maximum size in bytes of a file handle */
|
||||
const NFS3_COOKIEVERFSIZE = 8; /* size of a cookie verifier for READDIR */
|
||||
const NFS3_CREATEVERFSIZE = 8; /* size of the verifier used for CREATE */
|
||||
const NFS3_WRITEVERFSIZE = 8; /* size of the verifier used for WRITE */
|
||||
|
||||
typedef unsigned hyper uint64;
|
||||
typedef hyper int64;
|
||||
typedef unsigned long uint32;
|
||||
typedef long 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;
|
||||
|
||||
/*
|
||||
* Error status (v3)
|
||||
*/
|
||||
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
|
||||
};
|
||||
|
||||
/*
|
||||
* File types (v3)
|
||||
*/
|
||||
enum ftype3 {
|
||||
NF3REG = 1, /* regular file */
|
||||
NF3DIR = 2, /* directory */
|
||||
NF3BLK = 3, /* block special */
|
||||
NF3CHR = 4, /* character special */
|
||||
NF3LNK = 5, /* symbolic link */
|
||||
NF3SOCK = 6, /* unix domain sockets */
|
||||
NF3FIFO = 7 /* named pipe */
|
||||
};
|
||||
|
||||
struct specdata3 {
|
||||
uint32 specdata1;
|
||||
uint32 specdata2;
|
||||
};
|
||||
|
||||
/*
|
||||
* File access handle (v3)
|
||||
*/
|
||||
struct nfs_fh3 {
|
||||
opaque data<NFS3_FHSIZE>;
|
||||
};
|
||||
|
||||
/*
|
||||
* Timeval (v3)
|
||||
*/
|
||||
struct nfstime3 {
|
||||
uint32 seconds;
|
||||
uint32 nseconds;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* File attributes (v3)
|
||||
*/
|
||||
struct fattr3 {
|
||||
ftype3 type; /* file type */
|
||||
mode3 mode; /* protection mode bits */
|
||||
uint32 nlink; /* # hard links */
|
||||
uid3 uid; /* owner user id */
|
||||
gid3 gid; /* owner group id */
|
||||
size3 size; /* file size in bytes */
|
||||
size3 used; /* prefered block size */
|
||||
specdata3 rdev; /* special device # */
|
||||
uint64 fsid; /* device # */
|
||||
fileid3 fileid; /* inode # */
|
||||
nfstime3 atime; /* time of last access */
|
||||
nfstime3 mtime; /* time of last modification */
|
||||
nfstime3 ctime; /* time of last change */
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* File attributes which can be set (v3)
|
||||
*/
|
||||
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 mode;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
union set_gid3 switch (bool set_it) {
|
||||
case TRUE:
|
||||
gid3 mode;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
union set_size3 switch (bool set_it) {
|
||||
case TRUE:
|
||||
size3 mode;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
union set_atime switch (time_how set_it) {
|
||||
case SET_TO_CLIENT_TIME:
|
||||
atime mode;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
union set_mtime switch (time_how set_it) {
|
||||
case SET_TO_CLIENT_TIME:
|
||||
mtime mode;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
struct sattr3 {
|
||||
set_mode3 mode;
|
||||
set_uid3 uid;
|
||||
set_gid3 gid;
|
||||
set_size3 size;
|
||||
set_atime atime;
|
||||
set_mtime mtime;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments for directory operations (v3)
|
||||
*/
|
||||
struct diropargs3 {
|
||||
nfs_fh3 dir; /* directory file handle */
|
||||
filename3 name; /* name (up to NFS_MAXNAMLEN bytes) */
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to getattr (v3).
|
||||
*/
|
||||
struct GETATTR3args {
|
||||
nfs_fh3 object;
|
||||
};
|
||||
|
||||
struct GETATTR3resok {
|
||||
fattr3 obj_attributes;
|
||||
};
|
||||
|
||||
union GETATTR3res switch (nfsstat3 status) {
|
||||
case NFS3_OK:
|
||||
GETATTR3resok resok;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to setattr (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to lookup (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to access (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to readlink (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to read (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to write (v3).
|
||||
*/
|
||||
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 comitted;
|
||||
writeverf3 verf;
|
||||
};
|
||||
|
||||
struct WRITE3resfail {
|
||||
wcc_data file_wcc;
|
||||
};
|
||||
|
||||
union WRITE3res switch (nfsstat3 status) {
|
||||
case NFS3_OK:
|
||||
WRITE3resok resok;
|
||||
default:
|
||||
WRITE3resfail resfail;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to create (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to mkdir (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to symlink (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to mknod (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to remove (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to rmdir (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to rename (v3).
|
||||
*/
|
||||
struct RENAME3args {
|
||||
diropargs3 from;
|
||||
diropargs3 to;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to link (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to readdir (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to readdirplus (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to fsstat (v3).
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to fsinfo (v3).
|
||||
*/
|
||||
const FSF3_LINK = 0x0001;
|
||||
const FSF3_SYMLINK = 0x0002;
|
||||
const FSF3_HOMOGENEOUS = 0x0008;
|
||||
const FSF3_CANSETTIME = 0x0010;
|
||||
|
||||
struct FSINFO3args {
|
||||
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;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to pathconf (v3).
|
||||
*/
|
||||
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:
|
||||
FSINFO3resok resok;
|
||||
default:
|
||||
FSINFO3resfail resfail;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to commit (v3).
|
||||
*/
|
||||
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:
|
||||
FSINFO3resok resok;
|
||||
default:
|
||||
FSINFO3resfail resfail;
|
||||
};
|
||||
|
||||
#endif /* WANT_NFS3 */
|
||||
|
||||
/*
|
||||
* Remote file service routines
|
||||
*/
|
||||
@ -353,5 +1189,75 @@ program NFS_PROGRAM {
|
||||
statfsres
|
||||
NFSPROC_STATFS(nfs_fh) = 17;
|
||||
} = 2;
|
||||
#ifdef WANT_NFS3
|
||||
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;
|
||||
#endif
|
||||
} = 100003;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user