source: vendor/current/source3/include/MacExtensions.h

Last change on this file was 988, checked in by Silvan Scherrer, 9 years ago

Samba Server: update vendor to version 4.4.3

File size: 9.4 KB
Line 
1/*
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
8
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.
13
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.
18
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/>.
21*/
22#ifndef _MAC_EXTENSIONS_H
23#define _MAC_EXTENSIONS_H
24
25/* Folder that holds the stream info */
26#define STREAM_FOLDER ".streams"
27#define STREAM_FOLDER_SLASH ".streams/"
28
29/* Common Streams Names*/
30#define DefaultStreamTestLen 6
31#define DefaultStreamTest ":$DATA"
32#define AFPDATA_STREAM "::$DATA"
33
34#define AFPINFO_STREAM_NAME ":AFP_AfpInfo"
35#define AFPRESOURCE_STREAM_NAME ":AFP_Resource"
36#define AFPCOMMENTS_STREAM_NAME ":Comments"
37#define AFPDESKTOP_STREAM_NAME ":AFP_DeskTop"
38#define AFPIDINDEX_STREAM_NAME ":AFP_IdIndex"
39
40#define AFPINFO_STREAM AFPINFO_STREAM_NAME ":$DATA"
41#define AFPRESOURCE_STREAM AFPRESOURCE_STREAM_NAME ":$DATA"
42#define AFPCOMMENTS_STREAM AFPCOMMENTS_STREAM_NAME ":$DATA"
43#define AFPDESKTOP_STREAM AFPDESKTOP_STREAM_NAME ":$DATA"
44#define AFPIDINDEX_STREAM AFPIDINDEX_STREAM_NAME ":$DATA"
45
46/*
47** NT's AFP_AfpInfo stream structure
48*/
49#define AFP_INFO_SIZE 0x3c
50#define AFP_Signature 0x41465000
51#define AFP_Version 0x00000100
52#define AFP_BackupTime 0x80000000
53#define AFP_FinderSize 32
54/*
55** Orginal AFP_AfpInfo stream used by NT
56** We needed a way to store the create date so SAMBA
57** AFP_AfpInfo adds for bytes to this structrure
58** and call's it _SambaAfpInfo
59*/
60typedef struct _AfpInfo
61{
62 uint32_t afpi_Signature; /* Must be *(PDWORD)"AFP" */
63 uint32_t afpi_Version; /* Must be 0x00010000 */
64 uint32_t afpi_Reserved1;
65 uint32_t afpi_BackupTime; /* Backup time for the file/dir */
66 unsigned char afpi_FinderInfo[AFP_FinderSize]; /* Finder Info (32 bytes) */
67 unsigned char afpi_ProDosInfo[6]; /* ProDos Info (6 bytes) # */
68 unsigned char afpi_Reserved2[6];
69} AfpInfo;
70
71typedef struct _SambaAfpInfo
72{
73 AfpInfo afp;
74 unsigned long createtime;
75} SambaAfpInfo;
76
77/*
78** On SAMBA this structrue is followed by 4 bytes that store the create
79** date of the file or folder asociated with it.
80*/
81
82/*
83** These extensions are only supported with the NT LM 0.12 Dialect. These extentions
84** will be process on a share by share bases.
85*/
86
87/*
88** Trans2_Query_FS_Information Call is used by the MacCIFS extensions for three reasons.
89** First to see if the remote server share supports the basic Macintosh CIFS extensions.
90** Second to return some basic need information about the share to the Macintosh.
91** Third to see if this share support any other Macintosh extensions.
92**
93** We will be using infromation levels that are betwwen 0x300 and 0x399 for all Macintosh
94** extensions calls. The first of these will be the SMB_MAC_QUERY_FS_INFO level which
95** will allow the server to return the MacQueryFSInfo structure. All fields are Little
96** Endian unless other wise specified.
97*/
98#define SMB_MAC_QUERY_FS_INFO 0x301
99
100
101
102/*
103** The server will return folder access control in the Trans2_Find_First2
104** and Trans2_Find_Next2 message described later in this document.
105*/
106#define SUPPORT_MAC_ACCESS_CNTRL 0x0010
107/*
108** The server supports setting/getting comments using the mechanism in this
109** document instead of using the NTFS format described in the Introduction.
110*/
111#define SUPPORT_MAC_GETSETCOMMENTS 0x0020
112/*
113** The Server supports setting and getting Macintosh desktop database information
114** using the mechanism in this document.
115*/
116#define SUPPORT_MAC_DESKTOPDB_CALLS 0x0040
117/*
118** The server will return a unique id for files and directories in the
119** Trans2_Find_First2 and Trans2_Find_Next2 message described later in this document.
120*/
121#define SUPPORT_MAC_UNIQUE_IDS 0x0080
122/*
123** The server will return this flag telling the client that the server does
124** not support streams or the Macintosh extensions. The rest of this message
125** will be ignored by the client.
126*/
127#define NO_STREAMS_OR_MAC_SUPPORT 0x0100
128
129/*
130** We will be adding a new info level to the Trans2_Find_First2 and Trans2_Find_Next2.
131** This info level will be SMB_MAC_FIND_BOTH_HFS_INFO and will support the server
132** return additional information need by the Macintosh. All fields are Little
133** Endian unless other wise specified.
134*/
135
136#define SMB_MAC_FIND_BOTH_HFS_INFO 0x302
137
138enum {
139 ownerRead = 0x0400,
140 ownerWrite = 0x0200,
141 ownerSearch = 0x0100,
142 groupRead = 0x0040,
143 groupWrite = 0x0020,
144 groupSearch = 0x0010,
145 otherRead = 0x0004,
146 otherWrite = 0x0002,
147 otherSearch = 0x0001,
148 Owner = 0x0800
149};
150
151
152/*
153** We will be adding a new info level to the Trans2_Set_Path_Information.
154** This info level will be SMB_MAC_SET_FINDER_INFO and will support the client
155** setting information on the server need by the Macintosh. All fields are Little
156** Endian unless other wise specified.
157*/
158
159#define SMB_MAC_SET_FINDER_INFO 0x303
160
161enum {
162 SetCreateDate = 0x01, /* If this is set then set the create date of the file/folder */
163 SetModDate = 0x02, /* If this is set then set the modify date of the file/folder */
164 SetFLAttrib = 0x04, /* If this is set then set the Macintosh lock bit of the file/folder */
165 FndrInfo1 = 0x08, /* If this is set then set the first 16 bytes of finder info */
166 FndrInfo2 = 0x10, /* If this is set then set the second 16 bytes of finder info */
167 SetHidden = 0x20 /* We are either setting or unsetting the hidden bit */
168};
169
170
171/*
172** We will be adding some new info level to the Trans2_Set_Path_Information and Trans2_Query_Path_Information.
173** These info levels will allow the client to add, get, and remove desktop inforamtion from the
174** server. How the server stores this information is up to them.
175*/
176
177/*
178** We need to be able to store an application name and its creator in a database. We send a
179** Trans2_Set_Path_Information call with the full path of the application in the path field.
180** We will send an info level that represents adding an application name and creator to the database.
181** We will pass the File Creator in the data message.
182**
183** The server should just respond with no error or an error.
184*/
185#define SMB_MAC_DT_ADD_APPL 0x304
186
187/*
188** We need to be able to remove an application name and its creator from a database. We send a
189** Trans2_Set_Path_Information call with the full path of the application in the path field.
190** We will send an info level that represents removing an application name and creator from the database.
191** We will pass the File Creator in the data message.
192**
193** The server should just respond with no error or an error.
194*/
195#define SMB_MAC_DT_REMOVE_APPL 0x305
196
197
198/*
199** We need to be able to get an application name and its creator from a database. We send a
200** Trans2_Query_Path_Information call in which the name field is just ignore.
201** We will send an info level that represents getting an application name with a structure that
202** contains the File Creator and index. Were index has the following meaning.
203** Index = 0; Get the application path from the database with the most current date.
204** Index > 0; Use the index to find the application path from the database.
205** e.g. index of 5 means get the fifth entry of this application name in the database.
206** if not entry return an error.
207**
208** The server returns with a structure that contains the full path to the appication and
209** its creator's date.
210*/
211#define SMB_MAC_DT_GET_APPL 0x306
212
213
214/*
215** We need to be able to get an icon from a database. We send a Trans2_Query_Path_Information call in
216** which the path name is ignore. We will send an info level that represents getting an icon with a structure
217** that contains the Requested size of the icon, the Icon type, File Creator, and File Type.
218**
219** The server returns with a structure that contains the actual size of the icon
220** (must be less than requested length) and the icon bit map.
221*/
222#define SMB_MAC_DT_GET_ICON 0x307
223
224
225/*
226** We need to be able to get an icon from a database. We send a Trans2_Query_Path_Information call in
227** which the path name is ignore. We will send an info level that represents getting an icon with a structure
228** that contains the index and File Creator. The index allows the client to make repeated calls to the server
229** gathering all icon stored by this file creator.
230**
231**
232** The server returns with a structure that contains the actual size of the icon
233** (must be less than requested length) and the icon bit map, File Type, and Icon Type.
234*/
235#define SMB_MAC_DT_GET_ICON_INFO 0x308
236
237
238
239/*
240** We need to be able to add an icon to a database. We send a Trans2_Set_Path_Information call in
241** which the path name is ignore. We will send an info level that represents setting an icon with a structure
242** that contains the icon data, icon size, icon type, the file type, and file creator.
243**
244**
245** The server returns only that the call was successful or not.
246*/
247#define SMB_MAC_DT_ADD_ICON 0x309
248
249#endif /* _MAC_EXTENSIONS_H */
250
251/* _MAC_EXTENSIONS_H */
252
Note: See TracBrowser for help on using the repository browser.