1*0Sstevel@tonic-gate %/*
2*0Sstevel@tonic-gate % * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
3*0Sstevel@tonic-gate % * Use is subject to license terms.
4*0Sstevel@tonic-gate % *
5*0Sstevel@tonic-gate % * CDDL HEADER START
6*0Sstevel@tonic-gate % *
7*0Sstevel@tonic-gate % * The contents of this file are subject to the terms of the
8*0Sstevel@tonic-gate % * Common Development and Distribution License, Version 1.0 only
9*0Sstevel@tonic-gate % * (the "License").  You may not use this file except in compliance
10*0Sstevel@tonic-gate % * with the License.
11*0Sstevel@tonic-gate % *
12*0Sstevel@tonic-gate % * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
13*0Sstevel@tonic-gate % * or http://www.opensolaris.org/os/licensing.
14*0Sstevel@tonic-gate % * See the License for the specific language governing permissions
15*0Sstevel@tonic-gate % * and limitations under the License.
16*0Sstevel@tonic-gate % *
17*0Sstevel@tonic-gate % * When distributing Covered Code, include this CDDL HEADER in each
18*0Sstevel@tonic-gate % * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19*0Sstevel@tonic-gate % * If applicable, add the following below this CDDL HEADER, with the
20*0Sstevel@tonic-gate % * fields enclosed by brackets "[]" replaced with your own identifying
21*0Sstevel@tonic-gate % * information: Portions Copyright [yyyy] [name of copyright owner]
22*0Sstevel@tonic-gate % *
23*0Sstevel@tonic-gate % * CDDL HEADER END
24*0Sstevel@tonic-gate % */
25*0Sstevel@tonic-gate %
26*0Sstevel@tonic-gate %#pragma ident	"%Z%%M%	%I%	%E% SMI"
27*0Sstevel@tonic-gate %
28*0Sstevel@tonic-gate 
29*0Sstevel@tonic-gate %/* get timeval32 definition */
30*0Sstevel@tonic-gate %#include <sys/types32.h>
31*0Sstevel@tonic-gate 
32*0Sstevel@tonic-gate #ifndef _KERNEL
33*0Sstevel@tonic-gate %#ifdef _KERNEL
34*0Sstevel@tonic-gate %#error "Compiling kernel file rpcgened without _KERNEL define."
35*0Sstevel@tonic-gate %#endif /* _KERNEL */
36*0Sstevel@tonic-gate #endif /* _KERNEL */
37*0Sstevel@tonic-gate %#include <sys/dditypes.h>
38*0Sstevel@tonic-gate 
39*0Sstevel@tonic-gate #ifdef RPC_XDR
40*0Sstevel@tonic-gate #ifndef _KERNEL
41*0Sstevel@tonic-gate %bool_t
42*0Sstevel@tonic-gate %xdr_uint_t(XDR *xdrs, uint_t *objp)
43*0Sstevel@tonic-gate %{
44*0Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
45*0Sstevel@tonic-gate %		return (FALSE);
46*0Sstevel@tonic-gate %	return (TRUE);
47*0Sstevel@tonic-gate %}
48*0Sstevel@tonic-gate %bool_t
49*0Sstevel@tonic-gate %xdr_ushort_t(XDR *xdrs, ushort_t *objp)
50*0Sstevel@tonic-gate %{
51*0Sstevel@tonic-gate %	if (!xdr_u_short(xdrs, (u_short *)objp))
52*0Sstevel@tonic-gate %		return (FALSE);
53*0Sstevel@tonic-gate %	return (TRUE);
54*0Sstevel@tonic-gate %}
55*0Sstevel@tonic-gate %bool_t
56*0Sstevel@tonic-gate %xdr_dev_t(XDR *xdrs, dev_t *objp)
57*0Sstevel@tonic-gate %{
58*0Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
59*0Sstevel@tonic-gate %		return (FALSE);
60*0Sstevel@tonic-gate %	return (TRUE);
61*0Sstevel@tonic-gate %}
62*0Sstevel@tonic-gate %bool_t
63*0Sstevel@tonic-gate %xdr_dev32_t(XDR *xdrs, dev32_t *objp)
64*0Sstevel@tonic-gate %{
65*0Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
66*0Sstevel@tonic-gate %		return (FALSE);
67*0Sstevel@tonic-gate %	return (TRUE);
68*0Sstevel@tonic-gate %}
69*0Sstevel@tonic-gate %bool_t
70*0Sstevel@tonic-gate %xdr_md_dev64_t(XDR *xdrs, md_dev64_t *objp)
71*0Sstevel@tonic-gate %{
72*0Sstevel@tonic-gate %	if (!xdr_u_longlong_t(xdrs, objp))
73*0Sstevel@tonic-gate %		return (FALSE);
74*0Sstevel@tonic-gate %	return (TRUE);
75*0Sstevel@tonic-gate %}
76*0Sstevel@tonic-gate %bool_t
77*0Sstevel@tonic-gate %xdr_size_t(XDR *xdrs, size_t *objp)
78*0Sstevel@tonic-gate %{
79*0Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *) objp))
80*0Sstevel@tonic-gate %		return (FALSE);
81*0Sstevel@tonic-gate %	return (TRUE);
82*0Sstevel@tonic-gate %}
83*0Sstevel@tonic-gate %bool_t
84*0Sstevel@tonic-gate %xdr_daddr_t(XDR *xdrs, daddr_t *objp)
85*0Sstevel@tonic-gate %{
86*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *) objp))
87*0Sstevel@tonic-gate %		return (FALSE);
88*0Sstevel@tonic-gate %	return (TRUE);
89*0Sstevel@tonic-gate %}
90*0Sstevel@tonic-gate %bool_t
91*0Sstevel@tonic-gate %xdr_daddr32_t(XDR *xdrs, daddr32_t *objp)
92*0Sstevel@tonic-gate %{
93*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *) objp))
94*0Sstevel@tonic-gate %		return (FALSE);
95*0Sstevel@tonic-gate %	return (TRUE);
96*0Sstevel@tonic-gate %}
97*0Sstevel@tonic-gate %bool_t
98*0Sstevel@tonic-gate %xdr_diskaddr_t(XDR *xdrs, diskaddr_t *objp)
99*0Sstevel@tonic-gate %{
100*0Sstevel@tonic-gate %	if (!xdr_u_longlong_t(xdrs, objp))
101*0Sstevel@tonic-gate %		return (FALSE);
102*0Sstevel@tonic-gate %	return (TRUE);
103*0Sstevel@tonic-gate %}
104*0Sstevel@tonic-gate %bool_t
105*0Sstevel@tonic-gate %xdr_ddi_devid_t(XDR *xdrs, ddi_devid_t *objp)
106*0Sstevel@tonic-gate %{
107*0Sstevel@tonic-gate %	/* device ids not supported for non-local sets */
108*0Sstevel@tonic-gate %	return (TRUE);
109*0Sstevel@tonic-gate %}
110*0Sstevel@tonic-gate %bool_t
111*0Sstevel@tonic-gate %xdr_off_t(XDR *xdrs, off_t *objp)
112*0Sstevel@tonic-gate %{
113*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *) objp))
114*0Sstevel@tonic-gate %		return (FALSE);
115*0Sstevel@tonic-gate %	return (TRUE);
116*0Sstevel@tonic-gate %}
117*0Sstevel@tonic-gate %bool_t
118*0Sstevel@tonic-gate %xdr_timeval(XDR *xdrs, struct timeval *objp)
119*0Sstevel@tonic-gate %{
120*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_sec))
121*0Sstevel@tonic-gate %		return (FALSE);
122*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_usec))
123*0Sstevel@tonic-gate %		return (FALSE);
124*0Sstevel@tonic-gate %	return (TRUE);
125*0Sstevel@tonic-gate %}
126*0Sstevel@tonic-gate %
127*0Sstevel@tonic-gate %bool_t
128*0Sstevel@tonic-gate %xdr_md_timeval32_t(XDR *xdrs, md_timeval32_t *objp)
129*0Sstevel@tonic-gate %{
130*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, &objp->tv_sec))
131*0Sstevel@tonic-gate %		return (FALSE);
132*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, &objp->tv_usec))
133*0Sstevel@tonic-gate %		return (FALSE);
134*0Sstevel@tonic-gate %	return (TRUE);
135*0Sstevel@tonic-gate %}
136*0Sstevel@tonic-gate %
137*0Sstevel@tonic-gate #else /* _KERNEL */
138*0Sstevel@tonic-gate %#ifdef _LP64
139*0Sstevel@tonic-gate %bool_t
140*0Sstevel@tonic-gate %xdr_timeval(XDR *xdrs, struct timeval *objp)
141*0Sstevel@tonic-gate %{
142*0Sstevel@tonic-gate %	struct timeval32 tv32;
143*0Sstevel@tonic-gate %	if (xdrs->x_op == XDR_ENCODE)
144*0Sstevel@tonic-gate %		TIMEVAL_TO_TIMEVAL32(&tv32, objp);
145*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, &tv32.tv_sec))
146*0Sstevel@tonic-gate %		return (FALSE);
147*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, &tv32.tv_usec))
148*0Sstevel@tonic-gate %		return (FALSE);
149*0Sstevel@tonic-gate %	if (xdrs->x_op == XDR_DECODE)
150*0Sstevel@tonic-gate %		TIMEVAL32_TO_TIMEVAL(objp, &tv32);
151*0Sstevel@tonic-gate %	return (TRUE);
152*0Sstevel@tonic-gate %}
153*0Sstevel@tonic-gate %#else /* !_LP64 */
154*0Sstevel@tonic-gate %bool_t
155*0Sstevel@tonic-gate %xdr_timeval(XDR *xdrs, struct timeval *objp)
156*0Sstevel@tonic-gate %{
157*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_sec))
158*0Sstevel@tonic-gate %		return (FALSE);
159*0Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_usec))
160*0Sstevel@tonic-gate %		return (FALSE);
161*0Sstevel@tonic-gate %	return (TRUE);
162*0Sstevel@tonic-gate %}
163*0Sstevel@tonic-gate %#endif /* _LP64 */
164*0Sstevel@tonic-gate #endif /* !_KERNEL */
165*0Sstevel@tonic-gate %
166*0Sstevel@tonic-gate %bool_t
167*0Sstevel@tonic-gate %xdr_minor_t(XDR *xdrs, minor_t *objp)
168*0Sstevel@tonic-gate %{
169*0Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
170*0Sstevel@tonic-gate %		return (FALSE);
171*0Sstevel@tonic-gate %	return (TRUE);
172*0Sstevel@tonic-gate %}
173*0Sstevel@tonic-gate %
174*0Sstevel@tonic-gate %bool_t
175*0Sstevel@tonic-gate %xdr_clnt_stat(XDR *xdrs, enum clnt_stat *objp)
176*0Sstevel@tonic-gate %{
177*0Sstevel@tonic-gate %	if (!xdr_enum(xdrs, (enum_t *)objp))
178*0Sstevel@tonic-gate %		return (FALSE);
179*0Sstevel@tonic-gate %	return (TRUE);
180*0Sstevel@tonic-gate %}
181*0Sstevel@tonic-gate %
182*0Sstevel@tonic-gate #ifdef	_KERNEL
183*0Sstevel@tonic-gate %
184*0Sstevel@tonic-gate %#define	LASTUNSIGNED	((u_int)0-1)
185*0Sstevel@tonic-gate %
186*0Sstevel@tonic-gate %/*
187*0Sstevel@tonic-gate % * xdr_vector():
188*0Sstevel@tonic-gate % *
189*0Sstevel@tonic-gate % * XDR a fixed length array. Unlike variable-length arrays,
190*0Sstevel@tonic-gate % * the storage of fixed length arrays is static and unfreeable.
191*0Sstevel@tonic-gate % * > basep: base of the array
192*0Sstevel@tonic-gate % * > size: size of the array
193*0Sstevel@tonic-gate % * > elemsize: size of each element
194*0Sstevel@tonic-gate % * > xdr_elem: routine to XDR each element
195*0Sstevel@tonic-gate % */
196*0Sstevel@tonic-gate %bool_t
197*0Sstevel@tonic-gate %xdr_vector(xdrs, basep, nelem, elemsize, xdr_elem)
198*0Sstevel@tonic-gate %	XDR *xdrs;
199*0Sstevel@tonic-gate %	char *basep;
200*0Sstevel@tonic-gate %	u_int nelem;
201*0Sstevel@tonic-gate %	u_int elemsize;
202*0Sstevel@tonic-gate %	xdrproc_t xdr_elem;
203*0Sstevel@tonic-gate %{
204*0Sstevel@tonic-gate %	u_int i;
205*0Sstevel@tonic-gate %	char *elptr;
206*0Sstevel@tonic-gate %
207*0Sstevel@tonic-gate %	elptr = basep;
208*0Sstevel@tonic-gate %	for (i = 0; i < nelem; i++) {
209*0Sstevel@tonic-gate %		if (! (*xdr_elem)(xdrs, elptr, LASTUNSIGNED)) {
210*0Sstevel@tonic-gate %			return (FALSE);
211*0Sstevel@tonic-gate %		}
212*0Sstevel@tonic-gate %		elptr += elemsize;
213*0Sstevel@tonic-gate %	}
214*0Sstevel@tonic-gate %	return (TRUE);
215*0Sstevel@tonic-gate %}
216*0Sstevel@tonic-gate #endif /* _KERNEL */
217*0Sstevel@tonic-gate #endif	/* RPC_XDR */
218*0Sstevel@tonic-gate 
219*0Sstevel@tonic-gate #ifdef RPC_HDR
220*0Sstevel@tonic-gate %
221*0Sstevel@tonic-gate %/*
222*0Sstevel@tonic-gate % * Some constants
223*0Sstevel@tonic-gate % */
224*0Sstevel@tonic-gate const	MD_MAX_SETNAME = 50;
225*0Sstevel@tonic-gate const	MD_MAX_NODENAME = 63;
226*0Sstevel@tonic-gate const	MAX_HOST_ADDRS	= 3;
227*0Sstevel@tonic-gate const	MD_MAX_MNNODENAME = 256;
228*0Sstevel@tonic-gate 
229*0Sstevel@tonic-gate const	MED_MAX_HOSTS	= 3;
230*0Sstevel@tonic-gate const	MED_DEF_HOSTS	= 2;
231*0Sstevel@tonic-gate 
232*0Sstevel@tonic-gate const	MD_MAXSIDES = 8;
233*0Sstevel@tonic-gate const	MD_LOCAL_SET = 0;
234*0Sstevel@tonic-gate 
235*0Sstevel@tonic-gate const	MD_MNMAXSIDES = 128;
236*0Sstevel@tonic-gate const	MDDB_SN_LEN = 12;
237*0Sstevel@tonic-gate const	MDDB_MINOR_NAME_MAX = 32;
238*0Sstevel@tonic-gate const	MD_MAXDRVNM = 16;
239*0Sstevel@tonic-gate 
240*0Sstevel@tonic-gate const	MD_MAX_BLKS_FOR_SMALL_DEVS = 2147483647;
241*0Sstevel@tonic-gate %
242*0Sstevel@tonic-gate %/* Minimum number of metadevice database replicas needed */
243*0Sstevel@tonic-gate const	MD_MINREPLICAS = 1;
244*0Sstevel@tonic-gate 
245*0Sstevel@tonic-gate %#define	MD_MAX_SETNAME_PLUS_1	(MD_MAX_SETNAME + 1)
246*0Sstevel@tonic-gate %#define	MD_MAX_NODENAME_PLUS_1	(MD_MAX_NODENAME + 1)
247*0Sstevel@tonic-gate %#define	MD_MAX_MNNODENAME_PLUS_1	(MD_MAX_MNNODENAME + 1)
248*0Sstevel@tonic-gate %
249*0Sstevel@tonic-gate %#define	MD_SET_BAD	((set_t)~0UL)
250*0Sstevel@tonic-gate %
251*0Sstevel@tonic-gate %#define	MD_LOCAL_NAME	""
252*0Sstevel@tonic-gate %
253*0Sstevel@tonic-gate %#define	MD_SIDEWILD	((side_t)~0UL)
254*0Sstevel@tonic-gate %
255*0Sstevel@tonic-gate %#define	MD_KEYWILD	((mdkey_t)0)
256*0Sstevel@tonic-gate %#define	MD_KEYBAD	((mdkey_t)~0UL)
257*0Sstevel@tonic-gate 
258*0Sstevel@tonic-gate %/* Maximum length of a metadevice name */
259*0Sstevel@tonic-gate %#define	MD_MAX_SIDENAME_LEN	(MD_MAXDRVNM + MD_MAX_SETNAME + 2)
260*0Sstevel@tonic-gate %
261*0Sstevel@tonic-gate %/*
262*0Sstevel@tonic-gate % * dev_t is 64 bit now across userland and kernel. Whereever 32 bit value
263*0Sstevel@tonic-gate % * is specifically needed, dev32_t will be used. Internally dev_t is used.
264*0Sstevel@tonic-gate % * timeval is always 32 bit across userland and kernel.
265*0Sstevel@tonic-gate % */
266*0Sstevel@tonic-gate %typedef u_longlong_t		md_dev64_t;
267*0Sstevel@tonic-gate %typedef struct timeval32	md_timeval32_t;
268*0Sstevel@tonic-gate %
269*0Sstevel@tonic-gate %/*
270*0Sstevel@tonic-gate % * The following definitions are not available, when operating in
271*0Sstevel@tonic-gate % * a 32 bit environment. As we are always dealing with
272*0Sstevel@tonic-gate % * 64 bit devices, md_dev64_t, we need those definitions also in
273*0Sstevel@tonic-gate % * a 32 bit environment
274*0Sstevel@tonic-gate % */
275*0Sstevel@tonic-gate %#ifndef	NBITSMAJOR64
276*0Sstevel@tonic-gate %#define	NBITSMAJOR64	32	/* # of major device bits in 64-bit Solaris */
277*0Sstevel@tonic-gate %#endif	/* NBITSMAJOR64 */
278*0Sstevel@tonic-gate %
279*0Sstevel@tonic-gate %#ifndef	NBITSMINOR64
280*0Sstevel@tonic-gate %#define	NBITSMINOR64	32	/* # of minor device bits in 64-bit Solaris */
281*0Sstevel@tonic-gate %#endif	/* NBITSMINOR64 */
282*0Sstevel@tonic-gate %
283*0Sstevel@tonic-gate %#ifndef	MAXMAJ64
284*0Sstevel@tonic-gate %#define	MAXMAJ64	0xfffffffful	/* max major value */
285*0Sstevel@tonic-gate %#endif	/* MAXMAJ64 */
286*0Sstevel@tonic-gate %
287*0Sstevel@tonic-gate %#ifndef	MAXMIN64
288*0Sstevel@tonic-gate %#define	MAXMIN64	0xfffffffful	/* max minor value */
289*0Sstevel@tonic-gate %#endif	/* MAXMIN64 */
290*0Sstevel@tonic-gate %
291*0Sstevel@tonic-gate %#ifndef	NODEV64
292*0Sstevel@tonic-gate %#define	NODEV64		0xffffffffffffffffuLL
293*0Sstevel@tonic-gate %#endif	/* NODEV64 */
294*0Sstevel@tonic-gate %
295*0Sstevel@tonic-gate %#ifndef	NODEV32
296*0Sstevel@tonic-gate %#define	NODEV32		0xffffffffuL
297*0Sstevel@tonic-gate %#endif	/* NODEV32 */
298*0Sstevel@tonic-gate %
299*0Sstevel@tonic-gate %#ifndef	MD_DISKADDR_ERROR
300*0Sstevel@tonic-gate %#define	MD_DISKADDR_ERROR	0xffffffffffffffffuLL
301*0Sstevel@tonic-gate %#endif /* MD_DISKADDR_ERROR */
302*0Sstevel@tonic-gate 
303*0Sstevel@tonic-gate #endif	/* RPC_HDR */
304*0Sstevel@tonic-gate 
305*0Sstevel@tonic-gate #if defined(RPC_HDR) || defined(RPC_XDR)
306*0Sstevel@tonic-gate %
307*0Sstevel@tonic-gate %/* namespace key */
308*0Sstevel@tonic-gate typedef	int	mdkey_t;
309*0Sstevel@tonic-gate 
310*0Sstevel@tonic-gate %
311*0Sstevel@tonic-gate %/* set ID */
312*0Sstevel@tonic-gate typedef	u_int	set_t;
313*0Sstevel@tonic-gate 
314*0Sstevel@tonic-gate %
315*0Sstevel@tonic-gate %/* record ID type */
316*0Sstevel@tonic-gate typedef int		mddb_recid_t;
317*0Sstevel@tonic-gate 
318*0Sstevel@tonic-gate %
319*0Sstevel@tonic-gate %/* side ID */
320*0Sstevel@tonic-gate typedef	u_int		side_t;
321*0Sstevel@tonic-gate 
322*0Sstevel@tonic-gate %
323*0Sstevel@tonic-gate %/* Multi-node node ID */
324*0Sstevel@tonic-gate typedef uint32_t	md_mn_nodeid_t;
325*0Sstevel@tonic-gate 
326*0Sstevel@tonic-gate %
327*0Sstevel@tonic-gate %/* Shared definitions */
328*0Sstevel@tonic-gate #include	"meta_arr.x"
329*0Sstevel@tonic-gate 
330*0Sstevel@tonic-gate #endif	/* defined(RPC_HDR) || defined(RPC_XDR) */
331*0Sstevel@tonic-gate 
332*0Sstevel@tonic-gate #ifdef RPC_HDR
333*0Sstevel@tonic-gate %
334*0Sstevel@tonic-gate %#if defined(__STDC__) || defined(__cplusplus)
335*0Sstevel@tonic-gate #ifndef _KERNEL
336*0Sstevel@tonic-gate %extern	bool_t	xdr_uint_t(XDR *xdrs, uint_t *objp);
337*0Sstevel@tonic-gate %extern	bool_t	xdr_ushort_t(XDR *xdrs, ushort_t *objp);
338*0Sstevel@tonic-gate %extern	bool_t	xdr_dev_t(XDR *xdrs, dev_t *objp);
339*0Sstevel@tonic-gate %extern	bool_t	xdr_dev32_t(XDR *xdrs, dev32_t *objp);
340*0Sstevel@tonic-gate %extern	bool_t	xdr_md_dev64_t(XDR *xdrs, md_dev64_t *objp);
341*0Sstevel@tonic-gate %extern	bool_t	xdr_size_t(XDR *xdrs, size_t *objp);
342*0Sstevel@tonic-gate %extern	bool_t	xdr_daddr_t(XDR *xdrs, daddr_t *objp);
343*0Sstevel@tonic-gate %extern	bool_t	xdr_daddr32_t(XDR *xdrs, daddr32_t *objp);
344*0Sstevel@tonic-gate %extern	bool_t	xdr_diskaddr_t(XDR *xdrs, diskaddr_t *objp);
345*0Sstevel@tonic-gate %extern	bool_t	xdr_ddi_devid_t(XDR *xdrs, ddi_devid_t *objp);
346*0Sstevel@tonic-gate %extern	bool_t	xdr_off_t(XDR *xdrs, off_t *objp);
347*0Sstevel@tonic-gate %extern bool_t  xdr_md_timeval32_t(XDR *xdrs, md_timeval32_t *objp);
348*0Sstevel@tonic-gate #endif /* !_KERNEL */
349*0Sstevel@tonic-gate %extern	bool_t	xdr_minor_t(XDR *xdrs, minor_t *objp);
350*0Sstevel@tonic-gate %extern	bool_t	xdr_timeval(XDR *xdrs, struct timeval *objp);
351*0Sstevel@tonic-gate %extern	bool_t	xdr_clnt_stat(XDR *xdrs, enum clnt_stat *objp);
352*0Sstevel@tonic-gate #ifdef _KERNEL
353*0Sstevel@tonic-gate %extern bool_t	xdr_vector(XDR *xdrs, char *basep,
354*0Sstevel@tonic-gate %			u_int nelem, u_int elemsize,
355*0Sstevel@tonic-gate %			xdrproc_t xdr_elem);
356*0Sstevel@tonic-gate #endif	/* _KERNEL */
357*0Sstevel@tonic-gate %#else /* K&R C */
358*0Sstevel@tonic-gate #ifndef _KERNEL
359*0Sstevel@tonic-gate %extern	bool_t	xdr_uint_t();
360*0Sstevel@tonic-gate %extern	bool_t	xdr_ushort_t();
361*0Sstevel@tonic-gate %extern	bool_t	xdr_dev_t();
362*0Sstevel@tonic-gate %extern	bool_t	xdr_dev32_t();
363*0Sstevel@tonic-gate %extern	bool_t	xdr_md_dev64_t();
364*0Sstevel@tonic-gate %extern	bool_t	xdr_size_t();
365*0Sstevel@tonic-gate %extern	bool_t	xdr_daddr_t();
366*0Sstevel@tonic-gate %extern	bool_t	xdr_daddr32_t();
367*0Sstevel@tonic-gate %extern	bool_t	xdr_diskaddr_t();
368*0Sstevel@tonic-gate %extern	bool_t	xdr_ddi_devid_t();
369*0Sstevel@tonic-gate %extern	bool_t	xdr_off_t();
370*0Sstevel@tonic-gate %extern bool_t  xdr_md_timeval32_t();
371*0Sstevel@tonic-gate #endif /* !_KERNEL */
372*0Sstevel@tonic-gate %extern	bool_t	xdr_minor_t();
373*0Sstevel@tonic-gate %extern	bool_t	xdr_timeval();
374*0Sstevel@tonic-gate %extern	bool_t	xdr_clnt_stat();
375*0Sstevel@tonic-gate %
376*0Sstevel@tonic-gate #ifdef _KERNEL
377*0Sstevel@tonic-gate %extern bool_t	xdr_vector();
378*0Sstevel@tonic-gate #endif	/* _KERNEL */
379*0Sstevel@tonic-gate %#endif /* K&R C */
380*0Sstevel@tonic-gate #endif	/* RPC_HDR */
381