10Sstevel@tonic-gate %/*
20Sstevel@tonic-gate % * CDDL HEADER START
30Sstevel@tonic-gate % *
40Sstevel@tonic-gate % * The contents of this file are subject to the terms of the
5*1623Stw21770 % * Common Development and Distribution License (the "License").
6*1623Stw21770 % * You may not use this file except in compliance with the License.
70Sstevel@tonic-gate % *
80Sstevel@tonic-gate % * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90Sstevel@tonic-gate % * or http://www.opensolaris.org/os/licensing.
100Sstevel@tonic-gate % * See the License for the specific language governing permissions
110Sstevel@tonic-gate % * and limitations under the License.
120Sstevel@tonic-gate % *
130Sstevel@tonic-gate % * When distributing Covered Code, include this CDDL HEADER in each
140Sstevel@tonic-gate % * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150Sstevel@tonic-gate % * If applicable, add the following below this CDDL HEADER, with the
160Sstevel@tonic-gate % * fields enclosed by brackets "[]" replaced with your own identifying
170Sstevel@tonic-gate % * information: Portions Copyright [yyyy] [name of copyright owner]
180Sstevel@tonic-gate % *
190Sstevel@tonic-gate % * CDDL HEADER END
200Sstevel@tonic-gate % */
210Sstevel@tonic-gate %
22*1623Stw21770 %/*
23*1623Stw21770 % * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24*1623Stw21770 % * Use is subject to license terms.
25*1623Stw21770 % */
26*1623Stw21770 %
270Sstevel@tonic-gate %#pragma ident	"%Z%%M%	%I%	%E% SMI"
280Sstevel@tonic-gate %
290Sstevel@tonic-gate 
300Sstevel@tonic-gate %/* get timeval32 definition */
310Sstevel@tonic-gate %#include <sys/types32.h>
320Sstevel@tonic-gate 
330Sstevel@tonic-gate #ifndef _KERNEL
340Sstevel@tonic-gate %#ifdef _KERNEL
350Sstevel@tonic-gate %#error "Compiling kernel file rpcgened without _KERNEL define."
360Sstevel@tonic-gate %#endif /* _KERNEL */
370Sstevel@tonic-gate #endif /* _KERNEL */
380Sstevel@tonic-gate %#include <sys/dditypes.h>
390Sstevel@tonic-gate 
400Sstevel@tonic-gate #ifdef RPC_XDR
410Sstevel@tonic-gate #ifndef _KERNEL
420Sstevel@tonic-gate %bool_t
430Sstevel@tonic-gate %xdr_uint_t(XDR *xdrs, uint_t *objp)
440Sstevel@tonic-gate %{
450Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
460Sstevel@tonic-gate %		return (FALSE);
470Sstevel@tonic-gate %	return (TRUE);
480Sstevel@tonic-gate %}
490Sstevel@tonic-gate %bool_t
500Sstevel@tonic-gate %xdr_ushort_t(XDR *xdrs, ushort_t *objp)
510Sstevel@tonic-gate %{
520Sstevel@tonic-gate %	if (!xdr_u_short(xdrs, (u_short *)objp))
530Sstevel@tonic-gate %		return (FALSE);
540Sstevel@tonic-gate %	return (TRUE);
550Sstevel@tonic-gate %}
560Sstevel@tonic-gate %bool_t
570Sstevel@tonic-gate %xdr_dev_t(XDR *xdrs, dev_t *objp)
580Sstevel@tonic-gate %{
590Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
600Sstevel@tonic-gate %		return (FALSE);
610Sstevel@tonic-gate %	return (TRUE);
620Sstevel@tonic-gate %}
630Sstevel@tonic-gate %bool_t
640Sstevel@tonic-gate %xdr_dev32_t(XDR *xdrs, dev32_t *objp)
650Sstevel@tonic-gate %{
660Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
670Sstevel@tonic-gate %		return (FALSE);
680Sstevel@tonic-gate %	return (TRUE);
690Sstevel@tonic-gate %}
700Sstevel@tonic-gate %bool_t
710Sstevel@tonic-gate %xdr_md_dev64_t(XDR *xdrs, md_dev64_t *objp)
720Sstevel@tonic-gate %{
730Sstevel@tonic-gate %	if (!xdr_u_longlong_t(xdrs, objp))
740Sstevel@tonic-gate %		return (FALSE);
750Sstevel@tonic-gate %	return (TRUE);
760Sstevel@tonic-gate %}
770Sstevel@tonic-gate %bool_t
780Sstevel@tonic-gate %xdr_size_t(XDR *xdrs, size_t *objp)
790Sstevel@tonic-gate %{
800Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *) objp))
810Sstevel@tonic-gate %		return (FALSE);
820Sstevel@tonic-gate %	return (TRUE);
830Sstevel@tonic-gate %}
840Sstevel@tonic-gate %bool_t
850Sstevel@tonic-gate %xdr_daddr_t(XDR *xdrs, daddr_t *objp)
860Sstevel@tonic-gate %{
870Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *) objp))
880Sstevel@tonic-gate %		return (FALSE);
890Sstevel@tonic-gate %	return (TRUE);
900Sstevel@tonic-gate %}
910Sstevel@tonic-gate %bool_t
920Sstevel@tonic-gate %xdr_daddr32_t(XDR *xdrs, daddr32_t *objp)
930Sstevel@tonic-gate %{
940Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *) objp))
950Sstevel@tonic-gate %		return (FALSE);
960Sstevel@tonic-gate %	return (TRUE);
970Sstevel@tonic-gate %}
980Sstevel@tonic-gate %bool_t
990Sstevel@tonic-gate %xdr_diskaddr_t(XDR *xdrs, diskaddr_t *objp)
1000Sstevel@tonic-gate %{
1010Sstevel@tonic-gate %	if (!xdr_u_longlong_t(xdrs, objp))
1020Sstevel@tonic-gate %		return (FALSE);
1030Sstevel@tonic-gate %	return (TRUE);
1040Sstevel@tonic-gate %}
1050Sstevel@tonic-gate %bool_t
1060Sstevel@tonic-gate %xdr_ddi_devid_t(XDR *xdrs, ddi_devid_t *objp)
1070Sstevel@tonic-gate %{
1080Sstevel@tonic-gate %	/* device ids not supported for non-local sets */
1090Sstevel@tonic-gate %	return (TRUE);
1100Sstevel@tonic-gate %}
1110Sstevel@tonic-gate %bool_t
1120Sstevel@tonic-gate %xdr_off_t(XDR *xdrs, off_t *objp)
1130Sstevel@tonic-gate %{
1140Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *) objp))
1150Sstevel@tonic-gate %		return (FALSE);
1160Sstevel@tonic-gate %	return (TRUE);
1170Sstevel@tonic-gate %}
1180Sstevel@tonic-gate %bool_t
1190Sstevel@tonic-gate %xdr_timeval(XDR *xdrs, struct timeval *objp)
1200Sstevel@tonic-gate %{
1210Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_sec))
1220Sstevel@tonic-gate %		return (FALSE);
1230Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_usec))
1240Sstevel@tonic-gate %		return (FALSE);
1250Sstevel@tonic-gate %	return (TRUE);
1260Sstevel@tonic-gate %}
1270Sstevel@tonic-gate %
1280Sstevel@tonic-gate %bool_t
1290Sstevel@tonic-gate %xdr_md_timeval32_t(XDR *xdrs, md_timeval32_t *objp)
1300Sstevel@tonic-gate %{
1310Sstevel@tonic-gate %	if (!xdr_int(xdrs, &objp->tv_sec))
1320Sstevel@tonic-gate %		return (FALSE);
1330Sstevel@tonic-gate %	if (!xdr_int(xdrs, &objp->tv_usec))
1340Sstevel@tonic-gate %		return (FALSE);
1350Sstevel@tonic-gate %	return (TRUE);
1360Sstevel@tonic-gate %}
1370Sstevel@tonic-gate %
1380Sstevel@tonic-gate #else /* _KERNEL */
1390Sstevel@tonic-gate %#ifdef _LP64
1400Sstevel@tonic-gate %bool_t
1410Sstevel@tonic-gate %xdr_timeval(XDR *xdrs, struct timeval *objp)
1420Sstevel@tonic-gate %{
1430Sstevel@tonic-gate %	struct timeval32 tv32;
1440Sstevel@tonic-gate %	if (xdrs->x_op == XDR_ENCODE)
1450Sstevel@tonic-gate %		TIMEVAL_TO_TIMEVAL32(&tv32, objp);
1460Sstevel@tonic-gate %	if (!xdr_int(xdrs, &tv32.tv_sec))
1470Sstevel@tonic-gate %		return (FALSE);
1480Sstevel@tonic-gate %	if (!xdr_int(xdrs, &tv32.tv_usec))
1490Sstevel@tonic-gate %		return (FALSE);
1500Sstevel@tonic-gate %	if (xdrs->x_op == XDR_DECODE)
1510Sstevel@tonic-gate %		TIMEVAL32_TO_TIMEVAL(objp, &tv32);
1520Sstevel@tonic-gate %	return (TRUE);
1530Sstevel@tonic-gate %}
1540Sstevel@tonic-gate %#else /* !_LP64 */
1550Sstevel@tonic-gate %bool_t
1560Sstevel@tonic-gate %xdr_timeval(XDR *xdrs, struct timeval *objp)
1570Sstevel@tonic-gate %{
1580Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_sec))
1590Sstevel@tonic-gate %		return (FALSE);
1600Sstevel@tonic-gate %	if (!xdr_int(xdrs, (int *)&objp->tv_usec))
1610Sstevel@tonic-gate %		return (FALSE);
1620Sstevel@tonic-gate %	return (TRUE);
1630Sstevel@tonic-gate %}
1640Sstevel@tonic-gate %#endif /* _LP64 */
1650Sstevel@tonic-gate #endif /* !_KERNEL */
1660Sstevel@tonic-gate %
1670Sstevel@tonic-gate %bool_t
1680Sstevel@tonic-gate %xdr_minor_t(XDR *xdrs, minor_t *objp)
1690Sstevel@tonic-gate %{
1700Sstevel@tonic-gate %	if (!xdr_u_int(xdrs, (u_int *)objp))
1710Sstevel@tonic-gate %		return (FALSE);
1720Sstevel@tonic-gate %	return (TRUE);
1730Sstevel@tonic-gate %}
1740Sstevel@tonic-gate %
1750Sstevel@tonic-gate %bool_t
1760Sstevel@tonic-gate %xdr_clnt_stat(XDR *xdrs, enum clnt_stat *objp)
1770Sstevel@tonic-gate %{
1780Sstevel@tonic-gate %	if (!xdr_enum(xdrs, (enum_t *)objp))
1790Sstevel@tonic-gate %		return (FALSE);
1800Sstevel@tonic-gate %	return (TRUE);
1810Sstevel@tonic-gate %}
1820Sstevel@tonic-gate %
1830Sstevel@tonic-gate #ifdef	_KERNEL
1840Sstevel@tonic-gate %
1850Sstevel@tonic-gate %#define	LASTUNSIGNED	((u_int)0-1)
1860Sstevel@tonic-gate %
1870Sstevel@tonic-gate %/*
1880Sstevel@tonic-gate % * xdr_vector():
1890Sstevel@tonic-gate % *
1900Sstevel@tonic-gate % * XDR a fixed length array. Unlike variable-length arrays,
1910Sstevel@tonic-gate % * the storage of fixed length arrays is static and unfreeable.
1920Sstevel@tonic-gate % * > basep: base of the array
1930Sstevel@tonic-gate % * > size: size of the array
1940Sstevel@tonic-gate % * > elemsize: size of each element
1950Sstevel@tonic-gate % * > xdr_elem: routine to XDR each element
1960Sstevel@tonic-gate % */
1970Sstevel@tonic-gate %bool_t
1980Sstevel@tonic-gate %xdr_vector(xdrs, basep, nelem, elemsize, xdr_elem)
1990Sstevel@tonic-gate %	XDR *xdrs;
2000Sstevel@tonic-gate %	char *basep;
2010Sstevel@tonic-gate %	u_int nelem;
2020Sstevel@tonic-gate %	u_int elemsize;
2030Sstevel@tonic-gate %	xdrproc_t xdr_elem;
2040Sstevel@tonic-gate %{
2050Sstevel@tonic-gate %	u_int i;
2060Sstevel@tonic-gate %	char *elptr;
2070Sstevel@tonic-gate %
2080Sstevel@tonic-gate %	elptr = basep;
2090Sstevel@tonic-gate %	for (i = 0; i < nelem; i++) {
2100Sstevel@tonic-gate %		if (! (*xdr_elem)(xdrs, elptr, LASTUNSIGNED)) {
2110Sstevel@tonic-gate %			return (FALSE);
2120Sstevel@tonic-gate %		}
2130Sstevel@tonic-gate %		elptr += elemsize;
2140Sstevel@tonic-gate %	}
2150Sstevel@tonic-gate %	return (TRUE);
2160Sstevel@tonic-gate %}
2170Sstevel@tonic-gate #endif /* _KERNEL */
2180Sstevel@tonic-gate #endif	/* RPC_XDR */
2190Sstevel@tonic-gate 
2200Sstevel@tonic-gate #ifdef RPC_HDR
2210Sstevel@tonic-gate %
2220Sstevel@tonic-gate %/*
2230Sstevel@tonic-gate % * Some constants
2240Sstevel@tonic-gate % */
2250Sstevel@tonic-gate const	MD_MAX_SETNAME = 50;
2260Sstevel@tonic-gate const	MD_MAX_NODENAME = 63;
2270Sstevel@tonic-gate const	MAX_HOST_ADDRS	= 3;
2280Sstevel@tonic-gate const	MD_MAX_MNNODENAME = 256;
2290Sstevel@tonic-gate 
2300Sstevel@tonic-gate const	MED_MAX_HOSTS	= 3;
2310Sstevel@tonic-gate const	MED_DEF_HOSTS	= 2;
2320Sstevel@tonic-gate 
2330Sstevel@tonic-gate const	MD_MAXSIDES = 8;
2340Sstevel@tonic-gate const	MD_LOCAL_SET = 0;
2350Sstevel@tonic-gate 
2360Sstevel@tonic-gate const	MD_MNMAXSIDES = 128;
2370Sstevel@tonic-gate const	MDDB_SN_LEN = 12;
2380Sstevel@tonic-gate const	MDDB_MINOR_NAME_MAX = 32;
2390Sstevel@tonic-gate const	MD_MAXDRVNM = 16;
2400Sstevel@tonic-gate 
2410Sstevel@tonic-gate const	MD_MAX_BLKS_FOR_SMALL_DEVS = 2147483647;
2420Sstevel@tonic-gate %
2430Sstevel@tonic-gate %/* Minimum number of metadevice database replicas needed */
2440Sstevel@tonic-gate const	MD_MINREPLICAS = 1;
2450Sstevel@tonic-gate 
2460Sstevel@tonic-gate %#define	MD_MAX_SETNAME_PLUS_1	(MD_MAX_SETNAME + 1)
2470Sstevel@tonic-gate %#define	MD_MAX_NODENAME_PLUS_1	(MD_MAX_NODENAME + 1)
2480Sstevel@tonic-gate %#define	MD_MAX_MNNODENAME_PLUS_1	(MD_MAX_MNNODENAME + 1)
2490Sstevel@tonic-gate %
2500Sstevel@tonic-gate %#define	MD_SET_BAD	((set_t)~0UL)
2510Sstevel@tonic-gate %
2520Sstevel@tonic-gate %#define	MD_LOCAL_NAME	""
2530Sstevel@tonic-gate %
2540Sstevel@tonic-gate %#define	MD_SIDEWILD	((side_t)~0UL)
2550Sstevel@tonic-gate %
2560Sstevel@tonic-gate %#define	MD_KEYWILD	((mdkey_t)0)
2570Sstevel@tonic-gate %#define	MD_KEYBAD	((mdkey_t)~0UL)
258*1623Stw21770 %#define	MD_UNITBAD	((unit_t)~0UL)
259*1623Stw21770 %#define	MD_HSPID_WILD	((hsp_t)~0UL)
2600Sstevel@tonic-gate 
2610Sstevel@tonic-gate %/* Maximum length of a metadevice name */
2620Sstevel@tonic-gate %#define	MD_MAX_SIDENAME_LEN	(MD_MAXDRVNM + MD_MAX_SETNAME + 2)
2630Sstevel@tonic-gate %
2640Sstevel@tonic-gate %/*
2650Sstevel@tonic-gate % * dev_t is 64 bit now across userland and kernel. Whereever 32 bit value
2660Sstevel@tonic-gate % * is specifically needed, dev32_t will be used. Internally dev_t is used.
2670Sstevel@tonic-gate % * timeval is always 32 bit across userland and kernel.
2680Sstevel@tonic-gate % */
2690Sstevel@tonic-gate %typedef u_longlong_t		md_dev64_t;
2700Sstevel@tonic-gate %typedef struct timeval32	md_timeval32_t;
2710Sstevel@tonic-gate %
2720Sstevel@tonic-gate %/*
2730Sstevel@tonic-gate % * The following definitions are not available, when operating in
2740Sstevel@tonic-gate % * a 32 bit environment. As we are always dealing with
2750Sstevel@tonic-gate % * 64 bit devices, md_dev64_t, we need those definitions also in
2760Sstevel@tonic-gate % * a 32 bit environment
2770Sstevel@tonic-gate % */
2780Sstevel@tonic-gate %#ifndef	NBITSMAJOR64
2790Sstevel@tonic-gate %#define	NBITSMAJOR64	32	/* # of major device bits in 64-bit Solaris */
2800Sstevel@tonic-gate %#endif	/* NBITSMAJOR64 */
2810Sstevel@tonic-gate %
2820Sstevel@tonic-gate %#ifndef	NBITSMINOR64
2830Sstevel@tonic-gate %#define	NBITSMINOR64	32	/* # of minor device bits in 64-bit Solaris */
2840Sstevel@tonic-gate %#endif	/* NBITSMINOR64 */
2850Sstevel@tonic-gate %
2860Sstevel@tonic-gate %#ifndef	MAXMAJ64
2870Sstevel@tonic-gate %#define	MAXMAJ64	0xfffffffful	/* max major value */
2880Sstevel@tonic-gate %#endif	/* MAXMAJ64 */
2890Sstevel@tonic-gate %
2900Sstevel@tonic-gate %#ifndef	MAXMIN64
2910Sstevel@tonic-gate %#define	MAXMIN64	0xfffffffful	/* max minor value */
2920Sstevel@tonic-gate %#endif	/* MAXMIN64 */
2930Sstevel@tonic-gate %
2940Sstevel@tonic-gate %#ifndef	NODEV64
2950Sstevel@tonic-gate %#define	NODEV64		0xffffffffffffffffuLL
2960Sstevel@tonic-gate %#endif	/* NODEV64 */
2970Sstevel@tonic-gate %
2980Sstevel@tonic-gate %#ifndef	NODEV32
2990Sstevel@tonic-gate %#define	NODEV32		0xffffffffuL
3000Sstevel@tonic-gate %#endif	/* NODEV32 */
3010Sstevel@tonic-gate %
3020Sstevel@tonic-gate %#ifndef	MD_DISKADDR_ERROR
3030Sstevel@tonic-gate %#define	MD_DISKADDR_ERROR	0xffffffffffffffffuLL
3040Sstevel@tonic-gate %#endif /* MD_DISKADDR_ERROR */
3050Sstevel@tonic-gate 
3060Sstevel@tonic-gate #endif	/* RPC_HDR */
3070Sstevel@tonic-gate 
3080Sstevel@tonic-gate #if defined(RPC_HDR) || defined(RPC_XDR)
3090Sstevel@tonic-gate %
3100Sstevel@tonic-gate %/* namespace key */
3110Sstevel@tonic-gate typedef	int	mdkey_t;
3120Sstevel@tonic-gate 
3130Sstevel@tonic-gate %
3140Sstevel@tonic-gate %/* set ID */
3150Sstevel@tonic-gate typedef	u_int	set_t;
3160Sstevel@tonic-gate 
3170Sstevel@tonic-gate %
3180Sstevel@tonic-gate %/* record ID type */
3190Sstevel@tonic-gate typedef int		mddb_recid_t;
3200Sstevel@tonic-gate 
3210Sstevel@tonic-gate %
3220Sstevel@tonic-gate %/* side ID */
3230Sstevel@tonic-gate typedef	u_int		side_t;
3240Sstevel@tonic-gate 
3250Sstevel@tonic-gate %
3260Sstevel@tonic-gate %/* Multi-node node ID */
3270Sstevel@tonic-gate typedef uint32_t	md_mn_nodeid_t;
3280Sstevel@tonic-gate 
3290Sstevel@tonic-gate %
3300Sstevel@tonic-gate %/* Shared definitions */
3310Sstevel@tonic-gate #include	"meta_arr.x"
3320Sstevel@tonic-gate 
3330Sstevel@tonic-gate #endif	/* defined(RPC_HDR) || defined(RPC_XDR) */
3340Sstevel@tonic-gate 
3350Sstevel@tonic-gate #ifdef RPC_HDR
3360Sstevel@tonic-gate %
3370Sstevel@tonic-gate %#if defined(__STDC__) || defined(__cplusplus)
3380Sstevel@tonic-gate #ifndef _KERNEL
3390Sstevel@tonic-gate %extern	bool_t	xdr_uint_t(XDR *xdrs, uint_t *objp);
3400Sstevel@tonic-gate %extern	bool_t	xdr_ushort_t(XDR *xdrs, ushort_t *objp);
3410Sstevel@tonic-gate %extern	bool_t	xdr_dev_t(XDR *xdrs, dev_t *objp);
3420Sstevel@tonic-gate %extern	bool_t	xdr_dev32_t(XDR *xdrs, dev32_t *objp);
3430Sstevel@tonic-gate %extern	bool_t	xdr_md_dev64_t(XDR *xdrs, md_dev64_t *objp);
3440Sstevel@tonic-gate %extern	bool_t	xdr_size_t(XDR *xdrs, size_t *objp);
3450Sstevel@tonic-gate %extern	bool_t	xdr_daddr_t(XDR *xdrs, daddr_t *objp);
3460Sstevel@tonic-gate %extern	bool_t	xdr_daddr32_t(XDR *xdrs, daddr32_t *objp);
3470Sstevel@tonic-gate %extern	bool_t	xdr_diskaddr_t(XDR *xdrs, diskaddr_t *objp);
3480Sstevel@tonic-gate %extern	bool_t	xdr_ddi_devid_t(XDR *xdrs, ddi_devid_t *objp);
3490Sstevel@tonic-gate %extern	bool_t	xdr_off_t(XDR *xdrs, off_t *objp);
3500Sstevel@tonic-gate %extern bool_t  xdr_md_timeval32_t(XDR *xdrs, md_timeval32_t *objp);
3510Sstevel@tonic-gate #endif /* !_KERNEL */
3520Sstevel@tonic-gate %extern	bool_t	xdr_minor_t(XDR *xdrs, minor_t *objp);
3530Sstevel@tonic-gate %extern	bool_t	xdr_timeval(XDR *xdrs, struct timeval *objp);
3540Sstevel@tonic-gate %extern	bool_t	xdr_clnt_stat(XDR *xdrs, enum clnt_stat *objp);
3550Sstevel@tonic-gate #ifdef _KERNEL
3560Sstevel@tonic-gate %extern bool_t	xdr_vector(XDR *xdrs, char *basep,
3570Sstevel@tonic-gate %			u_int nelem, u_int elemsize,
3580Sstevel@tonic-gate %			xdrproc_t xdr_elem);
3590Sstevel@tonic-gate #endif	/* _KERNEL */
3600Sstevel@tonic-gate %#else /* K&R C */
3610Sstevel@tonic-gate #ifndef _KERNEL
3620Sstevel@tonic-gate %extern	bool_t	xdr_uint_t();
3630Sstevel@tonic-gate %extern	bool_t	xdr_ushort_t();
3640Sstevel@tonic-gate %extern	bool_t	xdr_dev_t();
3650Sstevel@tonic-gate %extern	bool_t	xdr_dev32_t();
3660Sstevel@tonic-gate %extern	bool_t	xdr_md_dev64_t();
3670Sstevel@tonic-gate %extern	bool_t	xdr_size_t();
3680Sstevel@tonic-gate %extern	bool_t	xdr_daddr_t();
3690Sstevel@tonic-gate %extern	bool_t	xdr_daddr32_t();
3700Sstevel@tonic-gate %extern	bool_t	xdr_diskaddr_t();
3710Sstevel@tonic-gate %extern	bool_t	xdr_ddi_devid_t();
3720Sstevel@tonic-gate %extern	bool_t	xdr_off_t();
3730Sstevel@tonic-gate %extern bool_t  xdr_md_timeval32_t();
3740Sstevel@tonic-gate #endif /* !_KERNEL */
3750Sstevel@tonic-gate %extern	bool_t	xdr_minor_t();
3760Sstevel@tonic-gate %extern	bool_t	xdr_timeval();
3770Sstevel@tonic-gate %extern	bool_t	xdr_clnt_stat();
3780Sstevel@tonic-gate %
3790Sstevel@tonic-gate #ifdef _KERNEL
3800Sstevel@tonic-gate %extern bool_t	xdr_vector();
3810Sstevel@tonic-gate #endif	/* _KERNEL */
3820Sstevel@tonic-gate %#endif /* K&R C */
3830Sstevel@tonic-gate #endif	/* RPC_HDR */
384