1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 1996, 2002 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 /* -----------------------------------------------------------------
  28  *
  29  *                      cachefsd.x
  30  *
  31  * Rpcgen file for generating cachefsd interface.
  32  */
  33 
  34 /* #ident       "%Z%%M% %I%     %E% SMI" */
  35 
  36 
  37 /*
  38  * List of caches.
  39  */
  40 struct cachefsd_caches_id {
  41         int             cci_cacheid;            /* id of cache */
  42         string          cci_name<>;               /* pathname of cache */
  43 };
  44 struct cachefsd_caches_return {
  45         u_int                   ccr_modify;     /* changes when modified */
  46         cachefsd_caches_id      ccr_ids<>;        /* list of caches */
  47 };
  48 
  49 /*
  50  * Stats about a single cache.
  51  * All sizes are in 1K blocks.
  52  */
  53 struct cachefsd_cache_status {
  54         int             ccs_id;                 /* id of cache */
  55         string          ccs_name<>;               /* name of cache */
  56         longlong_t      ccs_size;               /* size of cache */
  57         longlong_t      ccs_lrusize;            /* size of lru files */
  58         longlong_t      ccs_packsize;           /* size of packed files */
  59         longlong_t      ccs_freesize;           /* size of free space */
  60         u_int           ccs_lrutime;            /* time of oldest item on lru */
  61         u_int           ccs_modify;             /* changes when modified */
  62 };
  63 
  64 /*
  65  * List of file systems in a cache.
  66  */
  67 struct cachefsd_mount {
  68         int             cm_fsid;                /* id of file system */
  69         string          cm_name<>;                /* name of file system */
  70 };
  71 struct cachefsd_mount_returns {
  72         cachefsd_mount  cmr_names<>;              /* list of file systems */
  73         u_int           cmr_modify;             /* changes when modified */
  74         int             cmr_error;              /* 0 if no error */
  75 };
  76 
  77 /*
  78  * Stats about a single file system in a cache.
  79  */
  80 struct cachefsd_mount_stat_args {
  81         int             cma_cacheid;            /* id of cache */
  82         int             cma_fsid;               /* id of file system */
  83 };
  84 struct cachefsd_mount_stat {
  85         int             cms_cacheid;            /* id of cache */
  86         int             cms_fsid;               /* id of file system */
  87         string          cms_name<>;               /* name of file system */
  88         string          cms_backfs<>;             /* back file system */
  89         string          cms_mountpt<>;            /* most recent mount point */
  90         string          cms_backfstype<>; /* type of back file system */
  91         string          cms_writemode<>;  /* write mode */
  92         string          cms_options<>;            /* remaining options */
  93         int             cms_mounted;            /* 1 if mounted */
  94         int             cms_connected;          /* 1 if connected */
  95         int             cms_reconcile;          /* 1 if reconcile in progress */
  96         int             cms_changes;            /* 1 if changes to push back */
  97         u_int           cms_time_state;         /* time of state change */
  98         u_int           cms_mnttime;            /* time of last mount/umount */
  99         u_int           cms_modify;             /* changes when modified */
 100 };
 101 
 102 /*
 103  * Sent by mount command to indicate a new mounted file system.
 104  */
 105 struct cachefsd_fs_mounted {
 106         string          mt_cachedir<>;            /* cache directory path */
 107         string          mt_cacheid<>;             /* cache id */
 108 };
 109 
 110 /*
 111  * Sent by umount command to unmount file system.
 112  * cachefsd may get the request to force unmount
 113  * the cachefs front file system, thus flag is
 114  * necessary to indicate forced unmount.
 115  * Hopefully, someday forced unmount is supported
 116  * for cachefs !! 
 117  */
 118 struct cachefsd_fs_unmounted {
 119         string          mntpt<>;          /* Mount point */
 120         int             flag;                   /* MS_FORCE flag */
 121 };
 122 
 123 /*
 124  * Sets file system to simulate disconnection.
 125  */
 126 struct cachefsd_disconnection_args {
 127         string          cda_mntpt<>;              /* mntpt of file system */
 128         int             cda_disconnect;         /* 1 disconnect, 0 connect */
 129 };
 130 
 131 /*
 132  * -----------------------------------------------------------------
 133  * This is the definition of the routines supported by the service.
 134  */
 135 program CACHEFSDPROG {
 136         version CACHEFSDVERS {
 137                 void CACHEFSD_NULL(void) = 0;
 138                 cachefsd_caches_return CACHEFSD_CACHES(void) = 1;
 139                 cachefsd_cache_status CACHEFSD_CACHE_STATUS(int id) = 2;
 140                 cachefsd_mount_returns CACHEFSD_MOUNTS(int id) = 3;
 141                 cachefsd_mount_stat CACHEFSD_MOUNT_STAT(
 142                     struct cachefsd_mount_stat_args) = 4;
 143                 void CACHEFSD_FS_MOUNTED(struct cachefsd_fs_mounted) = 5;
 144                 int CACHEFSD_FS_UNMOUNTED(struct cachefsd_fs_unmounted) = 6;
 145                 int CACHEFSD_DISCONNECTION(struct cachefsd_disconnection_args)
 146                     = 7;
 147         } = 1;
 148 } = 100235;
 149 
 150 #ifdef RPC_HDR
 151 %
 152 #endif /* RPC_HDR */