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