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