1*44928Smckusick /* 2*44928Smckusick * $Id: nfs_prot.h,v 5.2 90/06/23 22:20:24 jsp Rel $ 3*44928Smckusick * 4*44928Smckusick * Copyright (c) 1990 Jan-Simon Pendry 5*44928Smckusick * Copyright (c) 1990 Imperial College of Science, Technology & Medicine 6*44928Smckusick * Copyright (c) 1990 The Regents of the University of California. 7*44928Smckusick * All rights reserved. 8*44928Smckusick * 9*44928Smckusick * This code is derived from software contributed to Berkeley by 10*44928Smckusick * Jan-Simon Pendry at Imperial College, London. 11*44928Smckusick * 12*44928Smckusick * %sccs.include.redist.c% 13*44928Smckusick * 14*44928Smckusick * @(#)nfs_prot.h 5.1 (Berkeley) 07/19/90 15*44928Smckusick */ 16*44928Smckusick 17*44928Smckusick #define xdr_nfsstat xdr_enum 18*44928Smckusick #define xdr_ftype xdr_enum 19*44928Smckusick 20*44928Smckusick #define NFS_PORT 2049 21*44928Smckusick #define NFS_MAXDATA 8192 22*44928Smckusick #define NFS_MAXPATHLEN 1024 23*44928Smckusick #define NFS_MAXNAMLEN 255 24*44928Smckusick #define NFS_FHSIZE 32 25*44928Smckusick #define NFS_COOKIESIZE 4 26*44928Smckusick #define NFS_FIFO_DEV -1 27*44928Smckusick #define NFSMODE_FMT 0170000 28*44928Smckusick #define NFSMODE_DIR 0040000 29*44928Smckusick #define NFSMODE_CHR 0020000 30*44928Smckusick #define NFSMODE_BLK 0060000 31*44928Smckusick #define NFSMODE_REG 0100000 32*44928Smckusick #define NFSMODE_LNK 0120000 33*44928Smckusick #define NFSMODE_SOCK 0140000 34*44928Smckusick #define NFSMODE_FIFO 0010000 35*44928Smckusick 36*44928Smckusick enum nfsstat { 37*44928Smckusick NFS_OK = 0, 38*44928Smckusick NFSERR_PERM = 1, 39*44928Smckusick NFSERR_NOENT = 2, 40*44928Smckusick NFSERR_IO = 5, 41*44928Smckusick NFSERR_NXIO = 6, 42*44928Smckusick NFSERR_ACCES = 13, 43*44928Smckusick NFSERR_EXIST = 17, 44*44928Smckusick NFSERR_NODEV = 19, 45*44928Smckusick NFSERR_NOTDIR = 20, 46*44928Smckusick NFSERR_ISDIR = 21, 47*44928Smckusick NFSERR_FBIG = 27, 48*44928Smckusick NFSERR_NOSPC = 28, 49*44928Smckusick NFSERR_ROFS = 30, 50*44928Smckusick NFSERR_NAMETOOLONG = 63, 51*44928Smckusick NFSERR_NOTEMPTY = 66, 52*44928Smckusick NFSERR_DQUOT = 69, 53*44928Smckusick NFSERR_STALE = 70, 54*44928Smckusick NFSERR_WFLUSH = 99 55*44928Smckusick }; 56*44928Smckusick typedef enum nfsstat nfsstat; 57*44928Smckusick bool_t xdr_nfsstat(); 58*44928Smckusick 59*44928Smckusick 60*44928Smckusick enum ftype { 61*44928Smckusick NFNON = 0, 62*44928Smckusick NFREG = 1, 63*44928Smckusick NFDIR = 2, 64*44928Smckusick NFBLK = 3, 65*44928Smckusick NFCHR = 4, 66*44928Smckusick NFLNK = 5, 67*44928Smckusick NFSOCK = 6, 68*44928Smckusick NFBAD = 7, 69*44928Smckusick NFFIFO = 8 70*44928Smckusick }; 71*44928Smckusick typedef enum ftype ftype; 72*44928Smckusick /* static bool_t xdr_ftype(); */ 73*44928Smckusick 74*44928Smckusick 75*44928Smckusick struct nfs_fh { 76*44928Smckusick char data[NFS_FHSIZE]; 77*44928Smckusick }; 78*44928Smckusick typedef struct nfs_fh nfs_fh; 79*44928Smckusick bool_t xdr_nfs_fh(); 80*44928Smckusick 81*44928Smckusick 82*44928Smckusick struct nfstime { 83*44928Smckusick u_int seconds; 84*44928Smckusick u_int useconds; 85*44928Smckusick }; 86*44928Smckusick typedef struct nfstime nfstime; 87*44928Smckusick /* static bool_t xdr_nfstime(); */ 88*44928Smckusick 89*44928Smckusick 90*44928Smckusick struct fattr { 91*44928Smckusick ftype type; 92*44928Smckusick u_int mode; 93*44928Smckusick u_int nlink; 94*44928Smckusick u_int uid; 95*44928Smckusick u_int gid; 96*44928Smckusick u_int size; 97*44928Smckusick u_int blocksize; 98*44928Smckusick u_int rdev; 99*44928Smckusick u_int blocks; 100*44928Smckusick u_int fsid; 101*44928Smckusick u_int fileid; 102*44928Smckusick nfstime atime; 103*44928Smckusick nfstime mtime; 104*44928Smckusick nfstime ctime; 105*44928Smckusick }; 106*44928Smckusick typedef struct fattr fattr; 107*44928Smckusick /* static bool_t xdr_fattr(); */ 108*44928Smckusick 109*44928Smckusick 110*44928Smckusick struct sattr { 111*44928Smckusick u_int mode; 112*44928Smckusick u_int uid; 113*44928Smckusick u_int gid; 114*44928Smckusick u_int size; 115*44928Smckusick nfstime atime; 116*44928Smckusick nfstime mtime; 117*44928Smckusick }; 118*44928Smckusick typedef struct sattr sattr; 119*44928Smckusick /* static bool_t xdr_sattr(); */ 120*44928Smckusick 121*44928Smckusick 122*44928Smckusick typedef char *filename; 123*44928Smckusick /* static bool_t xdr_filename(); */ 124*44928Smckusick 125*44928Smckusick 126*44928Smckusick typedef char *nfspath; 127*44928Smckusick bool_t xdr_nfspath(); 128*44928Smckusick 129*44928Smckusick 130*44928Smckusick struct attrstat { 131*44928Smckusick nfsstat status; 132*44928Smckusick union { 133*44928Smckusick fattr attributes; 134*44928Smckusick } attrstat_u; 135*44928Smckusick }; 136*44928Smckusick typedef struct attrstat attrstat; 137*44928Smckusick bool_t xdr_attrstat(); 138*44928Smckusick 139*44928Smckusick 140*44928Smckusick struct sattrargs { 141*44928Smckusick nfs_fh file; 142*44928Smckusick sattr attributes; 143*44928Smckusick }; 144*44928Smckusick typedef struct sattrargs sattrargs; 145*44928Smckusick bool_t xdr_sattrargs(); 146*44928Smckusick 147*44928Smckusick 148*44928Smckusick struct diropargs { 149*44928Smckusick nfs_fh dir; 150*44928Smckusick filename name; 151*44928Smckusick }; 152*44928Smckusick typedef struct diropargs diropargs; 153*44928Smckusick bool_t xdr_diropargs(); 154*44928Smckusick 155*44928Smckusick 156*44928Smckusick struct diropokres { 157*44928Smckusick nfs_fh file; 158*44928Smckusick fattr attributes; 159*44928Smckusick }; 160*44928Smckusick typedef struct diropokres diropokres; 161*44928Smckusick bool_t xdr_diropokres(); 162*44928Smckusick 163*44928Smckusick 164*44928Smckusick struct diropres { 165*44928Smckusick nfsstat status; 166*44928Smckusick union { 167*44928Smckusick diropokres diropres; 168*44928Smckusick } diropres_u; 169*44928Smckusick }; 170*44928Smckusick typedef struct diropres diropres; 171*44928Smckusick bool_t xdr_diropres(); 172*44928Smckusick 173*44928Smckusick 174*44928Smckusick struct readlinkres { 175*44928Smckusick nfsstat status; 176*44928Smckusick union { 177*44928Smckusick nfspath data; 178*44928Smckusick } readlinkres_u; 179*44928Smckusick }; 180*44928Smckusick typedef struct readlinkres readlinkres; 181*44928Smckusick bool_t xdr_readlinkres(); 182*44928Smckusick 183*44928Smckusick 184*44928Smckusick struct readargs { 185*44928Smckusick nfs_fh file; 186*44928Smckusick u_int offset; 187*44928Smckusick u_int count; 188*44928Smckusick u_int totalcount; 189*44928Smckusick }; 190*44928Smckusick typedef struct readargs readargs; 191*44928Smckusick bool_t xdr_readargs(); 192*44928Smckusick 193*44928Smckusick 194*44928Smckusick struct readokres { 195*44928Smckusick fattr attributes; 196*44928Smckusick struct { 197*44928Smckusick u_int data_len; 198*44928Smckusick char *data_val; 199*44928Smckusick } data; 200*44928Smckusick }; 201*44928Smckusick typedef struct readokres readokres; 202*44928Smckusick bool_t xdr_readokres(); 203*44928Smckusick 204*44928Smckusick 205*44928Smckusick struct readres { 206*44928Smckusick nfsstat status; 207*44928Smckusick union { 208*44928Smckusick readokres reply; 209*44928Smckusick } readres_u; 210*44928Smckusick }; 211*44928Smckusick typedef struct readres readres; 212*44928Smckusick bool_t xdr_readres(); 213*44928Smckusick 214*44928Smckusick 215*44928Smckusick struct writeargs { 216*44928Smckusick nfs_fh file; 217*44928Smckusick u_int beginoffset; 218*44928Smckusick u_int offset; 219*44928Smckusick u_int totalcount; 220*44928Smckusick struct { 221*44928Smckusick u_int data_len; 222*44928Smckusick char *data_val; 223*44928Smckusick } data; 224*44928Smckusick }; 225*44928Smckusick typedef struct writeargs writeargs; 226*44928Smckusick bool_t xdr_writeargs(); 227*44928Smckusick 228*44928Smckusick 229*44928Smckusick struct createargs { 230*44928Smckusick diropargs where; 231*44928Smckusick sattr attributes; 232*44928Smckusick }; 233*44928Smckusick typedef struct createargs createargs; 234*44928Smckusick bool_t xdr_createargs(); 235*44928Smckusick 236*44928Smckusick 237*44928Smckusick struct renameargs { 238*44928Smckusick diropargs from; 239*44928Smckusick diropargs to; 240*44928Smckusick }; 241*44928Smckusick typedef struct renameargs renameargs; 242*44928Smckusick bool_t xdr_renameargs(); 243*44928Smckusick 244*44928Smckusick 245*44928Smckusick struct linkargs { 246*44928Smckusick nfs_fh from; 247*44928Smckusick diropargs to; 248*44928Smckusick }; 249*44928Smckusick typedef struct linkargs linkargs; 250*44928Smckusick bool_t xdr_linkargs(); 251*44928Smckusick 252*44928Smckusick 253*44928Smckusick struct symlinkargs { 254*44928Smckusick diropargs from; 255*44928Smckusick nfspath to; 256*44928Smckusick sattr attributes; 257*44928Smckusick }; 258*44928Smckusick typedef struct symlinkargs symlinkargs; 259*44928Smckusick bool_t xdr_symlinkargs(); 260*44928Smckusick 261*44928Smckusick 262*44928Smckusick typedef char nfscookie[NFS_COOKIESIZE]; 263*44928Smckusick /* static bool_t xdr_nfscookie(); */ 264*44928Smckusick 265*44928Smckusick 266*44928Smckusick struct readdirargs { 267*44928Smckusick nfs_fh dir; 268*44928Smckusick nfscookie cookie; 269*44928Smckusick u_int count; 270*44928Smckusick }; 271*44928Smckusick typedef struct readdirargs readdirargs; 272*44928Smckusick bool_t xdr_readdirargs(); 273*44928Smckusick 274*44928Smckusick 275*44928Smckusick struct entry { 276*44928Smckusick u_int fileid; 277*44928Smckusick filename name; 278*44928Smckusick nfscookie cookie; 279*44928Smckusick struct entry *nextentry; 280*44928Smckusick }; 281*44928Smckusick typedef struct entry entry; 282*44928Smckusick /* static bool_t xdr_entry(); */ 283*44928Smckusick 284*44928Smckusick 285*44928Smckusick struct dirlist { 286*44928Smckusick entry *entries; 287*44928Smckusick bool_t eof; 288*44928Smckusick }; 289*44928Smckusick typedef struct dirlist dirlist; 290*44928Smckusick /* static bool_t xdr_dirlist(); */ 291*44928Smckusick 292*44928Smckusick 293*44928Smckusick struct readdirres { 294*44928Smckusick nfsstat status; 295*44928Smckusick union { 296*44928Smckusick dirlist reply; 297*44928Smckusick } readdirres_u; 298*44928Smckusick }; 299*44928Smckusick typedef struct readdirres readdirres; 300*44928Smckusick bool_t xdr_readdirres(); 301*44928Smckusick 302*44928Smckusick 303*44928Smckusick struct statfsokres { 304*44928Smckusick u_int tsize; 305*44928Smckusick u_int bsize; 306*44928Smckusick u_int blocks; 307*44928Smckusick u_int bfree; 308*44928Smckusick u_int bavail; 309*44928Smckusick }; 310*44928Smckusick typedef struct statfsokres statfsokres; 311*44928Smckusick bool_t xdr_statfsokres(); 312*44928Smckusick 313*44928Smckusick 314*44928Smckusick struct statfsres { 315*44928Smckusick nfsstat status; 316*44928Smckusick union { 317*44928Smckusick statfsokres reply; 318*44928Smckusick } statfsres_u; 319*44928Smckusick }; 320*44928Smckusick typedef struct statfsres statfsres; 321*44928Smckusick bool_t xdr_statfsres(); 322*44928Smckusick 323*44928Smckusick 324*44928Smckusick #define NFS_PROGRAM ((u_long)100003) 325*44928Smckusick #define NFS_VERSION ((u_long)2) 326*44928Smckusick #define NFSPROC_NULL ((u_long)0) 327*44928Smckusick extern voidp nfsproc_null_2(); 328*44928Smckusick #define NFSPROC_GETATTR ((u_long)1) 329*44928Smckusick extern attrstat *nfsproc_getattr_2(); 330*44928Smckusick #define NFSPROC_SETATTR ((u_long)2) 331*44928Smckusick extern attrstat *nfsproc_setattr_2(); 332*44928Smckusick #define NFSPROC_ROOT ((u_long)3) 333*44928Smckusick extern voidp nfsproc_root_2(); 334*44928Smckusick #define NFSPROC_LOOKUP ((u_long)4) 335*44928Smckusick extern diropres *nfsproc_lookup_2(); 336*44928Smckusick #define NFSPROC_READLINK ((u_long)5) 337*44928Smckusick extern readlinkres *nfsproc_readlink_2(); 338*44928Smckusick #define NFSPROC_READ ((u_long)6) 339*44928Smckusick extern readres *nfsproc_read_2(); 340*44928Smckusick #define NFSPROC_WRITECACHE ((u_long)7) 341*44928Smckusick extern voidp nfsproc_writecache_2(); 342*44928Smckusick #define NFSPROC_WRITE ((u_long)8) 343*44928Smckusick extern attrstat *nfsproc_write_2(); 344*44928Smckusick #define NFSPROC_CREATE ((u_long)9) 345*44928Smckusick extern diropres *nfsproc_create_2(); 346*44928Smckusick #define NFSPROC_REMOVE ((u_long)10) 347*44928Smckusick extern nfsstat *nfsproc_remove_2(); 348*44928Smckusick #define NFSPROC_RENAME ((u_long)11) 349*44928Smckusick extern nfsstat *nfsproc_rename_2(); 350*44928Smckusick #define NFSPROC_LINK ((u_long)12) 351*44928Smckusick extern nfsstat *nfsproc_link_2(); 352*44928Smckusick #define NFSPROC_SYMLINK ((u_long)13) 353*44928Smckusick extern nfsstat *nfsproc_symlink_2(); 354*44928Smckusick #define NFSPROC_MKDIR ((u_long)14) 355*44928Smckusick extern diropres *nfsproc_mkdir_2(); 356*44928Smckusick #define NFSPROC_RMDIR ((u_long)15) 357*44928Smckusick extern nfsstat *nfsproc_rmdir_2(); 358*44928Smckusick #define NFSPROC_READDIR ((u_long)16) 359*44928Smckusick extern readdirres *nfsproc_readdir_2(); 360*44928Smckusick #define NFSPROC_STATFS ((u_long)17) 361*44928Smckusick extern statfsres *nfsproc_statfs_2(); 362*44928Smckusick 363