1df930be7Sderaadt /* 2df930be7Sderaadt * Copyright (c) 1990 Jan-Simon Pendry 3df930be7Sderaadt * Copyright (c) 1990 Imperial College of Science, Technology & Medicine 4df930be7Sderaadt * Copyright (c) 1990, 1993 5df930be7Sderaadt * The Regents of the University of California. All rights reserved. 6df930be7Sderaadt * 7df930be7Sderaadt * This code is derived from software contributed to Berkeley by 8df930be7Sderaadt * Jan-Simon Pendry at Imperial College, London. 9df930be7Sderaadt * 10df930be7Sderaadt * Redistribution and use in source and binary forms, with or without 11df930be7Sderaadt * modification, are permitted provided that the following conditions 12df930be7Sderaadt * are met: 13df930be7Sderaadt * 1. Redistributions of source code must retain the above copyright 14df930be7Sderaadt * notice, this list of conditions and the following disclaimer. 15df930be7Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 16df930be7Sderaadt * notice, this list of conditions and the following disclaimer in the 17df930be7Sderaadt * documentation and/or other materials provided with the distribution. 1829295d1cSmillert * 3. Neither the name of the University nor the names of its contributors 19df930be7Sderaadt * may be used to endorse or promote products derived from this software 20df930be7Sderaadt * without specific prior written permission. 21df930be7Sderaadt * 22df930be7Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23df930be7Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24df930be7Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25df930be7Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26df930be7Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27df930be7Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28df930be7Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29df930be7Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30df930be7Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31df930be7Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32df930be7Sderaadt * SUCH DAMAGE. 33df930be7Sderaadt * 34df930be7Sderaadt * from: @(#)amq.x 8.1 (Berkeley) 6/6/93 35*3a50f0a9Sjmc * $Id: amq.x,v 1.7 2022/12/28 21:30:15 jmc Exp $ 36df930be7Sderaadt * 37df930be7Sderaadt */ 38df930be7Sderaadt 39df930be7Sderaadt /* 40df930be7Sderaadt * Protocol description used by the amq program 41df930be7Sderaadt */ 42df930be7Sderaadt 43df930be7Sderaadt const AMQ_STRLEN = 1024; /* Maximum length of a pathname */ 44df930be7Sderaadt 45df930be7Sderaadt /* 46df930be7Sderaadt * The type dirpath is the pathname of a directory 47df930be7Sderaadt */ 48df930be7Sderaadt typedef string amq_string<AMQ_STRLEN>; 49df930be7Sderaadt 50df930be7Sderaadt /* 51df930be7Sderaadt * The type time_type should correspond to the system time_t 52df930be7Sderaadt */ 530e5693fdSguenther typedef int64_t time_type; 54df930be7Sderaadt 55df930be7Sderaadt /* 56df930be7Sderaadt * A tree of what is mounted 57df930be7Sderaadt */ 58df930be7Sderaadt struct amq_mount_tree { 59df930be7Sderaadt amq_string mt_mountinfo; /* Mounted filesystem */ 60df930be7Sderaadt amq_string mt_directory; /* Virtual mount */ 61df930be7Sderaadt amq_string mt_mountpoint; /* Mount point */ 62df930be7Sderaadt amq_string mt_type; /* Filesystem type */ 63df930be7Sderaadt time_type mt_mounttime; /* Mount time */ 64df930be7Sderaadt u_short mt_mountuid; /* Mounter */ 65df930be7Sderaadt int mt_getattr; /* Count of getattrs */ 66df930be7Sderaadt int mt_lookup; /* Count of lookups */ 67df930be7Sderaadt int mt_readdir; /* Count of readdirs */ 68df930be7Sderaadt int mt_readlink; /* Count of readlinks */ 69df930be7Sderaadt int mt_statfs; /* Count of statfss */ 70df930be7Sderaadt amq_mount_tree *mt_next; /* Sibling mount tree */ 71df930be7Sderaadt amq_mount_tree *mt_child; /* Child mount tree */ 72df930be7Sderaadt }; 73df930be7Sderaadt typedef amq_mount_tree *amq_mount_tree_p; 74df930be7Sderaadt 75df930be7Sderaadt /* 76df930be7Sderaadt * List of mounted filesystems 77df930be7Sderaadt */ 78df930be7Sderaadt struct amq_mount_info { 79df930be7Sderaadt amq_string mi_type; /* Type of mount */ 80df930be7Sderaadt amq_string mi_mountpt; /* Mount point */ 81df930be7Sderaadt amq_string mi_mountinfo; /* Mount info */ 82df930be7Sderaadt amq_string mi_fserver; /* Fileserver */ 83df930be7Sderaadt int mi_error; /* Error code */ 84df930be7Sderaadt int mi_refc; /* References */ 85df930be7Sderaadt int mi_up; /* Filesystem available */ 86df930be7Sderaadt }; 87df930be7Sderaadt typedef amq_mount_info amq_mount_info_list<>; 88df930be7Sderaadt 89df930be7Sderaadt /* 90df930be7Sderaadt * A list of mount trees 91df930be7Sderaadt */ 92df930be7Sderaadt typedef amq_mount_tree_p amq_mount_tree_list<>; 93df930be7Sderaadt 94df930be7Sderaadt /* 95df930be7Sderaadt * System wide stats 96df930be7Sderaadt */ 97df930be7Sderaadt struct amq_mount_stats { 98df930be7Sderaadt int as_drops; /* Dropped requests */ 99df930be7Sderaadt int as_stale; /* Stale NFS handles */ 1006957a4a4Sjmc int as_mok; /* Successful mounts */ 101df930be7Sderaadt int as_merr; /* Failed mounts */ 102df930be7Sderaadt int as_uerr; /* Failed unmounts */ 103df930be7Sderaadt }; 104df930be7Sderaadt 105df930be7Sderaadt enum amq_opt { 106df930be7Sderaadt AMOPT_DEBUG=0, 107df930be7Sderaadt AMOPT_LOGFILE=1, 108df930be7Sderaadt AMOPT_XLOG=2, 109df930be7Sderaadt AMOPT_FLUSHMAPC=3 110df930be7Sderaadt }; 111df930be7Sderaadt 112df930be7Sderaadt struct amq_setopt { 113df930be7Sderaadt amq_opt as_opt; /* Option */ 114df930be7Sderaadt amq_string as_str; /* String */ 115df930be7Sderaadt }; 116df930be7Sderaadt 117df930be7Sderaadt program AMQ_PROGRAM { 118df930be7Sderaadt version AMQ_VERSION { 119df930be7Sderaadt /* 120df930be7Sderaadt * Does no work. It is made available in all RPC services 121*3a50f0a9Sjmc * to allow server response testing and timing 122df930be7Sderaadt */ 123df930be7Sderaadt void 124df930be7Sderaadt AMQPROC_NULL(void) = 0; 125df930be7Sderaadt 126df930be7Sderaadt /* 127df930be7Sderaadt * Returned the mount tree descending from 128df930be7Sderaadt * the given directory. The directory must 129df930be7Sderaadt * be a top-level mount point of the automounter. 130df930be7Sderaadt */ 131df930be7Sderaadt amq_mount_tree_p 132df930be7Sderaadt AMQPROC_MNTTREE(amq_string) = 1; 133df930be7Sderaadt 134df930be7Sderaadt /* 135df930be7Sderaadt * Force a timeout unmount on the specified directory. 136df930be7Sderaadt */ 137df930be7Sderaadt void 138df930be7Sderaadt AMQPROC_UMNT(amq_string) = 2; 139df930be7Sderaadt 140df930be7Sderaadt /* 141df930be7Sderaadt * Obtain system wide statistics from the automounter 142df930be7Sderaadt */ 143df930be7Sderaadt amq_mount_stats 144df930be7Sderaadt AMQPROC_STATS(void) = 3; 145df930be7Sderaadt 146df930be7Sderaadt /* 147df930be7Sderaadt * Obtain full tree 148df930be7Sderaadt */ 149df930be7Sderaadt amq_mount_tree_list 150df930be7Sderaadt AMQPROC_EXPORT(void) = 4; 151df930be7Sderaadt 152df930be7Sderaadt /* 153df930be7Sderaadt * Control debug options. 154df930be7Sderaadt * Return status: 155df930be7Sderaadt * -1: debug not available 156df930be7Sderaadt * 0: everything wonderful 157df930be7Sderaadt * >0: number of options not recognised 158df930be7Sderaadt */ 159df930be7Sderaadt int 160df930be7Sderaadt AMQPROC_SETOPT(amq_setopt) = 5; 161df930be7Sderaadt 162df930be7Sderaadt /* 163df930be7Sderaadt * List of mounted filesystems 164df930be7Sderaadt */ 165df930be7Sderaadt amq_mount_info_list 166df930be7Sderaadt AMQPROC_GETMNTFS(void) = 6; 167df930be7Sderaadt 168df930be7Sderaadt /* 169df930be7Sderaadt * Get version info 170df930be7Sderaadt */ 171df930be7Sderaadt amq_string 1720e5693fdSguenther AMQPROC_GETVERS(void) = 7; 1730e5693fdSguenther } = 57; 174df930be7Sderaadt } = 300019; /* Allocated by Sun, 89/8/29 */ 175