source: branches/samba-3.0/source/include/MacExtensions.h@ 104

Last change on this file since 104 was 1, checked in by Paul Smedley, 18 years ago

Initial code import

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