xref: /illumos-gate/usr/src/uts/common/smbsrv/smb_xdr.h (revision 9fb67ea3)
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 /*
22*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23da6c28aaSamw  * Use is subject to license terms.
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>
35*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <sys/avl.h>
36fe1c642dSBill Krier #include <smbsrv/wintypes.h>
37fe1c642dSBill Krier #include <smbsrv/smb_sid.h>
387f667e74Sjose borrego #include <smbsrv/smbinfo.h>
391fcced4cSJordan Brown #include <smbsrv/smb_ioctl.h>
40*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_sid.h>
41*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/wintypes.h>
42*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #include <smbsrv/smb_dfs.h>
43da6c28aaSamw 
44da6c28aaSamw typedef struct smb_dr_kshare {
45da6c28aaSamw 	int32_t k_op;
46da6c28aaSamw 	char *k_path;
47da6c28aaSamw 	char *k_sharename;
48da6c28aaSamw } smb_dr_kshare_t;
49da6c28aaSamw 
50da6c28aaSamw #ifdef _KERNEL
51da6c28aaSamw #define	xdr_int8_t	xdr_char
52da6c28aaSamw #define	xdr_uint8_t	xdr_u_char
53da6c28aaSamw #define	xdr_int16_t	xdr_short
54da6c28aaSamw #define	xdr_uint16_t	xdr_u_short
55da6c28aaSamw 
56da6c28aaSamw smb_dr_kshare_t *smb_share_mkabsolute(uint8_t *buf, uint32_t len);
57da6c28aaSamw #else
58da6c28aaSamw uint8_t *smb_kshare_mkselfrel(smb_dr_kshare_t *kshare, uint32_t *len);
59da6c28aaSamw #endif /* _KERNEL */
60da6c28aaSamw 
61*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* null-terminated string */
62*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_string {
63da6c28aaSamw 	char *buf;
64*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_string_t;
65da6c28aaSamw 
66*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /* 32-bit opaque buffer (non-null terminated strings) */
67*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_buf32 {
68*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t	len;
69*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint8_t		*val;
70*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_buf32_t;
71da6c28aaSamw 
723db3f65cSamw #define	SMB_OPIPE_HDR_MAGIC	0x4F484452	/* OHDR */
733db3f65cSamw #define	SMB_OPIPE_DOOR_BUFSIZE	(30 * 1024)
743db3f65cSamw 
75da6c28aaSamw /*
763db3f65cSamw  * Door operations for opipes.
77da6c28aaSamw  */
783db3f65cSamw typedef enum {
793db3f65cSamw 	SMB_OPIPE_NULL = 0,
803db3f65cSamw 	SMB_OPIPE_LOOKUP,
813db3f65cSamw 	SMB_OPIPE_OPEN,
823db3f65cSamw 	SMB_OPIPE_CLOSE,
833db3f65cSamw 	SMB_OPIPE_READ,
843db3f65cSamw 	SMB_OPIPE_WRITE,
85*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_OPIPE_EXEC
863db3f65cSamw } smb_opipe_op_t;
873db3f65cSamw 
88*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOOR_HDR_MAGIC	0x444F4F52	/* DOOR */
89*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
90*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
91*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Door header flags.
92*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
93*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DF_ASYNC		0x00000001	/* Asynchronous call */
94*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DF_SYSSPACE		0x00000002	/* Called from the kernel */
95*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DF_USERSPACE	0x00000004	/* Called from user space */
96*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
97*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
98*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Header for door calls.  The op codes and return codes are defined
99*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * in smb_door.h.  The header is here to make it available to XDR.
100*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
101*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * fid		For opipe: the pipe identifier.
102*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * op		The door operation being invoked.
103*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * txid		Unique transaction id for the current door call.
104*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * datalen	Bytes of data following the header (excludes the header).
105*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * resid	For opipe: the number of bytes remaining in the server.
106*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * door_rc	Return code provided by the door server.
107*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * status	A pass-through status provided by the door operation.
108*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
109*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_doorhdr {
110*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_magic;
111*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_flags;
112*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_fid;
113*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_op;
114*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_txid;
115*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_datalen;
116*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_resid;
117*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_door_rc;
118*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_status;
119*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_doorhdr_t;
1203db3f65cSamw 
1211fcced4cSJordan Brown typedef struct smb_netuserinfo {
1221fcced4cSJordan Brown 	uint64_t	ui_session_id;
1231fcced4cSJordan Brown 	uint16_t	ui_uid;
1241fcced4cSJordan Brown 	uint16_t	ui_domain_len;
1251fcced4cSJordan Brown 	char		*ui_domain;
1261fcced4cSJordan Brown 	uint16_t	ui_account_len;
1271fcced4cSJordan Brown 	char		*ui_account;
1281fcced4cSJordan Brown 	uint16_t	ui_workstation_len;
1291fcced4cSJordan Brown 	char		*ui_workstation;
1301fcced4cSJordan Brown 	smb_inaddr_t	ui_ipaddr;
1311fcced4cSJordan Brown 	int32_t		ui_native_os;
1321fcced4cSJordan Brown 	int64_t		ui_logon_time;
1331fcced4cSJordan Brown 	uint32_t	ui_numopens;
1341fcced4cSJordan Brown 	uint32_t	ui_flags;
1351fcced4cSJordan Brown } smb_netuserinfo_t;
1361fcced4cSJordan Brown 
1371fcced4cSJordan Brown typedef struct smb_opennum {
1381fcced4cSJordan Brown 	uint32_t	open_users;
1391fcced4cSJordan Brown 	uint32_t	open_trees;
1401fcced4cSJordan Brown 	uint32_t	open_files;
1411fcced4cSJordan Brown 	uint32_t	qualtype;
1421fcced4cSJordan Brown 	char		qualifier[MAXNAMELEN];
1431fcced4cSJordan Brown } smb_opennum_t;
1441fcced4cSJordan Brown 
1451fcced4cSJordan Brown typedef struct smb_netconnectinfo {
1461fcced4cSJordan Brown 	uint32_t	ci_id;
1471fcced4cSJordan Brown 	uint32_t	ci_type;
1481fcced4cSJordan Brown 	uint32_t	ci_numopens;
1491fcced4cSJordan Brown 	uint32_t	ci_numusers;
1501fcced4cSJordan Brown 	uint32_t	ci_time;
1511fcced4cSJordan Brown 	uint32_t	ci_namelen;
1521fcced4cSJordan Brown 	uint32_t	ci_sharelen;
1531fcced4cSJordan Brown 	char		*ci_username;
1541fcced4cSJordan Brown 	char		*ci_share;
1551fcced4cSJordan Brown } smb_netconnectinfo_t;
1561fcced4cSJordan Brown 
1571fcced4cSJordan Brown typedef struct smb_netfileinfo {
1581fcced4cSJordan Brown 	uint16_t	fi_fid;
1591fcced4cSJordan Brown 	uint32_t	fi_uniqid;
1601fcced4cSJordan Brown 	uint32_t	fi_permissions;
1611fcced4cSJordan Brown 	uint32_t	fi_numlocks;
1621fcced4cSJordan Brown 	uint32_t	fi_pathlen;
1631fcced4cSJordan Brown 	uint32_t	fi_namelen;
1641fcced4cSJordan Brown 	char		*fi_path;
1651fcced4cSJordan Brown 	char		*fi_username;
1661fcced4cSJordan Brown } smb_netfileinfo_t;
1671fcced4cSJordan Brown 
1681fcced4cSJordan Brown typedef struct smb_netsvcitem {
1691fcced4cSJordan Brown 	list_node_t	nsi_lnd;
1701fcced4cSJordan Brown 	union {
1711fcced4cSJordan Brown 		smb_netuserinfo_t	nsi_user;
1721fcced4cSJordan Brown 		smb_netconnectinfo_t	nsi_tree;
1731fcced4cSJordan Brown 		smb_netfileinfo_t	nsi_ofile;
1741fcced4cSJordan Brown 	} nsi_un;
1751fcced4cSJordan Brown } smb_netsvcitem_t;
1761fcced4cSJordan Brown 
1771fcced4cSJordan Brown typedef struct smb_netsvc {
1781fcced4cSJordan Brown 	list_t			ns_list;
1791fcced4cSJordan Brown 	smb_netsvcitem_t	*ns_items;
1801fcced4cSJordan Brown 	smb_ioc_svcenum_t	*ns_ioc;
1811fcced4cSJordan Brown 	uint32_t		ns_ioclen;
1821fcced4cSJordan Brown } smb_netsvc_t;
183da6c28aaSamw 
184da6c28aaSamw 
185*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_buf32_xdr(XDR *, smb_buf32_t *);
186*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_string_xdr(XDR *, smb_string_t *);
187*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_dr_kshare_xdr(XDR *, smb_dr_kshare_t *);
188*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_inaddr_xdr(XDR *, smb_inaddr_t *);
189*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
190*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *smb_doorhdr_opname(uint32_t);
191*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_doorhdr_encode(smb_doorhdr_t *, uint8_t *, uint32_t);
192*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_doorhdr_decode(smb_doorhdr_t *, uint8_t *, uint32_t);
193*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp);
1941fcced4cSJordan Brown int smb_netuserinfo_encode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *);
1951fcced4cSJordan Brown int smb_netuserinfo_decode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *);
1961fcced4cSJordan Brown bool_t smb_netuserinfo_xdr(XDR *, smb_netuserinfo_t *);
1971fcced4cSJordan Brown int smb_netconnectinfo_encode(smb_netconnectinfo_t *, uint8_t *, uint32_t,
19829bd2886SAlan Wright     uint_t *);
1991fcced4cSJordan Brown int smb_netconnectinfo_decode(smb_netconnectinfo_t *, uint8_t *, uint32_t,
20029bd2886SAlan Wright     uint_t *);
2011fcced4cSJordan Brown bool_t smb_netconnectinfo_xdr(XDR *, smb_netconnectinfo_t *);
2021fcced4cSJordan Brown int smb_netfileinfo_encode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *);
2031fcced4cSJordan Brown int smb_netfileinfo_decode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *);
2041fcced4cSJordan Brown bool_t smb_netfileinfo_xdr(XDR *, smb_netfileinfo_t *);
2051fcced4cSJordan Brown 
206fe1c642dSBill Krier typedef uint16_t sid_type_t;
207fe1c642dSBill Krier 
208fe1c642dSBill Krier typedef struct lsa_account {
209fe1c642dSBill Krier 	ntstatus_t	a_status;
210fe1c642dSBill Krier 	sid_type_t	a_sidtype;
211fe1c642dSBill Krier 	char		a_domain[MAXNAMELEN];
212fe1c642dSBill Krier 	char		a_name[MAXNAMELEN];
213fe1c642dSBill Krier 	char		a_sid[SMB_SID_STRSZ];
214fe1c642dSBill Krier } lsa_account_t;
215fe1c642dSBill Krier 
216fe1c642dSBill Krier int lsa_account_encode(lsa_account_t *, uint8_t *, uint32_t);
217fe1c642dSBill Krier int lsa_account_decode(lsa_account_t *, uint8_t *, uint32_t);
218fe1c642dSBill Krier bool_t lsa_account_xdr(XDR *, lsa_account_t *);
219fe1c642dSBill Krier 
22089dc44ceSjose borrego /*
22189dc44ceSjose borrego  * VSS Door Structures
22289dc44ceSjose borrego  */
22389dc44ceSjose borrego #define	SMB_VSS_GMT_SIZE sizeof ("@GMT-yyyy.mm.dd-hh.mm.ss")
22489dc44ceSjose borrego 
225*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_query {
226*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t	gtq_count;
227*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char		*gtq_path;
228*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_query_t;
22989dc44ceSjose borrego 
230*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef char *smb_gmttoken_t;
23189dc44ceSjose borrego 
232*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_response {
233*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t gtr_count;
23489dc44ceSjose borrego 	struct {
235*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		uint_t		gtr_gmttokens_len;
236*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		smb_gmttoken_t	*gtr_gmttokens_val;
237*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	} gtr_gmttokens;
238*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_response_t;
239*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
240*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_snapname {
241*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char	*gts_path;
242*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char	*gts_gmttoken;
243*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_snapname_t;
244*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
245*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_query_xdr(XDR *, smb_gmttoken_query_t *);
246*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_response_xdr(XDR *, smb_gmttoken_response_t *);
247*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_snapname_xdr(XDR *, smb_gmttoken_snapname_t *);
248*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
249*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
250*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * User and Group Quotas
251*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
252*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * SMB User and Group quota values of SMB_QUOTA_UNLIMITED mean
253*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * No Limit. This maps to 0 (none) on ZFS.
254*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
255*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_QUOTA_UNLIMITED		0xFFFFFFFFFFFFFFFF
256*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
257*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota {
258*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_node_t q_list_node;
259*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char q_sidstr[SMB_SID_STRSZ];
260*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t q_sidtype;
261*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint64_t q_used;
262*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint64_t q_thresh;
263*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint64_t q_limit;
264*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	avl_node_t q_avl_node;
265*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_t;
266*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
267*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_sid {
268*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_node_t qs_list_node;
269*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char qs_sidstr[SMB_SID_STRSZ];
270*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_sid_t;
271*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
272*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef enum {
273*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_INVALID_OP,
274*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_SIDLIST,
275*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_STARTSID,
276*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_ALL
277*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_query_op_t;
278*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
279*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_query {
280*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *qq_root_path;
281*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t qq_query_op;	/* smb_quota_query_op_t */
282*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bool_t qq_single;
283*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bool_t qq_restart;
284*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t qq_max_quota;
285*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_t qq_sid_list;	/* list of smb_quota_sid_t */
286*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_query_t;
287*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
288*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_response {
289*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t qr_status;
290*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_t qr_quota_list;	/* list of smb_quota_t */
291*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_response_t;
292*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
293*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_set {
294*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *qs_root_path;
295*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_t qs_quota_list;	/* list of smb_quota_t */
296*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_set_t;
297*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
298*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_query_xdr(XDR *, smb_quota_query_t *);
299*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_response_xdr(XDR *, smb_quota_response_t *);
300*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_set_xdr(XDR *, smb_quota_set_t *);
301*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
302*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct dfs_referral_query {
303*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	dfs_reftype_t	rq_type;
304*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char 		*rq_path;
305*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } dfs_referral_query_t;
306*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
307*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct dfs_referral_response {
308*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	dfs_info_t	rp_referrals;
309*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t	rp_status;
310*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } dfs_referral_response_t;
311*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
312*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t dfs_referral_query_xdr(XDR *, dfs_referral_query_t *);
313*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t dfs_referral_response_xdr(XDR *, dfs_referral_response_t *);
3143db3f65cSamw 
315da6c28aaSamw #ifdef	__cplusplus
316da6c28aaSamw }
317da6c28aaSamw #endif
318da6c28aaSamw 
319da6c28aaSamw #endif	/* _SMBSRV_SMB_XDR_H */
320