home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume21 / amd / part03 / mount.x < prev    next >
Text File  |  1990-04-11  |  3KB  |  133 lines

  1. /* $Id: mount.x,v 5.1 89/11/17 18:20:52 jsp Exp Locker: jsp $ */
  2. /* From: mount.x 1.4 88/02/08 Copyr 1987 Sun Micro */
  3.  
  4. /*
  5.  * Protocol description for the mount program
  6.  */
  7.  
  8.  
  9. const MNTPATHLEN = 1024;    /* maximum bytes in a pathname argument */
  10. const MNTNAMLEN = 255;        /* maximum bytes in a name argument */
  11. const FHSIZE = 32;        /* size in bytes of a file handle */
  12.  
  13. /*
  14.  * The fhandle is the file handle that the server passes to the client.
  15.  * All file operations are done using the file handles to refer to a file
  16.  * or a directory. The file handle can contain whatever information the
  17.  * server needs to distinguish an individual file.
  18.  */
  19. typedef opaque fhandle[FHSIZE];    
  20.  
  21. /*
  22.  * If a status of zero is returned, the call completed successfully, and 
  23.  * a file handle for the directory follows. A non-zero status indicates
  24.  * some sort of error. The status corresponds with UNIX error numbers.
  25.  */
  26. union fhstatus switch (unsigned fhs_status) {
  27. case 0:
  28.     fhandle fhs_fhandle;
  29. default:
  30.     void;
  31. };
  32.  
  33. /*
  34.  * The type dirpath is the pathname of a directory
  35.  */
  36. typedef string dirpath<MNTPATHLEN>;
  37.  
  38. /*
  39.  * The type name is used for arbitrary names (hostnames, groupnames)
  40.  */
  41. typedef string name<MNTNAMLEN>;
  42.  
  43. /*
  44.  * A list of who has what mounted
  45.  */
  46. typedef struct mountbody *mountlist;
  47. struct mountbody {
  48.     name ml_hostname;
  49.     dirpath ml_directory;
  50.     mountlist ml_next;
  51. };
  52.  
  53. /*
  54.  * A list of netgroups
  55.  */
  56. typedef struct groupnode *groups;
  57. struct groupnode {
  58.     name gr_name;
  59.     groups gr_next;
  60. };
  61.  
  62. /*
  63.  * A list of what is exported and to whom
  64.  */
  65. typedef struct exportnode *exports;
  66. struct exportnode {
  67.     dirpath ex_dir;
  68.     groups ex_groups;
  69.     exports ex_next;
  70. };
  71.  
  72. program MOUNTPROG {
  73.     /*
  74.      * Version one of the mount protocol communicates with version two
  75.      * of the NFS protocol. The only connecting point is the fhandle 
  76.      * structure, which is the same for both protocols.
  77.      */
  78.     version MOUNTVERS {
  79.         /*
  80.          * Does no work. It is made available in all RPC services
  81.          * to allow server reponse testing and timing
  82.          */
  83.         void
  84.         MOUNTPROC_NULL(void) = 0;
  85.  
  86.         /*    
  87.          * If fhs_status is 0, then fhs_fhandle contains the
  88.           * file handle for the directory. This file handle may
  89.          * be used in the NFS protocol. This procedure also adds
  90.          * a new entry to the mount list for this client mounting
  91.          * the directory.
  92.          * Unix authentication required.
  93.          */
  94.         fhstatus 
  95.         MOUNTPROC_MNT(dirpath) = 1;
  96.  
  97.         /*
  98.          * Returns the list of remotely mounted filesystems. The 
  99.          * mountlist contains one entry for each hostname and 
  100.          * directory pair.
  101.          */
  102.         mountlist
  103.         MOUNTPROC_DUMP(void) = 2;
  104.  
  105.         /*
  106.          * Removes the mount list entry for the directory
  107.          * Unix authentication required.
  108.          */
  109.         void
  110.         MOUNTPROC_UMNT(dirpath) = 3;
  111.  
  112.         /*
  113.          * Removes all of the mount list entries for this client
  114.          * Unix authentication required.
  115.          */
  116.         void
  117.         MOUNTPROC_UMNTALL(void) = 4;
  118.  
  119.         /*
  120.          * Returns a list of all the exported filesystems, and which
  121.          * machines are allowed to import it.
  122.          */
  123.         exports
  124.         MOUNTPROC_EXPORT(void)  = 5;
  125.     
  126.         /*
  127.          * Identical to MOUNTPROC_EXPORT above
  128.          */
  129.         exports
  130.         MOUNTPROC_EXPORTALL(void) = 6;
  131.     } = 1;
  132. } = 100005;
  133.