URI: 
       tnfs3.h - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tnfs3.h (14807B)
       ---
            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 
          189 void nfs3errstr(Nfs3Status);
          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         uint namelen;
          665         u64int cookie;
          666         u1int haveAttr;
          667         Nfs3Attr attr;
          668         u1int haveHandle;
          669         Nfs3Handle handle;
          670 };
          671 
          672 struct Nfs3RReadDirPlus {
          673         SunCall call;
          674         Nfs3Status status;
          675         u1int haveAttr;
          676         Nfs3Attr attr;
          677         uchar verf[Nfs3CookieVerfSize];
          678         uchar *data;
          679         u32int count;
          680         u1int eof;
          681 };
          682 
          683 struct Nfs3TFsStat {
          684         SunCall call;
          685         Nfs3Handle handle;
          686 };
          687 
          688 struct Nfs3RFsStat {
          689         SunCall call;
          690         Nfs3Status status;
          691         u1int haveAttr;
          692         Nfs3Attr attr;
          693         u64int totalBytes;
          694         u64int freeBytes;
          695         u64int availBytes;
          696         u64int totalFiles;
          697         u64int freeFiles;
          698         u64int availFiles;
          699         u32int invarSec;
          700 };
          701 
          702 struct Nfs3TFsInfo {
          703         SunCall call;
          704         Nfs3Handle handle;
          705 };
          706 
          707 struct Nfs3RFsInfo {
          708         SunCall call;
          709         Nfs3Status status;
          710         u1int haveAttr;
          711         Nfs3Attr attr;
          712         u32int readMax;
          713         u32int readPref;
          714         u32int readMult;
          715         u32int writeMax;
          716         u32int writePref;
          717         u32int writeMult;
          718         u32int readDirPref;
          719         u64int maxFileSize;
          720         Nfs3Time timePrec;
          721         u32int flags;
          722 };
          723 
          724 struct Nfs3TPathconf {
          725         SunCall call;
          726         Nfs3Handle handle;
          727 };
          728 
          729 struct Nfs3RPathconf {
          730         SunCall call;
          731         Nfs3Status status;
          732         u1int haveAttr;
          733         Nfs3Attr attr;
          734         u32int maxLink;
          735         u32int maxName;
          736         u1int noTrunc;
          737         u1int chownRestricted;
          738         u1int caseInsensitive;
          739         u1int casePreserving;
          740 };
          741 
          742 struct Nfs3TCommit {
          743         SunCall call;
          744         Nfs3Handle handle;
          745         u64int offset;
          746         u32int count;
          747 };
          748 
          749 struct Nfs3RCommit {
          750         SunCall call;
          751         Nfs3Status status;
          752         Nfs3Wcc wcc;
          753         uchar verf[Nfs3WriteVerfSize];
          754 };
          755 
          756 char *nfs3statusstr(Nfs3Status);
          757 char *nfs3typestr(SunCallType);
          758 char *nfs3settimestr(Nfs3SetTime);
          759 char *nfs3syncstr(Nfs3Sync);
          760 
          761 void nfs3handleprint(Fmt*, Nfs3Handle*);
          762 u32int nfs3handlesize(Nfs3Handle*);
          763 int nfs3handlepack(uchar*, uchar*, uchar**, Nfs3Handle*);
          764 int nfs3handleunpack(uchar*, uchar*, uchar**, Nfs3Handle*);
          765 
          766 void nfs3timeprint(Fmt*, Nfs3Time*);
          767 u32int nfs3timesize(Nfs3Time*);
          768 int nfs3timepack(uchar*, uchar*, uchar**, Nfs3Time*);
          769 int nfs3timeunpack(uchar*, uchar*, uchar**, Nfs3Time*);
          770 
          771 void nfs3attrprint(Fmt*, Nfs3Attr*);
          772 u32int nfs3attrsize(Nfs3Attr*);
          773 int nfs3attrpack(uchar*, uchar*, uchar**, Nfs3Attr*);
          774 int nfs3attrunpack(uchar*, uchar*, uchar**, Nfs3Attr*);
          775 
          776 void nfs3wccattrprint(Fmt*, Nfs3WccAttr*);
          777 u32int nfs3wccattrsize(Nfs3WccAttr*);
          778 int nfs3wccattrpack(uchar*, uchar*, uchar**, Nfs3WccAttr*);
          779 int nfs3wccattrunpack(uchar*, uchar*, uchar**, Nfs3WccAttr*);
          780 
          781 void nfs3wccprint(Fmt*, Nfs3Wcc*);
          782 u32int nfs3wccsize(Nfs3Wcc*);
          783 int nfs3wccpack(uchar*, uchar*, uchar**, Nfs3Wcc*);
          784 int nfs3wccunpack(uchar*, uchar*, uchar**, Nfs3Wcc*);
          785 
          786 void nfs3setattrprint(Fmt*, Nfs3SetAttr*);
          787 u32int nfs3setattrsize(Nfs3SetAttr*);
          788 int nfs3setattrpack(uchar*, uchar*, uchar**, Nfs3SetAttr*);
          789 int nfs3setattrunpack(uchar*, uchar*, uchar**, Nfs3SetAttr*);
          790 
          791 extern SunProg nfs3prog;
          792 
          793 void nfs3entryprint(Fmt*, Nfs3Entry*);
          794 u32int nfs3entrysize(Nfs3Entry*);
          795 int nfs3entrypack(uchar*, uchar*, uchar**, Nfs3Entry*);
          796 int nfs3entryunpack(uchar*, uchar*, uchar**, Nfs3Entry*);
          797 
          798 void nfs3entryplusprint(Fmt*, Nfs3Entry*);
          799 u32int nfs3entryplussize(Nfs3Entry*);
          800 int nfs3entrypluspack(uchar*, uchar*, uchar**, Nfs3Entry*);
          801 int nfs3entryplusunpack(uchar*, uchar*, uchar**, Nfs3Entry*);
          802