1 | /* |
---|
2 | * Sun RPC is a product of Sun Microsystems, Inc. and is provided for |
---|
3 | * unrestricted use provided that this legend is included on all tape |
---|
4 | * media and as a part of the software program in whole or part. Users |
---|
5 | * may copy or modify Sun RPC without charge, but are not authorized |
---|
6 | * to license or distribute it to anyone else except as part of a product or |
---|
7 | * program developed by the user. |
---|
8 | * |
---|
9 | * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |
---|
10 | * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR |
---|
11 | * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. |
---|
12 | * |
---|
13 | * Sun RPC is provided with no support and without any obligation on the |
---|
14 | * part of Sun Microsystems, Inc. to assist in its use, correction, |
---|
15 | * modification or enhancement. |
---|
16 | * |
---|
17 | * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE |
---|
18 | * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC |
---|
19 | * OR ANY PART THEREOF. |
---|
20 | * |
---|
21 | * In no event will Sun Microsystems, Inc. be liable for any lost revenue |
---|
22 | * or profits or other special, indirect and consequential damages, even if |
---|
23 | * Sun has been advised of the possibility of such damages. |
---|
24 | * |
---|
25 | * Sun Microsystems, Inc. |
---|
26 | * 2550 Garcia Avenue |
---|
27 | * Mountain View, California 94043 |
---|
28 | */ |
---|
29 | |
---|
30 | /* |
---|
31 | * Protocol description for the mount program |
---|
32 | */ |
---|
33 | |
---|
34 | #ifndef RPC_HDR |
---|
35 | %#ifndef lint |
---|
36 | %/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/ |
---|
37 | %/*static char sccsid[] = "from: @(#)mount.x 2.1 88/08/01 4.0 RPCSRC";*/ |
---|
38 | %static const char rcsid[] = |
---|
39 | % "$FreeBSD: src/include/rpcsvc/mount.x,v 1.6 1999/08/27 23:45:08 peter Exp $"; |
---|
40 | %#endif /* not lint */ |
---|
41 | #endif |
---|
42 | |
---|
43 | const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ |
---|
44 | const MNTNAMLEN = 255; /* maximum bytes in a name argument */ |
---|
45 | const FHSIZE = 32; /* size in bytes of a file handle */ |
---|
46 | #ifdef WANT_NFS3 |
---|
47 | const FHSIZE3 = 64; /* size in bytes of a file handle (v3) */ |
---|
48 | #endif |
---|
49 | |
---|
50 | /* |
---|
51 | * The fhandle is the file handle that the server passes to the client. |
---|
52 | * All file operations are done using the file handles to refer to a file |
---|
53 | * or a directory. The file handle can contain whatever information the |
---|
54 | * server needs to distinguish an individual file. |
---|
55 | */ |
---|
56 | typedef opaque fhandle[FHSIZE]; |
---|
57 | #ifdef WANT_NFS3 |
---|
58 | typedef opaque fhandle3<FHSIZE3>; |
---|
59 | #endif |
---|
60 | |
---|
61 | /* |
---|
62 | * If a status of zero is returned, the call completed successfully, and |
---|
63 | * a file handle for the directory follows. A non-zero status indicates |
---|
64 | * some sort of error. The status corresponds with UNIX error numbers. |
---|
65 | */ |
---|
66 | union fhstatus switch (unsigned fhs_status) { |
---|
67 | case 0: |
---|
68 | fhandle fhs_fhandle; |
---|
69 | default: |
---|
70 | void; |
---|
71 | }; |
---|
72 | |
---|
73 | #ifdef WANT_NFS3 |
---|
74 | /* |
---|
75 | * Status codes returned by the version 3 mount call. |
---|
76 | */ |
---|
77 | enum mountstat3 { |
---|
78 | MNT3_OK = 0, /* no error */ |
---|
79 | MNT3ERR_PERM = 1, /* Not owner */ |
---|
80 | MNT3ERR_NOENT = 2, /* No such file or directory */ |
---|
81 | MNT3ERR_IO = 5, /* I/O error */ |
---|
82 | MNT3ERR_ACCES = 13, /* Permission denied */ |
---|
83 | MNT3ERR_NOTDIR = 20, /* Not a directory */ |
---|
84 | MNT3ERR_INVAL = 22, /* Invalid argument */ |
---|
85 | MNT3ERR_NAMETOOLONG = 63, /* Filename too long */ |
---|
86 | MNT3ERR_NOTSUPP = 10004, /* Operation not supported */ |
---|
87 | MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */ |
---|
88 | }; |
---|
89 | |
---|
90 | struct mountres3_ok { |
---|
91 | fhandle3 fhandle; |
---|
92 | int auth_flavors<>; |
---|
93 | }; |
---|
94 | |
---|
95 | union mountres3 switch (mountstat3 fhs_status) { |
---|
96 | case 0: |
---|
97 | mountres3_ok mountinfo; |
---|
98 | default: |
---|
99 | void; |
---|
100 | }; |
---|
101 | #endif |
---|
102 | |
---|
103 | /* |
---|
104 | * The type dirpath is the pathname of a directory |
---|
105 | */ |
---|
106 | typedef string dirpath<MNTPATHLEN>; |
---|
107 | |
---|
108 | /* |
---|
109 | * The type name is used for arbitrary names (hostnames, groupnames) |
---|
110 | */ |
---|
111 | typedef string name<MNTNAMLEN>; |
---|
112 | |
---|
113 | /* |
---|
114 | * A list of who has what mounted |
---|
115 | */ |
---|
116 | typedef struct mountbody *mountlist; |
---|
117 | struct mountbody { |
---|
118 | name ml_hostname; |
---|
119 | dirpath ml_directory; |
---|
120 | mountlist ml_next; |
---|
121 | }; |
---|
122 | |
---|
123 | /* |
---|
124 | * A list of netgroups |
---|
125 | */ |
---|
126 | typedef struct groupnode *groups; |
---|
127 | struct groupnode { |
---|
128 | name gr_name; |
---|
129 | groups gr_next; |
---|
130 | }; |
---|
131 | |
---|
132 | /* |
---|
133 | * A list of what is exported and to whom |
---|
134 | */ |
---|
135 | typedef struct exportnode *exports; |
---|
136 | struct exportnode { |
---|
137 | dirpath ex_dir; |
---|
138 | groups ex_groups; |
---|
139 | exports ex_next; |
---|
140 | }; |
---|
141 | |
---|
142 | program MOUNTPROG { |
---|
143 | /* |
---|
144 | * Version one of the mount protocol communicates with version two |
---|
145 | * of the NFS protocol. Version three communicates with |
---|
146 | * version three of the NFS protocol. The only connecting |
---|
147 | * point is the fhandle structure, which is the same for both |
---|
148 | * protocols. |
---|
149 | */ |
---|
150 | version MOUNTVERS { |
---|
151 | /* |
---|
152 | * Does no work. It is made available in all RPC services |
---|
153 | * to allow server reponse testing and timing |
---|
154 | */ |
---|
155 | void |
---|
156 | MOUNTPROC_NULL(void) = 0; |
---|
157 | |
---|
158 | /* |
---|
159 | * If fhs_status is 0, then fhs_fhandle contains the |
---|
160 | * file handle for the directory. This file handle may |
---|
161 | * be used in the NFS protocol. This procedure also adds |
---|
162 | * a new entry to the mount list for this client mounting |
---|
163 | * the directory. |
---|
164 | * Unix authentication required. |
---|
165 | */ |
---|
166 | fhstatus |
---|
167 | MOUNTPROC_MNT(dirpath) = 1; |
---|
168 | |
---|
169 | /* |
---|
170 | * Returns the list of remotely mounted filesystems. The |
---|
171 | * mountlist contains one entry for each hostname and |
---|
172 | * directory pair. |
---|
173 | */ |
---|
174 | mountlist |
---|
175 | MOUNTPROC_DUMP(void) = 2; |
---|
176 | |
---|
177 | /* |
---|
178 | * Removes the mount list entry for the directory |
---|
179 | * Unix authentication required. |
---|
180 | */ |
---|
181 | void |
---|
182 | MOUNTPROC_UMNT(dirpath) = 3; |
---|
183 | |
---|
184 | /* |
---|
185 | * Removes all of the mount list entries for this client |
---|
186 | * Unix authentication required. |
---|
187 | */ |
---|
188 | void |
---|
189 | MOUNTPROC_UMNTALL(void) = 4; |
---|
190 | |
---|
191 | /* |
---|
192 | * Returns a list of all the exported filesystems, and which |
---|
193 | * machines are allowed to import it. |
---|
194 | */ |
---|
195 | exports |
---|
196 | MOUNTPROC_EXPORT(void) = 5; |
---|
197 | |
---|
198 | /* |
---|
199 | * Identical to MOUNTPROC_EXPORT above |
---|
200 | */ |
---|
201 | exports |
---|
202 | MOUNTPROC_EXPORTALL(void) = 6; |
---|
203 | } = 1; |
---|
204 | #ifdef WANT_NFS3 |
---|
205 | version MOUNTVERS3 { |
---|
206 | /* |
---|
207 | * Does no work. It is made available in all RPC services |
---|
208 | * to allow server reponse testing and timing |
---|
209 | */ |
---|
210 | void |
---|
211 | MOUNTPROC_NULL(void) = 0; |
---|
212 | |
---|
213 | /* |
---|
214 | * If mountres3.fhs_status is MNT3_OK, then |
---|
215 | * mountres3.mountinfo contains the file handle for |
---|
216 | * the directory and a list of acceptable |
---|
217 | * authentication flavors. This file handle may only |
---|
218 | * be used in the NFS version 3 protocol. This |
---|
219 | * procedure also results in the server adding a new |
---|
220 | * entry to its mount list recording that this client |
---|
221 | * has mounted the directory. AUTH_UNIX authentication |
---|
222 | * or better is required. |
---|
223 | */ |
---|
224 | mountres3 |
---|
225 | MOUNTPROC_MNT(dirpath) = 1; |
---|
226 | |
---|
227 | /* |
---|
228 | * Returns the list of remotely mounted filesystems. The |
---|
229 | * mountlist contains one entry for each hostname and |
---|
230 | * directory pair. |
---|
231 | */ |
---|
232 | mountlist |
---|
233 | MOUNTPROC_DUMP(void) = 2; |
---|
234 | |
---|
235 | /* |
---|
236 | * Removes the mount list entry for the directory |
---|
237 | * Unix authentication required. |
---|
238 | */ |
---|
239 | void |
---|
240 | MOUNTPROC_UMNT(dirpath) = 3; |
---|
241 | |
---|
242 | /* |
---|
243 | * Removes all of the mount list entries for this client |
---|
244 | * Unix authentication required. |
---|
245 | */ |
---|
246 | void |
---|
247 | MOUNTPROC_UMNTALL(void) = 4; |
---|
248 | |
---|
249 | /* |
---|
250 | * Returns a list of all the exported filesystems, and which |
---|
251 | * machines are allowed to import it. |
---|
252 | */ |
---|
253 | exports |
---|
254 | MOUNTPROC_EXPORT(void) = 5; |
---|
255 | } = 3; |
---|
256 | #endif |
---|
257 | } = 100005; |
---|