rsc | 2277c5d | 2004-03-21 04:33:13 +0000 | [diff] [blame] | 1 | /* |
| 2 | * NFS mounter V3; see RFC 1813 |
| 3 | */ |
| 4 | /* |
| 5 | #pragma lib "libsunrpc.a" |
| 6 | #pragma src "/sys/src/libsunrpc" |
| 7 | */ |
| 8 | #define _NFS3H_ /* sorry */ |
| 9 | |
| 10 | enum { |
| 11 | NfsMount1HandleSize = 32, |
| 12 | NfsMount3MaxPathSize = 1024, |
| 13 | NfsMount3MaxNameSize = 255, |
| 14 | NfsMount3MaxHandleSize = 64, |
| 15 | NfsMount3Program = 100005, |
| 16 | NfsMount3Version = 3, |
| 17 | NfsMount1Program = 100005, |
| 18 | NfsMount1Version = 1 |
| 19 | }; |
| 20 | typedef struct NfsMount3TNull NfsMount3TNull; |
| 21 | typedef struct NfsMount3RNull NfsMount3RNull; |
| 22 | typedef struct NfsMount3TMnt NfsMount3TMnt; |
| 23 | typedef struct NfsMount3RMnt NfsMount3RMnt; |
| 24 | typedef struct NfsMount3TDump NfsMount3TDump; |
| 25 | typedef struct NfsMount3Entry NfsMount3Entry; |
| 26 | typedef struct NfsMount3RDump NfsMount3RDump; |
| 27 | typedef struct NfsMount3TUmnt NfsMount3TUmnt; |
| 28 | typedef struct NfsMount3RUmnt NfsMount3RUmnt; |
| 29 | typedef struct NfsMount3Export NfsMount3Export; |
| 30 | typedef struct NfsMount3TUmntall NfsMount3TUmntall; |
| 31 | typedef struct NfsMount3RUmntall NfsMount3RUmntall; |
| 32 | typedef struct NfsMount3TExport NfsMount3TExport; |
| 33 | typedef struct NfsMount3RExport NfsMount3RExport; |
| 34 | |
| 35 | typedef enum |
| 36 | { |
| 37 | NfsMount3CallTNull, |
| 38 | NfsMount3CallRNull, |
| 39 | NfsMount3CallTMnt, |
| 40 | NfsMount3CallRMnt, |
| 41 | NfsMount3CallTDump, |
| 42 | NfsMount3CallRDump, |
| 43 | NfsMount3CallTUmnt, |
| 44 | NfsMount3CallRUmnt, |
| 45 | NfsMount3CallTUmntall, |
| 46 | NfsMount3CallRUmntall, |
| 47 | NfsMount3CallTExport, |
| 48 | NfsMount3CallRExport |
| 49 | } NfsMount3CallType; |
| 50 | |
| 51 | struct NfsMount3TNull { |
| 52 | SunCall call; |
| 53 | }; |
| 54 | |
| 55 | struct NfsMount3RNull { |
| 56 | SunCall call; |
| 57 | }; |
| 58 | |
| 59 | struct NfsMount3TMnt { |
| 60 | SunCall call; |
| 61 | char *path; |
| 62 | }; |
| 63 | |
| 64 | struct NfsMount3RMnt { |
| 65 | SunCall call; |
| 66 | uint status; |
| 67 | uchar *handle; |
| 68 | uint len; |
| 69 | u32int *auth; |
| 70 | u32int nauth; |
| 71 | }; |
| 72 | |
| 73 | struct NfsMount3TDump { |
| 74 | SunCall call; |
| 75 | }; |
| 76 | |
| 77 | struct NfsMount3Entry { |
| 78 | char *host; |
| 79 | char *path; |
| 80 | }; |
| 81 | |
| 82 | struct NfsMount3RDump { |
| 83 | SunCall call; |
| 84 | uchar *data; |
| 85 | u32int count; |
| 86 | }; |
| 87 | |
| 88 | struct NfsMount3TUmnt { |
| 89 | SunCall call; |
| 90 | char *path; |
| 91 | }; |
| 92 | |
| 93 | struct NfsMount3RUmnt { |
| 94 | SunCall call; |
| 95 | }; |
| 96 | |
| 97 | struct NfsMount3Export { |
| 98 | char *path; |
| 99 | char **g; |
| 100 | u32int ng; |
| 101 | }; |
| 102 | |
| 103 | struct NfsMount3TUmntall { |
| 104 | SunCall call; |
| 105 | }; |
| 106 | |
| 107 | struct NfsMount3RUmntall { |
| 108 | SunCall call; |
| 109 | }; |
| 110 | |
| 111 | struct NfsMount3TExport { |
| 112 | SunCall call; |
| 113 | }; |
| 114 | |
| 115 | struct NfsMount3RExport { |
| 116 | SunCall call; |
| 117 | uchar *data; |
| 118 | u32int count; |
| 119 | }; |
| 120 | |
| 121 | uint nfsmount3exportgroupsize(uchar*); |
| 122 | uint nfsmount3exportsize(NfsMount3Export*); |
| 123 | int nfsmount3exportpack(uchar*, uchar*, uchar**, NfsMount3Export*); |
| 124 | int nfsmount3exportunpack(uchar*, uchar*, uchar**, char**, char***, NfsMount3Export*); |
| 125 | int nfsmount3entrypack(uchar*, uchar*, uchar**, NfsMount3Entry*); |
| 126 | int nfsmount3entryunpack(uchar*, uchar*, uchar**, NfsMount3Entry*); |
| 127 | uint nfsmount3entrysize(NfsMount3Entry*); |
| 128 | |
| 129 | extern SunProg nfsmount3prog; |
| 130 | |
| 131 | /* |
| 132 | * NFS V3; see RFC 1813 |
| 133 | */ |
| 134 | enum { |
| 135 | Nfs3MaxHandleSize = 64, |
| 136 | Nfs3CookieVerfSize = 8, |
| 137 | Nfs3CreateVerfSize = 8, |
| 138 | Nfs3WriteVerfSize = 8, |
| 139 | Nfs3AccessRead = 1, |
| 140 | Nfs3AccessLookup = 2, |
| 141 | Nfs3AccessModify = 4, |
| 142 | Nfs3AccessExtend = 8, |
| 143 | Nfs3AccessDelete = 16, |
| 144 | Nfs3AccessExecute = 32, |
| 145 | Nfs3FsHasLinks = 1, |
| 146 | Nfs3FsHasSymlinks = 2, |
| 147 | Nfs3FsHomogeneous = 8, |
| 148 | Nfs3FsCanSetTime = 16, |
| 149 | |
| 150 | Nfs3Version = 3, |
| 151 | Nfs3Program = 100003, |
| 152 | }; |
| 153 | typedef enum |
| 154 | { |
| 155 | Nfs3Ok = 0, |
| 156 | Nfs3ErrNotOwner = 1, |
| 157 | Nfs3ErrNoEnt = 2, |
| 158 | Nfs3ErrIo = 5, |
| 159 | Nfs3ErrNxio = 6, |
| 160 | Nfs3ErrNoMem = 12, |
| 161 | Nfs3ErrAcces = 13, |
| 162 | Nfs3ErrExist = 17, |
| 163 | Nfs3ErrXDev = 18, |
| 164 | Nfs3ErrNoDev = 19, |
| 165 | Nfs3ErrNotDir = 20, |
| 166 | Nfs3ErrIsDir = 21, |
| 167 | Nfs3ErrInval = 22, |
| 168 | Nfs3ErrFbig = 27, |
| 169 | Nfs3ErrNoSpc = 28, |
| 170 | Nfs3ErrRoFs = 30, |
| 171 | Nfs3ErrMLink = 31, |
| 172 | Nfs3ErrNameTooLong = 63, |
| 173 | Nfs3ErrNotEmpty = 66, |
| 174 | Nfs3ErrDQuot = 69, |
| 175 | Nfs3ErrStale = 70, |
| 176 | Nfs3ErrRemote = 71, |
| 177 | Nfs3ErrBadHandle = 10001, |
| 178 | Nfs3ErrNotSync = 10002, |
| 179 | Nfs3ErrBadCookie = 10003, |
| 180 | Nfs3ErrNotSupp = 10004, |
| 181 | Nfs3ErrTooSmall = 10005, |
| 182 | Nfs3ErrServerFault = 10006, |
| 183 | Nfs3ErrBadType = 10007, |
| 184 | Nfs3ErrJukebox = 10008, |
| 185 | Nfs3ErrFprintNotFound = 10009, |
| 186 | Nfs3ErrAborted = 10010, |
| 187 | } Nfs3Status; |
| 188 | |
rsc | 819822c | 2004-06-16 16:45:22 +0000 | [diff] [blame] | 189 | void nfs3errstr(Nfs3Status); |
rsc | 2277c5d | 2004-03-21 04:33:13 +0000 | [diff] [blame] | 190 | |
| 191 | typedef enum |
| 192 | { |
| 193 | Nfs3FileReg = 1, |
| 194 | Nfs3FileDir = 2, |
| 195 | Nfs3FileBlock = 3, |
| 196 | Nfs3FileChar = 4, |
| 197 | Nfs3FileSymlink = 5, |
| 198 | Nfs3FileSocket = 6, |
| 199 | Nfs3FileFifo = 7, |
| 200 | } Nfs3FileType; |
| 201 | |
| 202 | enum |
| 203 | { |
| 204 | Nfs3ModeSetUid = 0x800, |
| 205 | Nfs3ModeSetGid = 0x400, |
| 206 | Nfs3ModeSticky = 0x200, |
| 207 | }; |
| 208 | |
| 209 | typedef enum |
| 210 | { |
| 211 | Nfs3CallTNull, |
| 212 | Nfs3CallRNull, |
| 213 | Nfs3CallTGetattr, |
| 214 | Nfs3CallRGetattr, |
| 215 | Nfs3CallTSetattr, |
| 216 | Nfs3CallRSetattr, |
| 217 | Nfs3CallTLookup, |
| 218 | Nfs3CallRLookup, |
| 219 | Nfs3CallTAccess, |
| 220 | Nfs3CallRAccess, |
| 221 | Nfs3CallTReadlink, |
| 222 | Nfs3CallRReadlink, |
| 223 | Nfs3CallTRead, |
| 224 | Nfs3CallRRead, |
| 225 | Nfs3CallTWrite, |
| 226 | Nfs3CallRWrite, |
| 227 | Nfs3CallTCreate, |
| 228 | Nfs3CallRCreate, |
| 229 | Nfs3CallTMkdir, |
| 230 | Nfs3CallRMkdir, |
| 231 | Nfs3CallTSymlink, |
| 232 | Nfs3CallRSymlink, |
| 233 | Nfs3CallTMknod, |
| 234 | Nfs3CallRMknod, |
| 235 | Nfs3CallTRemove, |
| 236 | Nfs3CallRRemove, |
| 237 | Nfs3CallTRmdir, |
| 238 | Nfs3CallRRmdir, |
| 239 | Nfs3CallTRename, |
| 240 | Nfs3CallRRename, |
| 241 | Nfs3CallTLink, |
| 242 | Nfs3CallRLink, |
| 243 | Nfs3CallTReadDir, |
| 244 | Nfs3CallRReadDir, |
| 245 | Nfs3CallTReadDirPlus, |
| 246 | Nfs3CallRReadDirPlus, |
| 247 | Nfs3CallTFsStat, |
| 248 | Nfs3CallRFsStat, |
| 249 | Nfs3CallTFsInfo, |
| 250 | Nfs3CallRFsInfo, |
| 251 | Nfs3CallTPathconf, |
| 252 | Nfs3CallRPathconf, |
| 253 | Nfs3CallTCommit, |
| 254 | Nfs3CallRCommit, |
| 255 | } Nfs3CallType; |
| 256 | |
| 257 | typedef struct Nfs3Handle Nfs3Handle; |
| 258 | typedef struct Nfs3Time Nfs3Time; |
| 259 | typedef struct Nfs3Attr Nfs3Attr; |
| 260 | typedef struct Nfs3WccAttr Nfs3WccAttr; |
| 261 | typedef struct Nfs3Wcc Nfs3Wcc; |
| 262 | typedef enum |
| 263 | { |
| 264 | Nfs3SetTimeDont = 0, |
| 265 | Nfs3SetTimeServer = 1, |
| 266 | Nfs3SetTimeClient = 2, |
| 267 | } Nfs3SetTime; |
| 268 | |
| 269 | typedef struct Nfs3SetAttr Nfs3SetAttr; |
| 270 | typedef struct Nfs3TNull Nfs3TNull; |
| 271 | typedef struct Nfs3RNull Nfs3RNull; |
| 272 | typedef struct Nfs3TGetattr Nfs3TGetattr; |
| 273 | typedef struct Nfs3RGetattr Nfs3RGetattr; |
| 274 | typedef struct Nfs3TSetattr Nfs3TSetattr; |
| 275 | typedef struct Nfs3RSetattr Nfs3RSetattr; |
| 276 | typedef struct Nfs3TLookup Nfs3TLookup; |
| 277 | typedef struct Nfs3RLookup Nfs3RLookup; |
| 278 | typedef struct Nfs3TAccess Nfs3TAccess; |
| 279 | typedef struct Nfs3RAccess Nfs3RAccess; |
| 280 | typedef struct Nfs3TReadlink Nfs3TReadlink; |
| 281 | typedef struct Nfs3RReadlink Nfs3RReadlink; |
| 282 | typedef struct Nfs3TRead Nfs3TRead; |
| 283 | typedef struct Nfs3RRead Nfs3RRead; |
| 284 | typedef enum |
| 285 | { |
| 286 | Nfs3SyncNone = 0, |
| 287 | Nfs3SyncData = 1, |
| 288 | Nfs3SyncFile = 2, |
| 289 | } Nfs3Sync; |
| 290 | |
| 291 | typedef struct Nfs3TWrite Nfs3TWrite; |
| 292 | typedef struct Nfs3RWrite Nfs3RWrite; |
| 293 | typedef enum |
| 294 | { |
| 295 | Nfs3CreateUnchecked = 0, |
| 296 | Nfs3CreateGuarded = 1, |
| 297 | Nfs3CreateExclusive = 2, |
| 298 | } Nfs3Create; |
| 299 | |
| 300 | typedef struct Nfs3TCreate Nfs3TCreate; |
| 301 | typedef struct Nfs3RCreate Nfs3RCreate; |
| 302 | typedef struct Nfs3TMkdir Nfs3TMkdir; |
| 303 | typedef struct Nfs3RMkdir Nfs3RMkdir; |
| 304 | typedef struct Nfs3TSymlink Nfs3TSymlink; |
| 305 | typedef struct Nfs3RSymlink Nfs3RSymlink; |
| 306 | typedef struct Nfs3TMknod Nfs3TMknod; |
| 307 | typedef struct Nfs3RMknod Nfs3RMknod; |
| 308 | typedef struct Nfs3TRemove Nfs3TRemove; |
| 309 | typedef struct Nfs3RRemove Nfs3RRemove; |
| 310 | typedef struct Nfs3TRmdir Nfs3TRmdir; |
| 311 | typedef struct Nfs3RRmdir Nfs3RRmdir; |
| 312 | typedef struct Nfs3TRename Nfs3TRename; |
| 313 | typedef struct Nfs3RRename Nfs3RRename; |
| 314 | typedef struct Nfs3TLink Nfs3TLink; |
| 315 | typedef struct Nfs3RLink Nfs3RLink; |
| 316 | typedef struct Nfs3TReadDir Nfs3TReadDir; |
| 317 | typedef struct Nfs3Entry Nfs3Entry; |
| 318 | typedef struct Nfs3RReadDir Nfs3RReadDir; |
| 319 | typedef struct Nfs3TReadDirPlus Nfs3TReadDirPlus; |
| 320 | typedef struct Nfs3EntryPlus Nfs3EntryPlus; |
| 321 | typedef struct Nfs3RReadDirPlus Nfs3RReadDirPlus; |
| 322 | typedef struct Nfs3TFsStat Nfs3TFsStat; |
| 323 | typedef struct Nfs3RFsStat Nfs3RFsStat; |
| 324 | typedef struct Nfs3TFsInfo Nfs3TFsInfo; |
| 325 | typedef struct Nfs3RFsInfo Nfs3RFsInfo; |
| 326 | typedef struct Nfs3TPathconf Nfs3TPathconf; |
| 327 | typedef struct Nfs3RPathconf Nfs3RPathconf; |
| 328 | typedef struct Nfs3TCommit Nfs3TCommit; |
| 329 | typedef struct Nfs3RCommit Nfs3RCommit; |
| 330 | |
| 331 | struct Nfs3Handle { |
| 332 | uchar h[Nfs3MaxHandleSize]; |
| 333 | u32int len; |
| 334 | }; |
| 335 | |
| 336 | struct Nfs3Time { |
| 337 | u32int sec; |
| 338 | u32int nsec; |
| 339 | }; |
| 340 | |
| 341 | struct Nfs3Attr { |
| 342 | Nfs3FileType type; |
| 343 | u32int mode; |
| 344 | u32int nlink; |
| 345 | u32int uid; |
| 346 | u32int gid; |
| 347 | u64int size; |
| 348 | u64int used; |
| 349 | u32int major; |
| 350 | u32int minor; |
| 351 | u64int fsid; |
| 352 | u64int fileid; |
| 353 | Nfs3Time atime; |
| 354 | Nfs3Time mtime; |
| 355 | Nfs3Time ctime; |
| 356 | }; |
| 357 | |
| 358 | struct Nfs3WccAttr { |
| 359 | u64int size; |
| 360 | Nfs3Time mtime; |
| 361 | Nfs3Time ctime; |
| 362 | }; |
| 363 | |
| 364 | struct Nfs3Wcc { |
| 365 | u1int haveWccAttr; |
| 366 | Nfs3WccAttr wccAttr; |
| 367 | u1int haveAttr; |
| 368 | Nfs3Attr attr; |
| 369 | }; |
| 370 | |
| 371 | struct Nfs3SetAttr { |
| 372 | u1int setMode; |
| 373 | u32int mode; |
| 374 | u1int setUid; |
| 375 | u32int uid; |
| 376 | u1int setGid; |
| 377 | u32int gid; |
| 378 | u1int setSize; |
| 379 | u64int size; |
| 380 | Nfs3SetTime setAtime; |
| 381 | Nfs3Time atime; |
| 382 | Nfs3SetTime setMtime; |
| 383 | Nfs3Time mtime; |
| 384 | }; |
| 385 | |
| 386 | struct Nfs3TNull { |
| 387 | SunCall call; |
| 388 | }; |
| 389 | |
| 390 | struct Nfs3RNull { |
| 391 | SunCall call; |
| 392 | }; |
| 393 | |
| 394 | struct Nfs3TGetattr { |
| 395 | SunCall call; |
| 396 | Nfs3Handle handle; |
| 397 | }; |
| 398 | |
| 399 | struct Nfs3RGetattr { |
| 400 | SunCall call; |
| 401 | Nfs3Status status; |
| 402 | Nfs3Attr attr; |
| 403 | }; |
| 404 | |
| 405 | struct Nfs3TSetattr { |
| 406 | SunCall call; |
| 407 | Nfs3Handle handle; |
| 408 | Nfs3SetAttr attr; |
| 409 | u1int checkCtime; |
| 410 | Nfs3Time ctime; |
| 411 | }; |
| 412 | |
| 413 | struct Nfs3RSetattr { |
| 414 | SunCall call; |
| 415 | Nfs3Status status; |
| 416 | Nfs3Wcc wcc; |
| 417 | }; |
| 418 | |
| 419 | struct Nfs3TLookup { |
| 420 | SunCall call; |
| 421 | Nfs3Handle handle; |
| 422 | char *name; |
| 423 | }; |
| 424 | |
| 425 | struct Nfs3RLookup { |
| 426 | SunCall call; |
| 427 | Nfs3Status status; |
| 428 | Nfs3Handle handle; |
| 429 | u1int haveAttr; |
| 430 | Nfs3Attr attr; |
| 431 | u1int haveDirAttr; |
| 432 | Nfs3Attr dirAttr; |
| 433 | }; |
| 434 | |
| 435 | struct Nfs3TAccess { |
| 436 | SunCall call; |
| 437 | Nfs3Handle handle; |
| 438 | u32int access; |
| 439 | }; |
| 440 | |
| 441 | struct Nfs3RAccess { |
| 442 | SunCall call; |
| 443 | Nfs3Status status; |
| 444 | u1int haveAttr; |
| 445 | Nfs3Attr attr; |
| 446 | u32int access; |
| 447 | }; |
| 448 | |
| 449 | struct Nfs3TReadlink { |
| 450 | SunCall call; |
| 451 | Nfs3Handle handle; |
| 452 | }; |
| 453 | |
| 454 | struct Nfs3RReadlink { |
| 455 | SunCall call; |
| 456 | Nfs3Status status; |
| 457 | u1int haveAttr; |
| 458 | Nfs3Attr attr; |
| 459 | char *data; |
| 460 | }; |
| 461 | |
| 462 | struct Nfs3TRead { |
| 463 | SunCall call; |
| 464 | Nfs3Handle handle; |
| 465 | u64int offset; |
| 466 | u32int count; |
| 467 | }; |
| 468 | |
| 469 | struct Nfs3RRead { |
| 470 | SunCall call; |
| 471 | Nfs3Status status; |
| 472 | u1int haveAttr; |
| 473 | Nfs3Attr attr; |
| 474 | u32int count; |
| 475 | u1int eof; |
| 476 | uchar *data; |
| 477 | u32int ndata; |
| 478 | }; |
| 479 | |
| 480 | struct Nfs3TWrite { |
| 481 | SunCall call; |
| 482 | Nfs3Handle handle; |
| 483 | u64int offset; |
| 484 | u32int count; |
| 485 | Nfs3Sync stable; |
| 486 | uchar *data; |
| 487 | u32int ndata; |
| 488 | }; |
| 489 | |
| 490 | struct Nfs3RWrite { |
| 491 | SunCall call; |
| 492 | Nfs3Status status; |
| 493 | Nfs3Wcc wcc; |
| 494 | u32int count; |
| 495 | Nfs3Sync committed; |
| 496 | uchar verf[Nfs3WriteVerfSize]; |
| 497 | }; |
| 498 | |
| 499 | struct Nfs3TCreate { |
| 500 | SunCall call; |
| 501 | Nfs3Handle handle; |
| 502 | char *name; |
| 503 | Nfs3Create mode; |
| 504 | Nfs3SetAttr attr; |
| 505 | uchar verf[Nfs3CreateVerfSize]; |
| 506 | }; |
| 507 | |
| 508 | struct Nfs3RCreate { |
| 509 | SunCall call; |
| 510 | Nfs3Status status; |
| 511 | u1int haveHandle; |
| 512 | Nfs3Handle handle; |
| 513 | u1int haveAttr; |
| 514 | Nfs3Attr attr; |
| 515 | Nfs3Wcc dirWcc; |
| 516 | }; |
| 517 | |
| 518 | struct Nfs3TMkdir { |
| 519 | SunCall call; |
| 520 | Nfs3Handle handle; |
| 521 | char *name; |
| 522 | Nfs3SetAttr attr; |
| 523 | }; |
| 524 | |
| 525 | struct Nfs3RMkdir { |
| 526 | SunCall call; |
| 527 | Nfs3Status status; |
| 528 | u1int haveHandle; |
| 529 | Nfs3Handle handle; |
| 530 | u1int haveAttr; |
| 531 | Nfs3Attr attr; |
| 532 | Nfs3Wcc dirWcc; |
| 533 | }; |
| 534 | |
| 535 | struct Nfs3TSymlink { |
| 536 | SunCall call; |
| 537 | Nfs3Handle handle; |
| 538 | char *name; |
| 539 | Nfs3SetAttr attr; |
| 540 | char *data; |
| 541 | }; |
| 542 | |
| 543 | struct Nfs3RSymlink { |
| 544 | SunCall call; |
| 545 | Nfs3Status status; |
| 546 | u1int haveHandle; |
| 547 | Nfs3Handle handle; |
| 548 | u1int haveAttr; |
| 549 | Nfs3Attr attr; |
| 550 | Nfs3Wcc dirWcc; |
| 551 | }; |
| 552 | |
| 553 | struct Nfs3TMknod { |
| 554 | SunCall call; |
| 555 | Nfs3Handle handle; |
| 556 | char *name; |
| 557 | Nfs3FileType type; |
| 558 | Nfs3SetAttr attr; |
| 559 | u32int major; |
| 560 | u32int minor; |
| 561 | }; |
| 562 | |
| 563 | struct Nfs3RMknod { |
| 564 | SunCall call; |
| 565 | Nfs3Status status; |
| 566 | u1int haveHandle; |
| 567 | Nfs3Handle handle; |
| 568 | u1int haveAttr; |
| 569 | Nfs3Attr attr; |
| 570 | Nfs3Wcc dirWcc; |
| 571 | }; |
| 572 | |
| 573 | struct Nfs3TRemove { |
| 574 | SunCall call; |
| 575 | Nfs3Handle handle; |
| 576 | char *name; |
| 577 | }; |
| 578 | |
| 579 | struct Nfs3RRemove { |
| 580 | SunCall call; |
| 581 | Nfs3Status status; |
| 582 | Nfs3Wcc wcc; |
| 583 | }; |
| 584 | |
| 585 | struct Nfs3TRmdir { |
| 586 | SunCall call; |
| 587 | Nfs3Handle handle; |
| 588 | char *name; |
| 589 | }; |
| 590 | |
| 591 | struct Nfs3RRmdir { |
| 592 | SunCall call; |
| 593 | Nfs3Status status; |
| 594 | Nfs3Wcc wcc; |
| 595 | }; |
| 596 | |
| 597 | struct Nfs3TRename { |
| 598 | SunCall call; |
| 599 | struct { |
| 600 | Nfs3Handle handle; |
| 601 | char *name; |
| 602 | } from; |
| 603 | struct { |
| 604 | Nfs3Handle handle; |
| 605 | char *name; |
| 606 | } to; |
| 607 | }; |
| 608 | |
| 609 | struct Nfs3RRename { |
| 610 | SunCall call; |
| 611 | Nfs3Status status; |
| 612 | Nfs3Wcc fromWcc; |
| 613 | Nfs3Wcc toWcc; |
| 614 | }; |
| 615 | |
| 616 | struct Nfs3TLink { |
| 617 | SunCall call; |
| 618 | Nfs3Handle handle; |
| 619 | struct { |
| 620 | Nfs3Handle handle; |
| 621 | char *name; |
| 622 | } link; |
| 623 | }; |
| 624 | |
| 625 | struct Nfs3RLink { |
| 626 | SunCall call; |
| 627 | Nfs3Status status; |
| 628 | u1int haveAttr; |
| 629 | Nfs3Attr attr; |
| 630 | Nfs3Wcc dirWcc; |
| 631 | }; |
| 632 | |
| 633 | struct Nfs3TReadDir { |
| 634 | SunCall call; |
| 635 | Nfs3Handle handle; |
| 636 | u64int cookie; |
| 637 | uchar verf[Nfs3CookieVerfSize]; |
| 638 | u32int count; |
| 639 | }; |
| 640 | |
| 641 | struct Nfs3RReadDir { |
| 642 | SunCall call; |
| 643 | Nfs3Status status; |
| 644 | u1int haveAttr; |
| 645 | Nfs3Attr attr; |
| 646 | uchar verf[Nfs3CookieVerfSize]; |
| 647 | uchar *data; |
| 648 | u32int count; |
| 649 | u1int eof; |
| 650 | }; |
| 651 | |
| 652 | struct Nfs3TReadDirPlus { |
| 653 | SunCall call; |
| 654 | Nfs3Handle handle; |
| 655 | u64int cookie; |
| 656 | uchar verf[Nfs3CookieVerfSize]; |
| 657 | u32int dirCount; |
| 658 | u32int maxCount; |
| 659 | }; |
| 660 | |
| 661 | struct Nfs3Entry { |
| 662 | u64int fileid; |
| 663 | char *name; |
| 664 | u64int cookie; |
| 665 | u1int haveAttr; |
| 666 | Nfs3Attr attr; |
| 667 | u1int haveHandle; |
| 668 | Nfs3Handle handle; |
| 669 | }; |
| 670 | |
| 671 | struct Nfs3RReadDirPlus { |
| 672 | SunCall call; |
| 673 | Nfs3Status status; |
| 674 | u1int haveAttr; |
| 675 | Nfs3Attr attr; |
| 676 | uchar verf[Nfs3CookieVerfSize]; |
| 677 | uchar *data; |
| 678 | u32int count; |
| 679 | u1int eof; |
| 680 | }; |
| 681 | |
| 682 | struct Nfs3TFsStat { |
| 683 | SunCall call; |
| 684 | Nfs3Handle handle; |
| 685 | }; |
| 686 | |
| 687 | struct Nfs3RFsStat { |
| 688 | SunCall call; |
| 689 | Nfs3Status status; |
| 690 | u1int haveAttr; |
| 691 | Nfs3Attr attr; |
| 692 | u64int totalBytes; |
| 693 | u64int freeBytes; |
| 694 | u64int availBytes; |
| 695 | u64int totalFiles; |
| 696 | u64int freeFiles; |
| 697 | u64int availFiles; |
| 698 | u32int invarSec; |
| 699 | }; |
| 700 | |
| 701 | struct Nfs3TFsInfo { |
| 702 | SunCall call; |
| 703 | Nfs3Handle handle; |
| 704 | }; |
| 705 | |
| 706 | struct Nfs3RFsInfo { |
| 707 | SunCall call; |
| 708 | Nfs3Status status; |
| 709 | u1int haveAttr; |
| 710 | Nfs3Attr attr; |
| 711 | u32int readMax; |
| 712 | u32int readPref; |
| 713 | u32int readMult; |
| 714 | u32int writeMax; |
| 715 | u32int writePref; |
| 716 | u32int writeMult; |
| 717 | u32int readDirPref; |
| 718 | u64int maxFileSize; |
| 719 | Nfs3Time timePrec; |
| 720 | u32int flags; |
| 721 | }; |
| 722 | |
| 723 | struct Nfs3TPathconf { |
| 724 | SunCall call; |
| 725 | Nfs3Handle handle; |
| 726 | }; |
| 727 | |
| 728 | struct Nfs3RPathconf { |
| 729 | SunCall call; |
| 730 | Nfs3Status status; |
| 731 | u1int haveAttr; |
| 732 | Nfs3Attr attr; |
| 733 | u32int maxLink; |
| 734 | u32int maxName; |
| 735 | u1int noTrunc; |
| 736 | u1int chownRestricted; |
| 737 | u1int caseInsensitive; |
| 738 | u1int casePreserving; |
| 739 | }; |
| 740 | |
| 741 | struct Nfs3TCommit { |
| 742 | SunCall call; |
| 743 | Nfs3Handle handle; |
| 744 | u64int offset; |
| 745 | u32int count; |
| 746 | }; |
| 747 | |
| 748 | struct Nfs3RCommit { |
| 749 | SunCall call; |
| 750 | Nfs3Status status; |
| 751 | Nfs3Wcc wcc; |
| 752 | uchar verf[Nfs3WriteVerfSize]; |
| 753 | }; |
| 754 | |
| 755 | char *nfs3statusstr(Nfs3Status); |
| 756 | char *nfs3typestr(SunCallType); |
| 757 | char *nfs3settimestr(Nfs3SetTime); |
| 758 | char *nfs3syncstr(Nfs3Sync); |
| 759 | |
| 760 | void nfs3handleprint(Fmt*, Nfs3Handle*); |
| 761 | u32int nfs3handlesize(Nfs3Handle*); |
| 762 | int nfs3handlepack(uchar*, uchar*, uchar**, Nfs3Handle*); |
| 763 | int nfs3handleunpack(uchar*, uchar*, uchar**, Nfs3Handle*); |
| 764 | |
| 765 | void nfs3timeprint(Fmt*, Nfs3Time*); |
| 766 | u32int nfs3timesize(Nfs3Time*); |
| 767 | int nfs3timepack(uchar*, uchar*, uchar**, Nfs3Time*); |
| 768 | int nfs3timeunpack(uchar*, uchar*, uchar**, Nfs3Time*); |
| 769 | |
| 770 | void nfs3attrprint(Fmt*, Nfs3Attr*); |
| 771 | u32int nfs3attrsize(Nfs3Attr*); |
| 772 | int nfs3attrpack(uchar*, uchar*, uchar**, Nfs3Attr*); |
| 773 | int nfs3attrunpack(uchar*, uchar*, uchar**, Nfs3Attr*); |
| 774 | |
| 775 | void nfs3wccattrprint(Fmt*, Nfs3WccAttr*); |
| 776 | u32int nfs3wccattrsize(Nfs3WccAttr*); |
| 777 | int nfs3wccattrpack(uchar*, uchar*, uchar**, Nfs3WccAttr*); |
| 778 | int nfs3wccattrunpack(uchar*, uchar*, uchar**, Nfs3WccAttr*); |
| 779 | |
| 780 | void nfs3wccprint(Fmt*, Nfs3Wcc*); |
| 781 | u32int nfs3wccsize(Nfs3Wcc*); |
| 782 | int nfs3wccpack(uchar*, uchar*, uchar**, Nfs3Wcc*); |
| 783 | int nfs3wccunpack(uchar*, uchar*, uchar**, Nfs3Wcc*); |
| 784 | |
| 785 | void nfs3setattrprint(Fmt*, Nfs3SetAttr*); |
| 786 | u32int nfs3setattrsize(Nfs3SetAttr*); |
| 787 | int nfs3setattrpack(uchar*, uchar*, uchar**, Nfs3SetAttr*); |
| 788 | int nfs3setattrunpack(uchar*, uchar*, uchar**, Nfs3SetAttr*); |
| 789 | |
| 790 | extern SunProg nfs3prog; |
| 791 | |
| 792 | void nfs3entryprint(Fmt*, Nfs3Entry*); |
| 793 | u32int nfs3entrysize(Nfs3Entry*); |
| 794 | int nfs3entrypack(uchar*, uchar*, uchar**, Nfs3Entry*); |
| 795 | int nfs3entryunpack(uchar*, uchar*, uchar**, Nfs3Entry*); |
| 796 | |
| 797 | void nfs3entryplusprint(Fmt*, Nfs3Entry*); |
| 798 | u32int nfs3entryplussize(Nfs3Entry*); |
| 799 | int nfs3entrypluspack(uchar*, uchar*, uchar**, Nfs3Entry*); |
| 800 | int nfs3entryplusunpack(uchar*, uchar*, uchar**, Nfs3Entry*); |
| 801 | |