xref: /titanic_50/usr/src/common/smbsrv/smb_xdr.c (revision a90cf9f29973990687fa61de9f1f6ea22e924e40)
19fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
29fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * CDDL HEADER START
39fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
49fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * The contents of this file are subject to the terms of the
59fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Common Development and Distribution License (the "License").
69fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * You may not use this file except in compliance with the License.
79fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
89fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
99fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * or http://www.opensolaris.org/os/licensing.
109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * See the License for the specific language governing permissions
119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * and limitations under the License.
129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * When distributing Covered Code, include this CDDL HEADER in each
149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * If applicable, add the following below this CDDL HEADER, with the
169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * fields enclosed by brackets "[]" replaced with your own identifying
179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * information: Portions Copyright [yyyy] [name of copyright owner]
189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * CDDL HEADER END
209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
22c5866007SKeyur Desai  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
23*a90cf9f2SGordon Ross  * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/sunddi.h>
27b819cea2SGordon Ross #if !defined(_KERNEL) && !defined(_FAKE_KERNEL)
289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <string.h>
299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <strings.h>
309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <stddef.h>
319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #endif /* _KERNEL */
329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_door.h>
339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/alloc.h>
349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/socket.h>
359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/sysmacros.h>
369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_XDRMAX32_SZ		0xFFFFFFFF
389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_list_xdr(XDR *, list_t *,  const size_t, const size_t,
409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     const xdrproc_t);
419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_buf32_xdr(XDR * xdrs,smb_buf32_t * objp)439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_buf32_xdr(XDR *xdrs, smb_buf32_t *objp)
449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint_t	maxsize = SMB_XDRMAX32_SZ;
469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint_t	size;
479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (xdrs->x_op != XDR_DECODE)
499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		maxsize = size = (uint_t)objp->len;
509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (xdr_bytes(xdrs, (char **)&objp->val, &size, maxsize)) {
529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (xdrs->x_op == XDR_DECODE)
539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			objp->len = (uint32_t)size;
549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (FALSE);
589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * When decoding into a string, ensure that objp->buf is NULL or
629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * is pointing at a buffer large enough to receive the string.
639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Don't leave it as an uninitialized pointer.
649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * If objp->buf is NULL, xdr_string will allocate memory for the
669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * string.  Otherwise it will copy into the available buffer.
679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_string_xdr(XDR * xdrs,smb_string_t * objp)699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_string_xdr(XDR *xdrs, smb_string_t *objp)
709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->buf, ~0))
729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *
smb_doorhdr_opname(uint32_t op)779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_opname(uint32_t op)
789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	struct {
809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		uint32_t	op;
819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		const char	*name;
829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	} ops[] = {
839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_NULL,			"null" },
849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_ASYNC_RESPONSE,	"async_response" },
859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_USER_AUTH_LOGON,	"user_auth_logon" },
869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_USER_NONAUTH_LOGON,	"user_nonauth_logon" },
879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_USER_AUTH_LOGOFF,	"user_auth_logoff" },
889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_LOOKUP_SID,		"lookup_sid" },
899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_LOOKUP_NAME,		"lookup_name" },
909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_JOIN,			"join" },
919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_GET_DCINFO,		"get_dcinfo" },
929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_VSS_GET_COUNT,		"vss_get_count" },
939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_VSS_GET_SNAPSHOTS,	"vss_get_snapshots" },
949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_VSS_MAP_GMTTOKEN,	"vss_map_gmttoken" },
959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_ADS_FIND_HOST,		"ads_find_host" },
969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_QUOTA_QUERY,		"quota_query" },
979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		{ SMB_DR_QUOTA_SET,		"quota_set" },
98148c5f43SAlan Wright 		{ SMB_DR_DFS_GET_REFERRALS,	"dfs_get_referrals" },
99148c5f43SAlan Wright 		{ SMB_DR_SHR_HOSTACCESS,	"share_hostaccess" },
100b3700b07SGordon Ross 		{ SMB_DR_SHR_EXEC,		"share_exec" },
101b3700b07SGordon Ross 		{ SMB_DR_NOTIFY_DC_CHANGED,	"notify_dc_changed" }
1029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	};
1039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int	i;
1049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	for (i = 0; i < (sizeof (ops) / sizeof (ops[0])); ++i) {
1069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (ops[i].op == op)
1079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (ops[i].name);
1089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
1099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return ("unknown");
1119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
1129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode a door header structure into an XDR buffer.
1159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_doorhdr_encode(smb_doorhdr_t * hdr,uint8_t * buf,uint32_t buflen)1179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_encode(smb_doorhdr_t *hdr, uint8_t *buf, uint32_t buflen)
1189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
1199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
1209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
1219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
1239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_doorhdr_xdr(&xdrs, hdr))
1259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
1269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
1289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
1299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
1309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into a door header structure.
1339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_doorhdr_decode(smb_doorhdr_t * hdr,uint8_t * buf,uint32_t buflen)1359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_decode(smb_doorhdr_t *hdr, uint8_t *buf, uint32_t buflen)
1369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
1379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
1389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
1399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(hdr, sizeof (smb_doorhdr_t));
1419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
1429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_doorhdr_xdr(&xdrs, hdr))
1449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
1459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
1479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
1489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
1499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_doorhdr_xdr(XDR * xdrs,smb_doorhdr_t * objp)1519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp)
1529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
1539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_magic))
1549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_flags))
1569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_fid))
1589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_op))
1609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_txid))
1629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_datalen))
1649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_resid))
1669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_door_rc))
1689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->dh_status))
1709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
1719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
1729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
1739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode an smb_netuserinfo_t into a buffer.
1769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_netuserinfo_encode(smb_netuserinfo_t * info,uint8_t * buf,uint32_t buflen,uint_t * nbytes)1789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_encode(smb_netuserinfo_t *info, uint8_t *buf,
1799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
1809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
1819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
1829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
1839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
1859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netuserinfo_xdr(&xdrs, info))
1879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
1889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
1909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
1919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
1929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
1939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
1949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
1959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
1969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into an smb_netuserinfo_t.
1979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_netuserinfo_decode(smb_netuserinfo_t * info,uint8_t * buf,uint32_t buflen,uint_t * nbytes)1999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_decode(smb_netuserinfo_t *info, uint8_t *buf,
2009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
2019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
2029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
2039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
2049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
2069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(info, sizeof (smb_netuserinfo_t));
2089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netuserinfo_xdr(&xdrs, info))
2099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
2109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
2129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
2139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
2149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
2159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
2169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_inaddr_xdr(XDR * xdrs,smb_inaddr_t * objp)2189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_inaddr_xdr(XDR *xdrs, smb_inaddr_t *objp)
2199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
2209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int32_t(xdrs, &objp->a_family))
2219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (objp->a_family == AF_INET) {
2239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_uint32_t(xdrs, (in_addr_t *)&objp->a_ipv4))
2249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
2259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	} else {
2269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_vector(xdrs, (char *)&objp->a_ipv6,
2279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		    sizeof (objp->a_ipv6), sizeof (char), (xdrproc_t)xdr_char))
2289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
2299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
2309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
2319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
2329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
2349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR encode/decode for smb_netuserinfo_t.
2359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
2369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_netuserinfo_xdr(XDR * xdrs,smb_netuserinfo_t * objp)2379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_xdr(XDR *xdrs, smb_netuserinfo_t *objp)
2389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
2399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->ui_session_id))
2409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
241c5866007SKeyur Desai 	if (!xdr_uint16_t(xdrs, &objp->ui_smb_uid))
2429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_domain_len))
2449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ui_domain, ~0))
2469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_account_len))
2489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ui_account, ~0))
2509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
251c5866007SKeyur Desai 	if (!xdr_uint32_t(xdrs, &objp->ui_posix_uid))
252c5866007SKeyur Desai 		return (FALSE);
2539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->ui_workstation_len))
2549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ui_workstation, ~0))
2569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_inaddr_xdr(xdrs, &objp->ui_ipaddr))
2589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int32_t(xdrs, &objp->ui_native_os))
2609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_int64_t(xdrs, &objp->ui_logon_time))
2629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ui_numopens))
2649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ui_flags))
2669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
2679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
2689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
2699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
2719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode an smb_netconnectinfo_t into a buffer.
2729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
2739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_netconnectinfo_encode(smb_netconnectinfo_t * info,uint8_t * buf,uint32_t buflen,uint_t * nbytes)2749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_encode(smb_netconnectinfo_t *info, uint8_t *buf,
2759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
2769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
2779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
2789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
2799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
2819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netconnectinfo_xdr(&xdrs, info))
2839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
2849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
2869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
2879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
2889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
2899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
2909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
2929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into an smb_netconnectinfo_t.
2939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
2949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_netconnectinfo_decode(smb_netconnectinfo_t * info,uint8_t * buf,uint32_t buflen,uint_t * nbytes)2959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_decode(smb_netconnectinfo_t *info, uint8_t *buf,
2969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
2979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
2989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
2999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
3009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
3029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(info, sizeof (smb_netconnectinfo_t));
3049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netconnectinfo_xdr(&xdrs, info))
3059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
3069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
3089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
3099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
3109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
3119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
3129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
3149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR encode/decode for smb_netconnectinfo_t.
3159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
3169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_netconnectinfo_xdr(XDR * xdrs,smb_netconnectinfo_t * objp)3179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_xdr(XDR *xdrs, smb_netconnectinfo_t *objp)
3189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
3199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_id))
3209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_type))
3229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_numopens))
3249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_numusers))
3269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_time))
3289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_namelen))
3309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->ci_sharelen))
3329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ci_username, MAXNAMELEN))
3349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->ci_share, MAXNAMELEN))
3369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
3389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
3399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
3419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Encode an smb_netfileinfo_t into a buffer.
3429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
3439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_netfileinfo_encode(smb_netfileinfo_t * info,uint8_t * buf,uint32_t buflen,uint_t * nbytes)3449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_encode(smb_netfileinfo_t *info, uint8_t *buf,
3459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
3469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
3479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
3489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
3499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE);
3519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netfileinfo_xdr(&xdrs, info))
3539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
3549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
3569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
3579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
3589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
3599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
3609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
3629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Decode an XDR buffer into an smb_netfileinfo_t.
3639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
3649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int
smb_netfileinfo_decode(smb_netfileinfo_t * info,uint8_t * buf,uint32_t buflen,uint_t * nbytes)3659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_decode(smb_netfileinfo_t *info, uint8_t *buf,
3669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     uint32_t buflen, uint_t *nbytes)
3679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
3689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	XDR xdrs;
3699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	int rc = 0;
3709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE);
3729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bzero(info, sizeof (smb_netfileinfo_t));
3749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_netfileinfo_xdr(&xdrs, info))
3759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		rc = -1;
3769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (nbytes != NULL)
3789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		*nbytes = xdr_getpos(&xdrs);
3799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	xdr_destroy(&xdrs);
3809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (rc);
3819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
3829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
3849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR encode/decode for smb_netfileinfo_t.
3859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
3869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_netfileinfo_xdr(XDR * xdrs,smb_netfileinfo_t * objp)3879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_xdr(XDR *xdrs, smb_netfileinfo_t *objp)
3889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
3899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->fi_fid))
3909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_uniqid))
3929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_permissions))
3949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_numlocks))
3969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_pathlen))
3989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
3999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->fi_namelen))
4009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->fi_path, MAXPATHLEN))
4029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->fi_username, MAXNAMELEN))
4049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_gmttoken_query_xdr(XDR * xdrs,smb_gmttoken_query_t * objp)4099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_query_xdr(XDR *xdrs, smb_gmttoken_query_t *objp)
4109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->gtq_count)) {
4129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
4149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->gtq_path, ~0)) {
4159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
4179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States static bool_t
smb_gmttoken_xdr(XDR * xdrs,smb_gmttoken_t * objp)4219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_xdr(XDR *xdrs, smb_gmttoken_t *objp)
4229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, objp, SMB_VSS_GMT_SIZE)) {
4249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
4269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_gmttoken_response_xdr(XDR * xdrs,smb_gmttoken_response_t * objp)4309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_response_xdr(XDR *xdrs, smb_gmttoken_response_t *objp)
4319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->gtr_count)) {
4339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
4359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_array(xdrs, (char **)&objp->gtr_gmttokens.gtr_gmttokens_val,
4369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    (uint_t *)&objp->gtr_gmttokens.gtr_gmttokens_len, ~0,
4379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_gmttoken_t), (xdrproc_t)smb_gmttoken_xdr)) {
4389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
4409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_gmttoken_snapname_xdr(XDR * xdrs,smb_gmttoken_snapname_t * objp)4449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_snapname_xdr(XDR *xdrs, smb_gmttoken_snapname_t *objp)
4459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->gts_path, MAXPATHLEN)) {
4479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
4499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->gts_gmttoken, SMB_VSS_GMT_SIZE)) {
4509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
452*a90cf9f2SGordon Ross 	if (!xdr_uint64_t(xdrs, &objp->gts_toktime)) {
453*a90cf9f2SGordon Ross 		return (FALSE);
454*a90cf9f2SGordon Ross 	}
4559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_quota_xdr(XDR * xdrs,smb_quota_t * objp)4599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_xdr(XDR *xdrs, smb_quota_t *objp)
4609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->q_sidstr, SMB_SID_STRSZ,
4629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
4639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->q_sidtype))
4659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->q_used))
4679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->q_thresh))
4699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint64_t(xdrs, &objp->q_limit))
4719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_quota_sid_xdr(XDR * xdrs,smb_quota_sid_t * objp)4779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_sid_xdr(XDR *xdrs, smb_quota_sid_t *objp)
4789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->qs_sidstr, SMB_SID_STRSZ,
4809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
4819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
4839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
4849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
4859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_quota_query_xdr(XDR * xdrs,smb_quota_query_t * objp)4869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_query_xdr(XDR *xdrs, smb_quota_query_t *objp)
4879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
4889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->qq_root_path, ~0))
4899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->qq_query_op))
4919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_bool(xdrs, &objp->qq_single))
4939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_bool(xdrs, &objp->qq_restart))
4959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->qq_max_quota))
4979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
4989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_list_xdr(xdrs, &objp->qq_sid_list,
4999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    offsetof(smb_quota_sid_t, qs_list_node),
5009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_quota_sid_t), (xdrproc_t)smb_quota_sid_xdr))
5019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
5029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
5049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
5059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_quota_response_xdr(XDR * xdrs,smb_quota_response_t * objp)5079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_response_xdr(XDR *xdrs, smb_quota_response_t *objp)
5089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
5099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->qr_status))
5109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
5119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_list_xdr(xdrs, &objp->qr_quota_list,
5129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    offsetof(smb_quota_t, q_list_node),
5139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_quota_t), (xdrproc_t)smb_quota_xdr))
5149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
5159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
5169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
5179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_quota_set_xdr(XDR * xdrs,smb_quota_set_t * objp)5199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_set_xdr(XDR *xdrs, smb_quota_set_t *objp)
5209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
5219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->qs_root_path, ~0))
5229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
5239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!smb_list_xdr(xdrs, &objp->qs_quota_list,
5249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    offsetof(smb_quota_t, q_list_node),
5259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (smb_quota_t), (xdrproc_t)smb_quota_xdr))
5269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
5279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
5289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
5299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
5319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * XDR a list_t list of elements
5329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * offset - offset of list_node_t in list element
5339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * elsize - size of list element
5349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * elproc - XDR function for the list element
5359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
5369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
smb_list_xdr(XDR * xdrs,list_t * list,const size_t offset,const size_t elsize,const xdrproc_t elproc)5379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_list_xdr(XDR *xdrs, list_t *list,  const size_t offset,
5389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States     const size_t elsize, const xdrproc_t elproc)
5399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
5409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	void *node;
5419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t count = 0;
5429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	switch (xdrs->x_op) {
5449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	case XDR_ENCODE:
5459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		node = list_head(list);
5469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while (node) {
5479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			++count;
5489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			node = list_next(list, node);
5499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
5509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_uint32_t(xdrs, &count))
5519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
5529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		node = list_head(list);
5549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while (node) {
5559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			if (!elproc(xdrs, node))
5569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 				return (FALSE);
5579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			node = list_next(list, node);
5589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
5599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
5609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	case XDR_DECODE:
5629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		if (!xdr_uint32_t(xdrs, &count))
5639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			return (FALSE);
5649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		list_create(list, elsize, offset);
5659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while (count) {
5669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			node = MEM_MALLOC("xdr", elsize);
5679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			if (node == NULL)
5689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 				return (FALSE);
5699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			if (!elproc(xdrs, node))
5709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 				return (FALSE);
5719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			list_insert_tail(list, node);
5729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			--count;
5739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
5749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
5759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	case XDR_FREE:
5779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		while ((node = list_head(list)) != NULL) {
5789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			list_remove(list, node);
5799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			(void) elproc(xdrs, node);
5809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 			MEM_FREE("xdr", node);
5819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		}
5829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		list_destroy(list);
5839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (TRUE);
5849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	}
5859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (FALSE);
5879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
5889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_target_pclass_xdr(XDR * xdrs,dfs_target_pclass_t * objp)5909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_pclass_xdr(XDR *xdrs, dfs_target_pclass_t *objp)
5919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
5929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (xdr_enum(xdrs, (enum_t *)objp));
5939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
5949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
5959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_target_priority_xdr(XDR * xdrs,dfs_target_priority_t * objp)5969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_priority_xdr(XDR *xdrs, dfs_target_priority_t *objp)
5979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
5989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_target_pclass_xdr(xdrs, &objp->p_class))
5999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint16_t(xdrs, &objp->p_rank))
6029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
6059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
6069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_target_xdr(XDR * xdrs,dfs_target_t * objp)6089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_xdr(XDR *xdrs, dfs_target_t *objp)
6099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
6109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->t_server, DFS_SRVNAME_MAX,
6119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
6129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->t_share, DFS_NAME_MAX,
6159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
6169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->t_state))
6199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_target_priority_xdr(xdrs, &objp->t_priority))
6229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
6259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
6269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_reftype_xdr(XDR * xdrs,dfs_reftype_t * objp)6289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_reftype_xdr(XDR *xdrs, dfs_reftype_t *objp)
6299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
6309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (xdr_enum(xdrs, (enum_t *)objp));
6319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
6329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_info_xdr(XDR * xdrs,dfs_info_t * objp)6349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_info_xdr(XDR *xdrs, dfs_info_t *objp)
6359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
6369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->i_uncpath, DFS_PATH_MAX,
6379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
6389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->i_comment, DFS_COMMENT_MAX,
6419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    sizeof (char), (xdrproc_t)xdr_char))
6429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_vector(xdrs, (char *)objp->i_guid,
6459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    UUID_PRINTABLE_STRING_LENGTH, sizeof (char), (xdrproc_t)xdr_char))
6469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_state))
6499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_timeout))
6529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_propflags))
6559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->i_type))
6589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_array(xdrs, (char **)&objp->i_targets,
6619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    (uint32_t *)&objp->i_ntargets, ~0, sizeof (dfs_target_t),
6629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	    (xdrproc_t)dfs_target_xdr))
6639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
6669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
6679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_referral_query_xdr(XDR * xdrs,dfs_referral_query_t * objp)6699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_referral_query_xdr(XDR *xdrs, dfs_referral_query_t *objp)
6709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
6719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_reftype_xdr(xdrs, &objp->rq_type))
6729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_string(xdrs, &objp->rq_path, ~0))
6759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
6789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
6799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t
dfs_referral_response_xdr(XDR * xdrs,dfs_referral_response_t * objp)6819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_referral_response_xdr(XDR *xdrs, dfs_referral_response_t *objp)
6829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States {
6839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!dfs_info_xdr(xdrs, &objp->rp_referrals))
6849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	if (!xdr_uint32_t(xdrs, &objp->rp_status))
6879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		return (FALSE);
6889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
6899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	return (TRUE);
6909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }
691148c5f43SAlan Wright 
692148c5f43SAlan Wright bool_t
smb_shr_hostaccess_query_xdr(XDR * xdrs,smb_shr_hostaccess_query_t * objp)693148c5f43SAlan Wright smb_shr_hostaccess_query_xdr(XDR *xdrs, smb_shr_hostaccess_query_t *objp)
694148c5f43SAlan Wright {
695148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->shq_none, ~0))
696148c5f43SAlan Wright 		return (FALSE);
697148c5f43SAlan Wright 
698148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->shq_ro, ~0))
699148c5f43SAlan Wright 		return (FALSE);
700148c5f43SAlan Wright 
701148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->shq_rw, ~0))
702148c5f43SAlan Wright 		return (FALSE);
703148c5f43SAlan Wright 
704148c5f43SAlan Wright 	if (!xdr_uint32_t(xdrs, &objp->shq_flag))
705148c5f43SAlan Wright 		return (FALSE);
706148c5f43SAlan Wright 
707148c5f43SAlan Wright 	if (!smb_inaddr_xdr(xdrs, &objp->shq_ipaddr))
708148c5f43SAlan Wright 		return (FALSE);
709148c5f43SAlan Wright 
710148c5f43SAlan Wright 	return (TRUE);
711148c5f43SAlan Wright }
712148c5f43SAlan Wright 
713148c5f43SAlan Wright bool_t
smb_shr_execinfo_xdr(XDR * xdrs,smb_shr_execinfo_t * objp)714148c5f43SAlan Wright smb_shr_execinfo_xdr(XDR *xdrs, smb_shr_execinfo_t *objp)
715148c5f43SAlan Wright {
716148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->e_sharename, ~0))
717148c5f43SAlan Wright 		return (FALSE);
718148c5f43SAlan Wright 
719148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->e_winname, ~0))
720148c5f43SAlan Wright 		return (FALSE);
721148c5f43SAlan Wright 
722148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->e_userdom, ~0))
723148c5f43SAlan Wright 		return (FALSE);
724148c5f43SAlan Wright 
725148c5f43SAlan Wright 	if (!smb_inaddr_xdr(xdrs, &objp->e_srv_ipaddr))
726148c5f43SAlan Wright 		return (FALSE);
727148c5f43SAlan Wright 
728148c5f43SAlan Wright 	if (!smb_inaddr_xdr(xdrs, &objp->e_cli_ipaddr))
729148c5f43SAlan Wright 		return (FALSE);
730148c5f43SAlan Wright 
731148c5f43SAlan Wright 	if (!xdr_string(xdrs, &objp->e_cli_netbiosname, ~0))
732148c5f43SAlan Wright 		return (FALSE);
733148c5f43SAlan Wright 
734148c5f43SAlan Wright 	if (!xdr_u_int(xdrs, &objp->e_uid))
735148c5f43SAlan Wright 		return (FALSE);
736148c5f43SAlan Wright 
737148c5f43SAlan Wright 	if (!xdr_int(xdrs, &objp->e_type))
738148c5f43SAlan Wright 		return (FALSE);
739148c5f43SAlan Wright 
740148c5f43SAlan Wright 	return (TRUE);
741148c5f43SAlan Wright }
742c13be35aSGordon Ross 
743c13be35aSGordon Ross /*
744c13be35aSGordon Ross  * The smbsrv ioctl callers include a CRC of the XDR encoded data,
745c13be35aSGordon Ross  * and kmod ioctl handler checks it.  Both use this function.  This
746c13be35aSGordon Ross  * is not really XDR related, but this is as good a place as any.
747c13be35aSGordon Ross  */
748c13be35aSGordon Ross #define	SMB_CRC_POLYNOMIAL	0xD8B5D8B5
749c13be35aSGordon Ross uint32_t
smb_crc_gen(uint8_t * buf,size_t len)750c13be35aSGordon Ross smb_crc_gen(uint8_t *buf, size_t len)
751c13be35aSGordon Ross {
752c13be35aSGordon Ross 	uint32_t crc = SMB_CRC_POLYNOMIAL;
753c13be35aSGordon Ross 	uint8_t *p;
754c13be35aSGordon Ross 	int i;
755c13be35aSGordon Ross 
756c13be35aSGordon Ross 	for (p = buf, i = 0; i < len; ++i, ++p) {
757c13be35aSGordon Ross 		crc = (crc ^ (uint32_t)*p) + (crc << 12);
758c13be35aSGordon Ross 
759c13be35aSGordon Ross 		if (crc == 0 || crc == 0xFFFFFFFF)
760c13be35aSGordon Ross 			crc = SMB_CRC_POLYNOMIAL;
761c13be35aSGordon Ross 	}
762c13be35aSGordon Ross 
763c13be35aSGordon Ross 	return (crc);
764c13be35aSGordon Ross }
765