~vcs-imports/samba/main

« back to all changes in this revision

Viewing changes to source/include/MacExtensions.h

  • Committer: jerry
  • Date: 2006-07-14 21:48:39 UTC
  • Revision ID: vcs-imports@canonical.com-20060714214839-586d8c489a8fcead
gutting trunk to move to svn:externals

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
*/
54
 
typedef 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
 
 
65
 
typedef 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
 
 
132
 
enum {
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
 
 
155
 
enum {
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