xref: /onnv-gate/usr/src/uts/common/smbsrv/smb.h (revision 12890:16985853e3aa)
110966SJordan.Brown@Sun.COM /*
210966SJordan.Brown@Sun.COM  * CDDL HEADER START
310966SJordan.Brown@Sun.COM  *
410966SJordan.Brown@Sun.COM  * The contents of this file are subject to the terms of the
510966SJordan.Brown@Sun.COM  * Common Development and Distribution License (the "License").
610966SJordan.Brown@Sun.COM  * You may not use this file except in compliance with the License.
710966SJordan.Brown@Sun.COM  *
810966SJordan.Brown@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
910966SJordan.Brown@Sun.COM  * or http://www.opensolaris.org/os/licensing.
1010966SJordan.Brown@Sun.COM  * See the License for the specific language governing permissions
1110966SJordan.Brown@Sun.COM  * and limitations under the License.
1210966SJordan.Brown@Sun.COM  *
1310966SJordan.Brown@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
1410966SJordan.Brown@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1510966SJordan.Brown@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
1610966SJordan.Brown@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
1710966SJordan.Brown@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
1810966SJordan.Brown@Sun.COM  *
1910966SJordan.Brown@Sun.COM  * CDDL HEADER END
2010966SJordan.Brown@Sun.COM  */
2112508Samw@Sun.COM 
2210966SJordan.Brown@Sun.COM /*
2312508Samw@Sun.COM  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
2410966SJordan.Brown@Sun.COM  */
2510966SJordan.Brown@Sun.COM 
2610966SJordan.Brown@Sun.COM #ifndef _SMBSRV_SMB_H
2710966SJordan.Brown@Sun.COM #define	_SMBSRV_SMB_H
2810966SJordan.Brown@Sun.COM 
2910966SJordan.Brown@Sun.COM 
3010966SJordan.Brown@Sun.COM /*
3110966SJordan.Brown@Sun.COM  * SMB definitions and interfaces, mostly defined in the SMB and CIFS specs.
3210966SJordan.Brown@Sun.COM  */
3310966SJordan.Brown@Sun.COM #ifdef _KERNEL
3410966SJordan.Brown@Sun.COM #include <sys/types.h>
3510966SJordan.Brown@Sun.COM #endif
3610966SJordan.Brown@Sun.COM #include <smbsrv/string.h>
3710966SJordan.Brown@Sun.COM #include <smbsrv/msgbuf.h>
3810966SJordan.Brown@Sun.COM 
3912508Samw@Sun.COM #include <smb/ntstatus.h>
4012508Samw@Sun.COM #include <smb/nterror.h>
4112508Samw@Sun.COM #include <smb/lmerr.h>
4212508Samw@Sun.COM #include <smb/doserror.h>
4310966SJordan.Brown@Sun.COM #include <smbsrv/ntaccess.h>
4410966SJordan.Brown@Sun.COM 
4510966SJordan.Brown@Sun.COM /*
4610966SJordan.Brown@Sun.COM  * Macintosh Extensions for CIFS
4710966SJordan.Brown@Sun.COM  */
4810966SJordan.Brown@Sun.COM #include <smbsrv/mac_cifs.h>
4910966SJordan.Brown@Sun.COM 
5010966SJordan.Brown@Sun.COM /*
5110966SJordan.Brown@Sun.COM  * NT Installable File System (IFS) interface.
5210966SJordan.Brown@Sun.COM  */
5310966SJordan.Brown@Sun.COM #include <smbsrv/ntifs.h>
5410966SJordan.Brown@Sun.COM 
5510966SJordan.Brown@Sun.COM #ifdef __cplusplus
5610966SJordan.Brown@Sun.COM extern "C" {
5710966SJordan.Brown@Sun.COM #endif
5810966SJordan.Brown@Sun.COM 
5910966SJordan.Brown@Sun.COM /*
6010966SJordan.Brown@Sun.COM  * The msgbuf format and length of an SMB header.
6110966SJordan.Brown@Sun.COM  */
6210966SJordan.Brown@Sun.COM #define	SMB_HEADER_DOS_FMT	"Mbbbwbww10.wwww"
6310966SJordan.Brown@Sun.COM #define	SMB_HEADER_NT_FMT	"Mblbww#c2.wwww"
6410966SJordan.Brown@Sun.COM #define	SMB_HEADER_LEN		32
6510966SJordan.Brown@Sun.COM #define	SMB_SIG_SIZE		8	/* SMB signature size */
6610966SJordan.Brown@Sun.COM 
6710966SJordan.Brown@Sun.COM #define	SMB_HEADER_ED_FMT	"Mbbbwbww8c2.wwww"
6810966SJordan.Brown@Sun.COM #define	SMB_HEADER_ED_LEN	(4+1+1+1+2+1+2+12+2+2+2+2)
6910966SJordan.Brown@Sun.COM #define	SMB_TRANSHDR_ED_FMT	"wwwwb.wl2.wwwwb."
7010966SJordan.Brown@Sun.COM #define	SMB_TRANSHDR_ED_LEN	(2+2+2+2+1+1+2+4+2+2+2+2+2+1+1)
7110966SJordan.Brown@Sun.COM #define	SMB_TRANSSHDR_ED_FMT	"wwwwwwwww"
7210966SJordan.Brown@Sun.COM #define	SMB_TRANSSHDR_ED_LEN	(2+2+2+2+2+2+2+2)
7310966SJordan.Brown@Sun.COM #define	SMB_TRANS2SHDR_ED_FMT	"wwwwwwwww"
7410966SJordan.Brown@Sun.COM #define	SMB_TRANS2SHDR_ED_LEN	(2+2+2+2+2+2+2+2+2)
7510966SJordan.Brown@Sun.COM /* There is something wrong with this. Should be 38 bytes. It is 37 bytes */
7610966SJordan.Brown@Sun.COM #define	SMB_NT_TRANSHDR_ED_FMT	"b2.llllllllbw"
7710966SJordan.Brown@Sun.COM #define	SMB_NT_TRANSHDR_ED_LEN	(1+2+4+4+4+4+4+4+4+4+1+2)
7810966SJordan.Brown@Sun.COM 
7910966SJordan.Brown@Sun.COM /*
8010966SJordan.Brown@Sun.COM  * CIFS definition for the SMB header (CIFS Section 3.2). Note that the
8110966SJordan.Brown@Sun.COM  * pid_high field is not documented in the 1997 CIFS specificaction. This
8210966SJordan.Brown@Sun.COM  * is a decoded or memory-based definition, which may be padded to align
8310966SJordan.Brown@Sun.COM  * its elements on word boundaries. See smb_hdrbuf_t for the network
8410966SJordan.Brown@Sun.COM  * ready structure.
8510966SJordan.Brown@Sun.COM  */
8610966SJordan.Brown@Sun.COM typedef struct smb_hdr {
8710966SJordan.Brown@Sun.COM 	uint8_t protocol[4];
8810966SJordan.Brown@Sun.COM 	uint8_t command;
8910966SJordan.Brown@Sun.COM 
9010966SJordan.Brown@Sun.COM 	union {
9110966SJordan.Brown@Sun.COM 		struct {
9210966SJordan.Brown@Sun.COM 			uint8_t error_class;
9310966SJordan.Brown@Sun.COM 			uint8_t reserved;
9410966SJordan.Brown@Sun.COM 			uint16_t error;
9510966SJordan.Brown@Sun.COM 		} dos_error;
9610966SJordan.Brown@Sun.COM 		uint32_t ntstatus;
9710966SJordan.Brown@Sun.COM 	} status;
9810966SJordan.Brown@Sun.COM 
9910966SJordan.Brown@Sun.COM 	uint8_t flags;
10010966SJordan.Brown@Sun.COM 	uint16_t flags2;
10110966SJordan.Brown@Sun.COM 	uint16_t pid_high;
10210966SJordan.Brown@Sun.COM 
10310966SJordan.Brown@Sun.COM 	union {
10410966SJordan.Brown@Sun.COM 		uint16_t pad[5];
10510966SJordan.Brown@Sun.COM 		struct {
10610966SJordan.Brown@Sun.COM 			uint16_t reserved;
10710966SJordan.Brown@Sun.COM 			uint8_t security_sig[SMB_SIG_SIZE];
10810966SJordan.Brown@Sun.COM 		} extra;
10910966SJordan.Brown@Sun.COM 	} extra;
11010966SJordan.Brown@Sun.COM 
11110966SJordan.Brown@Sun.COM 	uint16_t tid;
11210966SJordan.Brown@Sun.COM 	uint16_t pid;
11310966SJordan.Brown@Sun.COM 	uint16_t uid;
11410966SJordan.Brown@Sun.COM 	uint16_t mid;
11510966SJordan.Brown@Sun.COM } smb_hdr_t;
11610966SJordan.Brown@Sun.COM 
11710966SJordan.Brown@Sun.COM /*
11810966SJordan.Brown@Sun.COM  * Encoded or packed SMB header in network ready format.
11910966SJordan.Brown@Sun.COM  */
12010966SJordan.Brown@Sun.COM typedef struct smb_hdrbuf {
12110966SJordan.Brown@Sun.COM 	uint8_t hdr[SMB_HEADER_LEN];
12210966SJordan.Brown@Sun.COM } smb_hdrbuf_t;
12310966SJordan.Brown@Sun.COM 
12410966SJordan.Brown@Sun.COM /*
12510966SJordan.Brown@Sun.COM  * Protocol magic value as a 32-bit.  This will be 0xff 0x53 0x4d 0x42 on
12610966SJordan.Brown@Sun.COM  * the wire.
12710966SJordan.Brown@Sun.COM  */
12810966SJordan.Brown@Sun.COM 
12910966SJordan.Brown@Sun.COM #define	SMB_PROTOCOL_MAGIC	0x424d53ff
13010966SJordan.Brown@Sun.COM 
13110966SJordan.Brown@Sun.COM /*
13210966SJordan.Brown@Sun.COM  * Time and date encoding (CIFS Section 3.6). The date is encoded such
13310966SJordan.Brown@Sun.COM  * that the year has a range of 0-119, which represents 1980-2099. The
13410966SJordan.Brown@Sun.COM  * month range is 1-12, and the day range is 1-31.
13510966SJordan.Brown@Sun.COM  */
13610966SJordan.Brown@Sun.COM typedef struct smb_date {
13710966SJordan.Brown@Sun.COM 	uint16_t day   : 5;
13810966SJordan.Brown@Sun.COM 	uint16_t month : 4;
13910966SJordan.Brown@Sun.COM 	uint16_t year  : 7;
14010966SJordan.Brown@Sun.COM } smb_date_t;
14110966SJordan.Brown@Sun.COM 
14210966SJordan.Brown@Sun.COM /*
14310966SJordan.Brown@Sun.COM  * The hours range is 0-23, the minutes range is 0-59 and the two_sec
14410966SJordan.Brown@Sun.COM  * range is 0-29.
14510966SJordan.Brown@Sun.COM  */
14610966SJordan.Brown@Sun.COM typedef struct smb_time {
14710966SJordan.Brown@Sun.COM 	uint16_t two_sec : 5;
14810966SJordan.Brown@Sun.COM 	uint16_t minutes : 6;
14910966SJordan.Brown@Sun.COM 	uint16_t hours    : 5;
15010966SJordan.Brown@Sun.COM } smb_time_t;
15110966SJordan.Brown@Sun.COM 
15210966SJordan.Brown@Sun.COM /*
15310966SJordan.Brown@Sun.COM  * This is a 64-bit signed absolute time representing 100ns increments.
15410966SJordan.Brown@Sun.COM  * A positive value represents the absolute time since 1601AD. A
15510966SJordan.Brown@Sun.COM  * negative value represents a context specific relative time.
15610966SJordan.Brown@Sun.COM  */
15710966SJordan.Brown@Sun.COM typedef struct smb_time2 {
15810966SJordan.Brown@Sun.COM 	uint32_t low_time;
15910966SJordan.Brown@Sun.COM 	int32_t high_time;
16010966SJordan.Brown@Sun.COM } smb_time2_t;
16110966SJordan.Brown@Sun.COM 
16210966SJordan.Brown@Sun.COM /*
16310966SJordan.Brown@Sun.COM  * The number of seconds since Jan 1, 1970, 00:00:00.0.
16410966SJordan.Brown@Sun.COM  */
16510966SJordan.Brown@Sun.COM typedef uint32_t smb_utime_t;
16610966SJordan.Brown@Sun.COM 
16710966SJordan.Brown@Sun.COM #define	SMB_LM_NEGOTIATE_WORDCNT		13
16810966SJordan.Brown@Sun.COM #define	SMB_NT_NEGOTIATE_WORDCNT		17
16910966SJordan.Brown@Sun.COM 
17010966SJordan.Brown@Sun.COM #define	SMB_NAME83_EXTLEN			3
17110966SJordan.Brown@Sun.COM #define	SMB_NAME83_BASELEN			8
17210966SJordan.Brown@Sun.COM #define	SMB_NAME83_LEN				12
17310966SJordan.Brown@Sun.COM 
17410966SJordan.Brown@Sun.COM /* Share types */
17510966SJordan.Brown@Sun.COM #ifndef _SHARE_TYPES_DEFINED_
17610966SJordan.Brown@Sun.COM #define	_SHARE_TYPES_DEFINED_
17710966SJordan.Brown@Sun.COM #define	STYPE_DISKTREE			0x00000000
17810966SJordan.Brown@Sun.COM #define	STYPE_PRINTQ			0x00000001
17910966SJordan.Brown@Sun.COM #define	STYPE_DEVICE			0x00000002
18010966SJordan.Brown@Sun.COM #define	STYPE_IPC			0x00000003
18110966SJordan.Brown@Sun.COM #define	STYPE_MASK			0x0000000F
18210966SJordan.Brown@Sun.COM #define	STYPE_DFS			0x00000064
18310966SJordan.Brown@Sun.COM #define	STYPE_HIDDEN			0x80000000
18410966SJordan.Brown@Sun.COM #define	STYPE_SPECIAL			0x80000000
18510966SJordan.Brown@Sun.COM #endif /* _SHARE_TYPES_DEFINED_ */
18610966SJordan.Brown@Sun.COM 
18710966SJordan.Brown@Sun.COM #define	STYPE_ISDSK(S)	(((S) & STYPE_MASK) == STYPE_DISKTREE)
18810966SJordan.Brown@Sun.COM #define	STYPE_ISPRN(S)	(((S) & STYPE_MASK) == STYPE_PRINTQ)
18910966SJordan.Brown@Sun.COM #define	STYPE_ISDEV(S)	(((S) & STYPE_MASK) == STYPE_DEVICE)
19010966SJordan.Brown@Sun.COM #define	STYPE_ISIPC(S)	(((S) & STYPE_MASK) == STYPE_IPC)
19110966SJordan.Brown@Sun.COM 
19210966SJordan.Brown@Sun.COM /*
19310966SJordan.Brown@Sun.COM  * NtCreateAndX and NtTransactCreate creation flags: defined in CIFS
19410966SJordan.Brown@Sun.COM  * section 4.2.2
19510966SJordan.Brown@Sun.COM  *
19610966SJordan.Brown@Sun.COM  * Creation Flag Name         Value  Description
19710966SJordan.Brown@Sun.COM  * ========================== ====== ==================================
19810966SJordan.Brown@Sun.COM  * NT_CREATE_REQUEST_OPLOCK   0x02   Level I oplock requested
19910966SJordan.Brown@Sun.COM  * NT_CREATE_REQUEST_OPBATCH  0x04   Batch oplock requested
20010966SJordan.Brown@Sun.COM  * NT_CREATE_OPEN_TARGET_DIR  0x08   Target for open is a directory
20110966SJordan.Brown@Sun.COM  */
20210966SJordan.Brown@Sun.COM #define	NT_CREATE_FLAG_REQUEST_OPLOCK		0x02
20310966SJordan.Brown@Sun.COM #define	NT_CREATE_FLAG_REQUEST_OPBATCH		0x04
20410966SJordan.Brown@Sun.COM #define	NT_CREATE_FLAG_OPEN_TARGET_DIR		0x08
20510966SJordan.Brown@Sun.COM 
20610966SJordan.Brown@Sun.COM 
20710966SJordan.Brown@Sun.COM /*
20810966SJordan.Brown@Sun.COM  * Define the filter flags for NtNotifyChangeDirectoryFile
20910966SJordan.Brown@Sun.COM  */
21010966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_FILE_NAME	0x00000001
21110966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_DIR_NAME	0x00000002
21210966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_NAME		0x00000003
21310966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_ATTRIBUTES	0x00000004
21410966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_SIZE		0x00000008
21510966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_LAST_WRITE	0x00000010
21610966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_LAST_ACCESS	0x00000020
21710966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_CREATION	0x00000040
21810966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_EA		0x00000080
21910966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_SECURITY	0x00000100
22010966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_STREAM_NAME	0x00000200
22110966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_STREAM_SIZE	0x00000400
22210966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_CHANGE_STREAM_WRITE	0x00000800
22310966SJordan.Brown@Sun.COM #define	FILE_NOTIFY_VALID_MASK		0x00000fff
22410966SJordan.Brown@Sun.COM 
22510966SJordan.Brown@Sun.COM 
22610966SJordan.Brown@Sun.COM /*
22710966SJordan.Brown@Sun.COM  * Define the file action type codes for NtNotifyChangeDirectoryFile
22810966SJordan.Brown@Sun.COM  */
22910966SJordan.Brown@Sun.COM #define	FILE_ACTION_ADDED		0x00000001
23010966SJordan.Brown@Sun.COM #define	FILE_ACTION_REMOVED		0x00000002
23110966SJordan.Brown@Sun.COM #define	FILE_ACTION_MODIFIED		0x00000003
23210966SJordan.Brown@Sun.COM #define	FILE_ACTION_RENAMED_OLD_NAME	0x00000004
23310966SJordan.Brown@Sun.COM #define	FILE_ACTION_RENAMED_NEW_NAME	0x00000005
23410966SJordan.Brown@Sun.COM #define	FILE_ACTION_ADDED_STREAM	0x00000006
23510966SJordan.Brown@Sun.COM #define	FILE_ACTION_REMOVED_STREAM	0x00000007
23610966SJordan.Brown@Sun.COM #define	FILE_ACTION_MODIFIED_STREAM	0x00000008
23710966SJordan.Brown@Sun.COM 
23810966SJordan.Brown@Sun.COM 
23910966SJordan.Brown@Sun.COM /* Lock type flags */
24010966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_NORMAL_LOCK	0x00
24110966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_SHARED_LOCK	0x01
24210966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_OPLOCK_RELEASE	0x02
24310966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_CHANGE_LOCK_TYPE	0x04
24410966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_CANCEL_LOCK	0x08
24510966SJordan.Brown@Sun.COM #define	LOCKING_ANDX_LARGE_FILES	0x10
24610966SJordan.Brown@Sun.COM 
24710966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE_DIRECTORY	0x00
24810966SJordan.Brown@Sun.COM #define	SMB_COM_DELETE_DIRECTORY	0x01
24910966SJordan.Brown@Sun.COM #define	SMB_COM_OPEN			0x02
25010966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE			0x03
25110966SJordan.Brown@Sun.COM #define	SMB_COM_CLOSE			0x04
25210966SJordan.Brown@Sun.COM #define	SMB_COM_FLUSH			0x05
25310966SJordan.Brown@Sun.COM #define	SMB_COM_DELETE			0x06
25410966SJordan.Brown@Sun.COM #define	SMB_COM_RENAME			0x07
25510966SJordan.Brown@Sun.COM #define	SMB_COM_QUERY_INFORMATION	0x08
25610966SJordan.Brown@Sun.COM #define	SMB_COM_SET_INFORMATION		0x09
25710966SJordan.Brown@Sun.COM #define	SMB_COM_READ			0x0A
25810966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE			0x0B
25910966SJordan.Brown@Sun.COM #define	SMB_COM_LOCK_BYTE_RANGE		0x0C
26010966SJordan.Brown@Sun.COM #define	SMB_COM_UNLOCK_BYTE_RANGE	0x0D
26110966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE_TEMPORARY	0x0E
26210966SJordan.Brown@Sun.COM #define	SMB_COM_CREATE_NEW		0x0F
26310966SJordan.Brown@Sun.COM #define	SMB_COM_CHECK_DIRECTORY		0x10
26410966SJordan.Brown@Sun.COM #define	SMB_COM_PROCESS_EXIT		0x11
26510966SJordan.Brown@Sun.COM #define	SMB_COM_SEEK			0x12
26610966SJordan.Brown@Sun.COM #define	SMB_COM_LOCK_AND_READ		0x13
26710966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_AND_UNLOCK	0x14
26810966SJordan.Brown@Sun.COM 
26910966SJordan.Brown@Sun.COM #define	SMB_COM_READ_RAW		0x1A
27010966SJordan.Brown@Sun.COM #define	SMB_COM_READ_MPX		0x1B
27110966SJordan.Brown@Sun.COM #define	SMB_COM_READ_MPX_SECONDARY	0x1C
27210966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_RAW		0x1D
27310966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_MPX		0x1E
27410966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_MPX_SECONDARY	0x1F
27510966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_COMPLETE		0x20
27610966SJordan.Brown@Sun.COM 
27710966SJordan.Brown@Sun.COM #define	SMB_COM_SET_INFORMATION2	0x22
27810966SJordan.Brown@Sun.COM #define	SMB_COM_QUERY_INFORMATION2	0x23
27910966SJordan.Brown@Sun.COM #define	SMB_COM_LOCKING_ANDX		0x24
28010966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION		0x25
28110966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION_SECONDARY	0x26
28210966SJordan.Brown@Sun.COM #define	SMB_COM_IOCTL			0x27
28310966SJordan.Brown@Sun.COM #define	SMB_COM_IOCTL_SECONDARY		0x28
28410966SJordan.Brown@Sun.COM #define	SMB_COM_COPY			0x29
28510966SJordan.Brown@Sun.COM #define	SMB_COM_MOVE			0x2A
28610966SJordan.Brown@Sun.COM #define	SMB_COM_ECHO			0x2B
28710966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_AND_CLOSE		0x2C
28810966SJordan.Brown@Sun.COM #define	SMB_COM_OPEN_ANDX		0x2D
28910966SJordan.Brown@Sun.COM #define	SMB_COM_READ_ANDX		0x2E
29010966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_ANDX		0x2F
29110966SJordan.Brown@Sun.COM 
29210966SJordan.Brown@Sun.COM #define	SMB_COM_CLOSE_AND_TREE_DISC	0x31
29310966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION2		0x32
29410966SJordan.Brown@Sun.COM #define	SMB_COM_TRANSACTION2_SECONDARY	0x33
29510966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_CLOSE2		0x34
29610966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_NOTIFY_CLOSE	0x35
29710966SJordan.Brown@Sun.COM 
29810966SJordan.Brown@Sun.COM #define	SMB_COM_TREE_CONNECT		0x70
29910966SJordan.Brown@Sun.COM #define	SMB_COM_TREE_DISCONNECT		0x71
30010966SJordan.Brown@Sun.COM #define	SMB_COM_NEGOTIATE		0x72
30110966SJordan.Brown@Sun.COM #define	SMB_COM_SESSION_SETUP_ANDX	0x73
30210966SJordan.Brown@Sun.COM #define	SMB_COM_LOGOFF_ANDX		0x74
30310966SJordan.Brown@Sun.COM #define	SMB_COM_TREE_CONNECT_ANDX	0x75
30410966SJordan.Brown@Sun.COM 
30510966SJordan.Brown@Sun.COM #define	SMB_COM_QUERY_INFORMATION_DISK	0x80
30610966SJordan.Brown@Sun.COM #define	SMB_COM_SEARCH			0x81
30710966SJordan.Brown@Sun.COM #define	SMB_COM_FIND			0x82
30810966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_UNIQUE		0x83
30910966SJordan.Brown@Sun.COM #define	SMB_COM_FIND_CLOSE		0x84
31010966SJordan.Brown@Sun.COM 
31110966SJordan.Brown@Sun.COM #define	SMB_COM_NT_TRANSACT		0xA0
31210966SJordan.Brown@Sun.COM #define	SMB_COM_NT_TRANSACT_SECONDARY	0xA1
31310966SJordan.Brown@Sun.COM #define	SMB_COM_NT_CREATE_ANDX		0xA2
31410966SJordan.Brown@Sun.COM #define	SMB_COM_NT_CANCEL		0xA4
31510966SJordan.Brown@Sun.COM 
31610966SJordan.Brown@Sun.COM #define	SMB_COM_OPEN_PRINT_FILE		0xC0
31710966SJordan.Brown@Sun.COM #define	SMB_COM_WRITE_PRINT_FILE	0xC1
31810966SJordan.Brown@Sun.COM #define	SMB_COM_CLOSE_PRINT_FILE	0xC2
31910966SJordan.Brown@Sun.COM #define	SMB_COM_GET_PRINT_QUEUE		0xC3
32010966SJordan.Brown@Sun.COM 
32112508Samw@Sun.COM #define	SMB_COM_NUM			0x100
32210966SJordan.Brown@Sun.COM 
32310966SJordan.Brown@Sun.COM /*
32410966SJordan.Brown@Sun.COM  * Flags field of the SMB header. The names in parenthesis represent
32510966SJordan.Brown@Sun.COM  * alternative names for the flags.
32610966SJordan.Brown@Sun.COM  *
32710966SJordan.Brown@Sun.COM  * SMB_FLAGS_LOCK_AND_READ_OK     If the server supports LockAndRead and
32810966SJordan.Brown@Sun.COM  * (SMB_FLAGS_LOCKS_SUBDIALECT)   WriteAndUnlock, it sets this bit in the
32910966SJordan.Brown@Sun.COM  *                                Negotiate response.
33010966SJordan.Brown@Sun.COM  *
33110966SJordan.Brown@Sun.COM  * SMB_FLAGS_SEND_NO_ACK          When on, the client guarantees that there
33210966SJordan.Brown@Sun.COM  * (SMB_FLAGS_RCV_BUF_POSTED)     is a receive buffer posted such that a
33310966SJordan.Brown@Sun.COM  *                                "Send-No-Ack" can be used by the server
33410966SJordan.Brown@Sun.COM  *                                to respond to the client's request.
33510966SJordan.Brown@Sun.COM  *
33610966SJordan.Brown@Sun.COM  * SMB_FLAGS_CASE_INSENSITIVE     This is part of the Flags field of every
33710966SJordan.Brown@Sun.COM  *                                SMB header. If this bit is set, then all
33810966SJordan.Brown@Sun.COM  *                                pathnames in the SMB should be treated as
33910966SJordan.Brown@Sun.COM  *                                case-insensitive. Otherwise pathnames are
34010966SJordan.Brown@Sun.COM  *                                case-sensitive.
34110966SJordan.Brown@Sun.COM  *
34210966SJordan.Brown@Sun.COM  * SMB_FLAGS_CANONICALIZED_PATHS  When on in SessionSetupX, this indicates
34310966SJordan.Brown@Sun.COM  *                                that all paths sent to the server are
34410966SJordan.Brown@Sun.COM  *                                already in OS/2 canonicalized format.
34510966SJordan.Brown@Sun.COM  *
34610966SJordan.Brown@Sun.COM  * OS/2 canonical format means that file/directory names are in upper case,
34710966SJordan.Brown@Sun.COM  * are valid characters, . and .. have been removed and single backslashes
34810966SJordan.Brown@Sun.COM  * are used as separators.
34910966SJordan.Brown@Sun.COM  *
35010966SJordan.Brown@Sun.COM  * SMB_FLAGS_OPLOCK               When set in an open file request SMBs
35110966SJordan.Brown@Sun.COM  *                                (Open, Create, OpenX, etc.) this bit
35210966SJordan.Brown@Sun.COM  *                                indicates a request for an oplock on the
35310966SJordan.Brown@Sun.COM  *                                file. When set in the response, this bit
35410966SJordan.Brown@Sun.COM  *                                indicates that the oplock was granted.
35510966SJordan.Brown@Sun.COM  *
35610966SJordan.Brown@Sun.COM  * SMB_FLAGS_OPLOCK_NOTIFY_ANY    When on, this bit indicates that the server
35710966SJordan.Brown@Sun.COM  *                                should notify the client on any request
35810966SJordan.Brown@Sun.COM  *                                that could cause the file to be changed.
35910966SJordan.Brown@Sun.COM  *                                If not set, the server only notifies the
36010966SJordan.Brown@Sun.COM  *                                client on other open requests on the file.
36110966SJordan.Brown@Sun.COM  *                                This bit is only relevant when
36210966SJordan.Brown@Sun.COM  *                                SMB_FLAGS_OPLOCK is set.
36310966SJordan.Brown@Sun.COM  *
36410966SJordan.Brown@Sun.COM  * SMB_FLAGS_SERVER_TO_REDIR      This bit indicates that the SMB is being
36510966SJordan.Brown@Sun.COM  * (SMB_FLAGS_REPLY)              sent from server to (client) redirector.
36610966SJordan.Brown@Sun.COM  */
36710966SJordan.Brown@Sun.COM #define	SMB_FLAGS_LOCK_AND_READ_OK	0x01
36810966SJordan.Brown@Sun.COM #define	SMB_FLAGS_SEND_NO_ACK		0x02
36910966SJordan.Brown@Sun.COM #define	SMB_FLAGS_RESERVED		0x04
37010966SJordan.Brown@Sun.COM #define	SMB_FLAGS_CASE_INSENSITIVE	0x08
37110966SJordan.Brown@Sun.COM #define	SMB_FLAGS_CANONICALIZED_PATHS	0x10
37210966SJordan.Brown@Sun.COM #define	SMB_FLAGS_OPLOCK		0x20
37310966SJordan.Brown@Sun.COM #define	SMB_FLAGS_OPLOCK_NOTIFY_ANY	0x40
37410966SJordan.Brown@Sun.COM #define	SMB_FLAGS_REPLY			0x80
37510966SJordan.Brown@Sun.COM 
37610966SJordan.Brown@Sun.COM 
37710966SJordan.Brown@Sun.COM /*
37810966SJordan.Brown@Sun.COM  * Flags2 field of the SMB header.
37911963SAfshin.Ardakani@Sun.COM  *
38011963SAfshin.Ardakani@Sun.COM  * SMB_FLAGS2_READ_IF_EXECUTE is also known as SMB_FLAGS2_PAGING_IO
38110966SJordan.Brown@Sun.COM  */
38210966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_KNOWS_LONG_NAMES		0x0001
38310966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_KNOWS_EAS			0x0002
38410966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_SMB_SECURITY_SIGNATURE	0x0004
38510966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_IS_LONG_NAME			0x0040
38610966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_REPARSE_PATH			0x0400
38710966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_EXT_SEC			0x0800
38810966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_DFS				0x1000
38911963SAfshin.Ardakani@Sun.COM #define	SMB_FLAGS2_READ_IF_EXECUTE		0x2000
39010966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_NT_STATUS			0x4000
39110966SJordan.Brown@Sun.COM #define	SMB_FLAGS2_UNICODE			0x8000
39210966SJordan.Brown@Sun.COM 
39310966SJordan.Brown@Sun.COM #define	DIALECT_UNKNOWN		 0
39410966SJordan.Brown@Sun.COM #define	PC_NETWORK_PROGRAM_1_0	 1  /* The original MSNET SMB protocol */
39510966SJordan.Brown@Sun.COM #define	PCLAN1_0		 2  /* Some versions of the original MSNET */
39610966SJordan.Brown@Sun.COM #define	MICROSOFT_NETWORKS_1_03	 3  /* This is used for the MS-NET 1.03 */
39710966SJordan.Brown@Sun.COM #define	MICROSOFT_NETWORKS_3_0	 4  /* This is the  DOS LANMAN 1.0 specific */
39810966SJordan.Brown@Sun.COM #define	LANMAN1_0		 5  /* This is the first version of the full */
39910966SJordan.Brown@Sun.COM #define	LM1_2X002		 6  /* This is the first version of the full */
40010966SJordan.Brown@Sun.COM #define	DOS_LM1_2X002		 7  /* This is the dos equivalent of the */
40110966SJordan.Brown@Sun.COM #define	DOS_LANMAN2_1		 8  /* DOS LANMAN2.1 */
40210966SJordan.Brown@Sun.COM #define	LANMAN2_1		 9  /* OS/2 LANMAN2.1 */
40310966SJordan.Brown@Sun.COM #define	Windows_for_Workgroups_3_1a 10 /* Windows for Workgroups Version 1.0 */
40410966SJordan.Brown@Sun.COM #define	NT_LM_0_12		11  /* The SMB protocol designed for NT */
40510966SJordan.Brown@Sun.COM 
40610966SJordan.Brown@Sun.COM /*
40710966SJordan.Brown@Sun.COM  * SMB_TREE_CONNECT_ANDX OptionalSupport flags
40810966SJordan.Brown@Sun.COM  *
40910966SJordan.Brown@Sun.COM  * SMB_SUPPORT_SEARCH_BITS    The server supports SearchAttributes.
41010966SJordan.Brown@Sun.COM  * SMB_SHARE_IS_IN_DFS        The share is managed by DFS.
41110966SJordan.Brown@Sun.COM  * SMB_CSC_MASK               Offline-caching mask - see CSC values.
41210966SJordan.Brown@Sun.COM  * SMB_UNIQUE_FILE_NAME       The server uses long names and does not support
41310966SJordan.Brown@Sun.COM  *                            short names.  This indicates to clients that
41410966SJordan.Brown@Sun.COM  *                            they may perform directory name-space caching.
41510966SJordan.Brown@Sun.COM  * SMB_EXTENDED_SIGNATURES    The server will use signing key protection.
41610966SJordan.Brown@Sun.COM  *
41710966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_MANUAL_REINT Clients are allowed to cache files for offline
41810966SJordan.Brown@Sun.COM  *                            use as requested by users but automatic
41910966SJordan.Brown@Sun.COM  *                            file-by-file reintegration is not allowed.
42010966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_AUTO_REINT   Clients are allowed to automatically cache
42110966SJordan.Brown@Sun.COM  *                            files for offline use and file-by-file
42210966SJordan.Brown@Sun.COM  *                            reintegration is allowed.
42310966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_VDO          Clients are allowed to automatically cache files
42410966SJordan.Brown@Sun.COM  *                            for offline use, file-by-file reintegration is
42510966SJordan.Brown@Sun.COM  *                            allowed and clients are permitted to work from
42610966SJordan.Brown@Sun.COM  *                            their local cache even while offline.
42710966SJordan.Brown@Sun.COM  * SMB_CSC_CACHE_NONE         Client-side caching is disabled for this share.
42810966SJordan.Brown@Sun.COM  *
42910966SJordan.Brown@Sun.COM  * SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM
43010966SJordan.Brown@Sun.COM  *			      The server will filter directory entries based
43110966SJordan.Brown@Sun.COM  *			      on the access permissions of the client.
43210966SJordan.Brown@Sun.COM  */
43310966SJordan.Brown@Sun.COM #define	SMB_SUPPORT_SEARCH_BITS		0x0001
43410966SJordan.Brown@Sun.COM #define	SMB_SHARE_IS_IN_DFS		0x0002
43510966SJordan.Brown@Sun.COM #define	SMB_CSC_MASK			0x000C
43610966SJordan.Brown@Sun.COM #define	SMB_UNIQUE_FILE_NAME		0x0010
43710966SJordan.Brown@Sun.COM #define	SMB_EXTENDED_SIGNATURES		0x0020
43810966SJordan.Brown@Sun.COM 
43910966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_MANUAL_REINT	0x0000
44010966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_AUTO_REINT	0x0004
44110966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_VDO		0x0008
44210966SJordan.Brown@Sun.COM #define	SMB_CSC_CACHE_NONE		0x000C
44310966SJordan.Brown@Sun.COM 
44410966SJordan.Brown@Sun.COM #define	SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM	0x0800
445*12890SJoyce.McIntosh@Sun.COM #define	SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING		0x0400
44610966SJordan.Brown@Sun.COM 
44710966SJordan.Brown@Sun.COM /*
44810966SJordan.Brown@Sun.COM  * The subcommand codes, placed in SETUP[0], for named pipe operations are:
44910966SJordan.Brown@Sun.COM  * SubCommand Code	Value Description
45010966SJordan.Brown@Sun.COM  * ===================	===== =========================================
45110966SJordan.Brown@Sun.COM  */
45210966SJordan.Brown@Sun.COM 
45310966SJordan.Brown@Sun.COM #define	CallNamedPipe	0x54	/* open/write/read/close pipe */
45410966SJordan.Brown@Sun.COM #define	WaitNamedPipe	0x53	/* wait for pipe to be nonbusy */
45510966SJordan.Brown@Sun.COM #define	PeekNmPipe	0x23	/* read but don't remove data */
45610966SJordan.Brown@Sun.COM #define	QNmPHandState	0x21	/* query pipe handle modes */
45710966SJordan.Brown@Sun.COM #define	SetNmPHandState	0x01	/* set pipe handle modes */
45810966SJordan.Brown@Sun.COM #define	QNmPipeInfo	0x22	/* query pipe attributes */
45910966SJordan.Brown@Sun.COM #define	TransactNmPipe	0x26	/* write/read operation on pipe */
46010966SJordan.Brown@Sun.COM #define	RawReadNmPipe	0x11	/* read pipe in "raw" (non message mode) */
46110966SJordan.Brown@Sun.COM #define	RawWriteNmPipe	0x31	/* write pipe "raw" (non message mode) */
46210966SJordan.Brown@Sun.COM 
46310966SJordan.Brown@Sun.COM 
46410966SJordan.Brown@Sun.COM 
46510966SJordan.Brown@Sun.COM /*
46610966SJordan.Brown@Sun.COM  * Setup[0] Transaction2       Value  Description
46710966SJordan.Brown@Sun.COM  * Subcommand Code
46810966SJordan.Brown@Sun.COM  * ==========================  =====  =============================
46910966SJordan.Brown@Sun.COM  */
47010966SJordan.Brown@Sun.COM 
47110966SJordan.Brown@Sun.COM #define	TRANS2_OPEN2		0x00	/* Create file, extended attributes */
47210966SJordan.Brown@Sun.COM #define	TRANS2_FIND_FIRST2	0x01	/* Begin search for files */
47310966SJordan.Brown@Sun.COM #define	TRANS2_FIND_NEXT2	0x02	/* Resume search for files */
47410966SJordan.Brown@Sun.COM #define	TRANS2_QUERY_FS_INFORMATION 0x03 /* Get file system information */
47511963SAfshin.Ardakani@Sun.COM #define	TRANS2_SET_FS_INFORMATION	0x04	/* Set file system info. */
47610966SJordan.Brown@Sun.COM #define	TRANS2_QUERY_PATH_INFORMATION 0x05 /* Get info, named file or dir */
47710966SJordan.Brown@Sun.COM #define	TRANS2_SET_PATH_INFORMATION 0x06 /* Set info, named file or dir */
47810966SJordan.Brown@Sun.COM #define	TRANS2_QUERY_FILE_INFORMATION 0x07 /* Get info, handle */
47910966SJordan.Brown@Sun.COM #define	TRANS2_SET_FILE_INFORMATION 0x08 /* Set info, handle */
48010966SJordan.Brown@Sun.COM #define	TRANS2_FSCTL		0x09	/* Not implemented by NT server */
48110966SJordan.Brown@Sun.COM #define	TRANS2_IOCTL2		0x0A	/* Not implemented by NT server */
48210966SJordan.Brown@Sun.COM #define	TRANS2_FIND_NOTIFY_FIRST 0x0B	/* Not implemented by NT server */
48310966SJordan.Brown@Sun.COM #define	TRANS2_FIND_NOTIFY_NEXT 0x0C	/* Not implemented by NT server */
48410966SJordan.Brown@Sun.COM #define	TRANS2_CREATE_DIRECTORY 0x0D	/* Create dir, extended attributes */
48510966SJordan.Brown@Sun.COM #define	TRANS2_SESSION_SETUP	0x0E	/* Session setup, extended security */
48610966SJordan.Brown@Sun.COM #define	TRANS2_GET_DFS_REFERRAL	0x10	/* Get a Dfs referral */
48710966SJordan.Brown@Sun.COM #define	TRANS2_REPORT_DFS_INCONSISTENCY 0x11 /* Report a Dfs inconsistency */
48810966SJordan.Brown@Sun.COM 
48910966SJordan.Brown@Sun.COM /*
49010966SJordan.Brown@Sun.COM  * Access Mode Encoding (CIFS/1.0 1996 Section 3.8).
49110966SJordan.Brown@Sun.COM  *
49210966SJordan.Brown@Sun.COM  * The desired access mode passed in SmbOpen and SmbOpenAndX has the following
49310966SJordan.Brown@Sun.COM  * mapping:
49410966SJordan.Brown@Sun.COM  *
49510966SJordan.Brown@Sun.COM  *    1111 11
49610966SJordan.Brown@Sun.COM  *    5432 1098 7654 3210
49710966SJordan.Brown@Sun.COM  *    rWrC rLLL rSSS rAAA
49810966SJordan.Brown@Sun.COM  *
49910966SJordan.Brown@Sun.COM  * where:
50010966SJordan.Brown@Sun.COM  *
50110966SJordan.Brown@Sun.COM  *    W - Write through mode.  No read ahead or write behind allowed on
50210966SJordan.Brown@Sun.COM  *        this file or device.  When protocol is returned, data is expected
50310966SJordan.Brown@Sun.COM  *        to be on the disk or device.
50410966SJordan.Brown@Sun.COM  *
50510966SJordan.Brown@Sun.COM  *    S - Sharing mode:
50610966SJordan.Brown@Sun.COM  *        0 - Compatibility mode (as in core open)
50710966SJordan.Brown@Sun.COM  *        1 - Deny read/write/execute (exclusive)
50810966SJordan.Brown@Sun.COM  *        2 - Deny write
50910966SJordan.Brown@Sun.COM  *        3 - Deny read/execute
51010966SJordan.Brown@Sun.COM  *        4 - Deny none
51110966SJordan.Brown@Sun.COM  *
51210966SJordan.Brown@Sun.COM  *    A - Access mode
51310966SJordan.Brown@Sun.COM  *        0 - Open for reading
51410966SJordan.Brown@Sun.COM  *        1 - Open for writing
51510966SJordan.Brown@Sun.COM  *        2 - Open for reading and writing
51610966SJordan.Brown@Sun.COM  *        3 - Open for execute
51710966SJordan.Brown@Sun.COM  *
51810966SJordan.Brown@Sun.COM  *    rSSSrAAA = 11111111 (hex FF) indicates FCB open (as in core protocol)
51910966SJordan.Brown@Sun.COM  *
52010966SJordan.Brown@Sun.COM  *    C - Cache mode
52110966SJordan.Brown@Sun.COM  *        0 - Normal file
52210966SJordan.Brown@Sun.COM  *        1 - Do not cache this file
52310966SJordan.Brown@Sun.COM  *
52410966SJordan.Brown@Sun.COM  *    L - Locality of reference
52510966SJordan.Brown@Sun.COM  *        0 - Locality of reference is unknown
52610966SJordan.Brown@Sun.COM  *        1 - Mainly sequential access
52710966SJordan.Brown@Sun.COM  *        2 - Mainly random access
52810966SJordan.Brown@Sun.COM  *        3 - Random access with some locality
52910966SJordan.Brown@Sun.COM  *        4 to 7 - Currently undefined
53010966SJordan.Brown@Sun.COM  */
53110966SJordan.Brown@Sun.COM 
53210966SJordan.Brown@Sun.COM 
53310966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_MASK		0x70
53410966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_MASK		0x07
53510966SJordan.Brown@Sun.COM #define	SMB_DA_FCB_MASK			(UCHAR)0xFF
53610966SJordan.Brown@Sun.COM 
53710966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_READ		0x00
53810966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_WRITE		0x01
53910966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_READ_WRITE	0x02
54010966SJordan.Brown@Sun.COM #define	SMB_DA_ACCESS_EXECUTE		0x03
54110966SJordan.Brown@Sun.COM 
54210966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_COMPATIBILITY	0x00
54310966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_EXCLUSIVE		0x10
54410966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_DENY_WRITE		0x20
54510966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_DENY_READ		0x30
54610966SJordan.Brown@Sun.COM #define	SMB_DA_SHARE_DENY_NONE		0x40
54710966SJordan.Brown@Sun.COM 
54810966SJordan.Brown@Sun.COM #define	SMB_DA_FCB			(UCHAR)0xFF
54910966SJordan.Brown@Sun.COM 
55010966SJordan.Brown@Sun.COM #define	SMB_CACHE_NORMAL		0x0000
55110966SJordan.Brown@Sun.COM #define	SMB_DO_NOT_CACHE		0x1000
55210966SJordan.Brown@Sun.COM 
55310966SJordan.Brown@Sun.COM #define	SMB_LR_UNKNOWN			0x0000
55410966SJordan.Brown@Sun.COM #define	SMB_LR_SEQUENTIAL		0x0100
55510966SJordan.Brown@Sun.COM #define	SMB_LR_RANDOM			0x0200
55610966SJordan.Brown@Sun.COM #define	SMB_LR_RANDOM_WITH_LOCALITY	0x0300
55710966SJordan.Brown@Sun.COM #define	SMB_LR_MASK			0x0F00
55810966SJordan.Brown@Sun.COM 
55910966SJordan.Brown@Sun.COM #define	SMB_DA_WRITE_THROUGH		0x4000
56010966SJordan.Brown@Sun.COM 
56110966SJordan.Brown@Sun.COM /*
56210966SJordan.Brown@Sun.COM  * Macros used for share reservation rule checking
56310966SJordan.Brown@Sun.COM  */
56410966SJordan.Brown@Sun.COM 
56510966SJordan.Brown@Sun.COM #define	SMB_DENY_READ(share_access) ((share_access & FILE_SHARE_READ) == 0)
56610966SJordan.Brown@Sun.COM 
56710966SJordan.Brown@Sun.COM #define	SMB_DENY_WRITE(share_access) ((share_access & FILE_SHARE_WRITE) == 0)
56810966SJordan.Brown@Sun.COM 
56910966SJordan.Brown@Sun.COM #define	SMB_DENY_DELETE(share_access) ((share_access & FILE_SHARE_DELETE) == 0)
57010966SJordan.Brown@Sun.COM 
57110966SJordan.Brown@Sun.COM #define	SMB_DENY_RW(share_access) \
57210966SJordan.Brown@Sun.COM 	((share_access & (FILE_SHARE_READ | FILE_SHARE_WRITE)) == 0)
57310966SJordan.Brown@Sun.COM 
57410966SJordan.Brown@Sun.COM #define	SMB_DENY_ALL(share_access) (share_access == 0)
57510966SJordan.Brown@Sun.COM 
57610966SJordan.Brown@Sun.COM #define	SMB_DENY_NONE(share_access) (share_access == FILE_SHARE_ALL)
57710966SJordan.Brown@Sun.COM 
57810966SJordan.Brown@Sun.COM /*
57910966SJordan.Brown@Sun.COM  * The SMB open function determines what action should be taken depending
58010966SJordan.Brown@Sun.COM  * on the existence or lack thereof of files used in the operation.  It
58110966SJordan.Brown@Sun.COM  * has the following mapping:
58210966SJordan.Brown@Sun.COM  *
58310966SJordan.Brown@Sun.COM  *    1111 1
58410966SJordan.Brown@Sun.COM  *    5432 1098 7654 3210
58510966SJordan.Brown@Sun.COM  *    rrrr rrrr rrrC rrOO
58610966SJordan.Brown@Sun.COM  *
58710966SJordan.Brown@Sun.COM  * where:
58810966SJordan.Brown@Sun.COM  *
58910966SJordan.Brown@Sun.COM  *    O - Open (action to be taken if the target file exists)
59010966SJordan.Brown@Sun.COM  *        0 - Fail
59110966SJordan.Brown@Sun.COM  *        1 - Open or Append file
59210966SJordan.Brown@Sun.COM  *        2 - Truncate file
59310966SJordan.Brown@Sun.COM  *
59410966SJordan.Brown@Sun.COM  *    C - Create (action to be taken if the target file does not exist)
59510966SJordan.Brown@Sun.COM  *        0 - Fail
59610966SJordan.Brown@Sun.COM  *        1 - Create file
59710966SJordan.Brown@Sun.COM  */
59810966SJordan.Brown@Sun.COM 
59910966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_MASK		0x3
60010966SJordan.Brown@Sun.COM #define	SMB_OFUN_CREATE_MASK		0x10
60110966SJordan.Brown@Sun.COM 
60210966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_FAIL		0
60310966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_APPEND		1
60410966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_OPEN		1
60510966SJordan.Brown@Sun.COM #define	SMB_OFUN_OPEN_TRUNCATE		2
60610966SJordan.Brown@Sun.COM 
60710966SJordan.Brown@Sun.COM #define	SMB_OFUN_CREATE_FAIL		0x00
60810966SJordan.Brown@Sun.COM #define	SMB_OFUN_CREATE_CREATE		0x10
60910966SJordan.Brown@Sun.COM 
61010966SJordan.Brown@Sun.COM /*
61110966SJordan.Brown@Sun.COM  * The Action field of OpenAndX has the following format:
61210966SJordan.Brown@Sun.COM  *
61310966SJordan.Brown@Sun.COM  *    1111 11
61410966SJordan.Brown@Sun.COM  *    5432 1098 7654 3210
61510966SJordan.Brown@Sun.COM  *    Lrrr rrrr rrrr rrOO
61610966SJordan.Brown@Sun.COM  *
61710966SJordan.Brown@Sun.COM  * where:
61810966SJordan.Brown@Sun.COM  *
61910966SJordan.Brown@Sun.COM  *    L - Opportunistic lock.  1 if lock granted, else 0.
62010966SJordan.Brown@Sun.COM  *
62110966SJordan.Brown@Sun.COM  *    O - Open action:
62210966SJordan.Brown@Sun.COM  *        1 - The file existed and was opened
62310966SJordan.Brown@Sun.COM  *        2 - The file did not exist but was created
62410966SJordan.Brown@Sun.COM  *        3 - The file existed and was truncated
62510966SJordan.Brown@Sun.COM  */
62610966SJordan.Brown@Sun.COM 
62710966SJordan.Brown@Sun.COM #define	SMB_OACT_LOCK			0x8000
62810966SJordan.Brown@Sun.COM #define	SMB_OACT_OPENED			0x01
62910966SJordan.Brown@Sun.COM #define	SMB_OACT_CREATED		0x02
63010966SJordan.Brown@Sun.COM #define	SMB_OACT_TRUNCATED		0x03
63110966SJordan.Brown@Sun.COM 
63210966SJordan.Brown@Sun.COM #define	SMB_OACT_OPLOCK			0x8000
63310966SJordan.Brown@Sun.COM 
63410966SJordan.Brown@Sun.COM #define	SMB_FTYPE_DISK			0
63510966SJordan.Brown@Sun.COM #define	SMB_FTYPE_BYTE_PIPE		1
63610966SJordan.Brown@Sun.COM #define	SMB_FTYPE_MESG_PIPE		2
63710966SJordan.Brown@Sun.COM #define	SMB_FTYPE_PRINTER		3
63810966SJordan.Brown@Sun.COM #define	SMB_FTYPE_UNKNOWN		0xFFFF
63910966SJordan.Brown@Sun.COM 
64010966SJordan.Brown@Sun.COM #define	SMB_DEVST_BLOCKING		0x8000
64110966SJordan.Brown@Sun.COM #define	SMB_DEVST_ENDPOINT		0x4000
64210966SJordan.Brown@Sun.COM #define	SMB_DEVST_TYPE_MASK		0x0C00
64310966SJordan.Brown@Sun.COM #define	SMB_DEVST_TYPE_BYTE_PIPE	0x0000
64410966SJordan.Brown@Sun.COM #define	SMB_DEVST_TYPE_MESG_PIPE	0x0400
64510966SJordan.Brown@Sun.COM #define	SMB_DEVST_RMODE_MASK		0x0300
64610966SJordan.Brown@Sun.COM #define	SMB_DEVST_RMODE_BYTES		0x0000
64710966SJordan.Brown@Sun.COM #define	SMB_DEVST_RMODE_MESGS		0x0100
64810966SJordan.Brown@Sun.COM #define	SMB_DEVST_ICOUNT_MASK		0x00FF		/* not used */
64910966SJordan.Brown@Sun.COM 
65010966SJordan.Brown@Sun.COM #define	SMB_FTYPE_IS_DISK(F)		((F) == SMB_FTYPE_DISK)
65110966SJordan.Brown@Sun.COM #define	SMB_FTYPE_IS_PIPE(F) \
65210966SJordan.Brown@Sun.COM 	(((F) == SMB_FTYPE_BYTE_PIPE) || ((F) == SMB_FTYPE_MESG_PIPE))
65310966SJordan.Brown@Sun.COM #define	SMB_FTYPE_IS_PRINTER(F)		((F) == SMB_FTYPE_PRINTER)
65410966SJordan.Brown@Sun.COM 
65510966SJordan.Brown@Sun.COM /*
65610966SJordan.Brown@Sun.COM  * TRANS2_FIND
65710966SJordan.Brown@Sun.COM  */
65810966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_DIRECTORY_INFO		0x101
65910966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_FULL_DIRECTORY_INFO	0x102
66010966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_NAMES_INFO		0x103
66110966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_BOTH_DIRECTORY_INFO	0x104
66210966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_ID_FULL_DIRECTORY_INFO	0x105
66310966SJordan.Brown@Sun.COM #define	SMB_FIND_FILE_ID_BOTH_DIRECTORY_INFO	0x106
66410966SJordan.Brown@Sun.COM #define	SMB_MAC_FIND_BOTH_HFS_INFO		MAC_FIND_BOTH_HFS_INFO
66510966SJordan.Brown@Sun.COM 
66610966SJordan.Brown@Sun.COM 
66710966SJordan.Brown@Sun.COM /*
66810966SJordan.Brown@Sun.COM  * Flags for TRANS2_FIND_FIRST2 and TRANS2_FIND_NEXT2 (NTDDK).
66910966SJordan.Brown@Sun.COM  *
67010966SJordan.Brown@Sun.COM  * If SMB_FIND_RETURN_RESUME_KEYS was set in the request parameters,
67110966SJordan.Brown@Sun.COM  * each entry is preceded by a four-byte resume key.
67210966SJordan.Brown@Sun.COM  */
67310966SJordan.Brown@Sun.COM #define	SMB_FIND_CLOSE_AFTER_REQUEST	0x01
67410966SJordan.Brown@Sun.COM #define	SMB_FIND_CLOSE_AT_EOS		0x02
67510966SJordan.Brown@Sun.COM #define	SMB_FIND_RETURN_RESUME_KEYS	0x04
67610966SJordan.Brown@Sun.COM #define	SMB_FIND_CONTINUE_FROM_LAST	0x08
67710966SJordan.Brown@Sun.COM #define	SMB_FIND_WITH_BACKUP_INTENT	0x10
67810966SJordan.Brown@Sun.COM 
67910966SJordan.Brown@Sun.COM 
68010966SJordan.Brown@Sun.COM /*
68110966SJordan.Brown@Sun.COM  * TRANS2_QUERY_FS_INFORMATION
68211963SAfshin.Ardakani@Sun.COM  *
68311963SAfshin.Ardakani@Sun.COM  * SMB_QUERY_FS_QUOTA_INFO, SMB_QUERY_FS_CONTROL_INFO are not used in Windows
68411963SAfshin.Ardakani@Sun.COM  * NT, and are not used in any post NT Windows operating systems. If a server
68511963SAfshin.Ardakani@Sun.COM  * receives these information levels from a client, it should handle them as
68611963SAfshin.Ardakani@Sun.COM  * invalid information levels.
68710966SJordan.Brown@Sun.COM  */
68810966SJordan.Brown@Sun.COM #define	SMB_INFO_ALLOCATION		1
68910966SJordan.Brown@Sun.COM #define	SMB_INFO_VOLUME			2
69010966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_LABEL_INFO		0x101
69110966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_VOLUME_INFO	0x102
69210966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_SIZE_INFO		0x103
69310966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_DEVICE_INFO	0x104
69410966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_ATTRIBUTE_INFO	0x105
69511963SAfshin.Ardakani@Sun.COM #define	SMB_QUERY_FS_QUOTA_INFO		0x106
69610966SJordan.Brown@Sun.COM #define	SMB_QUERY_FS_CONTROL_INFO	0x107
69711963SAfshin.Ardakani@Sun.COM 
69810966SJordan.Brown@Sun.COM #define	SMB_MAC_QUERY_FS_INFO		MAC_QUERY_FS_INFO
69910966SJordan.Brown@Sun.COM 
70010966SJordan.Brown@Sun.COM /*
70110966SJordan.Brown@Sun.COM  * Internal use only.
70210966SJordan.Brown@Sun.COM  * Define information levels to represent the following requests:
70310966SJordan.Brown@Sun.COM  *    smb_query_information
70410966SJordan.Brown@Sun.COM  *    smb_query_information2
70510966SJordan.Brown@Sun.COM  *    smb_set_information
70610966SJordan.Brown@Sun.COM  *    smb_set_information2
70710966SJordan.Brown@Sun.COM  */
70810966SJordan.Brown@Sun.COM #define	SMB_QUERY_INFORMATION	0x3001
70910966SJordan.Brown@Sun.COM #define	SMB_QUERY_INFORMATION2	0x3002
71010966SJordan.Brown@Sun.COM #define	SMB_SET_INFORMATION	0x3001
71110966SJordan.Brown@Sun.COM #define	SMB_SET_INFORMATION2	0x3002
71210966SJordan.Brown@Sun.COM 
71310966SJordan.Brown@Sun.COM /* TRANS2_QUERY_{PATH,FILE}_INFORMATION */
71410966SJordan.Brown@Sun.COM #define	SMB_INFO_STANDARD		 1	/* query, set */
71510966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_EA_SIZE		 2	/* query */
71610966SJordan.Brown@Sun.COM #define	SMB_INFO_SET_EAS		 2	/* set */
71710966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_EAS_FROM_LIST	 3	/* query */
71810966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_ALL_EAS		 4	/* query */
71910966SJordan.Brown@Sun.COM #define	SMB_INFO_QUERY_FULL_NAME	 5	/* unused */
72010966SJordan.Brown@Sun.COM #define	SMB_INFO_IS_NAME_VALID		 6	/* query */
72110966SJordan.Brown@Sun.COM 
72210966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_BASIC_INFO	 0x101
72310966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_STANDARD_INFO	 0x102
72410966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_EA_INFO		 0x103
72510966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_NAME_INFO	 0x104
72610966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_ALLOCATION_INFO	 0x105	/* unused */
72710966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_END_OF_FILE_INFO	 0x106	/* unused */
72810966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_ALL_INFO		 0x107
72910966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_ALT_NAME_INFO	 0x108
73010966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_STREAM_INFO	 0x109
73110966SJordan.Brown@Sun.COM #define	SMB_QUERY_FILE_COMPRESSION_INFO	 0x10B
73210966SJordan.Brown@Sun.COM 
73310966SJordan.Brown@Sun.COM #define	SMB_MAC_SET_FINDER_INFO		MAC_SET_FINDER_INFO
73410966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_ADD_APPL		MAC_DT_ADD_APPL
73510966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_REMOVE_APPL		MAC_DT_REMOVE_APPL
73610966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_GET_APPL		MAC_DT_GET_APPL
73710966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_GET_ICON		MAC_DT_GET_ICON
73810966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_GET_ICON_INFO	MAC_DT_GET_ICON_INFO
73910966SJordan.Brown@Sun.COM #define	SMB_MAC_DT_ADD_ICON		MAC_DT_ADD_ICON
74010966SJordan.Brown@Sun.COM 
74110966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_BASIC_INFO		0x101
74210966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_DISPOSITION_INFO	0x102
74310966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_ALLOCATION_INFO	0x103
74410966SJordan.Brown@Sun.COM #define	SMB_SET_FILE_END_OF_FILE_INFO	0x104
74510966SJordan.Brown@Sun.COM 
74610966SJordan.Brown@Sun.COM 
74710966SJordan.Brown@Sun.COM /* NT passthrough levels - see ntifs.h FILE_INFORMATION_CLASS */
74810966SJordan.Brown@Sun.COM #define	SMB_FILE_BASIC_INFORMATION		1004
74910966SJordan.Brown@Sun.COM #define	SMB_FILE_STANDARD_INFORMATION		1005
75010966SJordan.Brown@Sun.COM #define	SMB_FILE_INTERNAL_INFORMATION		1006
75110966SJordan.Brown@Sun.COM #define	SMB_FILE_EA_INFORMATION			1007
75210966SJordan.Brown@Sun.COM #define	SMB_FILE_ACCESS_INFORMATION		1008
75310966SJordan.Brown@Sun.COM #define	SMB_FILE_NAME_INFORMATION		1009
75410966SJordan.Brown@Sun.COM #define	SMB_FILE_RENAME_INFORMATION		1010
75510966SJordan.Brown@Sun.COM #define	SMB_FILE_LINK_INFORMATION		1011
75610966SJordan.Brown@Sun.COM #define	SMB_FILE_DISPOSITION_INFORMATION	1013
75710966SJordan.Brown@Sun.COM #define	SMB_FILE_ALL_INFORMATION		1018
75810966SJordan.Brown@Sun.COM #define	SMB_FILE_ALLOCATION_INFORMATION		1019
75910966SJordan.Brown@Sun.COM #define	SMB_FILE_END_OF_FILE_INFORMATION	1020
76010966SJordan.Brown@Sun.COM #define	SMB_FILE_ALT_NAME_INFORMATION		1021
76110966SJordan.Brown@Sun.COM #define	SMB_FILE_STREAM_INFORMATION		1022
76210966SJordan.Brown@Sun.COM #define	SMB_FILE_COMPRESSION_INFORMATION	1028
76311963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_NETWORK_OPEN_INFORMATION	1034
76410966SJordan.Brown@Sun.COM #define	SMB_FILE_ATTR_TAG_INFORMATION		1035
76510966SJordan.Brown@Sun.COM 
76611963SAfshin.Ardakani@Sun.COM /* NT passthrough levels - see ntifs.h FILE_FS_INFORMATION_CLASS */
76711963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_VOLUME_INFORMATION		1001
76811963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_LABEL_INFORMATION		1002
76911963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_SIZE_INFORMATION		1003
77011963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_DEVICE_INFORMATION		1004
77111963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_ATTRIBUTE_INFORMATION	1005
77211963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_CONTROL_INFORMATION		1006
77311963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_FULLSIZE_INFORMATION	1007
77411963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_OBJECTID_INFORMATION	1008
77511963SAfshin.Ardakani@Sun.COM #define	SMB_FILE_FS_DRIVERPATH_INFORMATION	1009
77611963SAfshin.Ardakani@Sun.COM 
77710966SJordan.Brown@Sun.COM /*
77810966SJordan.Brown@Sun.COM  * The following bits may be set in the SecurityMode field of the
77910966SJordan.Brown@Sun.COM  * SMB_COM_NEGOTIATE response.
78010966SJordan.Brown@Sun.COM  *
78110966SJordan.Brown@Sun.COM  * Notes:
78210966SJordan.Brown@Sun.COM  * NEGOTIATE_SECURITY_SHARE_LEVEL is a montana2 invention.
78310966SJordan.Brown@Sun.COM  *
78410966SJordan.Brown@Sun.COM  * The NTDDK definitions are:
78510966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_USER_SECURITY			    0x01
78610966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_ENCRYPT_PASSWORDS		    0x02
78710966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_SECURITY_SIGNATURES_ENABLED	    0x04
78810966SJordan.Brown@Sun.COM  * #define	NEGOTIATE_SECURITY_SIGNATURES_REQUIRED	    0x08
78910966SJordan.Brown@Sun.COM  */
79010966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_SHARE_LEVEL		    0x00
79110966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_USER_LEVEL		    0x01
79210966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_CHALLENGE_RESPONSE	    0x02
79310966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_SIGNATURES_ENABLED	    0x04
79410966SJordan.Brown@Sun.COM #define	NEGOTIATE_SECURITY_SIGNATURES_REQUIRED	    0x08
79510966SJordan.Brown@Sun.COM 
79610966SJordan.Brown@Sun.COM 
79710966SJordan.Brown@Sun.COM /*
79810966SJordan.Brown@Sun.COM  * Negotiated Capabilities (CIFS/1.0 section 4.1.1)
79910966SJordan.Brown@Sun.COM  *
80010966SJordan.Brown@Sun.COM  * Capabilities allow the server to tell the client what it supports.
80110966SJordan.Brown@Sun.COM  * Undefined bits MUST be set to zero by servers, and MUST be ignored
80210966SJordan.Brown@Sun.COM  * by clients. The bit definitions are:
80310966SJordan.Brown@Sun.COM  *
80410966SJordan.Brown@Sun.COM  * Capability Name	 Encoding   Meaning
80510966SJordan.Brown@Sun.COM  * ====================	 ========   ==================================
80610966SJordan.Brown@Sun.COM  * CAP_RAW_MODE		 0x0001	    The server supports SMB_COM_READ_RAW and
80710966SJordan.Brown@Sun.COM  *				    SMB_COM_WRITE_RAW (obsolescent)
80810966SJordan.Brown@Sun.COM  * CAP_MPX_MODE		 0x0002	    The server supports SMB_COM_READ_MPX and
80910966SJordan.Brown@Sun.COM  *				    SMB_COM_WRITE_MPX (obsolescent)
81010966SJordan.Brown@Sun.COM  * CAP_UNICODE		 0x0004	    The server supports Unicode strings
81110966SJordan.Brown@Sun.COM  * CAP_LARGE_FILES	 0x0008	    The server supports large files with 64
81210966SJordan.Brown@Sun.COM  *				    bit offsets
81310966SJordan.Brown@Sun.COM  * CAP_NT_SMBS		 0x0010	    The server supports the SMBs particular
81410966SJordan.Brown@Sun.COM  *				    to the NT LM 0.12 dialect.
81510966SJordan.Brown@Sun.COM  *				    Implies CAP_NT_FIND.
81610966SJordan.Brown@Sun.COM  * CAP_RPC_REMOTE_APIS	 0x0020	    The server supports remote admin API
81710966SJordan.Brown@Sun.COM  *				    requests via DCE RPC
81810966SJordan.Brown@Sun.COM  * CAP_STATUS32		 0x0040	    The server can respond with 32 bit
81910966SJordan.Brown@Sun.COM  *				    status codes in Status.Status
82010966SJordan.Brown@Sun.COM  * CAP_LEVEL_II_OPLOCKS	 0x0080	    The server supports level 2 oplocks
82110966SJordan.Brown@Sun.COM  * CAP_LOCK_AND_READ	 0x0100	    The server supports the
82210966SJordan.Brown@Sun.COM  *				    SMB_COM_LOCK_AND_READ SMB
82310966SJordan.Brown@Sun.COM  * CAP_NT_FIND		 0x0200
82410966SJordan.Brown@Sun.COM  * CAP_BULK_TRANSFER	 0x0400
82510966SJordan.Brown@Sun.COM  * CAP_COMPRESSED_BULK	 0x0800
82610966SJordan.Brown@Sun.COM  * CAP_DFS		 0x1000	    The server is DFS aware
82711963SAfshin.Ardakani@Sun.COM  * CAP_INFOLEVEL_PASSTHRU 0x2000    The server supports passthru information
82811963SAfshin.Ardakani@Sun.COM  *				    level processing capability.
82910966SJordan.Brown@Sun.COM  * CAP_LARGE_READX	 0x4000	    The server supports large
83010966SJordan.Brown@Sun.COM  *				    SMB_COM_READ_ANDX
83110966SJordan.Brown@Sun.COM  * CAP_LARGE_WRITEX	 0x8000	    The server supports large
83210966SJordan.Brown@Sun.COM  *				    SMB_COM_WRITE_ANDX
83310966SJordan.Brown@Sun.COM  * CAP_RESERVED		 0x02000000 Reserved for future use.
83410966SJordan.Brown@Sun.COM  * CAP_EXTENDED_SECURITY 0x80000000 The server supports extended security
83510966SJordan.Brown@Sun.COM  *				    exchanges.
83610966SJordan.Brown@Sun.COM  *
83710966SJordan.Brown@Sun.COM  * Extended security exchanges provides a means of supporting arbitrary
83810966SJordan.Brown@Sun.COM  * authentication protocols within CIFS. Security blobs are opaque to the
83910966SJordan.Brown@Sun.COM  * CIFS protocol; they are messages in some authentication protocol that
84010966SJordan.Brown@Sun.COM  * has been agreed upon by client and server by some out of band mechanism,
84110966SJordan.Brown@Sun.COM  * for which CIFS merely functions as a transport. When
84210966SJordan.Brown@Sun.COM  * CAP_EXTENDED_SECURITY is negotiated, the server includes a first
84310966SJordan.Brown@Sun.COM  * security blob in its response; subsequent security blobs are exchanged
84410966SJordan.Brown@Sun.COM  * in SMB_COM_SESSION_SETUP_ANDX requests and responses until the
84510966SJordan.Brown@Sun.COM  * authentication protocol terminates.
84610966SJordan.Brown@Sun.COM  */
84710966SJordan.Brown@Sun.COM #define	CAP_RAW_MODE			0x0001
84810966SJordan.Brown@Sun.COM #define	CAP_MPX_MODE			0x0002
84911963SAfshin.Ardakani@Sun.COM #define	CAP_UNICODE			0x0004
85010966SJordan.Brown@Sun.COM #define	CAP_LARGE_FILES			0x0008
85111963SAfshin.Ardakani@Sun.COM #define	CAP_NT_SMBS			0x0010
85210966SJordan.Brown@Sun.COM #define	CAP_RPC_REMOTE_APIS		0x0020
85310966SJordan.Brown@Sun.COM #define	CAP_STATUS32			0x0040
85411963SAfshin.Ardakani@Sun.COM #define	CAP_LEVEL_II_OPLOCKS		0x0080
85510966SJordan.Brown@Sun.COM #define	CAP_LOCK_AND_READ		0x0100
85611963SAfshin.Ardakani@Sun.COM #define	CAP_NT_FIND			0x0200
85710966SJordan.Brown@Sun.COM #define	CAP_BULK_TRANSFER		0x0400
85810966SJordan.Brown@Sun.COM #define	CAP_COMPRESSED_BULK		0x0800
85911963SAfshin.Ardakani@Sun.COM #define	CAP_DFS				0x1000
86011963SAfshin.Ardakani@Sun.COM #define	CAP_INFOLEVEL_PASSTHRU		0x2000
86110966SJordan.Brown@Sun.COM #define	CAP_LARGE_READX			0x4000
86210966SJordan.Brown@Sun.COM #define	CAP_LARGE_WRITEX		0x8000
86310966SJordan.Brown@Sun.COM #define	CAP_RESERVED			0x02000000
86411963SAfshin.Ardakani@Sun.COM #define	CAP_EXTENDED_SECURITY		0x80000000
86510966SJordan.Brown@Sun.COM 
86610966SJordan.Brown@Sun.COM 
86710966SJordan.Brown@Sun.COM /*
86810966SJordan.Brown@Sun.COM  * Different device types according to NT
86910966SJordan.Brown@Sun.COM  */
87010966SJordan.Brown@Sun.COM #define	FILE_DEVICE_BEEP		0x00000001
87110966SJordan.Brown@Sun.COM #define	FILE_DEVICE_CD_ROM		0x00000002
87210966SJordan.Brown@Sun.COM #define	FILE_DEVICE_CD_ROM_FILE_SYSTEM	0x00000003
87310966SJordan.Brown@Sun.COM #define	FILE_DEVICE_CONTROLLER		0x00000004
87410966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DATALINK		0x00000005
87510966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DFS			0x00000006
87610966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DISK		0x00000007
87710966SJordan.Brown@Sun.COM #define	FILE_DEVICE_DISK_FILE_SYSTEM	0x00000008
87810966SJordan.Brown@Sun.COM #define	FILE_DEVICE_FILE_SYSTEM		0x00000009
87910966SJordan.Brown@Sun.COM #define	FILE_DEVICE_INPORT_PORT		0x0000000a
88010966SJordan.Brown@Sun.COM #define	FILE_DEVICE_KEYBOARD		0x0000000b
88110966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MAILSLOT		0x0000000c
88210966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MIDI_IN		0x0000000d
88310966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MIDI_OUT		0x0000000e
88410966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MOUSE		0x0000000f
88510966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MULTI_UNC_PROVIDER	0x00000010
88610966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NAMED_PIPE		0x00000011
88710966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK		0x00000012
88810966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK_BROWSER	0x00000013
88910966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
89010966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NULL		0x00000015
89110966SJordan.Brown@Sun.COM #define	FILE_DEVICE_PARALLEL_PORT	0x00000016
89210966SJordan.Brown@Sun.COM #define	FILE_DEVICE_PHYSICAL_NETCARD	0x00000017
89310966SJordan.Brown@Sun.COM #define	FILE_DEVICE_PRINTER		0x00000018
89410966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SCANNER		0x00000019
89510966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SERIAL_MOUSE_PORT	0x0000001a
89610966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SERIAL_PORT		0x0000001b
89710966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SCREEN		0x0000001c
89810966SJordan.Brown@Sun.COM #define	FILE_DEVICE_SOUND		0x0000001d
89910966SJordan.Brown@Sun.COM #define	FILE_DEVICE_STREAMS		0x0000001e
90010966SJordan.Brown@Sun.COM #define	FILE_DEVICE_TAPE		0x0000001f
90110966SJordan.Brown@Sun.COM #define	FILE_DEVICE_TAPE_FILE_SYSTEM	0x00000020
90210966SJordan.Brown@Sun.COM #define	FILE_DEVICE_TRANSPORT		0x00000021
90310966SJordan.Brown@Sun.COM #define	FILE_DEVICE_UNKNOWN		0x00000022
90410966SJordan.Brown@Sun.COM #define	FILE_DEVICE_VIDEO		0x00000023
90510966SJordan.Brown@Sun.COM #define	FILE_DEVICE_VIRTUAL_DISK	0x00000024
90610966SJordan.Brown@Sun.COM #define	FILE_DEVICE_WAVE_IN		0x00000025
90710966SJordan.Brown@Sun.COM #define	FILE_DEVICE_WAVE_OUT		0x00000026
90810966SJordan.Brown@Sun.COM #define	FILE_DEVICE_8042_PORT		0x00000027
90910966SJordan.Brown@Sun.COM #define	FILE_DEVICE_NETWORK_REDIRECTOR	0x00000028
91010966SJordan.Brown@Sun.COM #define	FILE_DEVICE_BATTERY		0x00000029
91110966SJordan.Brown@Sun.COM #define	FILE_DEVICE_BUS_EXTENDER	0x0000002a
91210966SJordan.Brown@Sun.COM #define	FILE_DEVICE_MODEM		0x0000002b
91310966SJordan.Brown@Sun.COM #define	FILE_DEVICE_VDM			0x0000002c
91410966SJordan.Brown@Sun.COM 
91510966SJordan.Brown@Sun.COM /*
91610966SJordan.Brown@Sun.COM  * Some of these device types are not currently accessible over the network
91710966SJordan.Brown@Sun.COM  * and may never be accessible over the network. Some may change to be
91810966SJordan.Brown@Sun.COM  *
91910966SJordan.Brown@Sun.COM  * accessible over the network. The values for device types that may never
92010966SJordan.Brown@Sun.COM  * be accessible over the network may be redefined to be just reserved at
92110966SJordan.Brown@Sun.COM  * some date in the future.
92210966SJordan.Brown@Sun.COM  *
92310966SJordan.Brown@Sun.COM  * Characteristics is the sum of any of the following:
92410966SJordan.Brown@Sun.COM  */
92510966SJordan.Brown@Sun.COM 
92610966SJordan.Brown@Sun.COM #define	FILE_REMOVABLE_MEDIA		0x00000001
92710966SJordan.Brown@Sun.COM #define	FILE_READ_ONLY_DEVICE		0x00000002
92810966SJordan.Brown@Sun.COM #define	FILE_FLOPPY_DISKETTE		0x00000004
92910966SJordan.Brown@Sun.COM #define	FILE_WRITE_ONE_MEDIA		0x00000008
93010966SJordan.Brown@Sun.COM #define	FILE_REMOTE_DEVICE		0x00000010
93110966SJordan.Brown@Sun.COM #define	FILE_DEVICE_IS_MOUNTED		0x00000020
93210966SJordan.Brown@Sun.COM #define	FILE_VIRTUAL_VOLUME		0x00000040
93310966SJordan.Brown@Sun.COM 
93410966SJordan.Brown@Sun.COM /*
93510966SJordan.Brown@Sun.COM  * CREATE_ANDX ShareAccess Flags
93610966SJordan.Brown@Sun.COM  */
93710966SJordan.Brown@Sun.COM 
93810966SJordan.Brown@Sun.COM #define	FILE_SHARE_NONE			0x00000000
93910966SJordan.Brown@Sun.COM #define	FILE_SHARE_READ			0x00000001
94010966SJordan.Brown@Sun.COM #define	FILE_SHARE_WRITE		0x00000002
94110966SJordan.Brown@Sun.COM #define	FILE_SHARE_DELETE		0x00000004
94210966SJordan.Brown@Sun.COM #define	FILE_SHARE_ALL			0x00000007
94310966SJordan.Brown@Sun.COM #define	FILE_SHARE_VALID_FLAGS		0x00000007
94410966SJordan.Brown@Sun.COM 
94510966SJordan.Brown@Sun.COM 
94610966SJordan.Brown@Sun.COM /*
94710966SJordan.Brown@Sun.COM  * CREATE_ANDX CreateDisposition flags
94810966SJordan.Brown@Sun.COM  *
94910966SJordan.Brown@Sun.COM  * FILE_SUPERSEDE     If the file already exists it should be superseded
95010966SJordan.Brown@Sun.COM  *		      by the specified file. If the file does not already
95110966SJordan.Brown@Sun.COM  *		      exist then it should be created.
95210966SJordan.Brown@Sun.COM  *
95310966SJordan.Brown@Sun.COM  * FILE_CREATE	      If the file already exists the operation should fail.
95410966SJordan.Brown@Sun.COM  *		      If the file does not already exist then it should be
95510966SJordan.Brown@Sun.COM  *		      created. (aka CREATE_NEW)
95610966SJordan.Brown@Sun.COM  *
95710966SJordan.Brown@Sun.COM  * FILE_OPEN	      If the file already exists then it should be opened.
95810966SJordan.Brown@Sun.COM  *		      If the file does not already exist then the operation
95910966SJordan.Brown@Sun.COM  *		      should fail. (aka OPEN_EXISTING)
96010966SJordan.Brown@Sun.COM  *
96110966SJordan.Brown@Sun.COM  * FILE_OPEN_IF	      If the file already exists then it should be opened.
96210966SJordan.Brown@Sun.COM  *		      If the file does not already exist then it should be
96310966SJordan.Brown@Sun.COM  *		      created. (aka OPEN_ALWAYS)
96410966SJordan.Brown@Sun.COM  *
96510966SJordan.Brown@Sun.COM  * FILE_OVERWRITE     If the file already exists, it should be opened and
96610966SJordan.Brown@Sun.COM  *		      overwritten. If the file does not already exist then
96710966SJordan.Brown@Sun.COM  *		      the operation should fail. (aka TRUNCATE_EXISTING)
96810966SJordan.Brown@Sun.COM  *
96910966SJordan.Brown@Sun.COM  * FILE_OVERWRITE_IF  If the file already exists, it should be opened and
97010966SJordan.Brown@Sun.COM  *		      overwritten. If the file does not already exist then
97110966SJordan.Brown@Sun.COM  *		      it should be created. (aka CREATE_ALWAYS)
97210966SJordan.Brown@Sun.COM  */
97310966SJordan.Brown@Sun.COM #define	FILE_SUPERSEDE			0x00000000
97410966SJordan.Brown@Sun.COM #define	FILE_OPEN			0x00000001
97510966SJordan.Brown@Sun.COM #define	FILE_CREATE			0x00000002
97610966SJordan.Brown@Sun.COM #define	FILE_OPEN_IF			0x00000003
97710966SJordan.Brown@Sun.COM #define	FILE_OVERWRITE			0x00000004
97810966SJordan.Brown@Sun.COM #define	FILE_OVERWRITE_IF		0x00000005
97910966SJordan.Brown@Sun.COM #define	FILE_MAXIMUM_DISPOSITION	0x00000005
98010966SJordan.Brown@Sun.COM 
98110966SJordan.Brown@Sun.COM /*
98210966SJordan.Brown@Sun.COM  * CREATE_ANDX Impersonation levels
98310966SJordan.Brown@Sun.COM  */
98410966SJordan.Brown@Sun.COM 
98510966SJordan.Brown@Sun.COM #define	SECURITY_ANONYMOUS	0x00000001
98610966SJordan.Brown@Sun.COM #define	SECURITY_IDENTIFICATION	0x00000002
98710966SJordan.Brown@Sun.COM #define	SECURITY_IMPERSONATION	0x00000003
98810966SJordan.Brown@Sun.COM #define	SECURITY_DELEGATION	0x00000004
98910966SJordan.Brown@Sun.COM 
99010966SJordan.Brown@Sun.COM /*
99110966SJordan.Brown@Sun.COM  * CREATE_ANDX SecurityFlags
99210966SJordan.Brown@Sun.COM  */
99310966SJordan.Brown@Sun.COM 
99410966SJordan.Brown@Sun.COM #define	SECURITY_CONTEXT_TRACKING	0x00000001
99510966SJordan.Brown@Sun.COM #define	SECURITY_EFFECTIVE_ONLY		0x00000002
99610966SJordan.Brown@Sun.COM 
99710966SJordan.Brown@Sun.COM /*
99810966SJordan.Brown@Sun.COM  * Server types
99910966SJordan.Brown@Sun.COM  */
100010966SJordan.Brown@Sun.COM #define	SV_WORKSTATION		0x00000001	/* All workstations */
100110966SJordan.Brown@Sun.COM #define	SV_SERVER		0x00000002	/* All servers */
100210966SJordan.Brown@Sun.COM #define	SV_SQLSERVER		0x00000004	/* running with SQL server */
100310966SJordan.Brown@Sun.COM #define	SV_DOMAIN_CTRL		0x00000008	/* Primary domain controller */
100410966SJordan.Brown@Sun.COM #define	SV_DOMAIN_BAKCTRL	0x00000010	/* Backup domain controller */
100510966SJordan.Brown@Sun.COM #define	SV_TIME_SOURCE		0x00000020	/* running timesource service */
100610966SJordan.Brown@Sun.COM #define	SV_AFP			0x00000040	/* Apple File Protocol */
100710966SJordan.Brown@Sun.COM #define	SV_NOVELL		0x00000080	/* Novell servers */
100810966SJordan.Brown@Sun.COM #define	SV_DOMAIN_MEMBER	0x00000100	/* Domain Member */
100910966SJordan.Brown@Sun.COM #define	SV_PRINTQ_SERVER	0x00000200	/* Server sharing print queue */
101010966SJordan.Brown@Sun.COM #define	SV_DIALIN_SERVER	0x00000400	/* Server running dialin */
101110966SJordan.Brown@Sun.COM #define	SV_XENIX_SERVER		0x00000800	/* Xenix server */
101210966SJordan.Brown@Sun.COM #define	SV_NT			0x00001000	/* NT server */
101310966SJordan.Brown@Sun.COM #define	SV_WFW			0x00002000	/* Server running Windows for */
101410966SJordan.Brown@Sun.COM #define	SV_SERVER_NT		0x00008000	/* Windows NT non DC server */
101510966SJordan.Brown@Sun.COM #define	SV_POTENTIAL_BROWSER	0x00010000	/* can run browser service */
101610966SJordan.Brown@Sun.COM #define	SV_BACKUP_BROWSER	0x00020000	/* Backup browser server */
101710966SJordan.Brown@Sun.COM #define	SV_MASTER_BROWSER	0x00040000	/* Master browser server */
101810966SJordan.Brown@Sun.COM #define	SV_DOMAIN_MASTER	0x00080000	/* Domain Master Browser */
101910966SJordan.Brown@Sun.COM #define	SV_OSF			0x00100000	/* OSF operating system */
102010966SJordan.Brown@Sun.COM #define	SV_VMS			0x00200000	/* VMS operating system */
102110966SJordan.Brown@Sun.COM #define	SV_WINDOWS_95_PLUS	0x00400000	/* Windows 95 or better */
102210966SJordan.Brown@Sun.COM 
102310966SJordan.Brown@Sun.COM #define	SV_LOCAL_LIST_ONLY	0x40000000	/* Enumerate only "local" */
102410966SJordan.Brown@Sun.COM #define	SV_TYPE_DOMAIN_ENUM	0x80000000	/*  Enumerate Domains */
102510966SJordan.Brown@Sun.COM 
102610966SJordan.Brown@Sun.COM #define	MY_SERVER_TYPE	(SV_SERVER | SV_NT | SV_SERVER_NT)
102710966SJordan.Brown@Sun.COM 
102810966SJordan.Brown@Sun.COM 
102910966SJordan.Brown@Sun.COM #define	PRQ_ACTIVE	0	/* Active */
103010966SJordan.Brown@Sun.COM #define	PRQ_PAUSE	1	/* Paused */
103110966SJordan.Brown@Sun.COM #define	PRQ_ERROR	2	/* Error Occurred */
103210966SJordan.Brown@Sun.COM #define	PRQ_PENDING	3	/* Deletion pending */
103310966SJordan.Brown@Sun.COM 
103410966SJordan.Brown@Sun.COM #define	PRJ_QS_QUEUED	0	/* Active */
103510966SJordan.Brown@Sun.COM #define	PRJ_QS_PAUSED	1	/* Paused */
103610966SJordan.Brown@Sun.COM #define	PRJ_QS_SPOOLING	2	/* Paused */
103710966SJordan.Brown@Sun.COM #define	PRJ_QS_PRINTING	3	/* Paused */
103810966SJordan.Brown@Sun.COM 
103910966SJordan.Brown@Sun.COM 
104010966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_READ	0x01	/* read & execute from resource	*/
104110966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_WRITE	0x02	/* write data to resource	*/
104210966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_CREATE	0x04	/* create an instance of	*/
104310966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_EXEC	0x08	/* execute from resource	*/
104410966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_DELETE	0x10	/* Permission to delete the resource */
104510966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_ATTRIB	0x20	/* Permission to modify the resource */
104610966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_PERM	0x40	/* Permission to change permissions */
104710966SJordan.Brown@Sun.COM #define	SHARE_ACCESS_ALL	0x7F	/* All of the above permissions	*/
104810966SJordan.Brown@Sun.COM 
104910966SJordan.Brown@Sun.COM 
105010966SJordan.Brown@Sun.COM /*
105110966SJordan.Brown@Sun.COM  * SMB_COM_NT_TRANSACTION sub-command codes (CIFS/1.0 section 5.3)
105210966SJordan.Brown@Sun.COM  *
105310966SJordan.Brown@Sun.COM  * SubCommand Code		   Value Description
105410966SJordan.Brown@Sun.COM  * =============================== ===== =================================
105510966SJordan.Brown@Sun.COM  * NT_TRANSACT_CREATE		   1	 File open/create
105610966SJordan.Brown@Sun.COM  * NT_TRANSACT_IOCTL		   2	 Device IOCTL
105710966SJordan.Brown@Sun.COM  * NT_TRANSACT_SET_SECURITY_DESC   3	 Set security descriptor
105810966SJordan.Brown@Sun.COM  * NT_TRANSACT_NOTIFY_CHANGE	   4	 Start directory watch
105910966SJordan.Brown@Sun.COM  * NT_TRANSACT_RENAME		   5	 Reserved (handle-based rename)
106010966SJordan.Brown@Sun.COM  * NT_TRANSACT_QUERY_SECURITY_DESC 6	 Retrieve security descriptor
106110966SJordan.Brown@Sun.COM  * NT_TRANSACT_QUERY_QUOTA	   7	 Retrieve quota information
106210966SJordan.Brown@Sun.COM  * NT_TRANSACT_SET_QUOTA	   8	 Set quota information
106310966SJordan.Brown@Sun.COM  */
106410966SJordan.Brown@Sun.COM #define	NT_TRANSACT_MIN_FUNCTION	1
106510966SJordan.Brown@Sun.COM 
106610966SJordan.Brown@Sun.COM #define	NT_TRANSACT_CREATE		1
106710966SJordan.Brown@Sun.COM #define	NT_TRANSACT_IOCTL		2
106810966SJordan.Brown@Sun.COM #define	NT_TRANSACT_SET_SECURITY_DESC	3
106910966SJordan.Brown@Sun.COM #define	NT_TRANSACT_NOTIFY_CHANGE	4
107010966SJordan.Brown@Sun.COM #define	NT_TRANSACT_RENAME		5
107110966SJordan.Brown@Sun.COM #define	NT_TRANSACT_QUERY_SECURITY_DESC 6
107210966SJordan.Brown@Sun.COM #define	NT_TRANSACT_QUERY_QUOTA		7
107310966SJordan.Brown@Sun.COM #define	NT_TRANSACT_SET_QUOTA		8
107410966SJordan.Brown@Sun.COM 
107510966SJordan.Brown@Sun.COM #define	NT_TRANSACT_MAX_FUNCTION	8
107610966SJordan.Brown@Sun.COM 
107710966SJordan.Brown@Sun.COM 
107810966SJordan.Brown@Sun.COM /*
107910966SJordan.Brown@Sun.COM  * Pipe states
108010966SJordan.Brown@Sun.COM  */
108110966SJordan.Brown@Sun.COM #define	SMB_PIPE_READMODE_BYTE		0x0000
108210966SJordan.Brown@Sun.COM #define	SMB_PIPE_READMODE_MESSAGE	0x0100
108310966SJordan.Brown@Sun.COM #define	SMB_PIPE_TYPE_BYTE		0x0000
108410966SJordan.Brown@Sun.COM #define	SMB_PIPE_TYPE_MESSAGE		0x0400
108510966SJordan.Brown@Sun.COM #define	SMB_PIPE_END_CLIENT		0x0000
108610966SJordan.Brown@Sun.COM #define	SMB_PIPE_END_SERVER		0x4000
108710966SJordan.Brown@Sun.COM #define	SMB_PIPE_WAIT			0x0000
108810966SJordan.Brown@Sun.COM #define	SMB_PIPE_NOWAIT			0x8000
108910966SJordan.Brown@Sun.COM #define	SMB_PIPE_UNLIMITED_INSTANCES	0x00FF
109010966SJordan.Brown@Sun.COM 
109110966SJordan.Brown@Sun.COM /*
109210966SJordan.Brown@Sun.COM  * smb_com_seek request
109310966SJordan.Brown@Sun.COM  */
109410966SJordan.Brown@Sun.COM #define	SMB_SEEK_SET	0 /* set file offset to specified offset */
109510966SJordan.Brown@Sun.COM #define	SMB_SEEK_CUR	1 /* set file offset to current plus specified offset */
109610966SJordan.Brown@Sun.COM #define	SMB_SEEK_END	2 /* set file offset to EOF plus specified offset */
109710966SJordan.Brown@Sun.COM 
109810966SJordan.Brown@Sun.COM /*
109910966SJordan.Brown@Sun.COM  * API Numbers for Transact based RAP (Remote Administration Protocol) calls
110010966SJordan.Brown@Sun.COM  */
110110966SJordan.Brown@Sun.COM #define	API_WshareEnum			0
110210966SJordan.Brown@Sun.COM #define	API_WshareGetInfo		1
110310966SJordan.Brown@Sun.COM #define	API_WshareSetInfo		2
110410966SJordan.Brown@Sun.COM #define	API_WshareAdd			3
110510966SJordan.Brown@Sun.COM #define	API_WshareDel			4
110610966SJordan.Brown@Sun.COM #define	API_NetShareCheck		5
110710966SJordan.Brown@Sun.COM #define	API_WsessionEnum		6
110810966SJordan.Brown@Sun.COM #define	API_WsessionGetInfo		7
110910966SJordan.Brown@Sun.COM #define	API_WsessionDel			8
111010966SJordan.Brown@Sun.COM #define	API_WconnectionEnum		9
111110966SJordan.Brown@Sun.COM #define	API_WfileEnum			10
111210966SJordan.Brown@Sun.COM #define	API_WfileGetInfo		11
111310966SJordan.Brown@Sun.COM #define	API_WfileClose			12
111410966SJordan.Brown@Sun.COM #define	API_WserverGetInfo		13
111510966SJordan.Brown@Sun.COM #define	API_WserverSetInfo		14
111610966SJordan.Brown@Sun.COM #define	API_WserverDiskEnum		15
111710966SJordan.Brown@Sun.COM #define	API_WserverAdminCommand		16
111810966SJordan.Brown@Sun.COM #define	API_NetAuditOpen		17
111910966SJordan.Brown@Sun.COM #define	API_WauditClear			18
112010966SJordan.Brown@Sun.COM #define	API_NetErrorLogOpen		19
112110966SJordan.Brown@Sun.COM #define	API_WerrorLogClear		20
112210966SJordan.Brown@Sun.COM #define	API_NetCharDevEnum		21
112310966SJordan.Brown@Sun.COM #define	API_NetCharDevGetInfo		22
112410966SJordan.Brown@Sun.COM #define	API_WCharDevControl		23
112510966SJordan.Brown@Sun.COM #define	API_NetCharDevQEnum		24
112610966SJordan.Brown@Sun.COM #define	API_NetCharDevQGetInfo		25
112710966SJordan.Brown@Sun.COM #define	API_WCharDevQSetInfo		26
112810966SJordan.Brown@Sun.COM #define	API_WCharDevQPurge		27
112910966SJordan.Brown@Sun.COM #define	API_WCharDevQPurgeSelf		28
113010966SJordan.Brown@Sun.COM #define	API_WMessageNameEnum		29
113110966SJordan.Brown@Sun.COM #define	API_WMessageNameGetInfo		30
113210966SJordan.Brown@Sun.COM #define	API_WMessageNameAdd		31
113310966SJordan.Brown@Sun.COM #define	API_WMessageNameDel		32
113410966SJordan.Brown@Sun.COM #define	API_WMessageNameFwd		33
113510966SJordan.Brown@Sun.COM #define	API_WMessageNameUnFwd		34
113610966SJordan.Brown@Sun.COM #define	API_WMessageBufferSend		35
113710966SJordan.Brown@Sun.COM #define	API_WMessageFileSend		36
113810966SJordan.Brown@Sun.COM #define	API_WMessageLogFileSet		37
113910966SJordan.Brown@Sun.COM #define	API_WMessageLogFileGet		38
114010966SJordan.Brown@Sun.COM #define	API_WServiceEnum		39
114110966SJordan.Brown@Sun.COM #define	API_WServiceInstall		40
114210966SJordan.Brown@Sun.COM #define	API_WServiceControl		41
114310966SJordan.Brown@Sun.COM #define	API_WAccessEnum			42
114410966SJordan.Brown@Sun.COM #define	API_WAccessGetInfo		43
114510966SJordan.Brown@Sun.COM #define	API_WAccessSetInfo		44
114610966SJordan.Brown@Sun.COM #define	API_WAccessAdd			45
114710966SJordan.Brown@Sun.COM #define	API_WAccessDel			46
114810966SJordan.Brown@Sun.COM #define	API_WGroupEnum			47
114910966SJordan.Brown@Sun.COM #define	API_WGroupAdd			48
115010966SJordan.Brown@Sun.COM #define	API_WGroupDel			49
115110966SJordan.Brown@Sun.COM #define	API_WGroupAddUser		50
115210966SJordan.Brown@Sun.COM #define	API_WGroupDelUser		51
115310966SJordan.Brown@Sun.COM #define	API_WGroupGetUsers		52
115410966SJordan.Brown@Sun.COM #define	API_WUserEnum			53
115510966SJordan.Brown@Sun.COM #define	API_WUserAdd			54
115610966SJordan.Brown@Sun.COM #define	API_WUserDel			55
115710966SJordan.Brown@Sun.COM #define	API_WUserGetInfo		56
115810966SJordan.Brown@Sun.COM #define	API_WUserSetInfo		57
115910966SJordan.Brown@Sun.COM #define	API_WUserPasswordSet		58
116010966SJordan.Brown@Sun.COM #define	API_WUserGetGroups		59
116110966SJordan.Brown@Sun.COM #define	API_DeadTableEntry		60
116210966SJordan.Brown@Sun.COM #define	API_WWkstaSetUID		62
116310966SJordan.Brown@Sun.COM #define	API_WWkstaGetInfo		63
116410966SJordan.Brown@Sun.COM #define	API_WWkstaSetInfo		64
116510966SJordan.Brown@Sun.COM #define	API_WUseEnum			65
116610966SJordan.Brown@Sun.COM #define	API_WUseAdd			66
116710966SJordan.Brown@Sun.COM #define	API_WUseDel			67
116810966SJordan.Brown@Sun.COM #define	API_WUseGetInfo			68
116910966SJordan.Brown@Sun.COM #define	API_WPrintQEnum			69
117010966SJordan.Brown@Sun.COM #define	API_WPrintQGetInfo		70
117110966SJordan.Brown@Sun.COM #define	API_WPrintQSetInfo		71
117210966SJordan.Brown@Sun.COM #define	API_WPrintQAdd			72
117310966SJordan.Brown@Sun.COM #define	API_WPrintQDel			73
117410966SJordan.Brown@Sun.COM #define	API_WPrintQPause		74
117510966SJordan.Brown@Sun.COM #define	API_WPrintQContinue		75
117610966SJordan.Brown@Sun.COM #define	API_WPrintJobEnum		76
117710966SJordan.Brown@Sun.COM #define	API_WPrintJobGetInfo		77
117810966SJordan.Brown@Sun.COM #define	API_WPrintJobSetInfo_OLD	78
117910966SJordan.Brown@Sun.COM #define	API_WPrintJobDel		81
118010966SJordan.Brown@Sun.COM #define	API_WPrintJobPause		82
118110966SJordan.Brown@Sun.COM #define	API_WPrintJobContinue		83
118210966SJordan.Brown@Sun.COM #define	API_WPrintDestEnum		84
118310966SJordan.Brown@Sun.COM #define	API_WPrintDestGetInfo		85
118410966SJordan.Brown@Sun.COM #define	API_WPrintDestControl		86
118510966SJordan.Brown@Sun.COM #define	API_WProfileSave		87
118610966SJordan.Brown@Sun.COM #define	API_WProfileLoad		88
118710966SJordan.Brown@Sun.COM #define	API_WStatisticsGet		89
118810966SJordan.Brown@Sun.COM #define	API_WStatisticsClear		90
118910966SJordan.Brown@Sun.COM #define	API_NetRemoteTOD		91
119010966SJordan.Brown@Sun.COM #define	API_WNetBiosEnum		92
119110966SJordan.Brown@Sun.COM #define	API_WNetBiosGetInfo		93
119210966SJordan.Brown@Sun.COM #define	API_NetServerEnum		94
119310966SJordan.Brown@Sun.COM #define	API_I_NetServerEnum		95
119410966SJordan.Brown@Sun.COM #define	API_WServiceGetInfo		96
119510966SJordan.Brown@Sun.COM #define	API_WPrintQPurge		103
119610966SJordan.Brown@Sun.COM #define	API_NetServerEnum2		104
119710966SJordan.Brown@Sun.COM #define	API_WAccessGetUserPerms		105
119810966SJordan.Brown@Sun.COM #define	API_WGroupGetInfo		106
119910966SJordan.Brown@Sun.COM #define	API_WGroupSetInfo		107
120010966SJordan.Brown@Sun.COM #define	API_WGroupSetUsers		108
120110966SJordan.Brown@Sun.COM #define	API_WUserSetGroups		109
120210966SJordan.Brown@Sun.COM #define	API_WUserModalsGet		110
120310966SJordan.Brown@Sun.COM #define	API_WUserModalsSet		111
120410966SJordan.Brown@Sun.COM #define	API_WFileEnum2			112
120510966SJordan.Brown@Sun.COM #define	API_WUserAdd2			113
120610966SJordan.Brown@Sun.COM #define	API_WUserSetInfo2		114
120710966SJordan.Brown@Sun.COM #define	API_WUserPasswordSet2		115
120810966SJordan.Brown@Sun.COM #define	API_I_NetServerEnum2		116
120910966SJordan.Brown@Sun.COM #define	API_WConfigGet2			117
121010966SJordan.Brown@Sun.COM #define	API_WConfigGetAll2		118
121110966SJordan.Brown@Sun.COM #define	API_WGetDCName			119
121210966SJordan.Brown@Sun.COM #define	API_NetHandleGetInfo		120
121310966SJordan.Brown@Sun.COM #define	API_NetHandleSetInfo		121
121410966SJordan.Brown@Sun.COM #define	API_WStatisticsGet2		122
121510966SJordan.Brown@Sun.COM #define	API_WBuildGetInfo		123
121610966SJordan.Brown@Sun.COM #define	API_WFileGetInfo2		124
121710966SJordan.Brown@Sun.COM #define	API_WFileClose2			125
121810966SJordan.Brown@Sun.COM #define	API_WNetServerReqChallenge	126
121910966SJordan.Brown@Sun.COM #define	API_WNetServerAuthenticate	127
122010966SJordan.Brown@Sun.COM #define	API_WNetServerPasswordSet	128
122110966SJordan.Brown@Sun.COM #define	API_WNetAccountDeltas		129
122210966SJordan.Brown@Sun.COM #define	API_WNetAccountSync		130
122310966SJordan.Brown@Sun.COM #define	API_WUserEnum2			131
122410966SJordan.Brown@Sun.COM #define	API_WWkstaUserLogon		132
122510966SJordan.Brown@Sun.COM #define	API_WWkstaUserLogoff		133
122610966SJordan.Brown@Sun.COM #define	API_WLogonEnum			134
122710966SJordan.Brown@Sun.COM #define	API_WErrorLogRead		135
122810966SJordan.Brown@Sun.COM #define	API_WI_NetPathType		136
122910966SJordan.Brown@Sun.COM #define	API_WI_NetPathCanonicalize	137
123010966SJordan.Brown@Sun.COM #define	API_WI_NetPathCompare		138
123110966SJordan.Brown@Sun.COM #define	API_WI_NetNameValidate		139
123210966SJordan.Brown@Sun.COM #define	API_WI_NetNameCanonicalize	140
123310966SJordan.Brown@Sun.COM #define	API_WI_NetNameCompare		141
123410966SJordan.Brown@Sun.COM #define	API_WAuditRead			142
123510966SJordan.Brown@Sun.COM #define	API_WPrintDestAdd		143
123610966SJordan.Brown@Sun.COM #define	API_WPrintDestSetInfo		144
123710966SJordan.Brown@Sun.COM #define	API_WPrintDestDel		145
123810966SJordan.Brown@Sun.COM #define	API_WUserValidate2		146
123910966SJordan.Brown@Sun.COM #define	API_WPrintJobSetInfo		147
124010966SJordan.Brown@Sun.COM #define	API_TI_NetServerDiskEnum	148
124110966SJordan.Brown@Sun.COM #define	API_TI_NetServerDiskGetInfo	149
124210966SJordan.Brown@Sun.COM #define	API_TI_FTVerifyMirror		150
124310966SJordan.Brown@Sun.COM #define	API_TI_FTAbortVerify		151
124410966SJordan.Brown@Sun.COM #define	API_TI_FTGetInfo		152
124510966SJordan.Brown@Sun.COM #define	API_TI_FTSetInfo		153
124610966SJordan.Brown@Sun.COM #define	API_TI_FTLockDisk		154
124710966SJordan.Brown@Sun.COM #define	API_TI_FTFixError		155
124810966SJordan.Brown@Sun.COM #define	API_TI_FTAbortFix		156
124910966SJordan.Brown@Sun.COM #define	API_TI_FTDiagnoseError		157
125010966SJordan.Brown@Sun.COM #define	API_TI_FTGetDriveStats		158
125110966SJordan.Brown@Sun.COM #define	API_TI_FTErrorGetInfo		160
125210966SJordan.Brown@Sun.COM #define	API_NetAccessCheck		163
125310966SJordan.Brown@Sun.COM #define	API_NetAlertRaise		164
125410966SJordan.Brown@Sun.COM #define	API_NetAlertStart		165
125510966SJordan.Brown@Sun.COM #define	API_NetAlertStop		166
125610966SJordan.Brown@Sun.COM #define	API_NetAuditWrite		167
125710966SJordan.Brown@Sun.COM #define	API_NetIRemoteAPI		168
125810966SJordan.Brown@Sun.COM #define	API_NetServiceStatus		169
125910966SJordan.Brown@Sun.COM #define	API_I_NetServerRegister		170
126010966SJordan.Brown@Sun.COM #define	API_I_NetServerDeregister	171
126110966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntryMake	172
126210966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntryClear	173
126310966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntryGetInfo	174
126410966SJordan.Brown@Sun.COM #define	API_I_NetSessionEntrySetInfo	175
126510966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntryMake	176
126610966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntryClear	177
126710966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntrySetInfo	178
126810966SJordan.Brown@Sun.COM #define	API_I_NetConnectionEntryGetInfo	179
126910966SJordan.Brown@Sun.COM #define	API_I_NetFileEntryMake		180
127010966SJordan.Brown@Sun.COM #define	API_I_NetFileEntryClear		181
127110966SJordan.Brown@Sun.COM #define	API_I_NetFileEntrySetInfo	182
127210966SJordan.Brown@Sun.COM #define	API_I_NetFileEntryGetInfo	183
127310966SJordan.Brown@Sun.COM #define	API_AltSrvMessageBufferSend	184
127410966SJordan.Brown@Sun.COM #define	API_AltSrvMessageFileSend	185
127510966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaEnum		186
127610966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaGetInfo	187
127710966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaSetInfo	188
127810966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaAdd		189
127910966SJordan.Brown@Sun.COM #define	API_wI_NetRplWkstaDel		190
128010966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileEnum	191
128110966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileGetInfo	192
128210966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileSetInfo	193
128310966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileAdd		194
128410966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileDel		195
128510966SJordan.Brown@Sun.COM #define	API_wI_NetRplProfileClone	196
128610966SJordan.Brown@Sun.COM #define	API_wI_NetRplBaseProfileEnum	197
128710966SJordan.Brown@Sun.COM #define	API_WIServerSetInfo		201
128810966SJordan.Brown@Sun.COM #define	API_WPrintDriverEnum		205
128910966SJordan.Brown@Sun.COM #define	API_WPrintQProcessorEnum	206
129010966SJordan.Brown@Sun.COM #define	API_WPrintPortEnum		207
129110966SJordan.Brown@Sun.COM #define	API_WNetWriteUpdateLog		208
129210966SJordan.Brown@Sun.COM #define	API_WNetAccountUpdate		209
129310966SJordan.Brown@Sun.COM #define	API_WNetAccountConfirmUpdate	210
129410966SJordan.Brown@Sun.COM #define	API_WConfigSet			211
129510966SJordan.Brown@Sun.COM #define	API_WAccountsReplicate		212
129610966SJordan.Brown@Sun.COM #define	API_SamOEMChgPasswordUser2_P	214
129710966SJordan.Brown@Sun.COM #define	API_NetServerEnum3		215
129810966SJordan.Brown@Sun.COM #define	API_WprintDriverGetInfo		250
129910966SJordan.Brown@Sun.COM #define	API_WprintDriverSetInfo		251
130010966SJordan.Brown@Sun.COM #define	API_WaliasAdd			252
130110966SJordan.Brown@Sun.COM #define	API_WaliasDel			253
130210966SJordan.Brown@Sun.COM #define	API_WaliasGetInfo		254
130310966SJordan.Brown@Sun.COM #define	API_WaliasSetInfo		255
130410966SJordan.Brown@Sun.COM #define	API_WaliasEnum			256
130510966SJordan.Brown@Sun.COM #define	API_WuserGetLogonAsn		257
130610966SJordan.Brown@Sun.COM #define	API_WuserSetLogonAsn		258
130710966SJordan.Brown@Sun.COM #define	API_WuserGetAppSel		259
130810966SJordan.Brown@Sun.COM #define	API_WuserSetAppSel		260
130910966SJordan.Brown@Sun.COM #define	API_WappAdd			261
131010966SJordan.Brown@Sun.COM #define	API_WappDel			262
131110966SJordan.Brown@Sun.COM #define	API_WappGetInfo			263
131210966SJordan.Brown@Sun.COM #define	API_WappSetInfo			264
131310966SJordan.Brown@Sun.COM #define	API_WappEnum			265
131410966SJordan.Brown@Sun.COM #define	API_WUserDCDBInit		266
131510966SJordan.Brown@Sun.COM #define	API_WDASDAdd			267
131610966SJordan.Brown@Sun.COM #define	API_WDASDDel			268
131710966SJordan.Brown@Sun.COM #define	API_WDASDGetInfo		269
131810966SJordan.Brown@Sun.COM #define	API_WDASDSetInfo		270
131910966SJordan.Brown@Sun.COM #define	API_WDASDEnum			271
132010966SJordan.Brown@Sun.COM #define	API_WDASDCheck			272
132110966SJordan.Brown@Sun.COM #define	API_WDASDCtl			273
132210966SJordan.Brown@Sun.COM #define	API_WuserRemoteLogonCheck	274
132310966SJordan.Brown@Sun.COM #define	API_WUserPasswordSet3		275
132410966SJordan.Brown@Sun.COM #define	API_WCreateRIPLMachine		276
132510966SJordan.Brown@Sun.COM #define	API_WDeleteRIPLMachine		277
132610966SJordan.Brown@Sun.COM #define	API_WGetRIPLMachineInfo		278
132710966SJordan.Brown@Sun.COM #define	API_WSetRIPLMachineInfo		279
132810966SJordan.Brown@Sun.COM #define	API_WEnumRIPLMachine		280
132910966SJordan.Brown@Sun.COM #define	API_WI_ShareAdd			281
133010966SJordan.Brown@Sun.COM #define	API_WI_AliasEnum		282
133110966SJordan.Brown@Sun.COM #define	API_WaccessApply		283
133210966SJordan.Brown@Sun.COM #define	API_WPrt16Query			284
133310966SJordan.Brown@Sun.COM #define	API_WPrt16Set			285
133410966SJordan.Brown@Sun.COM #define	API_WUserDel100			286
133510966SJordan.Brown@Sun.COM #define	API_WUserRemoteLogonCheck2	287
133610966SJordan.Brown@Sun.COM #define	API_WRemoteTODSet		294
133710966SJordan.Brown@Sun.COM #define	API_WprintJobMoveAll		295
133810966SJordan.Brown@Sun.COM #define	API_W16AppParmAdd		296
133910966SJordan.Brown@Sun.COM #define	API_W16AppParmDel		297
134010966SJordan.Brown@Sun.COM #define	API_W16AppParmGet		298
134110966SJordan.Brown@Sun.COM #define	API_W16AppParmSet		299
134210966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineCreate	300
134310966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineGetInfo	301
134410966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineSetInfo	302
134510966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineEnum		303
134610966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineListParmEnum	304
134710966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassGetInfo	305
134810966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassEnum	306
134910966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassCreate	307
135010966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassSetInfo	308
135110966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassDelete	309
135210966SJordan.Brown@Sun.COM #define	API_W16RIPLMachClassLPEnum	310
135310966SJordan.Brown@Sun.COM #define	API_W16RIPLMachineDelete	311
135410966SJordan.Brown@Sun.COM #define	API_W16WSLevelGetInfo		312
135510966SJordan.Brown@Sun.COM #define	API_WserverNameAdd		313
135610966SJordan.Brown@Sun.COM #define	API_WserverNameDel		314
135710966SJordan.Brown@Sun.COM #define	API_WserverNameEnum		315
135810966SJordan.Brown@Sun.COM #define	API_I_WDASDEnum			316
135910966SJordan.Brown@Sun.COM #define	API_I_WDASDEnumTerminate	317
136010966SJordan.Brown@Sun.COM #define	API_I_WDASDSetInfo2		318
136110966SJordan.Brown@Sun.COM #define	MAX_RAP_API			318
136210966SJordan.Brown@Sun.COM 
136310966SJordan.Brown@Sun.COM #ifdef __cplusplus
136410966SJordan.Brown@Sun.COM }
136510966SJordan.Brown@Sun.COM #endif
136610966SJordan.Brown@Sun.COM 
136710966SJordan.Brown@Sun.COM #endif /* _SMBSRV_SMB_H */
1368