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
38typedef string stringarray<>;
39#ifdef RPC_HDR
40%#define STRINGARRAY
41%#endif
42#endif
43
44struct 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% */
55struct mdc_bind_res_t {
56	mdc_err_t	mdc_status;		/* status of RPC call */
57};
58
59struct 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% */
88enum 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% */
153program 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