812 lines
15 KiB
C
812 lines
15 KiB
C
/*
|
|
* 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*);
|
|
|