home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume21 / amd / part04 / amq.x < prev    next >
Text File  |  1990-04-10  |  4KB  |  158 lines

  1. /*
  2.  * $Id: amq.x,v 5.1.1.1 90/01/11 17:02:14 jsp Exp Locker: jsp $
  3.  *
  4.  * Copyright (c) 1990 Jan-Simon Pendry
  5.  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
  6.  * Copyright (c) 1990 The Regents of the University of California.
  7.  * All rights reserved.
  8.  *
  9.  * This code is derived from software contributed to Berkeley by
  10.  * Jan-Simon Pendry at Imperial College, London.
  11.  *
  12.  * Redistribution and use in source and binary forms are permitted
  13.  * provided that the above copyright notice and this paragraph are
  14.  * duplicated in all such forms and that any documentation,
  15.  * advertising materials, and other materials related to such
  16.  * distribution and use acknowledge that the software was developed
  17.  * by Imperial College of Science, Technology and Medicine, London, UK.
  18.  * The names of the College and University may not be used to endorse
  19.  * or promote products derived from this software without specific
  20.  * prior written permission.
  21.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  22.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  23.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  24.  *
  25.  *    %W% (Berkeley) %G%
  26.  */
  27.  
  28. /*
  29.  * Protocol description used by the amq program
  30.  */
  31.  
  32. const AMQ_STRLEN = 1024;    /* Maximum length of a pathname */
  33.  
  34. /*
  35.  * The type dirpath is the pathname of a directory
  36.  */
  37. typedef string amq_string<AMQ_STRLEN>;
  38.  
  39. /*
  40.  * The type time_type should correspond to the system time_t
  41.  */
  42. typedef long time_type;
  43.  
  44. /*
  45.  * A tree of what is mounted
  46.  */
  47. struct amq_mount_tree {
  48.     amq_string    mt_mountinfo;    /* Mounted filesystem */
  49.     amq_string     mt_directory;    /* Virtual mount */
  50.     amq_string     mt_mountpoint;    /* Mount point */
  51.     amq_string    mt_type;    /* Filesystem type */
  52.     time_type    mt_mounttime;    /* Mount time */
  53.     u_short        mt_mountuid;    /* Mounter */
  54.     int        mt_getattr;    /* Count of getattrs */
  55.     int        mt_lookup;    /* Count of lookups */
  56.     int        mt_readdir;    /* Count of readdirs */
  57.     int        mt_readlink;    /* Count of readlinks */
  58.     int        mt_statfs;    /* Count of statfss */
  59.     amq_mount_tree    *mt_next;    /* Sibling mount tree */
  60.     amq_mount_tree    *mt_child;    /* Child mount tree */
  61. };
  62. typedef amq_mount_tree *amq_mount_tree_p;
  63.  
  64. /*
  65.  * List of mounted filesystems
  66.  */
  67. struct amq_mount_info {
  68.     amq_string    mi_type;    /* Type of mount */
  69.     amq_string    mi_mountpt;    /* Mount point */
  70.     amq_string    mi_mountinfo;    /* Mount info */
  71.     amq_string    mi_fserver;    /* Fileserver */
  72.     int        mi_error;    /* Error code */
  73.     int        mi_refc;    /* References */
  74.     int        mi_up;        /* Filesystem available */
  75. };
  76. typedef amq_mount_info amq_mount_info_list<>;
  77.  
  78. /*
  79.  * A list of mount trees
  80.  */
  81. typedef amq_mount_tree_p amq_mount_tree_list<>;
  82.  
  83. /*
  84.  * System wide stats
  85.  */
  86. struct amq_mount_stats {
  87.     int    as_drops;    /* Dropped requests */
  88.     int    as_stale;    /* Stale NFS handles */
  89.     int    as_mok;        /* Succesful mounts */
  90.     int    as_merr;    /* Failed mounts */
  91.     int    as_uerr;    /* Failed unmounts */
  92. };
  93.  
  94. enum amq_opt {
  95.     AMOPT_DEBUG=0,
  96.     AMOPT_LOGFILE=1,
  97.     AMOPT_XLOG=2,
  98.     AMOPT_FLUSHMAPC=3
  99. };
  100.  
  101. struct amq_setopt {
  102.     amq_opt    as_opt;        /* Option */
  103.     amq_string as_str;    /* String */
  104. };
  105.  
  106. program AMQ_PROGRAM {
  107.     version AMQ_VERSION {
  108.         /*
  109.          * Does no work. It is made available in all RPC services
  110.          * to allow server reponse testing and timing
  111.          */
  112.         void
  113.         AMQPROC_NULL(void) = 0;
  114.  
  115.         /*
  116.          * Returned the mount tree descending from
  117.          * the given directory.  The directory must
  118.          * be a top-level mount point of the automounter.
  119.          */
  120.         amq_mount_tree_p
  121.         AMQPROC_MNTTREE(amq_string) = 1;
  122.  
  123.         /*
  124.          * Force a timeout unmount on the specified directory.
  125.          */
  126.         void
  127.         AMQPROC_UMNT(amq_string) = 2;
  128.  
  129.         /*
  130.          * Obtain system wide statistics from the automounter
  131.          */
  132.         amq_mount_stats
  133.         AMQPROC_STATS(void) = 3;
  134.  
  135.         /*
  136.          * Obtain full tree
  137.          */
  138.         amq_mount_tree_list
  139.         AMQPROC_EXPORT(void) = 4;
  140.  
  141.         /*
  142.          * Control debug options.
  143.          * Return status:
  144.          *    -1: debug not available
  145.          *     0: everything wonderful
  146.          *    >0: number of options not recognised
  147.          */
  148.         int
  149.         AMQPROC_SETOPT(amq_setopt) = 5;
  150.  
  151.         /*
  152.          * List of mounted filesystems
  153.          */
  154.         amq_mount_info_list
  155.         AMQPROC_GETMNTFS(void) = 6;
  156.     } = 1;
  157. } = 300019;    /* Allocated by Sun, 89/8/29 */
  158.