Add support for Exif decoding (initial framework).
[obnox/wireshark/wip.git] / packet-ftam.h
1 /* packet-ftam.h
2 *
3 * Routine to dissect OSI ISO 8571 FTAM Protocol packets
4 *
5 * $Id: packet-ftam.h,v 1.1 2004/03/23 19:51:06 guy Exp $
6 *
7 * Yuriy Sidelnikov <YSidelnikov@hotmail.com>
8 *
9 * Ethereal - Network traffic analyzer
10 * By Gerald Combs <gerald@ethereal.com>
11 * Copyright 1998 Gerald Combs
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
26 */
27
28 #define PROTO_STRING_FTAM "OSI ISO 8571 FTAM Protocol"
29 #define PROTO_STRING_FTAM_INFO "OSI ISO 8571 FTAM Protocol"
30
31 /* asn.1 definitions   */
32 #define ASN1_CLASS_UNIVERSAL                            0x00
33 #define ASN1_CLASS_APPLICATION                          0x40
34 #define ASN1_CLASS_CONTEXT_SPECIFIC                     0x80
35 #define ASN1_CLASS_Private                                      0xc0
36 #define ASN1_CLASS_PC                                           0x20
37
38 #define INTEGER_ITEM                                            0x01
39 #define BOOLEAN_ITEM                                            0x01
40
41 #define NBS9_OID                                                        0x2b
42
43 #define SEQUENCE                                                        0x30
44
45 /*    sequence top   */
46 #define TAG_00                                                                  0
47 #define TAG_01                                                                  1
48
49 enum
50 {
51 FTAM_F_INITIALIZE_REQUEST = 0xa0,
52 FTAM_F_INITIALIZE_RESPONSE,
53 FTAM_F_TERMINATE_REQUEST,
54 FTAM_F_TERMINATE_RESPONSE,
55 FTAM_F_U_ABORT_REQUEST,
56 FTAM_F_P_ABORT_REQUEST,
57 FTAM_F_SELECT_REQUEST,
58 FTAM_F_SELECT_RESPONSE,
59 FTAM_F_DESELECT_REQUEST,
60 FTAM_F_DESELECT_RESPONSE,
61 FTAM_F_CREATE_REQUEST,
62 FTAM_F_CREATE_RESPONSE,
63 FTAM_F_DELETE_REQUEST,
64 FTAM_F_DELETE_RESPONSE,
65 FTAM_F_READ_ATTRIB_REQUEST,
66 FTAM_F_READ_ATTRIB_RESPONSE,
67 FTAM_F_CHANGE_ATTRIB_REQUEST,
68 FTAM_F_CHANGE_ATTRIB_RESPONSE,
69 FTAM_F_OPEN_REQUEST,
70 FTAM_F_OPEN_RESPONSE,
71 FTAM_F_CLOSE_REQUEST,
72 FTAM_F_CLOSE_RESPONSE,
73 FTAM_F_BEGIN_GROUP_REQUEST,
74 FTAM_F_BEGIN_GROUP_RESPONSE,
75 FTAM_F_END_GROUP_REQUEST,
76 FTAM_F_END_GROUP_RESPONSE,
77 FTAM_F_RECOVER_REQUEST,
78 FTAM_F_RECOVER_RESPONSE,
79 FTAM_F_LOCATE_REQUEST,
80 FTAM_F_LOCATE_RESPONSE,
81 FTAM_F_ERASE_REQUEST,
82 FTAM_F_ERASE_RESPONSE
83 };
84 enum
85 {
86 FTAM_F_READ_REQUEST=0x20,
87 FTAM_F_WRITE_REQUEST,
88 FTAM_F_DATA_END_REQUEST,
89 FTAM_F_TRANSFER_END_REQUEST,
90 FTAM_F_TRANSFER_END_RESPONSE,
91 FTAM_F_CANCEL_REQUEST,
92 FTAM_F_CANCEL_RESPONSE,
93 FTAM_F_REASTART_REQUEST,
94 FTAM_F_REASTART_RESPONSE
95 };
96 enum
97 {
98 FTAM_PROTOCOL_VERSION,
99 FTAM_IMPLEMENTATION_INFORMATION,
100 FTAM_PRESENTATION_CONTEXT_MANAGEMENT,
101 FTAM_SERVICE_CLASS,
102 FTAM_FUNCTIONAL_UNITS,
103 FTAM_ATTRIBUTE_GROUPS,
104 FTAM_QUALITY_OF_SERVICE,
105 FTAM_CONTENTS_TYPE_LIST
106 };
107 /* pseudo value   */
108 #define FTAM_CHECKPOINT_WINDOW           55
109 #define FTAM_CHARGING                                           9
110 enum
111 {
112 FTAM_DIAGNOSTIC_TYPE=0x80,
113 FTAM_ERROR_IDENTIFIER,
114 FTAM_ERROR_OBSERVER,
115 FTAM_ERROR_SOURCE,
116 FTAM_SUGGESTED_DELAY,
117 FTAM_FURTHER_DETAILS
118 };
119 enum
120 {
121 FTAM_NO_CATEGORIZATION_POSSIBLE,
122 FTAM_INITIATING_FILE_SERVICE_USER,
123 FTAM_INITIATING_FILE_PROTOCOL_MASHINE,
124 FTAM_SERVICE_SUPPORTING_THE_FILE_PROTOCOL_MACHINE,
125 FTAM_RESPONDING_FILE_PROTOCOL_MASHINE,
126 FTAM_RESPONDING_FILE_SERVICE_USER
127 };
128 enum
129 {
130 FTAM_DIAGNOSTIC_INFORMATIVE,
131 FTAM_DIAGNOSTIC_TRANSIENT,
132 FTAM_DIAGNOSTIC_PERMANENT
133 };
134 enum
135 {
136 FTAM_RESPONSE_STATE_SUCCESS,
137 FTAM_RESPONSE_STATE_FAILURE
138 };
139 enum
140 {
141 FTAM_RESPONSE_ACTION_RESULT_SUCCESS,
142 FTAM_RESPONSE_ACTION_RESULT_TRANSIENT_ERROR,
143 FTAM_RESPONSE_ACTION_RESULT_PERMANENT_ERROR
144 };
145 enum
146 {
147 FTAM_PROCESSING_MODE,
148 FTAM_CONTENTS_TYPE,
149 FTAM_CONCURENCY_CONTROL,
150 FTAM_ENABLE_FADU_LOCKING,
151 FTAM_ACTIVITY_IDENTIFIER,
152 FTAM_RECOVERY_MODE,
153 FTAM_REMOTE_CONTEXTS,
154 FTAM_DEFINE_CONTEXTS
155 };
156 enum
157 {
158 FTAM_CONTENTS_TYPE_UNKNOWN,
159 FTAM_CONTENTS_TYPE_PROPOSED
160 };
161 enum
162 {
163 FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE,
164 FTAM_CONTENTS_TYPE_PROPOSED_CONSTRAINT_SET
165 };
166 enum
167 {
168 FTAM_CREATE_FAILURE,
169 FTAM_SELECT_OLD_FILE,
170 FTAM_DELETE_AND_CREATE_WITH_OLD_ATTRIBUTES,
171 FTAM_DELETE_AND_CREATE_WITH_NEW_ATTRIBUTES
172 };
173 enum
174 {
175 FTAM_FADU_FIRST_LAST,
176 FTAM_FADU_RELATIVE,
177 FTAM_FADU_BEGIN_END,
178 FTAM_FADU_SINGLE_NAME,
179 FTAM_FADU_NAME_LIST,
180 FTAM_FADU_FADU_NUMBER
181 };
182 enum
183 {
184 FTAM_FADU_FIRST,
185 FTAM_FADU_LAST
186 };
187 enum
188 {
189 FTAM_FADU_PREVIOUS,
190 FTAM_FADU_CURRENT,
191 FTAM_FADU_NEXT
192 };
193 enum
194 {
195 FTAM_FADU_BEGIN,
196 FTAM_FADU_END
197 };
198 enum
199 {
200 FTAM_HIERARCHICAL_ALL_DATA_UNITS,
201 FTAM_HIERARCHICAL_NO_DATA_UNITS,
202 FTAM_ALL_DATA_UNITS,
203 FTAM_ONE_LEVEL_DATA_UNITS,
204 FTAM_SINGLE_DATA_UNITS,
205 FTAM_UNSTRUCTURED_ALL_DATA_UNITS,
206 FTAM_UNSTRUCTURED_SINGLE_DATA_UNITS
207 };
208 enum
209 {
210 FTAM_ACCESS_INSERT,
211 FTAM_ACCESS_REPLACE,
212 FTAM_ACCESS_EXTEND
213 };
214 enum
215 {
216 FTAM_UNIVERSAL_CLASS_NUMBER,
217 FTAM_MAXIMUM_STRING_LENGTH,
218 FTAM_STRING_SIGNIFICANCE
219 };
220 enum
221 {
222 FTAM_VARIABLE,
223 FTAM_FIXED,
224 FTAM_NOT_SIGNIFICANT
225 };
226 enum
227 {
228 FTAM_READ_ATTRIBUTE_FILENAME,
229 FTAM_READ_ATTRIBUTE_PERMITTED_ACTIONS,
230 FTAM_READ_ATTRIBUTE_CONTENTS_TYPE,
231 FTAM_READ_ATTRIBUTE_STORAGE_ACCOUNT,
232 FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_CREATION,
233 FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_MODIFICATION,
234 FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_READ_ACCESS,
235 FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION,
236 FTAM_READ_ATTRIBUTE_IDENTITY_OF_CREATOR,
237 FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_MODIFIER,
238 FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_READER,
239 FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER,
240 FTAM_READ_ATTRIBUTE_FILE_AVAILABILITY,
241 FTAM_READ_ATTRIBUTE_FILESIZE,
242 FTAM_READ_ATTRIBUTE_FUTURE_FILESIZE,
243 FTAM_READ_ATTRIBUTE_ACCESS_CONTROL,
244 FTAM_READ_ATTRIBUTE_LEGAL_QUALIFICATION,
245 FTAM_READ_ATTRIBUTE_PRIVATE_USE
246 };
247
248
249 #define                 FTAM_DATE_AND_TIME_NO_VALUE_AVAILABLE                                           0x00
250 #define                 FTAM_DATE_AND_TIME_ACTUAL_VALUE                                                         0x01
251
252 #define                 FTAM_DATE_IDENTITY_NO_VALUE_AVAILABLE                                           0x00
253 #define                 FTAM_DATE_IDENTITY_ACTUAL_VALUE                                                         0x01
254
255
256 #define                 FTAM_USER_IDENTITY                                                                                      22
257
258 #define         FTAM_PRINTABLE_LENGTH                                   19
259 #define         FTAM_GRAPHIC_STRING                                             25
260 #define         FTAM_TELEX_STRING                                               20
261 #define         FTAM_VIDEO_STRING                                               21
262 #define         FTAM_IA5_STRING                                                 22
263 #define         FTAM_VISIBLE_STRING                                             26
264 #define         FTAM_GENERAL_STRING                                             27
265 #define         FTAM_OCTET_STRING                                               04
266 #define         FTAM_PRINTABLE_STRING                                   05
267 #define         FTAM_NODE_DESCRIPTOR_DATA_ELEMENT                                               0xa0
268 #define         FTAM_ENTER_SUBTREE_DATA_ELEMENT                                                 0xa1
269 #define         FTAM_EXIT_SUBTREE_DATA_ELEMENT                                                  0xa2
270 #define         FTAM_DATATYPE_NBS9                                                                              0xe2
271
272 #define         FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_NAME                                  14
273 #define         FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_PARAMETER                             0
274
275 #define FTAM_PROCESSING_MODE_READ                               0x0080
276 #define FTAM_PROCESSING_MODE_REPLACE                    0x0040
277 #define FTAM_PROCESSING_MODE_INSERT                             0x0020
278 #define FTAM_PROCESSING_MODE_EXTEND                             0x0010
279 #define FTAM_PROCESSING_MODE_ERASE                              0x0008
280
281
282 #define FTAM_NBS9_READ_FILENAME                                                                                 0x8000
283 #define FTAM_NBS9_READ_PERMITTED_ACTIONS                                                                0x4000
284 #define FTAM_NBS9_READ_CONTENTS_TYPE                                                                    0x2000
285 #define FTAM_NBS9_READ_STORAGE_ACCOUNT                                                                  0x1000
286 #define FTAM_NBS9_READ_DATE_AND_TIME_OF_CREATION                                                0x0800
287 #define FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_MODIFICATION                               0x0400
288 #define FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_READ_ACCESS                                0x0200
289 #define FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION             0x0100
290 #define FTAM_NBS9_READ_IDENTITY_OF_CREATOR                                                              0x0080
291 #define FTAM_NBS9_READ_IDENTITY_OF_LAST_MODIFIER                                                0x0040
292 #define FTAM_NBS9_READ_IDENTITY_OF_LAST_READER                                                  0x0020
293 #define FTAM_NBS9_READ_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER                              0x0010
294 #define FTAM_NBS9_READ_FILE_AVAILABILITY                                                                0x0008
295 #define FTAM_NBS9_READ_FILESIZE                                                                                 0x0004
296 #define FTAM_NBS9_READ_FUTURE_FILESIZE                                                                  0x0002
297 #define FTAM_NBS9_READ_ACCESS_CONTROL                                                                   0x0001
298 #define FTAM_NBS9_READ_LEGAL_QUALIFICATIONS                                                             0x80
299 #define FTAM_NBS9_READ_PRIVATE_USE                                                                              0x40
300
301
302
303 #define FTAM_SELECT_ATTRIBUTES                                                  19
304 #define FTAM_CREATE_ATTRIBUTES                                                  12
305 #define FTAM_ACCESS_REQUEST                                                             3
306 #define FTAM_ACCSESS_PASSWORDS                                                  2 
307 #define FTAM_OVERRIDE                                                                   0
308
309 #define FTAM_ACCSESS_PASSWORDS                                                  2 
310
311 #define FTAM_READ_ATTRIBUTES                                                    18
312
313
314
315 #define FTAM_CREATE_FILENAME_ATTRIBUTES                                 0
316 #define FTAM_CREATE_PERMITTED_ACTIONS_ATTRIBUTE                 1
317 #define FTAM_CREATE_CONTENTS_TYPE                                               2
318 #define FTAM_CREATE_ACCOUNT_ATTRIBUTE                                   3
319 #define FTAM_CREATE_FILE_AVAILABILITY_ATTRIBUTE                 12
320 #define FTAM_CREATE_FILESIZE_ATTRIBUTE                                  14
321 #define FTAM_CREATE_ACCESS_CONTROL_ATTRIBUTE                    15
322 #define FTAM_CREATE_ACCESS_LEGAL_AUALIFICATION_ATTRIBUTE        16
323 #define FTAM_CREATE_ACCESS_PRIVATE_USE_ATTRIBUTE                17
324
325 #define FTAM_FILE_ACCESS_DATA_UNIT_IDENTITY                             15
326 #define FTAM_FILE_ACCESS_CONTEXT                                                1
327 #define FTAM_FILE_FADU_LOCK                                                             16
328 #define FTAM_FILE_ACCESS_DATA_UNIT_OPERATION                    0
329 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_READ                                    0x8000
330 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_INSERT                                  0x4000
331 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_REPLACE                                 0x2000
332 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_EXTEND                                  0x1000
333 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_ERASE                                   0x0800
334 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_READ_ATTRIBUTE                  0x0400
335 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_CHANGE_ATTRIBUTE                0x0200
336 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_DELETE_FILE                             0x0100
337 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_TRAVERSAL                               0x0080
338 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_REVERSE_TRAVERSAL               0x0040
339 #define FTAM_PERMITTED_ACTION_ATTRIBUTE_RANDOM_ORDER                    0x0020
340
341
342 #define                 FTAM_ACCOUNT                                                    8
343 #define                 FTAM_FILESTORE_PASSWORD                                 17
344 #define                 FTAM_SHARED_ASE_INFORMATION                             20
345 #define                 FTAM_INITIATOR_IDENTIFY                                 22
346 #define                 FTAM_DOCUMENT_TYPE                                              0x4e
347
348 #define                 FTAM_ABSTRACT_SYNTAX_NAME                               0x40
349
350
351 /*  filename attributes   */
352 #define                 FTAM_FILENAME_ATTRIBUTE_READ                                    0x0080
353 #define                 FTAM_FILENAME_ATTRIBUTE_INSERT                                  0x0040
354 #define                 FTAM_FILENAME_ATTRIBUTE_REPLACE                                 0x0020
355 #define                 FTAM_FILENAME_ATTRIBUTE_EXTEND                                  0x0010
356 #define                 FTAM_FILENAME_ATTRIBUTE_ERASE                                   0x0008
357 #define                 FTAM_FILENAME_ATTRIBUTE_READ_ATTRIBUTE                  0x0004
358 #define                 FTAM_FILENAME_ATTRIBUTE_CHANGE_ATTRIBUTE                0x0002
359 #define                 FTAM_FILENAME_ATTRIBUTE_DELETE_FILE                             0x0001
360
361
362
363 #define         IMPLEMENTATION_INFORMATION                              29
364 #define         USER_INFORMATION                                                30
365
366 #define         ftam_EXTERNAL                                                   8
367
368 #define         FTAM_RESPONSE_STATE_RESULT                                      21
369 /* dummy entry */
370 #define         FTAM_RESPONSE_ACTION_RESULT                                     555
371 #define         FTAM_RESPONSE_SHARED_ASE_INFORMATION            20
372 #define         FTAM_RESPONSE_DIAGNOSTIC                                        13
373
374 /*   definition list **/
375 #define   PRESENTATION_CONTEXT_IDENTIFIER                2
376 #define   ABSTRACT_SYNTAX_NAME                                   6
377 #define   TRANSFER_SYNTAX_NAMES                                  0x30
378 /*   result    list */
379 #define   PRESENTATION_RESULT                                                           0x80
380 #define   PRESENTATION_RESULT_TRANSFER_SYNTAX_NAME                      0x81
381 #define   PRESENTATION_RESULT_INTEGER                                           0x82
382
383 /*     result  values  */
384 #define   PRESENTATION_RESULT_ACCEPTANCE                 0
385 #define   PRESENTATION_RESULT_USER_REJECTION     1
386 #define   PRESENTATION_RESULT_PROVIDER_REJECTION 2
387
388
389 /*  user data   */
390 #define   SIMPLY_ENCODED_DATA                                                                                   0x60
391 #define   FULLY_ENCODED_DATA                                                                                    0x61
392
393
394
395 #define                 FTAM_PROTOCOL_VERGION                                                                   0x0080
396
397 /*   functional units  */
398 #define                 FTAM_FUNCTIONAL_UNIT_READ                                                               0x2000
399 #define                 FTAM_FUNCTIONAL_UNIT_WRITE                                                              0x1000
400 #define                 FTAM_FUNCTIONAL_UNIT_FILE_ACCESS                                                0x0800
401 #define                 FTAM_FUNCTIONAL_UNIT_LIMITED_FILE_MANAGEMENT                    0x0400
402 #define                 FTAM_FUNCTIONAL_UNIT_ENHANCED_FILE_MANAGEMENT                   0x0200
403 #define                 FTAM_FUNCTIONAL_UNIT_GROUPING                                                   0x0100
404 #define                 FTAM_FUNCTIONAL_FADU_LOCKING                                                    0x0080
405 #define                 FTAM_FUNCTIONAL_UNIT_RECOVERY                                                   0x0040
406 #define                 FTAM_FUNCTIONAL_UNIT_RESTART_DATA_TRANSFER                              0x0020
407
408 /*    service classes   */
409 #define                 FTAM_FUNCTIONAL_UNIT_UNCONSTRAINED_CLASS                                0x80
410 #define                 FTAM_FUNCTIONAL_UNIT_MANAGEMENT_CLASS                                   0x40
411 #define                 FTAM_FUNCTIONAL_UNIT_TRANSFER_CLASS                                             0x20
412 #define                 FTAM_FUNCTIONAL_UNIT_TRANSFER_AND_MANAGEMENT_CLASS              0x10
413 #define                 FTAM_FUNCTIONAL_UNIT_ACESS_CLASS                                                0x08
414
415 /*     attribute  group  */
416 #define                 FTAM_ATTRIBUTE_GROUPS_STORAGE                                                   0x80
417 #define                 FTAM_ATTRIBUTE_GROUPS_SECURITY                                                  0x40
418 #define                 FTAM_ATTRIBUTE_GROUPS_PRIVATE                                                   0x20
419
420 #define                 DATA_BULK_PDU                                                                                   0xbf
421 #define                 MAXSTRING                                                                                               256
422 #define                 ABORT_REASON_LEN                        3
423
424
425
426 #define                 GRAPHIC_STRING                          "Graphic string"
427
428
429
430