Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

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