1da6c28aaSamw /* 2da6c28aaSamw * CDDL HEADER START 3da6c28aaSamw * 4da6c28aaSamw * The contents of this file are subject to the terms of the 5da6c28aaSamw * Common Development and Distribution License (the "License"). 6da6c28aaSamw * You may not use this file except in compliance with the License. 7da6c28aaSamw * 8da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9da6c28aaSamw * or http://www.opensolaris.org/os/licensing. 10da6c28aaSamw * See the License for the specific language governing permissions 11da6c28aaSamw * and limitations under the License. 12da6c28aaSamw * 13da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each 14da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the 16da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying 17da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner] 18da6c28aaSamw * 19da6c28aaSamw * CDDL HEADER END 20da6c28aaSamw */ 21da6c28aaSamw /* 22c5866007SKeyur Desai * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 2368b2bbf2SGordon Ross * Copyright 2015 Nexenta Systems, Inc. All rights reserved. 24da6c28aaSamw */ 25da6c28aaSamw 26da6c28aaSamw #ifndef _SMBSRV_SMB_XDR_H 27da6c28aaSamw #define _SMBSRV_SMB_XDR_H 28da6c28aaSamw 29da6c28aaSamw #ifdef __cplusplus 30da6c28aaSamw extern "C" { 31da6c28aaSamw #endif 32da6c28aaSamw 33da6c28aaSamw #include <rpc/xdr.h> 34da6c28aaSamw #include <sys/param.h> 359fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/avl.h> 36b819cea2SGordon Ross #include <sys/list.h> 37fe1c642dSBill Krier #include <smbsrv/wintypes.h> 38fe1c642dSBill Krier #include <smbsrv/smb_sid.h> 397f667e74Sjose borrego #include <smbsrv/smbinfo.h> 401fcced4cSJordan Brown #include <smbsrv/smb_ioctl.h> 419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_sid.h> 42148c5f43SAlan Wright #include <smbsrv/smb_share.h> 439fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_dfs.h> 44148c5f43SAlan Wright #include <smbsrv/wintypes.h> 45da6c28aaSamw 46b819cea2SGordon Ross #if defined(_KERNEL) || defined(_FAKE_KERNEL) 47b819cea2SGordon Ross #include <sys/sysmacros.h> 48da6c28aaSamw #define xdr_int8_t xdr_char 49da6c28aaSamw #define xdr_uint8_t xdr_u_char 50da6c28aaSamw #define xdr_int16_t xdr_short 51da6c28aaSamw #define xdr_uint16_t xdr_u_short 52b819cea2SGordon Ross #else /* _KERNEL */ 53b819cea2SGordon Ross #include <stddef.h> /* offsetof */ 54da6c28aaSamw #endif /* _KERNEL */ 55da6c28aaSamw 56*a90cf9f2SGordon Ross /* 57*a90cf9f2SGordon Ross * null-terminated string 58*a90cf9f2SGordon Ross * See also: smb_string_xdr() 59*a90cf9f2SGordon Ross */ 609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_string { 61da6c28aaSamw char *buf; 629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_string_t; 63da6c28aaSamw 64b819cea2SGordon Ross struct smb_buf32; 65da6c28aaSamw 6668b2bbf2SGordon Ross /* 6768b2bbf2SGordon Ross * Initial message on server named pipes. 6868b2bbf2SGordon Ross * Followed by smb_netuserinfo 6968b2bbf2SGordon Ross */ 7068b2bbf2SGordon Ross typedef struct smb_pipehdr { 7168b2bbf2SGordon Ross uint32_t ph_magic; 7268b2bbf2SGordon Ross uint32_t ph_uilen; 7368b2bbf2SGordon Ross } smb_pipehdr_t; 7468b2bbf2SGordon Ross 7568b2bbf2SGordon Ross #define SMB_PIPE_HDR_MAGIC 0x50495045 /* PIPE */ 763db3f65cSamw 773db3f65cSamw /* 7868b2bbf2SGordon Ross * Maximum message size for SMB named pipes. 7968b2bbf2SGordon Ross * Should be less than PIPE_BUF (5120). 8068b2bbf2SGordon Ross * Use the same value Windows does. 813db3f65cSamw */ 8268b2bbf2SGordon Ross #define SMB_PIPE_MAX_MSGSIZE 4280 8368b2bbf2SGordon Ross 8468b2bbf2SGordon Ross /* 8568b2bbf2SGordon Ross * Door up-call stuff shared with smbd 8668b2bbf2SGordon Ross */ 873db3f65cSamw 889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define SMB_DOOR_HDR_MAGIC 0x444F4F52 /* DOOR */ 899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Door header flags. 929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define SMB_DF_ASYNC 0x00000001 /* Asynchronous call */ 949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define SMB_DF_SYSSPACE 0x00000002 /* Called from the kernel */ 959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define SMB_DF_USERSPACE 0x00000004 /* Called from user space */ 96b819cea2SGordon Ross #define SMB_DF_FAKE_KERNEL 0x00000008 /* Called from fake kernel */ 979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Header for door calls. The op codes and return codes are defined 1009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * in smb_door.h. The header is here to make it available to XDR. 1019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * 1029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * fid For opipe: the pipe identifier. 1039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * op The door operation being invoked. 1049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * txid Unique transaction id for the current door call. 1059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * datalen Bytes of data following the header (excludes the header). 1069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * resid For opipe: the number of bytes remaining in the server. 1079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * door_rc Return code provided by the door server. 1089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * status A pass-through status provided by the door operation. 109*a90cf9f2SGordon Ross * 110*a90cf9f2SGordon Ross * See also: smb_doorhdr_xdr() 1119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 1129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_doorhdr { 1139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_magic; 1149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_flags; 1159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_fid; 1169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_op; 1179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_txid; 1189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_datalen; 1199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_resid; 1209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_door_rc; 1219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t dh_status; 1229fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_doorhdr_t; 1233db3f65cSamw 124*a90cf9f2SGordon Ross /* 125*a90cf9f2SGordon Ross * Information about the client of a named pipe, provided by smbsrv 126*a90cf9f2SGordon Ross * to the server side of the named pipe (the RPC service). 127*a90cf9f2SGordon Ross * See also: smb_netuserinfo_xdr() 128*a90cf9f2SGordon Ross */ 1291fcced4cSJordan Brown typedef struct smb_netuserinfo { 1301fcced4cSJordan Brown uint64_t ui_session_id; 131c5866007SKeyur Desai uint16_t ui_smb_uid; 1321fcced4cSJordan Brown uint16_t ui_domain_len; 1331fcced4cSJordan Brown char *ui_domain; 1341fcced4cSJordan Brown uint16_t ui_account_len; 1351fcced4cSJordan Brown char *ui_account; 136c5866007SKeyur Desai uid_t ui_posix_uid; 1371fcced4cSJordan Brown uint16_t ui_workstation_len; 1381fcced4cSJordan Brown char *ui_workstation; 1391fcced4cSJordan Brown smb_inaddr_t ui_ipaddr; 1401fcced4cSJordan Brown int32_t ui_native_os; 1411fcced4cSJordan Brown int64_t ui_logon_time; 1421fcced4cSJordan Brown uint32_t ui_numopens; 1431fcced4cSJordan Brown uint32_t ui_flags; 1441fcced4cSJordan Brown } smb_netuserinfo_t; 145da6c28aaSamw 1461fcced4cSJordan Brown typedef struct smb_opennum { 1471fcced4cSJordan Brown uint32_t open_users; 1481fcced4cSJordan Brown uint32_t open_trees; 1491fcced4cSJordan Brown uint32_t open_files; 1501fcced4cSJordan Brown uint32_t qualtype; 1511fcced4cSJordan Brown char qualifier[MAXNAMELEN]; 1521fcced4cSJordan Brown } smb_opennum_t; 1531fcced4cSJordan Brown 154*a90cf9f2SGordon Ross /* 155*a90cf9f2SGordon Ross * SMB (internal) representation of a tree connection (etc.) 156*a90cf9f2SGordon Ross * See also: smb_netconnectinfo_xdr() 157*a90cf9f2SGordon Ross */ 1581fcced4cSJordan Brown typedef struct smb_netconnectinfo { 1591fcced4cSJordan Brown uint32_t ci_id; 1601fcced4cSJordan Brown uint32_t ci_type; 1611fcced4cSJordan Brown uint32_t ci_numopens; 1621fcced4cSJordan Brown uint32_t ci_numusers; 1631fcced4cSJordan Brown uint32_t ci_time; 1641fcced4cSJordan Brown uint32_t ci_namelen; 1651fcced4cSJordan Brown uint32_t ci_sharelen; 1661fcced4cSJordan Brown char *ci_username; 1671fcced4cSJordan Brown char *ci_share; 1681fcced4cSJordan Brown } smb_netconnectinfo_t; 1691fcced4cSJordan Brown 170*a90cf9f2SGordon Ross /* 171*a90cf9f2SGordon Ross * SMB (internal) representation of an open file. 172*a90cf9f2SGordon Ross * See also: smb_netfileinfo_xdr() 173*a90cf9f2SGordon Ross */ 1741fcced4cSJordan Brown typedef struct smb_netfileinfo { 1751fcced4cSJordan Brown uint16_t fi_fid; 1761fcced4cSJordan Brown uint32_t fi_uniqid; 1771fcced4cSJordan Brown uint32_t fi_permissions; 1781fcced4cSJordan Brown uint32_t fi_numlocks; 1791fcced4cSJordan Brown uint32_t fi_pathlen; 1801fcced4cSJordan Brown uint32_t fi_namelen; 1811fcced4cSJordan Brown char *fi_path; 1821fcced4cSJordan Brown char *fi_username; 1831fcced4cSJordan Brown } smb_netfileinfo_t; 1841fcced4cSJordan Brown 1851fcced4cSJordan Brown typedef struct smb_netsvcitem { 1861fcced4cSJordan Brown list_node_t nsi_lnd; 1871fcced4cSJordan Brown union { 1881fcced4cSJordan Brown smb_netuserinfo_t nsi_user; 1891fcced4cSJordan Brown smb_netconnectinfo_t nsi_tree; 1901fcced4cSJordan Brown smb_netfileinfo_t nsi_ofile; 1911fcced4cSJordan Brown } nsi_un; 1921fcced4cSJordan Brown } smb_netsvcitem_t; 1931fcced4cSJordan Brown 1941fcced4cSJordan Brown typedef struct smb_netsvc { 1951fcced4cSJordan Brown list_t ns_list; 1961fcced4cSJordan Brown smb_netsvcitem_t *ns_items; 1971fcced4cSJordan Brown smb_ioc_svcenum_t *ns_ioc; 1981fcced4cSJordan Brown uint32_t ns_ioclen; 1991fcced4cSJordan Brown } smb_netsvc_t; 200da6c28aaSamw 201da6c28aaSamw 202b819cea2SGordon Ross bool_t smb_buf32_xdr(XDR *, struct smb_buf32 *); 2039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_string_xdr(XDR *, smb_string_t *); 2049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_inaddr_xdr(XDR *, smb_inaddr_t *); 2059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *smb_doorhdr_opname(uint32_t); 2079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_doorhdr_encode(smb_doorhdr_t *, uint8_t *, uint32_t); 2089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_doorhdr_decode(smb_doorhdr_t *, uint8_t *, uint32_t); 2099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp); 2101fcced4cSJordan Brown int smb_netuserinfo_encode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *); 2111fcced4cSJordan Brown int smb_netuserinfo_decode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *); 2121fcced4cSJordan Brown bool_t smb_netuserinfo_xdr(XDR *, smb_netuserinfo_t *); 2131fcced4cSJordan Brown int smb_netconnectinfo_encode(smb_netconnectinfo_t *, uint8_t *, uint32_t, 21429bd2886SAlan Wright uint_t *); 2151fcced4cSJordan Brown int smb_netconnectinfo_decode(smb_netconnectinfo_t *, uint8_t *, uint32_t, 21629bd2886SAlan Wright uint_t *); 2171fcced4cSJordan Brown bool_t smb_netconnectinfo_xdr(XDR *, smb_netconnectinfo_t *); 2181fcced4cSJordan Brown int smb_netfileinfo_encode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *); 2191fcced4cSJordan Brown int smb_netfileinfo_decode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *); 2201fcced4cSJordan Brown bool_t smb_netfileinfo_xdr(XDR *, smb_netfileinfo_t *); 2211fcced4cSJordan Brown 222fe1c642dSBill Krier typedef uint16_t sid_type_t; 223fe1c642dSBill Krier 224fe1c642dSBill Krier typedef struct lsa_account { 225fe1c642dSBill Krier ntstatus_t a_status; 226fe1c642dSBill Krier sid_type_t a_sidtype; 227fe1c642dSBill Krier char a_domain[MAXNAMELEN]; 228fe1c642dSBill Krier char a_name[MAXNAMELEN]; 229fe1c642dSBill Krier char a_sid[SMB_SID_STRSZ]; 230fe1c642dSBill Krier } lsa_account_t; 231fe1c642dSBill Krier 232fe1c642dSBill Krier int lsa_account_encode(lsa_account_t *, uint8_t *, uint32_t); 233fe1c642dSBill Krier int lsa_account_decode(lsa_account_t *, uint8_t *, uint32_t); 234fe1c642dSBill Krier bool_t lsa_account_xdr(XDR *, lsa_account_t *); 235fe1c642dSBill Krier 23689dc44ceSjose borrego /* 23789dc44ceSjose borrego * VSS Door Structures 23889dc44ceSjose borrego */ 23989dc44ceSjose borrego #define SMB_VSS_GMT_SIZE sizeof ("@GMT-yyyy.mm.dd-hh.mm.ss") 24089dc44ceSjose borrego 241*a90cf9f2SGordon Ross /* 242*a90cf9f2SGordon Ross * Args for enumerating "previous versions". 243*a90cf9f2SGordon Ross * See also: smb_gmttoken_query_xdr() 244*a90cf9f2SGordon Ross */ 2459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_query { 2469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t gtq_count; 2479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *gtq_path; 2489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_query_t; 24989dc44ceSjose borrego 250*a90cf9f2SGordon Ross /* 251*a90cf9f2SGordon Ross * Part of response for enumerating "previous versions". 252*a90cf9f2SGordon Ross * See also: smb_gmttoken_xdr() 253*a90cf9f2SGordon Ross */ 2549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef char *smb_gmttoken_t; 25589dc44ceSjose borrego 256*a90cf9f2SGordon Ross /* 257*a90cf9f2SGordon Ross * Response for enumerating "previous versions". 258*a90cf9f2SGordon Ross * See also: smb_gmttoken_response_xdr() 259*a90cf9f2SGordon Ross */ 2609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_response { 2619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t gtr_count; 26289dc44ceSjose borrego struct { 2639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint_t gtr_gmttokens_len; 2649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States smb_gmttoken_t *gtr_gmttokens_val; 2659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } gtr_gmttokens; 2669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_response_t; 26789dc44ceSjose borrego 268*a90cf9f2SGordon Ross /* 269*a90cf9f2SGordon Ross * Args to lookup "previous versions" during open. 270*a90cf9f2SGordon Ross * See also: smb_gmttoken_snapname_xdr() 271*a90cf9f2SGordon Ross */ 2729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_snapname { 2739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *gts_path; 2749fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *gts_gmttoken; 275*a90cf9f2SGordon Ross uint64_t gts_toktime; /* seconds */ 2769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_snapname_t; 27789dc44ceSjose borrego 2789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_query_xdr(XDR *, smb_gmttoken_query_t *); 2799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_response_xdr(XDR *, smb_gmttoken_response_t *); 2809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_snapname_xdr(XDR *, smb_gmttoken_snapname_t *); 2819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 2829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 2839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * User and Group Quotas 2849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * 2859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * SMB User and Group quota values of SMB_QUOTA_UNLIMITED mean 2869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * No Limit. This maps to 0 (none) on ZFS. 2879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States */ 2889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define SMB_QUOTA_UNLIMITED 0xFFFFFFFFFFFFFFFF 2899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 290*a90cf9f2SGordon Ross /* 291*a90cf9f2SGordon Ross * SMB (internal) representation of a quota response 292*a90cf9f2SGordon Ross * See also: smb_quota_xdr() 293*a90cf9f2SGordon Ross */ 2949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota { 2959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_node_t q_list_node; 2969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char q_sidstr[SMB_SID_STRSZ]; 2979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t q_sidtype; 2989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint64_t q_used; 2999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint64_t q_thresh; 3009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint64_t q_limit; 3019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States avl_node_t q_avl_node; 3029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_t; 3039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 304*a90cf9f2SGordon Ross /* 305*a90cf9f2SGordon Ross * Part of a quota response 306*a90cf9f2SGordon Ross * See also: smb_quota_sid_xdr() 307*a90cf9f2SGordon Ross */ 3089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_sid { 3099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_node_t qs_list_node; 3109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char qs_sidstr[SMB_SID_STRSZ]; 3119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_sid_t; 3129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef enum { 3149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States SMB_QUOTA_QUERY_INVALID_OP, 3159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States SMB_QUOTA_QUERY_SIDLIST, 3169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States SMB_QUOTA_QUERY_STARTSID, 3179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States SMB_QUOTA_QUERY_ALL 3189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_query_op_t; 3199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 320*a90cf9f2SGordon Ross /* 321*a90cf9f2SGordon Ross * SMB (internal) form of a quota lookup 322*a90cf9f2SGordon Ross * See also: smb_quota_query_xdr() 323*a90cf9f2SGordon Ross */ 3249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_query { 3259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *qq_root_path; 3269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t qq_query_op; /* smb_quota_query_op_t */ 3279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t qq_single; 3289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t qq_restart; 3299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t qq_max_quota; 3309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_t qq_sid_list; /* list of smb_quota_sid_t */ 3319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_query_t; 3329fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 333*a90cf9f2SGordon Ross /* 334*a90cf9f2SGordon Ross * The get quota response (list of quota records) 335*a90cf9f2SGordon Ross * See also: smb_quota_response_xdr() 336*a90cf9f2SGordon Ross */ 3379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_response { 3389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t qr_status; 3399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_t qr_quota_list; /* list of smb_quota_t */ 3409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_response_t; 3419fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 342*a90cf9f2SGordon Ross /* 343*a90cf9f2SGordon Ross * The set quota request (list of quota records) 344*a90cf9f2SGordon Ross * See also: smb_quota_set_xdr() 345*a90cf9f2SGordon Ross */ 3469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_set { 3479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *qs_root_path; 3489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States list_t qs_quota_list; /* list of smb_quota_t */ 3499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_set_t; 3509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_query_xdr(XDR *, smb_quota_query_t *); 3529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_response_xdr(XDR *, smb_quota_response_t *); 3539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_set_xdr(XDR *, smb_quota_set_t *); 3549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct dfs_referral_query { 3569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_reftype_t rq_type; 3579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States char *rq_path; 3589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } dfs_referral_query_t; 3599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct dfs_referral_response { 3619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States dfs_info_t rp_referrals; 3629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States uint32_t rp_status; 3639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } dfs_referral_response_t; 3649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 3659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t dfs_referral_query_xdr(XDR *, dfs_referral_query_t *); 3669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t dfs_referral_response_xdr(XDR *, dfs_referral_response_t *); 3673db3f65cSamw 368148c5f43SAlan Wright typedef struct smb_shr_hostaccess_query { 369148c5f43SAlan Wright char *shq_none; 370148c5f43SAlan Wright char *shq_ro; 371148c5f43SAlan Wright char *shq_rw; 372148c5f43SAlan Wright uint32_t shq_flag; 373148c5f43SAlan Wright smb_inaddr_t shq_ipaddr; 374148c5f43SAlan Wright } smb_shr_hostaccess_query_t; 375148c5f43SAlan Wright 376148c5f43SAlan Wright bool_t smb_shr_hostaccess_query_xdr(XDR *, smb_shr_hostaccess_query_t *); 377148c5f43SAlan Wright bool_t smb_shr_execinfo_xdr(XDR *, smb_shr_execinfo_t *); 378148c5f43SAlan Wright 379da6c28aaSamw #ifdef __cplusplus 380da6c28aaSamw } 381da6c28aaSamw #endif 382da6c28aaSamw 383da6c28aaSamw #endif /* _SMBSRV_SMB_XDR_H */ 384