1 /* 2 * Copyright (c) 1989 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * %sccs.include.redist.c% 9 * 10 * @(#)nfsproto.h 7.9 (Berkeley) 01/14/92 11 */ 12 13 /* 14 * nfs definitions as per the version 2 specs 15 */ 16 17 /* 18 * Constants as defined in the Sun NFS Version 2 spec. 19 * "NFS: Network File System Protocol Specification" RFC1094 20 */ 21 22 #define NFS_PORT 2049 23 #define NFS_PROG 100003 24 #define NFS_VER2 2 25 #define NFS_MAXDGRAMDATA 8192 26 #define NFS_MAXDATA 32768 27 #define NFS_MAXPATHLEN 1024 28 #define NFS_MAXNAMLEN 255 29 #define NFS_FHSIZE 32 30 #define NFS_MAXPKTHDR 404 31 #define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA) 32 #define NFS_MINPACKET 20 33 #define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ 34 35 /* Stat numbers for rpc returns */ 36 #define NFS_OK 0 37 #define NFSERR_PERM 1 38 #define NFSERR_NOENT 2 39 #define NFSERR_IO 5 40 #define NFSERR_NXIO 6 41 #define NFSERR_ACCES 13 42 #define NFSERR_EXIST 17 43 #define NFSERR_NODEV 19 44 #define NFSERR_NOTDIR 20 45 #define NFSERR_ISDIR 21 46 #define NFSERR_FBIG 27 47 #define NFSERR_NOSPC 28 48 #define NFSERR_ROFS 30 49 #define NFSERR_NAMETOL 63 50 #define NFSERR_NOTEMPTY 66 51 #define NFSERR_DQUOT 69 52 #define NFSERR_STALE 70 53 #define NFSERR_WFLUSH 99 54 55 /* Sizes in bytes of various nfs rpc components */ 56 #define NFSX_FH 32 57 #define NFSX_UNSIGNED 4 58 #define NFSX_FATTR 68 59 #define NFSX_SATTR 32 60 #define NFSX_COOKIE 4 61 #define NFSX_STATFS 20 62 63 /* nfs rpc procedure numbers */ 64 #define NFSPROC_NULL 0 65 #define NFSPROC_GETATTR 1 66 #define NFSPROC_SETATTR 2 67 #define NFSPROC_NOOP 3 68 #define NFSPROC_ROOT NFSPROC_NOOP /* Obsolete */ 69 #define NFSPROC_LOOKUP 4 70 #define NFSPROC_READLINK 5 71 #define NFSPROC_READ 6 72 #define NFSPROC_WRITECACHE NFSPROC_NOOP /* Obsolete */ 73 #define NFSPROC_WRITE 8 74 #define NFSPROC_CREATE 9 75 #define NFSPROC_REMOVE 10 76 #define NFSPROC_RENAME 11 77 #define NFSPROC_LINK 12 78 #define NFSPROC_SYMLINK 13 79 #define NFSPROC_MKDIR 14 80 #define NFSPROC_RMDIR 15 81 #define NFSPROC_READDIR 16 82 #define NFSPROC_STATFS 17 83 84 /* NQ nfs numbers */ 85 #define NQNFSPROC_READDIRLOOK 18 86 #define NQNFSPROC_GETLEASE 19 87 #define NQNFSPROC_VACATED 20 88 #define NQNFSPROC_EVICTED 21 89 90 #define NFS_NPROCS 22 91 /* Conversion macros */ 92 extern int vttoif_tab[]; 93 #define vtonfs_mode(t,m) \ 94 txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \ 95 MAKEIMODE((t), (m))) 96 #define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777) 97 #define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))]) 98 #define nfstov_type(a) ntov_type[fxdr_unsigned(u_long,(a))&0x7] 99 100 /* File types */ 101 typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype; 102 103 /* Structs for common parts of the rpc's */ 104 struct nfsv2_time { 105 u_long tv_sec; 106 u_long tv_usec; 107 }; 108 109 struct nfsv2_fattr { 110 u_long fa_type; 111 u_long fa_mode; 112 u_long fa_nlink; 113 u_long fa_uid; 114 u_long fa_gid; 115 u_long fa_size; 116 u_long fa_blocksize; 117 u_long fa_rdev; 118 u_long fa_blocks; 119 u_long fa_fsid; 120 u_long fa_fileid; 121 struct nfsv2_time fa_atime; 122 struct nfsv2_time fa_mtime; 123 struct nfsv2_time fa_ctime; 124 }; 125 126 struct nfsv2_sattr { 127 u_long sa_mode; 128 u_long sa_uid; 129 u_long sa_gid; 130 u_long sa_size; 131 struct nfsv2_time sa_atime; 132 struct nfsv2_time sa_mtime; 133 }; 134 135 struct nfsv2_statfs { 136 u_long sf_tsize; 137 u_long sf_bsize; 138 u_long sf_blocks; 139 u_long sf_bfree; 140 u_long sf_bavail; 141 }; 142