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