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