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 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 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 * 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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