/* * NFSv3 protocol definitions */ #ifndef _LINUX_NFS3_H #define _LINUX_NFS3_H #include #include #define NFS3_PORT 2049 #define NFS3_MAXDATA 8192 #define NFS3_MAXPATHLEN PATH_MAX #define NFS3_MAXNAMLEN NAME_MAX #define NFS3_MAXGROUPS 16 #define NFS3_FHSIZE NFS_FHSIZE #define NFS3_COOKIESIZE 4 #define NFS3_FIFO_DEV (-1) #define NFS3MODE_FMT 0170000 #define NFS3MODE_DIR 0040000 #define NFS3MODE_CHR 0020000 #define NFS3MODE_BLK 0060000 #define NFS3MODE_REG 0100000 #define NFS3MODE_LNK 0120000 #define NFS3MODE_SOCK 0140000 #define NFS3MODE_FIFO 0010000 enum nfs3_stat { NFS3_OK = 0, NFS3ERR_PERM = 1, NFS3ERR_NOENT = 2, NFS3ERR_IO = 5, NFS3ERR_NXIO = 6, NFS3ERR_EAGAIN = 11, NFS3ERR_ACCES = 13, NFS3ERR_EXIST = 17, NFS3ERR_XDEV = 18, /* new in NFSv3 */ NFS3ERR_NODEV = 19, NFS3ERR_NOTDIR = 20, NFS3ERR_ISDIR = 21, NFS3ERR_INVAL = 22, /* new in NFSv3 */ NFS3ERR_FBIG = 27, NFS3ERR_NOSPC = 28, NFS3ERR_ROFS = 30, NFS3ERR_MLINK = 31, /* new in NFSv3 */ NFS3ERR_NAMETOOLONG = 63, NFS3ERR_NOTEMPTY = 66, NFS3ERR_DQUOT = 69, NFS3ERR_STALE = 70, NFS3ERR_REMOTE = 71, /* new in NFSv3 */ NFS3ERR_BADHANDLE = 10001,/* ditto */ NFS3ERR_NOT_SYNC = 10002,/* ditto */ NFS3ERR_BAD_COOKIE = 10003,/* ditto */ NFS3ERR_NOTSUPP = 10004,/* ditto */ NFS3ERR_TOOSMALL = 10005,/* ditto */ NFS3ERR_SERVERFAULT = 10006,/* ditto */ NFS3ERR_BADTYPE = 10007,/* ditto */ NFS3ERR_JUKEBOX = 10008,/* ditto */ }; enum nfs3_ftype { NF3NON = 0, NF3REG = 1, NF3DIR = 2, NF3BLK = 3, NF3CHR = 4, NF3LNK = 5, NF3SOCK = 6, NF3FIFO = 7, /* changed from NFSv2 (was 8) */ NF3BAD = 8 }; #define NFS3_VERSION 3 #define NFSPROC_NULL 0 #define NFSPROC_GETATTR 1 #define NFSPROC_SETATTR 2 #define NFSPROC_ROOT 3 #define NFSPROC_LOOKUP 4 #define NFSPROC_READLINK 5 #define NFSPROC_READ 6 #define NFSPROC_WRITECACHE 7 #define NFSPROC_WRITE 8 #define NFSPROC_CREATE 9 #define NFSPROC_REMOVE 10 #define NFSPROC_RENAME 11 #define NFSPROC_LINK 12 #define NFSPROC_SYMLINK 13 #define NFSPROC_MKDIR 14 #define NFSPROC_RMDIR 15 #define NFSPROC_READDIR 16 #define NFSPROC_STATFS 17 #if defined(__KERNEL__) || defined(NFS_NEED_KERNEL_TYPES) struct nfs3_fh { __u32 size; __u8 data[NFS3_FHSIZE]; }; struct nfs3_fattr { enum nfs3_ftype type; __u32 mode; __u32 nlink; __u32 uid; __u32 gid; __u64 size; __u64 used; __u32 rdev_maj; __u32 rdev_min; __u32 fsid; __u32 fileid; struct nfs_time atime; struct nfs_time mtime; struct nfs_time ctime; }; struct nfs3_wcc_attr { __u64 size; struct nfs_time mtime; struct nfs_time ctime; }; struct nfs3_wcc_data { struct nfs3_wcc_attr before; struct nfs3_wcc_attr after; }; struct nfs3_sattr { __u32 valid; __u32 mode; __u32 uid; __u32 gid; __u64 size; struct nfs_time atime; struct nfs_time mtime; }; struct nfs3_entry { __u32 fileid; char * name; unsigned int length; __u32 cookie; __u32 eof; }; struct nfs3_fsinfo { __u32 tsize; __u32 bsize; __u32 blocks; __u32 bfree; __u32 bavail; }; #ifdef NFS_NEED_XDR_TYPES struct nfs3_sattrargs { struct nfs_fh * fh; struct nfs_sattr * sattr; }; struct nfs3_diropargs { struct nfs_fh * fh; const char * name; }; struct nfs3_readargs { struct nfs_fh * fh; __u32 offset; __u32 count; void * buffer; }; struct nfs3_writeargs { struct nfs_fh * fh; __u32 offset; __u32 count; const void * buffer; }; struct nfs3_createargs { struct nfs_fh * fh; const char * name; struct nfs_sattr * sattr; }; struct nfs3_renameargs { struct nfs_fh * fromfh; const char * fromname; struct nfs_fh * tofh; const char * toname; }; struct nfs3_linkargs { struct nfs_fh * fromfh; struct nfs_fh * tofh; const char * toname; }; struct nfs3_symlinkargs { struct nfs_fh * fromfh; const char * fromname; const char * topath; struct nfs_sattr * sattr; }; struct nfs3_readdirargs { struct nfs_fh * fh; __u32 cookie; void * buffer; unsigned int bufsiz; }; struct nfs3_diropok { struct nfs_fh * fh; struct nfs_fattr * fattr; }; struct nfs3_readres { struct nfs_fattr * fattr; unsigned int count; }; struct nfs3_readlinkres { char ** string; unsigned int * lenp; unsigned int maxlen; void * buffer; }; struct nfs3_readdirres { void * buffer; unsigned int bufsiz; }; /* * The following are for NFSv3 */ struct nfs3_fh { __u32 size; __u8 data[NFS3_FHSIZE] }; struct nfs3_wcc_attr { __u64 size; struct nfs_time mtime; struct nfs_time ctime; }; #endif /* NFS_NEED_XDR_TYPES */ #endif /* __KERNEL__ */ #endif