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 | * | |
8 | * Redistribution and use in source and binary forms are permitted | |
9 | * provided that the above copyright notice and this paragraph are | |
10 | * duplicated in all such forms and that any documentation, | |
11 | * advertising materials, and other materials related to such | |
12 | * distribution and use acknowledge that the software was developed | |
13 | * by the University of California, Berkeley. The name of the | |
14 | * University may not be used to endorse or promote products derived | |
15 | * from this software without specific prior written permission. | |
16 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
17 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
19 | * | |
f0f1cbaa | 20 | * @(#)nfsproto.h 7.5 (Berkeley) %G% |
a2907882 KM |
21 | */ |
22 | ||
23 | /* | |
24 | * nfs definitions as per the version 2 specs | |
25 | */ | |
26 | ||
27 | /* | |
28 | * Constants as defined in the Sun NFS Version 2 spec. | |
66435314 | 29 | * "NFS: Network File System Protocol Specification" RFC1094 |
a2907882 KM |
30 | */ |
31 | ||
32 | #define NFS_PORT 2049 | |
33 | #define NFS_PROG 100003 | |
34 | #define NFS_VER2 2 | |
35 | #define NFS_MAXDATA 8192 | |
36 | #define NFS_MAXPATHLEN 1024 | |
37 | #define NFS_MAXNAMLEN 255 | |
38 | #define NFS_FHSIZE 32 | |
f0f1cbaa KM |
39 | #define NFS_MAXPKTHDR 404 |
40 | #define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA) | |
a2907882 KM |
41 | #define NFS_NPROCS 18 |
42 | ||
43 | /* Stat numbers for rpc returns */ | |
44 | #define NFS_OK 0 | |
45 | #define NFSERR_PERM 1 | |
46 | #define NFSERR_NOENT 2 | |
47 | #define NFSERR_IO 5 | |
48 | #define NFSERR_NXIO 6 | |
49 | #define NFSERR_ACCES 13 | |
50 | #define NFSERR_EXIST 17 | |
51 | #define NFSERR_NODEV 19 | |
52 | #define NFSERR_NOTDIR 20 | |
53 | #define NFSERR_ISDIR 21 | |
54 | #define NFSERR_FBIG 27 | |
55 | #define NFSERR_NOSPC 28 | |
56 | #define NFSERR_ROFS 30 | |
57 | #define NFSERR_NAMETOOLONG 63 | |
58 | #define NFSERR_NOTEMPTY 66 | |
59 | #define NFSERR_DQUOT 69 | |
60 | #define NFSERR_STALE 70 | |
61 | #define NFSERR_WFLUSH 99 | |
62 | ||
63 | /* Sizes in bytes of various nfs rpc components */ | |
64 | #define NFSX_FH 32 | |
65 | #define NFSX_UNSIGNED 4 | |
66 | #define NFSX_FATTR 68 | |
67 | #define NFSX_SATTR 32 | |
68 | #define NFSX_COOKIE 4 | |
69 | #define NFSX_STATFS 20 | |
70 | ||
71 | /* nfs rpc procedure numbers */ | |
72 | #define NFSPROC_NULL 0 | |
73 | #define NFSPROC_GETATTR 1 | |
74 | #define NFSPROC_SETATTR 2 | |
75 | #define NFSPROC_ROOT 3 /* Obsolete */ | |
76 | #define NFSPROC_LOOKUP 4 | |
77 | #define NFSPROC_READLINK 5 | |
78 | #define NFSPROC_READ 6 | |
79 | #define NFSPROC_WRITECACHE 7 /* Obsolete */ | |
80 | #define NFSPROC_WRITE 8 | |
81 | #define NFSPROC_CREATE 9 | |
82 | #define NFSPROC_REMOVE 10 | |
83 | #define NFSPROC_RENAME 11 | |
84 | #define NFSPROC_LINK 12 | |
85 | #define NFSPROC_SYMLINK 13 | |
86 | #define NFSPROC_MKDIR 14 | |
87 | #define NFSPROC_RMDIR 15 | |
88 | #define NFSPROC_READDIR 16 | |
89 | #define NFSPROC_STATFS 17 | |
90 | ||
91 | /* Conversion macros */ | |
c083d08d KM |
92 | extern int vttoif_tab[]; |
93 | #define vtonfs_mode(t,m) txdr_unsigned((int)(vttoif_tab[(int)(t)] | (m))) | |
a2907882 KM |
94 | #define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777) |
95 | #define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))]) | |
96 | #define nfstov_type(a) v_type[fxdr_unsigned(u_long, (a))] | |
97 | ||
98 | /* File types */ | |
99 | typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype; | |
9238aa59 RM |
100 | |
101 | /* Structs for common parts of the rpc's */ | |
102 | struct nfsv2_time { | |
103 | u_long tv_sec; | |
104 | u_long tv_usec; | |
105 | }; | |
106 | ||
107 | struct nfsv2_fattr { | |
108 | u_long fa_type; | |
109 | u_long fa_mode; | |
110 | u_long fa_nlink; | |
111 | u_long fa_uid; | |
112 | u_long fa_gid; | |
113 | u_long fa_size; | |
114 | u_long fa_blocksize; | |
115 | u_long fa_rdev; | |
116 | u_long fa_blocks; | |
117 | u_long fa_fsid; | |
118 | u_long fa_fileid; | |
119 | struct nfsv2_time fa_atime; | |
120 | struct nfsv2_time fa_mtime; | |
121 | struct nfsv2_time fa_ctime; | |
122 | }; | |
123 | ||
124 | struct nfsv2_sattr { | |
125 | u_long sa_mode; | |
126 | u_long sa_uid; | |
127 | u_long sa_gid; | |
128 | u_long sa_size; | |
129 | struct nfsv2_time sa_atime; | |
130 | struct nfsv2_time sa_mtime; | |
131 | }; | |
132 | ||
133 | struct nfsv2_statfs { | |
134 | u_long sf_tsize; | |
135 | u_long sf_bsize; | |
136 | u_long sf_blocks; | |
137 | u_long sf_bfree; | |
138 | u_long sf_bavail; | |
139 | }; |