1*10465441SEvalZero %/* This file is copied from RFC1813 2*10465441SEvalZero % * Copyright 1995 Sun Micrososystems (I assume) 3*10465441SEvalZero % */ 4*10465441SEvalZero 5*10465441SEvalZero const NFS3_FHSIZE = 64; 6*10465441SEvalZero const NFS3_COOKIEVERFSIZE = 8; 7*10465441SEvalZero const NFS3_CREATEVERFSIZE = 8; 8*10465441SEvalZero const NFS3_WRITEVERFSIZE = 8; 9*10465441SEvalZero 10*10465441SEvalZero const ACCESS3_READ = 0x0001; 11*10465441SEvalZero const ACCESS3_LOOKUP = 0x0002; 12*10465441SEvalZero const ACCESS3_MODIFY = 0x0004; 13*10465441SEvalZero const ACCESS3_EXTEND = 0x0008; 14*10465441SEvalZero const ACCESS3_DELETE = 0x0010; 15*10465441SEvalZero const ACCESS3_EXECUTE = 0x0020; 16*10465441SEvalZero 17*10465441SEvalZero const FSF3_LINK = 0x0001; 18*10465441SEvalZero const FSF3_SYMLINK = 0x0002; 19*10465441SEvalZero const FSF3_HOMOGENEOUS = 0x0008; 20*10465441SEvalZero const FSF3_CANSETTIME = 0x0010; 21*10465441SEvalZero 22*10465441SEvalZero typedef unsigned hyper uint64; 23*10465441SEvalZero typedef hyper int64; 24*10465441SEvalZero typedef unsigned long uint32; 25*10465441SEvalZero typedef long int32; 26*10465441SEvalZero typedef string filename3<>; 27*10465441SEvalZero typedef string nfspath3<>; 28*10465441SEvalZero typedef uint64 fileid3; 29*10465441SEvalZero typedef uint64 cookie3; 30*10465441SEvalZero typedef opaque cookieverf3[NFS3_COOKIEVERFSIZE]; 31*10465441SEvalZero typedef opaque createverf3[NFS3_CREATEVERFSIZE]; 32*10465441SEvalZero typedef opaque writeverf3[NFS3_WRITEVERFSIZE]; 33*10465441SEvalZero typedef uint32 uid3; 34*10465441SEvalZero typedef uint32 gid3; 35*10465441SEvalZero typedef uint64 size3; 36*10465441SEvalZero typedef uint64 offset3; 37*10465441SEvalZero typedef uint32 mode3; 38*10465441SEvalZero typedef uint32 count3; 39*10465441SEvalZero 40*10465441SEvalZero enum nfsstat3 { 41*10465441SEvalZero NFS3_OK = 0, 42*10465441SEvalZero NFS3ERR_PERM = 1, 43*10465441SEvalZero NFS3ERR_NOENT = 2, 44*10465441SEvalZero NFS3ERR_IO = 5, 45*10465441SEvalZero NFS3ERR_NXIO = 6, 46*10465441SEvalZero NFS3ERR_ACCES = 13, 47*10465441SEvalZero NFS3ERR_EXIST = 17, 48*10465441SEvalZero NFS3ERR_XDEV = 18, 49*10465441SEvalZero NFS3ERR_NODEV = 19, 50*10465441SEvalZero NFS3ERR_NOTDIR = 20, 51*10465441SEvalZero NFS3ERR_ISDIR = 21, 52*10465441SEvalZero NFS3ERR_INVAL = 22, 53*10465441SEvalZero NFS3ERR_FBIG = 27, 54*10465441SEvalZero NFS3ERR_NOSPC = 28, 55*10465441SEvalZero NFS3ERR_ROFS = 30, 56*10465441SEvalZero NFS3ERR_MLINK = 31, 57*10465441SEvalZero NFS3ERR_NAMETOOLONG = 63, 58*10465441SEvalZero NFS3ERR_NOTEMPTY = 66, 59*10465441SEvalZero NFS3ERR_DQUOT = 69, 60*10465441SEvalZero NFS3ERR_STALE = 70, 61*10465441SEvalZero NFS3ERR_REMOTE = 71, 62*10465441SEvalZero NFS3ERR_BADHANDLE = 10001, 63*10465441SEvalZero NFS3ERR_NOT_SYNC = 10002, 64*10465441SEvalZero NFS3ERR_BAD_COOKIE = 10003, 65*10465441SEvalZero NFS3ERR_NOTSUPP = 10004, 66*10465441SEvalZero NFS3ERR_TOOSMALL = 10005, 67*10465441SEvalZero NFS3ERR_SERVERFAULT = 10006, 68*10465441SEvalZero NFS3ERR_BADTYPE = 10007, 69*10465441SEvalZero NFS3ERR_JUKEBOX = 10008 70*10465441SEvalZero }; 71*10465441SEvalZero 72*10465441SEvalZero enum ftype3 { 73*10465441SEvalZero NFS3REG = 1, 74*10465441SEvalZero NFS3DIR = 2, 75*10465441SEvalZero NFS3BLK = 3, 76*10465441SEvalZero NFS3CHR = 4, 77*10465441SEvalZero NFS3LNK = 5, 78*10465441SEvalZero NFS3SOCK = 6, 79*10465441SEvalZero NFS3FIFO = 7 80*10465441SEvalZero }; 81*10465441SEvalZero enum stable_how { 82*10465441SEvalZero UNSTABLE = 0, 83*10465441SEvalZero DATA_SYNC = 1, 84*10465441SEvalZero FILE_SYNC = 2 85*10465441SEvalZero }; 86*10465441SEvalZero 87*10465441SEvalZero enum createmode3 { 88*10465441SEvalZero UNCHECKED = 0, 89*10465441SEvalZero GUARDED = 1, 90*10465441SEvalZero EXCLUSIVE = 2 91*10465441SEvalZero }; 92*10465441SEvalZero 93*10465441SEvalZero struct specdata3 { 94*10465441SEvalZero uint32 specdata1; 95*10465441SEvalZero uint32 specdata2; 96*10465441SEvalZero }; 97*10465441SEvalZero 98*10465441SEvalZero struct nfs_fh3 { 99*10465441SEvalZero opaque data<NFS3_FHSIZE>; 100*10465441SEvalZero }; 101*10465441SEvalZero 102*10465441SEvalZero struct nfstime3 { 103*10465441SEvalZero uint32 seconds; 104*10465441SEvalZero uint32 nseconds; 105*10465441SEvalZero }; 106*10465441SEvalZero 107*10465441SEvalZero struct fattr3 { 108*10465441SEvalZero ftype3 type; 109*10465441SEvalZero mode3 mode; 110*10465441SEvalZero uint32 nlink; 111*10465441SEvalZero uid3 uid; 112*10465441SEvalZero gid3 gid; 113*10465441SEvalZero size3 size; 114*10465441SEvalZero size3 used; 115*10465441SEvalZero specdata3 rdev; 116*10465441SEvalZero uint64 fsid; 117*10465441SEvalZero fileid3 fileid; 118*10465441SEvalZero nfstime3 atime; 119*10465441SEvalZero nfstime3 mtime; 120*10465441SEvalZero nfstime3 ctime; 121*10465441SEvalZero }; 122*10465441SEvalZero 123*10465441SEvalZero union post_op_attr switch (bool attributes_follow) { 124*10465441SEvalZero case TRUE: 125*10465441SEvalZero fattr3 attributes; 126*10465441SEvalZero case FALSE: 127*10465441SEvalZero void; 128*10465441SEvalZero }; 129*10465441SEvalZero 130*10465441SEvalZero struct wcc_attr { 131*10465441SEvalZero size3 size; 132*10465441SEvalZero nfstime3 mtime; 133*10465441SEvalZero nfstime3 ctime; 134*10465441SEvalZero }; 135*10465441SEvalZero 136*10465441SEvalZero union pre_op_attr switch (bool attributes_follow) { 137*10465441SEvalZero case TRUE: 138*10465441SEvalZero wcc_attr attributes; 139*10465441SEvalZero case FALSE: 140*10465441SEvalZero void; 141*10465441SEvalZero }; 142*10465441SEvalZero 143*10465441SEvalZero struct wcc_data { 144*10465441SEvalZero pre_op_attr before; 145*10465441SEvalZero post_op_attr after; 146*10465441SEvalZero }; 147*10465441SEvalZero 148*10465441SEvalZero union post_op_fh3 switch (bool handle_follows) { 149*10465441SEvalZero case TRUE: 150*10465441SEvalZero nfs_fh3 handle; 151*10465441SEvalZero case FALSE: 152*10465441SEvalZero void; 153*10465441SEvalZero }; 154*10465441SEvalZero 155*10465441SEvalZero enum time_how { 156*10465441SEvalZero DONT_CHANGE = 0, 157*10465441SEvalZero SET_TO_SERVER_TIME = 1, 158*10465441SEvalZero SET_TO_CLIENT_TIME = 2 159*10465441SEvalZero }; 160*10465441SEvalZero 161*10465441SEvalZero union set_mode3 switch (bool set_it) { 162*10465441SEvalZero case TRUE: 163*10465441SEvalZero mode3 mode; 164*10465441SEvalZero default: 165*10465441SEvalZero void; 166*10465441SEvalZero }; 167*10465441SEvalZero 168*10465441SEvalZero union set_uid3 switch (bool set_it) { 169*10465441SEvalZero case TRUE: 170*10465441SEvalZero uid3 uid; 171*10465441SEvalZero default: 172*10465441SEvalZero void; 173*10465441SEvalZero }; 174*10465441SEvalZero 175*10465441SEvalZero union set_gid3 switch (bool set_it) { 176*10465441SEvalZero case TRUE: 177*10465441SEvalZero gid3 gid; 178*10465441SEvalZero default: 179*10465441SEvalZero void; 180*10465441SEvalZero }; 181*10465441SEvalZero 182*10465441SEvalZero union set_size3 switch (bool set_it) { 183*10465441SEvalZero case TRUE: 184*10465441SEvalZero size3 size; 185*10465441SEvalZero default: 186*10465441SEvalZero void; 187*10465441SEvalZero }; 188*10465441SEvalZero 189*10465441SEvalZero union set_atime switch (time_how set_it) { 190*10465441SEvalZero case SET_TO_CLIENT_TIME: 191*10465441SEvalZero nfstime3 atime; 192*10465441SEvalZero default: 193*10465441SEvalZero void; 194*10465441SEvalZero }; 195*10465441SEvalZero 196*10465441SEvalZero union set_mtime switch (time_how set_it) { 197*10465441SEvalZero case SET_TO_CLIENT_TIME: 198*10465441SEvalZero nfstime3 mtime; 199*10465441SEvalZero default: 200*10465441SEvalZero void; 201*10465441SEvalZero }; 202*10465441SEvalZero 203*10465441SEvalZero struct sattr3 { 204*10465441SEvalZero set_mode3 mode; 205*10465441SEvalZero set_uid3 uid; 206*10465441SEvalZero set_gid3 gid; 207*10465441SEvalZero set_size3 size; 208*10465441SEvalZero set_atime atime; 209*10465441SEvalZero set_mtime mtime; 210*10465441SEvalZero }; 211*10465441SEvalZero 212*10465441SEvalZero struct diropargs3 { 213*10465441SEvalZero nfs_fh3 dir; 214*10465441SEvalZero filename3 name; 215*10465441SEvalZero }; 216*10465441SEvalZero 217*10465441SEvalZero 218*10465441SEvalZero struct GETATTR3args { 219*10465441SEvalZero nfs_fh3 object; 220*10465441SEvalZero }; 221*10465441SEvalZero 222*10465441SEvalZero struct GETATTR3resok { 223*10465441SEvalZero fattr3 obj_attributes; 224*10465441SEvalZero }; 225*10465441SEvalZero 226*10465441SEvalZero union GETATTR3res switch (nfsstat3 status) { 227*10465441SEvalZero case NFS3_OK: 228*10465441SEvalZero GETATTR3resok resok; 229*10465441SEvalZero default: 230*10465441SEvalZero void; 231*10465441SEvalZero }; 232*10465441SEvalZero 233*10465441SEvalZero union sattrguard3 switch (bool check) { 234*10465441SEvalZero case TRUE: 235*10465441SEvalZero nfstime3 obj_ctime; 236*10465441SEvalZero case FALSE: 237*10465441SEvalZero void; 238*10465441SEvalZero }; 239*10465441SEvalZero 240*10465441SEvalZero struct SETATTR3args { 241*10465441SEvalZero nfs_fh3 object; 242*10465441SEvalZero sattr3 new_attributes; 243*10465441SEvalZero sattrguard3 guard; 244*10465441SEvalZero }; 245*10465441SEvalZero 246*10465441SEvalZero struct SETATTR3resok { 247*10465441SEvalZero wcc_data obj_wcc; 248*10465441SEvalZero }; 249*10465441SEvalZero 250*10465441SEvalZero struct SETATTR3resfail { 251*10465441SEvalZero wcc_data obj_wcc; 252*10465441SEvalZero }; 253*10465441SEvalZero 254*10465441SEvalZero union SETATTR3res switch (nfsstat3 status) { 255*10465441SEvalZero case NFS3_OK: 256*10465441SEvalZero SETATTR3resok resok; 257*10465441SEvalZero default: 258*10465441SEvalZero SETATTR3resfail resfail; 259*10465441SEvalZero }; 260*10465441SEvalZero 261*10465441SEvalZero struct LOOKUP3args { 262*10465441SEvalZero diropargs3 what; 263*10465441SEvalZero }; 264*10465441SEvalZero 265*10465441SEvalZero struct LOOKUP3resok { 266*10465441SEvalZero nfs_fh3 object; 267*10465441SEvalZero post_op_attr obj_attributes; 268*10465441SEvalZero post_op_attr dir_attributes; 269*10465441SEvalZero }; 270*10465441SEvalZero 271*10465441SEvalZero struct LOOKUP3resfail { 272*10465441SEvalZero post_op_attr dir_attributes; 273*10465441SEvalZero }; 274*10465441SEvalZero 275*10465441SEvalZero union LOOKUP3res switch (nfsstat3 status) { 276*10465441SEvalZero case NFS3_OK: 277*10465441SEvalZero LOOKUP3resok resok; 278*10465441SEvalZero default: 279*10465441SEvalZero LOOKUP3resfail resfail; 280*10465441SEvalZero }; 281*10465441SEvalZero 282*10465441SEvalZero struct ACCESS3args { 283*10465441SEvalZero nfs_fh3 object; 284*10465441SEvalZero uint32 access; 285*10465441SEvalZero }; 286*10465441SEvalZero 287*10465441SEvalZero struct ACCESS3resok { 288*10465441SEvalZero post_op_attr obj_attributes; 289*10465441SEvalZero uint32 access; 290*10465441SEvalZero }; 291*10465441SEvalZero 292*10465441SEvalZero struct ACCESS3resfail { 293*10465441SEvalZero post_op_attr obj_attributes; 294*10465441SEvalZero }; 295*10465441SEvalZero 296*10465441SEvalZero union ACCESS3res switch (nfsstat3 status) { 297*10465441SEvalZero case NFS3_OK: 298*10465441SEvalZero ACCESS3resok resok; 299*10465441SEvalZero default: 300*10465441SEvalZero ACCESS3resfail resfail; 301*10465441SEvalZero }; 302*10465441SEvalZero 303*10465441SEvalZero struct READLINK3args { 304*10465441SEvalZero nfs_fh3 symlink; 305*10465441SEvalZero }; 306*10465441SEvalZero 307*10465441SEvalZero struct READLINK3resok { 308*10465441SEvalZero post_op_attr symlink_attributes; 309*10465441SEvalZero nfspath3 data; 310*10465441SEvalZero }; 311*10465441SEvalZero 312*10465441SEvalZero struct READLINK3resfail { 313*10465441SEvalZero post_op_attr symlink_attributes; 314*10465441SEvalZero }; 315*10465441SEvalZero 316*10465441SEvalZero union READLINK3res switch (nfsstat3 status) { 317*10465441SEvalZero case NFS3_OK: 318*10465441SEvalZero READLINK3resok resok; 319*10465441SEvalZero default: 320*10465441SEvalZero READLINK3resfail resfail; 321*10465441SEvalZero }; 322*10465441SEvalZero 323*10465441SEvalZero struct READ3args { 324*10465441SEvalZero nfs_fh3 file; 325*10465441SEvalZero offset3 offset; 326*10465441SEvalZero count3 count; 327*10465441SEvalZero }; 328*10465441SEvalZero 329*10465441SEvalZero struct READ3resok { 330*10465441SEvalZero post_op_attr file_attributes; 331*10465441SEvalZero count3 count; 332*10465441SEvalZero bool eof; 333*10465441SEvalZero opaque data<>; 334*10465441SEvalZero }; 335*10465441SEvalZero 336*10465441SEvalZero struct READ3resfail { 337*10465441SEvalZero post_op_attr file_attributes; 338*10465441SEvalZero }; 339*10465441SEvalZero 340*10465441SEvalZero union READ3res switch (nfsstat3 status) { 341*10465441SEvalZero case NFS3_OK: 342*10465441SEvalZero READ3resok resok; 343*10465441SEvalZero default: 344*10465441SEvalZero READ3resfail resfail; 345*10465441SEvalZero }; 346*10465441SEvalZero 347*10465441SEvalZero struct WRITE3args { 348*10465441SEvalZero nfs_fh3 file; 349*10465441SEvalZero offset3 offset; 350*10465441SEvalZero count3 count; 351*10465441SEvalZero stable_how stable; 352*10465441SEvalZero opaque data<>; 353*10465441SEvalZero }; 354*10465441SEvalZero 355*10465441SEvalZero struct WRITE3resok { 356*10465441SEvalZero wcc_data file_wcc; 357*10465441SEvalZero count3 count; 358*10465441SEvalZero stable_how committed; 359*10465441SEvalZero writeverf3 verf; 360*10465441SEvalZero }; 361*10465441SEvalZero 362*10465441SEvalZero struct WRITE3resfail { 363*10465441SEvalZero wcc_data file_wcc; 364*10465441SEvalZero }; 365*10465441SEvalZero 366*10465441SEvalZero union WRITE3res switch (nfsstat3 status) { 367*10465441SEvalZero case NFS3_OK: 368*10465441SEvalZero WRITE3resok resok; 369*10465441SEvalZero default: 370*10465441SEvalZero WRITE3resfail resfail; 371*10465441SEvalZero }; 372*10465441SEvalZero 373*10465441SEvalZero 374*10465441SEvalZero union createhow3 switch (createmode3 mode) { 375*10465441SEvalZero case UNCHECKED: 376*10465441SEvalZero case GUARDED: 377*10465441SEvalZero sattr3 obj_attributes; 378*10465441SEvalZero case EXCLUSIVE: 379*10465441SEvalZero createverf3 verf; 380*10465441SEvalZero }; 381*10465441SEvalZero 382*10465441SEvalZero struct CREATE3args { 383*10465441SEvalZero diropargs3 where; 384*10465441SEvalZero createhow3 how; 385*10465441SEvalZero }; 386*10465441SEvalZero 387*10465441SEvalZero struct CREATE3resok { 388*10465441SEvalZero post_op_fh3 obj; 389*10465441SEvalZero post_op_attr obj_attributes; 390*10465441SEvalZero wcc_data dir_wcc; 391*10465441SEvalZero }; 392*10465441SEvalZero 393*10465441SEvalZero struct CREATE3resfail { 394*10465441SEvalZero wcc_data dir_wcc; 395*10465441SEvalZero }; 396*10465441SEvalZero 397*10465441SEvalZero union CREATE3res switch (nfsstat3 status) { 398*10465441SEvalZero case NFS3_OK: 399*10465441SEvalZero CREATE3resok resok; 400*10465441SEvalZero default: 401*10465441SEvalZero CREATE3resfail resfail; 402*10465441SEvalZero }; 403*10465441SEvalZero 404*10465441SEvalZero struct MKDIR3args { 405*10465441SEvalZero diropargs3 where; 406*10465441SEvalZero sattr3 attributes; 407*10465441SEvalZero }; 408*10465441SEvalZero 409*10465441SEvalZero struct MKDIR3resok { 410*10465441SEvalZero post_op_fh3 obj; 411*10465441SEvalZero post_op_attr obj_attributes; 412*10465441SEvalZero wcc_data dir_wcc; 413*10465441SEvalZero }; 414*10465441SEvalZero 415*10465441SEvalZero struct MKDIR3resfail { 416*10465441SEvalZero wcc_data dir_wcc; 417*10465441SEvalZero }; 418*10465441SEvalZero 419*10465441SEvalZero union MKDIR3res switch (nfsstat3 status) { 420*10465441SEvalZero case NFS3_OK: 421*10465441SEvalZero MKDIR3resok resok; 422*10465441SEvalZero default: 423*10465441SEvalZero MKDIR3resfail resfail; 424*10465441SEvalZero }; 425*10465441SEvalZero 426*10465441SEvalZero struct symlinkdata3 { 427*10465441SEvalZero sattr3 symlink_attributes; 428*10465441SEvalZero nfspath3 symlink_data; 429*10465441SEvalZero }; 430*10465441SEvalZero 431*10465441SEvalZero struct SYMLINK3args { 432*10465441SEvalZero diropargs3 where; 433*10465441SEvalZero symlinkdata3 symlink; 434*10465441SEvalZero }; 435*10465441SEvalZero 436*10465441SEvalZero struct SYMLINK3resok { 437*10465441SEvalZero post_op_fh3 obj; 438*10465441SEvalZero post_op_attr obj_attributes; 439*10465441SEvalZero wcc_data dir_wcc; 440*10465441SEvalZero }; 441*10465441SEvalZero 442*10465441SEvalZero struct SYMLINK3resfail { 443*10465441SEvalZero wcc_data dir_wcc; 444*10465441SEvalZero }; 445*10465441SEvalZero 446*10465441SEvalZero union SYMLINK3res switch (nfsstat3 status) { 447*10465441SEvalZero case NFS3_OK: 448*10465441SEvalZero SYMLINK3resok resok; 449*10465441SEvalZero default: 450*10465441SEvalZero SYMLINK3resfail resfail; 451*10465441SEvalZero }; 452*10465441SEvalZero 453*10465441SEvalZero struct devicedata3 { 454*10465441SEvalZero sattr3 dev_attributes; 455*10465441SEvalZero specdata3 spec; 456*10465441SEvalZero }; 457*10465441SEvalZero 458*10465441SEvalZero union mknoddata3 switch (ftype3 type) { 459*10465441SEvalZero case NFS3CHR: 460*10465441SEvalZero case NFS3BLK: 461*10465441SEvalZero devicedata3 device; 462*10465441SEvalZero case NFS3SOCK: 463*10465441SEvalZero case NFS3FIFO: 464*10465441SEvalZero sattr3 pipe_attributes; 465*10465441SEvalZero default: 466*10465441SEvalZero void; 467*10465441SEvalZero }; 468*10465441SEvalZero 469*10465441SEvalZero struct MKNOD3args { 470*10465441SEvalZero diropargs3 where; 471*10465441SEvalZero mknoddata3 what; 472*10465441SEvalZero }; 473*10465441SEvalZero 474*10465441SEvalZero struct MKNOD3resok { 475*10465441SEvalZero post_op_fh3 obj; 476*10465441SEvalZero post_op_attr obj_attributes; 477*10465441SEvalZero wcc_data dir_wcc; 478*10465441SEvalZero }; 479*10465441SEvalZero 480*10465441SEvalZero struct MKNOD3resfail { 481*10465441SEvalZero wcc_data dir_wcc; 482*10465441SEvalZero }; 483*10465441SEvalZero 484*10465441SEvalZero union MKNOD3res switch (nfsstat3 status) { 485*10465441SEvalZero case NFS3_OK: 486*10465441SEvalZero MKNOD3resok resok; 487*10465441SEvalZero default: 488*10465441SEvalZero MKNOD3resfail resfail; 489*10465441SEvalZero }; 490*10465441SEvalZero 491*10465441SEvalZero struct REMOVE3args { 492*10465441SEvalZero diropargs3 object; 493*10465441SEvalZero }; 494*10465441SEvalZero 495*10465441SEvalZero struct REMOVE3resok { 496*10465441SEvalZero wcc_data dir_wcc; 497*10465441SEvalZero }; 498*10465441SEvalZero 499*10465441SEvalZero struct REMOVE3resfail { 500*10465441SEvalZero wcc_data dir_wcc; 501*10465441SEvalZero }; 502*10465441SEvalZero 503*10465441SEvalZero union REMOVE3res switch (nfsstat3 status) { 504*10465441SEvalZero case NFS3_OK: 505*10465441SEvalZero REMOVE3resok resok; 506*10465441SEvalZero default: 507*10465441SEvalZero REMOVE3resfail resfail; 508*10465441SEvalZero }; 509*10465441SEvalZero 510*10465441SEvalZero struct RMDIR3args { 511*10465441SEvalZero diropargs3 object; 512*10465441SEvalZero }; 513*10465441SEvalZero 514*10465441SEvalZero struct RMDIR3resok { 515*10465441SEvalZero wcc_data dir_wcc; 516*10465441SEvalZero }; 517*10465441SEvalZero 518*10465441SEvalZero struct RMDIR3resfail { 519*10465441SEvalZero wcc_data dir_wcc; 520*10465441SEvalZero }; 521*10465441SEvalZero 522*10465441SEvalZero union RMDIR3res switch (nfsstat3 status) { 523*10465441SEvalZero case NFS3_OK: 524*10465441SEvalZero RMDIR3resok resok; 525*10465441SEvalZero default: 526*10465441SEvalZero RMDIR3resfail resfail; 527*10465441SEvalZero }; 528*10465441SEvalZero 529*10465441SEvalZero struct RENAME3args { 530*10465441SEvalZero diropargs3 from; 531*10465441SEvalZero diropargs3 to; 532*10465441SEvalZero }; 533*10465441SEvalZero 534*10465441SEvalZero struct RENAME3resok { 535*10465441SEvalZero wcc_data fromdir_wcc; 536*10465441SEvalZero wcc_data todir_wcc; 537*10465441SEvalZero }; 538*10465441SEvalZero 539*10465441SEvalZero struct RENAME3resfail { 540*10465441SEvalZero wcc_data fromdir_wcc; 541*10465441SEvalZero wcc_data todir_wcc; 542*10465441SEvalZero }; 543*10465441SEvalZero 544*10465441SEvalZero union RENAME3res switch (nfsstat3 status) { 545*10465441SEvalZero case NFS3_OK: 546*10465441SEvalZero RENAME3resok resok; 547*10465441SEvalZero default: 548*10465441SEvalZero RENAME3resfail resfail; 549*10465441SEvalZero }; 550*10465441SEvalZero struct LINK3args { 551*10465441SEvalZero nfs_fh3 file; 552*10465441SEvalZero diropargs3 link; 553*10465441SEvalZero }; 554*10465441SEvalZero 555*10465441SEvalZero struct LINK3resok { 556*10465441SEvalZero post_op_attr file_attributes; 557*10465441SEvalZero wcc_data linkdir_wcc; 558*10465441SEvalZero }; 559*10465441SEvalZero 560*10465441SEvalZero struct LINK3resfail { 561*10465441SEvalZero post_op_attr file_attributes; 562*10465441SEvalZero wcc_data linkdir_wcc; 563*10465441SEvalZero }; 564*10465441SEvalZero 565*10465441SEvalZero union LINK3res switch (nfsstat3 status) { 566*10465441SEvalZero case NFS3_OK: 567*10465441SEvalZero LINK3resok resok; 568*10465441SEvalZero default: 569*10465441SEvalZero LINK3resfail resfail; 570*10465441SEvalZero }; 571*10465441SEvalZero 572*10465441SEvalZero struct READDIR3args { 573*10465441SEvalZero nfs_fh3 dir; 574*10465441SEvalZero cookie3 cookie; 575*10465441SEvalZero cookieverf3 cookieverf; 576*10465441SEvalZero count3 count; 577*10465441SEvalZero }; 578*10465441SEvalZero 579*10465441SEvalZero struct entry3 { 580*10465441SEvalZero fileid3 fileid; 581*10465441SEvalZero filename3 name; 582*10465441SEvalZero cookie3 cookie; 583*10465441SEvalZero entry3 *nextentry; 584*10465441SEvalZero }; 585*10465441SEvalZero 586*10465441SEvalZero struct dirlist3 { 587*10465441SEvalZero entry3 *entries; 588*10465441SEvalZero bool eof; 589*10465441SEvalZero }; 590*10465441SEvalZero 591*10465441SEvalZero struct READDIR3resok { 592*10465441SEvalZero post_op_attr dir_attributes; 593*10465441SEvalZero cookieverf3 cookieverf; 594*10465441SEvalZero dirlist3 reply; 595*10465441SEvalZero }; 596*10465441SEvalZero 597*10465441SEvalZero struct READDIR3resfail { 598*10465441SEvalZero post_op_attr dir_attributes; 599*10465441SEvalZero }; 600*10465441SEvalZero 601*10465441SEvalZero union READDIR3res switch (nfsstat3 status) { 602*10465441SEvalZero case NFS3_OK: 603*10465441SEvalZero READDIR3resok resok; 604*10465441SEvalZero default: 605*10465441SEvalZero READDIR3resfail resfail; 606*10465441SEvalZero }; 607*10465441SEvalZero 608*10465441SEvalZero struct READDIRPLUS3args { 609*10465441SEvalZero nfs_fh3 dir; 610*10465441SEvalZero cookie3 cookie; 611*10465441SEvalZero cookieverf3 cookieverf; 612*10465441SEvalZero count3 dircount; 613*10465441SEvalZero count3 maxcount; 614*10465441SEvalZero }; 615*10465441SEvalZero 616*10465441SEvalZero struct entryplus3 { 617*10465441SEvalZero fileid3 fileid; 618*10465441SEvalZero filename3 name; 619*10465441SEvalZero cookie3 cookie; 620*10465441SEvalZero post_op_attr name_attributes; 621*10465441SEvalZero post_op_fh3 name_handle; 622*10465441SEvalZero entryplus3 *nextentry; 623*10465441SEvalZero }; 624*10465441SEvalZero 625*10465441SEvalZero struct dirlistplus3 { 626*10465441SEvalZero entryplus3 *entries; 627*10465441SEvalZero bool eof; 628*10465441SEvalZero }; 629*10465441SEvalZero 630*10465441SEvalZero struct READDIRPLUS3resok { 631*10465441SEvalZero post_op_attr dir_attributes; 632*10465441SEvalZero cookieverf3 cookieverf; 633*10465441SEvalZero dirlistplus3 reply; 634*10465441SEvalZero }; 635*10465441SEvalZero 636*10465441SEvalZero struct READDIRPLUS3resfail { 637*10465441SEvalZero post_op_attr dir_attributes; 638*10465441SEvalZero }; 639*10465441SEvalZero 640*10465441SEvalZero union READDIRPLUS3res switch (nfsstat3 status) { 641*10465441SEvalZero case NFS3_OK: 642*10465441SEvalZero READDIRPLUS3resok resok; 643*10465441SEvalZero default: 644*10465441SEvalZero READDIRPLUS3resfail resfail; 645*10465441SEvalZero }; 646*10465441SEvalZero 647*10465441SEvalZero struct FSSTAT3args { 648*10465441SEvalZero nfs_fh3 fsroot; 649*10465441SEvalZero }; 650*10465441SEvalZero 651*10465441SEvalZero struct FSSTAT3resok { 652*10465441SEvalZero post_op_attr obj_attributes; 653*10465441SEvalZero size3 tbytes; 654*10465441SEvalZero size3 fbytes; 655*10465441SEvalZero size3 abytes; 656*10465441SEvalZero size3 tfiles; 657*10465441SEvalZero size3 ffiles; 658*10465441SEvalZero size3 afiles; 659*10465441SEvalZero uint32 invarsec; 660*10465441SEvalZero }; 661*10465441SEvalZero 662*10465441SEvalZero struct FSSTAT3resfail { 663*10465441SEvalZero post_op_attr obj_attributes; 664*10465441SEvalZero }; 665*10465441SEvalZero 666*10465441SEvalZero union FSSTAT3res switch (nfsstat3 status) { 667*10465441SEvalZero case NFS3_OK: 668*10465441SEvalZero FSSTAT3resok resok; 669*10465441SEvalZero default: 670*10465441SEvalZero FSSTAT3resfail resfail; 671*10465441SEvalZero }; 672*10465441SEvalZero 673*10465441SEvalZero struct FSINFO3args { 674*10465441SEvalZero nfs_fh3 fsroot; 675*10465441SEvalZero }; 676*10465441SEvalZero 677*10465441SEvalZero struct FSINFO3resok { 678*10465441SEvalZero post_op_attr obj_attributes; 679*10465441SEvalZero uint32 rtmax; 680*10465441SEvalZero uint32 rtpref; 681*10465441SEvalZero uint32 rtmult; 682*10465441SEvalZero uint32 wtmax; 683*10465441SEvalZero uint32 wtpref; 684*10465441SEvalZero uint32 wtmult; 685*10465441SEvalZero uint32 dtpref; 686*10465441SEvalZero size3 maxfilesize; 687*10465441SEvalZero nfstime3 time_delta; 688*10465441SEvalZero uint32 properties; 689*10465441SEvalZero }; 690*10465441SEvalZero 691*10465441SEvalZero struct FSINFO3resfail { 692*10465441SEvalZero post_op_attr obj_attributes; 693*10465441SEvalZero }; 694*10465441SEvalZero 695*10465441SEvalZero union FSINFO3res switch (nfsstat3 status) { 696*10465441SEvalZero case NFS3_OK: 697*10465441SEvalZero FSINFO3resok resok; 698*10465441SEvalZero default: 699*10465441SEvalZero FSINFO3resfail resfail; 700*10465441SEvalZero }; 701*10465441SEvalZero 702*10465441SEvalZero struct PATHCONF3args { 703*10465441SEvalZero nfs_fh3 object; 704*10465441SEvalZero }; 705*10465441SEvalZero 706*10465441SEvalZero struct PATHCONF3resok { 707*10465441SEvalZero post_op_attr obj_attributes; 708*10465441SEvalZero uint32 linkmax; 709*10465441SEvalZero uint32 name_max; 710*10465441SEvalZero bool no_trunc; 711*10465441SEvalZero bool chown_restricted; 712*10465441SEvalZero bool case_insensitive; 713*10465441SEvalZero bool case_preserving; 714*10465441SEvalZero }; 715*10465441SEvalZero 716*10465441SEvalZero struct PATHCONF3resfail { 717*10465441SEvalZero post_op_attr obj_attributes; 718*10465441SEvalZero }; 719*10465441SEvalZero 720*10465441SEvalZero union PATHCONF3res switch (nfsstat3 status) { 721*10465441SEvalZero case NFS3_OK: 722*10465441SEvalZero PATHCONF3resok resok; 723*10465441SEvalZero default: 724*10465441SEvalZero PATHCONF3resfail resfail; 725*10465441SEvalZero }; 726*10465441SEvalZero 727*10465441SEvalZero struct COMMIT3args { 728*10465441SEvalZero nfs_fh3 file; 729*10465441SEvalZero offset3 offset; 730*10465441SEvalZero count3 count; 731*10465441SEvalZero }; 732*10465441SEvalZero 733*10465441SEvalZero struct COMMIT3resok { 734*10465441SEvalZero wcc_data file_wcc; 735*10465441SEvalZero writeverf3 verf; 736*10465441SEvalZero }; 737*10465441SEvalZero 738*10465441SEvalZero struct COMMIT3resfail { 739*10465441SEvalZero wcc_data file_wcc; 740*10465441SEvalZero }; 741*10465441SEvalZero 742*10465441SEvalZero union COMMIT3res switch (nfsstat3 status) { 743*10465441SEvalZero case NFS3_OK: 744*10465441SEvalZero COMMIT3resok resok; 745*10465441SEvalZero default: 746*10465441SEvalZero COMMIT3resfail resfail; 747*10465441SEvalZero }; 748*10465441SEvalZero 749*10465441SEvalZero program NFS_PROGRAM { 750*10465441SEvalZero version NFS_V3 { 751*10465441SEvalZero void NFSPROC3_NULL(void) = 0; 752*10465441SEvalZero GETATTR3res NFSPROC3_GETATTR(GETATTR3args) = 1; 753*10465441SEvalZero SETATTR3res NFSPROC3_SETATTR(SETATTR3args) = 2; 754*10465441SEvalZero LOOKUP3res NFSPROC3_LOOKUP(LOOKUP3args) = 3; 755*10465441SEvalZero ACCESS3res NFSPROC3_ACCESS(ACCESS3args) = 4; 756*10465441SEvalZero READLINK3res NFSPROC3_READLINK(READLINK3args) = 5; 757*10465441SEvalZero READ3res NFSPROC3_READ(READ3args) = 6; 758*10465441SEvalZero WRITE3res NFSPROC3_WRITE(WRITE3args) = 7; 759*10465441SEvalZero CREATE3res NFSPROC3_CREATE(CREATE3args) = 8; 760*10465441SEvalZero MKDIR3res NFSPROC3_MKDIR(MKDIR3args) = 9; 761*10465441SEvalZero SYMLINK3res NFSPROC3_SYMLINK(SYMLINK3args) = 10; 762*10465441SEvalZero MKNOD3res NFSPROC3_MKNOD(MKNOD3args) = 11; 763*10465441SEvalZero REMOVE3res NFSPROC3_REMOVE(REMOVE3args) = 12; 764*10465441SEvalZero RMDIR3res NFSPROC3_RMDIR(RMDIR3args) = 13; 765*10465441SEvalZero RENAME3res NFSPROC3_RENAME(RENAME3args) = 14; 766*10465441SEvalZero LINK3res NFSPROC3_LINK(LINK3args) = 15; 767*10465441SEvalZero READDIR3res NFSPROC3_READDIR(READDIR3args) = 16; 768*10465441SEvalZero READDIRPLUS3res NFSPROC3_READDIRPLUS(READDIRPLUS3args) = 17; 769*10465441SEvalZero FSSTAT3res NFSPROC3_FSSTAT(FSSTAT3args) = 18; 770*10465441SEvalZero FSINFO3res NFSPROC3_FSINFO(FSINFO3args) = 19; 771*10465441SEvalZero PATHCONF3res NFSPROC3_PATHCONF(PATHCONF3args) = 20; 772*10465441SEvalZero COMMIT3res NFSPROC3_COMMIT(COMMIT3args) = 21; 773*10465441SEvalZero } = 3; 774*10465441SEvalZero } = 100003; 775