mount.x revision 1.3
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%#include <sys/cdefs.h>
36%#ifndef lint
37%/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
38%/*static char sccsid[] = "from: @(#)mount.x	2.1 88/08/01 4.0 RPCSRC";*/
39%__RCSID("$NetBSD: mount.x,v 1.3 1997/10/09 14:21:20 lukem Exp $");
40%#endif /* not lint */
41#endif
42
43const MNTPATHLEN = 1024;	/* maximum bytes in a pathname argument */
44const MNTNAMLEN = 255;		/* maximum bytes in a name argument */
45const FHSIZE = 32;		/* size in bytes of a file handle */
46
47/*
48 * The fhandle is the file handle that the server passes to the client.
49 * All file operations are done using the file handles to refer to a file
50 * or a directory. The file handle can contain whatever information the
51 * server needs to distinguish an individual file.
52 */
53typedef opaque fhandle[FHSIZE];
54
55/*
56 * If a status of zero is returned, the call completed successfully, and
57 * a file handle for the directory follows. A non-zero status indicates
58 * some sort of error. The status corresponds with UNIX error numbers.
59 */
60union fhstatus switch (unsigned fhs_status) {
61case 0:
62	fhandle fhs_fhandle;
63default:
64	void;
65};
66
67/*
68 * The type dirpath is the pathname of a directory
69 */
70typedef string dirpath<MNTPATHLEN>;
71
72/*
73 * The type name is used for arbitrary names (hostnames, groupnames)
74 */
75typedef string name<MNTNAMLEN>;
76
77/*
78 * A list of who has what mounted
79 */
80typedef struct mountbody *mountlist;
81struct mountbody {
82	name ml_hostname;
83	dirpath ml_directory;
84	mountlist ml_next;
85};
86
87/*
88 * A list of netgroups
89 */
90typedef struct groupnode *groups;
91struct groupnode {
92	name gr_name;
93	groups gr_next;
94};
95
96/*
97 * A list of what is exported and to whom
98 */
99typedef struct exportnode *exports;
100struct exportnode {
101	dirpath ex_dir;
102	groups ex_groups;
103	exports ex_next;
104};
105
106program MOUNTPROG {
107	/*
108	 * Version one of the mount protocol communicates with version two
109	 * of the NFS protocol. The only connecting point is the fhandle
110	 * structure, which is the same for both protocols.
111	 */
112	version MOUNTVERS {
113		/*
114		 * Does no work. It is made available in all RPC services
115		 * to allow server reponse testing and timing
116		 */
117		void
118		MOUNTPROC_NULL(void) = 0;
119
120		/*
121		 * If fhs_status is 0, then fhs_fhandle contains the
122	 	 * file handle for the directory. This file handle may
123		 * be used in the NFS protocol. This procedure also adds
124		 * a new entry to the mount list for this client mounting
125		 * the directory.
126		 * Unix authentication required.
127		 */
128		fhstatus
129		MOUNTPROC_MNT(dirpath) = 1;
130
131		/*
132		 * Returns the list of remotely mounted filesystems. The
133		 * mountlist contains one entry for each hostname and
134		 * directory pair.
135		 */
136		mountlist
137		MOUNTPROC_DUMP(void) = 2;
138
139		/*
140		 * Removes the mount list entry for the directory
141		 * Unix authentication required.
142		 */
143		void
144		MOUNTPROC_UMNT(dirpath) = 3;
145
146		/*
147		 * Removes all of the mount list entries for this client
148		 * Unix authentication required.
149		 */
150		void
151		MOUNTPROC_UMNTALL(void) = 4;
152
153		/*
154		 * Returns a list of all the exported filesystems, and which
155		 * machines are allowed to import it.
156		 */
157		exports
158		MOUNTPROC_EXPORT(void)  = 5;
159
160		/*
161		 * Identical to MOUNTPROC_EXPORT above
162		 */
163		exports
164		MOUNTPROC_EXPORTALL(void) = 6;
165	} = 1;
166} = 100005;
167