xref: /onnv-gate/usr/src/uts/common/smbsrv/smb.h (revision 10966:37e5dcdf36d3)
1*10966SJordan.Brown@Sun.COM /*
2*10966SJordan.Brown@Sun.COM  * CDDL HEADER START
3*10966SJordan.Brown@Sun.COM  *
4*10966SJordan.Brown@Sun.COM  * The contents of this file are subject to the terms of the
5*10966SJordan.Brown@Sun.COM  * Common Development and Distribution License (the "License").
6*10966SJordan.Brown@Sun.COM  * You may not use this file except in compliance with the License.
7*10966SJordan.Brown@Sun.COM  *
8*10966SJordan.Brown@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*10966SJordan.Brown@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*10966SJordan.Brown@Sun.COM  * See the License for the specific language governing permissions
11*10966SJordan.Brown@Sun.COM  * and limitations under the License.
12*10966SJordan.Brown@Sun.COM  *
13*10966SJordan.Brown@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*10966SJordan.Brown@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*10966SJordan.Brown@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*10966SJordan.Brown@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*10966SJordan.Brown@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*10966SJordan.Brown@Sun.COM  *
19*10966SJordan.Brown@Sun.COM  * CDDL HEADER END
20*10966SJordan.Brown@Sun.COM  */
21*10966SJordan.Brown@Sun.COM /*
22*10966SJordan.Brown@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23*10966SJordan.Brown@Sun.COM  * Use is subject to license terms.
24*10966SJordan.Brown@Sun.COM  */
25*10966SJordan.Brown@Sun.COM 
26*10966SJordan.Brown@Sun.COM #ifndef _SMBSRV_SMB_H
27*10966SJordan.Brown@Sun.COM #define	_SMBSRV_SMB_H
28*10966SJordan.Brown@Sun.COM 
29*10966SJordan.Brown@Sun.COM 
30*10966SJordan.Brown@Sun.COM /*
31*10966SJordan.Brown@Sun.COM  * SMB definitions and interfaces, mostly defined in the SMB and CIFS specs.
32*10966SJordan.Brown@Sun.COM  */
33*10966SJordan.Brown@Sun.COM #ifdef _KERNEL
34*10966SJordan.Brown@Sun.COM #include <sys/types.h>
35*10966SJordan.Brown@Sun.COM #endif
36*10966SJordan.Brown@Sun.COM #include <smbsrv/string.h>
37*10966SJordan.Brown@Sun.COM #include <smbsrv/msgbuf.h>
38*10966SJordan.Brown@Sun.COM 
39*10966SJordan.Brown@Sun.COM #include <smbsrv/ntstatus.h>
40*10966SJordan.Brown@Sun.COM #include <smbsrv/nterror.h>
41*10966SJordan.Brown@Sun.COM #include <smbsrv/doserror.h>
42*10966SJordan.Brown@Sun.COM #include <smbsrv/ntaccess.h>
43*10966SJordan.Brown@Sun.COM 
44*10966SJordan.Brown@Sun.COM /*
45*10966SJordan.Brown@Sun.COM  * Macintosh Extensions for CIFS
46*10966SJordan.Brown@Sun.COM  */
47*10966SJordan.Brown@Sun.COM #include <smbsrv/mac_cifs.h>
48*10966SJordan.Brown@Sun.COM 
49*10966SJordan.Brown@Sun.COM /*
50*10966SJordan.Brown@Sun.COM  * NT Installable File System (IFS) interface.
51*10966SJordan.Brown@Sun.COM  */
52*10966SJordan.Brown@Sun.COM #include <smbsrv/ntifs.h>
53*10966SJordan.Brown@Sun.COM 
54*10966SJordan.Brown@Sun.COM #ifdef __cplusplus
55*10966SJordan.Brown@Sun.COM extern "C" {
56*10966SJordan.Brown@Sun.COM #endif
57*10966SJordan.Brown@Sun.COM 
58*10966SJordan.Brown@Sun.COM /*
59*10966SJordan.Brown@Sun.COM  * The msgbuf format and length of an SMB header.
60*10966SJordan.Brown@Sun.COM  */
61*10966SJordan.Brown@Sun.COM #define	SMB_HEADER_DOS_FMT	"Mbbbwbww10.wwww"
62*10966SJordan.Brown@Sun.COM #define	SMB_HEADER_NT_FMT	"Mblbww#c2.wwww"
63*10966SJordan.Brown@Sun.COM #define	SMB_HEADER_LEN		32
64*10966SJordan.Brown@Sun.COM #define	SMB_SIG_SIZE		8	/* SMB signature size */
65*10966SJordan.Brown@Sun.COM 
66*10966SJordan.Brown@Sun.COM #define	SMB_HEADER_ED_FMT	"Mbbbwbww8c2.wwww"
67*10966SJordan.Brown@Sun.COM #define	SMB_HEADER_ED_LEN	(4+1+1+1+2+1+2+12+2+2+2+2)
68*10966SJordan.Brown@Sun.COM #define	SMB_TRANSHDR_ED_FMT	"wwwwb.wl2.wwwwb."
69*10966SJordan.Brown@Sun.COM #define	SMB_TRANSHDR_ED_LEN	(2+2+2+2+1+1+2+4+2+2+2+2+2+1+1)
70*10966SJordan.Brown@Sun.COM #define	SMB_TRANSSHDR_ED_FMT	"wwwwwwwww"
71*10966SJordan.Brown@Sun.COM #define	SMB_TRANSSHDR_ED_LEN	(2+2+2+2+2+2+2+2)
72*10966SJordan.Brown@Sun.COM #define	SMB_TRANS2SHDR_ED_FMT	"wwwwwwwww"
73*10966SJordan.Brown@Sun.COM #define	SMB_TRANS2SHDR_ED_LEN	(2+2+2+2+2+2+2+2+2)
74*10966SJordan.Brown@Sun.COM /* There is something wrong with this. Should be 38 bytes. It is 37 bytes */
75*10966SJordan.Brown@Sun.COM #define	SMB_NT_TRANSHDR_ED_FMT	"b2.llllllllbw"
76*10966SJordan.Brown@Sun.COM #define	SMB_NT_TRANSHDR_ED_LEN	(1+2+4+4+4+4+4+4+4+4+1+2)
77*10966SJordan.Brown@Sun.COM 
78*10966SJordan.Brown@Sun.COM /*
79*10966SJordan.Brown@Sun.COM  * CIFS definition for the SMB header (CIFS Section 3.2). Note that the
80*10966SJordan.Brown@Sun.COM  * pid_high field is not documented in the 1997 CIFS specificaction. This
81*10966SJordan.Brown@Sun.COM  * is a decoded or memory-based definition, which may be padded to align
82*10966SJordan.Brown@Sun.COM  * its elements on word boundaries. See smb_hdrbuf_t for the network
83*10966SJordan.Brown@Sun.COM  * ready structure.
84*10966SJordan.Brown@Sun.COM  */
85*10966SJordan.Brown@Sun.COM typedef struct smb_hdr {
86*10966SJordan.Brown@Sun.COM 	uint8_t protocol[4];
87*10966SJordan.Brown@Sun.COM 	uint8_t command;
88*10966SJordan.Brown@Sun.COM 
89*10966SJordan.Brown@Sun.COM 	union {
90*10966SJordan.Brown@Sun.COM 		struct {
91*10966SJordan.Brown@Sun.COM 			uint8_t error_class;
92*10966SJordan.Brown@Sun.COM 			uint8_t reserved;
93*10966SJordan.Brown@Sun.COM 			uint16_t error;
94*10966SJordan.Brown@Sun.COM 		} dos_error;
95*10966SJordan.Brown@Sun.COM 		uint32_t ntstatus;
96*10966SJordan.Brown@Sun.COM 	} status;
97*10966SJordan.Brown@Sun.COM 
98*10966SJordan.Brown@Sun.COM 	uint8_t flags;
99*10966SJordan.Brown@Sun.COM 	uint16_t flags2;
100*10966SJordan.Brown@Sun.COM 	uint16_t pid_high;
101*10966SJordan.Brown@Sun.COM 
102*10966SJordan.Brown@Sun.COM 	union {
103*10966SJordan.Brown@Sun.COM 		uint16_t pad[5];
104*10966SJordan.Brown@Sun.COM 		struct {
105*10966SJordan.Brown@Sun.COM 			uint16_t reserved;
106*10966SJordan.Brown@Sun.COM 			uint8_t security_sig[SMB_SIG_SIZE];
107*10966SJordan.Brown@Sun.COM 		} extra;
108*10966SJordan.Brown@Sun.COM 	} extra;
109*10966SJordan.Brown@Sun.COM 
110*10966SJordan.Brown@Sun.COM 	uint16_t tid;
111*10966SJordan.Brown@Sun.COM 	uint16_t pid;
112*10966SJordan.Brown@Sun.COM 	uint16_t uid;
113*10966SJordan.Brown@Sun.COM 	uint16_t mid;
114*10966SJordan.Brown@Sun.COM } smb_hdr_t;
115*10966SJordan.Brown@Sun.COM 
116*10966SJordan.Brown@Sun.COM /*
117*10966SJordan.Brown@Sun.COM  * Encoded or packed SMB header in network ready format.
118*10966SJordan.Brown@Sun.COM  */
119*10966SJordan.Brown@Sun.COM typedef struct smb_hdrbuf {
120*10966SJordan.Brown@Sun.COM 	uint8_t hdr[SMB_HEADER_LEN];
121*10966SJordan.Brown@Sun.COM } smb_hdrbuf_t;
122*10966SJordan.Brown@Sun.COM 
123*10966SJordan.Brown@Sun.COM /*
124*10966SJordan.Brown@Sun.COM  * Protocol magic value as a 32-bit.  This will be 0xff 0x53 0x4d 0x42 on
125*10966SJordan.Brown@Sun.COM  * the wire.
126*10966SJordan.Brown@Sun.COM  */
127*10966SJordan.Brown@Sun.COM 
128*10966SJordan.Brown@Sun.COM #define	SMB_PROTOCOL_MAGIC	0x424d53ff
129*10966SJordan.Brown@Sun.COM 
130*10966SJordan.Brown@Sun.COM /*
131*10966SJordan.Brown@Sun.COM  * Time and date encoding (CIFS Section 3.6). The date is encoded such
132*10966SJordan.Brown@Sun.COM  * that the year has a range of 0-119, which represents 1980-2099. The
133*10966SJordan.Brown@Sun.COM  * month range is 1-12, and the day range is 1-31.
134*10966SJordan.Brown@Sun.COM  */
135*10966SJordan.Brown@Sun.COM typedef struct smb_date {
136*10966SJordan.Brown@Sun.COM 	uint16_t day   : 5;
137*10966SJordan.Brown@Sun.COM 	uint16_t month : 4;
138*10966SJordan.Brown@Sun.COM 	uint16_t year  : 7;
139*10966SJordan.Brown@Sun.COM } smb_date_t;
140*10966SJordan.Brown@Sun.COM 
141*10966SJordan.Brown@Sun.COM /*
142*10966SJordan.Brown@Sun.COM  * The hours range is 0-23, the minutes range is 0-59 and the two_sec
143*10966SJordan.Brown@Sun.COM  * range is 0-29.
144*10966SJordan.Brown@Sun.COM  */
145*10966SJordan.Brown@Sun.COM typedef struct smb_time {
146*10966SJordan.Brown@Sun.COM 	uint16_t two_sec : 5;
147*10966SJordan.Brown@Sun.COM 	uint16_t minutes : 6;
148*10966SJordan.Brown@Sun.COM 	uint16_t hours    : 5;
149*10966SJordan.Brown@Sun.COM } smb_time_t;
150*10966SJordan.Brown@Sun.COM 
151*10966SJordan.Brown@Sun.COM /*
152*10966SJordan.Brown@Sun.COM  * This is a 64-bit signed absolute time representing 100ns increments.
153*10966SJordan.Brown@Sun.COM  * A positive value represents the absolute time since 1601AD. A
154*10966SJordan.Brown@Sun.COM  * negative value represents a context specific relative time.
155*10966SJordan.Brown@Sun.COM  */
156*10966SJordan.Brown@Sun.COM typedef struct smb_time2 {
157*10966SJordan.Brown@Sun.COM 	uint32_t low_time;
158*10966SJordan.Brown@Sun.COM 	int32_t high_time;
159*10966SJordan.Brown@Sun.COM } smb_time2_t;
160*10966SJordan.Brown@Sun.COM 
161*10966SJordan.Brown@Sun.COM /*
162*10966SJordan.Brown@Sun.COM  * The number of seconds since Jan 1, 1970, 00:00:00.0.
163*10966SJordan.Brown@Sun.COM  */
164*10966SJordan.Brown@Sun.COM typedef uint32_t smb_utime_t;
165*10966SJordan.Brown@Sun.COM 
166*10966SJordan.Brown@Sun.COM #define	SMB_LM_NEGOTIATE_WORDCNT		13
167*10966SJordan.Brown@Sun.COM #define	SMB_NT_NEGOTIATE_WORDCNT		17
168*10966SJordan.Brown@Sun.COM 
169*10966SJordan.Brown@Sun.COM #define	SMB_NAME83_EXTLEN			3
170*10966SJordan.Brown@Sun.COM #define	SMB_NAME83_BASELEN			8
171*10966SJordan.Brown@Sun.COM #define	SMB_NAME83_LEN				12
172*10966SJordan.Brown@Sun.COM 
173*10966SJordan.Brown@Sun.COM /* Share types */
174*10966SJordan.Brown@Sun.COM #ifndef _SHARE_TYPES_DEFINED_
175*10966SJordan.Brown@Sun.COM #define	_SHARE_TYPES_DEFINED_
176*10966SJordan.Brown@Sun.COM #define	STYPE_DISKTREE			0x00000000
177*10966SJordan.Brown@Sun.COM #define	STYPE_PRINTQ			0x00000001
178*10966SJordan.Brown@Sun.COM #define	STYPE_DEVICE			0x00000002
179*10966SJordan.Brown@Sun.COM #define	STYPE_IPC			0x00000003
180*10966SJordan.Brown@Sun.COM #define	STYPE_MASK			0x0000000F
181*10966SJordan.Brown@Sun.COM #define	STYPE_DFS			0x00000064
182*10966SJordan.Brown@Sun.COM #define	STYPE_HIDDEN			0x80000000
183*10966SJordan.Brown@Sun.COM #define	STYPE_SPECIAL			0x80000000
184*10966SJordan.Brown@Sun.COM #endif /* _SHARE_TYPES_DEFINED_ */
185*10966SJordan.Brown@Sun.COM 
186*10966SJordan.Brown@Sun.COM #define	STYPE_ISDSK(S)	(((S) & STYPE_MASK) == STYPE_DISKTREE)
187*10966SJordan.Brown@Sun.COM #define	STYPE_ISPRN(S)	(((S) & STYPE_MASK) == STYPE_PRINTQ)
188*10966SJordan.Brown@Sun.COM #define	STYPE_ISDEV(S)	(((S) & STYPE_MASK) == STYPE_DEVICE)
189*10966SJordan.Brown@Sun.COM #define	STYPE_ISIPC(S)	(((S) & STYPE_MASK) == STYPE_IPC)
190*10966SJordan.Brown@Sun.COM 
191*10966SJordan.Brown@Sun.COM /*
192*10966SJordan.Brown@Sun.COM  * NtCreateAndX and NtTransactCreate creation flags: defined in CIFS
193*10966SJordan.Brown@Sun.COM  * section 4.2.2
194*10966SJordan.Brown@Sun.COM  *
195*10966SJordan.Brown@Sun.COM  * Creation Flag Name         Value  Description
196*10966SJordan.Brown@Sun.COM  * ========================== ====== ==================================
197*10966SJordan.Brown@Sun.COM  * NT_CREATE_REQUEST_OPLOCK   0x02   Level I oplock requested
198*10966SJordan.Brown@Sun.COM  * NT_CREATE_REQUEST_OPBATCH  0x04   Batch oplock requested
199*10966SJordan.Brown@Sun.COM  * NT_CREATE_OPEN_TARGET_DIR  0x08   Target for open is a directory
200*10966SJordan.Brown@Sun.COM  */
201*10966SJordan.Brown@Sun.COM #define	NT_CREATE_FLAG_REQUEST_OPLOCK		0x02
202*10966SJordan.Brown@Sun.COM #define	NT_CREATE_FLAG_REQUEST_OPBATCH		0x04
203*10966SJordan.Brown@Sun.COM #define	NT_CREATE_FLAG_OPEN_TARGET_DIR		0x08
204*10966SJordan.Brown@Sun.COM 
205*10966SJordan.Brown@Sun.COM 
206*10966SJordan.Brown@Sun.COM /*
207*10966SJordan.Brown@Sun.COM  * Define the filter flags for NtNotifyChangeDirectoryFile
208*10966SJordan.Brown@Sun.COM  */
209*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_FILE_NAME	0x00000001
210*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_DIR_NAME	0x00000002
211*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_NAME		0x00000003
212*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_ATTRIBUTES	0x00000004
213*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_SIZE		0x00000008
214*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_LAST_WRITE	0x00000010
215*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_LAST_ACCESS	0x00000020
216*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_CREATION	0x00000040
217*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_EA		0x00000080
218*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_SECURITY	0x00000100
219*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_STREAM_NAME	0x00000200
220*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_STREAM_SIZE	0x00000400
221*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_STREAM_WRITE	0x00000800
222*10966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_VALID_MASK		0x00000fff
223*10966SJordan.Brown@Sun.COM 
224*10966SJordan.Brown@Sun.COM 
225*10966SJordan.Brown@Sun.COM /*
226*10966SJordan.Brown@Sun.COM  * Define the file action type codes for NtNotifyChangeDirectoryFile
227*10966SJordan.Brown@Sun.COM  */
228*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_ADDED		0x00000001
229*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_REMOVED		0x00000002
230*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_MODIFIED		0x00000003
231*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_RENAMED_OLD_NAME	0x00000004
232*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_RENAMED_NEW_NAME	0x00000005
233*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_ADDED_STREAM	0x00000006
234*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_REMOVED_STREAM	0x00000007
235*10966SJordan.Brown@Sun.COM #define	FILE_ACTION_MODIFIED_STREAM	0x00000008
236*10966SJordan.Brown@Sun.COM 
237*10966SJordan.Brown@Sun.COM 
238*10966SJordan.Brown@Sun.COM /* Lock type flags */
239*10966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_NORMAL_LOCK	0x00
240*10966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_SHARED_LOCK	0x01
241*10966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_OPLOCK_RELEASE	0x02
242*10966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_CHANGE_LOCK_TYPE	0x04
243*10966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_CANCEL_LOCK	0x08
244*10966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_LARGE_FILES	0x10
245*10966SJordan.Brown@Sun.COM 
246*10966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE_DIRECTORY	0x00
247*10966SJordan.Brown@Sun.COM #define	SMB_COM_DELETE_DIRECTORY	0x01
248*10966SJordan.Brown@Sun.COM #define	SMB_COM_OPEN			0x02
249*10966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE			0x03
250*10966SJordan.Brown@Sun.COM #define	SMB_COM_CLOSE			0x04
251*10966SJordan.Brown@Sun.COM #define	SMB_COM_FLUSH			0x05
252*10966SJordan.Brown@Sun.COM #define	SMB_COM_DELETE			0x06
253*10966SJordan.Brown@Sun.COM #define	SMB_COM_RENAME			0x07
254*10966SJordan.Brown@Sun.COM #define	SMB_COM_QUERY_INFORMATION	0x08
255*10966SJordan.Brown@Sun.COM #define	SMB_COM_SET_INFORMATION		0x09
256*10966SJordan.Brown@Sun.COM #define	SMB_COM_READ			0x0A
257*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE			0x0B
258*10966SJordan.Brown@Sun.COM #define	SMB_COM_LOCK_BYTE_RANGE		0x0C
259*10966SJordan.Brown@Sun.COM #define	SMB_COM_UNLOCK_BYTE_RANGE	0x0D
260*10966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE_TEMPORARY	0x0E
261*10966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE_NEW		0x0F
262*10966SJordan.Brown@Sun.COM #define	SMB_COM_CHECK_DIRECTORY		0x10
263*10966SJordan.Brown@Sun.COM #define	SMB_COM_PROCESS_EXIT		0x11
264*10966SJordan.Brown@Sun.COM #define	SMB_COM_SEEK			0x12
265*10966SJordan.Brown@Sun.COM #define	SMB_COM_LOCK_AND_READ		0x13
266*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_AND_UNLOCK	0x14
267*10966SJordan.Brown@Sun.COM 
268*10966SJordan.Brown@Sun.COM #define	SMB_COM_READ_RAW		0x1A
269*10966SJordan.Brown@Sun.COM #define	SMB_COM_READ_MPX		0x1B
270*10966SJordan.Brown@Sun.COM #define	SMB_COM_READ_MPX_SECONDARY	0x1C
271*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_RAW		0x1D
272*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_MPX		0x1E
273*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_MPX_SECONDARY	0x1F
274*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_COMPLETE		0x20
275*10966SJordan.Brown@Sun.COM 
276*10966SJordan.Brown@Sun.COM #define	SMB_COM_SET_INFORMATION2	0x22
277*10966SJordan.Brown@Sun.COM #define	SMB_COM_QUERY_INFORMATION2	0x23
278*10966SJordan.Brown@Sun.COM #define	SMB_COM_LOCKING_ANDX		0x24
279*10966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION		0x25
280*10966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION_SECONDARY	0x26
281*10966SJordan.Brown@Sun.COM #define	SMB_COM_IOCTL			0x27
282*10966SJordan.Brown@Sun.COM #define	SMB_COM_IOCTL_SECONDARY		0x28
283*10966SJordan.Brown@Sun.COM #define	SMB_COM_COPY			0x29
284*10966SJordan.Brown@Sun.COM #define	SMB_COM_MOVE			0x2A
285*10966SJordan.Brown@Sun.COM #define	SMB_COM_ECHO			0x2B
286*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_AND_CLOSE		0x2C
287*10966SJordan.Brown@Sun.COM #define	SMB_COM_OPEN_ANDX		0x2D
288*10966SJordan.Brown@Sun.COM #define	SMB_COM_READ_ANDX		0x2E
289*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_ANDX		0x2F
290*10966SJordan.Brown@Sun.COM 
291*10966SJordan.Brown@Sun.COM #define	SMB_COM_CLOSE_AND_TREE_DISC	0x31
292*10966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION2		0x32
293*10966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION2_SECONDARY	0x33
294*10966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_CLOSE2		0x34
295*10966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_NOTIFY_CLOSE	0x35
296*10966SJordan.Brown@Sun.COM 
297*10966SJordan.Brown@Sun.COM #define	SMB_COM_TREE_CONNECT		0x70
298*10966SJordan.Brown@Sun.COM #define	SMB_COM_TREE_DISCONNECT		0x71
299*10966SJordan.Brown@Sun.COM #define	SMB_COM_NEGOTIATE		0x72
300*10966SJordan.Brown@Sun.COM #define	SMB_COM_SESSION_SETUP_ANDX	0x73
301*10966SJordan.Brown@Sun.COM #define	SMB_COM_LOGOFF_ANDX		0x74
302*10966SJordan.Brown@Sun.COM #define	SMB_COM_TREE_CONNECT_ANDX	0x75
303*10966SJordan.Brown@Sun.COM 
304*10966SJordan.Brown@Sun.COM #define	SMB_COM_QUERY_INFORMATION_DISK	0x80
305*10966SJordan.Brown@Sun.COM #define	SMB_COM_SEARCH			0x81
306*10966SJordan.Brown@Sun.COM #define	SMB_COM_FIND			0x82
307*10966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_UNIQUE		0x83
308*10966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_CLOSE		0x84
309*10966SJordan.Brown@Sun.COM 
310*10966SJordan.Brown@Sun.COM #define	SMB_COM_NT_TRANSACT		0xA0
311*10966SJordan.Brown@Sun.COM #define	SMB_COM_NT_TRANSACT_SECONDARY	0xA1
312*10966SJordan.Brown@Sun.COM #define	SMB_COM_NT_CREATE_ANDX		0xA2
313*10966SJordan.Brown@Sun.COM #define	SMB_COM_NT_CANCEL		0xA4
314*10966SJordan.Brown@Sun.COM 
315*10966SJordan.Brown@Sun.COM #define	SMB_COM_OPEN_PRINT_FILE		0xC0
316*10966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_PRINT_FILE	0xC1
317*10966SJordan.Brown@Sun.COM #define	SMB_COM_CLOSE_PRINT_FILE	0xC2
318*10966SJordan.Brown@Sun.COM #define	SMB_COM_GET_PRINT_QUEUE		0xC3
319*10966SJordan.Brown@Sun.COM 
320*10966SJordan.Brown@Sun.COM 
321*10966SJordan.Brown@Sun.COM /*
322*10966SJordan.Brown@Sun.COM  * Flags field of the SMB header. The names in parenthesis represent
323*10966SJordan.Brown@Sun.COM  * alternative names for the flags.
324*10966SJordan.Brown@Sun.COM  *
325*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_LOCK_AND_READ_OK     If the server supports LockAndRead and
326*10966SJordan.Brown@Sun.COM  * (SMB_FLAGS_LOCKS_SUBDIALECT)   WriteAndUnlock, it sets this bit in the
327*10966SJordan.Brown@Sun.COM  *                                Negotiate response.
328*10966SJordan.Brown@Sun.COM  *
329*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_SEND_NO_ACK          When on, the client guarantees that there
330*10966SJordan.Brown@Sun.COM  * (SMB_FLAGS_RCV_BUF_POSTED)     is a receive buffer posted such that a
331*10966SJordan.Brown@Sun.COM  *                                "Send-No-Ack" can be used by the server
332*10966SJordan.Brown@Sun.COM  *                                to respond to the client's request.
333*10966SJordan.Brown@Sun.COM  *
334*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_CASE_INSENSITIVE     This is part of the Flags field of every
335*10966SJordan.Brown@Sun.COM  *                                SMB header. If this bit is set, then all
336*10966SJordan.Brown@Sun.COM  *                                pathnames in the SMB should be treated as
337*10966SJordan.Brown@Sun.COM  *                                case-insensitive. Otherwise pathnames are
338*10966SJordan.Brown@Sun.COM  *                                case-sensitive.
339*10966SJordan.Brown@Sun.COM  *
340*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_CANONICALIZED_PATHS  When on in SessionSetupX, this indicates
341*10966SJordan.Brown@Sun.COM  *                                that all paths sent to the server are
342*10966SJordan.Brown@Sun.COM  *                                already in OS/2 canonicalized format.
343*10966SJordan.Brown@Sun.COM  *
344*10966SJordan.Brown@Sun.COM  * OS/2 canonical format means that file/directory names are in upper case,
345*10966SJordan.Brown@Sun.COM  * are valid characters, . and .. have been removed and single backslashes
346*10966SJordan.Brown@Sun.COM  * are used as separators.
347*10966SJordan.Brown@Sun.COM  *
348*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_OPLOCK               When set in an open file request SMBs
349*10966SJordan.Brown@Sun.COM  *                                (Open, Create, OpenX, etc.) this bit
350*10966SJordan.Brown@Sun.COM  *                                indicates a request for an oplock on the
351*10966SJordan.Brown@Sun.COM  *                                file. When set in the response, this bit
352*10966SJordan.Brown@Sun.COM  *                                indicates that the oplock was granted.
353*10966SJordan.Brown@Sun.COM  *
354*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_OPLOCK_NOTIFY_ANY    When on, this bit indicates that the server
355*10966SJordan.Brown@Sun.COM  *                                should notify the client on any request
356*10966SJordan.Brown@Sun.COM  *                                that could cause the file to be changed.
357*10966SJordan.Brown@Sun.COM  *                                If not set, the server only notifies the
358*10966SJordan.Brown@Sun.COM  *                                client on other open requests on the file.
359*10966SJordan.Brown@Sun.COM  *                                This bit is only relevant when
360*10966SJordan.Brown@Sun.COM  *                                SMB_FLAGS_OPLOCK is set.
361*10966SJordan.Brown@Sun.COM  *
362*10966SJordan.Brown@Sun.COM  * SMB_FLAGS_SERVER_TO_REDIR      This bit indicates that the SMB is being
363*10966SJordan.Brown@Sun.COM  * (SMB_FLAGS_REPLY)              sent from server to (client) redirector.
364*10966SJordan.Brown@Sun.COM  */
365*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_LOCK_AND_READ_OK	0x01
366*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_SEND_NO_ACK		0x02
367*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_RESERVED		0x04
368*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_CASE_INSENSITIVE	0x08
369*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_CANONICALIZED_PATHS	0x10
370*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_OPLOCK		0x20
371*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_OPLOCK_NOTIFY_ANY	0x40
372*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS_REPLY			0x80
373*10966SJordan.Brown@Sun.COM 
374*10966SJordan.Brown@Sun.COM 
375*10966SJordan.Brown@Sun.COM /*
376*10966SJordan.Brown@Sun.COM  * Flags2 field of the SMB header.
377*10966SJordan.Brown@Sun.COM  */
378*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_KNOWS_LONG_NAMES		0x0001
379*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_KNOWS_EAS			0x0002
380*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_SMB_SECURITY_SIGNATURE	0x0004
381*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_IS_LONG_NAME			0x0040
382*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_REPARSE_PATH			0x0400
383*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_EXT_SEC			0x0800
384*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_DFS				0x1000
385*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_PAGING_IO			0x2000
386*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_NT_STATUS			0x4000
387*10966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_UNICODE			0x8000
388*10966SJordan.Brown@Sun.COM 
389*10966SJordan.Brown@Sun.COM #define	DIALECT_UNKNOWN		 0
390*10966SJordan.Brown@Sun.COM #define	PC_NETWORK_PROGRAM_1_0	 1  /* The original MSNET SMB protocol */
391*10966SJordan.Brown@Sun.COM #define	PCLAN1_0		 2  /* Some versions of the original MSNET */
392*10966SJordan.Brown@Sun.COM #define	MICROSOFT_NETWORKS_1_03	 3  /* This is used for the MS-NET 1.03 */
393*10966SJordan.Brown@Sun.COM #define	MICROSOFT_NETWORKS_3_0	 4  /* This is the  DOS LANMAN 1.0 specific */
394*10966SJordan.Brown@Sun.COM #define	LANMAN1_0		 5  /* This is the first version of the full */
395*10966SJordan.Brown@Sun.COM #define	LM1_2X002		 6  /* This is the first version of the full */
396*10966SJordan.Brown@Sun.COM #define	DOS_LM1_2X002		 7  /* This is the dos equivalent of the */
397*10966SJordan.Brown@Sun.COM #define	DOS_LANMAN2_1		 8  /* DOS LANMAN2.1 */
398*10966SJordan.Brown@Sun.COM #define	LANMAN2_1		 9  /* OS/2 LANMAN2.1 */
399*10966SJordan.Brown@Sun.COM #define	Windows_for_Workgroups_3_1a 10 /* Windows for Workgroups Version 1.0 */
400*10966SJordan.Brown@Sun.COM #define	NT_LM_0_12		11  /* The SMB protocol designed for NT */
401*10966SJordan.Brown@Sun.COM 
402*10966SJordan.Brown@Sun.COM /*
403*10966SJordan.Brown@Sun.COM  * SMB_TREE_CONNECT_ANDX OptionalSupport flags
404*10966SJordan.Brown@Sun.COM  *
405*10966SJordan.Brown@Sun.COM  * SMB_SUPPORT_SEARCH_BITS    The server supports SearchAttributes.
406*10966SJordan.Brown@Sun.COM  * SMB_SHARE_IS_IN_DFS        The share is managed by DFS.
407*10966SJordan.Brown@Sun.COM  * SMB_CSC_MASK               Offline-caching mask - see CSC values.
408*10966SJordan.Brown@Sun.COM  * SMB_UNIQUE_FILE_NAME       The server uses long names and does not support
409*10966SJordan.Brown@Sun.COM  *                            short names.  This indicates to clients that
410*10966SJordan.Brown@Sun.COM  *                            they may perform directory name-space caching.
411*10966SJordan.Brown@Sun.COM  * SMB_EXTENDED_SIGNATURES    The server will use signing key protection.
412*10966SJordan.Brown@Sun.COM  *
413*10966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_MANUAL_REINT Clients are allowed to cache files for offline
414*10966SJordan.Brown@Sun.COM  *                            use as requested by users but automatic
415*10966SJordan.Brown@Sun.COM  *                            file-by-file reintegration is not allowed.
416*10966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_AUTO_REINT   Clients are allowed to automatically cache
417*10966SJordan.Brown@Sun.COM  *                            files for offline use and file-by-file
418*10966SJordan.Brown@Sun.COM  *                            reintegration is allowed.
419*10966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_VDO          Clients are allowed to automatically cache files
420*10966SJordan.Brown@Sun.COM  *                            for offline use, file-by-file reintegration is
421*10966SJordan.Brown@Sun.COM  *                            allowed and clients are permitted to work from
422*10966SJordan.Brown@Sun.COM  *                            their local cache even while offline.
423*10966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_NONE         Client-side caching is disabled for this share.
424*10966SJordan.Brown@Sun.COM  *
425*10966SJordan.Brown@Sun.COM  * SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM
426*10966SJordan.Brown@Sun.COM  *			      The server will filter directory entries based
427*10966SJordan.Brown@Sun.COM  *			      on the access permissions of the client.
428*10966SJordan.Brown@Sun.COM  */
429*10966SJordan.Brown@Sun.COM #define	SMB_SUPPORT_SEARCH_BITS		0x0001
430*10966SJordan.Brown@Sun.COM #define	SMB_SHARE_IS_IN_DFS		0x0002
431*10966SJordan.Brown@Sun.COM #define	SMB_CSC_MASK			0x000C
432*10966SJordan.Brown@Sun.COM #define	SMB_UNIQUE_FILE_NAME		0x0010
433*10966SJordan.Brown@Sun.COM #define	SMB_EXTENDED_SIGNATURES		0x0020
434*10966SJordan.Brown@Sun.COM 
435*10966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_MANUAL_REINT	0x0000
436*10966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_AUTO_REINT	0x0004
437*10966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_VDO		0x0008
438*10966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_NONE		0x000C
439*10966SJordan.Brown@Sun.COM 
440*10966SJordan.Brown@Sun.COM #define	SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM	0x0800
441*10966SJordan.Brown@Sun.COM 
442*10966SJordan.Brown@Sun.COM /*
443*10966SJordan.Brown@Sun.COM  * The subcommand codes, placed in SETUP[0], for named pipe operations are:
444*10966SJordan.Brown@Sun.COM  * SubCommand Code	Value Description
445*10966SJordan.Brown@Sun.COM  * ===================	===== =========================================
446*10966SJordan.Brown@Sun.COM  */
447*10966SJordan.Brown@Sun.COM 
448*10966SJordan.Brown@Sun.COM #define	CallNamedPipe	0x54	/* open/write/read/close pipe */
449*10966SJordan.Brown@Sun.COM #define	WaitNamedPipe	0x53	/* wait for pipe to be nonbusy */
450*10966SJordan.Brown@Sun.COM #define	PeekNmPipe	0x23	/* read but don't remove data */
451*10966SJordan.Brown@Sun.COM #define	QNmPHandState	0x21	/* query pipe handle modes */
452*10966SJordan.Brown@Sun.COM #define	SetNmPHandState	0x01	/* set pipe handle modes */
453*10966SJordan.Brown@Sun.COM #define	QNmPipeInfo	0x22	/* query pipe attributes */
454*10966SJordan.Brown@Sun.COM #define	TransactNmPipe	0x26	/* write/read operation on pipe */
455*10966SJordan.Brown@Sun.COM #define	RawReadNmPipe	0x11	/* read pipe in "raw" (non message mode) */
456*10966SJordan.Brown@Sun.COM #define	RawWriteNmPipe	0x31	/* write pipe "raw" (non message mode) */
457*10966SJordan.Brown@Sun.COM 
458*10966SJordan.Brown@Sun.COM 
459*10966SJordan.Brown@Sun.COM 
460*10966SJordan.Brown@Sun.COM /*
461*10966SJordan.Brown@Sun.COM  * Setup[0] Transaction2       Value  Description
462*10966SJordan.Brown@Sun.COM  * Subcommand Code
463*10966SJordan.Brown@Sun.COM  * ==========================  =====  =============================
464*10966SJordan.Brown@Sun.COM  */
465*10966SJordan.Brown@Sun.COM 
466*10966SJordan.Brown@Sun.COM #define	TRANS2_OPEN2		0x00	/* Create file, extended attributes */
467*10966SJordan.Brown@Sun.COM #define	TRANS2_FIND_FIRST2	0x01	/* Begin search for files */
468*10966SJordan.Brown@Sun.COM #define	TRANS2_FIND_NEXT2	0x02	/* Resume search for files */
469*10966SJordan.Brown@Sun.COM #define	TRANS2_QUERY_FS_INFORMATION 0x03 /* Get file system information */
470*10966SJordan.Brown@Sun.COM #define	_TRANS2_RESV_0x04	0x04	/* Reserved */
471*10966SJordan.Brown@Sun.COM #define	TRANS2_QUERY_PATH_INFORMATION 0x05 /* Get info, named file or dir */
472*10966SJordan.Brown@Sun.COM #define	TRANS2_SET_PATH_INFORMATION 0x06 /* Set info, named file or dir */
473*10966SJordan.Brown@Sun.COM #define	TRANS2_QUERY_FILE_INFORMATION 0x07 /* Get info, handle */
474*10966SJordan.Brown@Sun.COM #define	TRANS2_SET_FILE_INFORMATION 0x08 /* Set info, handle */
475*10966SJordan.Brown@Sun.COM #define	TRANS2_FSCTL		0x09	/* Not implemented by NT server */
476*10966SJordan.Brown@Sun.COM #define	TRANS2_IOCTL2		0x0A	/* Not implemented by NT server */
477*10966SJordan.Brown@Sun.COM #define	TRANS2_FIND_NOTIFY_FIRST 0x0B	/* Not implemented by NT server */
478*10966SJordan.Brown@Sun.COM #define	TRANS2_FIND_NOTIFY_NEXT 0x0C	/* Not implemented by NT server */
479*10966SJordan.Brown@Sun.COM #define	TRANS2_CREATE_DIRECTORY 0x0D	/* Create dir, extended attributes */
480*10966SJordan.Brown@Sun.COM #define	TRANS2_SESSION_SETUP	0x0E	/* Session setup, extended security */
481*10966SJordan.Brown@Sun.COM #define	TRANS2_GET_DFS_REFERRAL	0x10	/* Get a Dfs referral */
482*10966SJordan.Brown@Sun.COM #define	TRANS2_REPORT_DFS_INCONSISTENCY 0x11 /* Report a Dfs inconsistency */
483*10966SJordan.Brown@Sun.COM 
484*10966SJordan.Brown@Sun.COM /*
485*10966SJordan.Brown@Sun.COM  * Access Mode Encoding (CIFS/1.0 1996 Section 3.8).
486*10966SJordan.Brown@Sun.COM  *
487*10966SJordan.Brown@Sun.COM  * The desired access mode passed in SmbOpen and SmbOpenAndX has the following
488*10966SJordan.Brown@Sun.COM  * mapping:
489*10966SJordan.Brown@Sun.COM  *
490*10966SJordan.Brown@Sun.COM  *    1111 11
491*10966SJordan.Brown@Sun.COM  *    5432 1098 7654 3210
492*10966SJordan.Brown@Sun.COM  *    rWrC rLLL rSSS rAAA
493*10966SJordan.Brown@Sun.COM  *
494*10966SJordan.Brown@Sun.COM  * where:
495*10966SJordan.Brown@Sun.COM  *
496*10966SJordan.Brown@Sun.COM  *    W - Write through mode.  No read ahead or write behind allowed on
497*10966SJordan.Brown@Sun.COM  *        this file or device.  When protocol is returned, data is expected
498*10966SJordan.Brown@Sun.COM  *        to be on the disk or device.
499*10966SJordan.Brown@Sun.COM  *
500*10966SJordan.Brown@Sun.COM  *    S - Sharing mode:
501*10966SJordan.Brown@Sun.COM  *        0 - Compatibility mode (as in core open)
502*10966SJordan.Brown@Sun.COM  *        1 - Deny read/write/execute (exclusive)
503*10966SJordan.Brown@Sun.COM  *        2 - Deny write
504*10966SJordan.Brown@Sun.COM  *        3 - Deny read/execute
505*10966SJordan.Brown@Sun.COM  *        4 - Deny none
506*10966SJordan.Brown@Sun.COM  *
507*10966SJordan.Brown@Sun.COM  *    A - Access mode
508*10966SJordan.Brown@Sun.COM  *        0 - Open for reading
509*10966SJordan.Brown@Sun.COM  *        1 - Open for writing
510*10966SJordan.Brown@Sun.COM  *        2 - Open for reading and writing
511*10966SJordan.Brown@Sun.COM  *        3 - Open for execute
512*10966SJordan.Brown@Sun.COM  *
513*10966SJordan.Brown@Sun.COM  *    rSSSrAAA = 11111111 (hex FF) indicates FCB open (as in core protocol)
514*10966SJordan.Brown@Sun.COM  *
515*10966SJordan.Brown@Sun.COM  *    C - Cache mode
516*10966SJordan.Brown@Sun.COM  *        0 - Normal file
517*10966SJordan.Brown@Sun.COM  *        1 - Do not cache this file
518*10966SJordan.Brown@Sun.COM  *
519*10966SJordan.Brown@Sun.COM  *    L - Locality of reference
520*10966SJordan.Brown@Sun.COM  *        0 - Locality of reference is unknown
521*10966SJordan.Brown@Sun.COM  *        1 - Mainly sequential access
522*10966SJordan.Brown@Sun.COM  *        2 - Mainly random access
523*10966SJordan.Brown@Sun.COM  *        3 - Random access with some locality
524*10966SJordan.Brown@Sun.COM  *        4 to 7 - Currently undefined
525*10966SJordan.Brown@Sun.COM  */
526*10966SJordan.Brown@Sun.COM 
527*10966SJordan.Brown@Sun.COM 
528*10966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_MASK		0x70
529*10966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_MASK		0x07
530*10966SJordan.Brown@Sun.COM #define	SMB_DA_FCB_MASK			(UCHAR)0xFF
531*10966SJordan.Brown@Sun.COM 
532*10966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_READ		0x00
533*10966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_WRITE		0x01
534*10966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_READ_WRITE	0x02
535*10966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_EXECUTE		0x03
536*10966SJordan.Brown@Sun.COM 
537*10966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_COMPATIBILITY	0x00
538*10966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_EXCLUSIVE		0x10
539*10966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_DENY_WRITE		0x20
540*10966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_DENY_READ		0x30
541*10966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_DENY_NONE		0x40
542*10966SJordan.Brown@Sun.COM 
543*10966SJordan.Brown@Sun.COM #define	SMB_DA_FCB			(UCHAR)0xFF
544*10966SJordan.Brown@Sun.COM 
545*10966SJordan.Brown@Sun.COM #define	SMB_CACHE_NORMAL		0x0000
546*10966SJordan.Brown@Sun.COM #define	SMB_DO_NOT_CACHE		0x1000
547*10966SJordan.Brown@Sun.COM 
548*10966SJordan.Brown@Sun.COM #define	SMB_LR_UNKNOWN			0x0000
549*10966SJordan.Brown@Sun.COM #define	SMB_LR_SEQUENTIAL		0x0100
550*10966SJordan.Brown@Sun.COM #define	SMB_LR_RANDOM			0x0200
551*10966SJordan.Brown@Sun.COM #define	SMB_LR_RANDOM_WITH_LOCALITY	0x0300
552*10966SJordan.Brown@Sun.COM #define	SMB_LR_MASK			0x0F00
553*10966SJordan.Brown@Sun.COM 
554*10966SJordan.Brown@Sun.COM #define	SMB_DA_WRITE_THROUGH		0x4000
555*10966SJordan.Brown@Sun.COM 
556*10966SJordan.Brown@Sun.COM /*
557*10966SJordan.Brown@Sun.COM  * Macros used for share reservation rule checking
558*10966SJordan.Brown@Sun.COM  */
559*10966SJordan.Brown@Sun.COM 
560*10966SJordan.Brown@Sun.COM #define	SMB_DENY_READ(share_access) ((share_access & FILE_SHARE_READ) == 0)
561*10966SJordan.Brown@Sun.COM 
562*10966SJordan.Brown@Sun.COM #define	SMB_DENY_WRITE(share_access) ((share_access & FILE_SHARE_WRITE) == 0)
563*10966SJordan.Brown@Sun.COM 
564*10966SJordan.Brown@Sun.COM #define	SMB_DENY_DELETE(share_access) ((share_access & FILE_SHARE_DELETE) == 0)
565*10966SJordan.Brown@Sun.COM 
566*10966SJordan.Brown@Sun.COM #define	SMB_DENY_RW(share_access) \
567*10966SJordan.Brown@Sun.COM 	((share_access & (FILE_SHARE_READ | FILE_SHARE_WRITE)) == 0)
568*10966SJordan.Brown@Sun.COM 
569*10966SJordan.Brown@Sun.COM #define	SMB_DENY_ALL(share_access) (share_access == 0)
570*10966SJordan.Brown@Sun.COM 
571*10966SJordan.Brown@Sun.COM #define	SMB_DENY_NONE(share_access) (share_access == FILE_SHARE_ALL)
572*10966SJordan.Brown@Sun.COM 
573*10966SJordan.Brown@Sun.COM /*
574*10966SJordan.Brown@Sun.COM  * The SMB open function determines what action should be taken depending
575*10966SJordan.Brown@Sun.COM  * on the existence or lack thereof of files used in the operation.  It
576*10966SJordan.Brown@Sun.COM  * has the following mapping:
577*10966SJordan.Brown@Sun.COM  *
578*10966SJordan.Brown@Sun.COM  *    1111 1
579*10966SJordan.Brown@Sun.COM  *    5432 1098 7654 3210
580*10966SJordan.Brown@Sun.COM  *    rrrr rrrr rrrC rrOO
581*10966SJordan.Brown@Sun.COM  *
582*10966SJordan.Brown@Sun.COM  * where:
583*10966SJordan.Brown@Sun.COM  *
584*10966SJordan.Brown@Sun.COM  *    O - Open (action to be taken if the target file exists)
585*10966SJordan.Brown@Sun.COM  *        0 - Fail
586*10966SJordan.Brown@Sun.COM  *        1 - Open or Append file
587*10966SJordan.Brown@Sun.COM  *        2 - Truncate file
588*10966SJordan.Brown@Sun.COM  *
589*10966SJordan.Brown@Sun.COM  *    C - Create (action to be taken if the target file does not exist)
590*10966SJordan.Brown@Sun.COM  *        0 - Fail
591*10966SJordan.Brown@Sun.COM  *        1 - Create file
592*10966SJordan.Brown@Sun.COM  */
593*10966SJordan.Brown@Sun.COM 
594*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_MASK		0x3
595*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_CREATE_MASK		0x10
596*10966SJordan.Brown@Sun.COM 
597*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_FAIL		0
598*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_APPEND		1
599*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_OPEN		1
600*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_TRUNCATE		2
601*10966SJordan.Brown@Sun.COM 
602*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_CREATE_FAIL		0x00
603*10966SJordan.Brown@Sun.COM #define	SMB_OFUN_CREATE_CREATE		0x10
604*10966SJordan.Brown@Sun.COM 
605*10966SJordan.Brown@Sun.COM /*
606*10966SJordan.Brown@Sun.COM  * The Action field of OpenAndX has the following format:
607*10966SJordan.Brown@Sun.COM  *
608*10966SJordan.Brown@Sun.COM  *    1111 11
609*10966SJordan.Brown@Sun.COM  *    5432 1098 7654 3210
610*10966SJordan.Brown@Sun.COM  *    Lrrr rrrr rrrr rrOO
611*10966SJordan.Brown@Sun.COM  *
612*10966SJordan.Brown@Sun.COM  * where:
613*10966SJordan.Brown@Sun.COM  *
614*10966SJordan.Brown@Sun.COM  *    L - Opportunistic lock.  1 if lock granted, else 0.
615*10966SJordan.Brown@Sun.COM  *
616*10966SJordan.Brown@Sun.COM  *    O - Open action:
617*10966SJordan.Brown@Sun.COM  *        1 - The file existed and was opened
618*10966SJordan.Brown@Sun.COM  *        2 - The file did not exist but was created
619*10966SJordan.Brown@Sun.COM  *        3 - The file existed and was truncated
620*10966SJordan.Brown@Sun.COM  */
621*10966SJordan.Brown@Sun.COM 
622*10966SJordan.Brown@Sun.COM #define	SMB_OACT_LOCK			0x8000
623*10966SJordan.Brown@Sun.COM #define	SMB_OACT_OPENED			0x01
624*10966SJordan.Brown@Sun.COM #define	SMB_OACT_CREATED		0x02
625*10966SJordan.Brown@Sun.COM #define	SMB_OACT_TRUNCATED		0x03
626*10966SJordan.Brown@Sun.COM 
627*10966SJordan.Brown@Sun.COM #define	SMB_OACT_OPLOCK			0x8000
628*10966SJordan.Brown@Sun.COM 
629*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_DISK			0
630*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_BYTE_PIPE		1
631*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_MESG_PIPE		2
632*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_PRINTER		3
633*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_UNKNOWN		0xFFFF
634*10966SJordan.Brown@Sun.COM 
635*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_BLOCKING		0x8000
636*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_ENDPOINT		0x4000
637*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_TYPE_MASK		0x0C00
638*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_TYPE_BYTE_PIPE	0x0000
639*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_TYPE_MESG_PIPE	0x0400
640*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_RMODE_MASK		0x0300
641*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_RMODE_BYTES		0x0000
642*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_RMODE_MESGS		0x0100
643*10966SJordan.Brown@Sun.COM #define	SMB_DEVST_ICOUNT_MASK		0x00FF		/* not used */
644*10966SJordan.Brown@Sun.COM 
645*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_IS_DISK(F)		((F) == SMB_FTYPE_DISK)
646*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_IS_PIPE(F) \
647*10966SJordan.Brown@Sun.COM 	(((F) == SMB_FTYPE_BYTE_PIPE) || ((F) == SMB_FTYPE_MESG_PIPE))
648*10966SJordan.Brown@Sun.COM #define	SMB_FTYPE_IS_PRINTER(F)		((F) == SMB_FTYPE_PRINTER)
649*10966SJordan.Brown@Sun.COM 
650*10966SJordan.Brown@Sun.COM /*
651*10966SJordan.Brown@Sun.COM  * TRANS2_FIND
652*10966SJordan.Brown@Sun.COM  */
653*10966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_DIRECTORY_INFO		0x101
654*10966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_FULL_DIRECTORY_INFO	0x102
655*10966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_NAMES_INFO		0x103
656*10966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_BOTH_DIRECTORY_INFO	0x104
657*10966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_ID_FULL_DIRECTORY_INFO	0x105
658*10966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_ID_BOTH_DIRECTORY_INFO	0x106
659*10966SJordan.Brown@Sun.COM #define	SMB_MAC_FIND_BOTH_HFS_INFO		MAC_FIND_BOTH_HFS_INFO
660*10966SJordan.Brown@Sun.COM 
661*10966SJordan.Brown@Sun.COM 
662*10966SJordan.Brown@Sun.COM /*
663*10966SJordan.Brown@Sun.COM  * Flags for TRANS2_FIND_FIRST2 and TRANS2_FIND_NEXT2 (NTDDK).
664*10966SJordan.Brown@Sun.COM  *
665*10966SJordan.Brown@Sun.COM  * If SMB_FIND_RETURN_RESUME_KEYS was set in the request parameters,
666*10966SJordan.Brown@Sun.COM  * each entry is preceded by a four-byte resume key.
667*10966SJordan.Brown@Sun.COM  */
668*10966SJordan.Brown@Sun.COM #define	SMB_FIND_CLOSE_AFTER_REQUEST	0x01
669*10966SJordan.Brown@Sun.COM #define	SMB_FIND_CLOSE_AT_EOS		0x02
670*10966SJordan.Brown@Sun.COM #define	SMB_FIND_RETURN_RESUME_KEYS	0x04
671*10966SJordan.Brown@Sun.COM #define	SMB_FIND_CONTINUE_FROM_LAST	0x08
672*10966SJordan.Brown@Sun.COM #define	SMB_FIND_WITH_BACKUP_INTENT	0x10
673*10966SJordan.Brown@Sun.COM 
674*10966SJordan.Brown@Sun.COM 
675*10966SJordan.Brown@Sun.COM /*
676*10966SJordan.Brown@Sun.COM  * TRANS2_QUERY_FS_INFORMATION
677*10966SJordan.Brown@Sun.COM  */
678*10966SJordan.Brown@Sun.COM #define	SMB_INFO_ALLOCATION		1
679*10966SJordan.Brown@Sun.COM #define	SMB_INFO_VOLUME			2
680*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_LABEL_INFO		0x101
681*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_VOLUME_INFO	0x102
682*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_SIZE_INFO		0x103
683*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_DEVICE_INFO	0x104
684*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_ATTRIBUTE_INFO	0x105
685*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_QUOTA_INFO		0x106	/* unused? */
686*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_CONTROL_INFO	0x107
687*10966SJordan.Brown@Sun.COM #define	SMB_MAC_QUERY_FS_INFO		MAC_QUERY_FS_INFO
688*10966SJordan.Brown@Sun.COM 
689*10966SJordan.Brown@Sun.COM 
690*10966SJordan.Brown@Sun.COM /*
691*10966SJordan.Brown@Sun.COM  * Internal use only.
692*10966SJordan.Brown@Sun.COM  * Define information levels to represent the following requests:
693*10966SJordan.Brown@Sun.COM  *    smb_query_information
694*10966SJordan.Brown@Sun.COM  *    smb_query_information2
695*10966SJordan.Brown@Sun.COM  *    smb_set_information
696*10966SJordan.Brown@Sun.COM  *    smb_set_information2
697*10966SJordan.Brown@Sun.COM  */
698*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_INFORMATION	0x3001
699*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_INFORMATION2	0x3002
700*10966SJordan.Brown@Sun.COM #define	SMB_SET_INFORMATION	0x3001
701*10966SJordan.Brown@Sun.COM #define	SMB_SET_INFORMATION2	0x3002
702*10966SJordan.Brown@Sun.COM 
703*10966SJordan.Brown@Sun.COM /* TRANS2_QUERY_{PATH,FILE}_INFORMATION */
704*10966SJordan.Brown@Sun.COM #define	SMB_INFO_STANDARD		 1	/* query, set */
705*10966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_EA_SIZE		 2	/* query */
706*10966SJordan.Brown@Sun.COM #define	SMB_INFO_SET_EAS		 2	/* set */
707*10966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_EAS_FROM_LIST	 3	/* query */
708*10966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_ALL_EAS		 4	/* query */
709*10966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_FULL_NAME	 5	/* unused */
710*10966SJordan.Brown@Sun.COM #define	SMB_INFO_IS_NAME_VALID		 6	/* query */
711*10966SJordan.Brown@Sun.COM 
712*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_BASIC_INFO	 0x101
713*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_STANDARD_INFO	 0x102
714*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_EA_INFO		 0x103
715*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_NAME_INFO	 0x104
716*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_ALLOCATION_INFO	 0x105	/* unused */
717*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_END_OF_FILE_INFO	 0x106	/* unused */
718*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_ALL_INFO		 0x107
719*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_ALT_NAME_INFO	 0x108
720*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_STREAM_INFO	 0x109
721*10966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_COMPRESSION_INFO	 0x10B
722*10966SJordan.Brown@Sun.COM 
723*10966SJordan.Brown@Sun.COM #define	SMB_MAC_SET_FINDER_INFO		MAC_SET_FINDER_INFO
724*10966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_ADD_APPL		MAC_DT_ADD_APPL
725*10966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_REMOVE_APPL		MAC_DT_REMOVE_APPL
726*10966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_GET_APPL		MAC_DT_GET_APPL
727*10966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_GET_ICON		MAC_DT_GET_ICON
728*10966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_GET_ICON_INFO	MAC_DT_GET_ICON_INFO
729*10966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_ADD_ICON		MAC_DT_ADD_ICON
730*10966SJordan.Brown@Sun.COM 
731*10966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_BASIC_INFO		0x101
732*10966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_DISPOSITION_INFO	0x102
733*10966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_ALLOCATION_INFO	0x103
734*10966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_END_OF_FILE_INFO	0x104
735*10966SJordan.Brown@Sun.COM 
736*10966SJordan.Brown@Sun.COM 
737*10966SJordan.Brown@Sun.COM /* NT passthrough levels - see ntifs.h FILE_INFORMATION_CLASS */
738*10966SJordan.Brown@Sun.COM #define	SMB_FILE_BASIC_INFORMATION		1004
739*10966SJordan.Brown@Sun.COM #define	SMB_FILE_STANDARD_INFORMATION		1005
740*10966SJordan.Brown@Sun.COM #define	SMB_FILE_INTERNAL_INFORMATION		1006
741*10966SJordan.Brown@Sun.COM #define	SMB_FILE_EA_INFORMATION			1007
742*10966SJordan.Brown@Sun.COM #define	SMB_FILE_ACCESS_INFORMATION		1008
743*10966SJordan.Brown@Sun.COM #define	SMB_FILE_NAME_INFORMATION		1009
744*10966SJordan.Brown@Sun.COM #define	SMB_FILE_RENAME_INFORMATION		1010
745*10966SJordan.Brown@Sun.COM #define	SMB_FILE_LINK_INFORMATION		1011
746*10966SJordan.Brown@Sun.COM #define	SMB_FILE_DISPOSITION_INFORMATION	1013
747*10966SJordan.Brown@Sun.COM #define	SMB_FILE_ALL_INFORMATION		1018
748*10966SJordan.Brown@Sun.COM #define	SMB_FILE_ALLOCATION_INFORMATION		1019
749*10966SJordan.Brown@Sun.COM #define	SMB_FILE_END_OF_FILE_INFORMATION	1020
750*10966SJordan.Brown@Sun.COM #define	SMB_FILE_ALT_NAME_INFORMATION		1021
751*10966SJordan.Brown@Sun.COM #define	SMB_FILE_STREAM_INFORMATION		1022
752*10966SJordan.Brown@Sun.COM #define	SMB_FILE_COMPRESSION_INFORMATION	1028
753*10966SJordan.Brown@Sun.COM #define	SMB_FILE_ATTR_TAG_INFORMATION		1035
754*10966SJordan.Brown@Sun.COM 
755*10966SJordan.Brown@Sun.COM /*
756*10966SJordan.Brown@Sun.COM  * The following bits may be set in the SecurityMode field of the
757*10966SJordan.Brown@Sun.COM  * SMB_COM_NEGOTIATE response.
758*10966SJordan.Brown@Sun.COM  *
759*10966SJordan.Brown@Sun.COM  * Notes:
760*10966SJordan.Brown@Sun.COM  * NEGOTIATE_SECURITY_SHARE_LEVEL is a montana2 invention.
761*10966SJordan.Brown@Sun.COM  *
762*10966SJordan.Brown@Sun.COM  * The NTDDK definitions are:
763*10966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_USER_SECURITY			    0x01
764*10966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_ENCRYPT_PASSWORDS		    0x02
765*10966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_SECURITY_SIGNATURES_ENABLED	    0x04
766*10966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_SECURITY_SIGNATURES_REQUIRED	    0x08
767*10966SJordan.Brown@Sun.COM  */
768*10966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_SHARE_LEVEL		    0x00
769*10966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_USER_LEVEL		    0x01
770*10966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_CHALLENGE_RESPONSE	    0x02
771*10966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_SIGNATURES_ENABLED	    0x04
772*10966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_SIGNATURES_REQUIRED	    0x08
773*10966SJordan.Brown@Sun.COM 
774*10966SJordan.Brown@Sun.COM 
775*10966SJordan.Brown@Sun.COM /*
776*10966SJordan.Brown@Sun.COM  * Negotiated Capabilities (CIFS/1.0 section 4.1.1)
777*10966SJordan.Brown@Sun.COM  *
778*10966SJordan.Brown@Sun.COM  * Capabilities allow the server to tell the client what it supports.
779*10966SJordan.Brown@Sun.COM  * Undefined bits MUST be set to zero by servers, and MUST be ignored
780*10966SJordan.Brown@Sun.COM  * by clients. The bit definitions are:
781*10966SJordan.Brown@Sun.COM  *
782*10966SJordan.Brown@Sun.COM  * Capability Name	 Encoding   Meaning
783*10966SJordan.Brown@Sun.COM  * ====================	 ========   ==================================
784*10966SJordan.Brown@Sun.COM  * CAP_RAW_MODE		 0x0001	    The server supports SMB_COM_READ_RAW and
785*10966SJordan.Brown@Sun.COM  *				    SMB_COM_WRITE_RAW (obsolescent)
786*10966SJordan.Brown@Sun.COM  * CAP_MPX_MODE		 0x0002	    The server supports SMB_COM_READ_MPX and
787*10966SJordan.Brown@Sun.COM  *				    SMB_COM_WRITE_MPX (obsolescent)
788*10966SJordan.Brown@Sun.COM  * CAP_UNICODE		 0x0004	    The server supports Unicode strings
789*10966SJordan.Brown@Sun.COM  * CAP_LARGE_FILES	 0x0008	    The server supports large files with 64
790*10966SJordan.Brown@Sun.COM  *				    bit offsets
791*10966SJordan.Brown@Sun.COM  * CAP_NT_SMBS		 0x0010	    The server supports the SMBs particular
792*10966SJordan.Brown@Sun.COM  *				    to the NT LM 0.12 dialect.
793*10966SJordan.Brown@Sun.COM  *				    Implies CAP_NT_FIND.
794*10966SJordan.Brown@Sun.COM  * CAP_RPC_REMOTE_APIS	 0x0020	    The server supports remote admin API
795*10966SJordan.Brown@Sun.COM  *				    requests via DCE RPC
796*10966SJordan.Brown@Sun.COM  * CAP_STATUS32		 0x0040	    The server can respond with 32 bit
797*10966SJordan.Brown@Sun.COM  *				    status codes in Status.Status
798*10966SJordan.Brown@Sun.COM  * CAP_LEVEL_II_OPLOCKS	 0x0080	    The server supports level 2 oplocks
799*10966SJordan.Brown@Sun.COM  * CAP_LOCK_AND_READ	 0x0100	    The server supports the
800*10966SJordan.Brown@Sun.COM  *				    SMB_COM_LOCK_AND_READ SMB
801*10966SJordan.Brown@Sun.COM  * CAP_NT_FIND		 0x0200
802*10966SJordan.Brown@Sun.COM  * CAP_BULK_TRANSFER	 0x0400
803*10966SJordan.Brown@Sun.COM  * CAP_COMPRESSED_BULK	 0x0800
804*10966SJordan.Brown@Sun.COM  * CAP_DFS		 0x1000	    The server is DFS aware
805*10966SJordan.Brown@Sun.COM  * CAP_LARGE_READX	 0x4000	    The server supports large
806*10966SJordan.Brown@Sun.COM  *				    SMB_COM_READ_ANDX
807*10966SJordan.Brown@Sun.COM  * CAP_LARGE_WRITEX	 0x8000	    The server supports large
808*10966SJordan.Brown@Sun.COM  *				    SMB_COM_WRITE_ANDX
809*10966SJordan.Brown@Sun.COM  * CAP_RESERVED		 0x02000000 Reserved for future use.
810*10966SJordan.Brown@Sun.COM  * CAP_EXTENDED_SECURITY 0x80000000 The server supports extended security
811*10966SJordan.Brown@Sun.COM  *				    exchanges.
812*10966SJordan.Brown@Sun.COM  *
813*10966SJordan.Brown@Sun.COM  * Extended security exchanges provides a means of supporting arbitrary
814*10966SJordan.Brown@Sun.COM  * authentication protocols within CIFS. Security blobs are opaque to the
815*10966SJordan.Brown@Sun.COM  * CIFS protocol; they are messages in some authentication protocol that
816*10966SJordan.Brown@Sun.COM  * has been agreed upon by client and server by some out of band mechanism,
817*10966SJordan.Brown@Sun.COM  * for which CIFS merely functions as a transport. When
818*10966SJordan.Brown@Sun.COM  * CAP_EXTENDED_SECURITY is negotiated, the server includes a first
819*10966SJordan.Brown@Sun.COM  * security blob in its response; subsequent security blobs are exchanged
820*10966SJordan.Brown@Sun.COM  * in SMB_COM_SESSION_SETUP_ANDX requests and responses until the
821*10966SJordan.Brown@Sun.COM  * authentication protocol terminates.
822*10966SJordan.Brown@Sun.COM  */
823*10966SJordan.Brown@Sun.COM #define	CAP_RAW_MODE			0x0001
824*10966SJordan.Brown@Sun.COM #define	CAP_MPX_MODE			0x0002
825*10966SJordan.Brown@Sun.COM #define	CAP_UNICODE				0x0004
826*10966SJordan.Brown@Sun.COM #define	CAP_LARGE_FILES			0x0008
827*10966SJordan.Brown@Sun.COM #define	CAP_NT_SMBS				0x0010
828*10966SJordan.Brown@Sun.COM #define	CAP_RPC_REMOTE_APIS		0x0020
829*10966SJordan.Brown@Sun.COM #define	CAP_STATUS32			0x0040
830*10966SJordan.Brown@Sun.COM #define	CAP_LEVEL_II_OPLOCKS	0x0080
831*10966SJordan.Brown@Sun.COM #define	CAP_LOCK_AND_READ		0x0100
832*10966SJordan.Brown@Sun.COM #define	CAP_NT_FIND				0x0200
833*10966SJordan.Brown@Sun.COM #define	CAP_BULK_TRANSFER		0x0400
834*10966SJordan.Brown@Sun.COM #define	CAP_COMPRESSED_BULK		0x0800
835*10966SJordan.Brown@Sun.COM #define	CAP_DFS					0x1000
836*10966SJordan.Brown@Sun.COM #define	CAP_LARGE_READX			0x4000
837*10966SJordan.Brown@Sun.COM #define	CAP_LARGE_WRITEX		0x8000
838*10966SJordan.Brown@Sun.COM #define	CAP_RESERVED			0x02000000
839*10966SJordan.Brown@Sun.COM #define	CAP_EXTENDED_SECURITY	0x80000000
840*10966SJordan.Brown@Sun.COM 
841*10966SJordan.Brown@Sun.COM 
842*10966SJordan.Brown@Sun.COM /*
843*10966SJordan.Brown@Sun.COM  * Different device types according to NT
844*10966SJordan.Brown@Sun.COM  */
845*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_BEEP		0x00000001
846*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_CD_ROM		0x00000002
847*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_CD_ROM_FILE_SYSTEM	0x00000003
848*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_CONTROLLER		0x00000004
849*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DATALINK		0x00000005
850*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DFS			0x00000006
851*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DISK		0x00000007
852*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DISK_FILE_SYSTEM	0x00000008
853*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_FILE_SYSTEM		0x00000009
854*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_INPORT_PORT		0x0000000a
855*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_KEYBOARD		0x0000000b
856*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MAILSLOT		0x0000000c
857*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MIDI_IN		0x0000000d
858*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MIDI_OUT		0x0000000e
859*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MOUSE		0x0000000f
860*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MULTI_UNC_PROVIDER	0x00000010
861*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NAMED_PIPE		0x00000011
862*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK		0x00000012
863*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK_BROWSER	0x00000013
864*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
865*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NULL		0x00000015
866*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_PARALLEL_PORT	0x00000016
867*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_PHYSICAL_NETCARD	0x00000017
868*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_PRINTER		0x00000018
869*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SCANNER		0x00000019
870*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SERIAL_MOUSE_PORT	0x0000001a
871*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SERIAL_PORT		0x0000001b
872*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SCREEN		0x0000001c
873*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SOUND		0x0000001d
874*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_STREAMS		0x0000001e
875*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_TAPE		0x0000001f
876*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_TAPE_FILE_SYSTEM	0x00000020
877*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_TRANSPORT		0x00000021
878*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_UNKNOWN		0x00000022
879*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_VIDEO		0x00000023
880*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_VIRTUAL_DISK	0x00000024
881*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_WAVE_IN		0x00000025
882*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_WAVE_OUT		0x00000026
883*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_8042_PORT		0x00000027
884*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK_REDIRECTOR	0x00000028
885*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_BATTERY		0x00000029
886*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_BUS_EXTENDER	0x0000002a
887*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MODEM		0x0000002b
888*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_VDM			0x0000002c
889*10966SJordan.Brown@Sun.COM 
890*10966SJordan.Brown@Sun.COM /*
891*10966SJordan.Brown@Sun.COM  * Some of these device types are not currently accessible over the network
892*10966SJordan.Brown@Sun.COM  * and may never be accessible over the network. Some may change to be
893*10966SJordan.Brown@Sun.COM  *
894*10966SJordan.Brown@Sun.COM  * accessible over the network. The values for device types that may never
895*10966SJordan.Brown@Sun.COM  * be accessible over the network may be redefined to be just reserved at
896*10966SJordan.Brown@Sun.COM  * some date in the future.
897*10966SJordan.Brown@Sun.COM  *
898*10966SJordan.Brown@Sun.COM  * Characteristics is the sum of any of the following:
899*10966SJordan.Brown@Sun.COM  */
900*10966SJordan.Brown@Sun.COM 
901*10966SJordan.Brown@Sun.COM #define	FILE_REMOVABLE_MEDIA		0x00000001
902*10966SJordan.Brown@Sun.COM #define	FILE_READ_ONLY_DEVICE		0x00000002
903*10966SJordan.Brown@Sun.COM #define	FILE_FLOPPY_DISKETTE		0x00000004
904*10966SJordan.Brown@Sun.COM #define	FILE_WRITE_ONE_MEDIA		0x00000008
905*10966SJordan.Brown@Sun.COM #define	FILE_REMOTE_DEVICE		0x00000010
906*10966SJordan.Brown@Sun.COM #define	FILE_DEVICE_IS_MOUNTED		0x00000020
907*10966SJordan.Brown@Sun.COM #define	FILE_VIRTUAL_VOLUME		0x00000040
908*10966SJordan.Brown@Sun.COM 
909*10966SJordan.Brown@Sun.COM /*
910*10966SJordan.Brown@Sun.COM  * CREATE_ANDX ShareAccess Flags
911*10966SJordan.Brown@Sun.COM  */
912*10966SJordan.Brown@Sun.COM 
913*10966SJordan.Brown@Sun.COM #define	FILE_SHARE_NONE			0x00000000
914*10966SJordan.Brown@Sun.COM #define	FILE_SHARE_READ			0x00000001
915*10966SJordan.Brown@Sun.COM #define	FILE_SHARE_WRITE		0x00000002
916*10966SJordan.Brown@Sun.COM #define	FILE_SHARE_DELETE		0x00000004
917*10966SJordan.Brown@Sun.COM #define	FILE_SHARE_ALL			0x00000007
918*10966SJordan.Brown@Sun.COM #define	FILE_SHARE_VALID_FLAGS		0x00000007
919*10966SJordan.Brown@Sun.COM 
920*10966SJordan.Brown@Sun.COM 
921*10966SJordan.Brown@Sun.COM /*
922*10966SJordan.Brown@Sun.COM  * CREATE_ANDX CreateDisposition flags
923*10966SJordan.Brown@Sun.COM  *
924*10966SJordan.Brown@Sun.COM  * FILE_SUPERSEDE     If the file already exists it should be superseded
925*10966SJordan.Brown@Sun.COM  *		      by the specified file. If the file does not already
926*10966SJordan.Brown@Sun.COM  *		      exist then it should be created.
927*10966SJordan.Brown@Sun.COM  *
928*10966SJordan.Brown@Sun.COM  * FILE_CREATE	      If the file already exists the operation should fail.
929*10966SJordan.Brown@Sun.COM  *		      If the file does not already exist then it should be
930*10966SJordan.Brown@Sun.COM  *		      created. (aka CREATE_NEW)
931*10966SJordan.Brown@Sun.COM  *
932*10966SJordan.Brown@Sun.COM  * FILE_OPEN	      If the file already exists then it should be opened.
933*10966SJordan.Brown@Sun.COM  *		      If the file does not already exist then the operation
934*10966SJordan.Brown@Sun.COM  *		      should fail. (aka OPEN_EXISTING)
935*10966SJordan.Brown@Sun.COM  *
936*10966SJordan.Brown@Sun.COM  * FILE_OPEN_IF	      If the file already exists then it should be opened.
937*10966SJordan.Brown@Sun.COM  *		      If the file does not already exist then it should be
938*10966SJordan.Brown@Sun.COM  *		      created. (aka OPEN_ALWAYS)
939*10966SJordan.Brown@Sun.COM  *
940*10966SJordan.Brown@Sun.COM  * FILE_OVERWRITE     If the file already exists, it should be opened and
941*10966SJordan.Brown@Sun.COM  *		      overwritten. If the file does not already exist then
942*10966SJordan.Brown@Sun.COM  *		      the operation should fail. (aka TRUNCATE_EXISTING)
943*10966SJordan.Brown@Sun.COM  *
944*10966SJordan.Brown@Sun.COM  * FILE_OVERWRITE_IF  If the file already exists, it should be opened and
945*10966SJordan.Brown@Sun.COM  *		      overwritten. If the file does not already exist then
946*10966SJordan.Brown@Sun.COM  *		      it should be created. (aka CREATE_ALWAYS)
947*10966SJordan.Brown@Sun.COM  */
948*10966SJordan.Brown@Sun.COM #define	FILE_SUPERSEDE			0x00000000
949*10966SJordan.Brown@Sun.COM #define	FILE_OPEN			0x00000001
950*10966SJordan.Brown@Sun.COM #define	FILE_CREATE			0x00000002
951*10966SJordan.Brown@Sun.COM #define	FILE_OPEN_IF			0x00000003
952*10966SJordan.Brown@Sun.COM #define	FILE_OVERWRITE			0x00000004
953*10966SJordan.Brown@Sun.COM #define	FILE_OVERWRITE_IF		0x00000005
954*10966SJordan.Brown@Sun.COM #define	FILE_MAXIMUM_DISPOSITION	0x00000005
955*10966SJordan.Brown@Sun.COM 
956*10966SJordan.Brown@Sun.COM /*
957*10966SJordan.Brown@Sun.COM  * CREATE_ANDX Impersonation levels
958*10966SJordan.Brown@Sun.COM  */
959*10966SJordan.Brown@Sun.COM 
960*10966SJordan.Brown@Sun.COM #define	SECURITY_ANONYMOUS	0x00000001
961*10966SJordan.Brown@Sun.COM #define	SECURITY_IDENTIFICATION	0x00000002
962*10966SJordan.Brown@Sun.COM #define	SECURITY_IMPERSONATION	0x00000003
963*10966SJordan.Brown@Sun.COM #define	SECURITY_DELEGATION	0x00000004
964*10966SJordan.Brown@Sun.COM 
965*10966SJordan.Brown@Sun.COM /*
966*10966SJordan.Brown@Sun.COM  * CREATE_ANDX SecurityFlags
967*10966SJordan.Brown@Sun.COM  */
968*10966SJordan.Brown@Sun.COM 
969*10966SJordan.Brown@Sun.COM #define	SECURITY_CONTEXT_TRACKING	0x00000001
970*10966SJordan.Brown@Sun.COM #define	SECURITY_EFFECTIVE_ONLY		0x00000002
971*10966SJordan.Brown@Sun.COM 
972*10966SJordan.Brown@Sun.COM /*
973*10966SJordan.Brown@Sun.COM  * Server types
974*10966SJordan.Brown@Sun.COM  */
975*10966SJordan.Brown@Sun.COM #define	SV_WORKSTATION		0x00000001	/* All workstations */
976*10966SJordan.Brown@Sun.COM #define	SV_SERVER		0x00000002	/* All servers */
977*10966SJordan.Brown@Sun.COM #define	SV_SQLSERVER		0x00000004	/* running with SQL server */
978*10966SJordan.Brown@Sun.COM #define	SV_DOMAIN_CTRL		0x00000008	/* Primary domain controller */
979*10966SJordan.Brown@Sun.COM #define	SV_DOMAIN_BAKCTRL	0x00000010	/* Backup domain controller */
980*10966SJordan.Brown@Sun.COM #define	SV_TIME_SOURCE		0x00000020	/* running timesource service */
981*10966SJordan.Brown@Sun.COM #define	SV_AFP			0x00000040	/* Apple File Protocol */
982*10966SJordan.Brown@Sun.COM #define	SV_NOVELL		0x00000080	/* Novell servers */
983*10966SJordan.Brown@Sun.COM #define	SV_DOMAIN_MEMBER	0x00000100	/* Domain Member */
984*10966SJordan.Brown@Sun.COM #define	SV_PRINTQ_SERVER	0x00000200	/* Server sharing print queue */
985*10966SJordan.Brown@Sun.COM #define	SV_DIALIN_SERVER	0x00000400	/* Server running dialin */
986*10966SJordan.Brown@Sun.COM #define	SV_XENIX_SERVER		0x00000800	/* Xenix server */
987*10966SJordan.Brown@Sun.COM #define	SV_NT			0x00001000	/* NT server */
988*10966SJordan.Brown@Sun.COM #define	SV_WFW			0x00002000	/* Server running Windows for */
989*10966SJordan.Brown@Sun.COM #define	SV_SERVER_NT		0x00008000	/* Windows NT non DC server */
990*10966SJordan.Brown@Sun.COM #define	SV_POTENTIAL_BROWSER	0x00010000	/* can run browser service */
991*10966SJordan.Brown@Sun.COM #define	SV_BACKUP_BROWSER	0x00020000	/* Backup browser server */
992*10966SJordan.Brown@Sun.COM #define	SV_MASTER_BROWSER	0x00040000	/* Master browser server */
993*10966SJordan.Brown@Sun.COM #define	SV_DOMAIN_MASTER	0x00080000	/* Domain Master Browser */
994*10966SJordan.Brown@Sun.COM #define	SV_OSF			0x00100000	/* OSF operating system */
995*10966SJordan.Brown@Sun.COM #define	SV_VMS			0x00200000	/* VMS operating system */
996*10966SJordan.Brown@Sun.COM #define	SV_WINDOWS_95_PLUS	0x00400000	/* Windows 95 or better */
997*10966SJordan.Brown@Sun.COM 
998*10966SJordan.Brown@Sun.COM #define	SV_LOCAL_LIST_ONLY	0x40000000	/* Enumerate only "local" */
999*10966SJordan.Brown@Sun.COM #define	SV_TYPE_DOMAIN_ENUM	0x80000000	/*  Enumerate Domains */
1000*10966SJordan.Brown@Sun.COM 
1001*10966SJordan.Brown@Sun.COM #define	MY_SERVER_TYPE	(SV_SERVER | SV_NT | SV_SERVER_NT)
1002*10966SJordan.Brown@Sun.COM 
1003*10966SJordan.Brown@Sun.COM 
1004*10966SJordan.Brown@Sun.COM #define	PRQ_ACTIVE	0	/* Active */
1005*10966SJordan.Brown@Sun.COM #define	PRQ_PAUSE	1	/* Paused */
1006*10966SJordan.Brown@Sun.COM #define	PRQ_ERROR	2	/* Error Occurred */
1007*10966SJordan.Brown@Sun.COM #define	PRQ_PENDING	3	/* Deletion pending */
1008*10966SJordan.Brown@Sun.COM 
1009*10966SJordan.Brown@Sun.COM #define	PRJ_QS_QUEUED	0	/* Active */
1010*10966SJordan.Brown@Sun.COM #define	PRJ_QS_PAUSED	1	/* Paused */
1011*10966SJordan.Brown@Sun.COM #define	PRJ_QS_SPOOLING	2	/* Paused */
1012*10966SJordan.Brown@Sun.COM #define	PRJ_QS_PRINTING	3	/* Paused */
1013*10966SJordan.Brown@Sun.COM 
1014*10966SJordan.Brown@Sun.COM 
1015*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_READ	0x01	/* read & execute from resource	*/
1016*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_WRITE	0x02	/* write data to resource	*/
1017*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_CREATE	0x04	/* create an instance of	*/
1018*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_EXEC	0x08	/* execute from resource	*/
1019*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_DELETE	0x10	/* Permission to delete the resource */
1020*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_ATTRIB	0x20	/* Permission to modify the resource */
1021*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_PERM	0x40	/* Permission to change permissions */
1022*10966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_ALL	0x7F	/* All of the above permissions	*/
1023*10966SJordan.Brown@Sun.COM 
1024*10966SJordan.Brown@Sun.COM 
1025*10966SJordan.Brown@Sun.COM /*
1026*10966SJordan.Brown@Sun.COM  * SMB_COM_NT_TRANSACTION sub-command codes (CIFS/1.0 section 5.3)
1027*10966SJordan.Brown@Sun.COM  *
1028*10966SJordan.Brown@Sun.COM  * SubCommand Code		   Value Description
1029*10966SJordan.Brown@Sun.COM  * =============================== ===== =================================
1030*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_CREATE		   1	 File open/create
1031*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_IOCTL		   2	 Device IOCTL
1032*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_SET_SECURITY_DESC   3	 Set security descriptor
1033*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_NOTIFY_CHANGE	   4	 Start directory watch
1034*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_RENAME		   5	 Reserved (handle-based rename)
1035*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_QUERY_SECURITY_DESC 6	 Retrieve security descriptor
1036*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_QUERY_QUOTA	   7	 Retrieve quota information
1037*10966SJordan.Brown@Sun.COM  * NT_TRANSACT_SET_QUOTA	   8	 Set quota information
1038*10966SJordan.Brown@Sun.COM  */
1039*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_MIN_FUNCTION	1
1040*10966SJordan.Brown@Sun.COM 
1041*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_CREATE		1
1042*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_IOCTL		2
1043*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_SET_SECURITY_DESC	3
1044*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_NOTIFY_CHANGE	4
1045*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_RENAME		5
1046*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_QUERY_SECURITY_DESC 6
1047*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_QUERY_QUOTA		7
1048*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_SET_QUOTA		8
1049*10966SJordan.Brown@Sun.COM 
1050*10966SJordan.Brown@Sun.COM #define	NT_TRANSACT_MAX_FUNCTION	8
1051*10966SJordan.Brown@Sun.COM 
1052*10966SJordan.Brown@Sun.COM 
1053*10966SJordan.Brown@Sun.COM /*
1054*10966SJordan.Brown@Sun.COM  * Pipe states
1055*10966SJordan.Brown@Sun.COM  */
1056*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_READMODE_BYTE		0x0000
1057*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_READMODE_MESSAGE	0x0100
1058*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_TYPE_BYTE		0x0000
1059*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_TYPE_MESSAGE		0x0400
1060*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_END_CLIENT		0x0000
1061*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_END_SERVER		0x4000
1062*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_WAIT			0x0000
1063*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_NOWAIT			0x8000
1064*10966SJordan.Brown@Sun.COM #define	SMB_PIPE_UNLIMITED_INSTANCES	0x00FF
1065*10966SJordan.Brown@Sun.COM 
1066*10966SJordan.Brown@Sun.COM /*
1067*10966SJordan.Brown@Sun.COM  * smb_com_seek request
1068*10966SJordan.Brown@Sun.COM  */
1069*10966SJordan.Brown@Sun.COM #define	SMB_SEEK_SET	0 /* set file offset to specified offset */
1070*10966SJordan.Brown@Sun.COM #define	SMB_SEEK_CUR	1 /* set file offset to current plus specified offset */
1071*10966SJordan.Brown@Sun.COM #define	SMB_SEEK_END	2 /* set file offset to EOF plus specified offset */
1072*10966SJordan.Brown@Sun.COM 
1073*10966SJordan.Brown@Sun.COM /*
1074*10966SJordan.Brown@Sun.COM  * API Numbers for Transact based RAP (Remote Administration Protocol) calls
1075*10966SJordan.Brown@Sun.COM  */
1076*10966SJordan.Brown@Sun.COM #define	API_WshareEnum			0
1077*10966SJordan.Brown@Sun.COM #define	API_WshareGetInfo		1
1078*10966SJordan.Brown@Sun.COM #define	API_WshareSetInfo		2
1079*10966SJordan.Brown@Sun.COM #define	API_WshareAdd			3
1080*10966SJordan.Brown@Sun.COM #define	API_WshareDel			4
1081*10966SJordan.Brown@Sun.COM #define	API_NetShareCheck		5
1082*10966SJordan.Brown@Sun.COM #define	API_WsessionEnum		6
1083*10966SJordan.Brown@Sun.COM #define	API_WsessionGetInfo		7
1084*10966SJordan.Brown@Sun.COM #define	API_WsessionDel			8
1085*10966SJordan.Brown@Sun.COM #define	API_WconnectionEnum		9
1086*10966SJordan.Brown@Sun.COM #define	API_WfileEnum			10
1087*10966SJordan.Brown@Sun.COM #define	API_WfileGetInfo		11
1088*10966SJordan.Brown@Sun.COM #define	API_WfileClose			12
1089*10966SJordan.Brown@Sun.COM #define	API_WserverGetInfo		13
1090*10966SJordan.Brown@Sun.COM #define	API_WserverSetInfo		14
1091*10966SJordan.Brown@Sun.COM #define	API_WserverDiskEnum		15
1092*10966SJordan.Brown@Sun.COM #define	API_WserverAdminCommand		16
1093*10966SJordan.Brown@Sun.COM #define	API_NetAuditOpen		17
1094*10966SJordan.Brown@Sun.COM #define	API_WauditClear			18
1095*10966SJordan.Brown@Sun.COM #define	API_NetErrorLogOpen		19
1096*10966SJordan.Brown@Sun.COM #define	API_WerrorLogClear		20
1097*10966SJordan.Brown@Sun.COM #define	API_NetCharDevEnum		21
1098*10966SJordan.Brown@Sun.COM #define	API_NetCharDevGetInfo		22
1099*10966SJordan.Brown@Sun.COM #define	API_WCharDevControl		23
1100*10966SJordan.Brown@Sun.COM #define	API_NetCharDevQEnum		24
1101*10966SJordan.Brown@Sun.COM #define	API_NetCharDevQGetInfo		25
1102*10966SJordan.Brown@Sun.COM #define	API_WCharDevQSetInfo		26
1103*10966SJordan.Brown@Sun.COM #define	API_WCharDevQPurge		27
1104*10966SJordan.Brown@Sun.COM #define	API_WCharDevQPurgeSelf		28
1105*10966SJordan.Brown@Sun.COM #define	API_WMessageNameEnum		29
1106*10966SJordan.Brown@Sun.COM #define	API_WMessageNameGetInfo		30
1107*10966SJordan.Brown@Sun.COM #define	API_WMessageNameAdd		31
1108*10966SJordan.Brown@Sun.COM #define	API_WMessageNameDel		32
1109*10966SJordan.Brown@Sun.COM #define	API_WMessageNameFwd		33
1110*10966SJordan.Brown@Sun.COM #define	API_WMessageNameUnFwd		34
1111*10966SJordan.Brown@Sun.COM #define	API_WMessageBufferSend		35
1112*10966SJordan.Brown@Sun.COM #define	API_WMessageFileSend		36
1113*10966SJordan.Brown@Sun.COM #define	API_WMessageLogFileSet		37
1114*10966SJordan.Brown@Sun.COM #define	API_WMessageLogFileGet		38
1115*10966SJordan.Brown@Sun.COM #define	API_WServiceEnum		39
1116*10966SJordan.Brown@Sun.COM #define	API_WServiceInstall		40
1117*10966SJordan.Brown@Sun.COM #define	API_WServiceControl		41
1118*10966SJordan.Brown@Sun.COM #define	API_WAccessEnum			42
1119*10966SJordan.Brown@Sun.COM #define	API_WAccessGetInfo		43
1120*10966SJordan.Brown@Sun.COM #define	API_WAccessSetInfo		44
1121*10966SJordan.Brown@Sun.COM #define	API_WAccessAdd			45
1122*10966SJordan.Brown@Sun.COM #define	API_WAccessDel			46
1123*10966SJordan.Brown@Sun.COM #define	API_WGroupEnum			47
1124*10966SJordan.Brown@Sun.COM #define	API_WGroupAdd			48
1125*10966SJordan.Brown@Sun.COM #define	API_WGroupDel			49
1126*10966SJordan.Brown@Sun.COM #define	API_WGroupAddUser		50
1127*10966SJordan.Brown@Sun.COM #define	API_WGroupDelUser		51
1128*10966SJordan.Brown@Sun.COM #define	API_WGroupGetUsers		52
1129*10966SJordan.Brown@Sun.COM #define	API_WUserEnum			53
1130*10966SJordan.Brown@Sun.COM #define	API_WUserAdd			54
1131*10966SJordan.Brown@Sun.COM #define	API_WUserDel			55
1132*10966SJordan.Brown@Sun.COM #define	API_WUserGetInfo		56
1133*10966SJordan.Brown@Sun.COM #define	API_WUserSetInfo		57
1134*10966SJordan.Brown@Sun.COM #define	API_WUserPasswordSet		58
1135*10966SJordan.Brown@Sun.COM #define	API_WUserGetGroups		59
1136*10966SJordan.Brown@Sun.COM #define	API_DeadTableEntry		60
1137*10966SJordan.Brown@Sun.COM #define	API_WWkstaSetUID		62
1138*10966SJordan.Brown@Sun.COM #define	API_WWkstaGetInfo		63
1139*10966SJordan.Brown@Sun.COM #define	API_WWkstaSetInfo		64
1140*10966SJordan.Brown@Sun.COM #define	API_WUseEnum			65
1141*10966SJordan.Brown@Sun.COM #define	API_WUseAdd			66
1142*10966SJordan.Brown@Sun.COM #define	API_WUseDel			67
1143*10966SJordan.Brown@Sun.COM #define	API_WUseGetInfo			68
1144*10966SJordan.Brown@Sun.COM #define	API_WPrintQEnum			69
1145*10966SJordan.Brown@Sun.COM #define	API_WPrintQGetInfo		70
1146*10966SJordan.Brown@Sun.COM #define	API_WPrintQSetInfo		71
1147*10966SJordan.Brown@Sun.COM #define	API_WPrintQAdd			72
1148*10966SJordan.Brown@Sun.COM #define	API_WPrintQDel			73
1149*10966SJordan.Brown@Sun.COM #define	API_WPrintQPause		74
1150*10966SJordan.Brown@Sun.COM #define	API_WPrintQContinue		75
1151*10966SJordan.Brown@Sun.COM #define	API_WPrintJobEnum		76
1152*10966SJordan.Brown@Sun.COM #define	API_WPrintJobGetInfo		77
1153*10966SJordan.Brown@Sun.COM #define	API_WPrintJobSetInfo_OLD	78
1154*10966SJordan.Brown@Sun.COM #define	API_WPrintJobDel		81
1155*10966SJordan.Brown@Sun.COM #define	API_WPrintJobPause		82
1156*10966SJordan.Brown@Sun.COM #define	API_WPrintJobContinue		83
1157*10966SJordan.Brown@Sun.COM #define	API_WPrintDestEnum		84
1158*10966SJordan.Brown@Sun.COM #define	API_WPrintDestGetInfo		85
1159*10966SJordan.Brown@Sun.COM #define	API_WPrintDestControl		86
1160*10966SJordan.Brown@Sun.COM #define	API_WProfileSave		87
1161*10966SJordan.Brown@Sun.COM #define	API_WProfileLoad		88
1162*10966SJordan.Brown@Sun.COM #define	API_WStatisticsGet		89
1163*10966SJordan.Brown@Sun.COM #define	API_WStatisticsClear		90
1164*10966SJordan.Brown@Sun.COM #define	API_NetRemoteTOD		91
1165*10966SJordan.Brown@Sun.COM #define	API_WNetBiosEnum		92
1166*10966SJordan.Brown@Sun.COM #define	API_WNetBiosGetInfo		93
1167*10966SJordan.Brown@Sun.COM #define	API_NetServerEnum		94
1168*10966SJordan.Brown@Sun.COM #define	API_I_NetServerEnum		95
1169*10966SJordan.Brown@Sun.COM #define	API_WServiceGetInfo		96
1170*10966SJordan.Brown@Sun.COM #define	API_WPrintQPurge		103
1171*10966SJordan.Brown@Sun.COM #define	API_NetServerEnum2		104
1172*10966SJordan.Brown@Sun.COM #define	API_WAccessGetUserPerms		105
1173*10966SJordan.Brown@Sun.COM #define	API_WGroupGetInfo		106
1174*10966SJordan.Brown@Sun.COM #define	API_WGroupSetInfo		107
1175*10966SJordan.Brown@Sun.COM #define	API_WGroupSetUsers		108
1176*10966SJordan.Brown@Sun.COM #define	API_WUserSetGroups		109
1177*10966SJordan.Brown@Sun.COM #define	API_WUserModalsGet		110
1178*10966SJordan.Brown@Sun.COM #define	API_WUserModalsSet		111
1179*10966SJordan.Brown@Sun.COM #define	API_WFileEnum2			112
1180*10966SJordan.Brown@Sun.COM #define	API_WUserAdd2			113
1181*10966SJordan.Brown@Sun.COM #define	API_WUserSetInfo2		114
1182*10966SJordan.Brown@Sun.COM #define	API_WUserPasswordSet2		115
1183*10966SJordan.Brown@Sun.COM #define	API_I_NetServerEnum2		116
1184*10966SJordan.Brown@Sun.COM #define	API_WConfigGet2			117
1185*10966SJordan.Brown@Sun.COM #define	API_WConfigGetAll2		118
1186*10966SJordan.Brown@Sun.COM #define	API_WGetDCName			119
1187*10966SJordan.Brown@Sun.COM #define	API_NetHandleGetInfo		120
1188*10966SJordan.Brown@Sun.COM #define	API_NetHandleSetInfo		121
1189*10966SJordan.Brown@Sun.COM #define	API_WStatisticsGet2		122
1190*10966SJordan.Brown@Sun.COM #define	API_WBuildGetInfo		123
1191*10966SJordan.Brown@Sun.COM #define	API_WFileGetInfo2		124
1192*10966SJordan.Brown@Sun.COM #define	API_WFileClose2			125
1193*10966SJordan.Brown@Sun.COM #define	API_WNetServerReqChallenge	126
1194*10966SJordan.Brown@Sun.COM #define	API_WNetServerAuthenticate	127
1195*10966SJordan.Brown@Sun.COM #define	API_WNetServerPasswordSet	128
1196*10966SJordan.Brown@Sun.COM #define	API_WNetAccountDeltas		129
1197*10966SJordan.Brown@Sun.COM #define	API_WNetAccountSync		130
1198*10966SJordan.Brown@Sun.COM #define	API_WUserEnum2			131
1199*10966SJordan.Brown@Sun.COM #define	API_WWkstaUserLogon		132
1200*10966SJordan.Brown@Sun.COM #define	API_WWkstaUserLogoff		133
1201*10966SJordan.Brown@Sun.COM #define	API_WLogonEnum			134
1202*10966SJordan.Brown@Sun.COM #define	API_WErrorLogRead		135
1203*10966SJordan.Brown@Sun.COM #define	API_WI_NetPathType		136
1204*10966SJordan.Brown@Sun.COM #define	API_WI_NetPathCanonicalize	137
1205*10966SJordan.Brown@Sun.COM #define	API_WI_NetPathCompare		138
1206*10966SJordan.Brown@Sun.COM #define	API_WI_NetNameValidate		139
1207*10966SJordan.Brown@Sun.COM #define	API_WI_NetNameCanonicalize	140
1208*10966SJordan.Brown@Sun.COM #define	API_WI_NetNameCompare		141
1209*10966SJordan.Brown@Sun.COM #define	API_WAuditRead			142
1210*10966SJordan.Brown@Sun.COM #define	API_WPrintDestAdd		143
1211*10966SJordan.Brown@Sun.COM #define	API_WPrintDestSetInfo		144
1212*10966SJordan.Brown@Sun.COM #define	API_WPrintDestDel		145
1213*10966SJordan.Brown@Sun.COM #define	API_WUserValidate2		146
1214*10966SJordan.Brown@Sun.COM #define	API_WPrintJobSetInfo		147
1215*10966SJordan.Brown@Sun.COM #define	API_TI_NetServerDiskEnum	148
1216*10966SJordan.Brown@Sun.COM #define	API_TI_NetServerDiskGetInfo	149
1217*10966SJordan.Brown@Sun.COM #define	API_TI_FTVerifyMirror		150
1218*10966SJordan.Brown@Sun.COM #define	API_TI_FTAbortVerify		151
1219*10966SJordan.Brown@Sun.COM #define	API_TI_FTGetInfo		152
1220*10966SJordan.Brown@Sun.COM #define	API_TI_FTSetInfo		153
1221*10966SJordan.Brown@Sun.COM #define	API_TI_FTLockDisk		154
1222*10966SJordan.Brown@Sun.COM #define	API_TI_FTFixError		155
1223*10966SJordan.Brown@Sun.COM #define	API_TI_FTAbortFix		156
1224*10966SJordan.Brown@Sun.COM #define	API_TI_FTDiagnoseError		157
1225*10966SJordan.Brown@Sun.COM #define	API_TI_FTGetDriveStats		158
1226*10966SJordan.Brown@Sun.COM #define	API_TI_FTErrorGetInfo		160
1227*10966SJordan.Brown@Sun.COM #define	API_NetAccessCheck		163
1228*10966SJordan.Brown@Sun.COM #define	API_NetAlertRaise		164
1229*10966SJordan.Brown@Sun.COM #define	API_NetAlertStart		165
1230*10966SJordan.Brown@Sun.COM #define	API_NetAlertStop		166
1231*10966SJordan.Brown@Sun.COM #define	API_NetAuditWrite		167
1232*10966SJordan.Brown@Sun.COM #define	API_NetIRemoteAPI		168
1233*10966SJordan.Brown@Sun.COM #define	API_NetServiceStatus		169
1234*10966SJordan.Brown@Sun.COM #define	API_I_NetServerRegister		170
1235*10966SJordan.Brown@Sun.COM #define	API_I_NetServerDeregister	171
1236*10966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntryMake	172
1237*10966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntryClear	173
1238*10966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntryGetInfo	174
1239*10966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntrySetInfo	175
1240*10966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntryMake	176
1241*10966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntryClear	177
1242*10966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntrySetInfo	178
1243*10966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntryGetInfo	179
1244*10966SJordan.Brown@Sun.COM #define	API_I_NetFileEntryMake		180
1245*10966SJordan.Brown@Sun.COM #define	API_I_NetFileEntryClear		181
1246*10966SJordan.Brown@Sun.COM #define	API_I_NetFileEntrySetInfo	182
1247*10966SJordan.Brown@Sun.COM #define	API_I_NetFileEntryGetInfo	183
1248*10966SJordan.Brown@Sun.COM #define	API_AltSrvMessageBufferSend	184
1249*10966SJordan.Brown@Sun.COM #define	API_AltSrvMessageFileSend	185
1250*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaEnum		186
1251*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaGetInfo	187
1252*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaSetInfo	188
1253*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaAdd		189
1254*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaDel		190
1255*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileEnum	191
1256*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileGetInfo	192
1257*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileSetInfo	193
1258*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileAdd		194
1259*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileDel		195
1260*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileClone	196
1261*10966SJordan.Brown@Sun.COM #define	API_wI_NetRplBaseProfileEnum	197
1262*10966SJordan.Brown@Sun.COM #define	API_WIServerSetInfo		201
1263*10966SJordan.Brown@Sun.COM #define	API_WPrintDriverEnum		205
1264*10966SJordan.Brown@Sun.COM #define	API_WPrintQProcessorEnum	206
1265*10966SJordan.Brown@Sun.COM #define	API_WPrintPortEnum		207
1266*10966SJordan.Brown@Sun.COM #define	API_WNetWriteUpdateLog		208
1267*10966SJordan.Brown@Sun.COM #define	API_WNetAccountUpdate		209
1268*10966SJordan.Brown@Sun.COM #define	API_WNetAccountConfirmUpdate	210
1269*10966SJordan.Brown@Sun.COM #define	API_WConfigSet			211
1270*10966SJordan.Brown@Sun.COM #define	API_WAccountsReplicate		212
1271*10966SJordan.Brown@Sun.COM #define	API_SamOEMChgPasswordUser2_P	214
1272*10966SJordan.Brown@Sun.COM #define	API_NetServerEnum3		215
1273*10966SJordan.Brown@Sun.COM #define	API_WprintDriverGetInfo		250
1274*10966SJordan.Brown@Sun.COM #define	API_WprintDriverSetInfo		251
1275*10966SJordan.Brown@Sun.COM #define	API_WaliasAdd			252
1276*10966SJordan.Brown@Sun.COM #define	API_WaliasDel			253
1277*10966SJordan.Brown@Sun.COM #define	API_WaliasGetInfo		254
1278*10966SJordan.Brown@Sun.COM #define	API_WaliasSetInfo		255
1279*10966SJordan.Brown@Sun.COM #define	API_WaliasEnum			256
1280*10966SJordan.Brown@Sun.COM #define	API_WuserGetLogonAsn		257
1281*10966SJordan.Brown@Sun.COM #define	API_WuserSetLogonAsn		258
1282*10966SJordan.Brown@Sun.COM #define	API_WuserGetAppSel		259
1283*10966SJordan.Brown@Sun.COM #define	API_WuserSetAppSel		260
1284*10966SJordan.Brown@Sun.COM #define	API_WappAdd			261
1285*10966SJordan.Brown@Sun.COM #define	API_WappDel			262
1286*10966SJordan.Brown@Sun.COM #define	API_WappGetInfo			263
1287*10966SJordan.Brown@Sun.COM #define	API_WappSetInfo			264
1288*10966SJordan.Brown@Sun.COM #define	API_WappEnum			265
1289*10966SJordan.Brown@Sun.COM #define	API_WUserDCDBInit		266
1290*10966SJordan.Brown@Sun.COM #define	API_WDASDAdd			267
1291*10966SJordan.Brown@Sun.COM #define	API_WDASDDel			268
1292*10966SJordan.Brown@Sun.COM #define	API_WDASDGetInfo		269
1293*10966SJordan.Brown@Sun.COM #define	API_WDASDSetInfo		270
1294*10966SJordan.Brown@Sun.COM #define	API_WDASDEnum			271
1295*10966SJordan.Brown@Sun.COM #define	API_WDASDCheck			272
1296*10966SJordan.Brown@Sun.COM #define	API_WDASDCtl			273
1297*10966SJordan.Brown@Sun.COM #define	API_WuserRemoteLogonCheck	274
1298*10966SJordan.Brown@Sun.COM #define	API_WUserPasswordSet3		275
1299*10966SJordan.Brown@Sun.COM #define	API_WCreateRIPLMachine		276
1300*10966SJordan.Brown@Sun.COM #define	API_WDeleteRIPLMachine		277
1301*10966SJordan.Brown@Sun.COM #define	API_WGetRIPLMachineInfo		278
1302*10966SJordan.Brown@Sun.COM #define	API_WSetRIPLMachineInfo		279
1303*10966SJordan.Brown@Sun.COM #define	API_WEnumRIPLMachine		280
1304*10966SJordan.Brown@Sun.COM #define	API_WI_ShareAdd			281
1305*10966SJordan.Brown@Sun.COM #define	API_WI_AliasEnum		282
1306*10966SJordan.Brown@Sun.COM #define	API_WaccessApply		283
1307*10966SJordan.Brown@Sun.COM #define	API_WPrt16Query			284
1308*10966SJordan.Brown@Sun.COM #define	API_WPrt16Set			285
1309*10966SJordan.Brown@Sun.COM #define	API_WUserDel100			286
1310*10966SJordan.Brown@Sun.COM #define	API_WUserRemoteLogonCheck2	287
1311*10966SJordan.Brown@Sun.COM #define	API_WRemoteTODSet		294
1312*10966SJordan.Brown@Sun.COM #define	API_WprintJobMoveAll		295
1313*10966SJordan.Brown@Sun.COM #define	API_W16AppParmAdd		296
1314*10966SJordan.Brown@Sun.COM #define	API_W16AppParmDel		297
1315*10966SJordan.Brown@Sun.COM #define	API_W16AppParmGet		298
1316*10966SJordan.Brown@Sun.COM #define	API_W16AppParmSet		299
1317*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineCreate	300
1318*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineGetInfo	301
1319*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineSetInfo	302
1320*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineEnum		303
1321*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineListParmEnum	304
1322*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassGetInfo	305
1323*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassEnum	306
1324*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassCreate	307
1325*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassSetInfo	308
1326*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassDelete	309
1327*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassLPEnum	310
1328*10966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineDelete	311
1329*10966SJordan.Brown@Sun.COM #define	API_W16WSLevelGetInfo		312
1330*10966SJordan.Brown@Sun.COM #define	API_WserverNameAdd		313
1331*10966SJordan.Brown@Sun.COM #define	API_WserverNameDel		314
1332*10966SJordan.Brown@Sun.COM #define	API_WserverNameEnum		315
1333*10966SJordan.Brown@Sun.COM #define	API_I_WDASDEnum			316
1334*10966SJordan.Brown@Sun.COM #define	API_I_WDASDEnumTerminate	317
1335*10966SJordan.Brown@Sun.COM #define	API_I_WDASDSetInfo2		318
1336*10966SJordan.Brown@Sun.COM #define	MAX_RAP_API			318
1337*10966SJordan.Brown@Sun.COM 
1338*10966SJordan.Brown@Sun.COM #ifdef __cplusplus
1339*10966SJordan.Brown@Sun.COM }
1340*10966SJordan.Brown@Sun.COM #endif
1341*10966SJordan.Brown@Sun.COM 
1342*10966SJordan.Brown@Sun.COM #endif /* _SMBSRV_SMB_H */
1343