2 Unix SMB/CIFS implementation.
3 SMB parameters and setup
4 Copyright (C) Andrew Tridgell 1992-1998
5 Copyright (C) John H Terpstra 1996-1998
6 Copyright (C) Luke Kenneth Casson Leighton 1996-1998
7 Copyright (C) Paul Ashton 1998
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef _MAC_EXTENSIONS_H
23 #define _MAC_EXTENSIONS_H
25 /* Folder that holds the stream info */
26 #define STREAM_FOLDER ".streams"
27 #define STREAM_FOLDER_SLASH ".streams/"
29 /* Common Streams Names*/
30 #define DefaultStreamTestLen 6
31 #define DefaultStreamTest ":$DATA"
32 #define AFPDATA_STREAM "::$DATA"
33 #define AFPINFO_STREAM ":AFP_AfpInfo:$DATA"
34 #define AFPRESOURCE_STREAM ":AFP_Resource:$DATA"
35 #define AFPCOMMENTS_STREAM ":Comments:$DATA"
36 #define AFPDESKTOP_STREAM ":AFP_DeskTop:$DATA"
37 #define AFPIDINDEX_STREAM ":AFP_IdIndex:$DATA"
40 ** NT's AFP_AfpInfo stream structure
42 #define APF_INFO_SIZE 0x3c
43 #define AFP_Signature 0x41465000
44 #define AFP_Version 0x00000100
45 #define AFP_BackupTime 0x00000080
46 #define AFP_FinderSize 32
48 ** Orginal AFP_AfpInfo stream used by NT
49 ** We needed a way to store the create date so SAMBA
50 ** AFP_AfpInfo adds for bytes to this structrure
51 ** and call's it _SambaAfpInfo
53 typedef struct _AfpInfo
55 uint32 afpi_Signature
; /* Must be *(PDWORD)"AFP" */
56 uint32 afpi_Version
; /* Must be 0x00010000 */
57 uint32 afpi_Reserved1
;
58 uint32 afpi_BackupTime
; /* Backup time for the file/dir */
59 unsigned char afpi_FinderInfo
[AFP_FinderSize
]; /* Finder Info (32 bytes) */
60 unsigned char afpi_ProDosInfo
[6]; /* ProDos Info (6 bytes) # */
61 unsigned char afpi_Reserved2
[6];
64 typedef struct _SambaAfpInfo
67 unsigned long createtime
;
71 ** On SAMBA this structrue is followed by 4 bytes that store the create
72 ** date of the file or folder asociated with it.
76 ** These extentions are only supported with the NT LM 0.12 Dialect. These extentions
77 ** will be process on a share by share bases.
81 ** Trans2_Query_FS_Information Call is used by the MacCIFS extentions for three reasons.
82 ** First to see if the remote server share supports the basic Macintosh CIFS extentions.
83 ** Second to return some basic need information about the share to the Macintosh.
84 ** Third to see if this share support any other Macintosh extentions.
86 ** We will be using infromation levels that are betwwen 0x300 and 0x399 for all Macintosh
87 ** extentions calls. The first of these will be the SMB_MAC_QUERY_FS_INFO level which
88 ** will allow the server to return the MacQueryFSInfo structure. All fields are Little
89 ** Endian unless other wise specified.
91 #define SMB_MAC_QUERY_FS_INFO 0x301
96 ** The server will return folder access control in the Trans2_Find_First2
97 ** and Trans2_Find_Next2 message described later in this document.
99 #define SUPPORT_MAC_ACCESS_CNTRL 0x0010
101 ** The server supports setting/getting comments using the mechanism in this
102 ** document instead of using the NTFS format described in the Introduction.
104 #define SUPPORT_MAC_GETSETCOMMENTS 0x0020
106 ** The Server supports setting and getting Macintosh desktop database information
107 ** using the mechanism in this document.
109 #define SUPPORT_MAC_DESKTOPDB_CALLS 0x0040
111 ** The server will return a unique id for files and directories in the
112 ** Trans2_Find_First2 and Trans2_Find_Next2 message described later in this document.
114 #define SUPPORT_MAC_UNIQUE_IDS 0x0080
116 ** The server will return this flag telling the client that the server does
117 ** not support streams or the Macintosh extensions. The rest of this message
118 ** will be ignored by the client.
120 #define NO_STREAMS_OR_MAC_SUPPORT 0x0100
123 ** We will be adding a new info level to the Trans2_Find_First2 and Trans2_Find_Next2.
124 ** This info level will be SMB_MAC_FIND_BOTH_HFS_INFO and will support the server
125 ** return additional information need by the Macintosh. All fields are Little
126 ** Endian unless other wise specified.
129 #define SMB_MAC_FIND_BOTH_HFS_INFO 0x302
134 ownerSearch
= 0x0100,
137 groupSearch
= 0x0010,
140 otherSearch
= 0x0001,
146 ** We will be adding a new info level to the Trans2_Set_Path_Information.
147 ** This info level will be SMB_MAC_SET_FINDER_INFO and will support the client
148 ** setting information on the server need by the Macintosh. All fields are Little
149 ** Endian unless other wise specified.
152 #define SMB_MAC_SET_FINDER_INFO 0x303
155 SetCreateDate
= 0x01, /* If this is set then set the create date of the file/folder */
156 SetModDate
= 0x02, /* If this is set then set the modify date of the file/folder */
157 SetFLAttrib
= 0x04, /* If this is set then set the Macintosh lock bit of the file/folder */
158 FndrInfo1
= 0x08, /* If this is set then set the first 16 bytes of finder info */
159 FndrInfo2
= 0x10, /* If this is set then set the second 16 bytes of finder info */
160 SetHidden
= 0x20 /* We are either setting or unsetting the hidden bit */
165 ** We will be adding some new info level to the Trans2_Set_Path_Information and Trans2_Query_Path_Information.
166 ** These info levels will allow the client to add, get, and remove desktop inforamtion from the
167 ** server. How the server stores this information is up to them.
171 ** We need to be able to store an application name and its creator in a database. We send a
172 ** Trans2_Set_Path_Information call with the full path of the application in the path field.
173 ** We will send an info level that represents adding an application name and creator to the database.
174 ** We will pass the File Creator in the data message.
176 ** The server should just respond with no error or an error.
178 #define SMB_MAC_DT_ADD_APPL 0x304
181 ** We need to be able to remove an application name and its creator from a database. We send a
182 ** Trans2_Set_Path_Information call with the full path of the application in the path field.
183 ** We will send an info level that represents removing an application name and creator from the database.
184 ** We will pass the File Creator in the data message.
186 ** The server should just respond with no error or an error.
188 #define SMB_MAC_DT_REMOVE_APPL 0x305
192 ** We need to be able to get an application name and its creator from a database. We send a
193 ** Trans2_Query_Path_Information call in which the name field is just ignore.
194 ** We will send an info level that represents getting an application name with a structure that
195 ** contains the File Creator and index. Were index has the following meaning.
196 ** Index = 0; Get the application path from the database with the most current date.
197 ** Index > 0; Use the index to find the application path from the database.
198 ** e.g. index of 5 means get the fifth entry of this application name in the database.
199 ** if not entry return an error.
201 ** The server returns with a structure that contains the full path to the appication and
202 ** its creator's date.
204 #define SMB_MAC_DT_GET_APPL 0x306
208 ** We need to be able to get an icon from a database. We send a Trans2_Query_Path_Information call in
209 ** which the path name is ignore. We will send an info level that represents getting an icon with a structure
210 ** that contains the Requested size of the icon, the Icon type, File Creator, and File Type.
212 ** The server returns with a structure that contains the actual size of the icon
213 ** (must be less than requested length) and the icon bit map.
215 #define SMB_MAC_DT_GET_ICON 0x307
219 ** We need to be able to get an icon from a database. We send a Trans2_Query_Path_Information call in
220 ** which the path name is ignore. We will send an info level that represents getting an icon with a structure
221 ** that contains the index and File Creator. The index allows the client to make repeated calls to the server
222 ** gathering all icon stored by this file creator.
225 ** The server returns with a structure that contains the actual size of the icon
226 ** (must be less than requested length) and the icon bit map, File Type, and Icon Type.
228 #define SMB_MAC_DT_GET_ICON_INFO 0x308
233 ** We need to be able to add an icon to a database. We send a Trans2_Set_Path_Information call in
234 ** which the path name is ignore. We will send an info level that represents setting an icon with a structure
235 ** that contains the icon data, icon size, icon type, the file type, and file creator.
238 ** The server returns only that the call was successful or not.
240 #define SMB_MAC_DT_ADD_ICON 0x309
242 #endif /* _MAC_EXTENSIONS_H */
244 /* _MAC_EXTENSIONS_H */