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