1130b656e5
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
186 lines
5.1 KiB
Plaintext
186 lines
5.1 KiB
Plaintext
/*
|
|
* Copyright (c) 1990 Jan-Simon Pendry
|
|
* Copyright (c) 1990 Imperial College of Science, Technology & Medicine
|
|
* Copyright (c) 1990, 1993
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* This code is derived from software contributed to Berkeley by
|
|
* Jan-Simon Pendry at Imperial College, London.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by the University of
|
|
* California, Berkeley and its contributors.
|
|
* 4. Neither the name of the University nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* @(#)amq.x 8.1 (Berkeley) 6/6/93
|
|
*
|
|
* $FreeBSD$
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* Protocol description used by the amq program
|
|
*/
|
|
|
|
const AMQ_STRLEN = 1024; /* Maximum length of a pathname */
|
|
|
|
/*
|
|
* The type dirpath is the pathname of a directory
|
|
*/
|
|
typedef string amq_string<AMQ_STRLEN>;
|
|
|
|
/*
|
|
* The type time_type should correspond to the system time_t
|
|
*/
|
|
typedef long time_type;
|
|
|
|
/*
|
|
* A tree of what is mounted
|
|
*/
|
|
struct amq_mount_tree {
|
|
amq_string mt_mountinfo; /* Mounted filesystem */
|
|
amq_string mt_directory; /* Virtual mount */
|
|
amq_string mt_mountpoint; /* Mount point */
|
|
amq_string mt_type; /* Filesystem type */
|
|
time_type mt_mounttime; /* Mount time */
|
|
u_short mt_mountuid; /* Mounter */
|
|
int mt_getattr; /* Count of getattrs */
|
|
int mt_lookup; /* Count of lookups */
|
|
int mt_readdir; /* Count of readdirs */
|
|
int mt_readlink; /* Count of readlinks */
|
|
int mt_statfs; /* Count of statfss */
|
|
amq_mount_tree *mt_next; /* Sibling mount tree */
|
|
amq_mount_tree *mt_child; /* Child mount tree */
|
|
};
|
|
typedef amq_mount_tree *amq_mount_tree_p;
|
|
|
|
/*
|
|
* List of mounted filesystems
|
|
*/
|
|
struct amq_mount_info {
|
|
amq_string mi_type; /* Type of mount */
|
|
amq_string mi_mountpt; /* Mount point */
|
|
amq_string mi_mountinfo; /* Mount info */
|
|
amq_string mi_fserver; /* Fileserver */
|
|
int mi_error; /* Error code */
|
|
int mi_refc; /* References */
|
|
int mi_up; /* Filesystem available */
|
|
};
|
|
typedef amq_mount_info amq_mount_info_list<>;
|
|
|
|
/*
|
|
* A list of mount trees
|
|
*/
|
|
typedef amq_mount_tree_p amq_mount_tree_list<>;
|
|
|
|
/*
|
|
* System wide stats
|
|
*/
|
|
struct amq_mount_stats {
|
|
int as_drops; /* Dropped requests */
|
|
int as_stale; /* Stale NFS handles */
|
|
int as_mok; /* Succesful mounts */
|
|
int as_merr; /* Failed mounts */
|
|
int as_uerr; /* Failed unmounts */
|
|
};
|
|
|
|
enum amq_opt {
|
|
AMOPT_DEBUG=0,
|
|
AMOPT_LOGFILE=1,
|
|
AMOPT_XLOG=2,
|
|
AMOPT_FLUSHMAPC=3
|
|
};
|
|
|
|
struct amq_setopt {
|
|
amq_opt as_opt; /* Option */
|
|
amq_string as_str; /* String */
|
|
};
|
|
|
|
program AMQ_PROGRAM {
|
|
version AMQ_VERSION {
|
|
/*
|
|
* Does no work. It is made available in all RPC services
|
|
* to allow server reponse testing and timing
|
|
*/
|
|
void
|
|
AMQPROC_NULL(void) = 0;
|
|
|
|
/*
|
|
* Returned the mount tree descending from
|
|
* the given directory. The directory must
|
|
* be a top-level mount point of the automounter.
|
|
*/
|
|
amq_mount_tree_p
|
|
AMQPROC_MNTTREE(amq_string) = 1;
|
|
|
|
/*
|
|
* Force a timeout unmount on the specified directory.
|
|
*/
|
|
void
|
|
AMQPROC_UMNT(amq_string) = 2;
|
|
|
|
/*
|
|
* Obtain system wide statistics from the automounter
|
|
*/
|
|
amq_mount_stats
|
|
AMQPROC_STATS(void) = 3;
|
|
|
|
/*
|
|
* Obtain full tree
|
|
*/
|
|
amq_mount_tree_list
|
|
AMQPROC_EXPORT(void) = 4;
|
|
|
|
/*
|
|
* Control debug options.
|
|
* Return status:
|
|
* -1: debug not available
|
|
* 0: everything wonderful
|
|
* >0: number of options not recognised
|
|
*/
|
|
int
|
|
AMQPROC_SETOPT(amq_setopt) = 5;
|
|
|
|
/*
|
|
* List of mounted filesystems
|
|
*/
|
|
amq_mount_info_list
|
|
AMQPROC_GETMNTFS(void) = 6;
|
|
|
|
/*
|
|
* Mount a filesystem
|
|
*/
|
|
int
|
|
AMQPROC_MOUNT(amq_string) = 7;
|
|
|
|
/*
|
|
* Get version info
|
|
*/
|
|
amq_string
|
|
AMQPROC_GETVERS(void) = 8;
|
|
} = 1;
|
|
} = 300019; /* Allocated by Sun, 89/8/29 */
|