Home | History | Annotate | Download | only in head
      1 %/*
      2 % * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
      3 % * Use is subject to license terms.
      4 % *
      5 % * CDDL HEADER START
      6 % *
      7 % * The contents of this file are subject to the terms of the
      8 % * Common Development and Distribution License, Version 1.0 only
      9 % * (the "License").  You may not use this file except in compliance
     10 % * with the License.
     11 % *
     12 % * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     13 % * or http://www.opensolaris.org/os/licensing.
     14 % * See the License for the specific language governing permissions
     15 % * and limitations under the License.
     16 % *
     17 % * When distributing Covered Code, include this CDDL HEADER in each
     18 % * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     19 % * If applicable, add the following below this CDDL HEADER, with the
     20 % * fields enclosed by brackets "[]" replaced with your own identifying
     21 % * information: Portions Copyright [yyyy] [name of copyright owner]
     22 % *
     23 % * CDDL HEADER END
     24 % */
     25 %
     26 %#pragma ident	"%Z%%M%	%I%	%E% SMI"
     27 %
     28 
     29 #ifdef RPC_SVC
     30 %
     31 %int mdc_in_daemon = 1;
     32 %#include <signal.h>
     33 #endif /* RPC_SVC */
     34 
     35 #ifdef RPC_HDR
     36 %#ifndef STRINGARRAY
     37 #endif
     38 typedef string stringarray<>;
     39 #ifdef RPC_HDR
     40 %#define STRINGARRAY
     41 %#endif
     42 #endif
     43 
     44 struct mdc_err_t {
     45 	int			mdc_errno; /* errno or negative error code */
     46 	int			mdc_exitcode;	/* child exit code. */
     47 	string			mdc_node<>;	/* associated node */
     48 	string			mdc_misc<>;	/* misc text */
     49 };
     50 
     51 %
     52 %/*
     53 % * rpc argument and response structures
     54 % */
     55 struct mdc_bind_res_t {
     56 	mdc_err_t	mdc_status;		/* status of RPC call */
     57 };
     58 
     59 struct mdcrpc_proxy_args_t {
     60 	stringarray		argvlist<>;
     61 	stringarray		environment<>;
     62 };
     63 
     64 #ifdef RPC_CLNT
     65 %int _mdc_in_daemon = 0;
     66 %#pragma weak mdc_in_daemon = _mdc_in_daemon
     67 %void mdc_clrerror(mdc_err_t *mdcep);
     68 
     69 #endif /* RPC_CLNT */
     70 
     71 #ifdef RPC_HDR
     72 %
     73 %extern	int	mdc_in_daemon;
     74 %
     75 %/*
     76 % * Null error structure initializer.
     77 % */
     78 %#define	MDC_NULL_ERR	{ 0, NULL, NULL }
     79 %#define	MD_MDC_DEF_TO	{5, 0}		/* 5 seconds */
     80 %#define	MD_MDC_PMAP_TO	{35, 0}		/* 35 seconds */
     81 %#define	MD_MDC_PROXY_TO	{60 * 60, 0 }	/* 1hr */
     82 %
     83 %/*
     84 % * various cluster errors, definition of MDC_NOTINCLUSTER must be changed
     85 % * when new errors are added, since MDC_NOERROR has to come out to
     86 % * be zero!
     87 % */
     88 enum mdc_errno_t {
     89 	MDC_PROXYKILLED = -13,	/* remote was killed by signal */
     90 	MDC_PROXYNOFORK,	/* could not fork remote */
     91 	MDC_PROXYFAILED,	/* remote exited non-zero */
     92 	MDC_NOTINCLUSTER,	/* host is not a node */
     93 	MDC_NOACCESS,
     94 	MDC_NOACCESS_CCR,
     95 	MDC_RPCFAILED,
     96 	BIND_LINKISDIR,
     97 	BIND_NOACCESS_SHARED,
     98 	BIND_LOCALSET,
     99 	BIND_NODISKSETCLASS,
    100 	BIND_NOACCESS_DEVICE,
    101 	BIND_BADDEVICE,
    102 	MDC_NOERROR
    103 };
    104 
    105 %
    106 %/*
    107 % * Set MDC_THISVERS to the newest version of the protocol
    108 % * This allows the preprocessor to force an error if the
    109 % * protocol changes, since the kernel xdr routines may need to be
    110 % * recoded.  Note that we can't explicitly set the version to a
    111 % * symbol as rpcgen will then create erroneous routine names.
    112 % */
    113 %#define	MDC_V1			1
    114 %#define	MDC_ORIGVERS		MDC_V1
    115 %#define	MDC_THISVERS		1
    116 %
    117 %/* All powerful group 14 */
    118 %#define	MDC_GID			14
    119 %
    120 %/*
    121 % * External reference to constant null error struct. (declared in med_xdr.c)
    122 % */
    123 %extern	const	mdc_err_t		mdc_null_err;
    124 %extern	const	struct	timeval		md_mdc_def_timeout;
    125 %extern	const	struct	timeval		md_mdc_pmap_timeout;
    126 %extern const	struct	timeval		md_mdc_proxy_timeout;
    127 %
    128 %/*
    129 % * Some useful defines
    130 % */
    131 %#define	MDC_SERVNAME	"rpc.metacld"
    132 %#define	MDC_SVC		"metacl"
    133 %
    134 #endif /* RPC_HDR */
    135 
    136 #ifdef	RPC_XDR
    137 %
    138 %/*
    139 % * Constant null error struct.
    140 % */
    141 %const		mdc_err_t		mdc_null_err = MDC_NULL_ERR;
    142 %const	struct	timeval			md_mdc_def_timeout = MD_MDC_DEF_TO;
    143 %const	struct	timeval			md_mdc_pmap_timeout = MD_MDC_PMAP_TO;
    144 %const	struct	timeval			md_mdc_proxy_timeout = MD_MDC_PROXY_TO;
    145 
    146 #endif	/* RPC_XDR */
    147 
    148 
    149 %
    150 %/*
    151 % * services available
    152 % */
    153 program MDC_PROG {
    154 	version MDC_VERS {
    155 		mdc_bind_res_t	mdc_null(void)			= 0;
    156 		mdc_bind_res_t	mdc_bind_devs(void)		= 1;
    157 		mdc_bind_res_t	mdc_proxy(mdcrpc_proxy_args_t)	= 2;
    158 	} = 1;
    159 } = 100281;
    160