xref: /illumos-gate/usr/src/uts/common/smbsrv/smb_xdr.h (revision 3299f39fdcbdab4be7a9c70daa3873f2b78a398d)
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>
37*3299f39fSGordon Ross #include <smb/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>
44da6c28aaSamw 
45b819cea2SGordon Ross #if defined(_KERNEL) || defined(_FAKE_KERNEL)
46b819cea2SGordon Ross #include <sys/sysmacros.h>
47da6c28aaSamw #define	xdr_int8_t	xdr_char
48da6c28aaSamw #define	xdr_uint8_t	xdr_u_char
49da6c28aaSamw #define	xdr_int16_t	xdr_short
50da6c28aaSamw #define	xdr_uint16_t	xdr_u_short
51b819cea2SGordon Ross #else /* _KERNEL */
52b819cea2SGordon Ross #include <stddef.h>	/* offsetof */
53da6c28aaSamw #endif /* _KERNEL */
54da6c28aaSamw 
55a90cf9f2SGordon Ross /*
56a90cf9f2SGordon Ross  * null-terminated string
57a90cf9f2SGordon Ross  * See also: smb_string_xdr()
58a90cf9f2SGordon Ross  */
599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_string {
60da6c28aaSamw 	char *buf;
619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_string_t;
62da6c28aaSamw 
63b819cea2SGordon Ross struct smb_buf32;
64da6c28aaSamw 
6568b2bbf2SGordon Ross /*
6668b2bbf2SGordon Ross  * Initial message on server named pipes.
6768b2bbf2SGordon Ross  * Followed by smb_netuserinfo
6868b2bbf2SGordon Ross  */
6968b2bbf2SGordon Ross typedef struct smb_pipehdr {
7068b2bbf2SGordon Ross 	uint32_t ph_magic;
7168b2bbf2SGordon Ross 	uint32_t ph_uilen;
7268b2bbf2SGordon Ross } smb_pipehdr_t;
7368b2bbf2SGordon Ross 
7468b2bbf2SGordon Ross #define	SMB_PIPE_HDR_MAGIC	0x50495045	/* PIPE */
7568b2bbf2SGordon Ross 
7668b2bbf2SGordon Ross /*
7768b2bbf2SGordon Ross  * Maximum message size for SMB named pipes.
7868b2bbf2SGordon Ross  * Should be less than PIPE_BUF (5120).
7968b2bbf2SGordon Ross  * Use the same value Windows does.
8068b2bbf2SGordon Ross  */
8168b2bbf2SGordon Ross #define	SMB_PIPE_MAX_MSGSIZE	4280
823db3f65cSamw 
83da6c28aaSamw /*
8468b2bbf2SGordon Ross  * Door up-call stuff shared with smbd
85da6c28aaSamw  */
863db3f65cSamw 
879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DOOR_HDR_MAGIC	0x444F4F52	/* DOOR */
889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
899fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
909fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Door header flags.
919fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
929fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DF_ASYNC		0x00000001	/* Asynchronous call */
939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DF_SYSSPACE		0x00000002	/* Called from the kernel */
949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_DF_USERSPACE	0x00000004	/* Called from user space */
95b819cea2SGordon Ross #define	SMB_DF_FAKE_KERNEL	0x00000008	/* Called from fake kernel */
969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * Header for door calls.  The op codes and return codes are defined
999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * in smb_door.h.  The header is here to make it available to XDR.
1009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
1019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * fid		For opipe: the pipe identifier.
1029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * op		The door operation being invoked.
1039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * txid		Unique transaction id for the current door call.
1049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * datalen	Bytes of data following the header (excludes the header).
1059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * resid	For opipe: the number of bytes remaining in the server.
1069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * door_rc	Return code provided by the door server.
1079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * status	A pass-through status provided by the door operation.
108a90cf9f2SGordon Ross  *
109a90cf9f2SGordon Ross  * See also: smb_doorhdr_xdr()
1109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
1119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_doorhdr {
1129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_magic;
1139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_flags;
1149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_fid;
1159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_op;
1169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_txid;
1179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_datalen;
1189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_resid;
1199fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_door_rc;
1209fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t dh_status;
1219fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_doorhdr_t;
1223db3f65cSamw 
123a90cf9f2SGordon Ross /*
124a90cf9f2SGordon Ross  * Information about the client of a named pipe, provided by smbsrv
125a90cf9f2SGordon Ross  * to the server side of the named pipe (the RPC service).
126a90cf9f2SGordon Ross  * See also: smb_netuserinfo_xdr()
127a90cf9f2SGordon Ross  */
1281fcced4cSJordan Brown typedef struct smb_netuserinfo {
1291fcced4cSJordan Brown 	uint64_t	ui_session_id;
130c5866007SKeyur Desai 	uint16_t	ui_smb_uid;
1311fcced4cSJordan Brown 	uint16_t	ui_domain_len;
1321fcced4cSJordan Brown 	char		*ui_domain;
1331fcced4cSJordan Brown 	uint16_t	ui_account_len;
1341fcced4cSJordan Brown 	char		*ui_account;
135c5866007SKeyur Desai 	uid_t		ui_posix_uid;
1361fcced4cSJordan Brown 	uint16_t	ui_workstation_len;
1371fcced4cSJordan Brown 	char		*ui_workstation;
1381fcced4cSJordan Brown 	smb_inaddr_t	ui_ipaddr;
1391fcced4cSJordan Brown 	int32_t		ui_native_os;
1401fcced4cSJordan Brown 	int64_t		ui_logon_time;
1411fcced4cSJordan Brown 	uint32_t	ui_numopens;
1421fcced4cSJordan Brown 	uint32_t	ui_flags;
1431fcced4cSJordan Brown } smb_netuserinfo_t;
1441fcced4cSJordan Brown 
1451fcced4cSJordan Brown typedef struct smb_opennum {
1461fcced4cSJordan Brown 	uint32_t	open_users;
1471fcced4cSJordan Brown 	uint32_t	open_trees;
1481fcced4cSJordan Brown 	uint32_t	open_files;
1491fcced4cSJordan Brown 	uint32_t	qualtype;
1501fcced4cSJordan Brown 	char		qualifier[MAXNAMELEN];
1511fcced4cSJordan Brown } smb_opennum_t;
1521fcced4cSJordan Brown 
153a90cf9f2SGordon Ross /*
154a90cf9f2SGordon Ross  * SMB (internal) representation of a tree connection (etc.)
155a90cf9f2SGordon Ross  * See also: smb_netconnectinfo_xdr()
156a90cf9f2SGordon Ross  */
1571fcced4cSJordan Brown typedef struct smb_netconnectinfo {
1581fcced4cSJordan Brown 	uint32_t	ci_id;
1591fcced4cSJordan Brown 	uint32_t	ci_type;
1601fcced4cSJordan Brown 	uint32_t	ci_numopens;
1611fcced4cSJordan Brown 	uint32_t	ci_numusers;
1621fcced4cSJordan Brown 	uint32_t	ci_time;
1631fcced4cSJordan Brown 	uint32_t	ci_namelen;
1641fcced4cSJordan Brown 	uint32_t	ci_sharelen;
1651fcced4cSJordan Brown 	char		*ci_username;
1661fcced4cSJordan Brown 	char		*ci_share;
1671fcced4cSJordan Brown } smb_netconnectinfo_t;
1681fcced4cSJordan Brown 
169a90cf9f2SGordon Ross /*
170a90cf9f2SGordon Ross  * SMB (internal) representation of an open file.
171a90cf9f2SGordon Ross  * See also: smb_netfileinfo_xdr()
172a90cf9f2SGordon Ross  */
1731fcced4cSJordan Brown typedef struct smb_netfileinfo {
1741fcced4cSJordan Brown 	uint16_t	fi_fid;
1751fcced4cSJordan Brown 	uint32_t	fi_uniqid;
1761fcced4cSJordan Brown 	uint32_t	fi_permissions;
1771fcced4cSJordan Brown 	uint32_t	fi_numlocks;
1781fcced4cSJordan Brown 	uint32_t	fi_pathlen;
1791fcced4cSJordan Brown 	uint32_t	fi_namelen;
1801fcced4cSJordan Brown 	char		*fi_path;
1811fcced4cSJordan Brown 	char		*fi_username;
1821fcced4cSJordan Brown } smb_netfileinfo_t;
1831fcced4cSJordan Brown 
1841fcced4cSJordan Brown typedef struct smb_netsvcitem {
1851fcced4cSJordan Brown 	list_node_t	nsi_lnd;
1861fcced4cSJordan Brown 	union {
1871fcced4cSJordan Brown 		smb_netuserinfo_t	nsi_user;
1881fcced4cSJordan Brown 		smb_netconnectinfo_t	nsi_tree;
1891fcced4cSJordan Brown 		smb_netfileinfo_t	nsi_ofile;
1901fcced4cSJordan Brown 	} nsi_un;
1911fcced4cSJordan Brown } smb_netsvcitem_t;
1921fcced4cSJordan Brown 
1931fcced4cSJordan Brown typedef struct smb_netsvc {
1941fcced4cSJordan Brown 	list_t			ns_list;
1951fcced4cSJordan Brown 	smb_netsvcitem_t	*ns_items;
1961fcced4cSJordan Brown 	smb_ioc_svcenum_t	*ns_ioc;
1971fcced4cSJordan Brown 	uint32_t		ns_ioclen;
1981fcced4cSJordan Brown } smb_netsvc_t;
199da6c28aaSamw 
200da6c28aaSamw 
201b819cea2SGordon Ross bool_t smb_buf32_xdr(XDR *, struct smb_buf32 *);
2029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_string_xdr(XDR *, smb_string_t *);
2039fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_inaddr_xdr(XDR *, smb_inaddr_t *);
2049fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2059fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States const char *smb_doorhdr_opname(uint32_t);
2069fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_doorhdr_encode(smb_doorhdr_t *, uint8_t *, uint32_t);
2079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States int smb_doorhdr_decode(smb_doorhdr_t *, uint8_t *, uint32_t);
2089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_doorhdr_xdr(XDR *xdrs, smb_doorhdr_t *objp);
2091fcced4cSJordan Brown int smb_netuserinfo_encode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *);
2101fcced4cSJordan Brown int smb_netuserinfo_decode(smb_netuserinfo_t *, uint8_t *, uint32_t, uint_t *);
2111fcced4cSJordan Brown bool_t smb_netuserinfo_xdr(XDR *, smb_netuserinfo_t *);
2121fcced4cSJordan Brown int smb_netconnectinfo_encode(smb_netconnectinfo_t *, uint8_t *, uint32_t,
21329bd2886SAlan Wright     uint_t *);
2141fcced4cSJordan Brown int smb_netconnectinfo_decode(smb_netconnectinfo_t *, uint8_t *, uint32_t,
21529bd2886SAlan Wright     uint_t *);
2161fcced4cSJordan Brown bool_t smb_netconnectinfo_xdr(XDR *, smb_netconnectinfo_t *);
2171fcced4cSJordan Brown int smb_netfileinfo_encode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *);
2181fcced4cSJordan Brown int smb_netfileinfo_decode(smb_netfileinfo_t *, uint8_t *, uint32_t, uint_t *);
2191fcced4cSJordan Brown bool_t smb_netfileinfo_xdr(XDR *, smb_netfileinfo_t *);
2201fcced4cSJordan Brown 
221fe1c642dSBill Krier typedef uint16_t sid_type_t;
222fe1c642dSBill Krier 
223fe1c642dSBill Krier typedef struct lsa_account {
224fe1c642dSBill Krier 	ntstatus_t	a_status;
225fe1c642dSBill Krier 	sid_type_t	a_sidtype;
226fe1c642dSBill Krier 	char		a_domain[MAXNAMELEN];
227fe1c642dSBill Krier 	char		a_name[MAXNAMELEN];
228fe1c642dSBill Krier 	char		a_sid[SMB_SID_STRSZ];
229fe1c642dSBill Krier } lsa_account_t;
230fe1c642dSBill Krier 
231fe1c642dSBill Krier int lsa_account_encode(lsa_account_t *, uint8_t *, uint32_t);
232fe1c642dSBill Krier int lsa_account_decode(lsa_account_t *, uint8_t *, uint32_t);
233fe1c642dSBill Krier bool_t lsa_account_xdr(XDR *, lsa_account_t *);
234fe1c642dSBill Krier 
23589dc44ceSjose borrego /*
23689dc44ceSjose borrego  * VSS Door Structures
23789dc44ceSjose borrego  */
23889dc44ceSjose borrego #define	SMB_VSS_GMT_SIZE sizeof ("@GMT-yyyy.mm.dd-hh.mm.ss")
23989dc44ceSjose borrego 
240a90cf9f2SGordon Ross /*
241a90cf9f2SGordon Ross  * Args for enumerating "previous versions".
242a90cf9f2SGordon Ross  * See also: smb_gmttoken_query_xdr()
243a90cf9f2SGordon Ross  */
2449fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_query {
2459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t	gtq_count;
2469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char		*gtq_path;
2479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_query_t;
24889dc44ceSjose borrego 
249a90cf9f2SGordon Ross /*
250a90cf9f2SGordon Ross  * Part of response for enumerating "previous versions".
251a90cf9f2SGordon Ross  * See also: smb_gmttoken_xdr()
252a90cf9f2SGordon Ross  */
2539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef char *smb_gmttoken_t;
25489dc44ceSjose borrego 
255a90cf9f2SGordon Ross /*
256a90cf9f2SGordon Ross  * Response for enumerating "previous versions".
257a90cf9f2SGordon Ross  * See also: smb_gmttoken_response_xdr()
258a90cf9f2SGordon Ross  */
2599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_response {
2609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t gtr_count;
26189dc44ceSjose borrego 	struct {
2629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		uint_t		gtr_gmttokens_len;
2639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 		smb_gmttoken_t	*gtr_gmttokens_val;
2649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	} gtr_gmttokens;
2659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_response_t;
2669fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
267a90cf9f2SGordon Ross /*
268a90cf9f2SGordon Ross  * Args to lookup "previous versions" during open.
269a90cf9f2SGordon Ross  * See also: smb_gmttoken_snapname_xdr()
270a90cf9f2SGordon Ross  */
2719fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_gmttoken_snapname {
2729fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char	*gts_path;
2739fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char	*gts_gmttoken;
274a90cf9f2SGordon Ross 	uint64_t gts_toktime; /* seconds */
2759fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_gmttoken_snapname_t;
2769fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2779fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_query_xdr(XDR *, smb_gmttoken_query_t *);
2789fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_response_xdr(XDR *, smb_gmttoken_response_t *);
2799fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_gmttoken_snapname_xdr(XDR *, smb_gmttoken_snapname_t *);
2809fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
2819fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States /*
2829fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * User and Group Quotas
2839fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  *
2849fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * SMB User and Group quota values of SMB_QUOTA_UNLIMITED mean
2859fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  * No Limit. This maps to 0 (none) on ZFS.
2869fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States  */
2879fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States #define	SMB_QUOTA_UNLIMITED		0xFFFFFFFFFFFFFFFF
2889fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
289a90cf9f2SGordon Ross /*
290a90cf9f2SGordon Ross  * SMB (internal) representation of a quota response
291a90cf9f2SGordon Ross  * See also: smb_quota_xdr()
292a90cf9f2SGordon Ross  */
2939fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota {
2949fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_node_t q_list_node;
2959fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char q_sidstr[SMB_SID_STRSZ];
2969fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t q_sidtype;
2979fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint64_t q_used;
2989fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint64_t q_thresh;
2999fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint64_t q_limit;
3009fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	avl_node_t q_avl_node;
3019fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_t;
3029fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
303a90cf9f2SGordon Ross /*
304a90cf9f2SGordon Ross  * Part of a quota response
305a90cf9f2SGordon Ross  * See also: smb_quota_sid_xdr()
306a90cf9f2SGordon Ross  */
3079fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_sid {
3089fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_node_t qs_list_node;
3099fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char qs_sidstr[SMB_SID_STRSZ];
3109fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_sid_t;
3119fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3129fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef enum {
3139fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_INVALID_OP,
3149fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_SIDLIST,
3159fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_STARTSID,
3169fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	SMB_QUOTA_QUERY_ALL
3179fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_query_op_t;
3189fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
319a90cf9f2SGordon Ross /*
320a90cf9f2SGordon Ross  * SMB (internal) form of a quota lookup
321a90cf9f2SGordon Ross  * See also: smb_quota_query_xdr()
322a90cf9f2SGordon Ross  */
3239fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_query {
3249fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *qq_root_path;
3259fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t qq_query_op;	/* smb_quota_query_op_t */
3269fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bool_t qq_single;
3279fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	bool_t qq_restart;
3289fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t qq_max_quota;
3299fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_t qq_sid_list;	/* list of smb_quota_sid_t */
3309fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_query_t;
3319fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
332a90cf9f2SGordon Ross /*
333a90cf9f2SGordon Ross  * The get quota response (list of quota records)
334a90cf9f2SGordon Ross  * See also: smb_quota_response_xdr()
335a90cf9f2SGordon Ross  */
3369fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_response {
3379fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t qr_status;
3389fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_t qr_quota_list;	/* list of smb_quota_t */
3399fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_response_t;
3409fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
341a90cf9f2SGordon Ross /*
342a90cf9f2SGordon Ross  * The set quota request (list of quota records)
343a90cf9f2SGordon Ross  * See also: smb_quota_set_xdr()
344a90cf9f2SGordon Ross  */
3459fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct smb_quota_set {
3469fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char *qs_root_path;
3479fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	list_t qs_quota_list;	/* list of smb_quota_t */
3489fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } smb_quota_set_t;
3499fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3509fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_query_xdr(XDR *, smb_quota_query_t *);
3519fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_response_xdr(XDR *, smb_quota_response_t *);
3529fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t smb_quota_set_xdr(XDR *, smb_quota_set_t *);
3539fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3549fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct dfs_referral_query {
3559fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	dfs_reftype_t	rq_type;
3569fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	char 		*rq_path;
3579fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } dfs_referral_query_t;
3589fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3599fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States typedef struct dfs_referral_response {
3609fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	dfs_info_t	rp_referrals;
3619fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 	uint32_t	rp_status;
3629fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States } dfs_referral_response_t;
3639fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States 
3649fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t dfs_referral_query_xdr(XDR *, dfs_referral_query_t *);
3659fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States bool_t dfs_referral_response_xdr(XDR *, dfs_referral_response_t *);
3663db3f65cSamw 
367148c5f43SAlan Wright typedef struct smb_shr_hostaccess_query {
368148c5f43SAlan Wright 	char		*shq_none;
369148c5f43SAlan Wright 	char		*shq_ro;
370148c5f43SAlan Wright 	char		*shq_rw;
371148c5f43SAlan Wright 	uint32_t	shq_flag;
372148c5f43SAlan Wright 	smb_inaddr_t	shq_ipaddr;
373148c5f43SAlan Wright } smb_shr_hostaccess_query_t;
374148c5f43SAlan Wright 
375148c5f43SAlan Wright bool_t smb_shr_hostaccess_query_xdr(XDR *, smb_shr_hostaccess_query_t *);
376148c5f43SAlan Wright bool_t smb_shr_execinfo_xdr(XDR *, smb_shr_execinfo_t *);
377148c5f43SAlan Wright 
378da6c28aaSamw #ifdef	__cplusplus
379da6c28aaSamw }
380da6c28aaSamw #endif
381da6c28aaSamw 
382da6c28aaSamw #endif	/* _SMBSRV_SMB_XDR_H */
383