Commit | Line | Data |
---|---|---|
a2907882 KM |
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 | * | |
dbf0c423 | 8 | * %sccs.include.redist.c% |
a2907882 | 9 | * |
e420cd72 | 10 | * @(#)nfsproto.h 7.10 (Berkeley) %G% |
a2907882 KM |
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. | |
66435314 | 19 | * "NFS: Network File System Protocol Specification" RFC1094 |
a2907882 KM |
20 | */ |
21 | ||
22 | #define NFS_PORT 2049 | |
23 | #define NFS_PROG 100003 | |
24 | #define NFS_VER2 2 | |
170bfd05 KM |
25 | #define NFS_MAXDGRAMDATA 8192 |
26 | #define NFS_MAXDATA 32768 | |
a2907882 KM |
27 | #define NFS_MAXPATHLEN 1024 |
28 | #define NFS_MAXNAMLEN 255 | |
29 | #define NFS_FHSIZE 32 | |
f0f1cbaa KM |
30 | #define NFS_MAXPKTHDR 404 |
31 | #define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA) | |
2c5b44a2 | 32 | #define NFS_MINPACKET 20 |
d4e5799e | 33 | #define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */ |
a2907882 KM |
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 | |
2c5b44a2 | 49 | #define NFSERR_NAMETOL 63 |
a2907882 KM |
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 | |
2c5b44a2 KM |
67 | #define NFSPROC_NOOP 3 |
68 | #define NFSPROC_ROOT NFSPROC_NOOP /* Obsolete */ | |
a2907882 KM |
69 | #define NFSPROC_LOOKUP 4 |
70 | #define NFSPROC_READLINK 5 | |
71 | #define NFSPROC_READ 6 | |
2c5b44a2 | 72 | #define NFSPROC_WRITECACHE NFSPROC_NOOP /* Obsolete */ |
a2907882 KM |
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 | ||
2c5b44a2 KM |
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 | |
a2907882 | 91 | /* Conversion macros */ |
c083d08d | 92 | extern int vttoif_tab[]; |
d4e5799e KM |
93 | #define vtonfs_mode(t,m) \ |
94 | txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \ | |
95 | MAKEIMODE((t), (m))) | |
a2907882 KM |
96 | #define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777) |
97 | #define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))]) | |
d4e5799e | 98 | #define nfstov_type(a) ntov_type[fxdr_unsigned(u_long,(a))&0x7] |
a2907882 KM |
99 | |
100 | /* File types */ | |
101 | typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype; | |
9238aa59 RM |
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 | }; |