1*53ee8cc1Swenshuai.xi /* @(#)mount.x 2.1 88/08/01 4.0 RPCSRC */ 2*53ee8cc1Swenshuai.xi /* @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro */ 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi /* 5*53ee8cc1Swenshuai.xi * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 6*53ee8cc1Swenshuai.xi * unrestricted use provided that this legend is included on all tape 7*53ee8cc1Swenshuai.xi * media and as a part of the software program in whole or part. Users 8*53ee8cc1Swenshuai.xi * may copy or modify Sun RPC without charge, but are not authorized 9*53ee8cc1Swenshuai.xi * to license or distribute it to anyone else except as part of a product or 10*53ee8cc1Swenshuai.xi * program developed by the user. 11*53ee8cc1Swenshuai.xi * 12*53ee8cc1Swenshuai.xi * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 13*53ee8cc1Swenshuai.xi * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 14*53ee8cc1Swenshuai.xi * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 15*53ee8cc1Swenshuai.xi * 16*53ee8cc1Swenshuai.xi * Sun RPC is provided with no support and without any obligation on the 17*53ee8cc1Swenshuai.xi * part of Sun Microsystems, Inc. to assist in its use, correction, 18*53ee8cc1Swenshuai.xi * modification or enhancement. 19*53ee8cc1Swenshuai.xi * 20*53ee8cc1Swenshuai.xi * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 21*53ee8cc1Swenshuai.xi * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 22*53ee8cc1Swenshuai.xi * OR ANY PART THEREOF. 23*53ee8cc1Swenshuai.xi * 24*53ee8cc1Swenshuai.xi * In no event will Sun Microsystems, Inc. be liable for any lost revenue 25*53ee8cc1Swenshuai.xi * or profits or other special, indirect and consequential damages, even if 26*53ee8cc1Swenshuai.xi * Sun has been advised of the possibility of such damages. 27*53ee8cc1Swenshuai.xi * 28*53ee8cc1Swenshuai.xi * Sun Microsystems, Inc. 29*53ee8cc1Swenshuai.xi * 2550 Garcia Avenue 30*53ee8cc1Swenshuai.xi * Mountain View, California 94043 31*53ee8cc1Swenshuai.xi */ 32*53ee8cc1Swenshuai.xi 33*53ee8cc1Swenshuai.xi /* 34*53ee8cc1Swenshuai.xi * Protocol description for the mount program 35*53ee8cc1Swenshuai.xi */ 36*53ee8cc1Swenshuai.xi 37*53ee8cc1Swenshuai.xi 38*53ee8cc1Swenshuai.xi const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ 39*53ee8cc1Swenshuai.xi const MNTNAMLEN = 255; /* maximum bytes in a name argument */ 40*53ee8cc1Swenshuai.xi const FHSIZE = 32; /* size in bytes of a file handle */ 41*53ee8cc1Swenshuai.xi 42*53ee8cc1Swenshuai.xi /* 43*53ee8cc1Swenshuai.xi * The fhandle is the file handle that the server passes to the client. 44*53ee8cc1Swenshuai.xi * All file operations are done using the file handles to refer to a file 45*53ee8cc1Swenshuai.xi * or a directory. The file handle can contain whatever information the 46*53ee8cc1Swenshuai.xi * server needs to distinguish an individual file. 47*53ee8cc1Swenshuai.xi */ 48*53ee8cc1Swenshuai.xi typedef opaque fhandle[FHSIZE]; 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi /* 51*53ee8cc1Swenshuai.xi * If a status of zero is returned, the call completed successfully, and 52*53ee8cc1Swenshuai.xi * a file handle for the directory follows. A non-zero status indicates 53*53ee8cc1Swenshuai.xi * some sort of error. The status corresponds with UNIX error numbers. 54*53ee8cc1Swenshuai.xi */ 55*53ee8cc1Swenshuai.xi union fhstatus switch (unsigned fhs_status) { 56*53ee8cc1Swenshuai.xi case 0: 57*53ee8cc1Swenshuai.xi fhandle fhs_fhandle; 58*53ee8cc1Swenshuai.xi default: 59*53ee8cc1Swenshuai.xi void; 60*53ee8cc1Swenshuai.xi }; 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi /* 63*53ee8cc1Swenshuai.xi * The type dirpath is the pathname of a directory 64*53ee8cc1Swenshuai.xi */ 65*53ee8cc1Swenshuai.xi typedef string dirpath<MNTPATHLEN>; 66*53ee8cc1Swenshuai.xi 67*53ee8cc1Swenshuai.xi /* 68*53ee8cc1Swenshuai.xi * The type name is used for arbitrary names (hostnames, groupnames) 69*53ee8cc1Swenshuai.xi */ 70*53ee8cc1Swenshuai.xi typedef string name<MNTNAMLEN>; 71*53ee8cc1Swenshuai.xi 72*53ee8cc1Swenshuai.xi /* 73*53ee8cc1Swenshuai.xi * A list of who has what mounted 74*53ee8cc1Swenshuai.xi */ 75*53ee8cc1Swenshuai.xi typedef struct mountbody *mountlist; 76*53ee8cc1Swenshuai.xi struct mountbody { 77*53ee8cc1Swenshuai.xi name ml_hostname; 78*53ee8cc1Swenshuai.xi dirpath ml_directory; 79*53ee8cc1Swenshuai.xi mountlist ml_next; 80*53ee8cc1Swenshuai.xi }; 81*53ee8cc1Swenshuai.xi 82*53ee8cc1Swenshuai.xi /* 83*53ee8cc1Swenshuai.xi * A list of netgroups 84*53ee8cc1Swenshuai.xi */ 85*53ee8cc1Swenshuai.xi typedef struct groupnode *groups; 86*53ee8cc1Swenshuai.xi struct groupnode { 87*53ee8cc1Swenshuai.xi name gr_name; 88*53ee8cc1Swenshuai.xi groups gr_next; 89*53ee8cc1Swenshuai.xi }; 90*53ee8cc1Swenshuai.xi 91*53ee8cc1Swenshuai.xi /* 92*53ee8cc1Swenshuai.xi * A list of what is exported and to whom 93*53ee8cc1Swenshuai.xi */ 94*53ee8cc1Swenshuai.xi typedef struct exportnode *exports; 95*53ee8cc1Swenshuai.xi struct exportnode { 96*53ee8cc1Swenshuai.xi dirpath ex_dir; 97*53ee8cc1Swenshuai.xi groups ex_groups; 98*53ee8cc1Swenshuai.xi exports ex_next; 99*53ee8cc1Swenshuai.xi }; 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi program MOUNTPROG { 102*53ee8cc1Swenshuai.xi /* 103*53ee8cc1Swenshuai.xi * Version one of the mount protocol communicates with version two 104*53ee8cc1Swenshuai.xi * of the NFS protocol. The only connecting point is the fhandle 105*53ee8cc1Swenshuai.xi * structure, which is the same for both protocols. 106*53ee8cc1Swenshuai.xi */ 107*53ee8cc1Swenshuai.xi version MOUNTVERS { 108*53ee8cc1Swenshuai.xi /* 109*53ee8cc1Swenshuai.xi * Does no work. It is made available in all RPC services 110*53ee8cc1Swenshuai.xi * to allow server response testing and timing 111*53ee8cc1Swenshuai.xi */ 112*53ee8cc1Swenshuai.xi void 113*53ee8cc1Swenshuai.xi MOUNTPROC_NULL(void) = 0; 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi /* 116*53ee8cc1Swenshuai.xi * If fhs_status is 0, then fhs_fhandle contains the 117*53ee8cc1Swenshuai.xi * file handle for the directory. This file handle may 118*53ee8cc1Swenshuai.xi * be used in the NFS protocol. This procedure also adds 119*53ee8cc1Swenshuai.xi * a new entry to the mount list for this client mounting 120*53ee8cc1Swenshuai.xi * the directory. 121*53ee8cc1Swenshuai.xi * Unix authentication required. 122*53ee8cc1Swenshuai.xi */ 123*53ee8cc1Swenshuai.xi fhstatus 124*53ee8cc1Swenshuai.xi MOUNTPROC_MNT(dirpath) = 1; 125*53ee8cc1Swenshuai.xi 126*53ee8cc1Swenshuai.xi /* 127*53ee8cc1Swenshuai.xi * Returns the list of remotely mounted filesystems. The 128*53ee8cc1Swenshuai.xi * mountlist contains one entry for each hostname and 129*53ee8cc1Swenshuai.xi * directory pair. 130*53ee8cc1Swenshuai.xi */ 131*53ee8cc1Swenshuai.xi mountlist 132*53ee8cc1Swenshuai.xi MOUNTPROC_DUMP(void) = 2; 133*53ee8cc1Swenshuai.xi 134*53ee8cc1Swenshuai.xi /* 135*53ee8cc1Swenshuai.xi * Removes the mount list entry for the directory 136*53ee8cc1Swenshuai.xi * Unix authentication required. 137*53ee8cc1Swenshuai.xi */ 138*53ee8cc1Swenshuai.xi void 139*53ee8cc1Swenshuai.xi MOUNTPROC_UMNT(dirpath) = 3; 140*53ee8cc1Swenshuai.xi 141*53ee8cc1Swenshuai.xi /* 142*53ee8cc1Swenshuai.xi * Removes all of the mount list entries for this client 143*53ee8cc1Swenshuai.xi * Unix authentication required. 144*53ee8cc1Swenshuai.xi */ 145*53ee8cc1Swenshuai.xi void 146*53ee8cc1Swenshuai.xi MOUNTPROC_UMNTALL(void) = 4; 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi /* 149*53ee8cc1Swenshuai.xi * Returns a list of all the exported filesystems, and which 150*53ee8cc1Swenshuai.xi * machines are allowed to import it. 151*53ee8cc1Swenshuai.xi */ 152*53ee8cc1Swenshuai.xi exports 153*53ee8cc1Swenshuai.xi MOUNTPROC_EXPORT(void) = 5; 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi /* 156*53ee8cc1Swenshuai.xi * Identical to MOUNTPROC_EXPORT above 157*53ee8cc1Swenshuai.xi */ 158*53ee8cc1Swenshuai.xi exports 159*53ee8cc1Swenshuai.xi MOUNTPROC_EXPORTALL(void) = 6; 160*53ee8cc1Swenshuai.xi } = 1; 161*53ee8cc1Swenshuai.xi } = 100005; 162