xref: /csrg-svn/usr.sbin/amd/rpcx/amq.x (revision 44928)
1*44928Smckusick /*
2*44928Smckusick  * $Id: amq.x,v 5.2 90/06/23 22:20:11 jsp Rel $
3*44928Smckusick  *
4*44928Smckusick  * Copyright (c) 1990 Jan-Simon Pendry
5*44928Smckusick  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
6*44928Smckusick  * Copyright (c) 1990 The Regents of the University of California.
7*44928Smckusick  * All rights reserved.
8*44928Smckusick  *
9*44928Smckusick  * This code is derived from software contributed to Berkeley by
10*44928Smckusick  * Jan-Simon Pendry at Imperial College, London.
11*44928Smckusick  *
12*44928Smckusick  * %sccs.include.redist.c%
13*44928Smckusick  *
14*44928Smckusick  *	@(#)amq.x	5.1 (Berkeley) 07/19/90
15*44928Smckusick  */
16*44928Smckusick 
17*44928Smckusick /*
18*44928Smckusick  * Protocol description used by the amq program
19*44928Smckusick  */
20*44928Smckusick 
21*44928Smckusick const AMQ_STRLEN = 1024;	/* Maximum length of a pathname */
22*44928Smckusick 
23*44928Smckusick /*
24*44928Smckusick  * The type dirpath is the pathname of a directory
25*44928Smckusick  */
26*44928Smckusick typedef string amq_string<AMQ_STRLEN>;
27*44928Smckusick 
28*44928Smckusick /*
29*44928Smckusick  * The type time_type should correspond to the system time_t
30*44928Smckusick  */
31*44928Smckusick typedef long time_type;
32*44928Smckusick 
33*44928Smckusick /*
34*44928Smckusick  * A tree of what is mounted
35*44928Smckusick  */
36*44928Smckusick struct amq_mount_tree {
37*44928Smckusick 	amq_string	mt_mountinfo;	/* Mounted filesystem */
38*44928Smckusick 	amq_string 	mt_directory;	/* Virtual mount */
39*44928Smckusick 	amq_string 	mt_mountpoint;	/* Mount point */
40*44928Smckusick 	amq_string	mt_type;	/* Filesystem type */
41*44928Smckusick 	time_type	mt_mounttime;	/* Mount time */
42*44928Smckusick 	u_short		mt_mountuid;	/* Mounter */
43*44928Smckusick 	int		mt_getattr;	/* Count of getattrs */
44*44928Smckusick 	int		mt_lookup;	/* Count of lookups */
45*44928Smckusick 	int		mt_readdir;	/* Count of readdirs */
46*44928Smckusick 	int		mt_readlink;	/* Count of readlinks */
47*44928Smckusick 	int		mt_statfs;	/* Count of statfss */
48*44928Smckusick 	amq_mount_tree	*mt_next;	/* Sibling mount tree */
49*44928Smckusick 	amq_mount_tree	*mt_child;	/* Child mount tree */
50*44928Smckusick };
51*44928Smckusick typedef amq_mount_tree *amq_mount_tree_p;
52*44928Smckusick 
53*44928Smckusick /*
54*44928Smckusick  * List of mounted filesystems
55*44928Smckusick  */
56*44928Smckusick struct amq_mount_info {
57*44928Smckusick 	amq_string	mi_type;	/* Type of mount */
58*44928Smckusick 	amq_string	mi_mountpt;	/* Mount point */
59*44928Smckusick 	amq_string	mi_mountinfo;	/* Mount info */
60*44928Smckusick 	amq_string	mi_fserver;	/* Fileserver */
61*44928Smckusick 	int		mi_error;	/* Error code */
62*44928Smckusick 	int		mi_refc;	/* References */
63*44928Smckusick 	int		mi_up;		/* Filesystem available */
64*44928Smckusick };
65*44928Smckusick typedef amq_mount_info amq_mount_info_list<>;
66*44928Smckusick 
67*44928Smckusick /*
68*44928Smckusick  * A list of mount trees
69*44928Smckusick  */
70*44928Smckusick typedef amq_mount_tree_p amq_mount_tree_list<>;
71*44928Smckusick 
72*44928Smckusick /*
73*44928Smckusick  * System wide stats
74*44928Smckusick  */
75*44928Smckusick struct amq_mount_stats {
76*44928Smckusick 	int	as_drops;	/* Dropped requests */
77*44928Smckusick 	int	as_stale;	/* Stale NFS handles */
78*44928Smckusick 	int	as_mok;		/* Succesful mounts */
79*44928Smckusick 	int	as_merr;	/* Failed mounts */
80*44928Smckusick 	int	as_uerr;	/* Failed unmounts */
81*44928Smckusick };
82*44928Smckusick 
83*44928Smckusick enum amq_opt {
84*44928Smckusick 	AMOPT_DEBUG=0,
85*44928Smckusick 	AMOPT_LOGFILE=1,
86*44928Smckusick 	AMOPT_XLOG=2,
87*44928Smckusick 	AMOPT_FLUSHMAPC=3
88*44928Smckusick };
89*44928Smckusick 
90*44928Smckusick struct amq_setopt {
91*44928Smckusick 	amq_opt	as_opt;		/* Option */
92*44928Smckusick 	amq_string as_str;	/* String */
93*44928Smckusick };
94*44928Smckusick 
95*44928Smckusick program AMQ_PROGRAM {
96*44928Smckusick 	version AMQ_VERSION {
97*44928Smckusick 		/*
98*44928Smckusick 		 * Does no work. It is made available in all RPC services
99*44928Smckusick 		 * to allow server reponse testing and timing
100*44928Smckusick 		 */
101*44928Smckusick 		void
102*44928Smckusick 		AMQPROC_NULL(void) = 0;
103*44928Smckusick 
104*44928Smckusick 		/*
105*44928Smckusick 		 * Returned the mount tree descending from
106*44928Smckusick 		 * the given directory.  The directory must
107*44928Smckusick 		 * be a top-level mount point of the automounter.
108*44928Smckusick 		 */
109*44928Smckusick 		amq_mount_tree_p
110*44928Smckusick 		AMQPROC_MNTTREE(amq_string) = 1;
111*44928Smckusick 
112*44928Smckusick 		/*
113*44928Smckusick 		 * Force a timeout unmount on the specified directory.
114*44928Smckusick 		 */
115*44928Smckusick 		void
116*44928Smckusick 		AMQPROC_UMNT(amq_string) = 2;
117*44928Smckusick 
118*44928Smckusick 		/*
119*44928Smckusick 		 * Obtain system wide statistics from the automounter
120*44928Smckusick 		 */
121*44928Smckusick 		amq_mount_stats
122*44928Smckusick 		AMQPROC_STATS(void) = 3;
123*44928Smckusick 
124*44928Smckusick 		/*
125*44928Smckusick 		 * Obtain full tree
126*44928Smckusick 		 */
127*44928Smckusick 		amq_mount_tree_list
128*44928Smckusick 		AMQPROC_EXPORT(void) = 4;
129*44928Smckusick 
130*44928Smckusick 		/*
131*44928Smckusick 		 * Control debug options.
132*44928Smckusick 		 * Return status:
133*44928Smckusick 		 *	-1: debug not available
134*44928Smckusick 		 *	 0: everything wonderful
135*44928Smckusick 		 *	>0: number of options not recognised
136*44928Smckusick 		 */
137*44928Smckusick 		int
138*44928Smckusick 		AMQPROC_SETOPT(amq_setopt) = 5;
139*44928Smckusick 
140*44928Smckusick 		/*
141*44928Smckusick 		 * List of mounted filesystems
142*44928Smckusick 		 */
143*44928Smckusick 		amq_mount_info_list
144*44928Smckusick 		AMQPROC_GETMNTFS(void) = 6;
145*44928Smckusick 	} = 1;
146*44928Smckusick } = 300019;	/* Allocated by Sun, 89/8/29 */
147