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. 23c13be35aSGordon Ross * Copyright 2012 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> 27*b819cea2SGordon 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" }, 100148c5f43SAlan Wright { SMB_DR_SHR_EXEC, "share_exec" } 1019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States }; 1029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int i; 1039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States for (i = 0; i < (sizeof (ops) / sizeof (ops[0])); ++i) { 1059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (ops[i].op == op) 1069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (ops[i].name); 1079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 1089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return ("unknown"); 1109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 1119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 1139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Encode a door header structure into an XDR buffer. 1149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 1159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 1169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_encode(smb_doorhdr_t *hdr, uint8_t *buf, uint32_t buflen) 1179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 1189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 1199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 1209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE); 1229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_doorhdr_xdr(&xdrs, hdr)) 1249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 1259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 1279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 1289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 1299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 1319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Decode an XDR buffer into a door header structure. 1329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 1339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 1349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_decode(smb_doorhdr_t *hdr, uint8_t *buf, uint32_t buflen) 1359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 1369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 1379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 1389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bzero(hdr, sizeof (smb_doorhdr_t)); 1409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE); 1419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_doorhdr_xdr(&xdrs, hdr)) 1439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 1449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 1469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 1479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 1489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 1509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp) 1519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 1529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_magic)) 1539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_flags)) 1559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_fid)) 1579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_op)) 1599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_txid)) 1619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_datalen)) 1639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_resid)) 1659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_door_rc)) 1679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->dh_status)) 1699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 1709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 1719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 1729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 1749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Encode an smb_netuserinfo_t into a buffer. 1759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 1769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 1779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_encode(smb_netuserinfo_t *info, uint8_t *buf, 1789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t buflen, uint_t *nbytes) 1799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 1809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 1819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 1829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE); 1849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_netuserinfo_xdr(&xdrs, info)) 1869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 1879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (nbytes != NULL) 1899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States *nbytes = xdr_getpos(&xdrs); 1909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 1919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 1929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 1939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 1949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 1959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Decode an XDR buffer into an smb_netuserinfo_t. 1969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 1979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 1989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_decode(smb_netuserinfo_t *info, uint8_t *buf, 1999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t buflen, uint_t *nbytes) 2009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 2019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 2029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 2039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE); 2059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bzero(info, sizeof (smb_netuserinfo_t)); 2079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_netuserinfo_xdr(&xdrs, info)) 2089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 2099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (nbytes != NULL) 2119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States *nbytes = xdr_getpos(&xdrs); 2129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 2139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 2149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 2159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 2179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_inaddr_xdr(XDR *xdrs, smb_inaddr_t *objp) 2189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 2199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_int32_t(xdrs, &objp->a_family)) 2209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (objp->a_family == AF_INET) { 2229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, (in_addr_t *)&objp->a_ipv4)) 2239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } else { 2259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)&objp->a_ipv6, 2269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (objp->a_ipv6), sizeof (char), (xdrproc_t)xdr_char)) 2279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 2299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 2309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 2319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 2339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * XDR encode/decode for smb_netuserinfo_t. 2349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 2359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 2369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netuserinfo_xdr(XDR *xdrs, smb_netuserinfo_t *objp) 2379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 2389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint64_t(xdrs, &objp->ui_session_id)) 2399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 240c5866007SKeyur Desai if (!xdr_uint16_t(xdrs, &objp->ui_smb_uid)) 2419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint16_t(xdrs, &objp->ui_domain_len)) 2439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->ui_domain, ~0)) 2459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint16_t(xdrs, &objp->ui_account_len)) 2479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->ui_account, ~0)) 2499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 250c5866007SKeyur Desai if (!xdr_uint32_t(xdrs, &objp->ui_posix_uid)) 251c5866007SKeyur Desai return (FALSE); 2529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint16_t(xdrs, &objp->ui_workstation_len)) 2539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->ui_workstation, ~0)) 2559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_inaddr_xdr(xdrs, &objp->ui_ipaddr)) 2579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_int32_t(xdrs, &objp->ui_native_os)) 2599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_int64_t(xdrs, &objp->ui_logon_time)) 2619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ui_numopens)) 2639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ui_flags)) 2659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 2669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 2679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 2689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 2709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Encode an smb_netconnectinfo_t into a buffer. 2719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 2729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 2739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_encode(smb_netconnectinfo_t *info, uint8_t *buf, 2749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t buflen, uint_t *nbytes) 2759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 2769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 2779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 2789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE); 2809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_netconnectinfo_xdr(&xdrs, info)) 2829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 2839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (nbytes != NULL) 2859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States *nbytes = xdr_getpos(&xdrs); 2869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 2879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 2889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 2899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 2919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Decode an XDR buffer into an smb_netconnectinfo_t. 2929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 2939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 2949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_decode(smb_netconnectinfo_t *info, uint8_t *buf, 2959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t buflen, uint_t *nbytes) 2969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 2979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 2989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 2999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE); 3019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bzero(info, sizeof (smb_netconnectinfo_t)); 3039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_netconnectinfo_xdr(&xdrs, info)) 3049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 3059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (nbytes != NULL) 3079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States *nbytes = xdr_getpos(&xdrs); 3089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 3099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 3109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 3119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 3139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * XDR encode/decode for smb_netconnectinfo_t. 3149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 3159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 3169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netconnectinfo_xdr(XDR *xdrs, smb_netconnectinfo_t *objp) 3179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 3189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_id)) 3199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_type)) 3219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_numopens)) 3239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_numusers)) 3259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_time)) 3279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_namelen)) 3299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->ci_sharelen)) 3319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->ci_username, MAXNAMELEN)) 3339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->ci_share, MAXNAMELEN)) 3359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 3379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 3389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 3409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Encode an smb_netfileinfo_t into a buffer. 3419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 3429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 3439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_encode(smb_netfileinfo_t *info, uint8_t *buf, 3449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t buflen, uint_t *nbytes) 3459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 3469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 3479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 3489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_ENCODE); 3509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_netfileinfo_xdr(&xdrs, info)) 3529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 3539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (nbytes != NULL) 3559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States *nbytes = xdr_getpos(&xdrs); 3569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 3579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 3589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 3599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 3619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Decode an XDR buffer into an smb_netfileinfo_t. 3629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 3639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int 3649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_decode(smb_netfileinfo_t *info, uint8_t *buf, 3659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t buflen, uint_t *nbytes) 3669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 3679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States XDR xdrs; 3689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int rc = 0; 3699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdrmem_create(&xdrs, (const caddr_t)buf, buflen, XDR_DECODE); 3719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bzero(info, sizeof (smb_netfileinfo_t)); 3739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_netfileinfo_xdr(&xdrs, info)) 3749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States rc = -1; 3759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (nbytes != NULL) 3779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States *nbytes = xdr_getpos(&xdrs); 3789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States xdr_destroy(&xdrs); 3799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (rc); 3809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 3819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 3839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * XDR encode/decode for smb_netfileinfo_t. 3849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 3859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 3869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_netfileinfo_xdr(XDR *xdrs, smb_netfileinfo_t *objp) 3879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 3889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint16_t(xdrs, &objp->fi_fid)) 3899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->fi_uniqid)) 3919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->fi_permissions)) 3939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->fi_numlocks)) 3959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->fi_pathlen)) 3979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 3989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->fi_namelen)) 3999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->fi_path, MAXPATHLEN)) 4019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->fi_username, MAXNAMELEN)) 4039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 4089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_query_xdr(XDR *xdrs, smb_gmttoken_query_t *objp) 4099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->gtq_count)) { 4119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->gtq_path, ~0)) { 4149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States static bool_t 4209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_xdr(XDR *xdrs, smb_gmttoken_t *objp) 4219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, objp, SMB_VSS_GMT_SIZE)) { 4239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 4299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_response_xdr(XDR *xdrs, smb_gmttoken_response_t *objp) 4309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->gtr_count)) { 4329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_array(xdrs, (char **)&objp->gtr_gmttokens.gtr_gmttokens_val, 4359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States (uint_t *)&objp->gtr_gmttokens.gtr_gmttokens_len, ~0, 4369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (smb_gmttoken_t), (xdrproc_t)smb_gmttoken_xdr)) { 4379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 4439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_snapname_xdr(XDR *xdrs, smb_gmttoken_snapname_t *objp) 4449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->gts_path, MAXPATHLEN)) { 4469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->gts_gmttoken, SMB_VSS_GMT_SIZE)) { 4499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 4559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_xdr(XDR *xdrs, smb_quota_t *objp) 4569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)objp->q_sidstr, SMB_SID_STRSZ, 4589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (char), (xdrproc_t)xdr_char)) 4599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->q_sidtype)) 4619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint64_t(xdrs, &objp->q_used)) 4639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint64_t(xdrs, &objp->q_thresh)) 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_limit)) 4679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 4739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_sid_xdr(XDR *xdrs, smb_quota_sid_t *objp) 4749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)objp->qs_sidstr, SMB_SID_STRSZ, 4769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (char), (xdrproc_t)xdr_char)) 4779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 4799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 4809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 4829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_query_xdr(XDR *xdrs, smb_quota_query_t *objp) 4839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 4849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->qq_root_path, ~0)) 4859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->qq_query_op)) 4879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_bool(xdrs, &objp->qq_single)) 4899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_bool(xdrs, &objp->qq_restart)) 4919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->qq_max_quota)) 4939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_list_xdr(xdrs, &objp->qq_sid_list, 4959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States offsetof(smb_quota_sid_t, qs_list_node), 4969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (smb_quota_sid_t), (xdrproc_t)smb_quota_sid_xdr)) 4979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 4989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 4999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 5009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 5039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_response_xdr(XDR *xdrs, smb_quota_response_t *objp) 5049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 5059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->qr_status)) 5069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_list_xdr(xdrs, &objp->qr_quota_list, 5089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States offsetof(smb_quota_t, q_list_node), 5099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (smb_quota_t), (xdrproc_t)smb_quota_xdr)) 5109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 5129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 5159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_quota_set_xdr(XDR *xdrs, smb_quota_set_t *objp) 5169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 5179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->qs_root_path, ~0)) 5189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!smb_list_xdr(xdrs, &objp->qs_quota_list, 5209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States offsetof(smb_quota_t, q_list_node), 5219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (smb_quota_t), (xdrproc_t)smb_quota_xdr)) 5229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 5249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 5279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * XDR a list_t list of elements 5289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * offset - offset of list_node_t in list element 5299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * elsize - size of list element 5309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * elproc - XDR function for the list element 5319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 5329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 5339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_list_xdr(XDR *xdrs, list_t *list, const size_t offset, 5349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const size_t elsize, const xdrproc_t elproc) 5359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 5369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States void *node; 5379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t count = 0; 5389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States switch (xdrs->x_op) { 5409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States case XDR_ENCODE: 5419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States node = list_head(list); 5429fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States while (node) { 5439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States ++count; 5449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States node = list_next(list, node); 5459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &count)) 5479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States node = list_head(list); 5509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States while (node) { 5519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!elproc(xdrs, node)) 5529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States node = list_next(list, node); 5549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 5569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States case XDR_DECODE: 5589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &count)) 5599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_create(list, elsize, offset); 5619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States while (count) { 5629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States node = MEM_MALLOC("xdr", elsize); 5639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (node == NULL) 5649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!elproc(xdrs, node)) 5669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_insert_tail(list, node); 5689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States --count; 5699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 5719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States case XDR_FREE: 5739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States while ((node = list_head(list)) != NULL) { 5749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_remove(list, node); 5759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States (void) elproc(xdrs, node); 5769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States MEM_FREE("xdr", node); 5779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_destroy(list); 5799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 5809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 5869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_pclass_xdr(XDR *xdrs, dfs_target_pclass_t *objp) 5879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 5889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (xdr_enum(xdrs, (enum_t *)objp)); 5899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 5909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 5929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_priority_xdr(XDR *xdrs, dfs_target_priority_t *objp) 5939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 5949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!dfs_target_pclass_xdr(xdrs, &objp->p_class)) 5959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 5979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint16_t(xdrs, &objp->p_rank)) 5989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 5999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 6019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 6029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 6049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_target_xdr(XDR *xdrs, dfs_target_t *objp) 6059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 6069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)objp->t_server, DFS_SRVNAME_MAX, 6079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (char), (xdrproc_t)xdr_char)) 6089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)objp->t_share, DFS_NAME_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_uint32_t(xdrs, &objp->t_state)) 6159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!dfs_target_priority_xdr(xdrs, &objp->t_priority)) 6189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 6219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 6229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 6249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_reftype_xdr(XDR *xdrs, dfs_reftype_t *objp) 6259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 6269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (xdr_enum(xdrs, (enum_t *)objp)); 6279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 6289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 6309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_info_xdr(XDR *xdrs, dfs_info_t *objp) 6319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 6329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)objp->i_uncpath, DFS_PATH_MAX, 6339fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States sizeof (char), (xdrproc_t)xdr_char)) 6349fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_vector(xdrs, (char *)objp->i_comment, DFS_COMMENT_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_guid, 6419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States UUID_PRINTABLE_STRING_LENGTH, 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_uint32_t(xdrs, &objp->i_state)) 6459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->i_timeout)) 6489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->i_propflags)) 6519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->i_type)) 6549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_array(xdrs, (char **)&objp->i_targets, 6579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States (uint32_t *)&objp->i_ntargets, ~0, sizeof (dfs_target_t), 6589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States (xdrproc_t)dfs_target_xdr)) 6599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 6629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 6639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 6659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_referral_query_xdr(XDR *xdrs, dfs_referral_query_t *objp) 6669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 6679fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!dfs_reftype_xdr(xdrs, &objp->rq_type)) 6689fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6699fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6709fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_string(xdrs, &objp->rq_path, ~0)) 6719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 6749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 6759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t 6779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_referral_response_xdr(XDR *xdrs, dfs_referral_response_t *objp) 6789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States { 6799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!dfs_info_xdr(xdrs, &objp->rp_referrals)) 6809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States if (!xdr_uint32_t(xdrs, &objp->rp_status)) 6839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (FALSE); 6849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 6859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States return (TRUE); 6869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } 687148c5f43SAlan Wright 688148c5f43SAlan Wright bool_t 689148c5f43SAlan Wright smb_shr_hostaccess_query_xdr(XDR *xdrs, smb_shr_hostaccess_query_t *objp) 690148c5f43SAlan Wright { 691148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->shq_none, ~0)) 692148c5f43SAlan Wright return (FALSE); 693148c5f43SAlan Wright 694148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->shq_ro, ~0)) 695148c5f43SAlan Wright return (FALSE); 696148c5f43SAlan Wright 697148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->shq_rw, ~0)) 698148c5f43SAlan Wright return (FALSE); 699148c5f43SAlan Wright 700148c5f43SAlan Wright if (!xdr_uint32_t(xdrs, &objp->shq_flag)) 701148c5f43SAlan Wright return (FALSE); 702148c5f43SAlan Wright 703148c5f43SAlan Wright if (!smb_inaddr_xdr(xdrs, &objp->shq_ipaddr)) 704148c5f43SAlan Wright return (FALSE); 705148c5f43SAlan Wright 706148c5f43SAlan Wright return (TRUE); 707148c5f43SAlan Wright } 708148c5f43SAlan Wright 709148c5f43SAlan Wright bool_t 710148c5f43SAlan Wright smb_shr_execinfo_xdr(XDR *xdrs, smb_shr_execinfo_t *objp) 711148c5f43SAlan Wright { 712148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->e_sharename, ~0)) 713148c5f43SAlan Wright return (FALSE); 714148c5f43SAlan Wright 715148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->e_winname, ~0)) 716148c5f43SAlan Wright return (FALSE); 717148c5f43SAlan Wright 718148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->e_userdom, ~0)) 719148c5f43SAlan Wright return (FALSE); 720148c5f43SAlan Wright 721148c5f43SAlan Wright if (!smb_inaddr_xdr(xdrs, &objp->e_srv_ipaddr)) 722148c5f43SAlan Wright return (FALSE); 723148c5f43SAlan Wright 724148c5f43SAlan Wright if (!smb_inaddr_xdr(xdrs, &objp->e_cli_ipaddr)) 725148c5f43SAlan Wright return (FALSE); 726148c5f43SAlan Wright 727148c5f43SAlan Wright if (!xdr_string(xdrs, &objp->e_cli_netbiosname, ~0)) 728148c5f43SAlan Wright return (FALSE); 729148c5f43SAlan Wright 730148c5f43SAlan Wright if (!xdr_u_int(xdrs, &objp->e_uid)) 731148c5f43SAlan Wright return (FALSE); 732148c5f43SAlan Wright 733148c5f43SAlan Wright if (!xdr_int(xdrs, &objp->e_type)) 734148c5f43SAlan Wright return (FALSE); 735148c5f43SAlan Wright 736148c5f43SAlan Wright return (TRUE); 737148c5f43SAlan Wright } 738c13be35aSGordon Ross 739c13be35aSGordon Ross /* 740c13be35aSGordon Ross * The smbsrv ioctl callers include a CRC of the XDR encoded data, 741c13be35aSGordon Ross * and kmod ioctl handler checks it. Both use this function. This 742c13be35aSGordon Ross * is not really XDR related, but this is as good a place as any. 743c13be35aSGordon Ross */ 744c13be35aSGordon Ross #define SMB_CRC_POLYNOMIAL 0xD8B5D8B5 745c13be35aSGordon Ross uint32_t 746c13be35aSGordon Ross smb_crc_gen(uint8_t *buf, size_t len) 747c13be35aSGordon Ross { 748c13be35aSGordon Ross uint32_t crc = SMB_CRC_POLYNOMIAL; 749c13be35aSGordon Ross uint8_t *p; 750c13be35aSGordon Ross int i; 751c13be35aSGordon Ross 752c13be35aSGordon Ross for (p = buf, i = 0; i < len; ++i, ++p) { 753c13be35aSGordon Ross crc = (crc ^ (uint32_t)*p) + (crc << 12); 754c13be35aSGordon Ross 755c13be35aSGordon Ross if (crc == 0 || crc == 0xFFFFFFFF) 756c13be35aSGordon Ross crc = SMB_CRC_POLYNOMIAL; 757c13be35aSGordon Ross } 758c13be35aSGordon Ross 759c13be35aSGordon Ross return (crc); 760c13be35aSGordon Ross } 761