xref: /csrg-svn/usr.sbin/amd/rpcx/nfs_prot.h (revision 52457)
149685Spendry /*
249685Spendry  * Copyright (c) 1990 Jan-Simon Pendry
349685Spendry  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
449685Spendry  * Copyright (c) 1990 The Regents of the University of California.
549685Spendry  * All rights reserved.
649685Spendry  *
749685Spendry  * This code is derived from software contributed to Berkeley by
849685Spendry  * Jan-Simon Pendry at Imperial College, London.
949685Spendry  *
1049685Spendry  * %sccs.include.redist.c%
1149685Spendry  *
12*52457Spendry  *	@(#)nfs_prot.h	5.4 (Berkeley) 02/09/92
1349685Spendry  *
14*52457Spendry  * $Id: nfs_prot.h,v 5.2.2.1 1992/02/09 15:09:29 jsp beta $
1549685Spendry  *
1649685Spendry  */
1744928Smckusick 
1844928Smckusick #define	xdr_nfsstat xdr_enum
1944928Smckusick #define	xdr_ftype xdr_enum
2044928Smckusick 
2144928Smckusick #define NFS_PORT 2049
2244928Smckusick #define NFS_MAXDATA 8192
2344928Smckusick #define NFS_MAXPATHLEN 1024
2444928Smckusick #define NFS_MAXNAMLEN 255
2544928Smckusick #define NFS_FHSIZE 32
2644928Smckusick #define NFS_COOKIESIZE 4
2744928Smckusick #define NFS_FIFO_DEV -1
2844928Smckusick #define NFSMODE_FMT 0170000
2944928Smckusick #define NFSMODE_DIR 0040000
3044928Smckusick #define NFSMODE_CHR 0020000
3144928Smckusick #define NFSMODE_BLK 0060000
3244928Smckusick #define NFSMODE_REG 0100000
3344928Smckusick #define NFSMODE_LNK 0120000
3444928Smckusick #define NFSMODE_SOCK 0140000
3544928Smckusick #define NFSMODE_FIFO 0010000
3644928Smckusick 
3744928Smckusick enum nfsstat {
3844928Smckusick 	NFS_OK = 0,
3944928Smckusick 	NFSERR_PERM = 1,
4044928Smckusick 	NFSERR_NOENT = 2,
4144928Smckusick 	NFSERR_IO = 5,
4244928Smckusick 	NFSERR_NXIO = 6,
4344928Smckusick 	NFSERR_ACCES = 13,
4444928Smckusick 	NFSERR_EXIST = 17,
4544928Smckusick 	NFSERR_NODEV = 19,
4644928Smckusick 	NFSERR_NOTDIR = 20,
4744928Smckusick 	NFSERR_ISDIR = 21,
4844928Smckusick 	NFSERR_FBIG = 27,
4944928Smckusick 	NFSERR_NOSPC = 28,
5044928Smckusick 	NFSERR_ROFS = 30,
5144928Smckusick 	NFSERR_NAMETOOLONG = 63,
5244928Smckusick 	NFSERR_NOTEMPTY = 66,
5344928Smckusick 	NFSERR_DQUOT = 69,
5444928Smckusick 	NFSERR_STALE = 70,
5544928Smckusick 	NFSERR_WFLUSH = 99
5644928Smckusick };
5744928Smckusick typedef enum nfsstat nfsstat;
5844928Smckusick bool_t xdr_nfsstat();
5944928Smckusick 
6044928Smckusick 
6144928Smckusick enum ftype {
6244928Smckusick 	NFNON = 0,
6344928Smckusick 	NFREG = 1,
6444928Smckusick 	NFDIR = 2,
6544928Smckusick 	NFBLK = 3,
6644928Smckusick 	NFCHR = 4,
6744928Smckusick 	NFLNK = 5,
6844928Smckusick 	NFSOCK = 6,
6944928Smckusick 	NFBAD = 7,
7044928Smckusick 	NFFIFO = 8
7144928Smckusick };
7244928Smckusick typedef enum ftype ftype;
7344928Smckusick /* static bool_t xdr_ftype(); */
7444928Smckusick 
7544928Smckusick 
7644928Smckusick struct nfs_fh {
7744928Smckusick 	char data[NFS_FHSIZE];
7844928Smckusick };
7944928Smckusick typedef struct nfs_fh nfs_fh;
8044928Smckusick bool_t xdr_nfs_fh();
8144928Smckusick 
8244928Smckusick 
8344928Smckusick struct nfstime {
8444928Smckusick 	u_int seconds;
8544928Smckusick 	u_int useconds;
8644928Smckusick };
8744928Smckusick typedef struct nfstime nfstime;
8844928Smckusick /* static bool_t xdr_nfstime(); */
8944928Smckusick 
9044928Smckusick 
9144928Smckusick struct fattr {
9244928Smckusick 	ftype type;
9344928Smckusick 	u_int mode;
9444928Smckusick 	u_int nlink;
9544928Smckusick 	u_int uid;
9644928Smckusick 	u_int gid;
9744928Smckusick 	u_int size;
9844928Smckusick 	u_int blocksize;
9944928Smckusick 	u_int rdev;
10044928Smckusick 	u_int blocks;
10144928Smckusick 	u_int fsid;
10244928Smckusick 	u_int fileid;
10344928Smckusick 	nfstime atime;
10444928Smckusick 	nfstime mtime;
10544928Smckusick 	nfstime ctime;
10644928Smckusick };
10744928Smckusick typedef struct fattr fattr;
10844928Smckusick /* static bool_t xdr_fattr(); */
10944928Smckusick 
11044928Smckusick 
11144928Smckusick struct sattr {
11244928Smckusick 	u_int mode;
11344928Smckusick 	u_int uid;
11444928Smckusick 	u_int gid;
11544928Smckusick 	u_int size;
11644928Smckusick 	nfstime atime;
11744928Smckusick 	nfstime mtime;
11844928Smckusick };
11944928Smckusick typedef struct sattr sattr;
12044928Smckusick /* static bool_t xdr_sattr(); */
12144928Smckusick 
12244928Smckusick 
12344928Smckusick typedef char *filename;
12444928Smckusick /* static bool_t xdr_filename(); */
12544928Smckusick 
12644928Smckusick 
12744928Smckusick typedef char *nfspath;
12844928Smckusick bool_t xdr_nfspath();
12944928Smckusick 
13044928Smckusick 
13144928Smckusick struct attrstat {
13244928Smckusick 	nfsstat status;
13344928Smckusick 	union {
13444928Smckusick 		fattr attributes;
13544928Smckusick 	} attrstat_u;
13644928Smckusick };
13744928Smckusick typedef struct attrstat attrstat;
13844928Smckusick bool_t xdr_attrstat();
13944928Smckusick 
14044928Smckusick 
14144928Smckusick struct sattrargs {
14244928Smckusick 	nfs_fh file;
14344928Smckusick 	sattr attributes;
14444928Smckusick };
14544928Smckusick typedef struct sattrargs sattrargs;
14644928Smckusick bool_t xdr_sattrargs();
14744928Smckusick 
14844928Smckusick 
14944928Smckusick struct diropargs {
15044928Smckusick 	nfs_fh dir;
15144928Smckusick 	filename name;
15244928Smckusick };
15344928Smckusick typedef struct diropargs diropargs;
15444928Smckusick bool_t xdr_diropargs();
15544928Smckusick 
15644928Smckusick 
15744928Smckusick struct diropokres {
15844928Smckusick 	nfs_fh file;
15944928Smckusick 	fattr attributes;
16044928Smckusick };
16144928Smckusick typedef struct diropokres diropokres;
16244928Smckusick bool_t xdr_diropokres();
16344928Smckusick 
16444928Smckusick 
16544928Smckusick struct diropres {
16644928Smckusick 	nfsstat status;
16744928Smckusick 	union {
16844928Smckusick 		diropokres diropres;
16944928Smckusick 	} diropres_u;
17044928Smckusick };
17144928Smckusick typedef struct diropres diropres;
17244928Smckusick bool_t xdr_diropres();
17344928Smckusick 
17444928Smckusick 
17544928Smckusick struct readlinkres {
17644928Smckusick 	nfsstat status;
17744928Smckusick 	union {
17844928Smckusick 		nfspath data;
17944928Smckusick 	} readlinkres_u;
18044928Smckusick };
18144928Smckusick typedef struct readlinkres readlinkres;
18244928Smckusick bool_t xdr_readlinkres();
18344928Smckusick 
18444928Smckusick 
18544928Smckusick struct readargs {
18644928Smckusick 	nfs_fh file;
18744928Smckusick 	u_int offset;
18844928Smckusick 	u_int count;
18944928Smckusick 	u_int totalcount;
19044928Smckusick };
19144928Smckusick typedef struct readargs readargs;
19244928Smckusick bool_t xdr_readargs();
19344928Smckusick 
19444928Smckusick 
19544928Smckusick struct readokres {
19644928Smckusick 	fattr attributes;
19744928Smckusick 	struct {
19844928Smckusick 		u_int data_len;
19944928Smckusick 		char *data_val;
20044928Smckusick 	} data;
20144928Smckusick };
20244928Smckusick typedef struct readokres readokres;
20344928Smckusick bool_t xdr_readokres();
20444928Smckusick 
20544928Smckusick 
20644928Smckusick struct readres {
20744928Smckusick 	nfsstat status;
20844928Smckusick 	union {
20944928Smckusick 		readokres reply;
21044928Smckusick 	} readres_u;
21144928Smckusick };
21244928Smckusick typedef struct readres readres;
21344928Smckusick bool_t xdr_readres();
21444928Smckusick 
21544928Smckusick 
21644928Smckusick struct writeargs {
21744928Smckusick 	nfs_fh file;
21844928Smckusick 	u_int beginoffset;
21944928Smckusick 	u_int offset;
22044928Smckusick 	u_int totalcount;
22144928Smckusick 	struct {
22244928Smckusick 		u_int data_len;
22344928Smckusick 		char *data_val;
22444928Smckusick 	} data;
22544928Smckusick };
22644928Smckusick typedef struct writeargs writeargs;
22744928Smckusick bool_t xdr_writeargs();
22844928Smckusick 
22944928Smckusick 
23044928Smckusick struct createargs {
23144928Smckusick 	diropargs where;
23244928Smckusick 	sattr attributes;
23344928Smckusick };
23444928Smckusick typedef struct createargs createargs;
23544928Smckusick bool_t xdr_createargs();
23644928Smckusick 
23744928Smckusick 
23844928Smckusick struct renameargs {
23944928Smckusick 	diropargs from;
24044928Smckusick 	diropargs to;
24144928Smckusick };
24244928Smckusick typedef struct renameargs renameargs;
24344928Smckusick bool_t xdr_renameargs();
24444928Smckusick 
24544928Smckusick 
24644928Smckusick struct linkargs {
24744928Smckusick 	nfs_fh from;
24844928Smckusick 	diropargs to;
24944928Smckusick };
25044928Smckusick typedef struct linkargs linkargs;
25144928Smckusick bool_t xdr_linkargs();
25244928Smckusick 
25344928Smckusick 
25444928Smckusick struct symlinkargs {
25544928Smckusick 	diropargs from;
25644928Smckusick 	nfspath to;
25744928Smckusick 	sattr attributes;
25844928Smckusick };
25944928Smckusick typedef struct symlinkargs symlinkargs;
26044928Smckusick bool_t xdr_symlinkargs();
26144928Smckusick 
26244928Smckusick 
26344928Smckusick typedef char nfscookie[NFS_COOKIESIZE];
26444928Smckusick /* static bool_t xdr_nfscookie(); */
26544928Smckusick 
26644928Smckusick 
26744928Smckusick struct readdirargs {
26844928Smckusick 	nfs_fh dir;
26944928Smckusick 	nfscookie cookie;
27044928Smckusick 	u_int count;
27144928Smckusick };
27244928Smckusick typedef struct readdirargs readdirargs;
27344928Smckusick bool_t xdr_readdirargs();
27444928Smckusick 
27544928Smckusick 
27644928Smckusick struct entry {
27744928Smckusick 	u_int fileid;
27844928Smckusick 	filename name;
27944928Smckusick 	nfscookie cookie;
28044928Smckusick 	struct entry *nextentry;
28144928Smckusick };
28244928Smckusick typedef struct entry entry;
28344928Smckusick /* static bool_t xdr_entry(); */
28444928Smckusick 
28544928Smckusick 
28644928Smckusick struct dirlist {
28744928Smckusick 	entry *entries;
28844928Smckusick 	bool_t eof;
28944928Smckusick };
29044928Smckusick typedef struct dirlist dirlist;
29144928Smckusick /* static bool_t xdr_dirlist(); */
29244928Smckusick 
29344928Smckusick 
29444928Smckusick struct readdirres {
29544928Smckusick 	nfsstat status;
29644928Smckusick 	union {
29744928Smckusick 		dirlist reply;
29844928Smckusick 	} readdirres_u;
29944928Smckusick };
30044928Smckusick typedef struct readdirres readdirres;
30144928Smckusick bool_t xdr_readdirres();
30244928Smckusick 
30344928Smckusick 
30444928Smckusick struct statfsokres {
30544928Smckusick 	u_int tsize;
30644928Smckusick 	u_int bsize;
30744928Smckusick 	u_int blocks;
30844928Smckusick 	u_int bfree;
30944928Smckusick 	u_int bavail;
31044928Smckusick };
31144928Smckusick typedef struct statfsokres statfsokres;
31244928Smckusick bool_t xdr_statfsokres();
31344928Smckusick 
31444928Smckusick 
31544928Smckusick struct statfsres {
31644928Smckusick 	nfsstat status;
31744928Smckusick 	union {
31844928Smckusick 		statfsokres reply;
31944928Smckusick 	} statfsres_u;
32044928Smckusick };
32144928Smckusick typedef struct statfsres statfsres;
32244928Smckusick bool_t xdr_statfsres();
32344928Smckusick 
32444928Smckusick 
32544928Smckusick #define NFS_PROGRAM ((u_long)100003)
32644928Smckusick #define NFS_VERSION ((u_long)2)
32744928Smckusick #define NFSPROC_NULL ((u_long)0)
32844928Smckusick extern voidp nfsproc_null_2();
32944928Smckusick #define NFSPROC_GETATTR ((u_long)1)
33044928Smckusick extern attrstat *nfsproc_getattr_2();
33144928Smckusick #define NFSPROC_SETATTR ((u_long)2)
33244928Smckusick extern attrstat *nfsproc_setattr_2();
33344928Smckusick #define NFSPROC_ROOT ((u_long)3)
33444928Smckusick extern voidp nfsproc_root_2();
33544928Smckusick #define NFSPROC_LOOKUP ((u_long)4)
33644928Smckusick extern diropres *nfsproc_lookup_2();
33744928Smckusick #define NFSPROC_READLINK ((u_long)5)
33844928Smckusick extern readlinkres *nfsproc_readlink_2();
33944928Smckusick #define NFSPROC_READ ((u_long)6)
34044928Smckusick extern readres *nfsproc_read_2();
34144928Smckusick #define NFSPROC_WRITECACHE ((u_long)7)
34244928Smckusick extern voidp nfsproc_writecache_2();
34344928Smckusick #define NFSPROC_WRITE ((u_long)8)
34444928Smckusick extern attrstat *nfsproc_write_2();
34544928Smckusick #define NFSPROC_CREATE ((u_long)9)
34644928Smckusick extern diropres *nfsproc_create_2();
34744928Smckusick #define NFSPROC_REMOVE ((u_long)10)
34844928Smckusick extern nfsstat *nfsproc_remove_2();
34944928Smckusick #define NFSPROC_RENAME ((u_long)11)
35044928Smckusick extern nfsstat *nfsproc_rename_2();
35144928Smckusick #define NFSPROC_LINK ((u_long)12)
35244928Smckusick extern nfsstat *nfsproc_link_2();
35344928Smckusick #define NFSPROC_SYMLINK ((u_long)13)
35444928Smckusick extern nfsstat *nfsproc_symlink_2();
35544928Smckusick #define NFSPROC_MKDIR ((u_long)14)
35644928Smckusick extern diropres *nfsproc_mkdir_2();
35744928Smckusick #define NFSPROC_RMDIR ((u_long)15)
35844928Smckusick extern nfsstat *nfsproc_rmdir_2();
35944928Smckusick #define NFSPROC_READDIR ((u_long)16)
36044928Smckusick extern readdirres *nfsproc_readdir_2();
36144928Smckusick #define NFSPROC_STATFS ((u_long)17)
36244928Smckusick extern statfsres *nfsproc_statfs_2();
36344928Smckusick 
364