xref: /illumos-gate/usr/src/common/smbsrv/smb_xdr.c (revision 9fb67ea305c66b6a297583b9b0db6796b0dfe497)
1*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
2*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * CDDL HEADER START
3*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
4*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * The contents of this file are subject to the terms of the
5*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Common Development and Distribution License (the "License").
6*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * You may not use this file except in compliance with the License.
7*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
8*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * or http://www.opensolaris.org/os/licensing.
10*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * See the License for the specific language governing permissions
11*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * and limitations under the License.
12*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
13*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * When distributing Covered Code, include this CDDL HEADER in each
14*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * If applicable, add the following below this CDDL HEADER, with the
16*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * fields enclosed by brackets "[]" replaced with your own identifying
17*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * information: Portions Copyright [yyyy] [name of copyright owner]
18*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
19*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * CDDL HEADER END
20*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
21*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
22*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Use is subject to license terms.
24*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
25*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
26*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/sunddi.h>
27*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #ifndef _KERNEL
28*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <string.h>
29*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <strings.h>
30*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <stddef.h>
31*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #endif /* _KERNEL */
32*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_door.h>
33*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_xdr.h>
34*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/alloc.h>
35*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/socket.h>
36*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/sysmacros.h>
37*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
38*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_XDRMAX32_SZ		0xFFFFFFFF
39*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
40*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_list_xdr(XDR *, list_t *,  const size_t, const size_t,
41*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     const xdrproc_t);
42*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
43*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
44*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_buf32_xdr(XDR *xdrs, smb_buf32_t *objp)
45*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
46*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint_t	maxsize = SMB_XDRMAX32_SZ;
47*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint_t	size;
48*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
49*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (xdrs->x_op != XDR_DECODE)
50*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		maxsize = size = (uint_t)objp->len;
51*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
52*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (xdr_bytes(xdrs, (char **)&objp->val, &size, maxsize)) {
53*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (xdrs->x_op == XDR_DECODE)
54*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			objp->len = (uint32_t)size;
55*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
56*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
57*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
58*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (FALSE);
59*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
60*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
61*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
62*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * When decoding into a string, ensure that objp->buf is NULL or
63*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * is pointing at a buffer large enough to receive the string.
64*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Don't leave it as an uninitialized pointer.
65*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
66*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * If objp->buf is NULL, xdr_string will allocate memory for the
67*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * string.  Otherwise it will copy into the available buffer.
68*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
69*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
70*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_string_xdr(XDR *xdrs, smb_string_t *objp)
71*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
72*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->buf, ~0))
73*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
74*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
75*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
76*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
77*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *
78*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_opname(uint32_t op)
79*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
80*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	struct {
81*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		uint32_t	op;
82*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		const char	*name;
83*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	} ops[] = {
84*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_NULL,			"null" },
85*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_ASYNC_RESPONSE,	"async_response" },
86*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_USER_AUTH_LOGON,	"user_auth_logon" },
87*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_USER_NONAUTH_LOGON,	"user_nonauth_logon" },
88*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_USER_AUTH_LOGOFF,	"user_auth_logoff" },
89*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_LOOKUP_SID,		"lookup_sid" },
90*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_LOOKUP_NAME,		"lookup_name" },
91*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_JOIN,			"join" },
92*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_GET_DCINFO,		"get_dcinfo" },
93*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_VSS_GET_COUNT,		"vss_get_count" },
94*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_VSS_GET_SNAPSHOTS,	"vss_get_snapshots" },
95*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_VSS_MAP_GMTTOKEN,	"vss_map_gmttoken" },
96*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_ADS_FIND_HOST,		"ads_find_host" },
97*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_QUOTA_QUERY,		"quota_query" },
98*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_QUOTA_SET,		"quota_set" },
99*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_DFS_GET_REFERRALS,	"dfs_get_referrals" }
100*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	};
101*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int	i;
102*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
103*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	for (i = 0; i < (sizeof (ops) / sizeof (ops[0])); ++i) {
104*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (ops[i].op == op)
105*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (ops[i].name);
106*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
107*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
108*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return ("unknown");
109*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
110*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
111*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
112*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode a door header structure into an XDR buffer.
113*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
114*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
115*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_encode(smb_doorhdr_t *hdr, uint8_t *buf, uint32_t buflen)
116*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
117*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
118*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
119*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
120*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
121*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
122*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_doorhdr_xdr(&xdrs, hdr))
123*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
124*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
125*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
126*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
127*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
128*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
129*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
130*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into a door header structure.
131*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
132*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
133*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_decode(smb_doorhdr_t *hdr, uint8_t *buf, uint32_t buflen)
134*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
135*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
136*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
137*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
138*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(hdr, sizeof (smb_doorhdr_t));
139*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
140*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
141*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_doorhdr_xdr(&xdrs, hdr))
142*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
143*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
144*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
145*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
146*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
147*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
148*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
149*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp)
150*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
151*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_magic))
152*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
153*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_flags))
154*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
155*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_fid))
156*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
157*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_op))
158*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
159*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_txid))
160*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
161*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_datalen))
162*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
163*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_resid))
164*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
165*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_door_rc))
166*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
167*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_status))
168*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
169*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
170*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
171*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
172*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
173*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode an smb_netuserinfo_t into a buffer.
174*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
175*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
176*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_encode(smb_netuserinfo_t *info, uint8_t *buf,
177*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
178*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
179*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
180*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
181*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
182*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
183*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
184*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netuserinfo_xdr(&xdrs, info))
185*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
186*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
187*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
188*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
189*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
190*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
191*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
192*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
193*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
194*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into an smb_netuserinfo_t.
195*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
196*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
197*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_decode(smb_netuserinfo_t *info, uint8_t *buf,
198*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
199*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
200*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
201*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
202*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
203*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
204*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
205*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(info, sizeof (smb_netuserinfo_t));
206*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netuserinfo_xdr(&xdrs, info))
207*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
208*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
209*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
210*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
211*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
212*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
213*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
214*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
215*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
216*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_inaddr_xdr(XDR *xdrs, smb_inaddr_t *objp)
217*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
218*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int32_t(xdrs, &objp->a_family))
219*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
220*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (objp->a_family == AF_INET) {
221*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_uint32_t(xdrs, (in_addr_t *)&objp->a_ipv4))
222*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
223*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	} else {
224*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_vector(xdrs, (char *)&objp->a_ipv6,
225*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		    sizeof (objp->a_ipv6), sizeof (char), (xdrproc_t)xdr_char))
226*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
227*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
228*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
229*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
230*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
231*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
232*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR encode/decode for smb_netuserinfo_t.
233*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
234*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
235*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_xdr(XDR *xdrs, smb_netuserinfo_t *objp)
236*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
237*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->ui_session_id))
238*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
239*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_uid))
240*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
241*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_domain_len))
242*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
243*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ui_domain, ~0))
244*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
245*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_account_len))
246*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
247*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ui_account, ~0))
248*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
249*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_workstation_len))
250*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
251*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ui_workstation, ~0))
252*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
253*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_inaddr_xdr(xdrs, &objp->ui_ipaddr))
254*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
255*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int32_t(xdrs, &objp->ui_native_os))
256*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
257*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int64_t(xdrs, &objp->ui_logon_time))
258*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
259*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ui_numopens))
260*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
261*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ui_flags))
262*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
263*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
264*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
265*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
266*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
267*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode an smb_netconnectinfo_t into a buffer.
268*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
269*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
270*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_encode(smb_netconnectinfo_t *info, uint8_t *buf,
271*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
272*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
273*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
274*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
275*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
276*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
277*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
278*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netconnectinfo_xdr(&xdrs, info))
279*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
280*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
281*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
282*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
283*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
284*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
285*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
286*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
287*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
288*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into an smb_netconnectinfo_t.
289*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
290*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
291*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_decode(smb_netconnectinfo_t *info, uint8_t *buf,
292*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
293*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
294*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
295*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
296*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
297*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
298*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
299*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(info, sizeof (smb_netconnectinfo_t));
300*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netconnectinfo_xdr(&xdrs, info))
301*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
302*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
303*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
304*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
305*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
306*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
307*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
308*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
309*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
310*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR encode/decode for smb_netconnectinfo_t.
311*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
312*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
313*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_xdr(XDR *xdrs, smb_netconnectinfo_t *objp)
314*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
315*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_id))
316*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
317*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_type))
318*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
319*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_numopens))
320*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
321*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_numusers))
322*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
323*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_time))
324*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
325*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_namelen))
326*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
327*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_sharelen))
328*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
329*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ci_username, MAXNAMELEN))
330*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
331*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ci_share, MAXNAMELEN))
332*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
333*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
334*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
335*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
336*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
337*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode an smb_netfileinfo_t into a buffer.
338*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
339*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
340*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_encode(smb_netfileinfo_t *info, uint8_t *buf,
341*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
342*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
343*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
344*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
345*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
346*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
347*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
348*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netfileinfo_xdr(&xdrs, info))
349*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
350*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
351*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
352*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
353*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
354*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
355*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
356*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
357*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
358*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into an smb_netfileinfo_t.
359*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
360*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
361*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_decode(smb_netfileinfo_t *info, uint8_t *buf,
362*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
363*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
364*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
365*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
366*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
367*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
368*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
369*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(info, sizeof (smb_netfileinfo_t));
370*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netfileinfo_xdr(&xdrs, info))
371*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
372*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
373*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
374*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
375*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
376*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
377*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
378*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
379*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
380*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR encode/decode for smb_netfileinfo_t.
381*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
382*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
383*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_xdr(XDR *xdrs, smb_netfileinfo_t *objp)
384*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
385*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->fi_fid))
386*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
387*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_uniqid))
388*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
389*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_permissions))
390*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
391*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_numlocks))
392*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
393*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_pathlen))
394*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
395*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_namelen))
396*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
397*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->fi_path, MAXPATHLEN))
398*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
399*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->fi_username, MAXNAMELEN))
400*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
401*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
402*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
403*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
404*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
405*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_dr_kshare_xdr(XDR *xdrs, smb_dr_kshare_t *objp)
406*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
407*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int32_t(xdrs, &objp->k_op))
408*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
409*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->k_path, MAXPATHLEN))
410*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
411*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->k_sharename, MAXNAMELEN))
412*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
413*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
414*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
415*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
416*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
417*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_query_xdr(XDR *xdrs, smb_gmttoken_query_t *objp)
418*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
419*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->gtq_count)) {
420*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
421*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
422*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->gtq_path, ~0)) {
423*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
424*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
425*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
426*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
427*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
428*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States static bool_t
429*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_xdr(XDR *xdrs, smb_gmttoken_t *objp)
430*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
431*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, objp, SMB_VSS_GMT_SIZE)) {
432*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
433*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
434*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
435*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
436*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
437*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
438*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_response_xdr(XDR *xdrs, smb_gmttoken_response_t *objp)
439*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
440*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->gtr_count)) {
441*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
442*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
443*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_array(xdrs, (char **)&objp->gtr_gmttokens.gtr_gmttokens_val,
444*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    (uint_t *)&objp->gtr_gmttokens.gtr_gmttokens_len, ~0,
445*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_gmttoken_t), (xdrproc_t)smb_gmttoken_xdr)) {
446*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
447*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
448*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
449*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
450*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
451*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
452*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_snapname_xdr(XDR *xdrs, smb_gmttoken_snapname_t *objp)
453*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
454*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->gts_path, MAXPATHLEN)) {
455*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
456*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
457*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->gts_gmttoken, SMB_VSS_GMT_SIZE)) {
458*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
459*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
460*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
461*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
462*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
463*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
464*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_xdr(XDR *xdrs, smb_quota_t *objp)
465*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
466*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->q_sidstr, SMB_SID_STRSZ,
467*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
468*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
469*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->q_sidtype))
470*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
471*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->q_used))
472*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
473*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->q_thresh))
474*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
475*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->q_limit))
476*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
477*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
478*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
479*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
480*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
481*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
482*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_sid_xdr(XDR *xdrs, smb_quota_sid_t *objp)
483*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
484*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->qs_sidstr, SMB_SID_STRSZ,
485*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
486*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
487*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
488*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
489*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
490*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
491*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_query_xdr(XDR *xdrs, smb_quota_query_t *objp)
492*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
493*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->qq_root_path, ~0))
494*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
495*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->qq_query_op))
496*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
497*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_bool(xdrs, &objp->qq_single))
498*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
499*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_bool(xdrs, &objp->qq_restart))
500*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
501*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->qq_max_quota))
502*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
503*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_list_xdr(xdrs, &objp->qq_sid_list,
504*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    offsetof(smb_quota_sid_t, qs_list_node),
505*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_quota_sid_t), (xdrproc_t)smb_quota_sid_xdr))
506*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
507*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
508*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
509*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
510*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
511*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
512*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_response_xdr(XDR *xdrs, smb_quota_response_t *objp)
513*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
514*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->qr_status))
515*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
516*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_list_xdr(xdrs, &objp->qr_quota_list,
517*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    offsetof(smb_quota_t, q_list_node),
518*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_quota_t), (xdrproc_t)smb_quota_xdr))
519*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
520*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
521*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
522*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
523*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
524*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_set_xdr(XDR *xdrs, smb_quota_set_t *objp)
525*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
526*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->qs_root_path, ~0))
527*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
528*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_list_xdr(xdrs, &objp->qs_quota_list,
529*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    offsetof(smb_quota_t, q_list_node),
530*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_quota_t), (xdrproc_t)smb_quota_xdr))
531*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
532*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
533*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
534*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
535*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
536*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR a list_t list of elements
537*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * offset - offset of list_node_t in list element
538*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * elsize - size of list element
539*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * elproc - XDR function for the list element
540*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
541*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
542*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_list_xdr(XDR *xdrs, list_t *list,  const size_t offset,
543*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     const size_t elsize, const xdrproc_t elproc)
544*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
545*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	void *node;
546*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t count = 0;
547*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
548*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	switch (xdrs->x_op) {
549*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	case XDR_ENCODE:
550*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		node = list_head(list);
551*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while (node) {
552*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			++count;
553*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			node = list_next(list, node);
554*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
555*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_uint32_t(xdrs, &count))
556*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
557*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
558*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		node = list_head(list);
559*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while (node) {
560*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			if (!elproc(xdrs, node))
561*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 				return (FALSE);
562*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			node = list_next(list, node);
563*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
564*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
565*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
566*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	case XDR_DECODE:
567*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_uint32_t(xdrs, &count))
568*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
569*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		list_create(list, elsize, offset);
570*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while (count) {
571*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			node = MEM_MALLOC("xdr", elsize);
572*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			if (node == NULL)
573*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 				return (FALSE);
574*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			if (!elproc(xdrs, node))
575*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 				return (FALSE);
576*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			list_insert_tail(list, node);
577*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			--count;
578*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
579*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
580*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
581*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	case XDR_FREE:
582*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while ((node = list_head(list)) != NULL) {
583*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			list_remove(list, node);
584*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			(void) elproc(xdrs, node);
585*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			MEM_FREE("xdr", node);
586*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
587*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		list_destroy(list);
588*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
589*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
590*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
591*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (FALSE);
592*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
593*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
594*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
595*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_pclass_xdr(XDR *xdrs, dfs_target_pclass_t *objp)
596*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
597*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (xdr_enum(xdrs, (enum_t *)objp));
598*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
599*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
600*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
601*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_priority_xdr(XDR *xdrs, dfs_target_priority_t *objp)
602*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
603*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_target_pclass_xdr(xdrs, &objp->p_class))
604*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
605*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
606*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->p_rank))
607*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
608*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
609*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
610*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
611*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
612*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
613*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_xdr(XDR *xdrs, dfs_target_t *objp)
614*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
615*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->t_server, DFS_SRVNAME_MAX,
616*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
617*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
618*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
619*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->t_share, DFS_NAME_MAX,
620*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
621*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
622*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
623*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->t_state))
624*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
625*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
626*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_target_priority_xdr(xdrs, &objp->t_priority))
627*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
628*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
629*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
630*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
631*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
632*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
633*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_reftype_xdr(XDR *xdrs, dfs_reftype_t *objp)
634*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
635*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (xdr_enum(xdrs, (enum_t *)objp));
636*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
637*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
638*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
639*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_info_xdr(XDR *xdrs, dfs_info_t *objp)
640*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
641*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->i_uncpath, DFS_PATH_MAX,
642*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
643*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
644*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
645*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->i_comment, DFS_COMMENT_MAX,
646*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
647*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
648*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
649*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->i_guid,
650*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    UUID_PRINTABLE_STRING_LENGTH, sizeof (char), (xdrproc_t)xdr_char))
651*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
652*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
653*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_state))
654*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
655*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
656*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_timeout))
657*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
658*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
659*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_propflags))
660*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
661*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
662*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_type))
663*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
664*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
665*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_array(xdrs, (char **)&objp->i_targets,
666*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    (uint32_t *)&objp->i_ntargets, ~0, sizeof (dfs_target_t),
667*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    (xdrproc_t)dfs_target_xdr))
668*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
669*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
670*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
671*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
672*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
673*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
674*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_referral_query_xdr(XDR *xdrs, dfs_referral_query_t *objp)
675*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
676*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_reftype_xdr(xdrs, &objp->rq_type))
677*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
678*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
679*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->rq_path, ~0))
680*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
681*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
682*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
683*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
684*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
685*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
686*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_referral_response_xdr(XDR *xdrs, dfs_referral_response_t *objp)
687*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
688*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_info_xdr(xdrs, &objp->rp_referrals))
689*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
690*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
691*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->rp_status))
692*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
693*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
694*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
695*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
696