[134] | 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 successful or not.
|
---|
| 240 | */
|
---|
| 241 | #define SMB_MAC_DT_ADD_ICON 0x309
|
---|
| 242 |
|
---|
| 243 | #endif /* _MAC_EXTENSIONS_H */
|
---|
| 244 |
|
---|
| 245 | /* _MAC_EXTENSIONS_H */
|
---|
| 246 |
|
---|