summaryrefslogtreecommitdiff
path: root/sys/include/nfs3.h
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 16:47:56 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 16:47:56 +0300
commitc558a99e0be506a9abdf677f0ca4490644e05fc1 (patch)
tree17aef678ad05a32ef96ce8385703cb3fe089a5c7 /sys/include/nfs3.h
parente5888a1ffdae813d7575f5fb02275c6bb07e5199 (diff)
Import sources from 2011-03-30 iso image - sys/include
Diffstat (limited to 'sys/include/nfs3.h')
-rwxr-xr-xsys/include/nfs3.h811
1 files changed, 811 insertions, 0 deletions
diff --git a/sys/include/nfs3.h b/sys/include/nfs3.h
new file mode 100755
index 000000000..a632f2a15
--- /dev/null
+++ b/sys/include/nfs3.h
@@ -0,0 +1,811 @@
+/*
+ * NFS mounter V3; see RFC 1813
+ */
+
+#pragma lib "libsunrpc.a"
+#pragma src "/sys/src/libsunrpc"
+
+enum {
+ NfsMount1HandleSize = 32,
+ NfsMount3MaxPathSize = 1024,
+ NfsMount3MaxNameSize = 255,
+ NfsMount3MaxHandleSize = 64,
+ NfsMount3Program = 100005,
+ NfsMount3Version = 3,
+ NfsMount1Program = 100005,
+ NfsMount1Version = 1
+};
+typedef struct NfsMount3TNull NfsMount3TNull;
+typedef struct NfsMount3RNull NfsMount3RNull;
+typedef struct NfsMount3TMnt NfsMount3TMnt;
+typedef struct NfsMount3RMnt NfsMount3RMnt;
+typedef struct NfsMount3TDump NfsMount3TDump;
+typedef struct NfsMount3Entry NfsMount3Entry;
+typedef struct NfsMount3RDump NfsMount3RDump;
+typedef struct NfsMount3TUmnt NfsMount3TUmnt;
+typedef struct NfsMount3RUmnt NfsMount3RUmnt;
+typedef struct NfsMount3Export NfsMount3Export;
+typedef struct NfsMount3TUmntall NfsMount3TUmntall;
+typedef struct NfsMount3RUmntall NfsMount3RUmntall;
+typedef struct NfsMount3TExport NfsMount3TExport;
+typedef struct NfsMount3RExport NfsMount3RExport;
+
+typedef enum
+{
+ NfsMount3CallTNull,
+ NfsMount3CallRNull,
+ NfsMount3CallTMnt,
+ NfsMount3CallRMnt,
+ NfsMount3CallTDump,
+ NfsMount3CallRDump,
+ NfsMount3CallTUmnt,
+ NfsMount3CallRUmnt,
+ NfsMount3CallTUmntall,
+ NfsMount3CallRUmntall,
+ NfsMount3CallTExport,
+ NfsMount3CallRExport
+} NfsMount3CallType;
+
+typedef struct NfsMount3Call NfsMount3Call;
+struct NfsMount3Call {
+ SunRpc rpc;
+ NfsMount3CallType type;
+};
+
+struct NfsMount3TNull {
+ NfsMount3Call call;
+};
+
+struct NfsMount3RNull {
+ NfsMount3Call call;
+};
+
+struct NfsMount3TMnt {
+ NfsMount3Call call;
+ char *path;
+};
+
+struct NfsMount3RMnt {
+ NfsMount3Call call;
+ uint status;
+ uchar *handle;
+ uint len;
+ u32int *auth;
+ u32int nauth;
+};
+
+struct NfsMount3TDump {
+ NfsMount3Call call;
+};
+
+struct NfsMount3Entry {
+ char *host;
+ char *path;
+};
+
+struct NfsMount3RDump {
+ NfsMount3Call call;
+ uchar *data;
+ u32int count;
+};
+
+struct NfsMount3TUmnt {
+ NfsMount3Call call;
+ char *path;
+};
+
+struct NfsMount3RUmnt {
+ NfsMount3Call call;
+};
+
+struct NfsMount3Export {
+ char *path;
+ char **g;
+ u32int ng;
+};
+
+struct NfsMount3TUmntall {
+ NfsMount3Call call;
+};
+
+struct NfsMount3RUmntall {
+ NfsMount3Call call;
+};
+
+struct NfsMount3TExport {
+ NfsMount3Call call;
+};
+
+struct NfsMount3RExport {
+ NfsMount3Call call;
+ uchar *data;
+ u32int count;
+};
+
+uint nfsMount3ExportGroupSize(uchar*);
+uint nfsMount3ExportSize(NfsMount3Export*);
+int nfsMount3ExportPack(uchar*, uchar*, uchar**, NfsMount3Export*);
+int nfsMount3ExportUnpack(uchar*, uchar*, uchar**, char**, char***, NfsMount3Export*);
+int nfsMount3EntryPack(uchar*, uchar*, uchar**, NfsMount3Entry*);
+int nfsMount3EntryUnpack(uchar*, uchar*, uchar**, NfsMount3Entry*);
+uint nfsMount3EntrySize(NfsMount3Entry*);
+
+extern SunProg nfsMount3Prog;
+
+/*
+ * NFS V3; see RFC 1813
+ */
+enum {
+ Nfs3MaxHandleSize = 64,
+ Nfs3CookieVerfSize = 8,
+ Nfs3CreateVerfSize = 8,
+ Nfs3WriteVerfSize = 8,
+ Nfs3AccessRead = 1,
+ Nfs3AccessLookup = 2,
+ Nfs3AccessModify = 4,
+ Nfs3AccessExtend = 8,
+ Nfs3AccessDelete = 16,
+ Nfs3AccessExecute = 32,
+ Nfs3FsHasLinks = 1,
+ Nfs3FsHasSymlinks = 2,
+ Nfs3FsHomogeneous = 8,
+ Nfs3FsCanSetTime = 16,
+
+ Nfs3Version = 3,
+ Nfs3Program = 100003,
+};
+typedef enum
+{
+ Nfs3Ok = 0,
+ Nfs3ErrNotOwner = 1,
+ Nfs3ErrNoEnt = 2,
+ Nfs3ErrIo = 5,
+ Nfs3ErrNxio = 6,
+ Nfs3ErrNoMem = 12,
+ Nfs3ErrAcces = 13,
+ Nfs3ErrExist = 17,
+ Nfs3ErrXDev = 18,
+ Nfs3ErrNoDev = 19,
+ Nfs3ErrNotDir = 20,
+ Nfs3ErrIsDir = 21,
+ Nfs3ErrInval = 22,
+ Nfs3ErrFbig = 27,
+ Nfs3ErrNoSpc = 28,
+ Nfs3ErrRoFs = 30,
+ Nfs3ErrMLink = 31,
+ Nfs3ErrNameTooLong = 63,
+ Nfs3ErrNotEmpty = 66,
+ Nfs3ErrDQuot = 69,
+ Nfs3ErrStale = 70,
+ Nfs3ErrRemote = 71,
+ Nfs3ErrBadHandle = 10001,
+ Nfs3ErrNotSync = 10002,
+ Nfs3ErrBadCookie = 10003,
+ Nfs3ErrNotSupp = 10004,
+ Nfs3ErrTooSmall = 10005,
+ Nfs3ErrServerFault = 10006,
+ Nfs3ErrBadType = 10007,
+ Nfs3ErrJukebox = 10008,
+ Nfs3ErrFprintNotFound = 10009,
+ Nfs3ErrAborted = 10010,
+} Nfs3Status;
+
+void nfs3Errstr(Nfs3Status);
+
+typedef enum
+{
+ Nfs3FileReg = 1,
+ Nfs3FileDir = 2,
+ Nfs3FileBlock = 3,
+ Nfs3FileChar = 4,
+ Nfs3FileSymlink = 5,
+ Nfs3FileSocket = 6,
+ Nfs3FileFifo = 7,
+} Nfs3FileType;
+
+enum
+{
+ Nfs3ModeSetUid = 0x800,
+ Nfs3ModeSetGid = 0x400,
+ Nfs3ModeSticky = 0x200,
+};
+
+typedef enum
+{
+ Nfs3CallTNull,
+ Nfs3CallRNull,
+ Nfs3CallTGetattr,
+ Nfs3CallRGetattr,
+ Nfs3CallTSetattr,
+ Nfs3CallRSetattr,
+ Nfs3CallTLookup,
+ Nfs3CallRLookup,
+ Nfs3CallTAccess,
+ Nfs3CallRAccess,
+ Nfs3CallTReadlink,
+ Nfs3CallRReadlink,
+ Nfs3CallTRead,
+ Nfs3CallRRead,
+ Nfs3CallTWrite,
+ Nfs3CallRWrite,
+ Nfs3CallTCreate,
+ Nfs3CallRCreate,
+ Nfs3CallTMkdir,
+ Nfs3CallRMkdir,
+ Nfs3CallTSymlink,
+ Nfs3CallRSymlink,
+ Nfs3CallTMknod,
+ Nfs3CallRMknod,
+ Nfs3CallTRemove,
+ Nfs3CallRRemove,
+ Nfs3CallTRmdir,
+ Nfs3CallRRmdir,
+ Nfs3CallTRename,
+ Nfs3CallRRename,
+ Nfs3CallTLink,
+ Nfs3CallRLink,
+ Nfs3CallTReadDir,
+ Nfs3CallRReadDir,
+ Nfs3CallTReadDirPlus,
+ Nfs3CallRReadDirPlus,
+ Nfs3CallTFsStat,
+ Nfs3CallRFsStat,
+ Nfs3CallTFsInfo,
+ Nfs3CallRFsInfo,
+ Nfs3CallTPathconf,
+ Nfs3CallRPathconf,
+ Nfs3CallTCommit,
+ Nfs3CallRCommit,
+} Nfs3CallType;
+
+typedef struct Nfs3Call Nfs3Call;
+typedef struct Nfs3Handle Nfs3Handle;
+typedef struct Nfs3Time Nfs3Time;
+typedef struct Nfs3Attr Nfs3Attr;
+typedef struct Nfs3WccAttr Nfs3WccAttr;
+typedef struct Nfs3Wcc Nfs3Wcc;
+typedef enum
+{
+ Nfs3SetTimeDont = 0,
+ Nfs3SetTimeServer = 1,
+ Nfs3SetTimeClient = 2,
+} Nfs3SetTime;
+
+typedef struct Nfs3SetAttr Nfs3SetAttr;
+typedef struct Nfs3TNull Nfs3TNull;
+typedef struct Nfs3RNull Nfs3RNull;
+typedef struct Nfs3TGetattr Nfs3TGetattr;
+typedef struct Nfs3RGetattr Nfs3RGetattr;
+typedef struct Nfs3TSetattr Nfs3TSetattr;
+typedef struct Nfs3RSetattr Nfs3RSetattr;
+typedef struct Nfs3TLookup Nfs3TLookup;
+typedef struct Nfs3RLookup Nfs3RLookup;
+typedef struct Nfs3TAccess Nfs3TAccess;
+typedef struct Nfs3RAccess Nfs3RAccess;
+typedef struct Nfs3TReadlink Nfs3TReadlink;
+typedef struct Nfs3RReadlink Nfs3RReadlink;
+typedef struct Nfs3TRead Nfs3TRead;
+typedef struct Nfs3RRead Nfs3RRead;
+typedef enum
+{
+ Nfs3SyncNone = 0,
+ Nfs3SyncData = 1,
+ Nfs3SyncFile = 2,
+} Nfs3Sync;
+
+typedef struct Nfs3TWrite Nfs3TWrite;
+typedef struct Nfs3RWrite Nfs3RWrite;
+typedef enum
+{
+ Nfs3CreateUnchecked = 0,
+ Nfs3CreateGuarded = 1,
+ Nfs3CreateExclusive = 2,
+} Nfs3Create;
+
+typedef struct Nfs3TCreate Nfs3TCreate;
+typedef struct Nfs3RCreate Nfs3RCreate;
+typedef struct Nfs3TMkdir Nfs3TMkdir;
+typedef struct Nfs3RMkdir Nfs3RMkdir;
+typedef struct Nfs3TSymlink Nfs3TSymlink;
+typedef struct Nfs3RSymlink Nfs3RSymlink;
+typedef struct Nfs3TMknod Nfs3TMknod;
+typedef struct Nfs3RMknod Nfs3RMknod;
+typedef struct Nfs3TRemove Nfs3TRemove;
+typedef struct Nfs3RRemove Nfs3RRemove;
+typedef struct Nfs3TRmdir Nfs3TRmdir;
+typedef struct Nfs3RRmdir Nfs3RRmdir;
+typedef struct Nfs3TRename Nfs3TRename;
+typedef struct Nfs3RRename Nfs3RRename;
+typedef struct Nfs3TLink Nfs3TLink;
+typedef struct Nfs3RLink Nfs3RLink;
+typedef struct Nfs3TReadDir Nfs3TReadDir;
+typedef struct Nfs3Entry Nfs3Entry;
+typedef struct Nfs3RReadDir Nfs3RReadDir;
+typedef struct Nfs3TReadDirPlus Nfs3TReadDirPlus;
+typedef struct Nfs3EntryPlus Nfs3EntryPlus;
+typedef struct Nfs3RReadDirPlus Nfs3RReadDirPlus;
+typedef struct Nfs3TFsStat Nfs3TFsStat;
+typedef struct Nfs3RFsStat Nfs3RFsStat;
+typedef struct Nfs3TFsInfo Nfs3TFsInfo;
+typedef struct Nfs3RFsInfo Nfs3RFsInfo;
+typedef struct Nfs3TPathconf Nfs3TPathconf;
+typedef struct Nfs3RPathconf Nfs3RPathconf;
+typedef struct Nfs3TCommit Nfs3TCommit;
+typedef struct Nfs3RCommit Nfs3RCommit;
+
+struct Nfs3Call {
+ SunRpc rpc;
+ Nfs3CallType type;
+};
+
+struct Nfs3Handle {
+ uchar h[Nfs3MaxHandleSize];
+ u32int len;
+};
+
+struct Nfs3Time {
+ u32int sec;
+ u32int nsec;
+};
+
+struct Nfs3Attr {
+ Nfs3FileType type;
+ u32int mode;
+ u32int nlink;
+ u32int uid;
+ u32int gid;
+ u64int size;
+ u64int used;
+ u32int major;
+ u32int minor;
+ u64int fsid;
+ u64int fileid;
+ Nfs3Time atime;
+ Nfs3Time mtime;
+ Nfs3Time ctime;
+};
+
+struct Nfs3WccAttr {
+ u64int size;
+ Nfs3Time mtime;
+ Nfs3Time ctime;
+};
+
+struct Nfs3Wcc {
+ u1int haveWccAttr;
+ Nfs3WccAttr wccAttr;
+ u1int haveAttr;
+ Nfs3Attr attr;
+};
+
+struct Nfs3SetAttr {
+ u1int setMode;
+ u32int mode;
+ u1int setUid;
+ u32int uid;
+ u1int setGid;
+ u32int gid;
+ u1int setSize;
+ u64int size;
+ Nfs3SetTime setAtime;
+ Nfs3Time atime;
+ Nfs3SetTime setMtime;
+ Nfs3Time mtime;
+};
+
+struct Nfs3TNull {
+ Nfs3Call call;
+};
+
+struct Nfs3RNull {
+ Nfs3Call call;
+};
+
+struct Nfs3TGetattr {
+ Nfs3Call call;
+ Nfs3Handle handle;
+};
+
+struct Nfs3RGetattr {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Attr attr;
+};
+
+struct Nfs3TSetattr {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ Nfs3SetAttr attr;
+ u1int checkCtime;
+ Nfs3Time ctime;
+};
+
+struct Nfs3RSetattr {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Wcc wcc;
+};
+
+struct Nfs3TLookup {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+};
+
+struct Nfs3RLookup {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Handle handle;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u1int haveDirAttr;
+ Nfs3Attr dirAttr;
+};
+
+struct Nfs3TAccess {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ u32int access;
+};
+
+struct Nfs3RAccess {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u32int access;
+};
+
+struct Nfs3TReadlink {
+ Nfs3Call call;
+ Nfs3Handle handle;
+};
+
+struct Nfs3RReadlink {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ char *data;
+};
+
+struct Nfs3TRead {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ u64int offset;
+ u32int count;
+};
+
+struct Nfs3RRead {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u32int count;
+ u1int eof;
+ uchar *data;
+ u32int ndata;
+};
+
+struct Nfs3TWrite {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ u64int offset;
+ u32int count;
+ Nfs3Sync stable;
+ uchar *data;
+ u32int ndata;
+};
+
+struct Nfs3RWrite {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Wcc wcc;
+ u32int count;
+ Nfs3Sync committed;
+ uchar verf[Nfs3WriteVerfSize];
+};
+
+struct Nfs3TCreate {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+ Nfs3Create mode;
+ Nfs3SetAttr attr;
+ uchar verf[Nfs3CreateVerfSize];
+};
+
+struct Nfs3RCreate {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveHandle;
+ Nfs3Handle handle;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ Nfs3Wcc dirWcc;
+};
+
+struct Nfs3TMkdir {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+ Nfs3SetAttr attr;
+};
+
+struct Nfs3RMkdir {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveHandle;
+ Nfs3Handle handle;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ Nfs3Wcc dirWcc;
+};
+
+struct Nfs3TSymlink {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+ Nfs3SetAttr attr;
+ char *data;
+};
+
+struct Nfs3RSymlink {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveHandle;
+ Nfs3Handle handle;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ Nfs3Wcc dirWcc;
+};
+
+struct Nfs3TMknod {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+ Nfs3FileType type;
+ Nfs3SetAttr attr;
+ u32int major;
+ u32int minor;
+};
+
+struct Nfs3RMknod {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveHandle;
+ Nfs3Handle handle;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ Nfs3Wcc dirWcc;
+};
+
+struct Nfs3TRemove {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+};
+
+struct Nfs3RRemove {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Wcc wcc;
+};
+
+struct Nfs3TRmdir {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ char *name;
+};
+
+struct Nfs3RRmdir {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Wcc wcc;
+};
+
+struct Nfs3TRename {
+ Nfs3Call call;
+ struct {
+ Nfs3Handle handle;
+ char *name;
+ } from;
+ struct {
+ Nfs3Handle handle;
+ char *name;
+ } to;
+};
+
+struct Nfs3RRename {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Wcc fromWcc;
+ Nfs3Wcc toWcc;
+};
+
+struct Nfs3TLink {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ struct {
+ Nfs3Handle handle;
+ char *name;
+ } link;
+};
+
+struct Nfs3RLink {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ Nfs3Wcc dirWcc;
+};
+
+struct Nfs3TReadDir {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ u64int cookie;
+ uchar verf[Nfs3CookieVerfSize];
+ u32int count;
+};
+
+struct Nfs3RReadDir {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ uchar verf[Nfs3CookieVerfSize];
+ uchar *data;
+ u32int count;
+ u1int eof;
+};
+
+struct Nfs3TReadDirPlus {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ u64int cookie;
+ uchar verf[Nfs3CookieVerfSize];
+ u32int dirCount;
+ u32int maxCount;
+};
+
+struct Nfs3Entry {
+ u64int fileid;
+ char *name;
+ u64int cookie;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u1int haveHandle;
+ Nfs3Handle handle;
+};
+
+struct Nfs3RReadDirPlus {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ uchar verf[Nfs3CookieVerfSize];
+ uchar *data;
+ u32int count;
+ u1int eof;
+};
+
+struct Nfs3TFsStat {
+ Nfs3Call call;
+ Nfs3Handle handle;
+};
+
+struct Nfs3RFsStat {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u64int totalBytes;
+ u64int freeBytes;
+ u64int availBytes;
+ u64int totalFiles;
+ u64int freeFiles;
+ u64int availFiles;
+ u32int invarSec;
+};
+
+struct Nfs3TFsInfo {
+ Nfs3Call call;
+ Nfs3Handle handle;
+};
+
+struct Nfs3RFsInfo {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u32int readMax;
+ u32int readPref;
+ u32int readMult;
+ u32int writeMax;
+ u32int writePref;
+ u32int writeMult;
+ u32int readDirPref;
+ u64int maxFileSize;
+ Nfs3Time timePrec;
+ u32int flags;
+};
+
+struct Nfs3TPathconf {
+ Nfs3Call call;
+ Nfs3Handle handle;
+};
+
+struct Nfs3RPathconf {
+ Nfs3Call call;
+ Nfs3Status status;
+ u1int haveAttr;
+ Nfs3Attr attr;
+ u32int maxLink;
+ u32int maxName;
+ u1int noTrunc;
+ u1int chownRestricted;
+ u1int caseInsensitive;
+ u1int casePreserving;
+};
+
+struct Nfs3TCommit {
+ Nfs3Call call;
+ Nfs3Handle handle;
+ u64int offset;
+ u32int count;
+};
+
+struct Nfs3RCommit {
+ Nfs3Call call;
+ Nfs3Status status;
+ Nfs3Wcc wcc;
+ uchar verf[Nfs3WriteVerfSize];
+};
+
+char *nfs3StatusStr(Nfs3Status);
+char *nfs3TypeStr(Nfs3CallType);
+char *nfs3SetTimeStr(Nfs3SetTime);
+char *nfs3SyncStr(Nfs3Sync);
+
+void nfs3HandlePrint(Fmt*, Nfs3Handle*);
+u32int nfs3HandleSize(Nfs3Handle*);
+int nfs3HandlePack(uchar*, uchar*, uchar**, Nfs3Handle*);
+int nfs3HandleUnpack(uchar*, uchar*, uchar**, Nfs3Handle*);
+
+void nfs3TimePrint(Fmt*, Nfs3Time*);
+u32int nfs3TimeSize(Nfs3Time*);
+int nfs3TimePack(uchar*, uchar*, uchar**, Nfs3Time*);
+int nfs3TimeUnpack(uchar*, uchar*, uchar**, Nfs3Time*);
+
+void nfs3AttrPrint(Fmt*, Nfs3Attr*);
+u32int nfs3AttrSize(Nfs3Attr*);
+int nfs3AttrPack(uchar*, uchar*, uchar**, Nfs3Attr*);
+int nfs3AttrUnpack(uchar*, uchar*, uchar**, Nfs3Attr*);
+
+void nfs3WccAttrPrint(Fmt*, Nfs3WccAttr*);
+u32int nfs3WccAttrSize(Nfs3WccAttr*);
+int nfs3WccAttrPack(uchar*, uchar*, uchar**, Nfs3WccAttr*);
+int nfs3WccAttrUnpack(uchar*, uchar*, uchar**, Nfs3WccAttr*);
+
+void nfs3WccPrint(Fmt*, Nfs3Wcc*);
+u32int nfs3WccSize(Nfs3Wcc*);
+int nfs3WccPack(uchar*, uchar*, uchar**, Nfs3Wcc*);
+int nfs3WccUnpack(uchar*, uchar*, uchar**, Nfs3Wcc*);
+
+void nfs3SetAttrPrint(Fmt*, Nfs3SetAttr*);
+u32int nfs3SetAttrSize(Nfs3SetAttr*);
+int nfs3SetAttrPack(uchar*, uchar*, uchar**, Nfs3SetAttr*);
+int nfs3SetAttrUnpack(uchar*, uchar*, uchar**, Nfs3SetAttr*);
+
+extern SunProg nfs3Prog;
+
+void nfs3EntryPrint(Fmt*, Nfs3Entry*);
+u32int nfs3EntrySize(Nfs3Entry*);
+int nfs3EntryPack(uchar*, uchar*, uchar**, Nfs3Entry*);
+int nfs3EntryUnpack(uchar*, uchar*, uchar**, Nfs3Entry*);
+
+void nfs3EntryPlusPrint(Fmt*, Nfs3Entry*);
+u32int nfs3EntryPlusSize(Nfs3Entry*);
+int nfs3EntryPlusPack(uchar*, uchar*, uchar**, Nfs3Entry*);
+int nfs3EntryPlusUnpack(uchar*, uchar*, uchar**, Nfs3Entry*);
+