1*8ccd4a63SDavid du Colombier typedef struct SmbRawHeader { 2*8ccd4a63SDavid du Colombier uchar protocol[4]; 3*8ccd4a63SDavid du Colombier uchar command; 4*8ccd4a63SDavid du Colombier // union { 5*8ccd4a63SDavid du Colombier // struct { 6*8ccd4a63SDavid du Colombier // uchar errorclass; 7*8ccd4a63SDavid du Colombier // uchar reserved; 8*8ccd4a63SDavid du Colombier // uchar error[2]; 9*8ccd4a63SDavid du Colombier // } doserror; 10*8ccd4a63SDavid du Colombier uchar status[4]; 11*8ccd4a63SDavid du Colombier // }; 12*8ccd4a63SDavid du Colombier uchar flags; 13*8ccd4a63SDavid du Colombier uchar flags2[2]; 14*8ccd4a63SDavid du Colombier // union { 15*8ccd4a63SDavid du Colombier uchar extra[12]; 16*8ccd4a63SDavid du Colombier // struct { 17*8ccd4a63SDavid du Colombier // uchar pidhigh[2]; 18*8ccd4a63SDavid du Colombier // uchar securitysignature[8]; 19*8ccd4a63SDavid du Colombier // }; 20*8ccd4a63SDavid du Colombier // }; 21*8ccd4a63SDavid du Colombier uchar tid[2]; 22*8ccd4a63SDavid du Colombier uchar pid[2]; 23*8ccd4a63SDavid du Colombier uchar uid[2]; 24*8ccd4a63SDavid du Colombier uchar mid[2]; 25*8ccd4a63SDavid du Colombier uchar wordcount; 26*8ccd4a63SDavid du Colombier uchar parameterwords[1]; 27*8ccd4a63SDavid du Colombier } SmbRawHeader; 28*8ccd4a63SDavid du Colombier 29*8ccd4a63SDavid du Colombier enum { 30*8ccd4a63SDavid du Colombier SmbHeaderFlagReserved = (3 << 1), 31*8ccd4a63SDavid du Colombier SmbHeaderFlagCaseless = (1 << 3), 32*8ccd4a63SDavid du Colombier SmbHeaderFlagServerIgnore = (1 << 4), 33*8ccd4a63SDavid du Colombier SMB_FLAGS_SERVER_TO_REDIR = (1 << 7), 34*8ccd4a63SDavid du Colombier }; 35*8ccd4a63SDavid du Colombier 36*8ccd4a63SDavid du Colombier enum { 37*8ccd4a63SDavid du Colombier SMB_FLAGS2_KNOWS_LONG_NAMES = (1 << 0), 38*8ccd4a63SDavid du Colombier SMB_FLAGS2_KNOWS_EAS = (1 << 1), 39*8ccd4a63SDavid du Colombier SMB_FLAGS2_SECURITY_SIGNATURE = (1 << 2), 40*8ccd4a63SDavid du Colombier SMB_FLAGS2_RESERVED1 = (1 << 3), 41*8ccd4a63SDavid du Colombier SMB_FLAGS2_IS_LONG_NAME = (1 << 6), 42*8ccd4a63SDavid du Colombier SMB_FLAGS2_EXT_SEC = (1 << 1), 43*8ccd4a63SDavid du Colombier SMB_FLAGS2_DFS = (1 << 12), 44*8ccd4a63SDavid du Colombier SMB_FLAGS2_PAGING_IO = (1 << 13), 45*8ccd4a63SDavid du Colombier SMB_FLAGS2_ERR_STATUS = (1 << 14), 46*8ccd4a63SDavid du Colombier SMB_FLAGS2_UNICODE = (1 << 15), 47*8ccd4a63SDavid du Colombier }; 48*8ccd4a63SDavid du Colombier 49*8ccd4a63SDavid du Colombier enum { 50*8ccd4a63SDavid du Colombier SMB_COM_CREATE_DIRECTORY = 0x00, 51*8ccd4a63SDavid du Colombier SMB_COM_DELETE_DIRECTORY = 0x01, 52*8ccd4a63SDavid du Colombier SMB_COM_OPEN = 0x02, 53*8ccd4a63SDavid du Colombier SMB_COM_CREATE = 0x03, 54*8ccd4a63SDavid du Colombier SMB_COM_CLOSE = 0x04, 55*8ccd4a63SDavid du Colombier SMB_COM_FLUSH = 0x05, 56*8ccd4a63SDavid du Colombier SMB_COM_DELETE = 0x06, 57*8ccd4a63SDavid du Colombier SMB_COM_RENAME = 0x07, 58*8ccd4a63SDavid du Colombier SMB_COM_QUERY_INFORMATION = 0x08, 59*8ccd4a63SDavid du Colombier SMB_COM_SET_INFORMATION = 0x09, 60*8ccd4a63SDavid du Colombier SMB_COM_READ = 0x0A, 61*8ccd4a63SDavid du Colombier SMB_COM_WRITE = 0x0B, 62*8ccd4a63SDavid du Colombier SMB_COM_LOCK_BYTE_RANGE = 0x0C, 63*8ccd4a63SDavid du Colombier SMB_COM_UNLOCK_BYTE_RANGE = 0x0D, 64*8ccd4a63SDavid du Colombier SMB_COM_CREATE_TEMPORARY = 0x0E, 65*8ccd4a63SDavid du Colombier SMB_COM_CREATE_NEW = 0x0F, 66*8ccd4a63SDavid du Colombier SMB_COM_CHECK_DIRECTORY = 0x10, 67*8ccd4a63SDavid du Colombier SMB_COM_PROCESS_EXIT = 0x11, 68*8ccd4a63SDavid du Colombier SMB_COM_SEEK = 0x12, 69*8ccd4a63SDavid du Colombier SMB_COM_LOCK_AND_READ = 0x13, 70*8ccd4a63SDavid du Colombier SMB_COM_WRITE_AND_UNLOCK = 0x14, 71*8ccd4a63SDavid du Colombier SMB_COM_READ_RAW = 0x1A, 72*8ccd4a63SDavid du Colombier SMB_COM_READ_MPX = 0x1B, 73*8ccd4a63SDavid du Colombier SMB_COM_READ_MPX_SECONDARY = 0x1C, 74*8ccd4a63SDavid du Colombier SMB_COM_WRITE_RAW = 0x1D, 75*8ccd4a63SDavid du Colombier SMB_COM_WRITE_MPX = 0x1E, 76*8ccd4a63SDavid du Colombier SMB_COM_WRITE_MPX_SECONDARY = 0x1F, 77*8ccd4a63SDavid du Colombier SMB_COM_WRITE_COMPLETE = 0x20, 78*8ccd4a63SDavid du Colombier SMB_COM_QUERY_SERVER = 0x21, 79*8ccd4a63SDavid du Colombier SMB_COM_SET_INFORMATION2 = 0x22, 80*8ccd4a63SDavid du Colombier SMB_COM_QUERY_INFORMATION2 = 0x23, 81*8ccd4a63SDavid du Colombier SMB_COM_LOCKING_ANDX = 0x24, 82*8ccd4a63SDavid du Colombier SMB_COM_TRANSACTION = 0x25, 83*8ccd4a63SDavid du Colombier SMB_COM_TRANSACTION_SECONDARY = 0x26, 84*8ccd4a63SDavid du Colombier SMB_COM_IOCTL = 0x27, 85*8ccd4a63SDavid du Colombier SMB_COM_IOCTL_SECONDARY = 0x28, 86*8ccd4a63SDavid du Colombier SMB_COM_COPY = 0x29, 87*8ccd4a63SDavid du Colombier SMB_COM_MOVE = 0x2A, 88*8ccd4a63SDavid du Colombier SMB_COM_ECHO = 0x2B, 89*8ccd4a63SDavid du Colombier SMB_COM_WRITE_AND_CLOSE = 0x2C, 90*8ccd4a63SDavid du Colombier SMB_COM_OPEN_ANDX = 0x2D, 91*8ccd4a63SDavid du Colombier SMB_COM_READ_ANDX = 0x2E, 92*8ccd4a63SDavid du Colombier SMB_COM_WRITE_ANDX = 0x2F, 93*8ccd4a63SDavid du Colombier SMB_COM_NEW_FILE_SIZE = 0x30, 94*8ccd4a63SDavid du Colombier SMB_COM_CLOSE_AND_TREE_DISC = 0x31, 95*8ccd4a63SDavid du Colombier SMB_COM_TRANSACTION2 = 0x32, 96*8ccd4a63SDavid du Colombier SMB_COM_TRANSACTION2_SECONDARY = 0x33, 97*8ccd4a63SDavid du Colombier SMB_COM_FIND_CLOSE2 = 0x34, 98*8ccd4a63SDavid du Colombier SMB_COM_FIND_NOTIFY_CLOSE = 0x35, 99*8ccd4a63SDavid du Colombier /* Used by Xenix/Unix 0x60 - 0x6E */, 100*8ccd4a63SDavid du Colombier SMB_COM_TREE_CONNECT = 0x70, 101*8ccd4a63SDavid du Colombier SMB_COM_TREE_DISCONNECT = 0x71, 102*8ccd4a63SDavid du Colombier SMB_COM_NEGOTIATE = 0x72, 103*8ccd4a63SDavid du Colombier SMB_COM_SESSION_SETUP_ANDX = 0x73, 104*8ccd4a63SDavid du Colombier SMB_COM_LOGOFF_ANDX = 0x74, 105*8ccd4a63SDavid du Colombier SMB_COM_TREE_CONNECT_ANDX = 0x75, 106*8ccd4a63SDavid du Colombier SMB_COM_QUERY_INFORMATION_DISK = 0x80, 107*8ccd4a63SDavid du Colombier SMB_COM_SEARCH = 0x81, 108*8ccd4a63SDavid du Colombier SMB_COM_FIND = 0x82, 109*8ccd4a63SDavid du Colombier SMB_COM_FIND_UNIQUE = 0x83, 110*8ccd4a63SDavid du Colombier SMB_COM_FIND_CLOSE = 0x84, 111*8ccd4a63SDavid du Colombier SMB_COM_NT_TRANSACT = 0xA0, 112*8ccd4a63SDavid du Colombier SMB_COM_NT_TRANSACT_SECONDARY = 0xA1, 113*8ccd4a63SDavid du Colombier SMB_COM_NT_CREATE_ANDX = 0xA2, 114*8ccd4a63SDavid du Colombier SMB_COM_NT_CANCEL = 0xA4, 115*8ccd4a63SDavid du Colombier SMB_COM_NT_RENAME = 0xA5, 116*8ccd4a63SDavid du Colombier SMB_COM_OPEN_PRINT_FILE = 0xC0, 117*8ccd4a63SDavid du Colombier SMB_COM_WRITE_PRINT_FILE = 0xC1, 118*8ccd4a63SDavid du Colombier SMB_COM_CLOSE_PRINT_FILE = 0xC2, 119*8ccd4a63SDavid du Colombier SMB_COM_GET_PRINT_QUEUE = 0xC3, 120*8ccd4a63SDavid du Colombier SMB_COM_READ_BULK = 0xD8, 121*8ccd4a63SDavid du Colombier SMB_COM_WRITE_BULK = 0xD9, 122*8ccd4a63SDavid du Colombier SMB_COM_NO_ANDX_COMMAND = 0xff, 123*8ccd4a63SDavid du Colombier }; 124*8ccd4a63SDavid du Colombier 125*8ccd4a63SDavid du Colombier enum { 126*8ccd4a63SDavid du Colombier SUCCESS = 0, 127*8ccd4a63SDavid du Colombier ERRDOS = 0x01, 128*8ccd4a63SDavid du Colombier ERRSRV = 0x02, 129*8ccd4a63SDavid du Colombier ERRHRD = 0x03, 130*8ccd4a63SDavid du Colombier ERRCMD = 0xff, 131*8ccd4a63SDavid du Colombier }; 132*8ccd4a63SDavid du Colombier 133*8ccd4a63SDavid du Colombier enum { 134*8ccd4a63SDavid du Colombier ERRbadfunc = 1, 135*8ccd4a63SDavid du Colombier ERRbadfile = 2, 136*8ccd4a63SDavid du Colombier ERRbadpath = 3, 137*8ccd4a63SDavid du Colombier ERRnofids = 4, 138*8ccd4a63SDavid du Colombier ERRnoaccess = 5, 139*8ccd4a63SDavid du Colombier ERRbadfid = 6, 140*8ccd4a63SDavid du Colombier ERRbadmcb = 7, 141*8ccd4a63SDavid du Colombier ERRnomem = 8, 142*8ccd4a63SDavid du Colombier ERRbadmem = 9, 143*8ccd4a63SDavid du Colombier ERRbadenv = 10, 144*8ccd4a63SDavid du Colombier ERRbadformat = 11, 145*8ccd4a63SDavid du Colombier ERRbadaccess = 12, 146*8ccd4a63SDavid du Colombier ERRbaddata =13, 147*8ccd4a63SDavid du Colombier ERRbaddrive = 15, 148*8ccd4a63SDavid du Colombier ERRremcd = 16, 149*8ccd4a63SDavid du Colombier ERRdiffdevice = 17, 150*8ccd4a63SDavid du Colombier ERRnofiles = 18, 151*8ccd4a63SDavid du Colombier ERRbadshare = 32, 152*8ccd4a63SDavid du Colombier ERRlock = 33, 153*8ccd4a63SDavid du Colombier ERRunsup = 50, 154*8ccd4a63SDavid du Colombier ERRfilexists = 80, 155*8ccd4a63SDavid du Colombier ERRunknownlevel = 124, 156*8ccd4a63SDavid du Colombier ERRquota = 512, 157*8ccd4a63SDavid du Colombier ERRnotalink = 513, 158*8ccd4a63SDavid du Colombier }; 159*8ccd4a63SDavid du Colombier 160*8ccd4a63SDavid du Colombier enum { 161*8ccd4a63SDavid du Colombier ERRerror = 1, 162*8ccd4a63SDavid du Colombier ERRbadpw = 2, 163*8ccd4a63SDavid du Colombier ERRaccess = 4, 164*8ccd4a63SDavid du Colombier ERRinvtid = 5, 165*8ccd4a63SDavid du Colombier ERRsmbcmd = 64, 166*8ccd4a63SDavid du Colombier ERRtoomanyuids = 90, 167*8ccd4a63SDavid du Colombier ERRbaduid = 91, 168*8ccd4a63SDavid du Colombier ERRnosupport = 65535, 169*8ccd4a63SDavid du Colombier }; 170*8ccd4a63SDavid du Colombier 171*8ccd4a63SDavid du Colombier enum { 172*8ccd4a63SDavid du Colombier CAP_RAW_MODE = 0x0001, 173*8ccd4a63SDavid du Colombier CAP_MPX_MODE = 0x0002, 174*8ccd4a63SDavid du Colombier CAP_UNICODE = 0x0004, 175*8ccd4a63SDavid du Colombier CAP_LARGE_FILES = 0x0008, 176*8ccd4a63SDavid du Colombier CAP_NT_SMBS = 0x0010, 177*8ccd4a63SDavid du Colombier CAP_RPC_REMOTE_APIS = 0x0020, 178*8ccd4a63SDavid du Colombier CAP_STATUS32 = 0x0040, 179*8ccd4a63SDavid du Colombier CAP_LEVEL_II_OPLOCKS = 0x0080, 180*8ccd4a63SDavid du Colombier CAP_LOCK_AND_READ = 0x0100, 181*8ccd4a63SDavid du Colombier CAP_NT_FIND = 0x0200, 182*8ccd4a63SDavid du Colombier CAP_DFS = 0x1000, 183*8ccd4a63SDavid du Colombier CAP_INFOLEVEL_PASSTHRU = 0x2000, 184*8ccd4a63SDavid du Colombier CAP_W2K_SMBS = 0x2000, 185*8ccd4a63SDavid du Colombier CAP_LARGE_READX = 0x4000, 186*8ccd4a63SDavid du Colombier CAP_LARGE_WRITEX = 0x8000, 187*8ccd4a63SDavid du Colombier CAP_UNIX = 0x00800000, 188*8ccd4a63SDavid du Colombier CAP_BULK_TRANSFER = 0x20000000, 189*8ccd4a63SDavid du Colombier CAP_COMPRESSED_DATA = 0x40000000, 190*8ccd4a63SDavid du Colombier CAP_EXTENDED_SECURITY = 0x80000000 191*8ccd4a63SDavid du Colombier }; 192*8ccd4a63SDavid du Colombier 193*8ccd4a63SDavid du Colombier enum { 194*8ccd4a63SDavid du Colombier RapNetShareEnum = 0, 195*8ccd4a63SDavid du Colombier RapNetShareGetInfo = 1, 196*8ccd4a63SDavid du Colombier RapNetServerGetInfo = 13, 197*8ccd4a63SDavid du Colombier RapNetWkstaGetInfo = 63, 198*8ccd4a63SDavid du Colombier RapNetServerEnum2 = 104, 199*8ccd4a63SDavid du Colombier }; 200*8ccd4a63SDavid du Colombier 201*8ccd4a63SDavid du Colombier enum { 202*8ccd4a63SDavid du Colombier SMB_RAP_NERR_SUCCESS = 0, 203*8ccd4a63SDavid du Colombier SMB_RAP_ERROR_MORE_DATA = 234, 204*8ccd4a63SDavid du Colombier }; 205*8ccd4a63SDavid du Colombier 206*8ccd4a63SDavid du Colombier enum { 207*8ccd4a63SDavid du Colombier STYPE_DISKTREE, 208*8ccd4a63SDavid du Colombier STYPE_PRINTQ, 209*8ccd4a63SDavid du Colombier STYPE_DEVICE, 210*8ccd4a63SDavid du Colombier STYPE_IPC 211*8ccd4a63SDavid du Colombier }; 212*8ccd4a63SDavid du Colombier 213*8ccd4a63SDavid du Colombier enum { 214*8ccd4a63SDavid du Colombier SV_TYPE_WORKSTATION = 0x00000001, 215*8ccd4a63SDavid du Colombier SV_TYPE_SERVER = 0x00000002, 216*8ccd4a63SDavid du Colombier SV_TYPE_SQLSERVER = 0x00000004, 217*8ccd4a63SDavid du Colombier SV_TYPE_DOMAIN_CTRL = 0x00000008, 218*8ccd4a63SDavid du Colombier SV_TYPE_DOMAIN_BAKCTRL = 0x00000010, 219*8ccd4a63SDavid du Colombier SV_TYPE_TIME_SOURCE = 0x00000020, 220*8ccd4a63SDavid du Colombier SV_TYPE_AFP = 0x00000040, 221*8ccd4a63SDavid du Colombier SV_TYPE_NOVELL = 0x00000080, 222*8ccd4a63SDavid du Colombier SV_TYPE_DOMAIN_MEMBER = 0x00000100, 223*8ccd4a63SDavid du Colombier SV_TYPE_PRINTQ_SERVER = 0x00000200, 224*8ccd4a63SDavid du Colombier SV_TYPE_DIALIN_SERVER = 0x00000400, 225*8ccd4a63SDavid du Colombier SV_TYPE_SERVER_UNIX = 0x00000800, 226*8ccd4a63SDavid du Colombier SV_TYPE_NT = 0x00001000, 227*8ccd4a63SDavid du Colombier SV_TYPE_WFW = 0x00002000, 228*8ccd4a63SDavid du Colombier SV_TYPE_SERVER_MFPN = 0x00004000, 229*8ccd4a63SDavid du Colombier SV_TYPE_SERVER_NT = 0x00008000, 230*8ccd4a63SDavid du Colombier SV_TYPE_POTENTIAL_BROWSER = 0x00010000, 231*8ccd4a63SDavid du Colombier SV_TYPE_BACKUP_BROWSER = 0x00020000, 232*8ccd4a63SDavid du Colombier SV_TYPE_MASTER_BROWSER = 0x00040000, 233*8ccd4a63SDavid du Colombier SV_TYPE_DOMAIN_MASTER = 0x00080000, 234*8ccd4a63SDavid du Colombier SV_TYPE_SERVER_OSF = 0x00100000, 235*8ccd4a63SDavid du Colombier SV_TYPE_SERVER_VMS = 0x00200000, 236*8ccd4a63SDavid du Colombier SV_TYPE_WIN95_PLUS = 0x00400000, 237*8ccd4a63SDavid du Colombier SV_TYPE_DFS_SERVER = 0x00800000, 238*8ccd4a63SDavid du Colombier SV_TYPE_ALTERNATE_XPORT = 0x20000000, 239*8ccd4a63SDavid du Colombier SV_TYPE_LOCAL_LIST_ONLY = 0x40000000, 240*8ccd4a63SDavid du Colombier SV_TYPE_DOMAIN_ENUM = 0x80000000, 241*8ccd4a63SDavid du Colombier SV_TYPE_ALL = 0xFFFFFFFF, 242*8ccd4a63SDavid du Colombier }; 243*8ccd4a63SDavid du Colombier 244*8ccd4a63SDavid du Colombier enum { 245*8ccd4a63SDavid du Colombier SMB_TRANS2_OPEN = 0, 246*8ccd4a63SDavid du Colombier SMB_TRANS2_FIND_FIRST2 = 1, 247*8ccd4a63SDavid du Colombier SMB_TRANS2_FIND_NEXT2 = 2, 248*8ccd4a63SDavid du Colombier SMB_TRANS2_QUERY_FS_INFORMATION = 3, 249*8ccd4a63SDavid du Colombier SMB_TRANS2_SET_FS_INFORMATION = 4, 250*8ccd4a63SDavid du Colombier SMB_TRANS2_QUERY_PATH_INFORMATION = 5, 251*8ccd4a63SDavid du Colombier SMB_TRANS2_SET_PATH_INFORMATION = 6, 252*8ccd4a63SDavid du Colombier SMB_TRANS2_QUERY_FILE_INFORMATION = 7, 253*8ccd4a63SDavid du Colombier SMB_TRANS2_SET_FILE_INFORMATION = 8, 254*8ccd4a63SDavid du Colombier SMB_TRANS2_FSCTL = 9, 255*8ccd4a63SDavid du Colombier SMB_TRANS2_IOCTL2 = 0xA, 256*8ccd4a63SDavid du Colombier SMB_TRANS2_FIND_NOTIFY_FIRST = 0xB, 257*8ccd4a63SDavid du Colombier SMB_TRANS2_FIND_NOTIFY_NEXT = 0xC, 258*8ccd4a63SDavid du Colombier SMB_TRANS2_CREATE_DIRECTORY = 0xD, 259*8ccd4a63SDavid du Colombier SMB_TRANS2_SESSION_SETUP = 0xE, 260*8ccd4a63SDavid du Colombier SMB_TRANS2_GET_DFS_REFERRAL = 0x10, 261*8ccd4a63SDavid du Colombier SMB_TRANS2_REPORT_DFS_INCONSISTENCY = 0x11, 262*8ccd4a63SDavid du Colombier }; 263*8ccd4a63SDavid du Colombier 264*8ccd4a63SDavid du Colombier enum { 265*8ccd4a63SDavid du Colombier SMB_FIND_CLOSE = 1, 266*8ccd4a63SDavid du Colombier SMB_FIND_CLOSE_EOS = 2, 267*8ccd4a63SDavid du Colombier SMB_FIND_RETURN_RESUME_KEYS = 4, 268*8ccd4a63SDavid du Colombier SMB_FIND_CONTINUE = 8, 269*8ccd4a63SDavid du Colombier SMB_FIND_BACKUP = 16 270*8ccd4a63SDavid du Colombier }; 271*8ccd4a63SDavid du Colombier 272*8ccd4a63SDavid du Colombier enum { 273*8ccd4a63SDavid du Colombier SMB_INFO_STANDARD = 1, 274*8ccd4a63SDavid du Colombier SMB_FIND_FILE_BOTH_DIRECTORY_INFO = 0x104, 275*8ccd4a63SDavid du Colombier SMB_QUERY_FILE_BASIC_INFO = 0x101, 276*8ccd4a63SDavid du Colombier SMB_QUERY_FILE_STANDARD_INFO = 0x102, 277*8ccd4a63SDavid du Colombier SMB_QUERY_FILE_EA_INFO = 0x103, 278*8ccd4a63SDavid du Colombier SMB_QUERY_FILE_ALL_INFO = 0x107, 279*8ccd4a63SDavid du Colombier SMB_QUERY_FILE_STREAM_INFO = 0x109, 280*8ccd4a63SDavid du Colombier }; 281*8ccd4a63SDavid du Colombier 282*8ccd4a63SDavid du Colombier enum { 283*8ccd4a63SDavid du Colombier SMB_SET_FILE_BASIC_INFO = 0x101, 284*8ccd4a63SDavid du Colombier SMB_SET_FILE_DISPOSITION_INFO = 0x102, 285*8ccd4a63SDavid du Colombier SMB_SET_FILE_ALLOCATION_INFO = 0x103, 286*8ccd4a63SDavid du Colombier SMB_SET_FILE_END_OF_FILE_INFO = 0x104, 287*8ccd4a63SDavid du Colombier }; 288*8ccd4a63SDavid du Colombier 289*8ccd4a63SDavid du Colombier enum { 290*8ccd4a63SDavid du Colombier SMB_ATTR_READ_ONLY = (1 << 0), 291*8ccd4a63SDavid du Colombier SMB_ATTR_HIDDEN = (1 << 1), 292*8ccd4a63SDavid du Colombier SMB_ATTR_SYSTEM = (1 << 2), 293*8ccd4a63SDavid du Colombier SMB_ATTR_DIRECTORY = (1 << 4), 294*8ccd4a63SDavid du Colombier SMB_ATTR_ARCHIVE = (1 << 5), 295*8ccd4a63SDavid du Colombier SMB_ATTR_NORMAL = (1 << 7), 296*8ccd4a63SDavid du Colombier SMB_ATTR_COMPRESSED = 0x800, 297*8ccd4a63SDavid du Colombier SMB_ATTR_TEMPORARY = 0x100, 298*8ccd4a63SDavid du Colombier SMB_ATTR_WRITETHROUGH = 0x80000000, 299*8ccd4a63SDavid du Colombier SMB_ATTR_NO_BUFFERING = 0x20000000, 300*8ccd4a63SDavid du Colombier SMB_ATTR_RANDOM_ACCESS = 0x10000000, 301*8ccd4a63SDavid du Colombier }; 302*8ccd4a63SDavid du Colombier 303*8ccd4a63SDavid du Colombier enum { 304*8ccd4a63SDavid du Colombier SMB_OFUN_EXIST_SHIFT = 0, 305*8ccd4a63SDavid du Colombier SMB_OFUN_EXIST_MASK = 3, 306*8ccd4a63SDavid du Colombier SMB_OFUN_EXIST_FAIL = 0, 307*8ccd4a63SDavid du Colombier SMB_OFUN_EXIST_OPEN = 1, 308*8ccd4a63SDavid du Colombier SMB_OFUN_EXIST_TRUNCATE = 2, 309*8ccd4a63SDavid du Colombier SMB_OFUN_NOEXIST_CREATE = (1 << 4), 310*8ccd4a63SDavid du Colombier }; 311*8ccd4a63SDavid du Colombier 312*8ccd4a63SDavid du Colombier enum { 313*8ccd4a63SDavid du Colombier SMB_OPEN_FLAGS_ADDITIONAL = 1, 314*8ccd4a63SDavid du Colombier SMB_OPEN_FLAGS_OPLOCK = 2, 315*8ccd4a63SDavid du Colombier SMB_OPEN_FLAGS_OPBATCH = 4, 316*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_ACCESS_SHIFT = 0, 317*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_ACCESS_MASK = 7, 318*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_SHIFT = 4, 319*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_MASK = 7, 320*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_COMPATIBILITY = 0, 321*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_EXCLUSIVE = 1, 322*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_DENY_WRITE = 2, 323*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_DENY_READOREXEC = 3, 324*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_SHARE_DENY_NONE = 4, 325*8ccd4a63SDavid du Colombier SMB_OPEN_MODE_WRITE_THROUGH = (1 << 14), 326*8ccd4a63SDavid du Colombier }; 327*8ccd4a63SDavid du Colombier 328*8ccd4a63SDavid du Colombier enum { 329*8ccd4a63SDavid du Colombier SMB_INFO_ALLOCATION = 1, 330*8ccd4a63SDavid du Colombier SMB_INFO_VOLUME = 2, 331*8ccd4a63SDavid du Colombier SMB_QUERY_FS_VOLUME_INFO = 0x102, 332*8ccd4a63SDavid du Colombier SMB_QUERY_FS_SIZE_INFO = 0x103, 333*8ccd4a63SDavid du Colombier SMB_QUERY_FS_ATTRIBUTE_INFO = 0x105, 334*8ccd4a63SDavid du Colombier }; 335*8ccd4a63SDavid du Colombier 336*8ccd4a63SDavid du Colombier enum { 337*8ccd4a63SDavid du Colombier SMB_CD_SUPERCEDE = 0, 338*8ccd4a63SDavid du Colombier SMB_CD_OPEN = 1, 339*8ccd4a63SDavid du Colombier SMB_CD_CREATE = 2, 340*8ccd4a63SDavid du Colombier SMB_CD_OPEN_IF = 3, 341*8ccd4a63SDavid du Colombier SMB_CD_OVERWRITE = 4, 342*8ccd4a63SDavid du Colombier SMB_CD_OVERWRITE_IF = 5, 343*8ccd4a63SDavid du Colombier SMB_CD_MAX = 5, 344*8ccd4a63SDavid du Colombier }; 345*8ccd4a63SDavid du Colombier 346*8ccd4a63SDavid du Colombier enum { 347*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_MASK = 0x0000ffff, 348*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_READ_DATA = 0x00000001, 349*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_WRITE_DATA = 0x00000002, 350*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_APPEND_DATA = 0x00000004, 351*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_READ_EA = 0x00000008, 352*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_WRITE_EA = 0x00000010, 353*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_EXECUTE = 0x00000020, 354*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_DELETE_CHILD = 0x00000040, 355*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_READ_ATTRIBUTES = 0x00000080, 356*8ccd4a63SDavid du Colombier SMB_DA_SPECIFIC_WRITE_ATTRIBUTES = 0x00000100, 357*8ccd4a63SDavid du Colombier SMB_DA_STANDARD_MASK = 0x00ff0000, 358*8ccd4a63SDavid du Colombier SMB_DA_STANDARD_DELETE_ACCESS = 0x00010000, 359*8ccd4a63SDavid du Colombier SMB_DA_STANDARD_READ_CONTROL_ACCESS = 0x00020000, 360*8ccd4a63SDavid du Colombier SMB_DA_STANDARD_WRITE_DAC_ACCESS = 0x00040000, 361*8ccd4a63SDavid du Colombier SMB_DA_STANDARD_WRITE_OWNER_ACCESS = 0x00080000, 362*8ccd4a63SDavid du Colombier SMB_DA_STANDARD_SYNCHRONIZE_ACCESS = 0x00100000, 363*8ccd4a63SDavid du Colombier SMB_DA_GENERIC_MASK = 0xf0000000, 364*8ccd4a63SDavid du Colombier SMB_DA_GENERIC_ALL_ACCESS = 0x10000000, 365*8ccd4a63SDavid du Colombier SMB_DA_GENERIC_EXECUTE_ACCESS = 0x20000000, 366*8ccd4a63SDavid du Colombier SMB_DA_GENERIC_WRITE_ACCESS = 0x40000000, 367*8ccd4a63SDavid du Colombier SMB_DA_GENERIC_READ_ACCESS = 0x80000000 368*8ccd4a63SDavid du Colombier }; 369*8ccd4a63SDavid du Colombier 370*8ccd4a63SDavid du Colombier enum { 371*8ccd4a63SDavid du Colombier SMB_SA_NO_SHARE = 0x00000000, 372*8ccd4a63SDavid du Colombier SMB_SA_SHARE_READ = 0x00000001, 373*8ccd4a63SDavid du Colombier SMB_SA_SHARE_WRITE = 0x00000002, 374*8ccd4a63SDavid du Colombier SMB_SA_SHARE_DELETE = 0x00000004, 375*8ccd4a63SDavid du Colombier }; 376*8ccd4a63SDavid du Colombier 377*8ccd4a63SDavid du Colombier enum { 378*8ccd4a63SDavid du Colombier SMB_CO_DIRECTORY = 0x00000001, 379*8ccd4a63SDavid du Colombier SMB_CO_WRITETHROUGH = 0x00000002, 380*8ccd4a63SDavid du Colombier SMB_CO_SEQUENTIAL_ONLY = 0x00000004, 381*8ccd4a63SDavid du Colombier SMB_CO_FILE = 0x00000040, 382*8ccd4a63SDavid du Colombier SMB_CO_NO_EA_KNOWLEDGE = 0x00000200, 383*8ccd4a63SDavid du Colombier SMB_CO_EIGHT_DOT_THREE_ONLY = 0x00000400, 384*8ccd4a63SDavid du Colombier SMB_CO_RANDOM_ACCESS = 0x00000800, 385*8ccd4a63SDavid du Colombier SMB_CO_DELETE_ON_CLOSE = 0x00001000, 386*8ccd4a63SDavid du Colombier }; 387*8ccd4a63SDavid du Colombier 388