149685Spendry /* 249685Spendry * Copyright (c) 1990 Jan-Simon Pendry 349685Spendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine 4*61800Sbostic * Copyright (c) 1990, 1993 5*61800Sbostic * The Regents of the University of California. 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*61800Sbostic * @(#)nfs_prot.h 8.1 (Berkeley) 06/06/93 1349685Spendry * 1452457Spendry * $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