Home | History | Annotate | Download | only in rpcsvc
      1  0  stevel /*
      2  0  stevel  * CDDL HEADER START
      3  0  stevel  *
      4  0  stevel  * The contents of this file are subject to the terms of the
      5  0  stevel  * Common Development and Distribution License, Version 1.0 only
      6  0  stevel  * (the "License").  You may not use this file except in compliance
      7  0  stevel  * with the License.
      8  0  stevel  *
      9  0  stevel  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10  0  stevel  * or http://www.opensolaris.org/os/licensing.
     11  0  stevel  * See the License for the specific language governing permissions
     12  0  stevel  * and limitations under the License.
     13  0  stevel  *
     14  0  stevel  * When distributing Covered Code, include this CDDL HEADER in each
     15  0  stevel  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16  0  stevel  * If applicable, add the following below this CDDL HEADER, with the
     17  0  stevel  * fields enclosed by brackets "[]" replaced with your own identifying
     18  0  stevel  * information: Portions Copyright [yyyy] [name of copyright owner]
     19  0  stevel  *
     20  0  stevel  * CDDL HEADER END
     21  0  stevel  */
     22  0  stevel /*
     23  0  stevel  *	Copyright 1994 by Sun Microsystems, Inc.
     24  0  stevel  *	  All Rights Reserved
     25  0  stevel  */
     26  0  stevel 
     27  0  stevel %#pragma ident	"%Z%%M%	%I%	%E% SMI"
     28  0  stevel 
     29  0  stevel %#include <sys/fs/ufs_fs.h>
     30  0  stevel %#include <sys/types.h>
     31  0  stevel %#include <sys/errno.h>
     32  0  stevel 
     33  0  stevel enum ufsdrc_t {
     34  0  stevel 	UFSDRC_OK	= 0,
     35  0  stevel 	UFSDRC_NOENT	= ENOENT,	/* can't find fsck */
     36  0  stevel 	UFSDRC_PERM	= EPERM,	/* no permissions */
     37  0  stevel 	UFSDRC_INVAL	= EINVAL,	/* poorly formed args */
     38  0  stevel 	UFSDRC_NOEXEC	= ENOEXEC,	/* can't exec fsck */
     39  0  stevel 	UFSDRC_NODEV	= ENODEV,	/* invalid file system id */
     40  0  stevel 	UFSDRC_NXIO	= ENXIO,	/* bad special device */
     41  0  stevel 	UFSDRC_BUSY	= EBUSY,	/* another fsck in progress */
     42  0  stevel 	UFSDRC_OPNOTSUP	= EOPNOTSUPP,	/* daemons mode makes this unfeasible */
     43  0  stevel 	UFSDRC_EXECERR	= 254,		/* fsck/child ran but had an error */
     44  0  stevel 	UFSDRC_ERR	= 255		/* generic error */
     45  0  stevel };
     46  0  stevel 
     47  0  stevel struct fs_identity_t {
     48  0  stevel 	dev_t		fs_dev;
     49  0  stevel 	string		fs_name<MAXMNTLEN>;
     50  0  stevel };
     51  0  stevel 
     52  0  stevel struct ufsd_repairfs_args_t {
     53  0  stevel 	fs_identity_t	ua_fsid;
     54  0  stevel 	unsigned int	ua_attempts;
     55  0  stevel };
     56  0  stevel 
     57  0  stevel struct ufsd_repairfs_list_t {
     58  0  stevel 	int			 ual_listlen;
     59  0  stevel 	ufsd_repairfs_args_t	*ual_list;
     60  0  stevel };
     61  0  stevel 
     62  0  stevel enum ufsd_event_t {
     63  0  stevel 	UFSDEV_NONE = 0,
     64  0  stevel 	UFSDEV_REBOOT,
     65  0  stevel 	UFSDEV_FSCK,
     66  0  stevel 	UFSDEV_LOG_OP
     67  0  stevel };
     68  0  stevel 
     69  0  stevel enum ufsd_boot_type_t {
     70  0  stevel 	UFSDB_NONE = 0,
     71  0  stevel 	UFSDB_CLEAN,
     72  0  stevel 	UFSDB_POSTPANIC
     73  0  stevel };
     74  0  stevel 
     75  0  stevel enum ufsd_log_op_t {
     76  0  stevel 	UFSDLO_NONE = 0,
     77  0  stevel 	UFSDLO_COMMIT,
     78  0  stevel 	UFSDLO_GET,
     79  0  stevel 	UFSDLO_PUT,
     80  0  stevel 	UFSDLO_RESET
     81  0  stevel };
     82  0  stevel 
     83  0  stevel enum ufsd_fsck_state_t {
     84  0  stevel 	UFSDFS_NONE = 0,
     85  0  stevel 	UFSDFS_DISPATCH,
     86  0  stevel 	UFSDFS_ERREXIT,
     87  0  stevel 	UFSDFS_SUCCESS
     88  0  stevel };
     89  0  stevel 
     90  0  stevel const UFSD_VARMSGMAX		= 1024;
     91  0  stevel const UFSD_SPAREMSGBYTES	= 4;
     92  0  stevel struct ufsd_log_data_t {
     93  0  stevel 	int		umld_eob;
     94  0  stevel 	int		umld_seq;
     95  0  stevel 	char		umld_buf<UFSD_VARMSGMAX>;
     96  0  stevel 
     97  0  stevel };
     98  0  stevel 
     99  0  stevel union ufsd_log_msg_t switch (ufsd_log_op_t um_lop) {
    100  0  stevel case UFSDLO_COMMIT:
    101  0  stevel 	void;
    102  0  stevel case UFSDLO_GET:
    103  0  stevel 	void;
    104  0  stevel case UFSDLO_PUT:
    105  0  stevel 	ufsd_log_data_t	um_logdata;
    106  0  stevel case UFSDLO_RESET:
    107  0  stevel 	void;
    108  0  stevel default:
    109  0  stevel 	void;
    110  0  stevel };
    111  0  stevel 
    112  0  stevel union ufsd_msg_vardata_t switch (ufsd_event_t umv_ev) {
    113  0  stevel case UFSDEV_NONE:
    114  0  stevel 	void;
    115  0  stevel case UFSDEV_REBOOT:
    116  0  stevel 	ufsd_boot_type_t	umv_b;
    117  0  stevel case UFSDEV_FSCK:
    118  0  stevel 	ufsd_fsck_state_t	umv_fs;
    119  0  stevel case UFSDEV_LOG_OP:
    120  0  stevel 	ufsd_log_msg_t		umv_lm;
    121  0  stevel default:
    122  0  stevel 	void;
    123  0  stevel };
    124  0  stevel 
    125  0  stevel struct ufsd_msg_t {
    126  0  stevel 	time_t			um_time;
    127  0  stevel 	unsigned int		um_from;
    128  0  stevel 	char			um_spare<UFSD_SPAREMSGBYTES>;
    129  0  stevel 	ufsd_msg_vardata_t	um_var;
    130  0  stevel };
    131  0  stevel 
    132  0  stevel %#define	UFSD_SERVNAME	"ufsd"
    133  0  stevel %#define	xdr_dev_t	xdr_u_int
    134  0  stevel %#define	xdr_time_t	xdr_int
    135  0  stevel 
    136  0  stevel %/*
    137  0  stevel % * Set UFSD_THISVERS to the newest version of the protocol
    138  0  stevel % * This allows the preprocessor to force an error if the
    139  0  stevel % * protocol changes, since the kernel xdr routines may need to be
    140  0  stevel % * recoded.  Note that we can't explicitly set the version to a
    141  0  stevel % * symbol as rpcgen will then create erroneous routine names.
    142  0  stevel % */
    143  0  stevel %#define	UFSD_V1			1
    144  0  stevel %#define	UFSD_ORIGVERS		UFSD_V1
    145  0  stevel %#define	UFSD_THISVERS		1
    146  0  stevel 
    147  0  stevel program UFSD_PROG {
    148  0  stevel 	version UFSD_VERS {
    149  0  stevel 		ufsdrc_t UFSD_NULL(void)				= 0;
    150  0  stevel 		ufsdrc_t UFSD_REPAIRFS(ufsd_repairfs_args_t)		= 1;
    151  0  stevel 		ufsdrc_t UFSD_REPAIRFSLIST(ufsd_repairfs_list_t)	= 2;
    152  0  stevel 		ufsdrc_t UFSD_SEND(ufsd_msg_t)				= 3;
    153  0  stevel 		ufsdrc_t UFSD_RECV(ufsd_msg_t)				= 4;
    154  0  stevel 		ufsdrc_t UFSD_EXIT(void)				= 5;
    155  0  stevel 	} = 1;
    156  0  stevel } = 100233;
    157