134e04225SDavid du Colombier #include <u.h>
234e04225SDavid du Colombier #include <libc.h>
334e04225SDavid du Colombier #include <thread.h>
434e04225SDavid du Colombier #include <sunrpc.h>
534e04225SDavid du Colombier #include <nfs3.h>
634e04225SDavid du Colombier
734e04225SDavid du Colombier char*
nfs3StatusStr(Nfs3Status x)834e04225SDavid du Colombier nfs3StatusStr(Nfs3Status x)
934e04225SDavid du Colombier {
1034e04225SDavid du Colombier switch(x){
1134e04225SDavid du Colombier case Nfs3Ok:
1234e04225SDavid du Colombier return "Nfs3Ok";
1334e04225SDavid du Colombier case Nfs3ErrNotOwner:
1434e04225SDavid du Colombier return "Nfs3ErrNotOwner";
1534e04225SDavid du Colombier case Nfs3ErrNoEnt:
1634e04225SDavid du Colombier return "Nfs3ErrNoEnt";
1734e04225SDavid du Colombier case Nfs3ErrNoMem:
1834e04225SDavid du Colombier return "Nfs3ErrNoMem";
1934e04225SDavid du Colombier case Nfs3ErrIo:
2034e04225SDavid du Colombier return "Nfs3ErrIo";
2134e04225SDavid du Colombier case Nfs3ErrNxio:
2234e04225SDavid du Colombier return "Nfs3ErrNxio";
2334e04225SDavid du Colombier case Nfs3ErrAcces:
2434e04225SDavid du Colombier return "Nfs3ErrAcces";
2534e04225SDavid du Colombier case Nfs3ErrExist:
2634e04225SDavid du Colombier return "Nfs3ErrExist";
2734e04225SDavid du Colombier case Nfs3ErrXDev:
2834e04225SDavid du Colombier return "Nfs3ErrXDev";
2934e04225SDavid du Colombier case Nfs3ErrNoDev:
3034e04225SDavid du Colombier return "Nfs3ErrNoDev";
3134e04225SDavid du Colombier case Nfs3ErrNotDir:
3234e04225SDavid du Colombier return "Nfs3ErrNotDir";
3334e04225SDavid du Colombier case Nfs3ErrIsDir:
3434e04225SDavid du Colombier return "Nfs3ErrIsDir";
3534e04225SDavid du Colombier case Nfs3ErrInval:
3634e04225SDavid du Colombier return "Nfs3ErrInval";
3734e04225SDavid du Colombier case Nfs3ErrFbig:
3834e04225SDavid du Colombier return "Nfs3ErrFbig";
3934e04225SDavid du Colombier case Nfs3ErrNoSpc:
4034e04225SDavid du Colombier return "Nfs3ErrNoSpc";
4134e04225SDavid du Colombier case Nfs3ErrRoFs:
4234e04225SDavid du Colombier return "Nfs3ErrRoFs";
4334e04225SDavid du Colombier case Nfs3ErrMLink:
4434e04225SDavid du Colombier return "Nfs3ErrMLink";
4534e04225SDavid du Colombier case Nfs3ErrNameTooLong:
4634e04225SDavid du Colombier return "Nfs3ErrNameTooLong";
4734e04225SDavid du Colombier case Nfs3ErrNotEmpty:
4834e04225SDavid du Colombier return "Nfs3ErrNotEmpty";
4934e04225SDavid du Colombier case Nfs3ErrDQuot:
5034e04225SDavid du Colombier return "Nfs3ErrDQuot";
5134e04225SDavid du Colombier case Nfs3ErrStale:
5234e04225SDavid du Colombier return "Nfs3ErrStale";
5334e04225SDavid du Colombier case Nfs3ErrRemote:
5434e04225SDavid du Colombier return "Nfs3ErrRemote";
5534e04225SDavid du Colombier case Nfs3ErrBadHandle:
5634e04225SDavid du Colombier return "Nfs3ErrBadHandle";
5734e04225SDavid du Colombier case Nfs3ErrNotSync:
5834e04225SDavid du Colombier return "Nfs3ErrNotSync";
5934e04225SDavid du Colombier case Nfs3ErrBadCookie:
6034e04225SDavid du Colombier return "Nfs3ErrBadCookie";
6134e04225SDavid du Colombier case Nfs3ErrNotSupp:
6234e04225SDavid du Colombier return "Nfs3ErrNotSupp";
6334e04225SDavid du Colombier case Nfs3ErrTooSmall:
6434e04225SDavid du Colombier return "Nfs3ErrTooSmall";
6534e04225SDavid du Colombier case Nfs3ErrServerFault:
6634e04225SDavid du Colombier return "Nfs3ErrServerFault";
6734e04225SDavid du Colombier case Nfs3ErrBadType:
6834e04225SDavid du Colombier return "Nfs3ErrBadType";
6934e04225SDavid du Colombier case Nfs3ErrJukebox:
7034e04225SDavid du Colombier return "Nfs3ErrJukebox";
7134e04225SDavid du Colombier case Nfs3ErrFprintNotFound:
7234e04225SDavid du Colombier return "Nfs3ErrFprintNotFound";
7334e04225SDavid du Colombier case Nfs3ErrAborted:
7434e04225SDavid du Colombier return "Nfs3ErrAborted";
7534e04225SDavid du Colombier default:
7634e04225SDavid du Colombier return "unknown";
7734e04225SDavid du Colombier }
7834e04225SDavid du Colombier }
7934e04225SDavid du Colombier
8034e04225SDavid du Colombier static struct {
8134e04225SDavid du Colombier SunStatus status;
8234e04225SDavid du Colombier char *msg;
8334e04225SDavid du Colombier } etab[] = {
8434e04225SDavid du Colombier Nfs3ErrNotOwner, "not owner",
85*fb7f0c93SDavid du Colombier Nfs3ErrNoEnt, "directory entry not found",
8634e04225SDavid du Colombier Nfs3ErrIo, "i/o error",
8734e04225SDavid du Colombier Nfs3ErrNxio, "no such device",
8834e04225SDavid du Colombier Nfs3ErrNoMem, "out of memory",
8934e04225SDavid du Colombier Nfs3ErrAcces, "access denied",
9034e04225SDavid du Colombier Nfs3ErrExist, "file or directory exists",
9134e04225SDavid du Colombier Nfs3ErrXDev, "cross-device operation",
9234e04225SDavid du Colombier Nfs3ErrNoDev, "no such device",
9334e04225SDavid du Colombier Nfs3ErrNotDir, "not a directory",
9434e04225SDavid du Colombier Nfs3ErrIsDir, "is a directory",
9534e04225SDavid du Colombier Nfs3ErrInval, "invalid arguments",
9634e04225SDavid du Colombier Nfs3ErrFbig, "file too big",
9734e04225SDavid du Colombier Nfs3ErrNoSpc, "no space left on device",
9834e04225SDavid du Colombier Nfs3ErrRoFs, "read-only file system",
9934e04225SDavid du Colombier Nfs3ErrMLink, "too many links",
10034e04225SDavid du Colombier Nfs3ErrNameTooLong, "name too long",
10134e04225SDavid du Colombier Nfs3ErrNotEmpty, "directory not empty",
10234e04225SDavid du Colombier Nfs3ErrDQuot, "dquot",
10334e04225SDavid du Colombier Nfs3ErrStale, "stale handle",
10434e04225SDavid du Colombier Nfs3ErrRemote, "remote error",
10534e04225SDavid du Colombier Nfs3ErrBadHandle, "bad handle",
10634e04225SDavid du Colombier Nfs3ErrNotSync, "out of sync with server",
10734e04225SDavid du Colombier Nfs3ErrBadCookie, "bad cookie",
10834e04225SDavid du Colombier Nfs3ErrNotSupp, "not supported",
10934e04225SDavid du Colombier Nfs3ErrTooSmall, "too small",
11034e04225SDavid du Colombier Nfs3ErrServerFault, "server fault",
11134e04225SDavid du Colombier Nfs3ErrBadType, "bad type",
11234e04225SDavid du Colombier Nfs3ErrJukebox, "jukebox -- try again later",
11334e04225SDavid du Colombier Nfs3ErrFprintNotFound, "fprint not found",
11434e04225SDavid du Colombier Nfs3ErrAborted, "aborted",
11534e04225SDavid du Colombier };
11634e04225SDavid du Colombier
11734e04225SDavid du Colombier void
nfs3Errstr(SunStatus status)11834e04225SDavid du Colombier nfs3Errstr(SunStatus status)
11934e04225SDavid du Colombier {
12034e04225SDavid du Colombier int i;
12134e04225SDavid du Colombier
12234e04225SDavid du Colombier for(i=0; i<nelem(etab); i++){
12334e04225SDavid du Colombier if(etab[i].status == status){
12434e04225SDavid du Colombier werrstr(etab[i].msg);
12534e04225SDavid du Colombier return;
12634e04225SDavid du Colombier }
12734e04225SDavid du Colombier }
12834e04225SDavid du Colombier werrstr("unknown nfs3 error %d", (int)status);
12934e04225SDavid du Colombier }
13034e04225SDavid du Colombier
13134e04225SDavid du Colombier char*
nfs3FileTypeStr(Nfs3FileType x)13234e04225SDavid du Colombier nfs3FileTypeStr(Nfs3FileType x)
13334e04225SDavid du Colombier {
13434e04225SDavid du Colombier switch(x){
13534e04225SDavid du Colombier case Nfs3FileReg:
13634e04225SDavid du Colombier return "Nfs3FileReg";
13734e04225SDavid du Colombier case Nfs3FileDir:
13834e04225SDavid du Colombier return "Nfs3FileDir";
13934e04225SDavid du Colombier case Nfs3FileBlock:
14034e04225SDavid du Colombier return "Nfs3FileBlock";
14134e04225SDavid du Colombier case Nfs3FileChar:
14234e04225SDavid du Colombier return "Nfs3FileChar";
14334e04225SDavid du Colombier case Nfs3FileSymlink:
14434e04225SDavid du Colombier return "Nfs3FileSymlink";
14534e04225SDavid du Colombier case Nfs3FileSocket:
14634e04225SDavid du Colombier return "Nfs3FileSocket";
14734e04225SDavid du Colombier case Nfs3FileFifo:
14834e04225SDavid du Colombier return "Nfs3FileFifo";
14934e04225SDavid du Colombier default:
15034e04225SDavid du Colombier return "unknown";
15134e04225SDavid du Colombier }
15234e04225SDavid du Colombier }
15334e04225SDavid du Colombier
15434e04225SDavid du Colombier void
nfs3HandlePrint(Fmt * fmt,Nfs3Handle * x)15534e04225SDavid du Colombier nfs3HandlePrint(Fmt *fmt, Nfs3Handle *x)
15634e04225SDavid du Colombier {
15734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3Handle");
15834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
15934e04225SDavid du Colombier if(x->len > 64)
16034e04225SDavid du Colombier fmtprint(fmt, "%.*H... (%d)", 64, x->h, x->len);
16134e04225SDavid du Colombier else
16234e04225SDavid du Colombier fmtprint(fmt, "%.*H", x->len, x->h);
16334e04225SDavid du Colombier fmtprint(fmt, "\n");
16434e04225SDavid du Colombier }
16534e04225SDavid du Colombier uint
nfs3HandleSize(Nfs3Handle * x)16634e04225SDavid du Colombier nfs3HandleSize(Nfs3Handle *x)
16734e04225SDavid du Colombier {
16834e04225SDavid du Colombier uint a;
16934e04225SDavid du Colombier USED(x);
17034e04225SDavid du Colombier a = 0 + sunVarOpaqueSize(x->len);
17134e04225SDavid du Colombier return a;
17234e04225SDavid du Colombier }
17334e04225SDavid du Colombier int
nfs3HandlePack(uchar * a,uchar * ea,uchar ** pa,Nfs3Handle * x)17434e04225SDavid du Colombier nfs3HandlePack(uchar *a, uchar *ea, uchar **pa, Nfs3Handle *x)
17534e04225SDavid du Colombier {
17634e04225SDavid du Colombier if(x->len > Nfs3MaxHandleSize || sunUint32Pack(a, ea, &a, &x->len) < 0
17734e04225SDavid du Colombier || sunFixedOpaquePack(a, ea, &a, x->h, x->len) < 0)
17834e04225SDavid du Colombier goto Err;
17934e04225SDavid du Colombier *pa = a;
18034e04225SDavid du Colombier return 0;
18134e04225SDavid du Colombier Err:
18234e04225SDavid du Colombier *pa = ea;
18334e04225SDavid du Colombier return -1;
18434e04225SDavid du Colombier }
18534e04225SDavid du Colombier int
nfs3HandleUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3Handle * x)18634e04225SDavid du Colombier nfs3HandleUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3Handle *x)
18734e04225SDavid du Colombier {
18834e04225SDavid du Colombier uchar *ha;
18934e04225SDavid du Colombier u32int n;
19034e04225SDavid du Colombier
19134e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &n) < 0 || n > Nfs3MaxHandleSize)
19234e04225SDavid du Colombier goto Err;
19334e04225SDavid du Colombier ha = a;
19434e04225SDavid du Colombier a += (n+3)&~3;
19534e04225SDavid du Colombier if(a > ea)
19634e04225SDavid du Colombier goto Err;
19734e04225SDavid du Colombier memmove(x->h, ha, n);
19834e04225SDavid du Colombier x->len = n;
19934e04225SDavid du Colombier *pa = a;
20034e04225SDavid du Colombier return 0;
20134e04225SDavid du Colombier Err:
20234e04225SDavid du Colombier *pa = ea;
20334e04225SDavid du Colombier return -1;
20434e04225SDavid du Colombier }
20534e04225SDavid du Colombier void
nfs3TimePrint(Fmt * fmt,Nfs3Time * x)20634e04225SDavid du Colombier nfs3TimePrint(Fmt *fmt, Nfs3Time *x)
20734e04225SDavid du Colombier {
20834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3Time");
20934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "sec");
21034e04225SDavid du Colombier fmtprint(fmt, "%ud", x->sec);
21134e04225SDavid du Colombier fmtprint(fmt, "\n");
21234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "nsec");
21334e04225SDavid du Colombier fmtprint(fmt, "%ud", x->nsec);
21434e04225SDavid du Colombier fmtprint(fmt, "\n");
21534e04225SDavid du Colombier }
21634e04225SDavid du Colombier uint
nfs3TimeSize(Nfs3Time * x)21734e04225SDavid du Colombier nfs3TimeSize(Nfs3Time *x)
21834e04225SDavid du Colombier {
21934e04225SDavid du Colombier uint a;
22034e04225SDavid du Colombier USED(x);
22134e04225SDavid du Colombier a = 0 + 4 + 4;
22234e04225SDavid du Colombier return a;
22334e04225SDavid du Colombier }
22434e04225SDavid du Colombier int
nfs3TimePack(uchar * a,uchar * ea,uchar ** pa,Nfs3Time * x)22534e04225SDavid du Colombier nfs3TimePack(uchar *a, uchar *ea, uchar **pa, Nfs3Time *x)
22634e04225SDavid du Colombier {
22734e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->sec) < 0) goto Err;
22834e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->nsec) < 0) goto Err;
22934e04225SDavid du Colombier *pa = a;
23034e04225SDavid du Colombier return 0;
23134e04225SDavid du Colombier Err:
23234e04225SDavid du Colombier *pa = ea;
23334e04225SDavid du Colombier return -1;
23434e04225SDavid du Colombier }
23534e04225SDavid du Colombier int
nfs3TimeUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3Time * x)23634e04225SDavid du Colombier nfs3TimeUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3Time *x)
23734e04225SDavid du Colombier {
23834e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->sec) < 0) goto Err;
23934e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->nsec) < 0) goto Err;
24034e04225SDavid du Colombier *pa = a;
24134e04225SDavid du Colombier return 0;
24234e04225SDavid du Colombier Err:
24334e04225SDavid du Colombier *pa = ea;
24434e04225SDavid du Colombier return -1;
24534e04225SDavid du Colombier }
24634e04225SDavid du Colombier void
nfs3AttrPrint(Fmt * fmt,Nfs3Attr * x)24734e04225SDavid du Colombier nfs3AttrPrint(Fmt *fmt, Nfs3Attr *x)
24834e04225SDavid du Colombier {
24934e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3Attr");
25034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "type");
25134e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3FileTypeStr(x->type));
25234e04225SDavid du Colombier fmtprint(fmt, "\n");
25334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "mode");
25434e04225SDavid du Colombier fmtprint(fmt, "%ud", x->mode);
25534e04225SDavid du Colombier fmtprint(fmt, "\n");
25634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "nlink");
25734e04225SDavid du Colombier fmtprint(fmt, "%ud", x->nlink);
25834e04225SDavid du Colombier fmtprint(fmt, "\n");
25934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "uid");
26034e04225SDavid du Colombier fmtprint(fmt, "%ud", x->uid);
26134e04225SDavid du Colombier fmtprint(fmt, "\n");
26234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "gid");
26334e04225SDavid du Colombier fmtprint(fmt, "%ud", x->gid);
26434e04225SDavid du Colombier fmtprint(fmt, "\n");
26534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "size");
26634e04225SDavid du Colombier fmtprint(fmt, "%llud", x->size);
26734e04225SDavid du Colombier fmtprint(fmt, "\n");
26834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "used");
26934e04225SDavid du Colombier fmtprint(fmt, "%llud", x->used);
27034e04225SDavid du Colombier fmtprint(fmt, "\n");
27134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "major");
27234e04225SDavid du Colombier fmtprint(fmt, "%ud", x->major);
27334e04225SDavid du Colombier fmtprint(fmt, "\n");
27434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "minor");
27534e04225SDavid du Colombier fmtprint(fmt, "%ud", x->minor);
27634e04225SDavid du Colombier fmtprint(fmt, "\n");
27734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "fsid");
27834e04225SDavid du Colombier fmtprint(fmt, "%llud", x->fsid);
27934e04225SDavid du Colombier fmtprint(fmt, "\n");
28034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "fileid");
28134e04225SDavid du Colombier fmtprint(fmt, "%llud", x->fileid);
28234e04225SDavid du Colombier fmtprint(fmt, "\n");
28334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "atime");
28434e04225SDavid du Colombier nfs3TimePrint(fmt, &x->atime);
28534e04225SDavid du Colombier fmtprint(fmt, "\n");
28634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "mtime");
28734e04225SDavid du Colombier nfs3TimePrint(fmt, &x->mtime);
28834e04225SDavid du Colombier fmtprint(fmt, "\n");
28934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "ctime");
29034e04225SDavid du Colombier nfs3TimePrint(fmt, &x->ctime);
29134e04225SDavid du Colombier fmtprint(fmt, "\n");
29234e04225SDavid du Colombier }
29334e04225SDavid du Colombier uint
nfs3AttrSize(Nfs3Attr * x)29434e04225SDavid du Colombier nfs3AttrSize(Nfs3Attr *x)
29534e04225SDavid du Colombier {
29634e04225SDavid du Colombier uint a;
29734e04225SDavid du Colombier USED(x);
29834e04225SDavid du Colombier a = 0 + 4 + 4 + 4 + 4 + 4 + 8 + 8 + 4 + 4 + 8 + 8 + nfs3TimeSize(&x->atime) + nfs3TimeSize(&x->mtime) + nfs3TimeSize(&x->ctime);
29934e04225SDavid du Colombier return a;
30034e04225SDavid du Colombier }
30134e04225SDavid du Colombier int
nfs3AttrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3Attr * x)30234e04225SDavid du Colombier nfs3AttrPack(uchar *a, uchar *ea, uchar **pa, Nfs3Attr *x)
30334e04225SDavid du Colombier {
30434e04225SDavid du Colombier int i;
30534e04225SDavid du Colombier
30634e04225SDavid du Colombier if(i=x->type, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
30734e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->mode) < 0) goto Err;
30834e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->nlink) < 0) goto Err;
30934e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->uid) < 0) goto Err;
31034e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->gid) < 0) goto Err;
31134e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->size) < 0) goto Err;
31234e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->used) < 0) goto Err;
31334e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->major) < 0) goto Err;
31434e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->minor) < 0) goto Err;
31534e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->fsid) < 0) goto Err;
31634e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->fileid) < 0) goto Err;
31734e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->atime) < 0) goto Err;
31834e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->mtime) < 0) goto Err;
31934e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->ctime) < 0) goto Err;
32034e04225SDavid du Colombier *pa = a;
32134e04225SDavid du Colombier return 0;
32234e04225SDavid du Colombier Err:
32334e04225SDavid du Colombier *pa = ea;
32434e04225SDavid du Colombier return -1;
32534e04225SDavid du Colombier }
32634e04225SDavid du Colombier int
nfs3AttrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3Attr * x)32734e04225SDavid du Colombier nfs3AttrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3Attr *x)
32834e04225SDavid du Colombier {
32934e04225SDavid du Colombier int i;
33034e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->type = i;
33134e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->mode) < 0) goto Err;
33234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->nlink) < 0) goto Err;
33334e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->uid) < 0) goto Err;
33434e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->gid) < 0) goto Err;
33534e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->size) < 0) goto Err;
33634e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->used) < 0) goto Err;
33734e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->major) < 0) goto Err;
33834e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->minor) < 0) goto Err;
33934e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->fsid) < 0) goto Err;
34034e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->fileid) < 0) goto Err;
34134e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->atime) < 0) goto Err;
34234e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->mtime) < 0) goto Err;
34334e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->ctime) < 0) goto Err;
34434e04225SDavid du Colombier *pa = a;
34534e04225SDavid du Colombier return 0;
34634e04225SDavid du Colombier Err:
34734e04225SDavid du Colombier *pa = ea;
34834e04225SDavid du Colombier return -1;
34934e04225SDavid du Colombier }
35034e04225SDavid du Colombier void
nfs3WccAttrPrint(Fmt * fmt,Nfs3WccAttr * x)35134e04225SDavid du Colombier nfs3WccAttrPrint(Fmt *fmt, Nfs3WccAttr *x)
35234e04225SDavid du Colombier {
35334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3WccAttr");
35434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "size");
35534e04225SDavid du Colombier fmtprint(fmt, "%llud", x->size);
35634e04225SDavid du Colombier fmtprint(fmt, "\n");
35734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "mtime");
35834e04225SDavid du Colombier nfs3TimePrint(fmt, &x->mtime);
35934e04225SDavid du Colombier fmtprint(fmt, "\n");
36034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "ctime");
36134e04225SDavid du Colombier nfs3TimePrint(fmt, &x->ctime);
36234e04225SDavid du Colombier fmtprint(fmt, "\n");
36334e04225SDavid du Colombier }
36434e04225SDavid du Colombier uint
nfs3WccAttrSize(Nfs3WccAttr * x)36534e04225SDavid du Colombier nfs3WccAttrSize(Nfs3WccAttr *x)
36634e04225SDavid du Colombier {
36734e04225SDavid du Colombier uint a;
36834e04225SDavid du Colombier USED(x);
36934e04225SDavid du Colombier a = 0 + 8 + nfs3TimeSize(&x->mtime) + nfs3TimeSize(&x->ctime);
37034e04225SDavid du Colombier return a;
37134e04225SDavid du Colombier }
37234e04225SDavid du Colombier int
nfs3WccAttrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3WccAttr * x)37334e04225SDavid du Colombier nfs3WccAttrPack(uchar *a, uchar *ea, uchar **pa, Nfs3WccAttr *x)
37434e04225SDavid du Colombier {
37534e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->size) < 0) goto Err;
37634e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->mtime) < 0) goto Err;
37734e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->ctime) < 0) goto Err;
37834e04225SDavid du Colombier *pa = a;
37934e04225SDavid du Colombier return 0;
38034e04225SDavid du Colombier Err:
38134e04225SDavid du Colombier *pa = ea;
38234e04225SDavid du Colombier return -1;
38334e04225SDavid du Colombier }
38434e04225SDavid du Colombier int
nfs3WccAttrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3WccAttr * x)38534e04225SDavid du Colombier nfs3WccAttrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3WccAttr *x)
38634e04225SDavid du Colombier {
38734e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->size) < 0) goto Err;
38834e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->mtime) < 0) goto Err;
38934e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->ctime) < 0) goto Err;
39034e04225SDavid du Colombier *pa = a;
39134e04225SDavid du Colombier return 0;
39234e04225SDavid du Colombier Err:
39334e04225SDavid du Colombier *pa = ea;
39434e04225SDavid du Colombier return -1;
39534e04225SDavid du Colombier }
39634e04225SDavid du Colombier void
nfs3WccPrint(Fmt * fmt,Nfs3Wcc * x)39734e04225SDavid du Colombier nfs3WccPrint(Fmt *fmt, Nfs3Wcc *x)
39834e04225SDavid du Colombier {
39934e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3Wcc");
40034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveWccAttr");
40134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveWccAttr);
40234e04225SDavid du Colombier fmtprint(fmt, "\n");
40334e04225SDavid du Colombier switch(x->haveWccAttr){
40434e04225SDavid du Colombier case 1:
40534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "wccAttr");
40634e04225SDavid du Colombier nfs3WccAttrPrint(fmt, &x->wccAttr);
40734e04225SDavid du Colombier fmtprint(fmt, "\n");
40834e04225SDavid du Colombier break;
40934e04225SDavid du Colombier }
41034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
41134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
41234e04225SDavid du Colombier fmtprint(fmt, "\n");
41334e04225SDavid du Colombier switch(x->haveAttr){
41434e04225SDavid du Colombier case 1:
41534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
41634e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
41734e04225SDavid du Colombier fmtprint(fmt, "\n");
41834e04225SDavid du Colombier break;
41934e04225SDavid du Colombier }
42034e04225SDavid du Colombier }
42134e04225SDavid du Colombier uint
nfs3WccSize(Nfs3Wcc * x)42234e04225SDavid du Colombier nfs3WccSize(Nfs3Wcc *x)
42334e04225SDavid du Colombier {
42434e04225SDavid du Colombier uint a;
42534e04225SDavid du Colombier USED(x);
42634e04225SDavid du Colombier a = 0 + 4;
42734e04225SDavid du Colombier switch(x->haveWccAttr){
42834e04225SDavid du Colombier case 1:
42934e04225SDavid du Colombier a = a + nfs3WccAttrSize(&x->wccAttr);
43034e04225SDavid du Colombier break;
43134e04225SDavid du Colombier }
43234e04225SDavid du Colombier a = a + 4;
43334e04225SDavid du Colombier switch(x->haveAttr){
43434e04225SDavid du Colombier case 1:
43534e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
43634e04225SDavid du Colombier break;
43734e04225SDavid du Colombier }
43834e04225SDavid du Colombier return a;
43934e04225SDavid du Colombier }
44034e04225SDavid du Colombier int
nfs3WccPack(uchar * a,uchar * ea,uchar ** pa,Nfs3Wcc * x)44134e04225SDavid du Colombier nfs3WccPack(uchar *a, uchar *ea, uchar **pa, Nfs3Wcc *x)
44234e04225SDavid du Colombier {
44334e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveWccAttr) < 0) goto Err;
44434e04225SDavid du Colombier switch(x->haveWccAttr){
44534e04225SDavid du Colombier case 1:
44634e04225SDavid du Colombier if(nfs3WccAttrPack(a, ea, &a, &x->wccAttr) < 0) goto Err;
44734e04225SDavid du Colombier break;
44834e04225SDavid du Colombier }
44934e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
45034e04225SDavid du Colombier switch(x->haveAttr){
45134e04225SDavid du Colombier case 1:
45234e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
45334e04225SDavid du Colombier break;
45434e04225SDavid du Colombier }
45534e04225SDavid du Colombier *pa = a;
45634e04225SDavid du Colombier return 0;
45734e04225SDavid du Colombier Err:
45834e04225SDavid du Colombier *pa = ea;
45934e04225SDavid du Colombier return -1;
46034e04225SDavid du Colombier }
46134e04225SDavid du Colombier int
nfs3WccUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3Wcc * x)46234e04225SDavid du Colombier nfs3WccUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3Wcc *x)
46334e04225SDavid du Colombier {
46434e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveWccAttr) < 0) goto Err;
46534e04225SDavid du Colombier switch(x->haveWccAttr){
46634e04225SDavid du Colombier case 1:
46734e04225SDavid du Colombier if(nfs3WccAttrUnpack(a, ea, &a, &x->wccAttr) < 0) goto Err;
46834e04225SDavid du Colombier break;
46934e04225SDavid du Colombier }
47034e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
47134e04225SDavid du Colombier switch(x->haveAttr){
47234e04225SDavid du Colombier case 1:
47334e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
47434e04225SDavid du Colombier break;
47534e04225SDavid du Colombier }
47634e04225SDavid du Colombier *pa = a;
47734e04225SDavid du Colombier return 0;
47834e04225SDavid du Colombier Err:
47934e04225SDavid du Colombier *pa = ea;
48034e04225SDavid du Colombier return -1;
48134e04225SDavid du Colombier }
48234e04225SDavid du Colombier char*
nfs3SetTimeStr(Nfs3SetTime x)48334e04225SDavid du Colombier nfs3SetTimeStr(Nfs3SetTime x)
48434e04225SDavid du Colombier {
48534e04225SDavid du Colombier switch(x){
48634e04225SDavid du Colombier case Nfs3SetTimeDont:
48734e04225SDavid du Colombier return "Nfs3SetTimeDont";
48834e04225SDavid du Colombier case Nfs3SetTimeServer:
48934e04225SDavid du Colombier return "Nfs3SetTimeServer";
49034e04225SDavid du Colombier case Nfs3SetTimeClient:
49134e04225SDavid du Colombier return "Nfs3SetTimeClient";
49234e04225SDavid du Colombier default:
49334e04225SDavid du Colombier return "unknown";
49434e04225SDavid du Colombier }
49534e04225SDavid du Colombier }
49634e04225SDavid du Colombier
49734e04225SDavid du Colombier void
nfs3SetAttrPrint(Fmt * fmt,Nfs3SetAttr * x)49834e04225SDavid du Colombier nfs3SetAttrPrint(Fmt *fmt, Nfs3SetAttr *x)
49934e04225SDavid du Colombier {
50034e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3SetAttr");
50134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "setMode");
50234e04225SDavid du Colombier fmtprint(fmt, "%d", x->setMode);
50334e04225SDavid du Colombier fmtprint(fmt, "\n");
50434e04225SDavid du Colombier switch(x->setMode){
50534e04225SDavid du Colombier case 1:
50634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "mode");
50734e04225SDavid du Colombier fmtprint(fmt, "%ud", x->mode);
50834e04225SDavid du Colombier fmtprint(fmt, "\n");
50934e04225SDavid du Colombier break;
51034e04225SDavid du Colombier }
51134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "setUid");
51234e04225SDavid du Colombier fmtprint(fmt, "%d", x->setUid);
51334e04225SDavid du Colombier fmtprint(fmt, "\n");
51434e04225SDavid du Colombier switch(x->setUid){
51534e04225SDavid du Colombier case 1:
51634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "uid");
51734e04225SDavid du Colombier fmtprint(fmt, "%ud", x->uid);
51834e04225SDavid du Colombier fmtprint(fmt, "\n");
51934e04225SDavid du Colombier break;
52034e04225SDavid du Colombier }
52134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "setGid");
52234e04225SDavid du Colombier fmtprint(fmt, "%d", x->setGid);
52334e04225SDavid du Colombier fmtprint(fmt, "\n");
52434e04225SDavid du Colombier switch(x->setGid){
52534e04225SDavid du Colombier case 1:
52634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "gid");
52734e04225SDavid du Colombier fmtprint(fmt, "%ud", x->gid);
52834e04225SDavid du Colombier fmtprint(fmt, "\n");
52934e04225SDavid du Colombier break;
53034e04225SDavid du Colombier }
53134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "setSize");
53234e04225SDavid du Colombier fmtprint(fmt, "%d", x->setSize);
53334e04225SDavid du Colombier fmtprint(fmt, "\n");
53434e04225SDavid du Colombier switch(x->setSize){
53534e04225SDavid du Colombier case 1:
53634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "size");
53734e04225SDavid du Colombier fmtprint(fmt, "%llud", x->size);
53834e04225SDavid du Colombier fmtprint(fmt, "\n");
53934e04225SDavid du Colombier break;
54034e04225SDavid du Colombier }
54134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "setAtime");
54234e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3SetTimeStr(x->setAtime));
54334e04225SDavid du Colombier fmtprint(fmt, "\n");
54434e04225SDavid du Colombier switch(x->setAtime){
54534e04225SDavid du Colombier case Nfs3SetTimeClient:
54634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "atime");
54734e04225SDavid du Colombier nfs3TimePrint(fmt, &x->atime);
54834e04225SDavid du Colombier fmtprint(fmt, "\n");
54934e04225SDavid du Colombier break;
55034e04225SDavid du Colombier }
55134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "setMtime");
55234e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3SetTimeStr(x->setMtime));
55334e04225SDavid du Colombier fmtprint(fmt, "\n");
55434e04225SDavid du Colombier switch(x->setMtime){
55534e04225SDavid du Colombier case Nfs3SetTimeClient:
55634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "mtime");
55734e04225SDavid du Colombier nfs3TimePrint(fmt, &x->mtime);
55834e04225SDavid du Colombier fmtprint(fmt, "\n");
55934e04225SDavid du Colombier break;
56034e04225SDavid du Colombier }
56134e04225SDavid du Colombier }
56234e04225SDavid du Colombier uint
nfs3SetAttrSize(Nfs3SetAttr * x)56334e04225SDavid du Colombier nfs3SetAttrSize(Nfs3SetAttr *x)
56434e04225SDavid du Colombier {
56534e04225SDavid du Colombier uint a;
56634e04225SDavid du Colombier USED(x);
56734e04225SDavid du Colombier a = 0 + 4;
56834e04225SDavid du Colombier switch(x->setMode){
56934e04225SDavid du Colombier case 1:
57034e04225SDavid du Colombier a = a + 4;
57134e04225SDavid du Colombier break;
57234e04225SDavid du Colombier }
57334e04225SDavid du Colombier a = a + 4;
57434e04225SDavid du Colombier switch(x->setUid){
57534e04225SDavid du Colombier case 1:
57634e04225SDavid du Colombier a = a + 4;
57734e04225SDavid du Colombier break;
57834e04225SDavid du Colombier }
57934e04225SDavid du Colombier a = a + 4;
58034e04225SDavid du Colombier switch(x->setGid){
58134e04225SDavid du Colombier case 1:
58234e04225SDavid du Colombier a = a + 4;
58334e04225SDavid du Colombier break;
58434e04225SDavid du Colombier }
58534e04225SDavid du Colombier a = a + 4;
58634e04225SDavid du Colombier switch(x->setSize){
58734e04225SDavid du Colombier case 1:
58834e04225SDavid du Colombier a = a + 8;
58934e04225SDavid du Colombier break;
59034e04225SDavid du Colombier }
59134e04225SDavid du Colombier a = a + 4;
59234e04225SDavid du Colombier switch(x->setAtime){
59334e04225SDavid du Colombier case Nfs3SetTimeClient:
59434e04225SDavid du Colombier a = a + nfs3TimeSize(&x->atime);
59534e04225SDavid du Colombier break;
59634e04225SDavid du Colombier }
59734e04225SDavid du Colombier a = a + 4;
59834e04225SDavid du Colombier switch(x->setMtime){
59934e04225SDavid du Colombier case Nfs3SetTimeClient:
60034e04225SDavid du Colombier a = a + nfs3TimeSize(&x->mtime);
60134e04225SDavid du Colombier break;
60234e04225SDavid du Colombier }
60334e04225SDavid du Colombier return a;
60434e04225SDavid du Colombier }
60534e04225SDavid du Colombier int
nfs3SetAttrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3SetAttr * x)60634e04225SDavid du Colombier nfs3SetAttrPack(uchar *a, uchar *ea, uchar **pa, Nfs3SetAttr *x)
60734e04225SDavid du Colombier {
60834e04225SDavid du Colombier int i;
60934e04225SDavid du Colombier
61034e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->setMode) < 0) goto Err;
61134e04225SDavid du Colombier switch(x->setMode){
61234e04225SDavid du Colombier case 1:
61334e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->mode) < 0) goto Err;
61434e04225SDavid du Colombier break;
61534e04225SDavid du Colombier }
61634e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->setUid) < 0) goto Err;
61734e04225SDavid du Colombier switch(x->setUid){
61834e04225SDavid du Colombier case 1:
61934e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->uid) < 0) goto Err;
62034e04225SDavid du Colombier break;
62134e04225SDavid du Colombier }
62234e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->setGid) < 0) goto Err;
62334e04225SDavid du Colombier switch(x->setGid){
62434e04225SDavid du Colombier case 1:
62534e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->gid) < 0) goto Err;
62634e04225SDavid du Colombier break;
62734e04225SDavid du Colombier }
62834e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->setSize) < 0) goto Err;
62934e04225SDavid du Colombier switch(x->setSize){
63034e04225SDavid du Colombier case 1:
63134e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->size) < 0) goto Err;
63234e04225SDavid du Colombier break;
63334e04225SDavid du Colombier }
63434e04225SDavid du Colombier if(i=x->setAtime, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
63534e04225SDavid du Colombier switch(x->setAtime){
63634e04225SDavid du Colombier case Nfs3SetTimeClient:
63734e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->atime) < 0) goto Err;
63834e04225SDavid du Colombier break;
63934e04225SDavid du Colombier }
64034e04225SDavid du Colombier if(i=x->setMtime, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
64134e04225SDavid du Colombier switch(x->setMtime){
64234e04225SDavid du Colombier case Nfs3SetTimeClient:
64334e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->mtime) < 0) goto Err;
64434e04225SDavid du Colombier break;
64534e04225SDavid du Colombier }
64634e04225SDavid du Colombier *pa = a;
64734e04225SDavid du Colombier return 0;
64834e04225SDavid du Colombier Err:
64934e04225SDavid du Colombier *pa = ea;
65034e04225SDavid du Colombier return -1;
65134e04225SDavid du Colombier }
65234e04225SDavid du Colombier int
nfs3SetAttrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3SetAttr * x)65334e04225SDavid du Colombier nfs3SetAttrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3SetAttr *x)
65434e04225SDavid du Colombier {
65534e04225SDavid du Colombier int i;
65634e04225SDavid du Colombier
65734e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->setMode) < 0) goto Err;
65834e04225SDavid du Colombier switch(x->setMode){
65934e04225SDavid du Colombier case 1:
66034e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->mode) < 0) goto Err;
66134e04225SDavid du Colombier break;
66234e04225SDavid du Colombier }
66334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->setUid) < 0) goto Err;
66434e04225SDavid du Colombier switch(x->setUid){
66534e04225SDavid du Colombier case 1:
66634e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->uid) < 0) goto Err;
66734e04225SDavid du Colombier break;
66834e04225SDavid du Colombier }
66934e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->setGid) < 0) goto Err;
67034e04225SDavid du Colombier switch(x->setGid){
67134e04225SDavid du Colombier case 1:
67234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->gid) < 0) goto Err;
67334e04225SDavid du Colombier break;
67434e04225SDavid du Colombier }
67534e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->setSize) < 0) goto Err;
67634e04225SDavid du Colombier switch(x->setSize){
67734e04225SDavid du Colombier case 1:
67834e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->size) < 0) goto Err;
67934e04225SDavid du Colombier break;
68034e04225SDavid du Colombier }
68134e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->setAtime = i;
68234e04225SDavid du Colombier switch(x->setAtime){
68334e04225SDavid du Colombier case Nfs3SetTimeClient:
68434e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->atime) < 0) goto Err;
68534e04225SDavid du Colombier break;
68634e04225SDavid du Colombier }
68734e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->setMtime = i;
68834e04225SDavid du Colombier switch(x->setMtime){
68934e04225SDavid du Colombier case Nfs3SetTimeClient:
69034e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->mtime) < 0) goto Err;
69134e04225SDavid du Colombier break;
69234e04225SDavid du Colombier }
69334e04225SDavid du Colombier *pa = a;
69434e04225SDavid du Colombier return 0;
69534e04225SDavid du Colombier Err:
69634e04225SDavid du Colombier *pa = ea;
69734e04225SDavid du Colombier return -1;
69834e04225SDavid du Colombier }
69934e04225SDavid du Colombier void
nfs3TNullPrint(Fmt * fmt,Nfs3TNull * x)70034e04225SDavid du Colombier nfs3TNullPrint(Fmt *fmt, Nfs3TNull *x)
70134e04225SDavid du Colombier {
70234e04225SDavid du Colombier USED(x);
70334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TNull");
70434e04225SDavid du Colombier }
70534e04225SDavid du Colombier uint
nfs3TNullSize(Nfs3TNull * x)70634e04225SDavid du Colombier nfs3TNullSize(Nfs3TNull *x)
70734e04225SDavid du Colombier {
70834e04225SDavid du Colombier uint a;
70934e04225SDavid du Colombier USED(x);
71034e04225SDavid du Colombier a = 0;
71134e04225SDavid du Colombier return a;
71234e04225SDavid du Colombier }
71334e04225SDavid du Colombier int
nfs3TNullPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TNull * x)71434e04225SDavid du Colombier nfs3TNullPack(uchar *a, uchar *ea, uchar **pa, Nfs3TNull *x)
71534e04225SDavid du Colombier {
71634e04225SDavid du Colombier USED(x);
71734e04225SDavid du Colombier USED(ea);
71834e04225SDavid du Colombier *pa = a;
71934e04225SDavid du Colombier return 0;
72034e04225SDavid du Colombier }
72134e04225SDavid du Colombier int
nfs3TNullUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TNull * x)72234e04225SDavid du Colombier nfs3TNullUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TNull *x)
72334e04225SDavid du Colombier {
72434e04225SDavid du Colombier USED(x);
72534e04225SDavid du Colombier USED(ea);
72634e04225SDavid du Colombier *pa = a;
72734e04225SDavid du Colombier return 0;
72834e04225SDavid du Colombier }
72934e04225SDavid du Colombier void
nfs3RNullPrint(Fmt * fmt,Nfs3RNull * x)73034e04225SDavid du Colombier nfs3RNullPrint(Fmt *fmt, Nfs3RNull *x)
73134e04225SDavid du Colombier {
73234e04225SDavid du Colombier USED(x);
73334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RNull");
73434e04225SDavid du Colombier }
73534e04225SDavid du Colombier uint
nfs3RNullSize(Nfs3RNull * x)73634e04225SDavid du Colombier nfs3RNullSize(Nfs3RNull *x)
73734e04225SDavid du Colombier {
73834e04225SDavid du Colombier uint a;
73934e04225SDavid du Colombier USED(x);
74034e04225SDavid du Colombier a = 0;
74134e04225SDavid du Colombier return a;
74234e04225SDavid du Colombier }
74334e04225SDavid du Colombier int
nfs3RNullPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RNull * x)74434e04225SDavid du Colombier nfs3RNullPack(uchar *a, uchar *ea, uchar **pa, Nfs3RNull *x)
74534e04225SDavid du Colombier {
74634e04225SDavid du Colombier USED(ea);
74734e04225SDavid du Colombier USED(x);
74834e04225SDavid du Colombier *pa = a;
74934e04225SDavid du Colombier return 0;
75034e04225SDavid du Colombier }
75134e04225SDavid du Colombier int
nfs3RNullUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RNull * x)75234e04225SDavid du Colombier nfs3RNullUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RNull *x)
75334e04225SDavid du Colombier {
75434e04225SDavid du Colombier USED(ea);
75534e04225SDavid du Colombier USED(x);
75634e04225SDavid du Colombier *pa = a;
75734e04225SDavid du Colombier return 0;
75834e04225SDavid du Colombier }
75934e04225SDavid du Colombier void
nfs3TGetattrPrint(Fmt * fmt,Nfs3TGetattr * x)76034e04225SDavid du Colombier nfs3TGetattrPrint(Fmt *fmt, Nfs3TGetattr *x)
76134e04225SDavid du Colombier {
76234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TGetattr");
76334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
76434e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
76534e04225SDavid du Colombier fmtprint(fmt, "\n");
76634e04225SDavid du Colombier }
76734e04225SDavid du Colombier uint
nfs3TGetattrSize(Nfs3TGetattr * x)76834e04225SDavid du Colombier nfs3TGetattrSize(Nfs3TGetattr *x)
76934e04225SDavid du Colombier {
77034e04225SDavid du Colombier uint a;
77134e04225SDavid du Colombier USED(x);
77234e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle);
77334e04225SDavid du Colombier return a;
77434e04225SDavid du Colombier }
77534e04225SDavid du Colombier int
nfs3TGetattrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TGetattr * x)77634e04225SDavid du Colombier nfs3TGetattrPack(uchar *a, uchar *ea, uchar **pa, Nfs3TGetattr *x)
77734e04225SDavid du Colombier {
77834e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
77934e04225SDavid du Colombier *pa = a;
78034e04225SDavid du Colombier return 0;
78134e04225SDavid du Colombier Err:
78234e04225SDavid du Colombier *pa = ea;
78334e04225SDavid du Colombier return -1;
78434e04225SDavid du Colombier }
78534e04225SDavid du Colombier int
nfs3TGetattrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TGetattr * x)78634e04225SDavid du Colombier nfs3TGetattrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TGetattr *x)
78734e04225SDavid du Colombier {
78834e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
78934e04225SDavid du Colombier *pa = a;
79034e04225SDavid du Colombier return 0;
79134e04225SDavid du Colombier Err:
79234e04225SDavid du Colombier *pa = ea;
79334e04225SDavid du Colombier return -1;
79434e04225SDavid du Colombier }
79534e04225SDavid du Colombier void
nfs3RGetattrPrint(Fmt * fmt,Nfs3RGetattr * x)79634e04225SDavid du Colombier nfs3RGetattrPrint(Fmt *fmt, Nfs3RGetattr *x)
79734e04225SDavid du Colombier {
79834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RGetattr");
79934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
80034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
80134e04225SDavid du Colombier fmtprint(fmt, "\n");
80234e04225SDavid du Colombier switch(x->status){
80334e04225SDavid du Colombier case Nfs3Ok:
80434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
80534e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
80634e04225SDavid du Colombier fmtprint(fmt, "\n");
80734e04225SDavid du Colombier break;
80834e04225SDavid du Colombier }
80934e04225SDavid du Colombier }
81034e04225SDavid du Colombier uint
nfs3RGetattrSize(Nfs3RGetattr * x)81134e04225SDavid du Colombier nfs3RGetattrSize(Nfs3RGetattr *x)
81234e04225SDavid du Colombier {
81334e04225SDavid du Colombier uint a;
81434e04225SDavid du Colombier USED(x);
81534e04225SDavid du Colombier a = 0 + 4;
81634e04225SDavid du Colombier switch(x->status){
81734e04225SDavid du Colombier case Nfs3Ok:
81834e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
81934e04225SDavid du Colombier break;
82034e04225SDavid du Colombier }
82134e04225SDavid du Colombier return a;
82234e04225SDavid du Colombier }
82334e04225SDavid du Colombier int
nfs3RGetattrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RGetattr * x)82434e04225SDavid du Colombier nfs3RGetattrPack(uchar *a, uchar *ea, uchar **pa, Nfs3RGetattr *x)
82534e04225SDavid du Colombier {
82634e04225SDavid du Colombier int i;
82734e04225SDavid du Colombier
82834e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
82934e04225SDavid du Colombier switch(x->status){
83034e04225SDavid du Colombier case Nfs3Ok:
83134e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
83234e04225SDavid du Colombier break;
83334e04225SDavid du Colombier }
83434e04225SDavid du Colombier *pa = a;
83534e04225SDavid du Colombier return 0;
83634e04225SDavid du Colombier Err:
83734e04225SDavid du Colombier *pa = ea;
83834e04225SDavid du Colombier return -1;
83934e04225SDavid du Colombier }
84034e04225SDavid du Colombier int
nfs3RGetattrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RGetattr * x)84134e04225SDavid du Colombier nfs3RGetattrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RGetattr *x)
84234e04225SDavid du Colombier {
84334e04225SDavid du Colombier int i;
84434e04225SDavid du Colombier
84534e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
84634e04225SDavid du Colombier switch(x->status){
84734e04225SDavid du Colombier case Nfs3Ok:
84834e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
84934e04225SDavid du Colombier break;
85034e04225SDavid du Colombier }
85134e04225SDavid du Colombier *pa = a;
85234e04225SDavid du Colombier return 0;
85334e04225SDavid du Colombier Err:
85434e04225SDavid du Colombier *pa = ea;
85534e04225SDavid du Colombier return -1;
85634e04225SDavid du Colombier }
85734e04225SDavid du Colombier void
nfs3TSetattrPrint(Fmt * fmt,Nfs3TSetattr * x)85834e04225SDavid du Colombier nfs3TSetattrPrint(Fmt *fmt, Nfs3TSetattr *x)
85934e04225SDavid du Colombier {
86034e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TSetattr");
86134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
86234e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
86334e04225SDavid du Colombier fmtprint(fmt, "\n");
86434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
86534e04225SDavid du Colombier nfs3SetAttrPrint(fmt, &x->attr);
86634e04225SDavid du Colombier fmtprint(fmt, "\n");
86734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "checkCtime");
86834e04225SDavid du Colombier fmtprint(fmt, "%d", x->checkCtime);
86934e04225SDavid du Colombier fmtprint(fmt, "\n");
87034e04225SDavid du Colombier switch(x->checkCtime){
87134e04225SDavid du Colombier case 1:
87234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "ctime");
87334e04225SDavid du Colombier nfs3TimePrint(fmt, &x->ctime);
87434e04225SDavid du Colombier fmtprint(fmt, "\n");
87534e04225SDavid du Colombier break;
87634e04225SDavid du Colombier }
87734e04225SDavid du Colombier }
87834e04225SDavid du Colombier uint
nfs3TSetattrSize(Nfs3TSetattr * x)87934e04225SDavid du Colombier nfs3TSetattrSize(Nfs3TSetattr *x)
88034e04225SDavid du Colombier {
88134e04225SDavid du Colombier uint a;
88234e04225SDavid du Colombier USED(x);
88334e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + nfs3SetAttrSize(&x->attr) + 4;
88434e04225SDavid du Colombier switch(x->checkCtime){
88534e04225SDavid du Colombier case 1:
88634e04225SDavid du Colombier a = a + nfs3TimeSize(&x->ctime);
88734e04225SDavid du Colombier break;
88834e04225SDavid du Colombier }
88934e04225SDavid du Colombier return a;
89034e04225SDavid du Colombier }
89134e04225SDavid du Colombier int
nfs3TSetattrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TSetattr * x)89234e04225SDavid du Colombier nfs3TSetattrPack(uchar *a, uchar *ea, uchar **pa, Nfs3TSetattr *x)
89334e04225SDavid du Colombier {
89434e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
89534e04225SDavid du Colombier if(nfs3SetAttrPack(a, ea, &a, &x->attr) < 0) goto Err;
89634e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->checkCtime) < 0) goto Err;
89734e04225SDavid du Colombier switch(x->checkCtime){
89834e04225SDavid du Colombier case 1:
89934e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->ctime) < 0) goto Err;
90034e04225SDavid du Colombier break;
90134e04225SDavid du Colombier }
90234e04225SDavid du Colombier *pa = a;
90334e04225SDavid du Colombier return 0;
90434e04225SDavid du Colombier Err:
90534e04225SDavid du Colombier *pa = ea;
90634e04225SDavid du Colombier return -1;
90734e04225SDavid du Colombier }
90834e04225SDavid du Colombier int
nfs3TSetattrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TSetattr * x)90934e04225SDavid du Colombier nfs3TSetattrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TSetattr *x)
91034e04225SDavid du Colombier {
91134e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
91234e04225SDavid du Colombier if(nfs3SetAttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
91334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->checkCtime) < 0) goto Err;
91434e04225SDavid du Colombier switch(x->checkCtime){
91534e04225SDavid du Colombier case 1:
91634e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->ctime) < 0) goto Err;
91734e04225SDavid du Colombier break;
91834e04225SDavid du Colombier }
91934e04225SDavid du Colombier *pa = a;
92034e04225SDavid du Colombier return 0;
92134e04225SDavid du Colombier Err:
92234e04225SDavid du Colombier *pa = ea;
92334e04225SDavid du Colombier return -1;
92434e04225SDavid du Colombier }
92534e04225SDavid du Colombier void
nfs3RSetattrPrint(Fmt * fmt,Nfs3RSetattr * x)92634e04225SDavid du Colombier nfs3RSetattrPrint(Fmt *fmt, Nfs3RSetattr *x)
92734e04225SDavid du Colombier {
92834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RSetattr");
92934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
93034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
93134e04225SDavid du Colombier fmtprint(fmt, "\n");
93234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "wcc");
93334e04225SDavid du Colombier nfs3WccPrint(fmt, &x->wcc);
93434e04225SDavid du Colombier fmtprint(fmt, "\n");
93534e04225SDavid du Colombier }
93634e04225SDavid du Colombier uint
nfs3RSetattrSize(Nfs3RSetattr * x)93734e04225SDavid du Colombier nfs3RSetattrSize(Nfs3RSetattr *x)
93834e04225SDavid du Colombier {
93934e04225SDavid du Colombier uint a;
94034e04225SDavid du Colombier USED(x);
94134e04225SDavid du Colombier a = 0 + 4 + nfs3WccSize(&x->wcc);
94234e04225SDavid du Colombier return a;
94334e04225SDavid du Colombier }
94434e04225SDavid du Colombier int
nfs3RSetattrPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RSetattr * x)94534e04225SDavid du Colombier nfs3RSetattrPack(uchar *a, uchar *ea, uchar **pa, Nfs3RSetattr *x)
94634e04225SDavid du Colombier {
94734e04225SDavid du Colombier int i;
94834e04225SDavid du Colombier
94934e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
95034e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->wcc) < 0) goto Err;
95134e04225SDavid du Colombier *pa = a;
95234e04225SDavid du Colombier return 0;
95334e04225SDavid du Colombier Err:
95434e04225SDavid du Colombier *pa = ea;
95534e04225SDavid du Colombier return -1;
95634e04225SDavid du Colombier }
95734e04225SDavid du Colombier int
nfs3RSetattrUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RSetattr * x)95834e04225SDavid du Colombier nfs3RSetattrUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RSetattr *x)
95934e04225SDavid du Colombier {
96034e04225SDavid du Colombier int i;
96134e04225SDavid du Colombier
96234e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
96334e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->wcc) < 0) goto Err;
96434e04225SDavid du Colombier *pa = a;
96534e04225SDavid du Colombier return 0;
96634e04225SDavid du Colombier Err:
96734e04225SDavid du Colombier *pa = ea;
96834e04225SDavid du Colombier return -1;
96934e04225SDavid du Colombier }
97034e04225SDavid du Colombier void
nfs3TLookupPrint(Fmt * fmt,Nfs3TLookup * x)97134e04225SDavid du Colombier nfs3TLookupPrint(Fmt *fmt, Nfs3TLookup *x)
97234e04225SDavid du Colombier {
97334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TLookup");
97434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
97534e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
97634e04225SDavid du Colombier fmtprint(fmt, "\n");
97734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
97834e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
97934e04225SDavid du Colombier fmtprint(fmt, "\n");
98034e04225SDavid du Colombier }
98134e04225SDavid du Colombier uint
nfs3TLookupSize(Nfs3TLookup * x)98234e04225SDavid du Colombier nfs3TLookupSize(Nfs3TLookup *x)
98334e04225SDavid du Colombier {
98434e04225SDavid du Colombier uint a;
98534e04225SDavid du Colombier USED(x);
98634e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name);
98734e04225SDavid du Colombier return a;
98834e04225SDavid du Colombier }
98934e04225SDavid du Colombier int
nfs3TLookupPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TLookup * x)99034e04225SDavid du Colombier nfs3TLookupPack(uchar *a, uchar *ea, uchar **pa, Nfs3TLookup *x)
99134e04225SDavid du Colombier {
99234e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
99334e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
99434e04225SDavid du Colombier *pa = a;
99534e04225SDavid du Colombier return 0;
99634e04225SDavid du Colombier Err:
99734e04225SDavid du Colombier *pa = ea;
99834e04225SDavid du Colombier return -1;
99934e04225SDavid du Colombier }
100034e04225SDavid du Colombier int
nfs3TLookupUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TLookup * x)100134e04225SDavid du Colombier nfs3TLookupUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TLookup *x)
100234e04225SDavid du Colombier {
100334e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
100434e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
100534e04225SDavid du Colombier *pa = a;
100634e04225SDavid du Colombier return 0;
100734e04225SDavid du Colombier Err:
100834e04225SDavid du Colombier *pa = ea;
100934e04225SDavid du Colombier return -1;
101034e04225SDavid du Colombier }
101134e04225SDavid du Colombier void
nfs3RLookupPrint(Fmt * fmt,Nfs3RLookup * x)101234e04225SDavid du Colombier nfs3RLookupPrint(Fmt *fmt, Nfs3RLookup *x)
101334e04225SDavid du Colombier {
101434e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RLookup");
101534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
101634e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
101734e04225SDavid du Colombier fmtprint(fmt, "\n");
101834e04225SDavid du Colombier switch(x->status){
101934e04225SDavid du Colombier case Nfs3Ok:
102034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
102134e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
102234e04225SDavid du Colombier fmtprint(fmt, "\n");
102334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
102434e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
102534e04225SDavid du Colombier fmtprint(fmt, "\n");
102634e04225SDavid du Colombier switch(x->haveAttr){
102734e04225SDavid du Colombier case 1:
102834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
102934e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
103034e04225SDavid du Colombier fmtprint(fmt, "\n");
103134e04225SDavid du Colombier break;
103234e04225SDavid du Colombier }
103334e04225SDavid du Colombier break;
103434e04225SDavid du Colombier }
103534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveDirAttr");
103634e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveDirAttr);
103734e04225SDavid du Colombier fmtprint(fmt, "\n");
103834e04225SDavid du Colombier switch(x->haveDirAttr){
103934e04225SDavid du Colombier case 1:
104034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirAttr");
104134e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->dirAttr);
104234e04225SDavid du Colombier fmtprint(fmt, "\n");
104334e04225SDavid du Colombier break;
104434e04225SDavid du Colombier }
104534e04225SDavid du Colombier }
104634e04225SDavid du Colombier uint
nfs3RLookupSize(Nfs3RLookup * x)104734e04225SDavid du Colombier nfs3RLookupSize(Nfs3RLookup *x)
104834e04225SDavid du Colombier {
104934e04225SDavid du Colombier uint a;
105034e04225SDavid du Colombier USED(x);
105134e04225SDavid du Colombier a = 0 + 4;
105234e04225SDavid du Colombier switch(x->status){
105334e04225SDavid du Colombier case Nfs3Ok:
105434e04225SDavid du Colombier a = a + nfs3HandleSize(&x->handle) + 4;
105534e04225SDavid du Colombier switch(x->haveAttr){
105634e04225SDavid du Colombier case 1:
105734e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
105834e04225SDavid du Colombier break;
105934e04225SDavid du Colombier }
106034e04225SDavid du Colombier break;
106134e04225SDavid du Colombier }
106234e04225SDavid du Colombier a = a + 4;
106334e04225SDavid du Colombier switch(x->haveDirAttr){
106434e04225SDavid du Colombier case 1:
106534e04225SDavid du Colombier a = a + nfs3AttrSize(&x->dirAttr);
106634e04225SDavid du Colombier break;
106734e04225SDavid du Colombier }
106834e04225SDavid du Colombier return a;
106934e04225SDavid du Colombier }
107034e04225SDavid du Colombier int
nfs3RLookupPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RLookup * x)107134e04225SDavid du Colombier nfs3RLookupPack(uchar *a, uchar *ea, uchar **pa, Nfs3RLookup *x)
107234e04225SDavid du Colombier {
107334e04225SDavid du Colombier int i;
107434e04225SDavid du Colombier
107534e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
107634e04225SDavid du Colombier switch(x->status){
107734e04225SDavid du Colombier case Nfs3Ok:
107834e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
107934e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
108034e04225SDavid du Colombier switch(x->haveAttr){
108134e04225SDavid du Colombier case 1:
108234e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
108334e04225SDavid du Colombier break;
108434e04225SDavid du Colombier }
108534e04225SDavid du Colombier break;
108634e04225SDavid du Colombier }
108734e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveDirAttr) < 0) goto Err;
108834e04225SDavid du Colombier switch(x->haveDirAttr){
108934e04225SDavid du Colombier case 1:
109034e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->dirAttr) < 0) goto Err;
109134e04225SDavid du Colombier break;
109234e04225SDavid du Colombier }
109334e04225SDavid du Colombier *pa = a;
109434e04225SDavid du Colombier return 0;
109534e04225SDavid du Colombier Err:
109634e04225SDavid du Colombier *pa = ea;
109734e04225SDavid du Colombier return -1;
109834e04225SDavid du Colombier }
109934e04225SDavid du Colombier int
nfs3RLookupUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RLookup * x)110034e04225SDavid du Colombier nfs3RLookupUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RLookup *x)
110134e04225SDavid du Colombier {
110234e04225SDavid du Colombier int i;
110334e04225SDavid du Colombier
110434e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
110534e04225SDavid du Colombier switch(x->status){
110634e04225SDavid du Colombier case Nfs3Ok:
110734e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
110834e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
110934e04225SDavid du Colombier switch(x->haveAttr){
111034e04225SDavid du Colombier case 1:
111134e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
111234e04225SDavid du Colombier break;
111334e04225SDavid du Colombier }
111434e04225SDavid du Colombier break;
111534e04225SDavid du Colombier }
111634e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveDirAttr) < 0) goto Err;
111734e04225SDavid du Colombier switch(x->haveDirAttr){
111834e04225SDavid du Colombier case 1:
111934e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->dirAttr) < 0) goto Err;
112034e04225SDavid du Colombier break;
112134e04225SDavid du Colombier }
112234e04225SDavid du Colombier *pa = a;
112334e04225SDavid du Colombier return 0;
112434e04225SDavid du Colombier Err:
112534e04225SDavid du Colombier *pa = ea;
112634e04225SDavid du Colombier return -1;
112734e04225SDavid du Colombier }
112834e04225SDavid du Colombier void
nfs3TAccessPrint(Fmt * fmt,Nfs3TAccess * x)112934e04225SDavid du Colombier nfs3TAccessPrint(Fmt *fmt, Nfs3TAccess *x)
113034e04225SDavid du Colombier {
113134e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TAccess");
113234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
113334e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
113434e04225SDavid du Colombier fmtprint(fmt, "\n");
113534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "access");
113634e04225SDavid du Colombier fmtprint(fmt, "%ud", x->access);
113734e04225SDavid du Colombier fmtprint(fmt, "\n");
113834e04225SDavid du Colombier }
113934e04225SDavid du Colombier uint
nfs3TAccessSize(Nfs3TAccess * x)114034e04225SDavid du Colombier nfs3TAccessSize(Nfs3TAccess *x)
114134e04225SDavid du Colombier {
114234e04225SDavid du Colombier uint a;
114334e04225SDavid du Colombier USED(x);
114434e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + 4;
114534e04225SDavid du Colombier return a;
114634e04225SDavid du Colombier }
114734e04225SDavid du Colombier int
nfs3TAccessPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TAccess * x)114834e04225SDavid du Colombier nfs3TAccessPack(uchar *a, uchar *ea, uchar **pa, Nfs3TAccess *x)
114934e04225SDavid du Colombier {
115034e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
115134e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->access) < 0) goto Err;
115234e04225SDavid du Colombier *pa = a;
115334e04225SDavid du Colombier return 0;
115434e04225SDavid du Colombier Err:
115534e04225SDavid du Colombier *pa = ea;
115634e04225SDavid du Colombier return -1;
115734e04225SDavid du Colombier }
115834e04225SDavid du Colombier int
nfs3TAccessUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TAccess * x)115934e04225SDavid du Colombier nfs3TAccessUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TAccess *x)
116034e04225SDavid du Colombier {
116134e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
116234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->access) < 0) goto Err;
116334e04225SDavid du Colombier *pa = a;
116434e04225SDavid du Colombier return 0;
116534e04225SDavid du Colombier Err:
116634e04225SDavid du Colombier *pa = ea;
116734e04225SDavid du Colombier return -1;
116834e04225SDavid du Colombier }
116934e04225SDavid du Colombier void
nfs3RAccessPrint(Fmt * fmt,Nfs3RAccess * x)117034e04225SDavid du Colombier nfs3RAccessPrint(Fmt *fmt, Nfs3RAccess *x)
117134e04225SDavid du Colombier {
117234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RAccess");
117334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
117434e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
117534e04225SDavid du Colombier fmtprint(fmt, "\n");
117634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
117734e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
117834e04225SDavid du Colombier fmtprint(fmt, "\n");
117934e04225SDavid du Colombier switch(x->haveAttr){
118034e04225SDavid du Colombier case 1:
118134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
118234e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
118334e04225SDavid du Colombier fmtprint(fmt, "\n");
118434e04225SDavid du Colombier break;
118534e04225SDavid du Colombier }
118634e04225SDavid du Colombier switch(x->status){
118734e04225SDavid du Colombier case Nfs3Ok:
118834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "access");
118934e04225SDavid du Colombier fmtprint(fmt, "%ud", x->access);
119034e04225SDavid du Colombier fmtprint(fmt, "\n");
119134e04225SDavid du Colombier break;
119234e04225SDavid du Colombier }
119334e04225SDavid du Colombier }
119434e04225SDavid du Colombier uint
nfs3RAccessSize(Nfs3RAccess * x)119534e04225SDavid du Colombier nfs3RAccessSize(Nfs3RAccess *x)
119634e04225SDavid du Colombier {
119734e04225SDavid du Colombier uint a;
119834e04225SDavid du Colombier USED(x);
119934e04225SDavid du Colombier a = 0 + 4 + 4;
120034e04225SDavid du Colombier switch(x->haveAttr){
120134e04225SDavid du Colombier case 1:
120234e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
120334e04225SDavid du Colombier break;
120434e04225SDavid du Colombier }
120534e04225SDavid du Colombier switch(x->status){
120634e04225SDavid du Colombier case Nfs3Ok:
120734e04225SDavid du Colombier a = a + 4;
120834e04225SDavid du Colombier break;
120934e04225SDavid du Colombier }
121034e04225SDavid du Colombier return a;
121134e04225SDavid du Colombier }
121234e04225SDavid du Colombier int
nfs3RAccessPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RAccess * x)121334e04225SDavid du Colombier nfs3RAccessPack(uchar *a, uchar *ea, uchar **pa, Nfs3RAccess *x)
121434e04225SDavid du Colombier {
121534e04225SDavid du Colombier int i;
121634e04225SDavid du Colombier
121734e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
121834e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
121934e04225SDavid du Colombier switch(x->haveAttr){
122034e04225SDavid du Colombier case 1:
122134e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
122234e04225SDavid du Colombier break;
122334e04225SDavid du Colombier }
122434e04225SDavid du Colombier switch(x->status){
122534e04225SDavid du Colombier case Nfs3Ok:
122634e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->access) < 0) goto Err;
122734e04225SDavid du Colombier break;
122834e04225SDavid du Colombier }
122934e04225SDavid du Colombier *pa = a;
123034e04225SDavid du Colombier return 0;
123134e04225SDavid du Colombier Err:
123234e04225SDavid du Colombier *pa = ea;
123334e04225SDavid du Colombier return -1;
123434e04225SDavid du Colombier }
123534e04225SDavid du Colombier int
nfs3RAccessUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RAccess * x)123634e04225SDavid du Colombier nfs3RAccessUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RAccess *x)
123734e04225SDavid du Colombier {
123834e04225SDavid du Colombier int i;
123934e04225SDavid du Colombier
124034e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
124134e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
124234e04225SDavid du Colombier switch(x->haveAttr){
124334e04225SDavid du Colombier case 1:
124434e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
124534e04225SDavid du Colombier break;
124634e04225SDavid du Colombier }
124734e04225SDavid du Colombier switch(x->status){
124834e04225SDavid du Colombier case Nfs3Ok:
124934e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->access) < 0) goto Err;
125034e04225SDavid du Colombier break;
125134e04225SDavid du Colombier }
125234e04225SDavid du Colombier *pa = a;
125334e04225SDavid du Colombier return 0;
125434e04225SDavid du Colombier Err:
125534e04225SDavid du Colombier *pa = ea;
125634e04225SDavid du Colombier return -1;
125734e04225SDavid du Colombier }
125834e04225SDavid du Colombier void
nfs3TReadlinkPrint(Fmt * fmt,Nfs3TReadlink * x)125934e04225SDavid du Colombier nfs3TReadlinkPrint(Fmt *fmt, Nfs3TReadlink *x)
126034e04225SDavid du Colombier {
126134e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TReadlink");
126234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
126334e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
126434e04225SDavid du Colombier fmtprint(fmt, "\n");
126534e04225SDavid du Colombier }
126634e04225SDavid du Colombier uint
nfs3TReadlinkSize(Nfs3TReadlink * x)126734e04225SDavid du Colombier nfs3TReadlinkSize(Nfs3TReadlink *x)
126834e04225SDavid du Colombier {
126934e04225SDavid du Colombier uint a;
127034e04225SDavid du Colombier USED(x);
127134e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle);
127234e04225SDavid du Colombier return a;
127334e04225SDavid du Colombier }
127434e04225SDavid du Colombier int
nfs3TReadlinkPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TReadlink * x)127534e04225SDavid du Colombier nfs3TReadlinkPack(uchar *a, uchar *ea, uchar **pa, Nfs3TReadlink *x)
127634e04225SDavid du Colombier {
127734e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
127834e04225SDavid du Colombier *pa = a;
127934e04225SDavid du Colombier return 0;
128034e04225SDavid du Colombier Err:
128134e04225SDavid du Colombier *pa = ea;
128234e04225SDavid du Colombier return -1;
128334e04225SDavid du Colombier }
128434e04225SDavid du Colombier int
nfs3TReadlinkUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TReadlink * x)128534e04225SDavid du Colombier nfs3TReadlinkUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TReadlink *x)
128634e04225SDavid du Colombier {
128734e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
128834e04225SDavid du Colombier *pa = a;
128934e04225SDavid du Colombier return 0;
129034e04225SDavid du Colombier Err:
129134e04225SDavid du Colombier *pa = ea;
129234e04225SDavid du Colombier return -1;
129334e04225SDavid du Colombier }
129434e04225SDavid du Colombier void
nfs3RReadlinkPrint(Fmt * fmt,Nfs3RReadlink * x)129534e04225SDavid du Colombier nfs3RReadlinkPrint(Fmt *fmt, Nfs3RReadlink *x)
129634e04225SDavid du Colombier {
129734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RReadlink");
129834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
129934e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
130034e04225SDavid du Colombier fmtprint(fmt, "\n");
130134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
130234e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
130334e04225SDavid du Colombier fmtprint(fmt, "\n");
130434e04225SDavid du Colombier switch(x->haveAttr){
130534e04225SDavid du Colombier case 1:
130634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
130734e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
130834e04225SDavid du Colombier fmtprint(fmt, "\n");
130934e04225SDavid du Colombier break;
131034e04225SDavid du Colombier }
131134e04225SDavid du Colombier switch(x->status){
131234e04225SDavid du Colombier case Nfs3Ok:
131334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "data");
131434e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->data);
131534e04225SDavid du Colombier fmtprint(fmt, "\n");
131634e04225SDavid du Colombier break;
131734e04225SDavid du Colombier }
131834e04225SDavid du Colombier }
131934e04225SDavid du Colombier uint
nfs3RReadlinkSize(Nfs3RReadlink * x)132034e04225SDavid du Colombier nfs3RReadlinkSize(Nfs3RReadlink *x)
132134e04225SDavid du Colombier {
132234e04225SDavid du Colombier uint a;
132334e04225SDavid du Colombier USED(x);
132434e04225SDavid du Colombier a = 0 + 4 + 4;
132534e04225SDavid du Colombier switch(x->haveAttr){
132634e04225SDavid du Colombier case 1:
132734e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
132834e04225SDavid du Colombier break;
132934e04225SDavid du Colombier }
133034e04225SDavid du Colombier switch(x->status){
133134e04225SDavid du Colombier case Nfs3Ok:
133234e04225SDavid du Colombier a = a + sunStringSize(x->data);
133334e04225SDavid du Colombier break;
133434e04225SDavid du Colombier }
133534e04225SDavid du Colombier return a;
133634e04225SDavid du Colombier }
133734e04225SDavid du Colombier int
nfs3RReadlinkPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RReadlink * x)133834e04225SDavid du Colombier nfs3RReadlinkPack(uchar *a, uchar *ea, uchar **pa, Nfs3RReadlink *x)
133934e04225SDavid du Colombier {
134034e04225SDavid du Colombier int i;
134134e04225SDavid du Colombier
134234e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
134334e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
134434e04225SDavid du Colombier switch(x->haveAttr){
134534e04225SDavid du Colombier case 1:
134634e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
134734e04225SDavid du Colombier break;
134834e04225SDavid du Colombier }
134934e04225SDavid du Colombier switch(x->status){
135034e04225SDavid du Colombier case Nfs3Ok:
135134e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->data, -1) < 0) goto Err;
135234e04225SDavid du Colombier break;
135334e04225SDavid du Colombier }
135434e04225SDavid du Colombier *pa = a;
135534e04225SDavid du Colombier return 0;
135634e04225SDavid du Colombier Err:
135734e04225SDavid du Colombier *pa = ea;
135834e04225SDavid du Colombier return -1;
135934e04225SDavid du Colombier }
136034e04225SDavid du Colombier int
nfs3RReadlinkUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RReadlink * x)136134e04225SDavid du Colombier nfs3RReadlinkUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RReadlink *x)
136234e04225SDavid du Colombier {
136334e04225SDavid du Colombier int i;
136434e04225SDavid du Colombier
136534e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
136634e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
136734e04225SDavid du Colombier switch(x->haveAttr){
136834e04225SDavid du Colombier case 1:
136934e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
137034e04225SDavid du Colombier break;
137134e04225SDavid du Colombier }
137234e04225SDavid du Colombier switch(x->status){
137334e04225SDavid du Colombier case Nfs3Ok:
137434e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->data, -1) < 0) goto Err;
137534e04225SDavid du Colombier break;
137634e04225SDavid du Colombier }
137734e04225SDavid du Colombier *pa = a;
137834e04225SDavid du Colombier return 0;
137934e04225SDavid du Colombier Err:
138034e04225SDavid du Colombier *pa = ea;
138134e04225SDavid du Colombier return -1;
138234e04225SDavid du Colombier }
138334e04225SDavid du Colombier void
nfs3TReadPrint(Fmt * fmt,Nfs3TRead * x)138434e04225SDavid du Colombier nfs3TReadPrint(Fmt *fmt, Nfs3TRead *x)
138534e04225SDavid du Colombier {
138634e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TRead");
138734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
138834e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
138934e04225SDavid du Colombier fmtprint(fmt, "\n");
139034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "offset");
139134e04225SDavid du Colombier fmtprint(fmt, "%llud", x->offset);
139234e04225SDavid du Colombier fmtprint(fmt, "\n");
139334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "count");
139434e04225SDavid du Colombier fmtprint(fmt, "%ud", x->count);
139534e04225SDavid du Colombier fmtprint(fmt, "\n");
139634e04225SDavid du Colombier }
139734e04225SDavid du Colombier uint
nfs3TReadSize(Nfs3TRead * x)139834e04225SDavid du Colombier nfs3TReadSize(Nfs3TRead *x)
139934e04225SDavid du Colombier {
140034e04225SDavid du Colombier uint a;
140134e04225SDavid du Colombier USED(x);
140234e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + 8 + 4;
140334e04225SDavid du Colombier return a;
140434e04225SDavid du Colombier }
140534e04225SDavid du Colombier int
nfs3TReadPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRead * x)140634e04225SDavid du Colombier nfs3TReadPack(uchar *a, uchar *ea, uchar **pa, Nfs3TRead *x)
140734e04225SDavid du Colombier {
140834e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
140934e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->offset) < 0) goto Err;
141034e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->count) < 0) goto Err;
141134e04225SDavid du Colombier *pa = a;
141234e04225SDavid du Colombier return 0;
141334e04225SDavid du Colombier Err:
141434e04225SDavid du Colombier *pa = ea;
141534e04225SDavid du Colombier return -1;
141634e04225SDavid du Colombier }
141734e04225SDavid du Colombier int
nfs3TReadUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRead * x)141834e04225SDavid du Colombier nfs3TReadUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TRead *x)
141934e04225SDavid du Colombier {
142034e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
142134e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->offset) < 0) goto Err;
142234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->count) < 0) goto Err;
142334e04225SDavid du Colombier *pa = a;
142434e04225SDavid du Colombier return 0;
142534e04225SDavid du Colombier Err:
142634e04225SDavid du Colombier *pa = ea;
142734e04225SDavid du Colombier return -1;
142834e04225SDavid du Colombier }
142934e04225SDavid du Colombier void
nfs3RReadPrint(Fmt * fmt,Nfs3RRead * x)143034e04225SDavid du Colombier nfs3RReadPrint(Fmt *fmt, Nfs3RRead *x)
143134e04225SDavid du Colombier {
143234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RRead");
143334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
143434e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
143534e04225SDavid du Colombier fmtprint(fmt, "\n");
143634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
143734e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
143834e04225SDavid du Colombier fmtprint(fmt, "\n");
143934e04225SDavid du Colombier switch(x->haveAttr){
144034e04225SDavid du Colombier case 1:
144134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
144234e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
144334e04225SDavid du Colombier fmtprint(fmt, "\n");
144434e04225SDavid du Colombier break;
144534e04225SDavid du Colombier }
144634e04225SDavid du Colombier switch(x->status){
144734e04225SDavid du Colombier case Nfs3Ok:
144834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "count");
144934e04225SDavid du Colombier fmtprint(fmt, "%ud", x->count);
145034e04225SDavid du Colombier fmtprint(fmt, "\n");
145134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "eof");
145234e04225SDavid du Colombier fmtprint(fmt, "%d", x->eof);
145334e04225SDavid du Colombier fmtprint(fmt, "\n");
145434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "data");
145534e04225SDavid du Colombier if(x->ndata <= 32)
145634e04225SDavid du Colombier fmtprint(fmt, "%.*H", x->ndata, x->data);
145734e04225SDavid du Colombier else
145834e04225SDavid du Colombier fmtprint(fmt, "%.32H...", x->data);
145934e04225SDavid du Colombier fmtprint(fmt, "\n");
146034e04225SDavid du Colombier break;
146134e04225SDavid du Colombier }
146234e04225SDavid du Colombier }
146334e04225SDavid du Colombier uint
nfs3RReadSize(Nfs3RRead * x)146434e04225SDavid du Colombier nfs3RReadSize(Nfs3RRead *x)
146534e04225SDavid du Colombier {
146634e04225SDavid du Colombier uint a;
146734e04225SDavid du Colombier USED(x);
146834e04225SDavid du Colombier a = 0 + 4 + 4;
146934e04225SDavid du Colombier switch(x->haveAttr){
147034e04225SDavid du Colombier case 1:
147134e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
147234e04225SDavid du Colombier break;
147334e04225SDavid du Colombier }
147434e04225SDavid du Colombier switch(x->status){
147534e04225SDavid du Colombier case Nfs3Ok:
147634e04225SDavid du Colombier a = a + 4 + 4 + sunVarOpaqueSize(x->ndata);
147734e04225SDavid du Colombier break;
147834e04225SDavid du Colombier }
147934e04225SDavid du Colombier return a;
148034e04225SDavid du Colombier }
148134e04225SDavid du Colombier int
nfs3RReadPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRead * x)148234e04225SDavid du Colombier nfs3RReadPack(uchar *a, uchar *ea, uchar **pa, Nfs3RRead *x)
148334e04225SDavid du Colombier {
148434e04225SDavid du Colombier int i;
148534e04225SDavid du Colombier
148634e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
148734e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
148834e04225SDavid du Colombier switch(x->haveAttr){
148934e04225SDavid du Colombier case 1:
149034e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
149134e04225SDavid du Colombier break;
149234e04225SDavid du Colombier }
149334e04225SDavid du Colombier switch(x->status){
149434e04225SDavid du Colombier case Nfs3Ok:
149534e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->count) < 0) goto Err;
149634e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->eof) < 0) goto Err;
149734e04225SDavid du Colombier if(sunVarOpaquePack(a, ea, &a, &x->data, &x->ndata, x->count) < 0) goto Err;
149834e04225SDavid du Colombier break;
149934e04225SDavid du Colombier }
150034e04225SDavid du Colombier *pa = a;
150134e04225SDavid du Colombier return 0;
150234e04225SDavid du Colombier Err:
150334e04225SDavid du Colombier *pa = ea;
150434e04225SDavid du Colombier return -1;
150534e04225SDavid du Colombier }
150634e04225SDavid du Colombier int
nfs3RReadUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRead * x)150734e04225SDavid du Colombier nfs3RReadUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RRead *x)
150834e04225SDavid du Colombier {
150934e04225SDavid du Colombier int i;
151034e04225SDavid du Colombier
151134e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
151234e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
151334e04225SDavid du Colombier switch(x->haveAttr){
151434e04225SDavid du Colombier case 1:
151534e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
151634e04225SDavid du Colombier break;
151734e04225SDavid du Colombier }
151834e04225SDavid du Colombier switch(x->status){
151934e04225SDavid du Colombier case Nfs3Ok:
152034e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->count) < 0) goto Err;
152134e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->eof) < 0) goto Err;
152234e04225SDavid du Colombier if(sunVarOpaqueUnpack(a, ea, &a, &x->data, &x->ndata, x->count) < 0) goto Err;
152334e04225SDavid du Colombier break;
152434e04225SDavid du Colombier }
152534e04225SDavid du Colombier *pa = a;
152634e04225SDavid du Colombier return 0;
152734e04225SDavid du Colombier Err:
152834e04225SDavid du Colombier *pa = ea;
152934e04225SDavid du Colombier return -1;
153034e04225SDavid du Colombier }
153134e04225SDavid du Colombier char*
nfs3SyncStr(Nfs3Sync x)153234e04225SDavid du Colombier nfs3SyncStr(Nfs3Sync x)
153334e04225SDavid du Colombier {
153434e04225SDavid du Colombier switch(x){
153534e04225SDavid du Colombier case Nfs3SyncNone:
153634e04225SDavid du Colombier return "Nfs3SyncNone";
153734e04225SDavid du Colombier case Nfs3SyncData:
153834e04225SDavid du Colombier return "Nfs3SyncData";
153934e04225SDavid du Colombier case Nfs3SyncFile:
154034e04225SDavid du Colombier return "Nfs3SyncFile";
154134e04225SDavid du Colombier default:
154234e04225SDavid du Colombier return "unknown";
154334e04225SDavid du Colombier }
154434e04225SDavid du Colombier }
154534e04225SDavid du Colombier
154634e04225SDavid du Colombier void
nfs3TWritePrint(Fmt * fmt,Nfs3TWrite * x)154734e04225SDavid du Colombier nfs3TWritePrint(Fmt *fmt, Nfs3TWrite *x)
154834e04225SDavid du Colombier {
154934e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TWrite");
155034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "file");
155134e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
155234e04225SDavid du Colombier fmtprint(fmt, "\n");
155334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "offset");
155434e04225SDavid du Colombier fmtprint(fmt, "%llud", x->offset);
155534e04225SDavid du Colombier fmtprint(fmt, "\n");
155634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "count");
155734e04225SDavid du Colombier fmtprint(fmt, "%ud", x->count);
155834e04225SDavid du Colombier fmtprint(fmt, "\n");
155934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "stable");
156034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3SyncStr(x->stable));
156134e04225SDavid du Colombier fmtprint(fmt, "\n");
156234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "data");
156334e04225SDavid du Colombier if(x->ndata > 32)
156434e04225SDavid du Colombier fmtprint(fmt, "%.32H... (%d)", x->data, x->ndata);
156534e04225SDavid du Colombier else
156634e04225SDavid du Colombier fmtprint(fmt, "%.*H", x->ndata, x->data);
156734e04225SDavid du Colombier fmtprint(fmt, "\n");
156834e04225SDavid du Colombier }
156934e04225SDavid du Colombier uint
nfs3TWriteSize(Nfs3TWrite * x)157034e04225SDavid du Colombier nfs3TWriteSize(Nfs3TWrite *x)
157134e04225SDavid du Colombier {
157234e04225SDavid du Colombier uint a;
157334e04225SDavid du Colombier USED(x);
157434e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + 8 + 4 + 4 + sunVarOpaqueSize(x->ndata);
157534e04225SDavid du Colombier return a;
157634e04225SDavid du Colombier }
157734e04225SDavid du Colombier int
nfs3TWritePack(uchar * a,uchar * ea,uchar ** pa,Nfs3TWrite * x)157834e04225SDavid du Colombier nfs3TWritePack(uchar *a, uchar *ea, uchar **pa, Nfs3TWrite *x)
157934e04225SDavid du Colombier {
158034e04225SDavid du Colombier int i;
158134e04225SDavid du Colombier
158234e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
158334e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->offset) < 0) goto Err;
158434e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->count) < 0) goto Err;
158534e04225SDavid du Colombier if(i=x->stable, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
158634e04225SDavid du Colombier if(sunVarOpaquePack(a, ea, &a, &x->data, &x->ndata, x->count) < 0) goto Err;
158734e04225SDavid du Colombier *pa = a;
158834e04225SDavid du Colombier return 0;
158934e04225SDavid du Colombier Err:
159034e04225SDavid du Colombier *pa = ea;
159134e04225SDavid du Colombier return -1;
159234e04225SDavid du Colombier }
159334e04225SDavid du Colombier int
nfs3TWriteUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TWrite * x)159434e04225SDavid du Colombier nfs3TWriteUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TWrite *x)
159534e04225SDavid du Colombier {
159634e04225SDavid du Colombier int i;
159734e04225SDavid du Colombier
159834e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
159934e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->offset) < 0) goto Err;
160034e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->count) < 0) goto Err;
160134e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->stable = i;
160234e04225SDavid du Colombier if(sunVarOpaqueUnpack(a, ea, &a, &x->data, &x->ndata, x->count) < 0) goto Err;
160334e04225SDavid du Colombier *pa = a;
160434e04225SDavid du Colombier return 0;
160534e04225SDavid du Colombier Err:
160634e04225SDavid du Colombier *pa = ea;
160734e04225SDavid du Colombier return -1;
160834e04225SDavid du Colombier }
160934e04225SDavid du Colombier void
nfs3RWritePrint(Fmt * fmt,Nfs3RWrite * x)161034e04225SDavid du Colombier nfs3RWritePrint(Fmt *fmt, Nfs3RWrite *x)
161134e04225SDavid du Colombier {
161234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RWrite");
161334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
161434e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
161534e04225SDavid du Colombier fmtprint(fmt, "\n");
161634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "wcc");
161734e04225SDavid du Colombier nfs3WccPrint(fmt, &x->wcc);
161834e04225SDavid du Colombier fmtprint(fmt, "\n");
161934e04225SDavid du Colombier switch(x->status){
162034e04225SDavid du Colombier case Nfs3Ok:
162134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "count");
162234e04225SDavid du Colombier fmtprint(fmt, "%ud", x->count);
162334e04225SDavid du Colombier fmtprint(fmt, "\n");
162434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "committed");
162534e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3SyncStr(x->committed));
162634e04225SDavid du Colombier fmtprint(fmt, "\n");
162734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
162834e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3WriteVerfSize, x->verf);
162934e04225SDavid du Colombier fmtprint(fmt, "\n");
163034e04225SDavid du Colombier break;
163134e04225SDavid du Colombier }
163234e04225SDavid du Colombier }
163334e04225SDavid du Colombier uint
nfs3RWriteSize(Nfs3RWrite * x)163434e04225SDavid du Colombier nfs3RWriteSize(Nfs3RWrite *x)
163534e04225SDavid du Colombier {
163634e04225SDavid du Colombier uint a;
163734e04225SDavid du Colombier USED(x);
163834e04225SDavid du Colombier a = 0 + 4 + nfs3WccSize(&x->wcc);
163934e04225SDavid du Colombier switch(x->status){
164034e04225SDavid du Colombier case Nfs3Ok:
164134e04225SDavid du Colombier a = a + 4 + 4 + Nfs3WriteVerfSize;
164234e04225SDavid du Colombier break;
164334e04225SDavid du Colombier }
164434e04225SDavid du Colombier return a;
164534e04225SDavid du Colombier }
164634e04225SDavid du Colombier int
nfs3RWritePack(uchar * a,uchar * ea,uchar ** pa,Nfs3RWrite * x)164734e04225SDavid du Colombier nfs3RWritePack(uchar *a, uchar *ea, uchar **pa, Nfs3RWrite *x)
164834e04225SDavid du Colombier {
164934e04225SDavid du Colombier int i;
165034e04225SDavid du Colombier
165134e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
165234e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->wcc) < 0) goto Err;
165334e04225SDavid du Colombier switch(x->status){
165434e04225SDavid du Colombier case Nfs3Ok:
165534e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->count) < 0) goto Err;
165634e04225SDavid du Colombier if(i=x->committed, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
165734e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3WriteVerfSize) < 0) goto Err;
165834e04225SDavid du Colombier break;
165934e04225SDavid du Colombier }
166034e04225SDavid du Colombier *pa = a;
166134e04225SDavid du Colombier return 0;
166234e04225SDavid du Colombier Err:
166334e04225SDavid du Colombier *pa = ea;
166434e04225SDavid du Colombier return -1;
166534e04225SDavid du Colombier }
166634e04225SDavid du Colombier int
nfs3RWriteUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RWrite * x)166734e04225SDavid du Colombier nfs3RWriteUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RWrite *x)
166834e04225SDavid du Colombier {
166934e04225SDavid du Colombier int i;
167034e04225SDavid du Colombier
167134e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
167234e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->wcc) < 0) goto Err;
167334e04225SDavid du Colombier switch(x->status){
167434e04225SDavid du Colombier case Nfs3Ok:
167534e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->count) < 0) goto Err;
167634e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->committed = i;
167734e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3WriteVerfSize) < 0) goto Err;
167834e04225SDavid du Colombier break;
167934e04225SDavid du Colombier }
168034e04225SDavid du Colombier *pa = a;
168134e04225SDavid du Colombier return 0;
168234e04225SDavid du Colombier Err:
168334e04225SDavid du Colombier *pa = ea;
168434e04225SDavid du Colombier return -1;
168534e04225SDavid du Colombier }
168634e04225SDavid du Colombier char*
nfs3CreateStr(Nfs3Create x)168734e04225SDavid du Colombier nfs3CreateStr(Nfs3Create x)
168834e04225SDavid du Colombier {
168934e04225SDavid du Colombier switch(x){
169034e04225SDavid du Colombier case Nfs3CreateUnchecked:
169134e04225SDavid du Colombier return "Nfs3CreateUnchecked";
169234e04225SDavid du Colombier case Nfs3CreateGuarded:
169334e04225SDavid du Colombier return "Nfs3CreateGuarded";
169434e04225SDavid du Colombier case Nfs3CreateExclusive:
169534e04225SDavid du Colombier return "Nfs3CreateExclusive";
169634e04225SDavid du Colombier default:
169734e04225SDavid du Colombier return "unknown";
169834e04225SDavid du Colombier }
169934e04225SDavid du Colombier }
170034e04225SDavid du Colombier
170134e04225SDavid du Colombier void
nfs3TCreatePrint(Fmt * fmt,Nfs3TCreate * x)170234e04225SDavid du Colombier nfs3TCreatePrint(Fmt *fmt, Nfs3TCreate *x)
170334e04225SDavid du Colombier {
170434e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TCreate");
170534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
170634e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
170734e04225SDavid du Colombier fmtprint(fmt, "\n");
170834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
170934e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
171034e04225SDavid du Colombier fmtprint(fmt, "\n");
171134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "mode");
171234e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3CreateStr(x->mode));
171334e04225SDavid du Colombier fmtprint(fmt, "\n");
171434e04225SDavid du Colombier switch(x->mode){
171534e04225SDavid du Colombier case Nfs3CreateUnchecked:
171634e04225SDavid du Colombier case Nfs3CreateGuarded:
171734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
171834e04225SDavid du Colombier nfs3SetAttrPrint(fmt, &x->attr);
171934e04225SDavid du Colombier fmtprint(fmt, "\n");
172034e04225SDavid du Colombier break;
172134e04225SDavid du Colombier case Nfs3CreateExclusive:
172234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
172334e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3CreateVerfSize, x->verf);
172434e04225SDavid du Colombier fmtprint(fmt, "\n");
172534e04225SDavid du Colombier break;
172634e04225SDavid du Colombier }
172734e04225SDavid du Colombier }
172834e04225SDavid du Colombier uint
nfs3TCreateSize(Nfs3TCreate * x)172934e04225SDavid du Colombier nfs3TCreateSize(Nfs3TCreate *x)
173034e04225SDavid du Colombier {
173134e04225SDavid du Colombier uint a;
173234e04225SDavid du Colombier USED(x);
173334e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name) + 4;
173434e04225SDavid du Colombier switch(x->mode){
173534e04225SDavid du Colombier case Nfs3CreateUnchecked:
173634e04225SDavid du Colombier case Nfs3CreateGuarded:
173734e04225SDavid du Colombier a = a + nfs3SetAttrSize(&x->attr);
173834e04225SDavid du Colombier break;
173934e04225SDavid du Colombier case Nfs3CreateExclusive:
174034e04225SDavid du Colombier a = a + Nfs3CreateVerfSize;
174134e04225SDavid du Colombier break;
174234e04225SDavid du Colombier }
174334e04225SDavid du Colombier return a;
174434e04225SDavid du Colombier }
174534e04225SDavid du Colombier int
nfs3TCreatePack(uchar * a,uchar * ea,uchar ** pa,Nfs3TCreate * x)174634e04225SDavid du Colombier nfs3TCreatePack(uchar *a, uchar *ea, uchar **pa, Nfs3TCreate *x)
174734e04225SDavid du Colombier {
174834e04225SDavid du Colombier int i;
174934e04225SDavid du Colombier
175034e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
175134e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
175234e04225SDavid du Colombier if(i=x->mode, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
175334e04225SDavid du Colombier switch(x->mode){
175434e04225SDavid du Colombier case Nfs3CreateUnchecked:
175534e04225SDavid du Colombier case Nfs3CreateGuarded:
175634e04225SDavid du Colombier if(nfs3SetAttrPack(a, ea, &a, &x->attr) < 0) goto Err;
175734e04225SDavid du Colombier break;
175834e04225SDavid du Colombier case Nfs3CreateExclusive:
175934e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3CreateVerfSize) < 0) goto Err;
176034e04225SDavid du Colombier break;
176134e04225SDavid du Colombier }
176234e04225SDavid du Colombier *pa = a;
176334e04225SDavid du Colombier return 0;
176434e04225SDavid du Colombier Err:
176534e04225SDavid du Colombier *pa = ea;
176634e04225SDavid du Colombier return -1;
176734e04225SDavid du Colombier }
176834e04225SDavid du Colombier int
nfs3TCreateUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TCreate * x)176934e04225SDavid du Colombier nfs3TCreateUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TCreate *x)
177034e04225SDavid du Colombier {
177134e04225SDavid du Colombier int i;
177234e04225SDavid du Colombier
177334e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
177434e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
177534e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->mode = i;
177634e04225SDavid du Colombier switch(x->mode){
177734e04225SDavid du Colombier case Nfs3CreateUnchecked:
177834e04225SDavid du Colombier case Nfs3CreateGuarded:
177934e04225SDavid du Colombier if(nfs3SetAttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
178034e04225SDavid du Colombier break;
178134e04225SDavid du Colombier case Nfs3CreateExclusive:
178234e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3CreateVerfSize) < 0) goto Err;
178334e04225SDavid du Colombier break;
178434e04225SDavid du Colombier }
178534e04225SDavid du Colombier *pa = a;
178634e04225SDavid du Colombier return 0;
178734e04225SDavid du Colombier Err:
178834e04225SDavid du Colombier *pa = ea;
178934e04225SDavid du Colombier return -1;
179034e04225SDavid du Colombier }
179134e04225SDavid du Colombier void
nfs3RCreatePrint(Fmt * fmt,Nfs3RCreate * x)179234e04225SDavid du Colombier nfs3RCreatePrint(Fmt *fmt, Nfs3RCreate *x)
179334e04225SDavid du Colombier {
179434e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RCreate");
179534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
179634e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
179734e04225SDavid du Colombier fmtprint(fmt, "\n");
179834e04225SDavid du Colombier switch(x->status){
179934e04225SDavid du Colombier case Nfs3Ok:
180034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveHandle");
180134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveHandle);
180234e04225SDavid du Colombier fmtprint(fmt, "\n");
180334e04225SDavid du Colombier switch(x->haveHandle){
180434e04225SDavid du Colombier case 1:
180534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
180634e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
180734e04225SDavid du Colombier fmtprint(fmt, "\n");
180834e04225SDavid du Colombier break;
180934e04225SDavid du Colombier }
181034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
181134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
181234e04225SDavid du Colombier fmtprint(fmt, "\n");
181334e04225SDavid du Colombier switch(x->haveAttr){
181434e04225SDavid du Colombier case 1:
181534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
181634e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
181734e04225SDavid du Colombier fmtprint(fmt, "\n");
181834e04225SDavid du Colombier break;
181934e04225SDavid du Colombier }
182034e04225SDavid du Colombier break;
182134e04225SDavid du Colombier }
182234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirWcc");
182334e04225SDavid du Colombier nfs3WccPrint(fmt, &x->dirWcc);
182434e04225SDavid du Colombier fmtprint(fmt, "\n");
182534e04225SDavid du Colombier }
182634e04225SDavid du Colombier uint
nfs3RCreateSize(Nfs3RCreate * x)182734e04225SDavid du Colombier nfs3RCreateSize(Nfs3RCreate *x)
182834e04225SDavid du Colombier {
182934e04225SDavid du Colombier uint a;
183034e04225SDavid du Colombier USED(x);
183134e04225SDavid du Colombier a = 0 + 4;
183234e04225SDavid du Colombier switch(x->status){
183334e04225SDavid du Colombier case Nfs3Ok:
183434e04225SDavid du Colombier a = a + 4;
183534e04225SDavid du Colombier switch(x->haveHandle){
183634e04225SDavid du Colombier case 1:
183734e04225SDavid du Colombier a = a + nfs3HandleSize(&x->handle);
183834e04225SDavid du Colombier break;
183934e04225SDavid du Colombier }
184034e04225SDavid du Colombier a = a + 4;
184134e04225SDavid du Colombier switch(x->haveAttr){
184234e04225SDavid du Colombier case 1:
184334e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
184434e04225SDavid du Colombier break;
184534e04225SDavid du Colombier }
184634e04225SDavid du Colombier break;
184734e04225SDavid du Colombier }
184834e04225SDavid du Colombier a = a + nfs3WccSize(&x->dirWcc);
184934e04225SDavid du Colombier return a;
185034e04225SDavid du Colombier }
185134e04225SDavid du Colombier int
nfs3RCreatePack(uchar * a,uchar * ea,uchar ** pa,Nfs3RCreate * x)185234e04225SDavid du Colombier nfs3RCreatePack(uchar *a, uchar *ea, uchar **pa, Nfs3RCreate *x)
185334e04225SDavid du Colombier {
185434e04225SDavid du Colombier int i;
185534e04225SDavid du Colombier
185634e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
185734e04225SDavid du Colombier switch(x->status){
185834e04225SDavid du Colombier case Nfs3Ok:
185934e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveHandle) < 0) goto Err;
186034e04225SDavid du Colombier switch(x->haveHandle){
186134e04225SDavid du Colombier case 1:
186234e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
186334e04225SDavid du Colombier break;
186434e04225SDavid du Colombier }
186534e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
186634e04225SDavid du Colombier switch(x->haveAttr){
186734e04225SDavid du Colombier case 1:
186834e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
186934e04225SDavid du Colombier break;
187034e04225SDavid du Colombier }
187134e04225SDavid du Colombier break;
187234e04225SDavid du Colombier }
187334e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->dirWcc) < 0) goto Err;
187434e04225SDavid du Colombier *pa = a;
187534e04225SDavid du Colombier return 0;
187634e04225SDavid du Colombier Err:
187734e04225SDavid du Colombier *pa = ea;
187834e04225SDavid du Colombier return -1;
187934e04225SDavid du Colombier }
188034e04225SDavid du Colombier int
nfs3RCreateUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RCreate * x)188134e04225SDavid du Colombier nfs3RCreateUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RCreate *x)
188234e04225SDavid du Colombier {
188334e04225SDavid du Colombier int i;
188434e04225SDavid du Colombier
188534e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
188634e04225SDavid du Colombier switch(x->status){
188734e04225SDavid du Colombier case Nfs3Ok:
188834e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveHandle) < 0) goto Err;
188934e04225SDavid du Colombier switch(x->haveHandle){
189034e04225SDavid du Colombier case 1:
189134e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
189234e04225SDavid du Colombier break;
189334e04225SDavid du Colombier }
189434e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
189534e04225SDavid du Colombier switch(x->haveAttr){
189634e04225SDavid du Colombier case 1:
189734e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
189834e04225SDavid du Colombier break;
189934e04225SDavid du Colombier }
190034e04225SDavid du Colombier break;
190134e04225SDavid du Colombier }
190234e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->dirWcc) < 0) goto Err;
190334e04225SDavid du Colombier *pa = a;
190434e04225SDavid du Colombier return 0;
190534e04225SDavid du Colombier Err:
190634e04225SDavid du Colombier *pa = ea;
190734e04225SDavid du Colombier return -1;
190834e04225SDavid du Colombier }
190934e04225SDavid du Colombier void
nfs3TMkdirPrint(Fmt * fmt,Nfs3TMkdir * x)191034e04225SDavid du Colombier nfs3TMkdirPrint(Fmt *fmt, Nfs3TMkdir *x)
191134e04225SDavid du Colombier {
191234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TMkdir");
191334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
191434e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
191534e04225SDavid du Colombier fmtprint(fmt, "\n");
191634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
191734e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
191834e04225SDavid du Colombier fmtprint(fmt, "\n");
191934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
192034e04225SDavid du Colombier nfs3SetAttrPrint(fmt, &x->attr);
192134e04225SDavid du Colombier fmtprint(fmt, "\n");
192234e04225SDavid du Colombier }
192334e04225SDavid du Colombier uint
nfs3TMkdirSize(Nfs3TMkdir * x)192434e04225SDavid du Colombier nfs3TMkdirSize(Nfs3TMkdir *x)
192534e04225SDavid du Colombier {
192634e04225SDavid du Colombier uint a;
192734e04225SDavid du Colombier USED(x);
192834e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name) + nfs3SetAttrSize(&x->attr);
192934e04225SDavid du Colombier return a;
193034e04225SDavid du Colombier }
193134e04225SDavid du Colombier int
nfs3TMkdirPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TMkdir * x)193234e04225SDavid du Colombier nfs3TMkdirPack(uchar *a, uchar *ea, uchar **pa, Nfs3TMkdir *x)
193334e04225SDavid du Colombier {
193434e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
193534e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
193634e04225SDavid du Colombier if(nfs3SetAttrPack(a, ea, &a, &x->attr) < 0) goto Err;
193734e04225SDavid du Colombier *pa = a;
193834e04225SDavid du Colombier return 0;
193934e04225SDavid du Colombier Err:
194034e04225SDavid du Colombier *pa = ea;
194134e04225SDavid du Colombier return -1;
194234e04225SDavid du Colombier }
194334e04225SDavid du Colombier int
nfs3TMkdirUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TMkdir * x)194434e04225SDavid du Colombier nfs3TMkdirUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TMkdir *x)
194534e04225SDavid du Colombier {
194634e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
194734e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
194834e04225SDavid du Colombier if(nfs3SetAttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
194934e04225SDavid du Colombier *pa = a;
195034e04225SDavid du Colombier return 0;
195134e04225SDavid du Colombier Err:
195234e04225SDavid du Colombier *pa = ea;
195334e04225SDavid du Colombier return -1;
195434e04225SDavid du Colombier }
195534e04225SDavid du Colombier void
nfs3RMkdirPrint(Fmt * fmt,Nfs3RMkdir * x)195634e04225SDavid du Colombier nfs3RMkdirPrint(Fmt *fmt, Nfs3RMkdir *x)
195734e04225SDavid du Colombier {
195834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RMkdir");
195934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
196034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
196134e04225SDavid du Colombier fmtprint(fmt, "\n");
196234e04225SDavid du Colombier switch(x->status){
196334e04225SDavid du Colombier case Nfs3Ok:
196434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveHandle");
196534e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveHandle);
196634e04225SDavid du Colombier fmtprint(fmt, "\n");
196734e04225SDavid du Colombier switch(x->haveHandle){
196834e04225SDavid du Colombier case 1:
196934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
197034e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
197134e04225SDavid du Colombier fmtprint(fmt, "\n");
197234e04225SDavid du Colombier break;
197334e04225SDavid du Colombier }
197434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
197534e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
197634e04225SDavid du Colombier fmtprint(fmt, "\n");
197734e04225SDavid du Colombier switch(x->haveAttr){
197834e04225SDavid du Colombier case 1:
197934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
198034e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
198134e04225SDavid du Colombier fmtprint(fmt, "\n");
198234e04225SDavid du Colombier break;
198334e04225SDavid du Colombier }
198434e04225SDavid du Colombier break;
198534e04225SDavid du Colombier }
198634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirWcc");
198734e04225SDavid du Colombier nfs3WccPrint(fmt, &x->dirWcc);
198834e04225SDavid du Colombier fmtprint(fmt, "\n");
198934e04225SDavid du Colombier }
199034e04225SDavid du Colombier uint
nfs3RMkdirSize(Nfs3RMkdir * x)199134e04225SDavid du Colombier nfs3RMkdirSize(Nfs3RMkdir *x)
199234e04225SDavid du Colombier {
199334e04225SDavid du Colombier uint a;
199434e04225SDavid du Colombier USED(x);
199534e04225SDavid du Colombier a = 0 + 4;
199634e04225SDavid du Colombier switch(x->status){
199734e04225SDavid du Colombier case Nfs3Ok:
199834e04225SDavid du Colombier a = a + 4;
199934e04225SDavid du Colombier switch(x->haveHandle){
200034e04225SDavid du Colombier case 1:
200134e04225SDavid du Colombier a = a + nfs3HandleSize(&x->handle);
200234e04225SDavid du Colombier break;
200334e04225SDavid du Colombier }
200434e04225SDavid du Colombier a = a + 4;
200534e04225SDavid du Colombier switch(x->haveAttr){
200634e04225SDavid du Colombier case 1:
200734e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
200834e04225SDavid du Colombier break;
200934e04225SDavid du Colombier }
201034e04225SDavid du Colombier break;
201134e04225SDavid du Colombier }
201234e04225SDavid du Colombier a = a + nfs3WccSize(&x->dirWcc);
201334e04225SDavid du Colombier return a;
201434e04225SDavid du Colombier }
201534e04225SDavid du Colombier int
nfs3RMkdirPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RMkdir * x)201634e04225SDavid du Colombier nfs3RMkdirPack(uchar *a, uchar *ea, uchar **pa, Nfs3RMkdir *x)
201734e04225SDavid du Colombier {
201834e04225SDavid du Colombier int i;
201934e04225SDavid du Colombier
202034e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
202134e04225SDavid du Colombier switch(x->status){
202234e04225SDavid du Colombier case Nfs3Ok:
202334e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveHandle) < 0) goto Err;
202434e04225SDavid du Colombier switch(x->haveHandle){
202534e04225SDavid du Colombier case 1:
202634e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
202734e04225SDavid du Colombier break;
202834e04225SDavid du Colombier }
202934e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
203034e04225SDavid du Colombier switch(x->haveAttr){
203134e04225SDavid du Colombier case 1:
203234e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
203334e04225SDavid du Colombier break;
203434e04225SDavid du Colombier }
203534e04225SDavid du Colombier break;
203634e04225SDavid du Colombier }
203734e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->dirWcc) < 0) goto Err;
203834e04225SDavid du Colombier *pa = a;
203934e04225SDavid du Colombier return 0;
204034e04225SDavid du Colombier Err:
204134e04225SDavid du Colombier *pa = ea;
204234e04225SDavid du Colombier return -1;
204334e04225SDavid du Colombier }
204434e04225SDavid du Colombier int
nfs3RMkdirUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RMkdir * x)204534e04225SDavid du Colombier nfs3RMkdirUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RMkdir *x)
204634e04225SDavid du Colombier {
204734e04225SDavid du Colombier int i;
204834e04225SDavid du Colombier
204934e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
205034e04225SDavid du Colombier switch(x->status){
205134e04225SDavid du Colombier case Nfs3Ok:
205234e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveHandle) < 0) goto Err;
205334e04225SDavid du Colombier switch(x->haveHandle){
205434e04225SDavid du Colombier case 1:
205534e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
205634e04225SDavid du Colombier break;
205734e04225SDavid du Colombier }
205834e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
205934e04225SDavid du Colombier switch(x->haveAttr){
206034e04225SDavid du Colombier case 1:
206134e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
206234e04225SDavid du Colombier break;
206334e04225SDavid du Colombier }
206434e04225SDavid du Colombier break;
206534e04225SDavid du Colombier }
206634e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->dirWcc) < 0) goto Err;
206734e04225SDavid du Colombier *pa = a;
206834e04225SDavid du Colombier return 0;
206934e04225SDavid du Colombier Err:
207034e04225SDavid du Colombier *pa = ea;
207134e04225SDavid du Colombier return -1;
207234e04225SDavid du Colombier }
207334e04225SDavid du Colombier void
nfs3TSymlinkPrint(Fmt * fmt,Nfs3TSymlink * x)207434e04225SDavid du Colombier nfs3TSymlinkPrint(Fmt *fmt, Nfs3TSymlink *x)
207534e04225SDavid du Colombier {
207634e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TSymlink");
207734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
207834e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
207934e04225SDavid du Colombier fmtprint(fmt, "\n");
208034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
208134e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
208234e04225SDavid du Colombier fmtprint(fmt, "\n");
208334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
208434e04225SDavid du Colombier nfs3SetAttrPrint(fmt, &x->attr);
208534e04225SDavid du Colombier fmtprint(fmt, "\n");
208634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "data");
208734e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->data);
208834e04225SDavid du Colombier fmtprint(fmt, "\n");
208934e04225SDavid du Colombier }
209034e04225SDavid du Colombier uint
nfs3TSymlinkSize(Nfs3TSymlink * x)209134e04225SDavid du Colombier nfs3TSymlinkSize(Nfs3TSymlink *x)
209234e04225SDavid du Colombier {
209334e04225SDavid du Colombier uint a;
209434e04225SDavid du Colombier USED(x);
209534e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name) + nfs3SetAttrSize(&x->attr) + sunStringSize(x->data);
209634e04225SDavid du Colombier return a;
209734e04225SDavid du Colombier }
209834e04225SDavid du Colombier int
nfs3TSymlinkPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TSymlink * x)209934e04225SDavid du Colombier nfs3TSymlinkPack(uchar *a, uchar *ea, uchar **pa, Nfs3TSymlink *x)
210034e04225SDavid du Colombier {
210134e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
210234e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
210334e04225SDavid du Colombier if(nfs3SetAttrPack(a, ea, &a, &x->attr) < 0) goto Err;
210434e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->data, -1) < 0) goto Err;
210534e04225SDavid du Colombier *pa = a;
210634e04225SDavid du Colombier return 0;
210734e04225SDavid du Colombier Err:
210834e04225SDavid du Colombier *pa = ea;
210934e04225SDavid du Colombier return -1;
211034e04225SDavid du Colombier }
211134e04225SDavid du Colombier int
nfs3TSymlinkUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TSymlink * x)211234e04225SDavid du Colombier nfs3TSymlinkUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TSymlink *x)
211334e04225SDavid du Colombier {
211434e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
211534e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
211634e04225SDavid du Colombier if(nfs3SetAttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
211734e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->data, -1) < 0) goto Err;
211834e04225SDavid du Colombier *pa = a;
211934e04225SDavid du Colombier return 0;
212034e04225SDavid du Colombier Err:
212134e04225SDavid du Colombier *pa = ea;
212234e04225SDavid du Colombier return -1;
212334e04225SDavid du Colombier }
212434e04225SDavid du Colombier void
nfs3RSymlinkPrint(Fmt * fmt,Nfs3RSymlink * x)212534e04225SDavid du Colombier nfs3RSymlinkPrint(Fmt *fmt, Nfs3RSymlink *x)
212634e04225SDavid du Colombier {
212734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RSymlink");
212834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
212934e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
213034e04225SDavid du Colombier fmtprint(fmt, "\n");
213134e04225SDavid du Colombier switch(x->status){
213234e04225SDavid du Colombier case Nfs3Ok:
213334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveHandle");
213434e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveHandle);
213534e04225SDavid du Colombier fmtprint(fmt, "\n");
213634e04225SDavid du Colombier switch(x->haveHandle){
213734e04225SDavid du Colombier case 1:
213834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
213934e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
214034e04225SDavid du Colombier fmtprint(fmt, "\n");
214134e04225SDavid du Colombier break;
214234e04225SDavid du Colombier }
214334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
214434e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
214534e04225SDavid du Colombier fmtprint(fmt, "\n");
214634e04225SDavid du Colombier switch(x->haveAttr){
214734e04225SDavid du Colombier case 1:
214834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
214934e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
215034e04225SDavid du Colombier fmtprint(fmt, "\n");
215134e04225SDavid du Colombier break;
215234e04225SDavid du Colombier }
215334e04225SDavid du Colombier break;
215434e04225SDavid du Colombier }
215534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirWcc");
215634e04225SDavid du Colombier nfs3WccPrint(fmt, &x->dirWcc);
215734e04225SDavid du Colombier fmtprint(fmt, "\n");
215834e04225SDavid du Colombier }
215934e04225SDavid du Colombier uint
nfs3RSymlinkSize(Nfs3RSymlink * x)216034e04225SDavid du Colombier nfs3RSymlinkSize(Nfs3RSymlink *x)
216134e04225SDavid du Colombier {
216234e04225SDavid du Colombier uint a;
216334e04225SDavid du Colombier USED(x);
216434e04225SDavid du Colombier a = 0 + 4;
216534e04225SDavid du Colombier switch(x->status){
216634e04225SDavid du Colombier case Nfs3Ok:
216734e04225SDavid du Colombier a = a + 4;
216834e04225SDavid du Colombier switch(x->haveHandle){
216934e04225SDavid du Colombier case 1:
217034e04225SDavid du Colombier a = a + nfs3HandleSize(&x->handle);
217134e04225SDavid du Colombier break;
217234e04225SDavid du Colombier }
217334e04225SDavid du Colombier a = a + 4;
217434e04225SDavid du Colombier switch(x->haveAttr){
217534e04225SDavid du Colombier case 1:
217634e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
217734e04225SDavid du Colombier break;
217834e04225SDavid du Colombier }
217934e04225SDavid du Colombier break;
218034e04225SDavid du Colombier }
218134e04225SDavid du Colombier a = a + nfs3WccSize(&x->dirWcc);
218234e04225SDavid du Colombier return a;
218334e04225SDavid du Colombier }
218434e04225SDavid du Colombier int
nfs3RSymlinkPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RSymlink * x)218534e04225SDavid du Colombier nfs3RSymlinkPack(uchar *a, uchar *ea, uchar **pa, Nfs3RSymlink *x)
218634e04225SDavid du Colombier {
218734e04225SDavid du Colombier int i;
218834e04225SDavid du Colombier
218934e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
219034e04225SDavid du Colombier switch(x->status){
219134e04225SDavid du Colombier case Nfs3Ok:
219234e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveHandle) < 0) goto Err;
219334e04225SDavid du Colombier switch(x->haveHandle){
219434e04225SDavid du Colombier case 1:
219534e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
219634e04225SDavid du Colombier break;
219734e04225SDavid du Colombier }
219834e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
219934e04225SDavid du Colombier switch(x->haveAttr){
220034e04225SDavid du Colombier case 1:
220134e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
220234e04225SDavid du Colombier break;
220334e04225SDavid du Colombier }
220434e04225SDavid du Colombier break;
220534e04225SDavid du Colombier }
220634e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->dirWcc) < 0) goto Err;
220734e04225SDavid du Colombier *pa = a;
220834e04225SDavid du Colombier return 0;
220934e04225SDavid du Colombier Err:
221034e04225SDavid du Colombier *pa = ea;
221134e04225SDavid du Colombier return -1;
221234e04225SDavid du Colombier }
221334e04225SDavid du Colombier int
nfs3RSymlinkUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RSymlink * x)221434e04225SDavid du Colombier nfs3RSymlinkUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RSymlink *x)
221534e04225SDavid du Colombier {
221634e04225SDavid du Colombier int i;
221734e04225SDavid du Colombier
221834e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
221934e04225SDavid du Colombier switch(x->status){
222034e04225SDavid du Colombier case Nfs3Ok:
222134e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveHandle) < 0) goto Err;
222234e04225SDavid du Colombier switch(x->haveHandle){
222334e04225SDavid du Colombier case 1:
222434e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
222534e04225SDavid du Colombier break;
222634e04225SDavid du Colombier }
222734e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
222834e04225SDavid du Colombier switch(x->haveAttr){
222934e04225SDavid du Colombier case 1:
223034e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
223134e04225SDavid du Colombier break;
223234e04225SDavid du Colombier }
223334e04225SDavid du Colombier break;
223434e04225SDavid du Colombier }
223534e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->dirWcc) < 0) goto Err;
223634e04225SDavid du Colombier *pa = a;
223734e04225SDavid du Colombier return 0;
223834e04225SDavid du Colombier Err:
223934e04225SDavid du Colombier *pa = ea;
224034e04225SDavid du Colombier return -1;
224134e04225SDavid du Colombier }
224234e04225SDavid du Colombier void
nfs3TMknodPrint(Fmt * fmt,Nfs3TMknod * x)224334e04225SDavid du Colombier nfs3TMknodPrint(Fmt *fmt, Nfs3TMknod *x)
224434e04225SDavid du Colombier {
224534e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TMknod");
224634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
224734e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
224834e04225SDavid du Colombier fmtprint(fmt, "\n");
224934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
225034e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
225134e04225SDavid du Colombier fmtprint(fmt, "\n");
225234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "type");
225334e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3FileTypeStr(x->type));
225434e04225SDavid du Colombier fmtprint(fmt, "\n");
225534e04225SDavid du Colombier switch(x->type){
225634e04225SDavid du Colombier case Nfs3FileChar:
225734e04225SDavid du Colombier case Nfs3FileBlock:
225834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
225934e04225SDavid du Colombier nfs3SetAttrPrint(fmt, &x->attr);
226034e04225SDavid du Colombier fmtprint(fmt, "\n");
226134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "major");
226234e04225SDavid du Colombier fmtprint(fmt, "%ud", x->major);
226334e04225SDavid du Colombier fmtprint(fmt, "\n");
226434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "minor");
226534e04225SDavid du Colombier fmtprint(fmt, "%ud", x->minor);
226634e04225SDavid du Colombier fmtprint(fmt, "\n");
226734e04225SDavid du Colombier break;
226834e04225SDavid du Colombier case Nfs3FileSocket:
226934e04225SDavid du Colombier case Nfs3FileFifo:
227034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
227134e04225SDavid du Colombier nfs3SetAttrPrint(fmt, &x->attr);
227234e04225SDavid du Colombier fmtprint(fmt, "\n");
227334e04225SDavid du Colombier break;
227434e04225SDavid du Colombier }
227534e04225SDavid du Colombier }
227634e04225SDavid du Colombier uint
nfs3TMknodSize(Nfs3TMknod * x)227734e04225SDavid du Colombier nfs3TMknodSize(Nfs3TMknod *x)
227834e04225SDavid du Colombier {
227934e04225SDavid du Colombier uint a;
228034e04225SDavid du Colombier USED(x);
228134e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name) + 4;
228234e04225SDavid du Colombier switch(x->type){
228334e04225SDavid du Colombier case Nfs3FileChar:
228434e04225SDavid du Colombier case Nfs3FileBlock:
228534e04225SDavid du Colombier a = a + nfs3SetAttrSize(&x->attr) + 4 + 4;
228634e04225SDavid du Colombier break;
228734e04225SDavid du Colombier case Nfs3FileSocket:
228834e04225SDavid du Colombier case Nfs3FileFifo:
228934e04225SDavid du Colombier a = a + nfs3SetAttrSize(&x->attr);
229034e04225SDavid du Colombier break;
229134e04225SDavid du Colombier }
229234e04225SDavid du Colombier return a;
229334e04225SDavid du Colombier }
229434e04225SDavid du Colombier int
nfs3TMknodPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TMknod * x)229534e04225SDavid du Colombier nfs3TMknodPack(uchar *a, uchar *ea, uchar **pa, Nfs3TMknod *x)
229634e04225SDavid du Colombier {
229734e04225SDavid du Colombier int i;
229834e04225SDavid du Colombier
229934e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
230034e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
230134e04225SDavid du Colombier if(i=x->type, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
230234e04225SDavid du Colombier switch(x->type){
230334e04225SDavid du Colombier case Nfs3FileChar:
230434e04225SDavid du Colombier case Nfs3FileBlock:
230534e04225SDavid du Colombier if(nfs3SetAttrPack(a, ea, &a, &x->attr) < 0) goto Err;
230634e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->major) < 0) goto Err;
230734e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->minor) < 0) goto Err;
230834e04225SDavid du Colombier break;
230934e04225SDavid du Colombier case Nfs3FileSocket:
231034e04225SDavid du Colombier case Nfs3FileFifo:
231134e04225SDavid du Colombier if(nfs3SetAttrPack(a, ea, &a, &x->attr) < 0) goto Err;
231234e04225SDavid du Colombier break;
231334e04225SDavid du Colombier }
231434e04225SDavid du Colombier *pa = a;
231534e04225SDavid du Colombier return 0;
231634e04225SDavid du Colombier Err:
231734e04225SDavid du Colombier *pa = ea;
231834e04225SDavid du Colombier return -1;
231934e04225SDavid du Colombier }
232034e04225SDavid du Colombier int
nfs3TMknodUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TMknod * x)232134e04225SDavid du Colombier nfs3TMknodUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TMknod *x)
232234e04225SDavid du Colombier {
232334e04225SDavid du Colombier int i;
232434e04225SDavid du Colombier
232534e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
232634e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
232734e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->type = i;
232834e04225SDavid du Colombier switch(x->type){
232934e04225SDavid du Colombier case Nfs3FileChar:
233034e04225SDavid du Colombier case Nfs3FileBlock:
233134e04225SDavid du Colombier if(nfs3SetAttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
233234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->major) < 0) goto Err;
233334e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->minor) < 0) goto Err;
233434e04225SDavid du Colombier break;
233534e04225SDavid du Colombier case Nfs3FileSocket:
233634e04225SDavid du Colombier case Nfs3FileFifo:
233734e04225SDavid du Colombier if(nfs3SetAttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
233834e04225SDavid du Colombier break;
233934e04225SDavid du Colombier }
234034e04225SDavid du Colombier *pa = a;
234134e04225SDavid du Colombier return 0;
234234e04225SDavid du Colombier Err:
234334e04225SDavid du Colombier *pa = ea;
234434e04225SDavid du Colombier return -1;
234534e04225SDavid du Colombier }
234634e04225SDavid du Colombier void
nfs3RMknodPrint(Fmt * fmt,Nfs3RMknod * x)234734e04225SDavid du Colombier nfs3RMknodPrint(Fmt *fmt, Nfs3RMknod *x)
234834e04225SDavid du Colombier {
234934e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RMknod");
235034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
235134e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
235234e04225SDavid du Colombier fmtprint(fmt, "\n");
235334e04225SDavid du Colombier switch(x->status){
235434e04225SDavid du Colombier case Nfs3Ok:
235534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveHandle");
235634e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveHandle);
235734e04225SDavid du Colombier fmtprint(fmt, "\n");
235834e04225SDavid du Colombier switch(x->haveHandle){
235934e04225SDavid du Colombier case 1:
236034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
236134e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
236234e04225SDavid du Colombier fmtprint(fmt, "\n");
236334e04225SDavid du Colombier break;
236434e04225SDavid du Colombier }
236534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
236634e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
236734e04225SDavid du Colombier fmtprint(fmt, "\n");
236834e04225SDavid du Colombier switch(x->haveAttr){
236934e04225SDavid du Colombier case 1:
237034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
237134e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
237234e04225SDavid du Colombier fmtprint(fmt, "\n");
237334e04225SDavid du Colombier break;
237434e04225SDavid du Colombier }
237534e04225SDavid du Colombier break;
237634e04225SDavid du Colombier }
237734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirWcc");
237834e04225SDavid du Colombier nfs3WccPrint(fmt, &x->dirWcc);
237934e04225SDavid du Colombier fmtprint(fmt, "\n");
238034e04225SDavid du Colombier }
238134e04225SDavid du Colombier uint
nfs3RMknodSize(Nfs3RMknod * x)238234e04225SDavid du Colombier nfs3RMknodSize(Nfs3RMknod *x)
238334e04225SDavid du Colombier {
238434e04225SDavid du Colombier uint a;
238534e04225SDavid du Colombier USED(x);
238634e04225SDavid du Colombier a = 0 + 4;
238734e04225SDavid du Colombier switch(x->status){
238834e04225SDavid du Colombier case Nfs3Ok:
238934e04225SDavid du Colombier a = a + 4;
239034e04225SDavid du Colombier switch(x->haveHandle){
239134e04225SDavid du Colombier case 1:
239234e04225SDavid du Colombier a = a + nfs3HandleSize(&x->handle);
239334e04225SDavid du Colombier break;
239434e04225SDavid du Colombier }
239534e04225SDavid du Colombier a = a + 4;
239634e04225SDavid du Colombier switch(x->haveAttr){
239734e04225SDavid du Colombier case 1:
239834e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
239934e04225SDavid du Colombier break;
240034e04225SDavid du Colombier }
240134e04225SDavid du Colombier break;
240234e04225SDavid du Colombier }
240334e04225SDavid du Colombier a = a + nfs3WccSize(&x->dirWcc);
240434e04225SDavid du Colombier return a;
240534e04225SDavid du Colombier }
240634e04225SDavid du Colombier int
nfs3RMknodPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RMknod * x)240734e04225SDavid du Colombier nfs3RMknodPack(uchar *a, uchar *ea, uchar **pa, Nfs3RMknod *x)
240834e04225SDavid du Colombier {
240934e04225SDavid du Colombier int i;
241034e04225SDavid du Colombier
241134e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
241234e04225SDavid du Colombier switch(x->status){
241334e04225SDavid du Colombier case Nfs3Ok:
241434e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveHandle) < 0) goto Err;
241534e04225SDavid du Colombier switch(x->haveHandle){
241634e04225SDavid du Colombier case 1:
241734e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
241834e04225SDavid du Colombier break;
241934e04225SDavid du Colombier }
242034e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
242134e04225SDavid du Colombier switch(x->haveAttr){
242234e04225SDavid du Colombier case 1:
242334e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
242434e04225SDavid du Colombier break;
242534e04225SDavid du Colombier }
242634e04225SDavid du Colombier break;
242734e04225SDavid du Colombier }
242834e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->dirWcc) < 0) goto Err;
242934e04225SDavid du Colombier *pa = a;
243034e04225SDavid du Colombier return 0;
243134e04225SDavid du Colombier Err:
243234e04225SDavid du Colombier *pa = ea;
243334e04225SDavid du Colombier return -1;
243434e04225SDavid du Colombier }
243534e04225SDavid du Colombier int
nfs3RMknodUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RMknod * x)243634e04225SDavid du Colombier nfs3RMknodUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RMknod *x)
243734e04225SDavid du Colombier {
243834e04225SDavid du Colombier int i;
243934e04225SDavid du Colombier
244034e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
244134e04225SDavid du Colombier switch(x->status){
244234e04225SDavid du Colombier case Nfs3Ok:
244334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveHandle) < 0) goto Err;
244434e04225SDavid du Colombier switch(x->haveHandle){
244534e04225SDavid du Colombier case 1:
244634e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
244734e04225SDavid du Colombier break;
244834e04225SDavid du Colombier }
244934e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
245034e04225SDavid du Colombier switch(x->haveAttr){
245134e04225SDavid du Colombier case 1:
245234e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
245334e04225SDavid du Colombier break;
245434e04225SDavid du Colombier }
245534e04225SDavid du Colombier break;
245634e04225SDavid du Colombier }
245734e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->dirWcc) < 0) goto Err;
245834e04225SDavid du Colombier *pa = a;
245934e04225SDavid du Colombier return 0;
246034e04225SDavid du Colombier Err:
246134e04225SDavid du Colombier *pa = ea;
246234e04225SDavid du Colombier return -1;
246334e04225SDavid du Colombier }
246434e04225SDavid du Colombier void
nfs3TRemovePrint(Fmt * fmt,Nfs3TRemove * x)246534e04225SDavid du Colombier nfs3TRemovePrint(Fmt *fmt, Nfs3TRemove *x)
246634e04225SDavid du Colombier {
246734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TRemove");
246834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
246934e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
247034e04225SDavid du Colombier fmtprint(fmt, "\n");
247134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
247234e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
247334e04225SDavid du Colombier fmtprint(fmt, "\n");
247434e04225SDavid du Colombier }
247534e04225SDavid du Colombier uint
nfs3TRemoveSize(Nfs3TRemove * x)247634e04225SDavid du Colombier nfs3TRemoveSize(Nfs3TRemove *x)
247734e04225SDavid du Colombier {
247834e04225SDavid du Colombier uint a;
247934e04225SDavid du Colombier USED(x);
248034e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name);
248134e04225SDavid du Colombier return a;
248234e04225SDavid du Colombier }
248334e04225SDavid du Colombier int
nfs3TRemovePack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRemove * x)248434e04225SDavid du Colombier nfs3TRemovePack(uchar *a, uchar *ea, uchar **pa, Nfs3TRemove *x)
248534e04225SDavid du Colombier {
248634e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
248734e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
248834e04225SDavid du Colombier *pa = a;
248934e04225SDavid du Colombier return 0;
249034e04225SDavid du Colombier Err:
249134e04225SDavid du Colombier *pa = ea;
249234e04225SDavid du Colombier return -1;
249334e04225SDavid du Colombier }
249434e04225SDavid du Colombier int
nfs3TRemoveUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRemove * x)249534e04225SDavid du Colombier nfs3TRemoveUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TRemove *x)
249634e04225SDavid du Colombier {
249734e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
249834e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
249934e04225SDavid du Colombier *pa = a;
250034e04225SDavid du Colombier return 0;
250134e04225SDavid du Colombier Err:
250234e04225SDavid du Colombier *pa = ea;
250334e04225SDavid du Colombier return -1;
250434e04225SDavid du Colombier }
250534e04225SDavid du Colombier void
nfs3RRemovePrint(Fmt * fmt,Nfs3RRemove * x)250634e04225SDavid du Colombier nfs3RRemovePrint(Fmt *fmt, Nfs3RRemove *x)
250734e04225SDavid du Colombier {
250834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RRemove");
250934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
251034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
251134e04225SDavid du Colombier fmtprint(fmt, "\n");
251234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "wcc");
251334e04225SDavid du Colombier nfs3WccPrint(fmt, &x->wcc);
251434e04225SDavid du Colombier fmtprint(fmt, "\n");
251534e04225SDavid du Colombier }
251634e04225SDavid du Colombier uint
nfs3RRemoveSize(Nfs3RRemove * x)251734e04225SDavid du Colombier nfs3RRemoveSize(Nfs3RRemove *x)
251834e04225SDavid du Colombier {
251934e04225SDavid du Colombier uint a;
252034e04225SDavid du Colombier USED(x);
252134e04225SDavid du Colombier a = 0 + 4 + nfs3WccSize(&x->wcc);
252234e04225SDavid du Colombier return a;
252334e04225SDavid du Colombier }
252434e04225SDavid du Colombier int
nfs3RRemovePack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRemove * x)252534e04225SDavid du Colombier nfs3RRemovePack(uchar *a, uchar *ea, uchar **pa, Nfs3RRemove *x)
252634e04225SDavid du Colombier {
252734e04225SDavid du Colombier int i;
252834e04225SDavid du Colombier
252934e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
253034e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->wcc) < 0) goto Err;
253134e04225SDavid du Colombier *pa = a;
253234e04225SDavid du Colombier return 0;
253334e04225SDavid du Colombier Err:
253434e04225SDavid du Colombier *pa = ea;
253534e04225SDavid du Colombier return -1;
253634e04225SDavid du Colombier }
253734e04225SDavid du Colombier int
nfs3RRemoveUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRemove * x)253834e04225SDavid du Colombier nfs3RRemoveUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RRemove *x)
253934e04225SDavid du Colombier {
254034e04225SDavid du Colombier int i;
254134e04225SDavid du Colombier
254234e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
254334e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->wcc) < 0) goto Err;
254434e04225SDavid du Colombier *pa = a;
254534e04225SDavid du Colombier return 0;
254634e04225SDavid du Colombier Err:
254734e04225SDavid du Colombier *pa = ea;
254834e04225SDavid du Colombier return -1;
254934e04225SDavid du Colombier }
255034e04225SDavid du Colombier void
nfs3TRmdirPrint(Fmt * fmt,Nfs3TRmdir * x)255134e04225SDavid du Colombier nfs3TRmdirPrint(Fmt *fmt, Nfs3TRmdir *x)
255234e04225SDavid du Colombier {
255334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TRmdir");
255434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
255534e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
255634e04225SDavid du Colombier fmtprint(fmt, "\n");
255734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
255834e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
255934e04225SDavid du Colombier fmtprint(fmt, "\n");
256034e04225SDavid du Colombier }
256134e04225SDavid du Colombier uint
nfs3TRmdirSize(Nfs3TRmdir * x)256234e04225SDavid du Colombier nfs3TRmdirSize(Nfs3TRmdir *x)
256334e04225SDavid du Colombier {
256434e04225SDavid du Colombier uint a;
256534e04225SDavid du Colombier USED(x);
256634e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + sunStringSize(x->name);
256734e04225SDavid du Colombier return a;
256834e04225SDavid du Colombier }
256934e04225SDavid du Colombier int
nfs3TRmdirPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRmdir * x)257034e04225SDavid du Colombier nfs3TRmdirPack(uchar *a, uchar *ea, uchar **pa, Nfs3TRmdir *x)
257134e04225SDavid du Colombier {
257234e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
257334e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
257434e04225SDavid du Colombier *pa = a;
257534e04225SDavid du Colombier return 0;
257634e04225SDavid du Colombier Err:
257734e04225SDavid du Colombier *pa = ea;
257834e04225SDavid du Colombier return -1;
257934e04225SDavid du Colombier }
258034e04225SDavid du Colombier int
nfs3TRmdirUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRmdir * x)258134e04225SDavid du Colombier nfs3TRmdirUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TRmdir *x)
258234e04225SDavid du Colombier {
258334e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
258434e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
258534e04225SDavid du Colombier *pa = a;
258634e04225SDavid du Colombier return 0;
258734e04225SDavid du Colombier Err:
258834e04225SDavid du Colombier *pa = ea;
258934e04225SDavid du Colombier return -1;
259034e04225SDavid du Colombier }
259134e04225SDavid du Colombier void
nfs3RRmdirPrint(Fmt * fmt,Nfs3RRmdir * x)259234e04225SDavid du Colombier nfs3RRmdirPrint(Fmt *fmt, Nfs3RRmdir *x)
259334e04225SDavid du Colombier {
259434e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RRmdir");
259534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
259634e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
259734e04225SDavid du Colombier fmtprint(fmt, "\n");
259834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "wcc");
259934e04225SDavid du Colombier nfs3WccPrint(fmt, &x->wcc);
260034e04225SDavid du Colombier fmtprint(fmt, "\n");
260134e04225SDavid du Colombier }
260234e04225SDavid du Colombier uint
nfs3RRmdirSize(Nfs3RRmdir * x)260334e04225SDavid du Colombier nfs3RRmdirSize(Nfs3RRmdir *x)
260434e04225SDavid du Colombier {
260534e04225SDavid du Colombier uint a;
260634e04225SDavid du Colombier USED(x);
260734e04225SDavid du Colombier a = 0 + 4 + nfs3WccSize(&x->wcc);
260834e04225SDavid du Colombier return a;
260934e04225SDavid du Colombier }
261034e04225SDavid du Colombier int
nfs3RRmdirPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRmdir * x)261134e04225SDavid du Colombier nfs3RRmdirPack(uchar *a, uchar *ea, uchar **pa, Nfs3RRmdir *x)
261234e04225SDavid du Colombier {
261334e04225SDavid du Colombier int i;
261434e04225SDavid du Colombier
261534e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
261634e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->wcc) < 0) goto Err;
261734e04225SDavid du Colombier *pa = a;
261834e04225SDavid du Colombier return 0;
261934e04225SDavid du Colombier Err:
262034e04225SDavid du Colombier *pa = ea;
262134e04225SDavid du Colombier return -1;
262234e04225SDavid du Colombier }
262334e04225SDavid du Colombier int
nfs3RRmdirUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRmdir * x)262434e04225SDavid du Colombier nfs3RRmdirUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RRmdir *x)
262534e04225SDavid du Colombier {
262634e04225SDavid du Colombier int i;
262734e04225SDavid du Colombier
262834e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
262934e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->wcc) < 0) goto Err;
263034e04225SDavid du Colombier *pa = a;
263134e04225SDavid du Colombier return 0;
263234e04225SDavid du Colombier Err:
263334e04225SDavid du Colombier *pa = ea;
263434e04225SDavid du Colombier return -1;
263534e04225SDavid du Colombier }
263634e04225SDavid du Colombier void
nfs3TRenamePrint(Fmt * fmt,Nfs3TRename * x)263734e04225SDavid du Colombier nfs3TRenamePrint(Fmt *fmt, Nfs3TRename *x)
263834e04225SDavid du Colombier {
263934e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TRename");
264034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "from");
264134e04225SDavid du Colombier fmtprint(fmt, "{\n");
264234e04225SDavid du Colombier fmtprint(fmt, "\t\t%s=", "handle");
264334e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->from.handle);
264434e04225SDavid du Colombier fmtprint(fmt, "\n");
264534e04225SDavid du Colombier fmtprint(fmt, "\t\t%s=", "name");
264634e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->from.name);
264734e04225SDavid du Colombier fmtprint(fmt, "\n");
264834e04225SDavid du Colombier fmtprint(fmt, "\t}");
264934e04225SDavid du Colombier fmtprint(fmt, "\n");
265034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "to");
265134e04225SDavid du Colombier fmtprint(fmt, "{\n");
265234e04225SDavid du Colombier fmtprint(fmt, "\t\t%s=", "handle");
265334e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->to.handle);
265434e04225SDavid du Colombier fmtprint(fmt, "\n");
265534e04225SDavid du Colombier fmtprint(fmt, "\t\t%s=", "name");
265634e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->to.name);
265734e04225SDavid du Colombier fmtprint(fmt, "\n");
265834e04225SDavid du Colombier fmtprint(fmt, "\t}");
265934e04225SDavid du Colombier fmtprint(fmt, "\n");
266034e04225SDavid du Colombier }
266134e04225SDavid du Colombier uint
nfs3TRenameSize(Nfs3TRename * x)266234e04225SDavid du Colombier nfs3TRenameSize(Nfs3TRename *x)
266334e04225SDavid du Colombier {
266434e04225SDavid du Colombier uint a;
266534e04225SDavid du Colombier USED(x);
266634e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->from.handle) + sunStringSize(x->from.name) + nfs3HandleSize(&x->to.handle) + sunStringSize(x->to.name);
266734e04225SDavid du Colombier return a;
266834e04225SDavid du Colombier }
266934e04225SDavid du Colombier int
nfs3TRenamePack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRename * x)267034e04225SDavid du Colombier nfs3TRenamePack(uchar *a, uchar *ea, uchar **pa, Nfs3TRename *x)
267134e04225SDavid du Colombier {
267234e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->from.handle) < 0) goto Err;
267334e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->from.name, -1) < 0) goto Err;
267434e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->to.handle) < 0) goto Err;
267534e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->to.name, -1) < 0) goto Err;
267634e04225SDavid du Colombier *pa = a;
267734e04225SDavid du Colombier return 0;
267834e04225SDavid du Colombier Err:
267934e04225SDavid du Colombier *pa = ea;
268034e04225SDavid du Colombier return -1;
268134e04225SDavid du Colombier }
268234e04225SDavid du Colombier int
nfs3TRenameUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TRename * x)268334e04225SDavid du Colombier nfs3TRenameUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TRename *x)
268434e04225SDavid du Colombier {
268534e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->from.handle) < 0) goto Err;
268634e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->from.name, -1) < 0) goto Err;
268734e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->to.handle) < 0) goto Err;
268834e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->to.name, -1) < 0) goto Err;
268934e04225SDavid du Colombier *pa = a;
269034e04225SDavid du Colombier return 0;
269134e04225SDavid du Colombier Err:
269234e04225SDavid du Colombier *pa = ea;
269334e04225SDavid du Colombier return -1;
269434e04225SDavid du Colombier }
269534e04225SDavid du Colombier void
nfs3RRenamePrint(Fmt * fmt,Nfs3RRename * x)269634e04225SDavid du Colombier nfs3RRenamePrint(Fmt *fmt, Nfs3RRename *x)
269734e04225SDavid du Colombier {
269834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RRename");
269934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
270034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
270134e04225SDavid du Colombier fmtprint(fmt, "\n");
270234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "fromWcc");
270334e04225SDavid du Colombier nfs3WccPrint(fmt, &x->fromWcc);
270434e04225SDavid du Colombier fmtprint(fmt, "\n");
270534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "toWcc");
270634e04225SDavid du Colombier nfs3WccPrint(fmt, &x->toWcc);
270734e04225SDavid du Colombier fmtprint(fmt, "\n");
270834e04225SDavid du Colombier }
270934e04225SDavid du Colombier uint
nfs3RRenameSize(Nfs3RRename * x)271034e04225SDavid du Colombier nfs3RRenameSize(Nfs3RRename *x)
271134e04225SDavid du Colombier {
271234e04225SDavid du Colombier uint a;
271334e04225SDavid du Colombier USED(x);
271434e04225SDavid du Colombier a = 0 + 4 + nfs3WccSize(&x->fromWcc) + nfs3WccSize(&x->toWcc);
271534e04225SDavid du Colombier return a;
271634e04225SDavid du Colombier }
271734e04225SDavid du Colombier int
nfs3RRenamePack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRename * x)271834e04225SDavid du Colombier nfs3RRenamePack(uchar *a, uchar *ea, uchar **pa, Nfs3RRename *x)
271934e04225SDavid du Colombier {
272034e04225SDavid du Colombier int i;
272134e04225SDavid du Colombier
272234e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
272334e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->fromWcc) < 0) goto Err;
272434e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->toWcc) < 0) goto Err;
272534e04225SDavid du Colombier *pa = a;
272634e04225SDavid du Colombier return 0;
272734e04225SDavid du Colombier Err:
272834e04225SDavid du Colombier *pa = ea;
272934e04225SDavid du Colombier return -1;
273034e04225SDavid du Colombier }
273134e04225SDavid du Colombier int
nfs3RRenameUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RRename * x)273234e04225SDavid du Colombier nfs3RRenameUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RRename *x)
273334e04225SDavid du Colombier {
273434e04225SDavid du Colombier int i;
273534e04225SDavid du Colombier
273634e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
273734e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->fromWcc) < 0) goto Err;
273834e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->toWcc) < 0) goto Err;
273934e04225SDavid du Colombier *pa = a;
274034e04225SDavid du Colombier return 0;
274134e04225SDavid du Colombier Err:
274234e04225SDavid du Colombier *pa = ea;
274334e04225SDavid du Colombier return -1;
274434e04225SDavid du Colombier }
274534e04225SDavid du Colombier void
nfs3TLinkPrint(Fmt * fmt,Nfs3TLink * x)274634e04225SDavid du Colombier nfs3TLinkPrint(Fmt *fmt, Nfs3TLink *x)
274734e04225SDavid du Colombier {
274834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TLink");
274934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
275034e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
275134e04225SDavid du Colombier fmtprint(fmt, "\n");
275234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "link");
275334e04225SDavid du Colombier fmtprint(fmt, "{\n");
275434e04225SDavid du Colombier fmtprint(fmt, "\t\t%s=", "handle");
275534e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->link.handle);
275634e04225SDavid du Colombier fmtprint(fmt, "\n");
275734e04225SDavid du Colombier fmtprint(fmt, "\t\t%s=", "name");
275834e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->link.name);
275934e04225SDavid du Colombier fmtprint(fmt, "\n");
276034e04225SDavid du Colombier fmtprint(fmt, "\t}");
276134e04225SDavid du Colombier fmtprint(fmt, "\n");
276234e04225SDavid du Colombier }
276334e04225SDavid du Colombier uint
nfs3TLinkSize(Nfs3TLink * x)276434e04225SDavid du Colombier nfs3TLinkSize(Nfs3TLink *x)
276534e04225SDavid du Colombier {
276634e04225SDavid du Colombier uint a;
276734e04225SDavid du Colombier USED(x);
276834e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + nfs3HandleSize(&x->link.handle) + sunStringSize(x->link.name);
276934e04225SDavid du Colombier return a;
277034e04225SDavid du Colombier }
277134e04225SDavid du Colombier int
nfs3TLinkPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TLink * x)277234e04225SDavid du Colombier nfs3TLinkPack(uchar *a, uchar *ea, uchar **pa, Nfs3TLink *x)
277334e04225SDavid du Colombier {
277434e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
277534e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->link.handle) < 0) goto Err;
277634e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->link.name, -1) < 0) goto Err;
277734e04225SDavid du Colombier *pa = a;
277834e04225SDavid du Colombier return 0;
277934e04225SDavid du Colombier Err:
278034e04225SDavid du Colombier *pa = ea;
278134e04225SDavid du Colombier return -1;
278234e04225SDavid du Colombier }
278334e04225SDavid du Colombier int
nfs3TLinkUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TLink * x)278434e04225SDavid du Colombier nfs3TLinkUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TLink *x)
278534e04225SDavid du Colombier {
278634e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
278734e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->link.handle) < 0) goto Err;
278834e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->link.name, -1) < 0) goto Err;
278934e04225SDavid du Colombier *pa = a;
279034e04225SDavid du Colombier return 0;
279134e04225SDavid du Colombier Err:
279234e04225SDavid du Colombier *pa = ea;
279334e04225SDavid du Colombier return -1;
279434e04225SDavid du Colombier }
279534e04225SDavid du Colombier void
nfs3RLinkPrint(Fmt * fmt,Nfs3RLink * x)279634e04225SDavid du Colombier nfs3RLinkPrint(Fmt *fmt, Nfs3RLink *x)
279734e04225SDavid du Colombier {
279834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RLink");
279934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
280034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
280134e04225SDavid du Colombier fmtprint(fmt, "\n");
280234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
280334e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
280434e04225SDavid du Colombier fmtprint(fmt, "\n");
280534e04225SDavid du Colombier switch(x->haveAttr){
280634e04225SDavid du Colombier case 1:
280734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
280834e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
280934e04225SDavid du Colombier fmtprint(fmt, "\n");
281034e04225SDavid du Colombier break;
281134e04225SDavid du Colombier }
281234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirWcc");
281334e04225SDavid du Colombier nfs3WccPrint(fmt, &x->dirWcc);
281434e04225SDavid du Colombier fmtprint(fmt, "\n");
281534e04225SDavid du Colombier }
281634e04225SDavid du Colombier uint
nfs3RLinkSize(Nfs3RLink * x)281734e04225SDavid du Colombier nfs3RLinkSize(Nfs3RLink *x)
281834e04225SDavid du Colombier {
281934e04225SDavid du Colombier uint a;
282034e04225SDavid du Colombier USED(x);
282134e04225SDavid du Colombier a = 0 + 4 + 4;
282234e04225SDavid du Colombier switch(x->haveAttr){
282334e04225SDavid du Colombier case 1:
282434e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
282534e04225SDavid du Colombier break;
282634e04225SDavid du Colombier }
282734e04225SDavid du Colombier a = a + nfs3WccSize(&x->dirWcc);
282834e04225SDavid du Colombier return a;
282934e04225SDavid du Colombier }
283034e04225SDavid du Colombier int
nfs3RLinkPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RLink * x)283134e04225SDavid du Colombier nfs3RLinkPack(uchar *a, uchar *ea, uchar **pa, Nfs3RLink *x)
283234e04225SDavid du Colombier {
283334e04225SDavid du Colombier int i;
283434e04225SDavid du Colombier
283534e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
283634e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
283734e04225SDavid du Colombier switch(x->haveAttr){
283834e04225SDavid du Colombier case 1:
283934e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
284034e04225SDavid du Colombier break;
284134e04225SDavid du Colombier }
284234e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->dirWcc) < 0) goto Err;
284334e04225SDavid du Colombier *pa = a;
284434e04225SDavid du Colombier return 0;
284534e04225SDavid du Colombier Err:
284634e04225SDavid du Colombier *pa = ea;
284734e04225SDavid du Colombier return -1;
284834e04225SDavid du Colombier }
284934e04225SDavid du Colombier int
nfs3RLinkUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RLink * x)285034e04225SDavid du Colombier nfs3RLinkUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RLink *x)
285134e04225SDavid du Colombier {
285234e04225SDavid du Colombier int i;
285334e04225SDavid du Colombier
285434e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
285534e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
285634e04225SDavid du Colombier switch(x->haveAttr){
285734e04225SDavid du Colombier case 1:
285834e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
285934e04225SDavid du Colombier break;
286034e04225SDavid du Colombier }
286134e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->dirWcc) < 0) goto Err;
286234e04225SDavid du Colombier *pa = a;
286334e04225SDavid du Colombier return 0;
286434e04225SDavid du Colombier Err:
286534e04225SDavid du Colombier *pa = ea;
286634e04225SDavid du Colombier return -1;
286734e04225SDavid du Colombier }
286834e04225SDavid du Colombier void
nfs3TReadDirPrint(Fmt * fmt,Nfs3TReadDir * x)286934e04225SDavid du Colombier nfs3TReadDirPrint(Fmt *fmt, Nfs3TReadDir *x)
287034e04225SDavid du Colombier {
287134e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TReadDir");
287234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
287334e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
287434e04225SDavid du Colombier fmtprint(fmt, "\n");
287534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "cookie");
287634e04225SDavid du Colombier fmtprint(fmt, "%llud", x->cookie);
287734e04225SDavid du Colombier fmtprint(fmt, "\n");
287834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
287934e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3CookieVerfSize, x->verf);
288034e04225SDavid du Colombier fmtprint(fmt, "\n");
288134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "count");
288234e04225SDavid du Colombier fmtprint(fmt, "%ud", x->count);
288334e04225SDavid du Colombier fmtprint(fmt, "\n");
288434e04225SDavid du Colombier }
288534e04225SDavid du Colombier uint
nfs3TReadDirSize(Nfs3TReadDir * x)288634e04225SDavid du Colombier nfs3TReadDirSize(Nfs3TReadDir *x)
288734e04225SDavid du Colombier {
288834e04225SDavid du Colombier uint a;
288934e04225SDavid du Colombier USED(x);
289034e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + 8 + Nfs3CookieVerfSize + 4;
289134e04225SDavid du Colombier return a;
289234e04225SDavid du Colombier }
289334e04225SDavid du Colombier int
nfs3TReadDirPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TReadDir * x)289434e04225SDavid du Colombier nfs3TReadDirPack(uchar *a, uchar *ea, uchar **pa, Nfs3TReadDir *x)
289534e04225SDavid du Colombier {
289634e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
289734e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->cookie) < 0) goto Err;
289834e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
289934e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->count) < 0) goto Err;
290034e04225SDavid du Colombier *pa = a;
290134e04225SDavid du Colombier return 0;
290234e04225SDavid du Colombier Err:
290334e04225SDavid du Colombier *pa = ea;
290434e04225SDavid du Colombier return -1;
290534e04225SDavid du Colombier }
290634e04225SDavid du Colombier int
nfs3TReadDirUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TReadDir * x)290734e04225SDavid du Colombier nfs3TReadDirUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TReadDir *x)
290834e04225SDavid du Colombier {
290934e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
291034e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->cookie) < 0) goto Err;
291134e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
291234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->count) < 0) goto Err;
291334e04225SDavid du Colombier *pa = a;
291434e04225SDavid du Colombier return 0;
291534e04225SDavid du Colombier Err:
291634e04225SDavid du Colombier *pa = ea;
291734e04225SDavid du Colombier return -1;
291834e04225SDavid du Colombier }
291934e04225SDavid du Colombier void
nfs3EntryPrint(Fmt * fmt,Nfs3Entry * x)292034e04225SDavid du Colombier nfs3EntryPrint(Fmt *fmt, Nfs3Entry *x)
292134e04225SDavid du Colombier {
292234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3Entry");
292334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "fileid");
292434e04225SDavid du Colombier fmtprint(fmt, "%llud", x->fileid);
292534e04225SDavid du Colombier fmtprint(fmt, "\n");
292634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
292734e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
292834e04225SDavid du Colombier fmtprint(fmt, "\n");
292934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "cookie");
293034e04225SDavid du Colombier fmtprint(fmt, "%llud", x->cookie);
293134e04225SDavid du Colombier fmtprint(fmt, "\n");
293234e04225SDavid du Colombier }
293334e04225SDavid du Colombier uint
nfs3EntrySize(Nfs3Entry * x)293434e04225SDavid du Colombier nfs3EntrySize(Nfs3Entry *x)
293534e04225SDavid du Colombier {
293634e04225SDavid du Colombier uint a;
293734e04225SDavid du Colombier USED(x);
293834e04225SDavid du Colombier a = 0 + 4 + 8 + sunStringSize(x->name) + 8;
293934e04225SDavid du Colombier return a;
294034e04225SDavid du Colombier }
294134e04225SDavid du Colombier int
nfs3EntryPack(uchar * a,uchar * ea,uchar ** pa,Nfs3Entry * x)294234e04225SDavid du Colombier nfs3EntryPack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
294334e04225SDavid du Colombier {
294434e04225SDavid du Colombier u1int one;
294534e04225SDavid du Colombier
294634e04225SDavid du Colombier one = 1;
294734e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &one) < 0) goto Err;
294834e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->fileid) < 0) goto Err;
294934e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
295034e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->cookie) < 0) goto Err;
295134e04225SDavid du Colombier *pa = a;
295234e04225SDavid du Colombier return 0;
295334e04225SDavid du Colombier Err:
295434e04225SDavid du Colombier *pa = ea;
295534e04225SDavid du Colombier return -1;
295634e04225SDavid du Colombier }
295734e04225SDavid du Colombier int
nfs3EntryUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3Entry * x)295834e04225SDavid du Colombier nfs3EntryUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
295934e04225SDavid du Colombier {
296034e04225SDavid du Colombier u1int one;
296134e04225SDavid du Colombier
296234e04225SDavid du Colombier memset(x, 0, sizeof *x);
296334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &one) < 0 || one != 1) goto Err;
296434e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->fileid) < 0) goto Err;
296534e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
296634e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->cookie) < 0) goto Err;
296734e04225SDavid du Colombier *pa = a;
296834e04225SDavid du Colombier return 0;
296934e04225SDavid du Colombier Err:
297034e04225SDavid du Colombier *pa = ea;
297134e04225SDavid du Colombier return -1;
297234e04225SDavid du Colombier }
297334e04225SDavid du Colombier void
nfs3RReadDirPrint(Fmt * fmt,Nfs3RReadDir * x)297434e04225SDavid du Colombier nfs3RReadDirPrint(Fmt *fmt, Nfs3RReadDir *x)
297534e04225SDavid du Colombier {
297634e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RReadDir");
297734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
297834e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
297934e04225SDavid du Colombier fmtprint(fmt, "\n");
298034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
298134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
298234e04225SDavid du Colombier fmtprint(fmt, "\n");
298334e04225SDavid du Colombier switch(x->haveAttr){
298434e04225SDavid du Colombier case 1:
298534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
298634e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
298734e04225SDavid du Colombier fmtprint(fmt, "\n");
298834e04225SDavid du Colombier break;
298934e04225SDavid du Colombier }
299034e04225SDavid du Colombier switch(x->status){
299134e04225SDavid du Colombier case Nfs3Ok:
299234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
299334e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3CookieVerfSize, x->verf);
299434e04225SDavid du Colombier fmtprint(fmt, "\n");
299534e04225SDavid du Colombier fmtprint(fmt, "\t%s=%ud\n", "count", x->count);
299634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "eof");
299734e04225SDavid du Colombier fmtprint(fmt, "%d", x->eof);
299834e04225SDavid du Colombier fmtprint(fmt, "\n");
299934e04225SDavid du Colombier break;
300034e04225SDavid du Colombier }
300134e04225SDavid du Colombier }
300234e04225SDavid du Colombier uint
nfs3RReadDirSize(Nfs3RReadDir * x)300334e04225SDavid du Colombier nfs3RReadDirSize(Nfs3RReadDir *x)
300434e04225SDavid du Colombier {
300534e04225SDavid du Colombier uint a;
300634e04225SDavid du Colombier USED(x);
300734e04225SDavid du Colombier a = 0 + 4 + 4;
300834e04225SDavid du Colombier switch(x->haveAttr){
300934e04225SDavid du Colombier case 1:
301034e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
301134e04225SDavid du Colombier break;
301234e04225SDavid du Colombier }
301334e04225SDavid du Colombier switch(x->status){
301434e04225SDavid du Colombier case Nfs3Ok:
301534e04225SDavid du Colombier a = a + Nfs3CookieVerfSize;
301634e04225SDavid du Colombier a += x->count;
301734e04225SDavid du Colombier a += 4 + 4;
301834e04225SDavid du Colombier break;
301934e04225SDavid du Colombier }
302034e04225SDavid du Colombier return a;
302134e04225SDavid du Colombier }
302234e04225SDavid du Colombier int
nfs3RReadDirPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RReadDir * x)302334e04225SDavid du Colombier nfs3RReadDirPack(uchar *a, uchar *ea, uchar **pa, Nfs3RReadDir *x)
302434e04225SDavid du Colombier {
302534e04225SDavid du Colombier int i;
302634e04225SDavid du Colombier u1int zero;
302734e04225SDavid du Colombier
302834e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
302934e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
303034e04225SDavid du Colombier switch(x->haveAttr){
303134e04225SDavid du Colombier case 1:
303234e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
303334e04225SDavid du Colombier break;
303434e04225SDavid du Colombier }
303534e04225SDavid du Colombier switch(x->status){
303634e04225SDavid du Colombier case Nfs3Ok:
303734e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
303834e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->data, x->count) < 0) goto Err;
303934e04225SDavid du Colombier zero = 0;
304034e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &zero) < 0) goto Err;
304134e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->eof) < 0) goto Err;
304234e04225SDavid du Colombier break;
304334e04225SDavid du Colombier }
304434e04225SDavid du Colombier *pa = a;
304534e04225SDavid du Colombier return 0;
304634e04225SDavid du Colombier Err:
304734e04225SDavid du Colombier *pa = ea;
304834e04225SDavid du Colombier return -1;
304934e04225SDavid du Colombier }
305034e04225SDavid du Colombier static int
countEntry(uchar * a,uchar * ea,uchar ** pa,u32int * n)305134e04225SDavid du Colombier countEntry(uchar *a, uchar *ea, uchar **pa, u32int *n)
305234e04225SDavid du Colombier {
305334e04225SDavid du Colombier uchar *oa;
305434e04225SDavid du Colombier u64int u64;
305534e04225SDavid du Colombier u32int u32;
305634e04225SDavid du Colombier u1int u1;
305734e04225SDavid du Colombier
305834e04225SDavid du Colombier oa = a;
305934e04225SDavid du Colombier for(;;){
306034e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &u1) < 0)
306134e04225SDavid du Colombier return -1;
306234e04225SDavid du Colombier if(u1 == 0)
306334e04225SDavid du Colombier break;
306434e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &u64) < 0
306534e04225SDavid du Colombier || sunUint32Unpack(a, ea, &a, &u32) < 0)
306634e04225SDavid du Colombier return -1;
306734e04225SDavid du Colombier a += (u32+3)&~3;
306834e04225SDavid du Colombier if(a >= ea)
306934e04225SDavid du Colombier return -1;
307034e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &u64) < 0)
307134e04225SDavid du Colombier return -1;
307234e04225SDavid du Colombier }
307334e04225SDavid du Colombier *n = (a-4) - oa;
307434e04225SDavid du Colombier *pa = a;
307534e04225SDavid du Colombier return 0;
307634e04225SDavid du Colombier }
307734e04225SDavid du Colombier int
nfs3RReadDirUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RReadDir * x)307834e04225SDavid du Colombier nfs3RReadDirUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RReadDir *x)
307934e04225SDavid du Colombier {
308034e04225SDavid du Colombier int i;
308134e04225SDavid du Colombier
308234e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
308334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
308434e04225SDavid du Colombier switch(x->haveAttr){
308534e04225SDavid du Colombier case 1:
308634e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
308734e04225SDavid du Colombier break;
308834e04225SDavid du Colombier }
308934e04225SDavid du Colombier if(x->status == Nfs3Ok){
309034e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
309134e04225SDavid du Colombier x->data = a;
309234e04225SDavid du Colombier if(countEntry(a, ea, &a, &x->count) < 0) goto Err;
309334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->eof) < 0) goto Err;
309434e04225SDavid du Colombier }
309534e04225SDavid du Colombier *pa = a;
309634e04225SDavid du Colombier return 0;
309734e04225SDavid du Colombier Err:
309834e04225SDavid du Colombier *pa = ea;
309934e04225SDavid du Colombier return -1;
310034e04225SDavid du Colombier }
310134e04225SDavid du Colombier void
nfs3TReadDirPlusPrint(Fmt * fmt,Nfs3TReadDirPlus * x)310234e04225SDavid du Colombier nfs3TReadDirPlusPrint(Fmt *fmt, Nfs3TReadDirPlus *x)
310334e04225SDavid du Colombier {
310434e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TReadDirPlus");
310534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
310634e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
310734e04225SDavid du Colombier fmtprint(fmt, "\n");
310834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "cookie");
310934e04225SDavid du Colombier fmtprint(fmt, "%llud", x->cookie);
311034e04225SDavid du Colombier fmtprint(fmt, "\n");
311134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
311234e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3CookieVerfSize, x->verf);
311334e04225SDavid du Colombier fmtprint(fmt, "\n");
311434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "dirCount");
311534e04225SDavid du Colombier fmtprint(fmt, "%ud", x->dirCount);
311634e04225SDavid du Colombier fmtprint(fmt, "\n");
311734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "maxCount");
311834e04225SDavid du Colombier fmtprint(fmt, "%ud", x->maxCount);
311934e04225SDavid du Colombier fmtprint(fmt, "\n");
312034e04225SDavid du Colombier }
312134e04225SDavid du Colombier uint
nfs3TReadDirPlusSize(Nfs3TReadDirPlus * x)312234e04225SDavid du Colombier nfs3TReadDirPlusSize(Nfs3TReadDirPlus *x)
312334e04225SDavid du Colombier {
312434e04225SDavid du Colombier uint a;
312534e04225SDavid du Colombier USED(x);
312634e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + 8 + Nfs3CookieVerfSize + 4 + 4;
312734e04225SDavid du Colombier return a;
312834e04225SDavid du Colombier }
312934e04225SDavid du Colombier int
nfs3TReadDirPlusPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TReadDirPlus * x)313034e04225SDavid du Colombier nfs3TReadDirPlusPack(uchar *a, uchar *ea, uchar **pa, Nfs3TReadDirPlus *x)
313134e04225SDavid du Colombier {
313234e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
313334e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->cookie) < 0) goto Err;
313434e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
313534e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->dirCount) < 0) goto Err;
313634e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->maxCount) < 0) goto Err;
313734e04225SDavid du Colombier *pa = a;
313834e04225SDavid du Colombier return 0;
313934e04225SDavid du Colombier Err:
314034e04225SDavid du Colombier *pa = ea;
314134e04225SDavid du Colombier return -1;
314234e04225SDavid du Colombier }
314334e04225SDavid du Colombier int
nfs3TReadDirPlusUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TReadDirPlus * x)314434e04225SDavid du Colombier nfs3TReadDirPlusUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TReadDirPlus *x)
314534e04225SDavid du Colombier {
314634e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
314734e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->cookie) < 0) goto Err;
314834e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
314934e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->dirCount) < 0) goto Err;
315034e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->maxCount) < 0) goto Err;
315134e04225SDavid du Colombier *pa = a;
315234e04225SDavid du Colombier return 0;
315334e04225SDavid du Colombier Err:
315434e04225SDavid du Colombier *pa = ea;
315534e04225SDavid du Colombier return -1;
315634e04225SDavid du Colombier }
315734e04225SDavid du Colombier void
nfs3EntryPlusPrint(Fmt * fmt,Nfs3Entry * x)315834e04225SDavid du Colombier nfs3EntryPlusPrint(Fmt *fmt, Nfs3Entry *x)
315934e04225SDavid du Colombier {
316034e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3EntryPlus");
316134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "fileid");
316234e04225SDavid du Colombier fmtprint(fmt, "%llud", x->fileid);
316334e04225SDavid du Colombier fmtprint(fmt, "\n");
316434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "name");
316534e04225SDavid du Colombier fmtprint(fmt, "\"%s\"", x->name);
316634e04225SDavid du Colombier fmtprint(fmt, "\n");
316734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "cookie");
316834e04225SDavid du Colombier fmtprint(fmt, "%llud", x->cookie);
316934e04225SDavid du Colombier fmtprint(fmt, "\n");
317034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
317134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
317234e04225SDavid du Colombier fmtprint(fmt, "\n");
317334e04225SDavid du Colombier switch(x->haveAttr){
317434e04225SDavid du Colombier case 1:
317534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
317634e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
317734e04225SDavid du Colombier fmtprint(fmt, "\n");
317834e04225SDavid du Colombier break;
317934e04225SDavid du Colombier }
318034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveHandle");
318134e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveHandle);
318234e04225SDavid du Colombier fmtprint(fmt, "\n");
318334e04225SDavid du Colombier switch(x->haveHandle){
318434e04225SDavid du Colombier case 1:
318534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
318634e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
318734e04225SDavid du Colombier fmtprint(fmt, "\n");
318834e04225SDavid du Colombier break;
318934e04225SDavid du Colombier }
319034e04225SDavid du Colombier }
319134e04225SDavid du Colombier uint
nfs3EntryPlusSize(Nfs3Entry * x)319234e04225SDavid du Colombier nfs3EntryPlusSize(Nfs3Entry *x)
319334e04225SDavid du Colombier {
319434e04225SDavid du Colombier uint a;
319534e04225SDavid du Colombier USED(x);
319634e04225SDavid du Colombier a = 0 + 8 + sunStringSize(x->name) + 8 + 4;
319734e04225SDavid du Colombier switch(x->haveAttr){
319834e04225SDavid du Colombier case 1:
319934e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
320034e04225SDavid du Colombier break;
320134e04225SDavid du Colombier }
320234e04225SDavid du Colombier a = a + 4;
320334e04225SDavid du Colombier switch(x->haveHandle){
320434e04225SDavid du Colombier case 1:
320534e04225SDavid du Colombier a = a + nfs3HandleSize(&x->handle);
320634e04225SDavid du Colombier break;
320734e04225SDavid du Colombier }
320834e04225SDavid du Colombier return a;
320934e04225SDavid du Colombier }
321034e04225SDavid du Colombier int
nfs3EntryPlusPack(uchar * a,uchar * ea,uchar ** pa,Nfs3Entry * x)321134e04225SDavid du Colombier nfs3EntryPlusPack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
321234e04225SDavid du Colombier {
321334e04225SDavid du Colombier u1int u1;
321434e04225SDavid du Colombier
321534e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &u1) < 0) goto Err;
321634e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->fileid) < 0) goto Err;
321734e04225SDavid du Colombier if(sunStringPack(a, ea, &a, &x->name, -1) < 0) goto Err;
321834e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->cookie) < 0) goto Err;
321934e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
322034e04225SDavid du Colombier switch(x->haveAttr){
322134e04225SDavid du Colombier case 1:
322234e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
322334e04225SDavid du Colombier break;
322434e04225SDavid du Colombier }
322534e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveHandle) < 0) goto Err;
322634e04225SDavid du Colombier switch(x->haveHandle){
322734e04225SDavid du Colombier case 1:
322834e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
322934e04225SDavid du Colombier break;
323034e04225SDavid du Colombier }
323134e04225SDavid du Colombier *pa = a;
323234e04225SDavid du Colombier return 0;
323334e04225SDavid du Colombier Err:
323434e04225SDavid du Colombier *pa = ea;
323534e04225SDavid du Colombier return -1;
323634e04225SDavid du Colombier }
323734e04225SDavid du Colombier int
nfs3EntryPlusUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3Entry * x)323834e04225SDavid du Colombier nfs3EntryPlusUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
323934e04225SDavid du Colombier {
324034e04225SDavid du Colombier u1int u1;
324134e04225SDavid du Colombier
324234e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &u1) < 0 || u1 != 1) goto Err;
324334e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->fileid) < 0) goto Err;
324434e04225SDavid du Colombier if(sunStringUnpack(a, ea, &a, &x->name, -1) < 0) goto Err;
324534e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->cookie) < 0) goto Err;
324634e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
324734e04225SDavid du Colombier switch(x->haveAttr){
324834e04225SDavid du Colombier case 1:
324934e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
325034e04225SDavid du Colombier break;
325134e04225SDavid du Colombier }
325234e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveHandle) < 0) goto Err;
325334e04225SDavid du Colombier switch(x->haveHandle){
325434e04225SDavid du Colombier case 1:
325534e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
325634e04225SDavid du Colombier break;
325734e04225SDavid du Colombier }
325834e04225SDavid du Colombier *pa = a;
325934e04225SDavid du Colombier return 0;
326034e04225SDavid du Colombier Err:
326134e04225SDavid du Colombier *pa = ea;
326234e04225SDavid du Colombier return -1;
326334e04225SDavid du Colombier }
326434e04225SDavid du Colombier void
nfs3RReadDirPlusPrint(Fmt * fmt,Nfs3RReadDirPlus * x)326534e04225SDavid du Colombier nfs3RReadDirPlusPrint(Fmt *fmt, Nfs3RReadDirPlus *x)
326634e04225SDavid du Colombier {
326734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RReadDirPlus");
326834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
326934e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
327034e04225SDavid du Colombier fmtprint(fmt, "\n");
327134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
327234e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
327334e04225SDavid du Colombier fmtprint(fmt, "\n");
327434e04225SDavid du Colombier switch(x->haveAttr){
327534e04225SDavid du Colombier case 1:
327634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
327734e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
327834e04225SDavid du Colombier fmtprint(fmt, "\n");
327934e04225SDavid du Colombier break;
328034e04225SDavid du Colombier }
328134e04225SDavid du Colombier switch(x->status){
328234e04225SDavid du Colombier case Nfs3Ok:
328334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
328434e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3CookieVerfSize, x->verf);
328534e04225SDavid du Colombier fmtprint(fmt, "\n");
328634e04225SDavid du Colombier fmtprint(fmt, "\tcount=%ud\n", x->count);
328734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "eof");
328834e04225SDavid du Colombier fmtprint(fmt, "%d", x->eof);
328934e04225SDavid du Colombier fmtprint(fmt, "\n");
329034e04225SDavid du Colombier break;
329134e04225SDavid du Colombier }
329234e04225SDavid du Colombier }
329334e04225SDavid du Colombier uint
nfs3RReadDirPlusSize(Nfs3RReadDirPlus * x)329434e04225SDavid du Colombier nfs3RReadDirPlusSize(Nfs3RReadDirPlus *x)
329534e04225SDavid du Colombier {
329634e04225SDavid du Colombier uint a;
329734e04225SDavid du Colombier USED(x);
329834e04225SDavid du Colombier a = 0 + 4 + 4;
329934e04225SDavid du Colombier switch(x->haveAttr){
330034e04225SDavid du Colombier case 1:
330134e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
330234e04225SDavid du Colombier break;
330334e04225SDavid du Colombier }
330434e04225SDavid du Colombier switch(x->status){
330534e04225SDavid du Colombier case Nfs3Ok:
330634e04225SDavid du Colombier a = a + Nfs3CookieVerfSize;
330734e04225SDavid du Colombier a += x->count;
330834e04225SDavid du Colombier a += 4 + 4;
330934e04225SDavid du Colombier break;
331034e04225SDavid du Colombier }
331134e04225SDavid du Colombier return a;
331234e04225SDavid du Colombier }
331334e04225SDavid du Colombier int
nfs3RReadDirPlusPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RReadDirPlus * x)331434e04225SDavid du Colombier nfs3RReadDirPlusPack(uchar *a, uchar *ea, uchar **pa, Nfs3RReadDirPlus *x)
331534e04225SDavid du Colombier {
331634e04225SDavid du Colombier int i;
331734e04225SDavid du Colombier u1int zero;
331834e04225SDavid du Colombier
331934e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
332034e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
332134e04225SDavid du Colombier switch(x->haveAttr){
332234e04225SDavid du Colombier case 1:
332334e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
332434e04225SDavid du Colombier break;
332534e04225SDavid du Colombier }
332634e04225SDavid du Colombier switch(x->status){
332734e04225SDavid du Colombier case Nfs3Ok:
332834e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
332934e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->data, x->count) < 0) goto Err;
333034e04225SDavid du Colombier zero = 0;
333134e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &zero) < 0) goto Err;
333234e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->eof) < 0) goto Err;
333334e04225SDavid du Colombier break;
333434e04225SDavid du Colombier }
333534e04225SDavid du Colombier *pa = a;
333634e04225SDavid du Colombier return 0;
333734e04225SDavid du Colombier Err:
333834e04225SDavid du Colombier *pa = ea;
333934e04225SDavid du Colombier return -1;
334034e04225SDavid du Colombier }
334134e04225SDavid du Colombier static int
countEntryPlus(uchar * a,uchar * ea,uchar ** pa,u32int * n)334234e04225SDavid du Colombier countEntryPlus(uchar *a, uchar *ea, uchar **pa, u32int *n)
334334e04225SDavid du Colombier {
334434e04225SDavid du Colombier uchar *oa;
334534e04225SDavid du Colombier u64int u64;
334634e04225SDavid du Colombier u32int u32;
334734e04225SDavid du Colombier u1int u1;
334834e04225SDavid du Colombier Nfs3Handle h;
334934e04225SDavid du Colombier Nfs3Attr attr;
335034e04225SDavid du Colombier
335134e04225SDavid du Colombier oa = a;
335234e04225SDavid du Colombier for(;;){
335334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &u1) < 0)
335434e04225SDavid du Colombier return -1;
335534e04225SDavid du Colombier if(u1 == 0)
335634e04225SDavid du Colombier break;
335734e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &u64) < 0
335834e04225SDavid du Colombier || sunUint32Unpack(a, ea, &a, &u32) < 0)
335934e04225SDavid du Colombier return -1;
336034e04225SDavid du Colombier a += (u32+3)&~3;
336134e04225SDavid du Colombier if(a >= ea)
336234e04225SDavid du Colombier return -1;
336334e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &u64) < 0
336434e04225SDavid du Colombier || sunUint1Unpack(a, ea, &a, &u1) < 0
336534e04225SDavid du Colombier || (u1 && nfs3AttrUnpack(a, ea, &a, &attr) < 0)
336634e04225SDavid du Colombier || sunUint1Unpack(a, ea, &a, &u1) < 0
336734e04225SDavid du Colombier || (u1 && nfs3HandleUnpack(a, ea, &a, &h) < 0))
336834e04225SDavid du Colombier return -1;
336934e04225SDavid du Colombier }
337034e04225SDavid du Colombier *n = (a-4) - oa;
337134e04225SDavid du Colombier *pa = a;
337234e04225SDavid du Colombier return 0;
337334e04225SDavid du Colombier }
337434e04225SDavid du Colombier
337534e04225SDavid du Colombier int
nfs3RReadDirPlusUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RReadDirPlus * x)337634e04225SDavid du Colombier nfs3RReadDirPlusUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RReadDirPlus *x)
337734e04225SDavid du Colombier {
337834e04225SDavid du Colombier int i;
337934e04225SDavid du Colombier
338034e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
338134e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
338234e04225SDavid du Colombier switch(x->haveAttr){
338334e04225SDavid du Colombier case 1:
338434e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
338534e04225SDavid du Colombier break;
338634e04225SDavid du Colombier }
338734e04225SDavid du Colombier if(x->status == Nfs3Ok){
338834e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3CookieVerfSize) < 0) goto Err;
338934e04225SDavid du Colombier x->data = a;
339034e04225SDavid du Colombier if(countEntryPlus(a, ea, &a, &x->count) < 0) goto Err;
339134e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->eof) < 0) goto Err;
339234e04225SDavid du Colombier }
339334e04225SDavid du Colombier *pa = a;
339434e04225SDavid du Colombier return 0;
339534e04225SDavid du Colombier Err:
339634e04225SDavid du Colombier *pa = ea;
339734e04225SDavid du Colombier return -1;
339834e04225SDavid du Colombier }
339934e04225SDavid du Colombier void
nfs3TFsStatPrint(Fmt * fmt,Nfs3TFsStat * x)340034e04225SDavid du Colombier nfs3TFsStatPrint(Fmt *fmt, Nfs3TFsStat *x)
340134e04225SDavid du Colombier {
340234e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TFsStat");
340334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
340434e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
340534e04225SDavid du Colombier fmtprint(fmt, "\n");
340634e04225SDavid du Colombier }
340734e04225SDavid du Colombier uint
nfs3TFsStatSize(Nfs3TFsStat * x)340834e04225SDavid du Colombier nfs3TFsStatSize(Nfs3TFsStat *x)
340934e04225SDavid du Colombier {
341034e04225SDavid du Colombier uint a;
341134e04225SDavid du Colombier USED(x);
341234e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle);
341334e04225SDavid du Colombier return a;
341434e04225SDavid du Colombier }
341534e04225SDavid du Colombier int
nfs3TFsStatPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TFsStat * x)341634e04225SDavid du Colombier nfs3TFsStatPack(uchar *a, uchar *ea, uchar **pa, Nfs3TFsStat *x)
341734e04225SDavid du Colombier {
341834e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
341934e04225SDavid du Colombier *pa = a;
342034e04225SDavid du Colombier return 0;
342134e04225SDavid du Colombier Err:
342234e04225SDavid du Colombier *pa = ea;
342334e04225SDavid du Colombier return -1;
342434e04225SDavid du Colombier }
342534e04225SDavid du Colombier int
nfs3TFsStatUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TFsStat * x)342634e04225SDavid du Colombier nfs3TFsStatUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TFsStat *x)
342734e04225SDavid du Colombier {
342834e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
342934e04225SDavid du Colombier *pa = a;
343034e04225SDavid du Colombier return 0;
343134e04225SDavid du Colombier Err:
343234e04225SDavid du Colombier *pa = ea;
343334e04225SDavid du Colombier return -1;
343434e04225SDavid du Colombier }
343534e04225SDavid du Colombier void
nfs3RFsStatPrint(Fmt * fmt,Nfs3RFsStat * x)343634e04225SDavid du Colombier nfs3RFsStatPrint(Fmt *fmt, Nfs3RFsStat *x)
343734e04225SDavid du Colombier {
343834e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RFsStat");
343934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
344034e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
344134e04225SDavid du Colombier fmtprint(fmt, "\n");
344234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
344334e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
344434e04225SDavid du Colombier fmtprint(fmt, "\n");
344534e04225SDavid du Colombier switch(x->haveAttr){
344634e04225SDavid du Colombier case 1:
344734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
344834e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
344934e04225SDavid du Colombier fmtprint(fmt, "\n");
345034e04225SDavid du Colombier break;
345134e04225SDavid du Colombier }
345234e04225SDavid du Colombier switch(x->status){
345334e04225SDavid du Colombier case Nfs3Ok:
345434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "totalBytes");
345534e04225SDavid du Colombier fmtprint(fmt, "%llud", x->totalBytes);
345634e04225SDavid du Colombier fmtprint(fmt, "\n");
345734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "freeBytes");
345834e04225SDavid du Colombier fmtprint(fmt, "%llud", x->freeBytes);
345934e04225SDavid du Colombier fmtprint(fmt, "\n");
346034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "availBytes");
346134e04225SDavid du Colombier fmtprint(fmt, "%llud", x->availBytes);
346234e04225SDavid du Colombier fmtprint(fmt, "\n");
346334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "totalFiles");
346434e04225SDavid du Colombier fmtprint(fmt, "%llud", x->totalFiles);
346534e04225SDavid du Colombier fmtprint(fmt, "\n");
346634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "freeFiles");
346734e04225SDavid du Colombier fmtprint(fmt, "%llud", x->freeFiles);
346834e04225SDavid du Colombier fmtprint(fmt, "\n");
346934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "availFiles");
347034e04225SDavid du Colombier fmtprint(fmt, "%llud", x->availFiles);
347134e04225SDavid du Colombier fmtprint(fmt, "\n");
347234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "invarSec");
347334e04225SDavid du Colombier fmtprint(fmt, "%ud", x->invarSec);
347434e04225SDavid du Colombier fmtprint(fmt, "\n");
347534e04225SDavid du Colombier break;
347634e04225SDavid du Colombier }
347734e04225SDavid du Colombier }
347834e04225SDavid du Colombier uint
nfs3RFsStatSize(Nfs3RFsStat * x)347934e04225SDavid du Colombier nfs3RFsStatSize(Nfs3RFsStat *x)
348034e04225SDavid du Colombier {
348134e04225SDavid du Colombier uint a;
348234e04225SDavid du Colombier USED(x);
348334e04225SDavid du Colombier a = 0 + 4 + 4;
348434e04225SDavid du Colombier switch(x->haveAttr){
348534e04225SDavid du Colombier case 1:
348634e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
348734e04225SDavid du Colombier break;
348834e04225SDavid du Colombier }
348934e04225SDavid du Colombier switch(x->status){
349034e04225SDavid du Colombier case Nfs3Ok:
349134e04225SDavid du Colombier a = a + 8 + 8 + 8 + 8 + 8 + 8 + 4;
349234e04225SDavid du Colombier break;
349334e04225SDavid du Colombier }
349434e04225SDavid du Colombier return a;
349534e04225SDavid du Colombier }
349634e04225SDavid du Colombier int
nfs3RFsStatPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RFsStat * x)349734e04225SDavid du Colombier nfs3RFsStatPack(uchar *a, uchar *ea, uchar **pa, Nfs3RFsStat *x)
349834e04225SDavid du Colombier {
349934e04225SDavid du Colombier int i;
350034e04225SDavid du Colombier
350134e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
350234e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
350334e04225SDavid du Colombier switch(x->haveAttr){
350434e04225SDavid du Colombier case 1:
350534e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
350634e04225SDavid du Colombier break;
350734e04225SDavid du Colombier }
350834e04225SDavid du Colombier switch(x->status){
350934e04225SDavid du Colombier case Nfs3Ok:
351034e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->totalBytes) < 0) goto Err;
351134e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->freeBytes) < 0) goto Err;
351234e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->availBytes) < 0) goto Err;
351334e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->totalFiles) < 0) goto Err;
351434e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->freeFiles) < 0) goto Err;
351534e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->availFiles) < 0) goto Err;
351634e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->invarSec) < 0) goto Err;
351734e04225SDavid du Colombier break;
351834e04225SDavid du Colombier }
351934e04225SDavid du Colombier *pa = a;
352034e04225SDavid du Colombier return 0;
352134e04225SDavid du Colombier Err:
352234e04225SDavid du Colombier *pa = ea;
352334e04225SDavid du Colombier return -1;
352434e04225SDavid du Colombier }
352534e04225SDavid du Colombier int
nfs3RFsStatUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RFsStat * x)352634e04225SDavid du Colombier nfs3RFsStatUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RFsStat *x)
352734e04225SDavid du Colombier {
352834e04225SDavid du Colombier int i;
352934e04225SDavid du Colombier
353034e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
353134e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
353234e04225SDavid du Colombier switch(x->haveAttr){
353334e04225SDavid du Colombier case 1:
353434e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
353534e04225SDavid du Colombier break;
353634e04225SDavid du Colombier }
353734e04225SDavid du Colombier switch(x->status){
353834e04225SDavid du Colombier case Nfs3Ok:
353934e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->totalBytes) < 0) goto Err;
354034e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->freeBytes) < 0) goto Err;
354134e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->availBytes) < 0) goto Err;
354234e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->totalFiles) < 0) goto Err;
354334e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->freeFiles) < 0) goto Err;
354434e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->availFiles) < 0) goto Err;
354534e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->invarSec) < 0) goto Err;
354634e04225SDavid du Colombier break;
354734e04225SDavid du Colombier }
354834e04225SDavid du Colombier *pa = a;
354934e04225SDavid du Colombier return 0;
355034e04225SDavid du Colombier Err:
355134e04225SDavid du Colombier *pa = ea;
355234e04225SDavid du Colombier return -1;
355334e04225SDavid du Colombier }
355434e04225SDavid du Colombier void
nfs3TFsInfoPrint(Fmt * fmt,Nfs3TFsInfo * x)355534e04225SDavid du Colombier nfs3TFsInfoPrint(Fmt *fmt, Nfs3TFsInfo *x)
355634e04225SDavid du Colombier {
355734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TFsInfo");
355834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
355934e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
356034e04225SDavid du Colombier fmtprint(fmt, "\n");
356134e04225SDavid du Colombier }
356234e04225SDavid du Colombier uint
nfs3TFsInfoSize(Nfs3TFsInfo * x)356334e04225SDavid du Colombier nfs3TFsInfoSize(Nfs3TFsInfo *x)
356434e04225SDavid du Colombier {
356534e04225SDavid du Colombier uint a;
356634e04225SDavid du Colombier USED(x);
356734e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle);
356834e04225SDavid du Colombier return a;
356934e04225SDavid du Colombier }
357034e04225SDavid du Colombier int
nfs3TFsInfoPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TFsInfo * x)357134e04225SDavid du Colombier nfs3TFsInfoPack(uchar *a, uchar *ea, uchar **pa, Nfs3TFsInfo *x)
357234e04225SDavid du Colombier {
357334e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
357434e04225SDavid du Colombier *pa = a;
357534e04225SDavid du Colombier return 0;
357634e04225SDavid du Colombier Err:
357734e04225SDavid du Colombier *pa = ea;
357834e04225SDavid du Colombier return -1;
357934e04225SDavid du Colombier }
358034e04225SDavid du Colombier int
nfs3TFsInfoUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TFsInfo * x)358134e04225SDavid du Colombier nfs3TFsInfoUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TFsInfo *x)
358234e04225SDavid du Colombier {
358334e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
358434e04225SDavid du Colombier *pa = a;
358534e04225SDavid du Colombier return 0;
358634e04225SDavid du Colombier Err:
358734e04225SDavid du Colombier *pa = ea;
358834e04225SDavid du Colombier return -1;
358934e04225SDavid du Colombier }
359034e04225SDavid du Colombier void
nfs3RFsInfoPrint(Fmt * fmt,Nfs3RFsInfo * x)359134e04225SDavid du Colombier nfs3RFsInfoPrint(Fmt *fmt, Nfs3RFsInfo *x)
359234e04225SDavid du Colombier {
359334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RFsInfo");
359434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
359534e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
359634e04225SDavid du Colombier fmtprint(fmt, "\n");
359734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
359834e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
359934e04225SDavid du Colombier fmtprint(fmt, "\n");
360034e04225SDavid du Colombier switch(x->haveAttr){
360134e04225SDavid du Colombier case 1:
360234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
360334e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
360434e04225SDavid du Colombier fmtprint(fmt, "\n");
360534e04225SDavid du Colombier break;
360634e04225SDavid du Colombier }
360734e04225SDavid du Colombier switch(x->status){
360834e04225SDavid du Colombier case Nfs3Ok:
360934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "readMax");
361034e04225SDavid du Colombier fmtprint(fmt, "%ud", x->readMax);
361134e04225SDavid du Colombier fmtprint(fmt, "\n");
361234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "readPref");
361334e04225SDavid du Colombier fmtprint(fmt, "%ud", x->readPref);
361434e04225SDavid du Colombier fmtprint(fmt, "\n");
361534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "readMult");
361634e04225SDavid du Colombier fmtprint(fmt, "%ud", x->readMult);
361734e04225SDavid du Colombier fmtprint(fmt, "\n");
361834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "writeMax");
361934e04225SDavid du Colombier fmtprint(fmt, "%ud", x->writeMax);
362034e04225SDavid du Colombier fmtprint(fmt, "\n");
362134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "writePref");
362234e04225SDavid du Colombier fmtprint(fmt, "%ud", x->writePref);
362334e04225SDavid du Colombier fmtprint(fmt, "\n");
362434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "writeMult");
362534e04225SDavid du Colombier fmtprint(fmt, "%ud", x->writeMult);
362634e04225SDavid du Colombier fmtprint(fmt, "\n");
362734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "readDirPref");
362834e04225SDavid du Colombier fmtprint(fmt, "%ud", x->readDirPref);
362934e04225SDavid du Colombier fmtprint(fmt, "\n");
363034e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "maxFileSize");
363134e04225SDavid du Colombier fmtprint(fmt, "%llud", x->maxFileSize);
363234e04225SDavid du Colombier fmtprint(fmt, "\n");
363334e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "timePrec");
363434e04225SDavid du Colombier nfs3TimePrint(fmt, &x->timePrec);
363534e04225SDavid du Colombier fmtprint(fmt, "\n");
363634e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "flags");
363734e04225SDavid du Colombier fmtprint(fmt, "%ud", x->flags);
363834e04225SDavid du Colombier fmtprint(fmt, "\n");
363934e04225SDavid du Colombier break;
364034e04225SDavid du Colombier }
364134e04225SDavid du Colombier }
364234e04225SDavid du Colombier uint
nfs3RFsInfoSize(Nfs3RFsInfo * x)364334e04225SDavid du Colombier nfs3RFsInfoSize(Nfs3RFsInfo *x)
364434e04225SDavid du Colombier {
364534e04225SDavid du Colombier uint a;
364634e04225SDavid du Colombier USED(x);
364734e04225SDavid du Colombier a = 0 + 4 + 4;
364834e04225SDavid du Colombier switch(x->haveAttr){
364934e04225SDavid du Colombier case 1:
365034e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
365134e04225SDavid du Colombier break;
365234e04225SDavid du Colombier }
365334e04225SDavid du Colombier switch(x->status){
365434e04225SDavid du Colombier case Nfs3Ok:
365534e04225SDavid du Colombier a = a + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 8 + nfs3TimeSize(&x->timePrec) + 4;
365634e04225SDavid du Colombier break;
365734e04225SDavid du Colombier }
365834e04225SDavid du Colombier return a;
365934e04225SDavid du Colombier }
366034e04225SDavid du Colombier int
nfs3RFsInfoPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RFsInfo * x)366134e04225SDavid du Colombier nfs3RFsInfoPack(uchar *a, uchar *ea, uchar **pa, Nfs3RFsInfo *x)
366234e04225SDavid du Colombier {
366334e04225SDavid du Colombier int i;
366434e04225SDavid du Colombier
366534e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
366634e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
366734e04225SDavid du Colombier switch(x->haveAttr){
366834e04225SDavid du Colombier case 1:
366934e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
367034e04225SDavid du Colombier break;
367134e04225SDavid du Colombier }
367234e04225SDavid du Colombier switch(x->status){
367334e04225SDavid du Colombier case Nfs3Ok:
367434e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->readMax) < 0) goto Err;
367534e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->readPref) < 0) goto Err;
367634e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->readMult) < 0) goto Err;
367734e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->writeMax) < 0) goto Err;
367834e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->writePref) < 0) goto Err;
367934e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->writeMult) < 0) goto Err;
368034e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->readDirPref) < 0) goto Err;
368134e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->maxFileSize) < 0) goto Err;
368234e04225SDavid du Colombier if(nfs3TimePack(a, ea, &a, &x->timePrec) < 0) goto Err;
368334e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->flags) < 0) goto Err;
368434e04225SDavid du Colombier break;
368534e04225SDavid du Colombier }
368634e04225SDavid du Colombier *pa = a;
368734e04225SDavid du Colombier return 0;
368834e04225SDavid du Colombier Err:
368934e04225SDavid du Colombier *pa = ea;
369034e04225SDavid du Colombier return -1;
369134e04225SDavid du Colombier }
369234e04225SDavid du Colombier int
nfs3RFsInfoUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RFsInfo * x)369334e04225SDavid du Colombier nfs3RFsInfoUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RFsInfo *x)
369434e04225SDavid du Colombier {
369534e04225SDavid du Colombier int i;
369634e04225SDavid du Colombier
369734e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
369834e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
369934e04225SDavid du Colombier switch(x->haveAttr){
370034e04225SDavid du Colombier case 1:
370134e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
370234e04225SDavid du Colombier break;
370334e04225SDavid du Colombier }
370434e04225SDavid du Colombier switch(x->status){
370534e04225SDavid du Colombier case Nfs3Ok:
370634e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->readMax) < 0) goto Err;
370734e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->readPref) < 0) goto Err;
370834e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->readMult) < 0) goto Err;
370934e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->writeMax) < 0) goto Err;
371034e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->writePref) < 0) goto Err;
371134e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->writeMult) < 0) goto Err;
371234e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->readDirPref) < 0) goto Err;
371334e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->maxFileSize) < 0) goto Err;
371434e04225SDavid du Colombier if(nfs3TimeUnpack(a, ea, &a, &x->timePrec) < 0) goto Err;
371534e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->flags) < 0) goto Err;
371634e04225SDavid du Colombier break;
371734e04225SDavid du Colombier }
371834e04225SDavid du Colombier *pa = a;
371934e04225SDavid du Colombier return 0;
372034e04225SDavid du Colombier Err:
372134e04225SDavid du Colombier *pa = ea;
372234e04225SDavid du Colombier return -1;
372334e04225SDavid du Colombier }
372434e04225SDavid du Colombier void
nfs3TPathconfPrint(Fmt * fmt,Nfs3TPathconf * x)372534e04225SDavid du Colombier nfs3TPathconfPrint(Fmt *fmt, Nfs3TPathconf *x)
372634e04225SDavid du Colombier {
372734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TPathconf");
372834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
372934e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
373034e04225SDavid du Colombier fmtprint(fmt, "\n");
373134e04225SDavid du Colombier }
373234e04225SDavid du Colombier uint
nfs3TPathconfSize(Nfs3TPathconf * x)373334e04225SDavid du Colombier nfs3TPathconfSize(Nfs3TPathconf *x)
373434e04225SDavid du Colombier {
373534e04225SDavid du Colombier uint a;
373634e04225SDavid du Colombier USED(x);
373734e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle);
373834e04225SDavid du Colombier return a;
373934e04225SDavid du Colombier }
374034e04225SDavid du Colombier int
nfs3TPathconfPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TPathconf * x)374134e04225SDavid du Colombier nfs3TPathconfPack(uchar *a, uchar *ea, uchar **pa, Nfs3TPathconf *x)
374234e04225SDavid du Colombier {
374334e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
374434e04225SDavid du Colombier *pa = a;
374534e04225SDavid du Colombier return 0;
374634e04225SDavid du Colombier Err:
374734e04225SDavid du Colombier *pa = ea;
374834e04225SDavid du Colombier return -1;
374934e04225SDavid du Colombier }
375034e04225SDavid du Colombier int
nfs3TPathconfUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TPathconf * x)375134e04225SDavid du Colombier nfs3TPathconfUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TPathconf *x)
375234e04225SDavid du Colombier {
375334e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
375434e04225SDavid du Colombier *pa = a;
375534e04225SDavid du Colombier return 0;
375634e04225SDavid du Colombier Err:
375734e04225SDavid du Colombier *pa = ea;
375834e04225SDavid du Colombier return -1;
375934e04225SDavid du Colombier }
376034e04225SDavid du Colombier void
nfs3RPathconfPrint(Fmt * fmt,Nfs3RPathconf * x)376134e04225SDavid du Colombier nfs3RPathconfPrint(Fmt *fmt, Nfs3RPathconf *x)
376234e04225SDavid du Colombier {
376334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RPathconf");
376434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
376534e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
376634e04225SDavid du Colombier fmtprint(fmt, "\n");
376734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "haveAttr");
376834e04225SDavid du Colombier fmtprint(fmt, "%d", x->haveAttr);
376934e04225SDavid du Colombier fmtprint(fmt, "\n");
377034e04225SDavid du Colombier switch(x->haveAttr){
377134e04225SDavid du Colombier case 1:
377234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "attr");
377334e04225SDavid du Colombier nfs3AttrPrint(fmt, &x->attr);
377434e04225SDavid du Colombier fmtprint(fmt, "\n");
377534e04225SDavid du Colombier break;
377634e04225SDavid du Colombier }
377734e04225SDavid du Colombier switch(x->status){
377834e04225SDavid du Colombier case Nfs3Ok:
377934e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "maxLink");
378034e04225SDavid du Colombier fmtprint(fmt, "%ud", x->maxLink);
378134e04225SDavid du Colombier fmtprint(fmt, "\n");
378234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "maxName");
378334e04225SDavid du Colombier fmtprint(fmt, "%ud", x->maxName);
378434e04225SDavid du Colombier fmtprint(fmt, "\n");
378534e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "noTrunc");
378634e04225SDavid du Colombier fmtprint(fmt, "%d", x->noTrunc);
378734e04225SDavid du Colombier fmtprint(fmt, "\n");
378834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "chownRestricted");
378934e04225SDavid du Colombier fmtprint(fmt, "%d", x->chownRestricted);
379034e04225SDavid du Colombier fmtprint(fmt, "\n");
379134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "caseInsensitive");
379234e04225SDavid du Colombier fmtprint(fmt, "%d", x->caseInsensitive);
379334e04225SDavid du Colombier fmtprint(fmt, "\n");
379434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "casePreserving");
379534e04225SDavid du Colombier fmtprint(fmt, "%d", x->casePreserving);
379634e04225SDavid du Colombier fmtprint(fmt, "\n");
379734e04225SDavid du Colombier break;
379834e04225SDavid du Colombier }
379934e04225SDavid du Colombier }
380034e04225SDavid du Colombier uint
nfs3RPathconfSize(Nfs3RPathconf * x)380134e04225SDavid du Colombier nfs3RPathconfSize(Nfs3RPathconf *x)
380234e04225SDavid du Colombier {
380334e04225SDavid du Colombier uint a;
380434e04225SDavid du Colombier USED(x);
380534e04225SDavid du Colombier a = 0 + 4 + 4;
380634e04225SDavid du Colombier switch(x->haveAttr){
380734e04225SDavid du Colombier case 1:
380834e04225SDavid du Colombier a = a + nfs3AttrSize(&x->attr);
380934e04225SDavid du Colombier break;
381034e04225SDavid du Colombier }
381134e04225SDavid du Colombier switch(x->status){
381234e04225SDavid du Colombier case Nfs3Ok:
381334e04225SDavid du Colombier a = a + 4 + 4 + 4 + 4 + 4 + 4;
381434e04225SDavid du Colombier break;
381534e04225SDavid du Colombier }
381634e04225SDavid du Colombier return a;
381734e04225SDavid du Colombier }
381834e04225SDavid du Colombier int
nfs3RPathconfPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RPathconf * x)381934e04225SDavid du Colombier nfs3RPathconfPack(uchar *a, uchar *ea, uchar **pa, Nfs3RPathconf *x)
382034e04225SDavid du Colombier {
382134e04225SDavid du Colombier int i;
382234e04225SDavid du Colombier
382334e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
382434e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->haveAttr) < 0) goto Err;
382534e04225SDavid du Colombier switch(x->haveAttr){
382634e04225SDavid du Colombier case 1:
382734e04225SDavid du Colombier if(nfs3AttrPack(a, ea, &a, &x->attr) < 0) goto Err;
382834e04225SDavid du Colombier break;
382934e04225SDavid du Colombier }
383034e04225SDavid du Colombier switch(x->status){
383134e04225SDavid du Colombier case Nfs3Ok:
383234e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->maxLink) < 0) goto Err;
383334e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->maxName) < 0) goto Err;
383434e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->noTrunc) < 0) goto Err;
383534e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->chownRestricted) < 0) goto Err;
383634e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->caseInsensitive) < 0) goto Err;
383734e04225SDavid du Colombier if(sunUint1Pack(a, ea, &a, &x->casePreserving) < 0) goto Err;
383834e04225SDavid du Colombier break;
383934e04225SDavid du Colombier }
384034e04225SDavid du Colombier *pa = a;
384134e04225SDavid du Colombier return 0;
384234e04225SDavid du Colombier Err:
384334e04225SDavid du Colombier *pa = ea;
384434e04225SDavid du Colombier return -1;
384534e04225SDavid du Colombier }
384634e04225SDavid du Colombier int
nfs3RPathconfUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RPathconf * x)384734e04225SDavid du Colombier nfs3RPathconfUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RPathconf *x)
384834e04225SDavid du Colombier {
384934e04225SDavid du Colombier int i;
385034e04225SDavid du Colombier
385134e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
385234e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->haveAttr) < 0) goto Err;
385334e04225SDavid du Colombier switch(x->haveAttr){
385434e04225SDavid du Colombier case 1:
385534e04225SDavid du Colombier if(nfs3AttrUnpack(a, ea, &a, &x->attr) < 0) goto Err;
385634e04225SDavid du Colombier break;
385734e04225SDavid du Colombier }
385834e04225SDavid du Colombier switch(x->status){
385934e04225SDavid du Colombier case Nfs3Ok:
386034e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->maxLink) < 0) goto Err;
386134e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->maxName) < 0) goto Err;
386234e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->noTrunc) < 0) goto Err;
386334e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->chownRestricted) < 0) goto Err;
386434e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->caseInsensitive) < 0) goto Err;
386534e04225SDavid du Colombier if(sunUint1Unpack(a, ea, &a, &x->casePreserving) < 0) goto Err;
386634e04225SDavid du Colombier break;
386734e04225SDavid du Colombier }
386834e04225SDavid du Colombier *pa = a;
386934e04225SDavid du Colombier return 0;
387034e04225SDavid du Colombier Err:
387134e04225SDavid du Colombier *pa = ea;
387234e04225SDavid du Colombier return -1;
387334e04225SDavid du Colombier }
387434e04225SDavid du Colombier void
nfs3TCommitPrint(Fmt * fmt,Nfs3TCommit * x)387534e04225SDavid du Colombier nfs3TCommitPrint(Fmt *fmt, Nfs3TCommit *x)
387634e04225SDavid du Colombier {
387734e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3TCommit");
387834e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "handle");
387934e04225SDavid du Colombier nfs3HandlePrint(fmt, &x->handle);
388034e04225SDavid du Colombier fmtprint(fmt, "\n");
388134e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "offset");
388234e04225SDavid du Colombier fmtprint(fmt, "%llud", x->offset);
388334e04225SDavid du Colombier fmtprint(fmt, "\n");
388434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "count");
388534e04225SDavid du Colombier fmtprint(fmt, "%ud", x->count);
388634e04225SDavid du Colombier fmtprint(fmt, "\n");
388734e04225SDavid du Colombier }
388834e04225SDavid du Colombier uint
nfs3TCommitSize(Nfs3TCommit * x)388934e04225SDavid du Colombier nfs3TCommitSize(Nfs3TCommit *x)
389034e04225SDavid du Colombier {
389134e04225SDavid du Colombier uint a;
389234e04225SDavid du Colombier USED(x);
389334e04225SDavid du Colombier a = 0 + nfs3HandleSize(&x->handle) + 8 + 4;
389434e04225SDavid du Colombier return a;
389534e04225SDavid du Colombier }
389634e04225SDavid du Colombier int
nfs3TCommitPack(uchar * a,uchar * ea,uchar ** pa,Nfs3TCommit * x)389734e04225SDavid du Colombier nfs3TCommitPack(uchar *a, uchar *ea, uchar **pa, Nfs3TCommit *x)
389834e04225SDavid du Colombier {
389934e04225SDavid du Colombier if(nfs3HandlePack(a, ea, &a, &x->handle) < 0) goto Err;
390034e04225SDavid du Colombier if(sunUint64Pack(a, ea, &a, &x->offset) < 0) goto Err;
390134e04225SDavid du Colombier if(sunUint32Pack(a, ea, &a, &x->count) < 0) goto Err;
390234e04225SDavid du Colombier *pa = a;
390334e04225SDavid du Colombier return 0;
390434e04225SDavid du Colombier Err:
390534e04225SDavid du Colombier *pa = ea;
390634e04225SDavid du Colombier return -1;
390734e04225SDavid du Colombier }
390834e04225SDavid du Colombier int
nfs3TCommitUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3TCommit * x)390934e04225SDavid du Colombier nfs3TCommitUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3TCommit *x)
391034e04225SDavid du Colombier {
391134e04225SDavid du Colombier if(nfs3HandleUnpack(a, ea, &a, &x->handle) < 0) goto Err;
391234e04225SDavid du Colombier if(sunUint64Unpack(a, ea, &a, &x->offset) < 0) goto Err;
391334e04225SDavid du Colombier if(sunUint32Unpack(a, ea, &a, &x->count) < 0) goto Err;
391434e04225SDavid du Colombier *pa = a;
391534e04225SDavid du Colombier return 0;
391634e04225SDavid du Colombier Err:
391734e04225SDavid du Colombier *pa = ea;
391834e04225SDavid du Colombier return -1;
391934e04225SDavid du Colombier }
392034e04225SDavid du Colombier void
nfs3RCommitPrint(Fmt * fmt,Nfs3RCommit * x)392134e04225SDavid du Colombier nfs3RCommitPrint(Fmt *fmt, Nfs3RCommit *x)
392234e04225SDavid du Colombier {
392334e04225SDavid du Colombier fmtprint(fmt, "%s\n", "Nfs3RCommit");
392434e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "status");
392534e04225SDavid du Colombier fmtprint(fmt, "%s", nfs3StatusStr(x->status));
392634e04225SDavid du Colombier fmtprint(fmt, "\n");
392734e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "wcc");
392834e04225SDavid du Colombier nfs3WccPrint(fmt, &x->wcc);
392934e04225SDavid du Colombier fmtprint(fmt, "\n");
393034e04225SDavid du Colombier switch(x->status){
393134e04225SDavid du Colombier case Nfs3Ok:
393234e04225SDavid du Colombier fmtprint(fmt, "\t%s=", "verf");
393334e04225SDavid du Colombier fmtprint(fmt, "%.*H", Nfs3WriteVerfSize, x->verf);
393434e04225SDavid du Colombier fmtprint(fmt, "\n");
393534e04225SDavid du Colombier break;
393634e04225SDavid du Colombier }
393734e04225SDavid du Colombier }
393834e04225SDavid du Colombier uint
nfs3RCommitSize(Nfs3RCommit * x)393934e04225SDavid du Colombier nfs3RCommitSize(Nfs3RCommit *x)
394034e04225SDavid du Colombier {
394134e04225SDavid du Colombier uint a;
394234e04225SDavid du Colombier USED(x);
394334e04225SDavid du Colombier a = 0 + 4 + nfs3WccSize(&x->wcc);
394434e04225SDavid du Colombier switch(x->status){
394534e04225SDavid du Colombier case Nfs3Ok:
394634e04225SDavid du Colombier a = a + Nfs3WriteVerfSize;
394734e04225SDavid du Colombier break;
394834e04225SDavid du Colombier }
394934e04225SDavid du Colombier return a;
395034e04225SDavid du Colombier }
395134e04225SDavid du Colombier int
nfs3RCommitPack(uchar * a,uchar * ea,uchar ** pa,Nfs3RCommit * x)395234e04225SDavid du Colombier nfs3RCommitPack(uchar *a, uchar *ea, uchar **pa, Nfs3RCommit *x)
395334e04225SDavid du Colombier {
395434e04225SDavid du Colombier int i;
395534e04225SDavid du Colombier
395634e04225SDavid du Colombier if(i=x->status, sunEnumPack(a, ea, &a, &i) < 0) goto Err;
395734e04225SDavid du Colombier if(nfs3WccPack(a, ea, &a, &x->wcc) < 0) goto Err;
395834e04225SDavid du Colombier switch(x->status){
395934e04225SDavid du Colombier case Nfs3Ok:
396034e04225SDavid du Colombier if(sunFixedOpaquePack(a, ea, &a, x->verf, Nfs3WriteVerfSize) < 0) goto Err;
396134e04225SDavid du Colombier break;
396234e04225SDavid du Colombier }
396334e04225SDavid du Colombier *pa = a;
396434e04225SDavid du Colombier return 0;
396534e04225SDavid du Colombier Err:
396634e04225SDavid du Colombier *pa = ea;
396734e04225SDavid du Colombier return -1;
396834e04225SDavid du Colombier }
396934e04225SDavid du Colombier int
nfs3RCommitUnpack(uchar * a,uchar * ea,uchar ** pa,Nfs3RCommit * x)397034e04225SDavid du Colombier nfs3RCommitUnpack(uchar *a, uchar *ea, uchar **pa, Nfs3RCommit *x)
397134e04225SDavid du Colombier {
397234e04225SDavid du Colombier int i;
397334e04225SDavid du Colombier
397434e04225SDavid du Colombier if(sunEnumUnpack(a, ea, &a, &i) < 0) goto Err; x->status = i;
397534e04225SDavid du Colombier if(nfs3WccUnpack(a, ea, &a, &x->wcc) < 0) goto Err;
397634e04225SDavid du Colombier switch(x->status){
397734e04225SDavid du Colombier case Nfs3Ok:
397834e04225SDavid du Colombier if(sunFixedOpaqueUnpack(a, ea, &a, x->verf, Nfs3WriteVerfSize) < 0) goto Err;
397934e04225SDavid du Colombier break;
398034e04225SDavid du Colombier }
398134e04225SDavid du Colombier *pa = a;
398234e04225SDavid du Colombier return 0;
398334e04225SDavid du Colombier Err:
398434e04225SDavid du Colombier *pa = ea;
398534e04225SDavid du Colombier return -1;
398634e04225SDavid du Colombier }
398734e04225SDavid du Colombier
398834e04225SDavid du Colombier typedef int (*P)(uchar*, uchar*, uchar**, SunCall*);
398934e04225SDavid du Colombier typedef void (*F)(Fmt*, SunCall*);
399034e04225SDavid du Colombier typedef uint (*S)(SunCall*);
399134e04225SDavid du Colombier
399234e04225SDavid du Colombier static SunProc proc[] = {
399334e04225SDavid du Colombier (P)nfs3TNullPack, (P)nfs3TNullUnpack, (S)nfs3TNullSize, (F)nfs3TNullPrint, sizeof(Nfs3TNull),
399434e04225SDavid du Colombier (P)nfs3RNullPack, (P)nfs3RNullUnpack, (S)nfs3RNullSize, (F)nfs3RNullPrint, sizeof(Nfs3RNull),
399534e04225SDavid du Colombier (P)nfs3TGetattrPack, (P)nfs3TGetattrUnpack, (S)nfs3TGetattrSize, (F)nfs3TGetattrPrint, sizeof(Nfs3TGetattr),
399634e04225SDavid du Colombier (P)nfs3RGetattrPack, (P)nfs3RGetattrUnpack, (S)nfs3RGetattrSize, (F)nfs3RGetattrPrint, sizeof(Nfs3RGetattr),
399734e04225SDavid du Colombier (P)nfs3TSetattrPack, (P)nfs3TSetattrUnpack, (S)nfs3TSetattrSize, (F)nfs3TSetattrPrint, sizeof(Nfs3TSetattr),
399834e04225SDavid du Colombier (P)nfs3RSetattrPack, (P)nfs3RSetattrUnpack, (S)nfs3RSetattrSize, (F)nfs3RSetattrPrint, sizeof(Nfs3RSetattr),
399934e04225SDavid du Colombier (P)nfs3TLookupPack, (P)nfs3TLookupUnpack, (S)nfs3TLookupSize, (F)nfs3TLookupPrint, sizeof(Nfs3TLookup),
400034e04225SDavid du Colombier (P)nfs3RLookupPack, (P)nfs3RLookupUnpack, (S)nfs3RLookupSize, (F)nfs3RLookupPrint, sizeof(Nfs3RLookup),
400134e04225SDavid du Colombier (P)nfs3TAccessPack, (P)nfs3TAccessUnpack, (S)nfs3TAccessSize, (F)nfs3TAccessPrint, sizeof(Nfs3TAccess),
400234e04225SDavid du Colombier (P)nfs3RAccessPack, (P)nfs3RAccessUnpack, (S)nfs3RAccessSize, (F)nfs3RAccessPrint, sizeof(Nfs3RAccess),
400334e04225SDavid du Colombier (P)nfs3TReadlinkPack, (P)nfs3TReadlinkUnpack, (S)nfs3TReadlinkSize, (F)nfs3TReadlinkPrint, sizeof(Nfs3TReadlink),
400434e04225SDavid du Colombier (P)nfs3RReadlinkPack, (P)nfs3RReadlinkUnpack, (S)nfs3RReadlinkSize, (F)nfs3RReadlinkPrint, sizeof(Nfs3RReadlink),
400534e04225SDavid du Colombier (P)nfs3TReadPack, (P)nfs3TReadUnpack, (S)nfs3TReadSize, (F)nfs3TReadPrint, sizeof(Nfs3TRead),
400634e04225SDavid du Colombier (P)nfs3RReadPack, (P)nfs3RReadUnpack, (S)nfs3RReadSize, (F)nfs3RReadPrint, sizeof(Nfs3RRead),
400734e04225SDavid du Colombier (P)nfs3TWritePack, (P)nfs3TWriteUnpack, (S)nfs3TWriteSize, (F)nfs3TWritePrint, sizeof(Nfs3TWrite),
400834e04225SDavid du Colombier (P)nfs3RWritePack, (P)nfs3RWriteUnpack, (S)nfs3RWriteSize, (F)nfs3RWritePrint, sizeof(Nfs3RWrite),
400934e04225SDavid du Colombier (P)nfs3TCreatePack, (P)nfs3TCreateUnpack, (S)nfs3TCreateSize, (F)nfs3TCreatePrint, sizeof(Nfs3TCreate),
401034e04225SDavid du Colombier (P)nfs3RCreatePack, (P)nfs3RCreateUnpack, (S)nfs3RCreateSize, (F)nfs3RCreatePrint, sizeof(Nfs3RCreate),
401134e04225SDavid du Colombier (P)nfs3TMkdirPack, (P)nfs3TMkdirUnpack, (S)nfs3TMkdirSize, (F)nfs3TMkdirPrint, sizeof(Nfs3TMkdir),
401234e04225SDavid du Colombier (P)nfs3RMkdirPack, (P)nfs3RMkdirUnpack, (S)nfs3RMkdirSize, (F)nfs3RMkdirPrint, sizeof(Nfs3RMkdir),
401334e04225SDavid du Colombier (P)nfs3TSymlinkPack, (P)nfs3TSymlinkUnpack, (S)nfs3TSymlinkSize, (F)nfs3TSymlinkPrint, sizeof(Nfs3TSymlink),
401434e04225SDavid du Colombier (P)nfs3RSymlinkPack, (P)nfs3RSymlinkUnpack, (S)nfs3RSymlinkSize, (F)nfs3RSymlinkPrint, sizeof(Nfs3RSymlink),
401534e04225SDavid du Colombier (P)nfs3TMknodPack, (P)nfs3TMknodUnpack, (S)nfs3TMknodSize, (F)nfs3TMknodPrint, sizeof(Nfs3TMknod),
401634e04225SDavid du Colombier (P)nfs3RMknodPack, (P)nfs3RMknodUnpack, (S)nfs3RMknodSize, (F)nfs3RMknodPrint, sizeof(Nfs3RMknod),
401734e04225SDavid du Colombier (P)nfs3TRemovePack, (P)nfs3TRemoveUnpack, (S)nfs3TRemoveSize, (F)nfs3TRemovePrint, sizeof(Nfs3TRemove),
401834e04225SDavid du Colombier (P)nfs3RRemovePack, (P)nfs3RRemoveUnpack, (S)nfs3RRemoveSize, (F)nfs3RRemovePrint, sizeof(Nfs3RRemove),
401934e04225SDavid du Colombier (P)nfs3TRmdirPack, (P)nfs3TRmdirUnpack, (S)nfs3TRmdirSize, (F)nfs3TRmdirPrint, sizeof(Nfs3TRmdir),
402034e04225SDavid du Colombier (P)nfs3RRmdirPack, (P)nfs3RRmdirUnpack, (S)nfs3RRmdirSize, (F)nfs3RRmdirPrint, sizeof(Nfs3RRmdir),
402134e04225SDavid du Colombier (P)nfs3TRenamePack, (P)nfs3TRenameUnpack, (S)nfs3TRenameSize, (F)nfs3TRenamePrint, sizeof(Nfs3TRename),
402234e04225SDavid du Colombier (P)nfs3RRenamePack, (P)nfs3RRenameUnpack, (S)nfs3RRenameSize, (F)nfs3RRenamePrint, sizeof(Nfs3RRename),
402334e04225SDavid du Colombier (P)nfs3TLinkPack, (P)nfs3TLinkUnpack, (S)nfs3TLinkSize, (F)nfs3TLinkPrint, sizeof(Nfs3TLink),
402434e04225SDavid du Colombier (P)nfs3RLinkPack, (P)nfs3RLinkUnpack, (S)nfs3RLinkSize, (F)nfs3RLinkPrint, sizeof(Nfs3RLink),
402534e04225SDavid du Colombier (P)nfs3TReadDirPack, (P)nfs3TReadDirUnpack, (S)nfs3TReadDirSize, (F)nfs3TReadDirPrint, sizeof(Nfs3TReadDir),
402634e04225SDavid du Colombier (P)nfs3RReadDirPack, (P)nfs3RReadDirUnpack, (S)nfs3RReadDirSize, (F)nfs3RReadDirPrint, sizeof(Nfs3RReadDir),
402734e04225SDavid du Colombier (P)nfs3TReadDirPlusPack, (P)nfs3TReadDirPlusUnpack, (S)nfs3TReadDirPlusSize, (F)nfs3TReadDirPlusPrint, sizeof(Nfs3TReadDirPlus),
402834e04225SDavid du Colombier (P)nfs3RReadDirPlusPack, (P)nfs3RReadDirPlusUnpack, (S)nfs3RReadDirPlusSize, (F)nfs3RReadDirPlusPrint, sizeof(Nfs3RReadDirPlus),
402934e04225SDavid du Colombier (P)nfs3TFsStatPack, (P)nfs3TFsStatUnpack, (S)nfs3TFsStatSize, (F)nfs3TFsStatPrint, sizeof(Nfs3TFsStat),
403034e04225SDavid du Colombier (P)nfs3RFsStatPack, (P)nfs3RFsStatUnpack, (S)nfs3RFsStatSize, (F)nfs3RFsStatPrint, sizeof(Nfs3RFsStat),
403134e04225SDavid du Colombier (P)nfs3TFsInfoPack, (P)nfs3TFsInfoUnpack, (S)nfs3TFsInfoSize, (F)nfs3TFsInfoPrint, sizeof(Nfs3TFsInfo),
403234e04225SDavid du Colombier (P)nfs3RFsInfoPack, (P)nfs3RFsInfoUnpack, (S)nfs3RFsInfoSize, (F)nfs3RFsInfoPrint, sizeof(Nfs3RFsInfo),
403334e04225SDavid du Colombier (P)nfs3TPathconfPack, (P)nfs3TPathconfUnpack, (S)nfs3TPathconfSize, (F)nfs3TPathconfPrint, sizeof(Nfs3TPathconf),
403434e04225SDavid du Colombier (P)nfs3RPathconfPack, (P)nfs3RPathconfUnpack, (S)nfs3RPathconfSize, (F)nfs3RPathconfPrint, sizeof(Nfs3RPathconf),
403534e04225SDavid du Colombier (P)nfs3TCommitPack, (P)nfs3TCommitUnpack, (S)nfs3TCommitSize, (F)nfs3TCommitPrint, sizeof(Nfs3TCommit),
403634e04225SDavid du Colombier (P)nfs3RCommitPack, (P)nfs3RCommitUnpack, (S)nfs3RCommitSize, (F)nfs3RCommitPrint, sizeof(Nfs3RCommit)
403734e04225SDavid du Colombier };
403834e04225SDavid du Colombier
403934e04225SDavid du Colombier SunProg nfs3Prog =
404034e04225SDavid du Colombier {
404134e04225SDavid du Colombier Nfs3Program,
404234e04225SDavid du Colombier Nfs3Version,
404334e04225SDavid du Colombier proc,
404434e04225SDavid du Colombier nelem(proc),
404534e04225SDavid du Colombier };
4046