• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/source4/libcli/raw/
1/*
2   Unix SMB/CIFS implementation.
3   SMB transaction2 handling
4   Copyright (C) Jeremy Allison 1994-2002.
5   Copyright (C) Andrew Tridgell 1995-2003.
6   Copyright (C) James Peach 2007
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 3 of the License, or
11   (at your option) any later version.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program.  If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#ifndef _TRANS2_H_
23#define _TRANS2_H_
24
25/* These are the TRANS2 sub commands */
26#define TRANSACT2_OPEN                        0
27#define TRANSACT2_FINDFIRST                   1
28#define TRANSACT2_FINDNEXT                    2
29#define TRANSACT2_QFSINFO                     3
30#define TRANSACT2_SETFSINFO                   4
31#define TRANSACT2_QPATHINFO                   5
32#define TRANSACT2_SETPATHINFO                 6
33#define TRANSACT2_QFILEINFO                   7
34#define TRANSACT2_SETFILEINFO                 8
35#define TRANSACT2_FSCTL                       9
36#define TRANSACT2_IOCTL                     0xA
37#define TRANSACT2_FINDNOTIFYFIRST           0xB
38#define TRANSACT2_FINDNOTIFYNEXT            0xC
39#define TRANSACT2_MKDIR                     0xD
40#define TRANSACT2_SESSION_SETUP             0xE
41#define TRANSACT2_GET_DFS_REFERRAL         0x10
42#define TRANSACT2_REPORT_DFS_INCONSISTANCY 0x11
43
44
45/* trans2 Query FS info levels */
46/*
47w2k3 TRANS2ALIASES:
48Checking for QFSINFO aliases
49        Found level    1 (0x001) of size 18 (0x12)
50        Found level    2 (0x002) of size 12 (0x0c)
51        Found level  258 (0x102) of size 26 (0x1a)
52        Found level  259 (0x103) of size 24 (0x18)
53        Found level  260 (0x104) of size  8 (0x08)
54        Found level  261 (0x105) of size 20 (0x14)
55        Found level 1001 (0x3e9) of size 26 (0x1a)
56        Found level 1003 (0x3eb) of size 24 (0x18)
57        Found level 1004 (0x3ec) of size  8 (0x08)
58        Found level 1005 (0x3ed) of size 20 (0x14)
59        Found level 1006 (0x3ee) of size 48 (0x30)
60        Found level 1007 (0x3ef) of size 32 (0x20)
61        Found level 1008 (0x3f0) of size 64 (0x40)
62Found 13 levels with success status
63        Level 261 (0x105) and level 1005 (0x3ed) are possible aliases
64        Level 260 (0x104) and level 1004 (0x3ec) are possible aliases
65        Level 259 (0x103) and level 1003 (0x3eb) are possible aliases
66        Level 258 (0x102) and level 1001 (0x3e9) are possible aliases
67Found 4 aliased levels
68*/
69#define SMB_QFS_ALLOCATION		                   1
70#define SMB_QFS_VOLUME			                   2
71#define SMB_QFS_VOLUME_INFO                            0x102
72#define SMB_QFS_SIZE_INFO                              0x103
73#define SMB_QFS_DEVICE_INFO                            0x104
74#define SMB_QFS_ATTRIBUTE_INFO                         0x105
75#define SMB_QFS_UNIX_INFO                              0x200
76#define SMB_QFS_POSIX_INFO                             0x201
77#define SMB_QFS_POSIX_WHOAMI                           0x202
78#define SMB_QFS_VOLUME_INFORMATION			1001
79#define SMB_QFS_SIZE_INFORMATION			1003
80#define SMB_QFS_DEVICE_INFORMATION			1004
81#define SMB_QFS_ATTRIBUTE_INFORMATION			1005
82#define SMB_QFS_QUOTA_INFORMATION			1006
83#define SMB_QFS_FULL_SIZE_INFORMATION			1007
84#define SMB_QFS_OBJECTID_INFORMATION			1008
85
86
87/* trans2 qfileinfo/qpathinfo */
88/* w2k3 TRANS2ALIASES:
89Checking for QPATHINFO aliases
90setting up complex file \qpathinfo_aliases.txt
91        Found level    1 (0x001) of size  22 (0x16)
92        Found level    2 (0x002) of size  26 (0x1a)
93        Found level    4 (0x004) of size  41 (0x29)
94        Found level    6 (0x006) of size   0 (0x00)
95        Found level  257 (0x101) of size  40 (0x28)
96        Found level  258 (0x102) of size  24 (0x18)
97        Found level  259 (0x103) of size   4 (0x04)
98        Found level  260 (0x104) of size  48 (0x30)
99        Found level  263 (0x107) of size 126 (0x7e)
100        Found level  264 (0x108) of size  28 (0x1c)
101        Found level  265 (0x109) of size  38 (0x26)
102        Found level  267 (0x10b) of size  16 (0x10)
103        Found level 1004 (0x3ec) of size  40 (0x28)
104        Found level 1005 (0x3ed) of size  24 (0x18)
105        Found level 1006 (0x3ee) of size   8 (0x08)
106        Found level 1007 (0x3ef) of size   4 (0x04)
107        Found level 1008 (0x3f0) of size   4 (0x04)
108        Found level 1009 (0x3f1) of size  48 (0x30)
109        Found level 1014 (0x3f6) of size   8 (0x08)
110        Found level 1016 (0x3f8) of size   4 (0x04)
111        Found level 1017 (0x3f9) of size   4 (0x04)
112        Found level 1018 (0x3fa) of size 126 (0x7e)
113        Found level 1021 (0x3fd) of size  28 (0x1c)
114        Found level 1022 (0x3fe) of size  38 (0x26)
115        Found level 1028 (0x404) of size  16 (0x10)
116        Found level 1034 (0x40a) of size  56 (0x38)
117        Found level 1035 (0x40b) of size   8 (0x08)
118Found 27 levels with success status
119        Level 267 (0x10b) and level 1028 (0x404) are possible aliases
120        Level 265 (0x109) and level 1022 (0x3fe) are possible aliases
121        Level 264 (0x108) and level 1021 (0x3fd) are possible aliases
122        Level 263 (0x107) and level 1018 (0x3fa) are possible aliases
123        Level 260 (0x104) and level 1009 (0x3f1) are possible aliases
124        Level 259 (0x103) and level 1007 (0x3ef) are possible aliases
125        Level 258 (0x102) and level 1005 (0x3ed) are possible aliases
126        Level 257 (0x101) and level 1004 (0x3ec) are possible aliases
127Found 8 aliased levels
128*/
129#define SMB_QFILEINFO_STANDARD                             1
130#define SMB_QFILEINFO_EA_SIZE                              2
131#define SMB_QFILEINFO_EA_LIST                              3
132#define SMB_QFILEINFO_ALL_EAS                              4
133#define SMB_QFILEINFO_IS_NAME_VALID                        6  /* only for QPATHINFO */
134#define SMB_QFILEINFO_BASIC_INFO	               0x101
135#define SMB_QFILEINFO_STANDARD_INFO	               0x102
136#define SMB_QFILEINFO_EA_INFO		               0x103
137#define SMB_QFILEINFO_NAME_INFO	                       0x104
138#define SMB_QFILEINFO_ALL_INFO		               0x107
139#define SMB_QFILEINFO_ALT_NAME_INFO	               0x108
140#define SMB_QFILEINFO_STREAM_INFO	               0x109
141#define SMB_QFILEINFO_COMPRESSION_INFO                 0x10b
142#define SMB_QFILEINFO_UNIX_BASIC                       0x200
143#define SMB_QFILEINFO_UNIX_LINK                        0x201
144#define SMB_QFILEINFO_UNIX_INFO2                       0x20b
145#define SMB_QFILEINFO_BASIC_INFORMATION			1004
146#define SMB_QFILEINFO_STANDARD_INFORMATION		1005
147#define SMB_QFILEINFO_INTERNAL_INFORMATION		1006
148#define SMB_QFILEINFO_EA_INFORMATION			1007
149#define SMB_QFILEINFO_ACCESS_INFORMATION		1008
150#define SMB_QFILEINFO_NAME_INFORMATION			1009
151#define SMB_QFILEINFO_POSITION_INFORMATION		1014
152#define SMB_QFILEINFO_MODE_INFORMATION			1016
153#define SMB_QFILEINFO_ALIGNMENT_INFORMATION		1017
154#define SMB_QFILEINFO_ALL_INFORMATION			1018
155#define SMB_QFILEINFO_ALT_NAME_INFORMATION	        1021
156#define SMB_QFILEINFO_STREAM_INFORMATION		1022
157#define SMB_QFILEINFO_COMPRESSION_INFORMATION		1028
158#define SMB_QFILEINFO_NETWORK_OPEN_INFORMATION		1034
159#define SMB_QFILEINFO_ATTRIBUTE_TAG_INFORMATION		1035
160
161
162
163/* trans2 setfileinfo/setpathinfo levels */
164/*
165w2k3 TRANS2ALIASES
166Checking for SETFILEINFO aliases
167setting up complex file \setfileinfo_aliases.txt
168        Found level    1 (0x001) of size   2 (0x02)
169        Found level    2 (0x002) of size   2 (0x02)
170        Found level  257 (0x101) of size  40 (0x28)
171        Found level  258 (0x102) of size   2 (0x02)
172        Found level  259 (0x103) of size   8 (0x08)
173        Found level  260 (0x104) of size   8 (0x08)
174        Found level 1004 (0x3ec) of size  40 (0x28)
175        Found level 1010 (0x3f2) of size   2 (0x02)
176        Found level 1013 (0x3f5) of size   2 (0x02)
177        Found level 1014 (0x3f6) of size   8 (0x08)
178        Found level 1016 (0x3f8) of size   4 (0x04)
179        Found level 1019 (0x3fb) of size   8 (0x08)
180        Found level 1020 (0x3fc) of size   8 (0x08)
181        Found level 1023 (0x3ff) of size   8 (0x08)
182        Found level 1025 (0x401) of size  16 (0x10)
183        Found level 1029 (0x405) of size  72 (0x48)
184        Found level 1032 (0x408) of size  56 (0x38)
185        Found level 1039 (0x40f) of size   8 (0x08)
186        Found level 1040 (0x410) of size   8 (0x08)
187Found 19 valid levels
188
189Checking for SETPATHINFO aliases
190        Found level 1004 (0x3ec) of size  40 (0x28)
191        Found level 1010 (0x3f2) of size   2 (0x02)
192        Found level 1013 (0x3f5) of size   2 (0x02)
193        Found level 1014 (0x3f6) of size   8 (0x08)
194        Found level 1016 (0x3f8) of size   4 (0x04)
195        Found level 1019 (0x3fb) of size   8 (0x08)
196        Found level 1020 (0x3fc) of size   8 (0x08)
197        Found level 1023 (0x3ff) of size   8 (0x08)
198        Found level 1025 (0x401) of size  16 (0x10)
199        Found level 1029 (0x405) of size  72 (0x48)
200        Found level 1032 (0x408) of size  56 (0x38)
201        Found level 1039 (0x40f) of size   8 (0x08)
202        Found level 1040 (0x410) of size   8 (0x08)
203Found 13 valid levels
204*/
205#define SMB_SFILEINFO_STANDARD                             1
206#define SMB_SFILEINFO_EA_SET                               2
207#define SMB_SFILEINFO_BASIC_INFO	               0x101
208#define SMB_SFILEINFO_DISPOSITION_INFO		       0x102
209#define SMB_SFILEINFO_ALLOCATION_INFO                  0x103
210#define SMB_SFILEINFO_END_OF_FILE_INFO                 0x104
211#define SMB_SFILEINFO_UNIX_BASIC                       0x200
212#define SMB_SFILEINFO_UNIX_LINK                        0x201
213#define SMB_SPATHINFO_UNIX_HLINK                       0x203
214#define SMB_SPATHINFO_POSIX_ACL                        0x204
215#define SMB_SPATHINFO_XATTR                            0x205
216#define SMB_SFILEINFO_ATTR_FLAGS                       0x206
217#define SMB_SFILEINFO_UNIX_INFO2                       0x20b
218#define SMB_SFILEINFO_BASIC_INFORMATION			1004
219#define SMB_SFILEINFO_RENAME_INFORMATION		1010
220#define SMB_SFILEINFO_LINK_INFORMATION			1011
221#define SMB_SFILEINFO_DISPOSITION_INFORMATION		1013
222#define SMB_SFILEINFO_POSITION_INFORMATION		1014
223#define SMB_SFILEINFO_FULL_EA_INFORMATION		1015
224#define SMB_SFILEINFO_MODE_INFORMATION			1016
225#define SMB_SFILEINFO_ALLOCATION_INFORMATION		1019
226#define SMB_SFILEINFO_END_OF_FILE_INFORMATION		1020
227#define SMB_SFILEINFO_PIPE_INFORMATION			1023
228#define SMB_SFILEINFO_VALID_DATA_INFORMATION		1039
229#define SMB_SFILEINFO_SHORT_NAME_INFORMATION		1040
230
231/* filemon shows FilePipeRemoteInformation */
232#define SMB_SFILEINFO_1025				1025
233
234/* vista scan responds */
235#define SMB_SFILEINFO_1027				1027
236
237/* filemon shows CopyOnWriteInformation */
238#define SMB_SFILEINFO_1029				1029
239
240/* filemon shows OleClassIdInformation */
241#define SMB_SFILEINFO_1032				1032
242
243/* vista scan responds to these */
244#define SMB_SFILEINFO_1030				1030
245#define SMB_SFILEINFO_1031				1031
246#define SMB_SFILEINFO_1036				1036
247#define SMB_SFILEINFO_1041				1041
248#define SMB_SFILEINFO_1042				1042
249#define SMB_SFILEINFO_1043				1043
250#define SMB_SFILEINFO_1044				1044
251
252/* trans2 findfirst levels */
253/*
254w2k3 TRANS2ALIASES:
255Checking for FINDFIRST aliases
256        Found level    1 (0x001) of size  68 (0x44)
257        Found level    2 (0x002) of size  70 (0x46)
258        Found level  257 (0x101) of size 108 (0x6c)
259        Found level  258 (0x102) of size 116 (0x74)
260        Found level  259 (0x103) of size  60 (0x3c)
261        Found level  260 (0x104) of size 140 (0x8c)
262        Found level  261 (0x105) of size 124 (0x7c)
263        Found level  262 (0x106) of size 148 (0x94)
264Found 8 levels with success status
265Found 0 aliased levels
266*/
267#define SMB_FIND_STANDARD		    1
268#define SMB_FIND_EA_SIZE		    2
269#define SMB_FIND_EA_LIST		    3
270#define SMB_FIND_DIRECTORY_INFO		0x101
271#define SMB_FIND_FULL_DIRECTORY_INFO	0x102
272#define SMB_FIND_NAME_INFO		0x103
273#define SMB_FIND_BOTH_DIRECTORY_INFO	0x104
274#define SMB_FIND_ID_FULL_DIRECTORY_INFO	0x105
275#define SMB_FIND_ID_BOTH_DIRECTORY_INFO 0x106
276#define SMB_FIND_UNIX_INFO              0x202
277#define SMB_FIND_UNIX_INFO2             0x20b
278
279/* flags on trans2 findfirst/findnext that control search */
280#define FLAG_TRANS2_FIND_CLOSE          0x1
281#define FLAG_TRANS2_FIND_CLOSE_IF_END   0x2
282#define FLAG_TRANS2_FIND_REQUIRE_RESUME 0x4
283#define FLAG_TRANS2_FIND_CONTINUE       0x8
284#define FLAG_TRANS2_FIND_BACKUP_INTENT  0x10
285
286/*
287 * DeviceType and Characteristics returned in a
288 * SMB_QFS_DEVICE_INFO call.
289 */
290#define QFS_DEVICETYPE_CD_ROM		        0x2
291#define QFS_DEVICETYPE_CD_ROM_FILE_SYSTEM	0x3
292#define QFS_DEVICETYPE_DISK			0x7
293#define QFS_DEVICETYPE_DISK_FILE_SYSTEM	        0x8
294#define QFS_DEVICETYPE_FILE_SYSTEM		0x9
295
296/* Characteristics. */
297#define QFS_TYPE_REMOVABLE_MEDIA		0x1
298#define QFS_TYPE_READ_ONLY_DEVICE		0x2
299#define QFS_TYPE_FLOPPY			        0x4
300#define QFS_TYPE_WORM			        0x8
301#define QFS_TYPE_REMOTE			        0x10
302#define QFS_TYPE_MOUNTED			0x20
303#define QFS_TYPE_VIRTUAL			0x40
304
305
306/*
307 * Thursby MAC extensions....
308 */
309
310/*
311 * MAC CIFS Extensions have the range 0x300 - 0x2FF reserved.
312 * Supposedly Microsoft have agreed to this.
313 */
314
315#define MIN_MAC_INFO_LEVEL                      0x300
316#define MAX_MAC_INFO_LEVEL                      0x3FF
317#define SMB_QFS_MAC_FS_INFO                     0x301
318
319
320
321/* UNIX CIFS Extensions - created by HP */
322/*
323 * UNIX CIFS Extensions have the range 0x200 - 0x2FF reserved.
324 * Supposedly Microsoft have agreed to this.
325 */
326
327#define MIN_UNIX_INFO_LEVEL 0x200
328#define MAX_UNIX_INFO_LEVEL 0x2FF
329
330#define INFO_LEVEL_IS_UNIX(level) (((level) >= MIN_UNIX_INFO_LEVEL) && ((level) <= MAX_UNIX_INFO_LEVEL))
331
332#define SMB_MODE_NO_CHANGE                 0xFFFFFFFF     /* file mode value which */
333                                              /* means "don't change it" */
334#define SMB_UID_NO_CHANGE                  0xFFFFFFFF
335#define SMB_GID_NO_CHANGE                  0xFFFFFFFF
336
337#define SMB_SIZE_NO_CHANGE_LO              0xFFFFFFFF
338#define SMB_SIZE_NO_CHANGE_HI              0xFFFFFFFF
339
340#define SMB_TIME_NO_CHANGE_LO              0xFFFFFFFF
341#define SMB_TIME_NO_CHANGE_HI              0xFFFFFFFF
342
343/*
344UNIX_BASIC  info level:
345
346Offset Size         Name
3470      LARGE_INTEGER EndOfFile                File size
3488      LARGE_INTEGER Blocks                   Number of bytes used on disk (st_blocks).
34916     LARGE_INTEGER CreationTime             Creation time
35024     LARGE_INTEGER LastAccessTime           Last access time
35132     LARGE_INTEGER LastModificationTime     Last modification time
35240     LARGE_INTEGER Uid                      Numeric user id for the owner
35348     LARGE_INTEGER Gid                      Numeric group id of owner
35456     ULONG Type                             Enumeration specifying the pathname type:
355                                              0 -- File
356                                              1 -- Directory
357                                              2 -- Symbolic link
358                                              3 -- Character device
359                                              4 -- Block device
360                                              5 -- FIFO (named pipe)
361                                              6 -- Unix domain socket
362
36360     LARGE_INTEGER devmajor                 Major device number if type is device
36468     LARGE_INTEGER devminor                 Minor device number if type is device
36576     LARGE_INTEGER uniqueid                 This is a server-assigned unique id for the file. The client
366                                              will typically map this onto an inode number. The scope of
367                                              uniqueness is the share.
36884     LARGE_INTEGER permissions              Standard UNIX file permissions  - see below.
36992     LARGE_INTEGER nlinks                   The number of directory entries that map to this entry
370                                              (number of hard links)
371
372100 - end.
373*/
374
375/*
376SMB_QUERY_FILE_UNIX_INFO2 is SMB_QUERY_FILE_UNIX_BASIC with create
377time and file flags appended. The corresponding info level for
378findfirst/findnext is SMB_FIND_FILE_UNIX_UNIX2.
379
380Size    Offset  Value
381---------------------
3820      LARGE_INTEGER EndOfFile  	File size
3838      LARGE_INTEGER Blocks     	Number of blocks used on disk
38416     LARGE_INTEGER ChangeTime 	Attribute change time
38524     LARGE_INTEGER LastAccessTime           Last access time
38632     LARGE_INTEGER LastModificationTime     Last modification time
38740     LARGE_INTEGER Uid        	Numeric user id for the owner
38848     LARGE_INTEGER Gid        	Numeric group id of owner
38956     ULONG Type               	Enumeration specifying the file type
39060     LARGE_INTEGER devmajor   	Major device number if type is device
39168     LARGE_INTEGER devminor   	Minor device number if type is device
39276     LARGE_INTEGER uniqueid   	This is a server-assigned unique id
39384     LARGE_INTEGER permissions        Standard UNIX permissions
39492     LARGE_INTEGER nlinks     	Number of hard link)
395100    LARGE_INTEGER CreationTime       Create/birth time
396108    ULONG FileFlags          	File flags enumeration
397112    ULONG FileFlagsMask      	Mask of valid flags
398*/
399
400/* UNIX filetype mappings. */
401
402#define UNIX_TYPE_FILE      0
403#define UNIX_TYPE_DIR       1
404#define UNIX_TYPE_SYMLINK   2
405#define UNIX_TYPE_CHARDEV   3
406#define UNIX_TYPE_BLKDEV    4
407#define UNIX_TYPE_FIFO      5
408#define UNIX_TYPE_SOCKET    6
409#define UNIX_TYPE_UNKNOWN   0xFFFFFFFF
410
411/*
412 * Oh this is fun. "Standard UNIX permissions" has no
413 * meaning in POSIX. We need to define the mapping onto
414 * and off the wire as this was not done in the original HP
415 * spec. JRA.
416 */
417
418#define UNIX_X_OTH			0000001
419#define UNIX_W_OTH			0000002
420#define UNIX_R_OTH			0000004
421#define UNIX_X_GRP			0000010
422#define UNIX_W_GRP                      0000020
423#define UNIX_R_GRP                      0000040
424#define UNIX_X_USR                      0000100
425#define UNIX_W_USR                      0000200
426#define UNIX_R_USR                      0000400
427#define UNIX_STICKY                     0001000
428#define UNIX_SET_GID                    0002000
429#define UNIX_SET_UID                    0004000
430
431/* Masks for the above */
432#define UNIX_OTH_MASK                   0000007
433#define UNIX_GRP_MASK                   0000070
434#define UNIX_USR_MASK                   0000700
435#define UNIX_PERM_MASK                  0000777
436#define UNIX_EXTRA_MASK                 0007000
437#define UNIX_ALL_MASK                   0007777
438
439/* Flags for the file_flags field in UNIX_INFO2: */
440#define EXT_SECURE_DELETE               0x00000001
441#define EXT_ENABLE_UNDELETE             0x00000002
442#define EXT_SYNCHRONOUS                 0x00000004
443#define EXT_IMMUTABLE			0x00000008
444#define EXT_OPEN_APPEND_ONLY            0x00000010
445#define EXT_DO_NOT_BACKUP               0x00000020
446#define EXT_NO_UPDATE_ATIME             0x00000040
447#define EXT_HIDDEN                      0x00000080
448
449#define SMB_QFILEINFO_UNIX_LINK         0x201
450#define SMB_SFILEINFO_UNIX_LINK         0x201
451#define SMB_SFILEINFO_UNIX_HLINK        0x203
452
453/*
454 Info level for QVOLINFO - returns version of CIFS UNIX extensions, plus
455 64-bits worth of capability fun :-).
456*/
457
458#define SMB_QUERY_CIFS_UNIX_INFO      0x200
459
460/* Returns the following.
461
462  UINT16             major version number
463  UINT16             minor version number
464  LARGE_INTEGER      capability bitfield
465
466*/
467
468#define CIFS_UNIX_MAJOR_VERSION 1
469#define CIFS_UNIX_MINOR_VERSION 0
470
471#define CIFS_UNIX_FCNTL_LOCKS_CAP           0x1
472#define CIFS_UNIX_POSIX_ACLS_CAP            0x2
473
474/* ... more as we think of them :-). */
475
476#endif
477