- dissect_ber_object_identifier() returns value as tvb
[obnox/wireshark/wip.git] / epan / dissectors / packet-ftam.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
3 /* .\packet-ftam.c                                                            */
4 /* ../../tools/asn2eth.py -X -b -e -p ftam -c ftam.cnf -s packet-ftam-template ISO8571-FTAM.asn */
5
6 /* Input file: packet-ftam-template.c */
7
8 /* packet-ftam_asn1.c
9  * Routine to dissect OSI ISO 8571 FTAM Protocol packets
10  * based on the ASN.1 specification from http://www.itu.int/ITU-T/asn1/database/iso/8571-4/1988/
11  *
12  * also based on original handwritten dissector by
13  * Yuriy Sidelnikov <YSidelnikov@hotmail.com>
14  *
15  * Anders Broman and Ronnie Sahlberg 2005
16  *
17  * $Id$
18  *
19  * Ethereal - Network traffic analyzer
20  * By Gerald Combs <gerald@ethereal.com>
21  * Copyright 1998 Gerald Combs
22  *
23  * This program is free software; you can redistribute it and/or
24  * modify it under the terms of the GNU General Public License
25  * as published by the Free Software Foundation; either version 2
26  * of the License, or (at your option) any later version.
27  *
28  * This program is distributed in the hope that it will be useful,
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
31  * GNU General Public License for more details.
32  *
33  * You should have received a copy of the GNU General Public License
34  * along with this program; if not, write to the Free Software
35  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
36  */
37
38 #ifdef HAVE_CONFIG_H
39 # include "config.h"
40 #endif
41
42 #include <glib.h>
43 #include <epan/packet.h>
44 #include <epan/conversation.h>
45
46 #include <stdio.h>
47 #include <string.h>
48
49 #include "packet-ber.h"
50 #include "packet-acse.h"
51 #include "packet-ftam.h"
52
53 #define PNAME  "ISO 8571 FTAM"
54 #define PSNAME "FTAM"
55 #define PFNAME "ftam"
56
57 /* Initialize the protocol and registered fields */
58 int proto_ftam = -1;
59
60 static const char *object_identifier_id;
61 /* Declare the function to avoid a compiler warning */
62 static int dissect_ftam_OR_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_);
63
64
65 /*--- Included file: packet-ftam-hf.c ---*/
66
67 static int hf_ftam_fTAM_Regime_PDU = -1;          /* FTAM_Regime_PDU */
68 static int hf_ftam_file_PDU = -1;                 /* File_PDU */
69 static int hf_ftam_bulk_Data_PDU = -1;            /* Bulk_Data_PDU */
70 static int hf_ftam_fSM_PDU = -1;                  /* FSM_PDU */
71 static int hf_ftam_nBS9 = -1;                     /* F_READ_ATTRIB_response */
72 static int hf_ftam_f_initialize_request = -1;     /* F_INITIALIZE_request */
73 static int hf_ftam_f_initialize_response = -1;    /* F_INITIALIZE_response */
74 static int hf_ftam_f_terminate_request = -1;      /* F_TERMINATE_request */
75 static int hf_ftam_f_terminate_response = -1;     /* F_TERMINATE_response */
76 static int hf_ftam_f_u_abort_request = -1;        /* F_U_ABORT_request */
77 static int hf_ftam_f_p_abort_request = -1;        /* F_P_ABORT_request */
78 static int hf_ftam_protocol_Version = -1;         /* Protocol_Version */
79 static int hf_ftam_implementation_information = -1;  /* Implementation_Information */
80 static int hf_ftam_presentation_tontext_management = -1;  /* BOOLEAN */
81 static int hf_ftam_service_class = -1;            /* Service_Class */
82 static int hf_ftam_functional_units = -1;         /* Functional_Units */
83 static int hf_ftam_attribute_groups = -1;         /* Attribute_Groups */
84 static int hf_ftam_shared_ASE_information = -1;   /* Shared_ASE_Information */
85 static int hf_ftam_ftam_quality_of_Service = -1;  /* FTAM_Quality_of_Service */
86 static int hf_ftam_contents_type_list = -1;       /* Contents_Type_List */
87 static int hf_ftam_initiator_identity = -1;       /* User_Identity */
88 static int hf_ftam_account = -1;                  /* Account */
89 static int hf_ftam_filestore_password = -1;       /* Password */
90 static int hf_ftam_checkpoint_window = -1;        /* INTEGER */
91 static int hf_ftam_state_result = -1;             /* State_Result */
92 static int hf_ftam_action_result = -1;            /* Action_Result */
93 static int hf_ftam_diagnostic = -1;               /* Diagnostic */
94 static int hf_ftam_Contents_Type_List_item = -1;  /* Contents_Type_List_item */
95 static int hf_ftam_document_type_name = -1;       /* Document_Type_Name */
96 static int hf_ftam_abstract_Syntax_name = -1;     /* Abstract_Syntax_Name */
97 static int hf_ftam_charging = -1;                 /* Charging */
98 static int hf_ftam_f_select_request = -1;         /* F_SELECT_request */
99 static int hf_ftam_f_select_response = -1;        /* F_SELECT_response */
100 static int hf_ftam_f_deselect_request = -1;       /* F_DESELECT_request */
101 static int hf_ftam_f_deselect_response = -1;      /* F_DESELECT_response */
102 static int hf_ftam_f_create_request = -1;         /* F_CREATE_request */
103 static int hf_ftam_f_create_response = -1;        /* F_CREATE_response */
104 static int hf_ftam_f_delete_request = -1;         /* F_DELETE_request */
105 static int hf_ftam_f_delete_response = -1;        /* F_DELETE_response */
106 static int hf_ftam_f_read_attrib_request = -1;    /* F_READ_ATTRIB_request */
107 static int hf_ftam_f_read_attrib_response = -1;   /* F_READ_ATTRIB_response */
108 static int hf_ftam_f_Change_attrib_reques = -1;   /* F_CHANGE_ATTRIB_request */
109 static int hf_ftam_f_Change_attrib_respon = -1;   /* F_CHANGE_ATTRIB_response */
110 static int hf_ftam_f_open_request = -1;           /* F_OPEN_request */
111 static int hf_ftam_f_open_response = -1;          /* F_OPEN_response */
112 static int hf_ftam_f_close_request = -1;          /* F_CLOSE_request */
113 static int hf_ftam_f_close_response = -1;         /* F_CLOSE_response */
114 static int hf_ftam_f_begin_group_request = -1;    /* F_BEGIN_GROUP_request */
115 static int hf_ftam_f_begin_group_response = -1;   /* F_BEGIN_GROUP_response */
116 static int hf_ftam_f_end_group_request = -1;      /* F_END_GROUP_request */
117 static int hf_ftam_f_end_group_response = -1;     /* F_END_GROUP_response */
118 static int hf_ftam_f_recover_request = -1;        /* F_RECOVER_request */
119 static int hf_ftam_f_recover_response = -1;       /* F_RECOVER_response */
120 static int hf_ftam_f_locate_request = -1;         /* F_LOCATE_request */
121 static int hf_ftam_f_locate_response = -1;        /* F_LOCATE_response */
122 static int hf_ftam_f_erase_request = -1;          /* F_ERASE_request */
123 static int hf_ftam_f_erase_response = -1;         /* F_ERASE_response */
124 static int hf_ftam_select_attributes = -1;        /* Select_Attributes */
125 static int hf_ftam_requested_access = -1;         /* Access_Request */
126 static int hf_ftam_access_passwords = -1;         /* Access_Passwords */
127 static int hf_ftam_path_access_passwords = -1;    /* Path_Access_Passwords */
128 static int hf_ftam_concurrency_control = -1;      /* Concurrency_Control */
129 static int hf_ftam_referent_indicator = -1;       /* Referent_Indicator */
130 static int hf_ftam_override = -1;                 /* Override */
131 static int hf_ftam_initial_attributes = -1;       /* Create_Attributes */
132 static int hf_ftam_create_password = -1;          /* Password */
133 static int hf_ftam_attribute_names = -1;          /* Attribute_Names */
134 static int hf_ftam_attribute_extension_names = -1;  /* Attribute_Extension_Names */
135 static int hf_ftam_read_attributes = -1;          /* Read_Attributes */
136 static int hf_ftam_attributes = -1;               /* Change_Attributes */
137 static int hf_ftam_processing_mode = -1;          /* T_processing_mode */
138 static int hf_ftam_open_contents_type = -1;       /* T_contents_type */
139 static int hf_ftam_unknown = -1;                  /* NULL */
140 static int hf_ftam_proposed = -1;                 /* Contents_Type_Attribute */
141 static int hf_ftam_enable_fadu_locking = -1;      /* BOOLEAN */
142 static int hf_ftam_activity_identifier = -1;      /* Activity_Identifier */
143 static int hf_ftam_request_recovery_mode = -1;    /* T_request_recovery_mode */
144 static int hf_ftam_remove_contexts = -1;          /* SET_OF_Abstract_Syntax_Name */
145 static int hf_ftam_remove_contexts_item = -1;     /* Abstract_Syntax_Name */
146 static int hf_ftam_define_contexts = -1;          /* SET_OF_Abstract_Syntax_Name */
147 static int hf_ftam_define_contexts_item = -1;     /* Abstract_Syntax_Name */
148 static int hf_ftam_degree_of_overlap = -1;        /* Degree_Of_Overlap */
149 static int hf_ftam_transfer_window = -1;          /* INTEGER */
150 static int hf_ftam_contents_type = -1;            /* Contents_Type_Attribute */
151 static int hf_ftam_response_recovery_mode = -1;   /* T_response_recovery_mode */
152 static int hf_ftam_presentation_action = -1;      /* BOOLEAN */
153 static int hf_ftam_threshold = -1;                /* INTEGER */
154 static int hf_ftam_bulk_transfer_number = -1;     /* INTEGER */
155 static int hf_ftam_recovefy_Point = -1;           /* INTEGER */
156 static int hf_ftam_concurrent_bulk_transfer_number = -1;  /* INTEGER */
157 static int hf_ftam_concurrent_recovery_point = -1;  /* INTEGER */
158 static int hf_ftam_last_transfer_end_read_response = -1;  /* INTEGER */
159 static int hf_ftam_last_transfer_end_write_response = -1;  /* INTEGER */
160 static int hf_ftam_recovety_Point = -1;           /* INTEGER */
161 static int hf_ftam_last_transfer_end_read_request = -1;  /* INTEGER */
162 static int hf_ftam_last_transfer_end_write_request = -1;  /* INTEGER */
163 static int hf_ftam_file_access_data_unit_identity = -1;  /* FADU_Identity */
164 static int hf_ftam_fadu_lock = -1;                /* FADU_Lock */
165 static int hf_ftam_f_read_request = -1;           /* F_READ_request */
166 static int hf_ftam_f_write_request = -1;          /* F_WRITE_request */
167 static int hf_ftam_f_data_end_request = -1;       /* F_DATA_END_request */
168 static int hf_ftam_f_transfer_end_request = -1;   /* F_TRANSFER_END_request */
169 static int hf_ftam_f_transfer_end_response = -1;  /* F_TRANSFER_END_response */
170 static int hf_ftam_f_cancel_request = -1;         /* F_CANCEL_request */
171 static int hf_ftam_f_cancel_response = -1;        /* F_CANCEL_response */
172 static int hf_ftam_f_restart_request = -1;        /* F_RESTART_request */
173 static int hf_ftam_f_restart_response = -1;       /* F_RESTART_response */
174 static int hf_ftam_read_access_context = -1;      /* Access_Context */
175 static int hf_ftam_transfer_number = -1;          /* INTEGER */
176 static int hf_ftam_file_access_data_unit_Operation = -1;  /* T_file_access_data_unit_Operation */
177 static int hf_ftam_request_type = -1;             /* Request_Type */
178 static int hf_ftam_checkpoint_identifier = -1;    /* INTEGER */
179 static int hf_ftam_access_context = -1;           /* T_access_context */
180 static int hf_ftam_level_number = -1;             /* INTEGER */
181 static int hf_ftam_read_password = -1;            /* Password */
182 static int hf_ftam_insert_password = -1;          /* Password */
183 static int hf_ftam_replace_password = -1;         /* Password */
184 static int hf_ftam_extend_password = -1;          /* Password */
185 static int hf_ftam_erase_password = -1;           /* Password */
186 static int hf_ftam_read_attribute_password = -1;  /* Password */
187 static int hf_ftam_change_attribute_password = -1;  /* Password */
188 static int hf_ftam_delete_password = -1;          /* Password */
189 static int hf_ftam_pass_passwords = -1;           /* Pass_Passwords */
190 static int hf_ftam_link_password = -1;            /* Password */
191 static int hf_ftam_pathname = -1;                 /* Pathname_Attribute */
192 static int hf_ftam_storage_account = -1;          /* Account_Attribute */
193 static int hf_ftam_object_availability = -1;      /* Object_Availability_Attribute */
194 static int hf_ftam_future_Object_size = -1;       /* Object_Size_Attribute */
195 static int hf_ftam_change_attributes_access_control = -1;  /* Access_Control_Change_Attribute */
196 static int hf_ftam_change_path_access_control = -1;  /* Access_Control_Change_Attribute */
197 static int hf_ftam_legal_qualification = -1;      /* Legal_Qualification_Attribute */
198 static int hf_ftam_private_use = -1;              /* Private_Use_Attribute */
199 static int hf_ftam_attribute_extensions = -1;     /* Attribute_Extensions */
200 static int hf_ftam_Charging_item = -1;            /* Charging_item */
201 static int hf_ftam_resource_identifier = -1;      /* GraphicString */
202 static int hf_ftam_charging_unit = -1;            /* GraphicString */
203 static int hf_ftam_charging_value = -1;           /* INTEGER */
204 static int hf_ftam_read_lock = -1;                /* Lock */
205 static int hf_ftam_insert_lock = -1;              /* Lock */
206 static int hf_ftam_replace_lock = -1;             /* Lock */
207 static int hf_ftam_extend_lock = -1;              /* Lock */
208 static int hf_ftam_erase_lock = -1;               /* Lock */
209 static int hf_ftam_read_attribute_lock = -1;      /* Lock */
210 static int hf_ftam_change_attribute_lock = -1;    /* Lock */
211 static int hf_ftam_delete_Object_lock = -1;       /* Lock */
212 static int hf_ftam_object_type = -1;              /* Object_Type_Attribute */
213 static int hf_ftam_permitted_actions = -1;        /* Permitted_Actions_Attribute */
214 static int hf_ftam_access_control = -1;           /* Access_Control_Attribute */
215 static int hf_ftam_create_path_access_control = -1;  /* Access_Control_Attribute */
216 static int hf_ftam_Diagnostic_item = -1;          /* Diagnostic_item */
217 static int hf_ftam_diagnostic_type = -1;          /* T_diagnostic_type */
218 static int hf_ftam_error_identifier = -1;         /* INTEGER */
219 static int hf_ftam_error_observer = -1;           /* Entity_Reference */
220 static int hf_ftam_error_Source = -1;             /* Entity_Reference */
221 static int hf_ftam_suggested_delay = -1;          /* INTEGER */
222 static int hf_ftam_further_details = -1;          /* GraphicString */
223 static int hf_ftam_first_last = -1;               /* T_first_last */
224 static int hf_ftam_relative = -1;                 /* T_relative */
225 static int hf_ftam_begin_end = -1;                /* T_begin_end */
226 static int hf_ftam_single_name = -1;              /* Node_Name */
227 static int hf_ftam_name_list = -1;                /* SEQUENCE_OF_Node_Name */
228 static int hf_ftam_name_list_item = -1;           /* Node_Name */
229 static int hf_ftam_fadu_number = -1;              /* INTEGER */
230 static int hf_ftam_graphicString = -1;            /* GraphicString */
231 static int hf_ftam_octetString = -1;              /* OCTET_STRING */
232 static int hf_ftam_linked_Object = -1;            /* Pathname_Attribute */
233 static int hf_ftam_child_objects = -1;            /* Child_Objects_Attribute */
234 static int hf_ftam_primaty_pathname = -1;         /* Pathname_Attribute */
235 static int hf_ftam_date_and_time_of_creation = -1;  /* Date_and_Time_Attribute */
236 static int hf_ftam_date_and_time_of_last_modification = -1;  /* Date_and_Time_Attribute */
237 static int hf_ftam_date_and_time_of_last_read_access = -1;  /* Date_and_Time_Attribute */
238 static int hf_ftam_date_and_time_of_last_attribute_modification = -1;  /* Date_and_Time_Attribute */
239 static int hf_ftam_identity_of_creator = -1;      /* User_Identity_Attribute */
240 static int hf_ftam_identity_of_last_modifier = -1;  /* User_Identity_Attribute */
241 static int hf_ftam_identity_of_last_reader = -1;  /* User_Identity_Attribute */
242 static int hf_ftam_identity_last_attribute_modifier = -1;  /* User_Identity_Attribute */
243 static int hf_ftam_object_size = -1;              /* Object_Size_Attribute */
244 static int hf_ftam_path_access_control = -1;      /* Access_Control_Attribute */
245 static int hf_ftam_no_value_available = -1;       /* NULL */
246 static int hf_ftam_actual_values3 = -1;           /* SET_OF_Access_Control_Element */
247 static int hf_ftam_actual_values_item = -1;       /* Access_Control_Element */
248 static int hf_ftam_actual_values1 = -1;           /* T_actual_values1 */
249 static int hf_ftam_insert_values = -1;            /* SET_OF_Access_Control_Element */
250 static int hf_ftam_insert_values_item = -1;       /* Access_Control_Element */
251 static int hf_ftam_delete_values = -1;            /* SET_OF_Access_Control_Element */
252 static int hf_ftam_delete_values_item = -1;       /* Access_Control_Element */
253 static int hf_ftam_action_list = -1;              /* Access_Request */
254 static int hf_ftam_concurrency_access = -1;       /* Concurrency_Access */
255 static int hf_ftam_identity = -1;                 /* User_Identity */
256 static int hf_ftam_passwords = -1;                /* Access_Passwords */
257 static int hf_ftam_location = -1;                 /* Application_Entity_Title */
258 static int hf_ftam_read_key = -1;                 /* Concurrency_Key */
259 static int hf_ftam_insert_key = -1;               /* Concurrency_Key */
260 static int hf_ftam_replace_key = -1;              /* Concurrency_Key */
261 static int hf_ftam_extend_key = -1;               /* Concurrency_Key */
262 static int hf_ftam_erase_key = -1;                /* Concurrency_Key */
263 static int hf_ftam_read_attribute_key = -1;       /* Concurrency_Key */
264 static int hf_ftam_change_attribute_key = -1;     /* Concurrency_Key */
265 static int hf_ftam_delete_Object_key = -1;        /* Concurrency_Key */
266 static int hf_ftam_actual_values2 = -1;           /* Account */
267 static int hf_ftam_document_type = -1;            /* T_document_type */
268 static int hf_ftam_parameter = -1;                /* T_parameter */
269 static int hf_ftam_constraint_set_and_abstract_Syntax = -1;  /* T_constraint_set_and_abstract_Syntax */
270 static int hf_ftam_constraint_set_name = -1;      /* Constraint_Set_Name */
271 static int hf_ftam_actual_values5 = -1;           /* GeneralizedTime */
272 static int hf_ftam_actual_values8 = -1;           /* T_actual_values */
273 static int hf_ftam_incomplete_pathname = -1;      /* Pathname */
274 static int hf_ftam_complete_pathname = -1;        /* Pathname */
275 static int hf_ftam_actual_values7 = -1;           /* INTEGER */
276 static int hf_ftam_actual_values9 = -1;           /* GraphicString */
277 static int hf_ftam_abstract_Syntax_not_supported = -1;  /* NULL */
278 static int hf_ftam_actual_values4 = -1;           /* EXTERNAL */
279 static int hf_ftam_actual_values6 = -1;           /* User_Identity */
280 static int hf_ftam_Child_Objects_Attribute_item = -1;  /* GraphicString */
281 static int hf_ftam_f_Change_prefix_request = -1;  /* F_CHANGE_PREFIX_request */
282 static int hf_ftam_f_Change_prefix_response = -1;  /* F_CHANGE_PREFIX_response */
283 static int hf_ftam_f_list_request = -1;           /* F_LIST_request */
284 static int hf_ftam_f_list_response = -1;          /* F_LIST_response */
285 static int hf_ftam_f_group_select_request = -1;   /* F_GROUP_SELECT_request */
286 static int hf_ftam_f_group_select_response = -1;  /* F_GROUP_SELECT_response */
287 static int hf_ftam_f_group_delete_request = -1;   /* F_GROUP_DELETE_request */
288 static int hf_ftam_f_group_delete_response = -1;  /* F_GROUP_DELETE_response */
289 static int hf_ftam_f_group_move_request = -1;     /* F_GROUP_MOVE_request */
290 static int hf_ftam_f_group_move_response = -1;    /* F_GROUP_MOVE_response */
291 static int hf_ftam_f_group_copy_request = -1;     /* F_GROUP_COPY_request */
292 static int hf_ftam_f_group_copy_response = -1;    /* F_GROUP_COPY_response */
293 static int hf_ftam_f_group_list_request = -1;     /* F_GROUP_LIST_request */
294 static int hf_ftam_f_group_list_response = -1;    /* F_GROUP_LIST_response */
295 static int hf_ftam_f_group_Change_attrib_request = -1;  /* F_GROUP_CHANGE_ATTRIB_request */
296 static int hf_ftam_f_group_Change_attrib_response = -1;  /* F_GROUP_CHANGE_ATTRIB_response */
297 static int hf_ftam_f_select_another_request = -1;  /* F_SELECT_ANOTHER_request */
298 static int hf_ftam_f_select_another_response = -1;  /* F_SELECT_ANOTHER_response */
299 static int hf_ftam_f_create_directory_request = -1;  /* F_CREATE_DIRECTORY_request */
300 static int hf_ftam_f_create_directory_response = -1;  /* F_CREATE_DIRECTORY_response */
301 static int hf_ftam_f_link_request = -1;           /* F_LINK_request */
302 static int hf_ftam_f_link_response = -1;          /* F_LINK_response */
303 static int hf_ftam_f_unlink_request = -1;         /* F_UNLINK_request */
304 static int hf_ftam_f_unlink_response = -1;        /* F_UNLINK_response */
305 static int hf_ftam_f_read_link_attrib_request = -1;  /* F_READ_LINK_ATTRIB_request */
306 static int hf_ftam_f_read_link_attrib_response = -1;  /* F_READ_LINK_ATTRIB_response */
307 static int hf_ftam_f_Change_link_attrib_request = -1;  /* F_CHANGE_LINK_ATTRIB_request */
308 static int hf_ftam_f_Change_Iink_attrib_response = -1;  /* F_CHANGE_LINK_ATTRIB_response */
309 static int hf_ftam_f_move_request = -1;           /* F_MOVE_request */
310 static int hf_ftam_f_move_response = -1;          /* F_MOVE_response */
311 static int hf_ftam_f_copy_request = -1;           /* F_COPY_request */
312 static int hf_ftam_f_copy_response = -1;          /* F_COPY_response */
313 static int hf_ftam_reset = -1;                    /* BOOLEAN */
314 static int hf_ftam_destination_file_directory = -1;  /* Destination_File_Directory */
315 static int hf_ftam_attribute_value_asset_tions = -1;  /* Attribute_Value_Assertions */
316 static int hf_ftam_scope = -1;                    /* Scope */
317 static int hf_ftam_objects_attributes_list = -1;  /* Objects_Attributes_List */
318 static int hf_ftam_attribute_value_assertions = -1;  /* Attribute_Value_Assertions */
319 static int hf_ftam_maximum_set_size = -1;         /* INTEGER */
320 static int hf_ftam_request_Operation_result = -1;  /* Request_Operation_Result */
321 static int hf_ftam_operation_result = -1;         /* Operation_Result */
322 static int hf_ftam_error_action = -1;             /* Error_Action */
323 static int hf_ftam_last_member_indicator = -1;    /* BOOLEAN */
324 static int hf_ftam_shared_ASE_infonnation = -1;   /* Shared_ASE_Information */
325 static int hf_ftam_target_object = -1;            /* Pathname_Attribute */
326 static int hf_ftam_target_Object = -1;            /* Pathname_Attribute */
327 static int hf_ftam_read_link_attributes = -1;     /* Read_Attributes */
328 static int hf_ftam_Attribute_Extension_Names_item = -1;  /* Attribute_Extension_Set_Name */
329 static int hf_ftam_extension_set_identifier = -1;  /* Extension_Set_Identifier */
330 static int hf_ftam_extension_attribute_names = -1;  /* SEQUENCE_OF_Extension_Attribute_identifier */
331 static int hf_ftam_extension_attribute_names_item = -1;  /* Extension_Attribute_identifier */
332 static int hf_ftam_Attribute_Extensions_item = -1;  /* Attribute_Extension_Set */
333 static int hf_ftam_extension_set_attributes = -1;  /* SEQUENCE_OF_Extension_Attribute */
334 static int hf_ftam_extension_set_attributes_item = -1;  /* Extension_Attribute */
335 static int hf_ftam_extension_attribute_identifier = -1;  /* T_extension_attribute_identifier */
336 static int hf_ftam_extension_attribute = -1;      /* T_extension_attribute */
337 static int hf_ftam_Scope_item = -1;               /* Scope_item */
338 static int hf_ftam_root_directory = -1;           /* Pathname_Attribute */
339 static int hf_ftam_retrieval_scope = -1;          /* T_retrieval_scope */
340 static int hf_ftam_OR_Set_item = -1;              /* AND_Set */
341 static int hf_ftam_AND_Set_item = -1;             /* AND_Set_item */
342 static int hf_ftam_pathname_Pattern = -1;         /* Pathname_Pattern */
343 static int hf_ftam_object_type_Pattern = -1;      /* Integer_Pattern */
344 static int hf_ftam_permitted_actions_Pattern = -1;  /* Bitstring_Pattern */
345 static int hf_ftam_contents_type_Pattern = -1;    /* Contents_Type_Pattern */
346 static int hf_ftam_linked_Object_Pattern = -1;    /* Pathname_Pattern */
347 static int hf_ftam_child_objects_Pattern = -1;    /* Pathname_Pattern */
348 static int hf_ftam_primaty_pathname_Pattern = -1;  /* Pathname_Pattern */
349 static int hf_ftam_storage_account_Pattern = -1;  /* String_Pattern */
350 static int hf_ftam_date_and_time_of_creation_Pattern = -1;  /* Date_and_Time_Pattern */
351 static int hf_ftam_date_and_time_of_last_modification_Pattern = -1;  /* Date_and_Time_Pattern */
352 static int hf_ftam_date_and_time_of_last_read_access_Pattern = -1;  /* Date_and_Time_Pattern */
353 static int hf_ftam_date_and_time_of_last_attribute_modification_Pattern = -1;  /* Date_and_Time_Pattern */
354 static int hf_ftam_identity_of_creator_Pattern = -1;  /* User_Identity_Pattern */
355 static int hf_ftam_identity_of_last_modifier_Pattern = -1;  /* User_Identity_Pattern */
356 static int hf_ftam_identity_of_last_reader_Pattern = -1;  /* User_Identity_Pattern */
357 static int hf_ftam_identity_of_last_attribute_modifier_Pattern = -1;  /* User_Identity_Pattern */
358 static int hf_ftam_object_availabiiity_Pattern = -1;  /* Boolean_Pattern */
359 static int hf_ftam_object_size_Pattern = -1;      /* Integer_Pattern */
360 static int hf_ftam_future_object_size_Pattern = -1;  /* Integer_Pattern */
361 static int hf_ftam_legal_quailfication_Pattern = -1;  /* String_Pattern */
362 static int hf_ftam_attribute_extensions_pattern = -1;  /* Attribute_Extensions_Pattern */
363 static int hf_ftam_equality_comparision = -1;     /* Equality_Comparision */
364 static int hf_ftam_pathname_value = -1;           /* T_pathname_value */
365 static int hf_ftam_pathname_value_item = -1;      /* T_pathname_value_item */
366 static int hf_ftam_string_match = -1;             /* String_Pattern */
367 static int hf_ftam_any_match = -1;                /* NULL */
368 static int hf_ftam_string_value = -1;             /* T_string_value */
369 static int hf_ftam_string_value_item = -1;        /* T_string_value_item */
370 static int hf_ftam_substring_match = -1;          /* GraphicString */
371 static int hf_ftam_number_of_characters_match = -1;  /* INTEGER */
372 static int hf_ftam_match_bitstring = -1;          /* BIT_STRING */
373 static int hf_ftam_significance_bitstring = -1;   /* BIT_STRING */
374 static int hf_ftam_relational_camparision = -1;   /* Equality_Comparision */
375 static int hf_ftam_time_and_date_value = -1;      /* GeneralizedTime */
376 static int hf_ftam_relational_comparision = -1;   /* Relational_Comparision */
377 static int hf_ftam_integer_value = -1;            /* INTEGER */
378 static int hf_ftam_object_identifier_value = -1;  /* OBJECT_IDENTIFIER */
379 static int hf_ftam_boolean_value = -1;            /* BOOLEAN */
380 static int hf_ftam_document_type_Pattern = -1;    /* Object_Identifier_Pattern */
381 static int hf_ftam_constraint_set_abstract_Syntax_Pattern = -1;  /* T_constraint_set_abstract_Syntax_Pattern */
382 static int hf_ftam_constraint_Set_Pattern = -1;   /* Object_Identifier_Pattern */
383 static int hf_ftam_abstract_Syntax_Pattern = -1;  /* Object_Identifier_Pattern */
384 static int hf_ftam_Attribute_Extensions_Pattern_item = -1;  /* Attribute_Extensions_Pattern_item */
385 static int hf_ftam_extension_set_attribute_Patterns = -1;  /* T_extension_set_attribute_Patterns */
386 static int hf_ftam_extension_set_attribute_Patterns_item = -1;  /* T_extension_set_attribute_Patterns_item */
387 static int hf_ftam_attribute_extension_attribute_identifier = -1;  /* T_extension_attribute_identifier1 */
388 static int hf_ftam_extension_attribute_Pattern = -1;  /* T_extension_attribute_Pattern */
389 static int hf_ftam_Objects_Attributes_List_item = -1;  /* Read_Attributes */
390 static int hf_ftam_success_Object_count = -1;     /* INTEGER */
391 static int hf_ftam_success_Object_names = -1;     /* SEQUENCE_OF_Pathname */
392 static int hf_ftam_success_Object_names_item = -1;  /* Pathname */
393 static int hf_ftam_Pathname_item = -1;            /* GraphicString */
394 static int hf_ftam_Pass_Passwords_item = -1;      /* Password */
395 static int hf_ftam_Path_Access_Passwords_item = -1;  /* Path_Access_Passwords_item */
396 static int hf_ftam_ap = -1;                       /* AP_title */
397 static int hf_ftam_ae = -1;                       /* AE_qualifier */
398 static int hf_ftam_Attribute_Value_Assertions_item = -1;  /* AND_Set */
399 /* named bits */
400 static int hf_ftam_Protocol_Version_version_1 = -1;
401 static int hf_ftam_Protocol_Version_version_2 = -1;
402 static int hf_ftam_Service_Class_unconstrained_class = -1;
403 static int hf_ftam_Service_Class_management_class = -1;
404 static int hf_ftam_Service_Class_transfer_class = -1;
405 static int hf_ftam_Service_Class_transfer_and_management_class = -1;
406 static int hf_ftam_Service_Class_access_class = -1;
407 static int hf_ftam_Functional_Units_read = -1;
408 static int hf_ftam_Functional_Units_write = -1;
409 static int hf_ftam_Functional_Units_file_access = -1;
410 static int hf_ftam_Functional_Units_limited_file_management = -1;
411 static int hf_ftam_Functional_Units_enhanced_file_management = -1;
412 static int hf_ftam_Functional_Units_grouping = -1;
413 static int hf_ftam_Functional_Units_fadu_locking = -1;
414 static int hf_ftam_Functional_Units_recovery = -1;
415 static int hf_ftam_Functional_Units_restart_data_transfer = -1;
416 static int hf_ftam_Functional_Units_limited_filestore_management = -1;
417 static int hf_ftam_Functional_Units_enhanced_filestore_management = -1;
418 static int hf_ftam_Functional_Units_object_manipulation = -1;
419 static int hf_ftam_Functional_Units_group_manipulation = -1;
420 static int hf_ftam_Functional_Units_consecutive_access = -1;
421 static int hf_ftam_Functional_Units_concurrent_access = -1;
422 static int hf_ftam_Attribute_Groups_storage = -1;
423 static int hf_ftam_Attribute_Groups_security = -1;
424 static int hf_ftam_Attribute_Groups_private = -1;
425 static int hf_ftam_Attribute_Groups_extension = -1;
426 static int hf_ftam_T_processing_mode_f_read = -1;
427 static int hf_ftam_T_processing_mode_f_insert = -1;
428 static int hf_ftam_T_processing_mode_f_replace = -1;
429 static int hf_ftam_T_processing_mode_f_extend = -1;
430 static int hf_ftam_T_processing_mode_f_erase = -1;
431 static int hf_ftam_Access_Request_read = -1;
432 static int hf_ftam_Access_Request_insert = -1;
433 static int hf_ftam_Access_Request_replace = -1;
434 static int hf_ftam_Access_Request_extend = -1;
435 static int hf_ftam_Access_Request_erase = -1;
436 static int hf_ftam_Access_Request_read_attribute = -1;
437 static int hf_ftam_Access_Request_change_attribute = -1;
438 static int hf_ftam_Access_Request_delete_Object = -1;
439 static int hf_ftam_Concurrency_Key_not_required = -1;
440 static int hf_ftam_Concurrency_Key_shared = -1;
441 static int hf_ftam_Concurrency_Key_exclusive = -1;
442 static int hf_ftam_Concurrency_Key_no_access = -1;
443 static int hf_ftam_Permitted_Actions_Attribute_read = -1;
444 static int hf_ftam_Permitted_Actions_Attribute_insert = -1;
445 static int hf_ftam_Permitted_Actions_Attribute_replace = -1;
446 static int hf_ftam_Permitted_Actions_Attribute_extend = -1;
447 static int hf_ftam_Permitted_Actions_Attribute_erase = -1;
448 static int hf_ftam_Permitted_Actions_Attribute_read_attribute = -1;
449 static int hf_ftam_Permitted_Actions_Attribute_change_attribute = -1;
450 static int hf_ftam_Permitted_Actions_Attribute_delete_Object = -1;
451 static int hf_ftam_Permitted_Actions_Attribute_pass = -1;
452 static int hf_ftam_Permitted_Actions_Attribute_link = -1;
453 static int hf_ftam_Permitted_Actions_Attribute_traversal = -1;
454 static int hf_ftam_Permitted_Actions_Attribute_reverse_traversal = -1;
455 static int hf_ftam_Permitted_Actions_Attribute_random_Order = -1;
456 static int hf_ftam_Equality_Comparision_no_value_available_matches = -1;
457 static int hf_ftam_Equality_Comparision_equals_matches = -1;
458 static int hf_ftam_Relational_Comparision_no_value_available_matches = -1;
459 static int hf_ftam_Relational_Comparision_equals_matches = -1;
460 static int hf_ftam_Relational_Comparision_less_than_matches = -1;
461 static int hf_ftam_Relational_Comparision_greater_than_matches = -1;
462 static int hf_ftam_Attribute_Names_read_pathname = -1;
463 static int hf_ftam_Attribute_Names_read_Object_type = -1;
464 static int hf_ftam_Attribute_Names_read_permitted_actions = -1;
465 static int hf_ftam_Attribute_Names_read_contents_type = -1;
466 static int hf_ftam_Attribute_Names_read_linked_Object = -1;
467 static int hf_ftam_Attribute_Names_read_Child_objects = -1;
468 static int hf_ftam_Attribute_Names_read_primary_pathname = -1;
469 static int hf_ftam_Attribute_Names_read_storage_account = -1;
470 static int hf_ftam_Attribute_Names_read_date_and_time_of_creation = -1;
471 static int hf_ftam_Attribute_Names_read_date_and_time_of_last_modification = -1;
472 static int hf_ftam_Attribute_Names_read_date_and_time_of_last_read_access = -1;
473 static int hf_ftam_Attribute_Names_read_date_and_time_of_last_attribute_modification = -1;
474 static int hf_ftam_Attribute_Names_read_identity_of_creator = -1;
475 static int hf_ftam_Attribute_Names_read_identity_of_last_modifier = -1;
476 static int hf_ftam_Attribute_Names_read_identity_of_last_reader = -1;
477 static int hf_ftam_Attribute_Names_read_identity_of_last_attribute_modifier = -1;
478 static int hf_ftam_Attribute_Names_read_Object_availability = -1;
479 static int hf_ftam_Attribute_Names_read_Object_size = -1;
480 static int hf_ftam_Attribute_Names_read_future_Object_size = -1;
481 static int hf_ftam_Attribute_Names_read_access_control = -1;
482 static int hf_ftam_Attribute_Names_read_path_access_control = -1;
483 static int hf_ftam_Attribute_Names_read_legal_qualifiCatiOnS = -1;
484 static int hf_ftam_Attribute_Names_read_private_use = -1;
485
486 /*--- End of included file: packet-ftam-hf.c ---*/
487
488
489 /* Initialize the subtree pointers */
490 static gint ett_ftam = -1;
491
492 /*--- Included file: packet-ftam-ett.c ---*/
493
494 static gint ett_ftam_PDU = -1;
495 static gint ett_ftam_FTAM_Regime_PDU = -1;
496 static gint ett_ftam_F_INITIALIZE_request = -1;
497 static gint ett_ftam_F_INITIALIZE_response = -1;
498 static gint ett_ftam_Protocol_Version = -1;
499 static gint ett_ftam_Service_Class = -1;
500 static gint ett_ftam_Functional_Units = -1;
501 static gint ett_ftam_Attribute_Groups = -1;
502 static gint ett_ftam_Contents_Type_List = -1;
503 static gint ett_ftam_Contents_Type_List_item = -1;
504 static gint ett_ftam_F_TERMINATE_request = -1;
505 static gint ett_ftam_F_TERMINATE_response = -1;
506 static gint ett_ftam_F_U_ABORT_request = -1;
507 static gint ett_ftam_F_P_ABORT_request = -1;
508 static gint ett_ftam_File_PDU = -1;
509 static gint ett_ftam_F_SELECT_request = -1;
510 static gint ett_ftam_F_SELECT_response = -1;
511 static gint ett_ftam_F_DESELECT_request = -1;
512 static gint ett_ftam_F_DESELECT_response = -1;
513 static gint ett_ftam_F_CREATE_request = -1;
514 static gint ett_ftam_F_CREATE_response = -1;
515 static gint ett_ftam_F_DELETE_request = -1;
516 static gint ett_ftam_F_DELETE_response = -1;
517 static gint ett_ftam_F_READ_ATTRIB_request = -1;
518 static gint ett_ftam_F_READ_ATTRIB_response = -1;
519 static gint ett_ftam_F_CHANGE_ATTRIB_request = -1;
520 static gint ett_ftam_F_CHANGE_ATTRIB_response = -1;
521 static gint ett_ftam_F_OPEN_request = -1;
522 static gint ett_ftam_T_processing_mode = -1;
523 static gint ett_ftam_T_contents_type = -1;
524 static gint ett_ftam_SET_OF_Abstract_Syntax_Name = -1;
525 static gint ett_ftam_F_OPEN_response = -1;
526 static gint ett_ftam_F_CLOSE_request = -1;
527 static gint ett_ftam_F_CLOSE_response = -1;
528 static gint ett_ftam_F_BEGIN_GROUP_request = -1;
529 static gint ett_ftam_F_BEGIN_GROUP_response = -1;
530 static gint ett_ftam_F_END_GROUP_request = -1;
531 static gint ett_ftam_F_END_GROUP_response = -1;
532 static gint ett_ftam_F_RECOVER_request = -1;
533 static gint ett_ftam_F_RECOVER_response = -1;
534 static gint ett_ftam_F_LOCATE_request = -1;
535 static gint ett_ftam_F_LOCATE_response = -1;
536 static gint ett_ftam_F_ERASE_request = -1;
537 static gint ett_ftam_F_ERASE_response = -1;
538 static gint ett_ftam_Bulk_Data_PDU = -1;
539 static gint ett_ftam_F_READ_request = -1;
540 static gint ett_ftam_F_WRITE_request = -1;
541 static gint ett_ftam_F_DATA_END_request = -1;
542 static gint ett_ftam_F_TRANSFER_END_request = -1;
543 static gint ett_ftam_F_TRANSFER_END_response = -1;
544 static gint ett_ftam_F_CANCEL_request = -1;
545 static gint ett_ftam_F_CANCEL_response = -1;
546 static gint ett_ftam_F_CHECK_request = -1;
547 static gint ett_ftam_F_CHECK_response = -1;
548 static gint ett_ftam_F_RESTART_request = -1;
549 static gint ett_ftam_F_RESTART_response = -1;
550 static gint ett_ftam_Access_Context = -1;
551 static gint ett_ftam_Access_Passwords = -1;
552 static gint ett_ftam_Access_Request = -1;
553 static gint ett_ftam_Change_Attributes = -1;
554 static gint ett_ftam_Charging = -1;
555 static gint ett_ftam_Charging_item = -1;
556 static gint ett_ftam_Concurrency_Control = -1;
557 static gint ett_ftam_Create_Attributes = -1;
558 static gint ett_ftam_Diagnostic = -1;
559 static gint ett_ftam_Diagnostic_item = -1;
560 static gint ett_ftam_FADU_Identity = -1;
561 static gint ett_ftam_SEQUENCE_OF_Node_Name = -1;
562 static gint ett_ftam_Password = -1;
563 static gint ett_ftam_Read_Attributes = -1;
564 static gint ett_ftam_Select_Attributes = -1;
565 static gint ett_ftam_Access_Control_Attribute = -1;
566 static gint ett_ftam_SET_OF_Access_Control_Element = -1;
567 static gint ett_ftam_Access_Control_Change_Attribute = -1;
568 static gint ett_ftam_T_actual_values1 = -1;
569 static gint ett_ftam_Access_Control_Element = -1;
570 static gint ett_ftam_Concurrency_Access = -1;
571 static gint ett_ftam_Concurrency_Key = -1;
572 static gint ett_ftam_Account_Attribute = -1;
573 static gint ett_ftam_Contents_Type_Attribute = -1;
574 static gint ett_ftam_T_document_type = -1;
575 static gint ett_ftam_T_constraint_set_and_abstract_Syntax = -1;
576 static gint ett_ftam_Date_and_Time_Attribute = -1;
577 static gint ett_ftam_Object_Availability_Attribute = -1;
578 static gint ett_ftam_Pathname_Attribute = -1;
579 static gint ett_ftam_Object_Size_Attribute = -1;
580 static gint ett_ftam_Legal_Qualification_Attribute = -1;
581 static gint ett_ftam_Permitted_Actions_Attribute = -1;
582 static gint ett_ftam_Private_Use_Attribute = -1;
583 static gint ett_ftam_User_Identity_Attribute = -1;
584 static gint ett_ftam_Child_Objects_Attribute = -1;
585 static gint ett_ftam_FSM_PDU = -1;
586 static gint ett_ftam_F_CHANGE_PREFIX_request = -1;
587 static gint ett_ftam_F_CHANGE_PREFIX_response = -1;
588 static gint ett_ftam_F_LIST_request = -1;
589 static gint ett_ftam_F_LIST_response = -1;
590 static gint ett_ftam_F_GROUP_SELECT_request = -1;
591 static gint ett_ftam_F_GROUP_SELECT_response = -1;
592 static gint ett_ftam_F_GROUP_DELETE_request = -1;
593 static gint ett_ftam_F_GROUP_DELETE_response = -1;
594 static gint ett_ftam_F_GROUP_MOVE_request = -1;
595 static gint ett_ftam_F_GROUP_MOVE_response = -1;
596 static gint ett_ftam_F_GROUP_COPY_request = -1;
597 static gint ett_ftam_F_GROUP_COPY_response = -1;
598 static gint ett_ftam_F_GROUP_LIST_request = -1;
599 static gint ett_ftam_F_GROUP_LIST_response = -1;
600 static gint ett_ftam_F_GROUP_CHANGE_ATTRIB_request = -1;
601 static gint ett_ftam_F_GROUP_CHANGE_ATTRIB_response = -1;
602 static gint ett_ftam_F_SELECT_ANOTHER_request = -1;
603 static gint ett_ftam_F_SELECT_ANOTHER_response = -1;
604 static gint ett_ftam_F_CREATE_DIRECTORY_request = -1;
605 static gint ett_ftam_F_CREATE_DIRECTORY_response = -1;
606 static gint ett_ftam_F_LINK_request = -1;
607 static gint ett_ftam_F_LINK_response = -1;
608 static gint ett_ftam_F_UNLINK_request = -1;
609 static gint ett_ftam_F_UNLINK_response = -1;
610 static gint ett_ftam_F_READ_LINK_ATTRIB_request = -1;
611 static gint ett_ftam_F_READ_LINK_ATTRIB_response = -1;
612 static gint ett_ftam_F_CHANGE_LINK_ATTRIB_request = -1;
613 static gint ett_ftam_F_CHANGE_LINK_ATTRIB_response = -1;
614 static gint ett_ftam_F_MOVE_request = -1;
615 static gint ett_ftam_F_MOVE_response = -1;
616 static gint ett_ftam_F_COPY_request = -1;
617 static gint ett_ftam_F_COPY_response = -1;
618 static gint ett_ftam_Attribute_Extension_Names = -1;
619 static gint ett_ftam_Attribute_Extension_Set_Name = -1;
620 static gint ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier = -1;
621 static gint ett_ftam_Attribute_Extensions = -1;
622 static gint ett_ftam_Attribute_Extension_Set = -1;
623 static gint ett_ftam_SEQUENCE_OF_Extension_Attribute = -1;
624 static gint ett_ftam_Extension_Attribute = -1;
625 static gint ett_ftam_Scope = -1;
626 static gint ett_ftam_Scope_item = -1;
627 static gint ett_ftam_OR_Set = -1;
628 static gint ett_ftam_AND_Set = -1;
629 static gint ett_ftam_AND_Set_item = -1;
630 static gint ett_ftam_Equality_Comparision = -1;
631 static gint ett_ftam_Relational_Comparision = -1;
632 static gint ett_ftam_Pathname_Pattern = -1;
633 static gint ett_ftam_T_pathname_value = -1;
634 static gint ett_ftam_T_pathname_value_item = -1;
635 static gint ett_ftam_String_Pattern = -1;
636 static gint ett_ftam_T_string_value = -1;
637 static gint ett_ftam_T_string_value_item = -1;
638 static gint ett_ftam_Bitstring_Pattern = -1;
639 static gint ett_ftam_Date_and_Time_Pattern = -1;
640 static gint ett_ftam_Integer_Pattern = -1;
641 static gint ett_ftam_Object_Identifier_Pattern = -1;
642 static gint ett_ftam_Boolean_Pattern = -1;
643 static gint ett_ftam_Contents_Type_Pattern = -1;
644 static gint ett_ftam_T_constraint_set_abstract_Syntax_Pattern = -1;
645 static gint ett_ftam_Attribute_Extensions_Pattern = -1;
646 static gint ett_ftam_Attribute_Extensions_Pattern_item = -1;
647 static gint ett_ftam_T_extension_set_attribute_Patterns = -1;
648 static gint ett_ftam_T_extension_set_attribute_Patterns_item = -1;
649 static gint ett_ftam_Objects_Attributes_List = -1;
650 static gint ett_ftam_Operation_Result = -1;
651 static gint ett_ftam_SEQUENCE_OF_Pathname = -1;
652 static gint ett_ftam_Pathname = -1;
653 static gint ett_ftam_Pass_Passwords = -1;
654 static gint ett_ftam_Path_Access_Passwords = -1;
655 static gint ett_ftam_Path_Access_Passwords_item = -1;
656 static gint ett_ftam_Attribute_Names = -1;
657 static gint ett_ftam_AE_title = -1;
658 static gint ett_ftam_Attribute_Value_Assertions = -1;
659
660 /*--- End of included file: packet-ftam-ett.c ---*/
661
662
663
664 /*--- Included file: packet-ftam-fn.c ---*/
665
666 /*--- Fields for imported types ---*/
667
668 static int dissect_actual_values4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
669   return dissect_acse_EXTERNAL(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values4);
670 }
671
672
673 static const asn_namedbit Protocol_Version_bits[] = {
674   {  0, &hf_ftam_Protocol_Version_version_1, -1, -1, "version-1", NULL },
675   {  1, &hf_ftam_Protocol_Version_version_2, -1, -1, "version-2", NULL },
676   { 0, NULL, 0, 0, NULL, NULL }
677 };
678
679 static int
680 dissect_ftam_Protocol_Version(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
681  gint8 class;
682  gboolean pc, ind_field;
683  gint32 tag;
684  guint32 len1;
685
686  if(!implicit_tag){
687    /* XXX  asn2eth can not yet handle tagged assignment yes so this
688     * XXX is some conformance file magic to work around that bug
689     */
690     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
691     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
692  }
693   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
694                                  Protocol_Version_bits, hf_index, ett_ftam_Protocol_Version,
695                                  NULL);
696
697
698   return offset;
699 }
700 static int dissect_protocol_Version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
701   return dissect_ftam_Protocol_Version(FALSE, tvb, offset, pinfo, tree, hf_ftam_protocol_Version);
702 }
703
704
705
706 static int
707 dissect_ftam_Implementation_Information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
708  gint8 class;
709  gboolean pc, ind_field;
710  gint32 tag;
711  guint32 len1;
712
713  if(!implicit_tag){
714    /* XXX  asn2eth can not yet handle tagged assignment yes so this
715     * XXX is some conformance file magic to work around that bug
716     */
717     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
718     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
719  }
720   offset = dissect_ber_restricted_string(TRUE, 1,
721                                          pinfo, tree, tvb, offset, hf_index,
722                                          NULL);
723
724
725   return offset;
726 }
727 static int dissect_implementation_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
728   return dissect_ftam_Implementation_Information(FALSE, tvb, offset, pinfo, tree, hf_ftam_implementation_information);
729 }
730
731
732
733 static int
734 dissect_ftam_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
735   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
736
737   return offset;
738 }
739 static int dissect_presentation_tontext_management_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
740   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_presentation_tontext_management);
741 }
742 static int dissect_enable_fadu_locking_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
743   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_enable_fadu_locking);
744 }
745 static int dissect_presentation_action_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
746   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_presentation_action);
747 }
748 static int dissect_reset_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
749   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_reset);
750 }
751 static int dissect_last_member_indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
752   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_member_indicator);
753 }
754 static int dissect_boolean_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
755   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_boolean_value);
756 }
757
758
759 static const asn_namedbit Service_Class_bits[] = {
760   {  0, &hf_ftam_Service_Class_unconstrained_class, -1, -1, "unconstrained-class", NULL },
761   {  1, &hf_ftam_Service_Class_management_class, -1, -1, "management-class", NULL },
762   {  2, &hf_ftam_Service_Class_transfer_class, -1, -1, "transfer-class", NULL },
763   {  3, &hf_ftam_Service_Class_transfer_and_management_class, -1, -1, "transfer-and-management-class", NULL },
764   {  4, &hf_ftam_Service_Class_access_class, -1, -1, "access-class", NULL },
765   { 0, NULL, 0, 0, NULL, NULL }
766 };
767
768 static int
769 dissect_ftam_Service_Class(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
770  gint8 class;
771  gboolean pc, ind_field;
772  gint32 tag;
773  guint32 len1;
774
775  if(!implicit_tag){
776    /* XXX  asn2eth can not yet handle tagged assignment yes so this
777     * XXX is some conformance file magic to work around that bug
778     */
779     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
780     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
781  }
782   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
783                                  Service_Class_bits, hf_index, ett_ftam_Service_Class,
784                                  NULL);
785
786
787   return offset;
788 }
789 static int dissect_service_class(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
790   return dissect_ftam_Service_Class(FALSE, tvb, offset, pinfo, tree, hf_ftam_service_class);
791 }
792
793
794 static const asn_namedbit Functional_Units_bits[] = {
795   {  2, &hf_ftam_Functional_Units_read, -1, -1, "read", NULL },
796   {  3, &hf_ftam_Functional_Units_write, -1, -1, "write", NULL },
797   {  4, &hf_ftam_Functional_Units_file_access, -1, -1, "file-access", NULL },
798   {  5, &hf_ftam_Functional_Units_limited_file_management, -1, -1, "limited-file-management", NULL },
799   {  6, &hf_ftam_Functional_Units_enhanced_file_management, -1, -1, "enhanced-file-management", NULL },
800   {  7, &hf_ftam_Functional_Units_grouping, -1, -1, "grouping", NULL },
801   {  8, &hf_ftam_Functional_Units_fadu_locking, -1, -1, "fadu-locking", NULL },
802   {  9, &hf_ftam_Functional_Units_recovery, -1, -1, "recovery", NULL },
803   { 10, &hf_ftam_Functional_Units_restart_data_transfer, -1, -1, "restart-data-transfer", NULL },
804   { 11, &hf_ftam_Functional_Units_limited_filestore_management, -1, -1, "limited-filestore-management", NULL },
805   { 12, &hf_ftam_Functional_Units_enhanced_filestore_management, -1, -1, "enhanced-filestore-management", NULL },
806   { 13, &hf_ftam_Functional_Units_object_manipulation, -1, -1, "object-manipulation", NULL },
807   { 14, &hf_ftam_Functional_Units_group_manipulation, -1, -1, "group-manipulation", NULL },
808   { 15, &hf_ftam_Functional_Units_consecutive_access, -1, -1, "consecutive-access", NULL },
809   { 16, &hf_ftam_Functional_Units_concurrent_access, -1, -1, "concurrent-access", NULL },
810   { 0, NULL, 0, 0, NULL, NULL }
811 };
812
813 static int
814 dissect_ftam_Functional_Units(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
815  gint8 class;
816  gboolean pc, ind_field;
817  gint32 tag;
818  guint32 len1;
819
820  if(!implicit_tag){
821    /* XXX  asn2eth can not yet handle tagged assignment yes so this
822     * XXX is some conformance file magic to work around that bug
823     */
824     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
825     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
826  }
827   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
828                                  Functional_Units_bits, hf_index, ett_ftam_Functional_Units,
829                                  NULL);
830
831
832
833   return offset;
834 }
835 static int dissect_functional_units(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
836   return dissect_ftam_Functional_Units(FALSE, tvb, offset, pinfo, tree, hf_ftam_functional_units);
837 }
838
839
840 static const asn_namedbit Attribute_Groups_bits[] = {
841   {  0, &hf_ftam_Attribute_Groups_storage, -1, -1, "storage", NULL },
842   {  1, &hf_ftam_Attribute_Groups_security, -1, -1, "security", NULL },
843   {  2, &hf_ftam_Attribute_Groups_private, -1, -1, "private", NULL },
844   {  3, &hf_ftam_Attribute_Groups_extension, -1, -1, "extension", NULL },
845   { 0, NULL, 0, 0, NULL, NULL }
846 };
847
848 static int
849 dissect_ftam_Attribute_Groups(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
850  gint8 class;
851  gboolean pc, ind_field;
852  gint32 tag;
853  guint32 len1;
854
855  if(!implicit_tag){
856    /* XXX  asn2eth can not yet handle tagged assignment yes so this
857     * XXX is some conformance file magic to work around that bug
858     */
859     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
860     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
861  }
862   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
863                                  Attribute_Groups_bits, hf_index, ett_ftam_Attribute_Groups,
864                                  NULL);
865
866
867
868   return offset;
869 }
870 static int dissect_attribute_groups(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
871   return dissect_ftam_Attribute_Groups(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_groups);
872 }
873
874
875
876 static int
877 dissect_ftam_Shared_ASE_Information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
878   offset = dissect_acse_EXTERNAL(implicit_tag, tvb, offset, pinfo, tree, hf_index);
879
880   return offset;
881 }
882 static int dissect_shared_ASE_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
883   return dissect_ftam_Shared_ASE_Information(FALSE, tvb, offset, pinfo, tree, hf_ftam_shared_ASE_information);
884 }
885 static int dissect_shared_ASE_infonnation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
886   return dissect_ftam_Shared_ASE_Information(FALSE, tvb, offset, pinfo, tree, hf_ftam_shared_ASE_infonnation);
887 }
888
889
890 static const value_string ftam_FTAM_Quality_of_Service_vals[] = {
891   {   0, "no-recovery" },
892   {   1, "class-1-recovery" },
893   {   2, "class-2-recovery" },
894   {   3, "class-3-recovery" },
895   { 0, NULL }
896 };
897
898
899 static int
900 dissect_ftam_FTAM_Quality_of_Service(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
901  gint8 class;
902  gboolean pc, ind_field;
903  gint32 tag;
904  guint32 len1;
905
906  if(!implicit_tag){
907    /* XXX  asn2eth can not yet handle tagged assignment yes so this
908     * XXX is some conformance file magic to work around that bug
909     */
910     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
911     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
912  }
913   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
914                                   NULL);
915
916
917   return offset;
918 }
919 static int dissect_ftam_quality_of_Service(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
920   return dissect_ftam_FTAM_Quality_of_Service(FALSE, tvb, offset, pinfo, tree, hf_ftam_ftam_quality_of_Service);
921 }
922
923
924
925 static int
926 dissect_ftam_Document_Type_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
927  gint8 class;
928  gboolean pc, ind_field;
929  gint32 tag;
930  guint32 len1;
931
932  if(!implicit_tag){
933    /* XXX  asn2eth can not yet handle tagged assignment yes so this
934     * XXX is some conformance file magic to work around that bug
935     */
936     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
937     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
938  }
939   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
940
941
942
943   return offset;
944 }
945 static int dissect_document_type_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
946   return dissect_ftam_Document_Type_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_document_type_name);
947 }
948
949
950
951 static int
952 dissect_ftam_Abstract_Syntax_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
953  gint8 class;
954  gboolean pc, ind_field;
955  gint32 tag;
956  guint32 len1;
957
958  if(!implicit_tag){
959    /* XXX  asn2eth can not yet handle tagged assignment yes so this
960     * XXX is some conformance file magic to work around that bug
961     */
962     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
963     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
964  }
965   offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset, hf_index,
966                                             NULL);
967
968
969
970   return offset;
971 }
972 static int dissect_abstract_Syntax_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
973   return dissect_ftam_Abstract_Syntax_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_abstract_Syntax_name);
974 }
975 static int dissect_remove_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
976   return dissect_ftam_Abstract_Syntax_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_remove_contexts_item);
977 }
978 static int dissect_define_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
979   return dissect_ftam_Abstract_Syntax_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_define_contexts_item);
980 }
981
982
983 static const value_string ftam_Contents_Type_List_item_vals[] = {
984   {  14, "document-type-name" },
985   {   0, "abstract-Syntax-name" },
986   { 0, NULL }
987 };
988
989 static const ber_choice_t Contents_Type_List_item_choice[] = {
990   {  14, BER_CLASS_APP, 14, BER_FLAGS_NOOWNTAG, dissect_document_type_name },
991   {   0, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_abstract_Syntax_name },
992   { 0, 0, 0, 0, NULL }
993 };
994
995 static int
996 dissect_ftam_Contents_Type_List_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
997   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
998                                  Contents_Type_List_item_choice, hf_index, ett_ftam_Contents_Type_List_item,
999                                  NULL);
1000
1001   return offset;
1002 }
1003 static int dissect_Contents_Type_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1004   return dissect_ftam_Contents_Type_List_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Contents_Type_List_item);
1005 }
1006
1007
1008 static const ber_sequence_t Contents_Type_List_sequence_of[1] = {
1009   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Contents_Type_List_item },
1010 };
1011
1012 static int
1013 dissect_ftam_Contents_Type_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1014  gint8 class;
1015  gboolean pc, ind_field;
1016  gint32 tag;
1017  guint32 len1;
1018
1019  if(!implicit_tag){
1020    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1021     * XXX is some conformance file magic to work around that bug
1022     */
1023     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1024     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1025  }
1026   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
1027                                    Contents_Type_List_sequence_of, hf_index, ett_ftam_Contents_Type_List);
1028
1029
1030
1031   return offset;
1032 }
1033 static int dissect_contents_type_list(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1034   return dissect_ftam_Contents_Type_List(FALSE, tvb, offset, pinfo, tree, hf_ftam_contents_type_list);
1035 }
1036
1037
1038
1039 static int
1040 dissect_ftam_User_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1041  gint8 class;
1042  gboolean pc, ind_field;
1043  gint32 tag;
1044  guint32 len1;
1045
1046  if(!implicit_tag){
1047    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1048     * XXX is some conformance file magic to work around that bug
1049     */
1050     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1051     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1052  }
1053   offset = dissect_ber_restricted_string(TRUE, 22,
1054                                          pinfo, tree, tvb, offset, hf_index,
1055                                          NULL);
1056
1057   return offset;
1058 }
1059 static int dissect_initiator_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1060   return dissect_ftam_User_Identity(FALSE, tvb, offset, pinfo, tree, hf_ftam_initiator_identity);
1061 }
1062 static int dissect_identity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1063   return dissect_ftam_User_Identity(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity);
1064 }
1065 static int dissect_actual_values6(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1066   return dissect_ftam_User_Identity(FALSE, tvb, offset, pinfo, tree, hf_ftam_actual_values6);
1067 }
1068
1069
1070
1071 static int
1072 dissect_ftam_Account(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1073  gint8 class;
1074  gboolean pc, ind_field;
1075  gint32 tag;
1076  guint32 len1;
1077
1078  if(!implicit_tag){
1079    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1080     * XXX is some conformance file magic to work around that bug
1081     */
1082     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1083     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1084  }
1085   offset = dissect_ber_restricted_string(TRUE, 4,
1086                                          pinfo, tree, tvb, offset, hf_index,
1087                                          NULL);
1088
1089   return offset;
1090 }
1091 static int dissect_account(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1092   return dissect_ftam_Account(FALSE, tvb, offset, pinfo, tree, hf_ftam_account);
1093 }
1094 static int dissect_actual_values2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1095   return dissect_ftam_Account(FALSE, tvb, offset, pinfo, tree, hf_ftam_actual_values2);
1096 }
1097
1098
1099
1100 static int
1101 dissect_ftam_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1102   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
1103                                             pinfo, tree, tvb, offset, hf_index,
1104                                             NULL);
1105
1106   return offset;
1107 }
1108 static int dissect_resource_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1109   return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_resource_identifier);
1110 }
1111 static int dissect_charging_unit_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1112   return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_charging_unit);
1113 }
1114 static int dissect_further_details_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1115   return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_further_details);
1116 }
1117 static int dissect_graphicString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1118   return dissect_ftam_GraphicString(FALSE, tvb, offset, pinfo, tree, hf_ftam_graphicString);
1119 }
1120 static int dissect_actual_values9_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1121   return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values9);
1122 }
1123 static int dissect_Child_Objects_Attribute_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1124   return dissect_ftam_GraphicString(FALSE, tvb, offset, pinfo, tree, hf_ftam_Child_Objects_Attribute_item);
1125 }
1126 static int dissect_substring_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1127   return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_substring_match);
1128 }
1129 static int dissect_Pathname_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1130   return dissect_ftam_GraphicString(FALSE, tvb, offset, pinfo, tree, hf_ftam_Pathname_item);
1131 }
1132
1133
1134
1135 static int
1136 dissect_ftam_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1137   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1138                                        NULL);
1139
1140   return offset;
1141 }
1142 static int dissect_octetString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1143   return dissect_ftam_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_ftam_octetString);
1144 }
1145
1146
1147 static const value_string ftam_Password_vals[] = {
1148   {   0, "graphicString" },
1149   {   1, "octetString" },
1150   { 0, NULL }
1151 };
1152
1153 static const ber_choice_t Password_choice[] = {
1154   {   0, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_graphicString },
1155   {   1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_octetString },
1156   { 0, 0, 0, 0, NULL }
1157 };
1158
1159 static int
1160 dissect_ftam_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1161  gint8 class;
1162  gboolean pc, ind_field;
1163  gint32 tag;
1164  guint32 len1;
1165
1166  if(!implicit_tag){
1167    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1168     * XXX is some conformance file magic to work around that bug
1169     */
1170     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1171     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1172  }
1173   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1174                               Password_choice, hf_index, ett_ftam_Password, NULL);
1175
1176
1177
1178   return offset;
1179 }
1180 static int dissect_filestore_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1181   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_filestore_password);
1182 }
1183 static int dissect_create_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1184   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_create_password);
1185 }
1186 static int dissect_read_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1187   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_password);
1188 }
1189 static int dissect_read_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1190   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_password);
1191 }
1192 static int dissect_insert_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1193   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_insert_password);
1194 }
1195 static int dissect_insert_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1196   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_password);
1197 }
1198 static int dissect_replace_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1199   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_replace_password);
1200 }
1201 static int dissect_replace_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1202   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_replace_password);
1203 }
1204 static int dissect_extend_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1205   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_extend_password);
1206 }
1207 static int dissect_extend_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1208   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_extend_password);
1209 }
1210 static int dissect_erase_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1211   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_erase_password);
1212 }
1213 static int dissect_erase_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1214   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_erase_password);
1215 }
1216 static int dissect_read_attribute_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1217   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_password);
1218 }
1219 static int dissect_read_attribute_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1220   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_password);
1221 }
1222 static int dissect_change_attribute_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1223   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_password);
1224 }
1225 static int dissect_change_attribute_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1226   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_password);
1227 }
1228 static int dissect_delete_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1229   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_delete_password);
1230 }
1231 static int dissect_delete_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1232   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_password);
1233 }
1234 static int dissect_link_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1235   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_link_password);
1236 }
1237 static int dissect_link_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1238   return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_link_password);
1239 }
1240 static int dissect_Pass_Passwords_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1241   return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_Pass_Passwords_item);
1242 }
1243
1244
1245
1246 static int
1247 dissect_ftam_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1248   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1249                                   NULL);
1250
1251   return offset;
1252 }
1253 static int dissect_checkpoint_window_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1254   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_checkpoint_window);
1255 }
1256 static int dissect_transfer_window_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1257   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_transfer_window);
1258 }
1259 static int dissect_threshold_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1260   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_threshold);
1261 }
1262 static int dissect_bulk_transfer_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1263   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_bulk_transfer_number);
1264 }
1265 static int dissect_recovefy_Point_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1266   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_recovefy_Point);
1267 }
1268 static int dissect_concurrent_bulk_transfer_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1269   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_concurrent_bulk_transfer_number);
1270 }
1271 static int dissect_concurrent_recovery_point_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1272   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_concurrent_recovery_point);
1273 }
1274 static int dissect_last_transfer_end_read_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1275   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_read_response);
1276 }
1277 static int dissect_last_transfer_end_write_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1278   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_write_response);
1279 }
1280 static int dissect_recovety_Point_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1281   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_recovety_Point);
1282 }
1283 static int dissect_last_transfer_end_read_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1284   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_read_request);
1285 }
1286 static int dissect_last_transfer_end_write_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1287   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_write_request);
1288 }
1289 static int dissect_transfer_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1290   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_transfer_number);
1291 }
1292 static int dissect_checkpoint_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1293   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_checkpoint_identifier);
1294 }
1295 static int dissect_level_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1296   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_level_number);
1297 }
1298 static int dissect_charging_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1299   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_charging_value);
1300 }
1301 static int dissect_error_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1302   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_identifier);
1303 }
1304 static int dissect_suggested_delay_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1305   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_suggested_delay);
1306 }
1307 static int dissect_fadu_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1308   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_fadu_number);
1309 }
1310 static int dissect_actual_values7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1311   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values7);
1312 }
1313 static int dissect_maximum_set_size_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1314   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_maximum_set_size);
1315 }
1316 static int dissect_number_of_characters_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1317   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_number_of_characters_match);
1318 }
1319 static int dissect_integer_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1320   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_integer_value);
1321 }
1322 static int dissect_success_Object_count_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1323   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_success_Object_count);
1324 }
1325
1326
1327 static const ber_sequence_t F_INITIALIZE_request_sequence[] = {
1328   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protocol_Version },
1329   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_implementation_information },
1330   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_presentation_tontext_management_impl },
1331   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_service_class },
1332   { BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_functional_units },
1333   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attribute_groups },
1334   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
1335   { BER_CLASS_CON, 6, BER_FLAGS_NOOWNTAG, dissect_ftam_quality_of_Service },
1336   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contents_type_list },
1337   { BER_CLASS_APP, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_initiator_identity },
1338   { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
1339   { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_filestore_password },
1340   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_checkpoint_window_impl },
1341   { 0, 0, 0, NULL }
1342 };
1343
1344 static int
1345 dissect_ftam_F_INITIALIZE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1346   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1347                                    F_INITIALIZE_request_sequence, hf_index, ett_ftam_F_INITIALIZE_request);
1348
1349   return offset;
1350 }
1351 static int dissect_f_initialize_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1352   return dissect_ftam_F_INITIALIZE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_initialize_request);
1353 }
1354
1355
1356 static const value_string ftam_State_Result_vals[] = {
1357   {   0, "success" },
1358   {   1, "failure" },
1359   { 0, NULL }
1360 };
1361
1362
1363 static int
1364 dissect_ftam_State_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1365  gint8 class;
1366  gboolean pc, ind_field;
1367  gint32 tag;
1368  guint32 len1;
1369
1370  if(!implicit_tag){
1371    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1372     * XXX is some conformance file magic to work around that bug
1373     */
1374     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1375     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1376  }
1377   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
1378                                   NULL);
1379
1380
1381   return offset;
1382 }
1383 static int dissect_state_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1384   return dissect_ftam_State_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_state_result);
1385 }
1386
1387
1388 static const value_string ftam_Action_Result_vals[] = {
1389   {   0, "success" },
1390   {   1, "transient-error" },
1391   {   2, "permanent-error" },
1392   { 0, NULL }
1393 };
1394
1395
1396 static int
1397 dissect_ftam_Action_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1398  gint8 class;
1399  gboolean pc, ind_field;
1400  gint32 tag;
1401  guint32 len1;
1402
1403  if(!implicit_tag){
1404    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1405     * XXX is some conformance file magic to work around that bug
1406     */
1407     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1408     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1409  }
1410   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
1411                                   NULL);
1412
1413
1414
1415   return offset;
1416 }
1417 static int dissect_action_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1418   return dissect_ftam_Action_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_action_result);
1419 }
1420
1421
1422 static const value_string ftam_T_diagnostic_type_vals[] = {
1423   {   0, "informative" },
1424   {   1, "transient" },
1425   {   2, "permanent" },
1426   { 0, NULL }
1427 };
1428
1429
1430 static int
1431 dissect_ftam_T_diagnostic_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1432   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1433                                   NULL);
1434
1435   return offset;
1436 }
1437 static int dissect_diagnostic_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1438   return dissect_ftam_T_diagnostic_type(TRUE, tvb, offset, pinfo, tree, hf_ftam_diagnostic_type);
1439 }
1440
1441
1442 static const value_string ftam_Entity_Reference_vals[] = {
1443   {   0, "no-categorization-possible" },
1444   {   1, "initiating-file-service-user" },
1445   {   2, "initiating-file-protocol-machine" },
1446   {   3, "service-supporting-the-file-protocol-machine" },
1447   {   4, "responding-file-protocol-machine" },
1448   {   5, "responding-file-service-user" },
1449   { 0, NULL }
1450 };
1451
1452
1453 static int
1454 dissect_ftam_Entity_Reference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1455   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1456                                   NULL);
1457
1458   return offset;
1459 }
1460 static int dissect_error_observer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1461   return dissect_ftam_Entity_Reference(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_observer);
1462 }
1463 static int dissect_error_Source_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1464   return dissect_ftam_Entity_Reference(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_Source);
1465 }
1466
1467
1468 static const ber_sequence_t Diagnostic_item_sequence[] = {
1469   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_diagnostic_type_impl },
1470   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_identifier_impl },
1471   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_error_observer_impl },
1472   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_error_Source_impl },
1473   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suggested_delay_impl },
1474   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_further_details_impl },
1475   { 0, 0, 0, NULL }
1476 };
1477
1478 static int
1479 dissect_ftam_Diagnostic_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1480   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1481                                    Diagnostic_item_sequence, hf_index, ett_ftam_Diagnostic_item);
1482
1483   return offset;
1484 }
1485 static int dissect_Diagnostic_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1486   return dissect_ftam_Diagnostic_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Diagnostic_item);
1487 }
1488
1489
1490 static const ber_sequence_t Diagnostic_sequence_of[1] = {
1491   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Diagnostic_item },
1492 };
1493
1494 static int
1495 dissect_ftam_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1496  gint8 class;
1497  gboolean pc, ind_field;
1498  gint32 tag;
1499  guint32 len1;
1500
1501  if(!implicit_tag){
1502    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1503     * XXX is some conformance file magic to work around that bug
1504     */
1505     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1506     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1507  }
1508   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
1509                                    Diagnostic_sequence_of, hf_index, ett_ftam_Diagnostic);
1510
1511
1512
1513   return offset;
1514 }
1515 static int dissect_diagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1516   return dissect_ftam_Diagnostic(FALSE, tvb, offset, pinfo, tree, hf_ftam_diagnostic);
1517 }
1518
1519
1520 static const ber_sequence_t F_INITIALIZE_response_sequence[] = {
1521   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
1522   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
1523   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protocol_Version },
1524   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_implementation_information },
1525   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_presentation_tontext_management_impl },
1526   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_service_class },
1527   { BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_functional_units },
1528   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attribute_groups },
1529   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
1530   { BER_CLASS_CON, 6, BER_FLAGS_NOOWNTAG, dissect_ftam_quality_of_Service },
1531   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contents_type_list },
1532   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
1533   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_checkpoint_window_impl },
1534   { 0, 0, 0, NULL }
1535 };
1536
1537 static int
1538 dissect_ftam_F_INITIALIZE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1539   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1540                                    F_INITIALIZE_response_sequence, hf_index, ett_ftam_F_INITIALIZE_response);
1541
1542   return offset;
1543 }
1544 static int dissect_f_initialize_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1545   return dissect_ftam_F_INITIALIZE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_initialize_response);
1546 }
1547
1548
1549 static const ber_sequence_t F_TERMINATE_request_sequence[] = {
1550   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
1551   { 0, 0, 0, NULL }
1552 };
1553
1554 static int
1555 dissect_ftam_F_TERMINATE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1556   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1557                                    F_TERMINATE_request_sequence, hf_index, ett_ftam_F_TERMINATE_request);
1558
1559   return offset;
1560 }
1561 static int dissect_f_terminate_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1562   return dissect_ftam_F_TERMINATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_terminate_request);
1563 }
1564
1565
1566 static const ber_sequence_t Charging_item_sequence[] = {
1567   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_resource_identifier_impl },
1568   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_unit_impl },
1569   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_value_impl },
1570   { 0, 0, 0, NULL }
1571 };
1572
1573 static int
1574 dissect_ftam_Charging_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1575   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1576                                    Charging_item_sequence, hf_index, ett_ftam_Charging_item);
1577
1578   return offset;
1579 }
1580 static int dissect_Charging_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1581   return dissect_ftam_Charging_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Charging_item);
1582 }
1583
1584
1585 static const ber_sequence_t Charging_sequence_of[1] = {
1586   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Charging_item },
1587 };
1588
1589 static int
1590 dissect_ftam_Charging(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1591  gint8 class;
1592  gboolean pc, ind_field;
1593  gint32 tag;
1594  guint32 len1;
1595
1596  if(!implicit_tag){
1597    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1598     * XXX is some conformance file magic to work around that bug
1599     */
1600     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1601     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1602  }
1603   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
1604                                    Charging_sequence_of, hf_index, ett_ftam_Charging);
1605
1606
1607
1608   return offset;
1609 }
1610 static int dissect_charging(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1611   return dissect_ftam_Charging(FALSE, tvb, offset, pinfo, tree, hf_ftam_charging);
1612 }
1613
1614
1615 static const ber_sequence_t F_TERMINATE_response_sequence[] = {
1616   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
1617   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
1618   { 0, 0, 0, NULL }
1619 };
1620
1621 static int
1622 dissect_ftam_F_TERMINATE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1623   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1624                                    F_TERMINATE_response_sequence, hf_index, ett_ftam_F_TERMINATE_response);
1625
1626   return offset;
1627 }
1628 static int dissect_f_terminate_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1629   return dissect_ftam_F_TERMINATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_terminate_response);
1630 }
1631
1632
1633 static const ber_sequence_t F_U_ABORT_request_sequence[] = {
1634   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
1635   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
1636   { 0, 0, 0, NULL }
1637 };
1638
1639 static int
1640 dissect_ftam_F_U_ABORT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1641   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1642                                    F_U_ABORT_request_sequence, hf_index, ett_ftam_F_U_ABORT_request);
1643
1644   return offset;
1645 }
1646 static int dissect_f_u_abort_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1647   return dissect_ftam_F_U_ABORT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_u_abort_request);
1648 }
1649
1650
1651 static const ber_sequence_t F_P_ABORT_request_sequence[] = {
1652   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
1653   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
1654   { 0, 0, 0, NULL }
1655 };
1656
1657 static int
1658 dissect_ftam_F_P_ABORT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1659   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1660                                    F_P_ABORT_request_sequence, hf_index, ett_ftam_F_P_ABORT_request);
1661
1662   return offset;
1663 }
1664 static int dissect_f_p_abort_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1665   return dissect_ftam_F_P_ABORT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_p_abort_request);
1666 }
1667
1668
1669 static const value_string ftam_FTAM_Regime_PDU_vals[] = {
1670   {   0, "f-initialize-request" },
1671   {   1, "f-initialize-response" },
1672   {   2, "f-terminate-request" },
1673   {   3, "f-terminate-response" },
1674   {   4, "f-u-abort-request" },
1675   {   5, "f-p-abort-request" },
1676   { 0, NULL }
1677 };
1678
1679 static const ber_choice_t FTAM_Regime_PDU_choice[] = {
1680   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_f_initialize_request_impl },
1681   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_f_initialize_response_impl },
1682   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_f_terminate_request_impl },
1683   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_f_terminate_response_impl },
1684   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_f_u_abort_request_impl },
1685   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_f_p_abort_request_impl },
1686   { 0, 0, 0, 0, NULL }
1687 };
1688
1689 static int
1690 dissect_ftam_FTAM_Regime_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1691   gint branch_taken;
1692
1693     offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1694                                  FTAM_Regime_PDU_choice, hf_index, ett_ftam_FTAM_Regime_PDU,
1695                                  &branch_taken);
1696
1697   
1698   if( (branch_taken!=-1) && ftam_FTAM_Regime_PDU_vals[branch_taken].strptr ){
1699         if (check_col(pinfo->cinfo, COL_INFO)) {
1700                 col_append_fstr(pinfo->cinfo, COL_INFO, " %s:", ftam_FTAM_Regime_PDU_vals[branch_taken].strptr);
1701         }
1702   }
1703
1704
1705   return offset;
1706 }
1707 static int dissect_fTAM_Regime_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1708   return dissect_ftam_FTAM_Regime_PDU(FALSE, tvb, offset, pinfo, tree, hf_ftam_fTAM_Regime_PDU);
1709 }
1710
1711
1712 static const ber_sequence_t Pathname_sequence_of[1] = {
1713   { BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_Pathname_item },
1714 };
1715
1716 int
1717 dissect_ftam_Pathname(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1718   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1719                                       Pathname_sequence_of, hf_index, ett_ftam_Pathname);
1720
1721   return offset;
1722 }
1723 static int dissect_incomplete_pathname_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1724   return dissect_ftam_Pathname(TRUE, tvb, offset, pinfo, tree, hf_ftam_incomplete_pathname);
1725 }
1726 static int dissect_complete_pathname_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1727   return dissect_ftam_Pathname(TRUE, tvb, offset, pinfo, tree, hf_ftam_complete_pathname);
1728 }
1729 static int dissect_success_Object_names_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1730   return dissect_ftam_Pathname(FALSE, tvb, offset, pinfo, tree, hf_ftam_success_Object_names_item);
1731 }
1732
1733
1734 static const value_string ftam_Pathname_Attribute_vals[] = {
1735   {   0, "incomplete-pathname" },
1736   {   1, "complete-pathname" },
1737   { 0, NULL }
1738 };
1739
1740 static const ber_choice_t Pathname_Attribute_choice[] = {
1741   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_incomplete_pathname_impl },
1742   {   1, BER_CLASS_APP, 23, BER_FLAGS_IMPLTAG, dissect_complete_pathname_impl },
1743   { 0, 0, 0, 0, NULL }
1744 };
1745
1746 static int
1747 dissect_ftam_Pathname_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1748   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1749                                  Pathname_Attribute_choice, hf_index, ett_ftam_Pathname_Attribute,
1750                                  NULL);
1751
1752   return offset;
1753 }
1754 static int dissect_pathname(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1755   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_pathname);
1756 }
1757 static int dissect_linked_Object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1758   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_linked_Object);
1759 }
1760 static int dissect_primaty_pathname(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1761   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_primaty_pathname);
1762 }
1763 static int dissect_target_object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1764   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_target_object);
1765 }
1766 static int dissect_target_Object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1767   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_target_Object);
1768 }
1769 static int dissect_root_directory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1770   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_root_directory);
1771 }
1772
1773
1774 static const ber_sequence_t Select_Attributes_sequence[] = {
1775   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
1776   { 0, 0, 0, NULL }
1777 };
1778
1779 static int
1780 dissect_ftam_Select_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1781  gint8 class;
1782  gboolean pc, ind_field;
1783  gint32 tag;
1784  guint32 len1;
1785
1786  if(!implicit_tag){
1787    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1788     * XXX is some conformance file magic to work around that bug
1789     */
1790     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1791     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1792  }
1793   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
1794                                 Select_Attributes_sequence, hf_index, ett_ftam_Select_Attributes);
1795
1796
1797   return offset;
1798 }
1799 static int dissect_select_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1800   return dissect_ftam_Select_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_select_attributes);
1801 }
1802
1803
1804 static const asn_namedbit Access_Request_bits[] = {
1805   {  0, &hf_ftam_Access_Request_read, -1, -1, "read", NULL },
1806   {  1, &hf_ftam_Access_Request_insert, -1, -1, "insert", NULL },
1807   {  2, &hf_ftam_Access_Request_replace, -1, -1, "replace", NULL },
1808   {  3, &hf_ftam_Access_Request_extend, -1, -1, "extend", NULL },
1809   {  4, &hf_ftam_Access_Request_erase, -1, -1, "erase", NULL },
1810   {  5, &hf_ftam_Access_Request_read_attribute, -1, -1, "read-attribute", NULL },
1811   {  6, &hf_ftam_Access_Request_change_attribute, -1, -1, "change-attribute", NULL },
1812   {  7, &hf_ftam_Access_Request_delete_Object, -1, -1, "delete-Object", NULL },
1813   { 0, NULL, 0, 0, NULL, NULL }
1814 };
1815
1816 static int
1817 dissect_ftam_Access_Request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1818  gint8 class;
1819  gboolean pc, ind_field;
1820  gint32 tag;
1821  guint32 len1;
1822
1823    if(!implicit_tag){
1824      /* XXX  asn2eth can not yet handle tagged assignment yes so this
1825       * XXX is some conformance file magic to work around that bug
1826       */
1827       offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1828       offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1829   }
1830   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
1831                                  Access_Request_bits, hf_index, ett_ftam_Access_Request,
1832                                  NULL);
1833
1834   return offset;
1835 }
1836 static int dissect_requested_access(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1837   return dissect_ftam_Access_Request(FALSE, tvb, offset, pinfo, tree, hf_ftam_requested_access);
1838 }
1839 static int dissect_action_list_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1840   return dissect_ftam_Access_Request(TRUE, tvb, offset, pinfo, tree, hf_ftam_action_list);
1841 }
1842
1843
1844 static const ber_sequence_t Pass_Passwords_sequence_of[1] = {
1845   { BER_CLASS_APP, 17, BER_FLAGS_NOOWNTAG, dissect_Pass_Passwords_item },
1846 };
1847
1848 static int
1849 dissect_ftam_Pass_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1850   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1851                                       Pass_Passwords_sequence_of, hf_index, ett_ftam_Pass_Passwords);
1852
1853   return offset;
1854 }
1855 static int dissect_pass_passwords_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1856   return dissect_ftam_Pass_Passwords(TRUE, tvb, offset, pinfo, tree, hf_ftam_pass_passwords);
1857 }
1858
1859
1860 static const ber_sequence_t Access_Passwords_sequence[] = {
1861   { BER_CLASS_CON, 0, 0, dissect_read_password },
1862   { BER_CLASS_CON, 1, 0, dissect_insert_password },
1863   { BER_CLASS_CON, 2, 0, dissect_replace_password },
1864   { BER_CLASS_CON, 3, 0, dissect_extend_password },
1865   { BER_CLASS_CON, 4, 0, dissect_erase_password },
1866   { BER_CLASS_CON, 5, 0, dissect_read_attribute_password },
1867   { BER_CLASS_CON, 6, 0, dissect_change_attribute_password },
1868   { BER_CLASS_CON, 7, 0, dissect_delete_password },
1869   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pass_passwords_impl },
1870   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_link_password },
1871   { 0, 0, 0, NULL }
1872 };
1873
1874 static int
1875 dissect_ftam_Access_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1876  gint8 class;
1877  gboolean pc, ind_field;
1878  gint32 tag;
1879  guint32 len1;
1880
1881  if(!implicit_tag){
1882    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1883     * XXX is some conformance file magic to work around that bug
1884     */
1885     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1886     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1887  }
1888   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
1889                                 Access_Passwords_sequence, hf_index, ett_ftam_Access_Passwords);
1890
1891
1892   return offset;
1893 }
1894 static int dissect_access_passwords(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1895   return dissect_ftam_Access_Passwords(FALSE, tvb, offset, pinfo, tree, hf_ftam_access_passwords);
1896 }
1897 static int dissect_passwords_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1898   return dissect_ftam_Access_Passwords(TRUE, tvb, offset, pinfo, tree, hf_ftam_passwords);
1899 }
1900
1901
1902 static const ber_sequence_t Path_Access_Passwords_item_sequence[] = {
1903   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_password_impl },
1904   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_password_impl },
1905   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_replace_password_impl },
1906   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_extend_password_impl },
1907   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_erase_password_impl },
1908   { BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_read_attribute_password_impl },
1909   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_change_attribute_password_impl },
1910   { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_delete_password_impl },
1911   { BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_pass_passwords_impl },
1912   { BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_link_password_impl },
1913   { 0, 0, 0, NULL }
1914 };
1915
1916 static int
1917 dissect_ftam_Path_Access_Passwords_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1918   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1919                                    Path_Access_Passwords_item_sequence, hf_index, ett_ftam_Path_Access_Passwords_item);
1920
1921   return offset;
1922 }
1923 static int dissect_Path_Access_Passwords_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1924   return dissect_ftam_Path_Access_Passwords_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Path_Access_Passwords_item);
1925 }
1926
1927
1928 static const ber_sequence_t Path_Access_Passwords_sequence_of[1] = {
1929   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Path_Access_Passwords_item },
1930 };
1931
1932 static int
1933 dissect_ftam_Path_Access_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1934  gint8 class;
1935  gboolean pc, ind_field;
1936  gint32 tag;
1937  guint32 len1;
1938
1939  if(!implicit_tag){
1940    /* XXX  asn2eth can not yet handle tagged assignment yes so this
1941     * XXX is some conformance file magic to work around that bug
1942     */
1943     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1944     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1945  }
1946   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
1947                                    Path_Access_Passwords_sequence_of, hf_index, ett_ftam_Path_Access_Passwords);
1948
1949
1950   return offset;
1951 }
1952 static int dissect_path_access_passwords(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1953   return dissect_ftam_Path_Access_Passwords(FALSE, tvb, offset, pinfo, tree, hf_ftam_path_access_passwords);
1954 }
1955
1956
1957 static const value_string ftam_Lock_vals[] = {
1958   {   0, "not-required" },
1959   {   1, "shared" },
1960   {   2, "exclusive" },
1961   {   3, "no-access" },
1962   { 0, NULL }
1963 };
1964
1965
1966 static int
1967 dissect_ftam_Lock(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1968   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1969                                   NULL);
1970
1971   return offset;
1972 }
1973 static int dissect_read_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1974   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_lock);
1975 }
1976 static int dissect_insert_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1977   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_lock);
1978 }
1979 static int dissect_replace_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1980   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_replace_lock);
1981 }
1982 static int dissect_extend_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1983   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_extend_lock);
1984 }
1985 static int dissect_erase_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1986   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_erase_lock);
1987 }
1988 static int dissect_read_attribute_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1989   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_lock);
1990 }
1991 static int dissect_change_attribute_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1992   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_lock);
1993 }
1994 static int dissect_delete_Object_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1995   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_Object_lock);
1996 }
1997
1998
1999 static const ber_sequence_t Concurrency_Control_sequence[] = {
2000   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_lock_impl },
2001   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_lock_impl },
2002   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_replace_lock_impl },
2003   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_extend_lock_impl },
2004   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_erase_lock_impl },
2005   { BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_read_attribute_lock_impl },
2006   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_change_attribute_lock_impl },
2007   { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_delete_Object_lock_impl },
2008   { 0, 0, 0, NULL }
2009 };
2010
2011 static int
2012 dissect_ftam_Concurrency_Control(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2013  gint8 class;
2014  gboolean pc, ind_field;
2015  gint32 tag;
2016  guint32 len1;
2017
2018  if(!implicit_tag){
2019    /* XXX  asn2eth can not yet handle tagged assignment yes so this
2020     * XXX is some conformance file magic to work around that bug
2021     */
2022     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
2023     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
2024  }
2025   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
2026                                 Concurrency_Control_sequence, hf_index, ett_ftam_Concurrency_Control);
2027
2028
2029
2030   return offset;
2031 }
2032 static int dissect_concurrency_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2033   return dissect_ftam_Concurrency_Control(FALSE, tvb, offset, pinfo, tree, hf_ftam_concurrency_control);
2034 }
2035
2036
2037 static const ber_sequence_t F_SELECT_request_sequence[] = {
2038   { BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_select_attributes },
2039   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
2040   { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
2041   { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
2042   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
2043   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2044   { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
2045   { 0, 0, 0, NULL }
2046 };
2047
2048 static int
2049 dissect_ftam_F_SELECT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2050   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2051                                    F_SELECT_request_sequence, hf_index, ett_ftam_F_SELECT_request);
2052
2053   return offset;
2054 }
2055 static int dissect_f_select_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2056   return dissect_ftam_F_SELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_request);
2057 }
2058
2059
2060
2061 static int
2062 dissect_ftam_Referent_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2063  gint8 class;
2064  gboolean pc, ind_field;
2065  gint32 tag;
2066  guint32 len1;
2067
2068  if(!implicit_tag){
2069    /* XXX  asn2eth can not yet handle tagged assignment yes so this
2070     * XXX is some conformance file magic to work around that bug
2071     */
2072     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
2073     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
2074  }
2075   offset = dissect_ber_boolean(TRUE, pinfo, tree, tvb, offset, hf_index);
2076
2077
2078   return offset;
2079 }
2080 static int dissect_referent_indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2081   return dissect_ftam_Referent_Indicator(FALSE, tvb, offset, pinfo, tree, hf_ftam_referent_indicator);
2082 }
2083
2084
2085 static const ber_sequence_t F_SELECT_response_sequence[] = {
2086   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
2087   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
2088   { BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_select_attributes },
2089   { BER_CLASS_APP, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_referent_indicator },
2090   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2091   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
2092   { 0, 0, 0, NULL }
2093 };
2094
2095 static int
2096 dissect_ftam_F_SELECT_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2097   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2098                                    F_SELECT_response_sequence, hf_index, ett_ftam_F_SELECT_response);
2099
2100   return offset;
2101 }
2102 static int dissect_f_select_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2103   return dissect_ftam_F_SELECT_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_response);
2104 }
2105
2106
2107 static const ber_sequence_t F_DESELECT_request_sequence[] = {
2108   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2109   { 0, 0, 0, NULL }
2110 };
2111
2112 static int
2113 dissect_ftam_F_DESELECT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2114   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2115                                    F_DESELECT_request_sequence, hf_index, ett_ftam_F_DESELECT_request);
2116
2117   return offset;
2118 }
2119 static int dissect_f_deselect_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2120   return dissect_ftam_F_DESELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_deselect_request);
2121 }
2122
2123
2124 static const ber_sequence_t F_DESELECT_response_sequence[] = {
2125   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
2126   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
2127   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2128   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
2129   { 0, 0, 0, NULL }
2130 };
2131
2132 static int
2133 dissect_ftam_F_DESELECT_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2134   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2135                                    F_DESELECT_response_sequence, hf_index, ett_ftam_F_DESELECT_response);
2136
2137   return offset;
2138 }
2139 static int dissect_f_deselect_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2140   return dissect_ftam_F_DESELECT_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_deselect_response);
2141 }
2142
2143
2144 static const value_string ftam_Override_vals[] = {
2145   {   0, "create-failure" },
2146   {   1, "select-old-Object" },
2147   {   2, "delete-and-create-with-old-attributes" },
2148   {   3, "delete-and-create-with-new-attributes" },
2149   { 0, NULL }
2150 };
2151
2152
2153 static int
2154 dissect_ftam_Override(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2155   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2156                                   NULL);
2157
2158   return offset;
2159 }
2160 static int dissect_override_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2161   return dissect_ftam_Override(TRUE, tvb, offset, pinfo, tree, hf_ftam_override);
2162 }
2163
2164
2165 static const value_string ftam_Object_Type_Attribute_vals[] = {
2166   {   0, "file" },
2167   {   1, "file-directory" },
2168   {   2, "reference" },
2169   { 0, NULL }
2170 };
2171
2172
2173 static int
2174 dissect_ftam_Object_Type_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2175   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2176                                   NULL);
2177
2178   return offset;
2179 }
2180 static int dissect_object_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2181   return dissect_ftam_Object_Type_Attribute(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_type);
2182 }
2183
2184
2185 static const asn_namedbit Permitted_Actions_Attribute_bits[] = {
2186   {  0, &hf_ftam_Permitted_Actions_Attribute_read, -1, -1, "read", NULL },
2187   {  1, &hf_ftam_Permitted_Actions_Attribute_insert, -1, -1, "insert", NULL },
2188   {  2, &hf_ftam_Permitted_Actions_Attribute_replace, -1, -1, "replace", NULL },
2189   {  3, &hf_ftam_Permitted_Actions_Attribute_extend, -1, -1, "extend", NULL },
2190   {  4, &hf_ftam_Permitted_Actions_Attribute_erase, -1, -1, "erase", NULL },
2191   {  5, &hf_ftam_Permitted_Actions_Attribute_read_attribute, -1, -1, "read-attribute", NULL },
2192   {  6, &hf_ftam_Permitted_Actions_Attribute_change_attribute, -1, -1, "change-attribute", NULL },
2193   {  7, &hf_ftam_Permitted_Actions_Attribute_delete_Object, -1, -1, "delete-Object", NULL },
2194   { 11, &hf_ftam_Permitted_Actions_Attribute_pass, -1, -1, "pass", NULL },
2195   { 12, &hf_ftam_Permitted_Actions_Attribute_link, -1, -1, "link", NULL },
2196   {  8, &hf_ftam_Permitted_Actions_Attribute_traversal, -1, -1, "traversal", NULL },
2197   {  9, &hf_ftam_Permitted_Actions_Attribute_reverse_traversal, -1, -1, "reverse-traversal", NULL },
2198   { 10, &hf_ftam_Permitted_Actions_Attribute_random_Order, -1, -1, "random-Order", NULL },
2199   { 0, NULL, 0, 0, NULL, NULL }
2200 };
2201
2202 int
2203 dissect_ftam_Permitted_Actions_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2204   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2205                                     Permitted_Actions_Attribute_bits, hf_index, ett_ftam_Permitted_Actions_Attribute,
2206                                     NULL);
2207
2208   return offset;
2209 }
2210 static int dissect_permitted_actions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2211   return dissect_ftam_Permitted_Actions_Attribute(TRUE, tvb, offset, pinfo, tree, hf_ftam_permitted_actions);
2212 }
2213
2214
2215
2216 static int
2217 dissect_ftam_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2218   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
2219
2220
2221   return offset;
2222 }
2223 static int dissect_parameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2224   return dissect_ftam_T_parameter(FALSE, tvb, offset, pinfo, tree, hf_ftam_parameter);
2225 }
2226
2227
2228 static const ber_sequence_t T_document_type_sequence[] = {
2229   { BER_CLASS_APP, 14, BER_FLAGS_NOOWNTAG, dissect_document_type_name },
2230   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_parameter },
2231   { 0, 0, 0, NULL }
2232 };
2233
2234 static int
2235 dissect_ftam_T_document_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2236   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2237                                    T_document_type_sequence, hf_index, ett_ftam_T_document_type);
2238
2239   return offset;
2240 }
2241 static int dissect_document_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2242   return dissect_ftam_T_document_type(TRUE, tvb, offset, pinfo, tree, hf_ftam_document_type);
2243 }
2244
2245
2246
2247 static int
2248 dissect_ftam_Constraint_Set_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2249  gint8 class;
2250  gboolean pc, ind_field;
2251  gint32 tag;
2252  guint32 len1;
2253
2254  if(!implicit_tag){
2255    /* XXX  asn2eth can not yet handle tagged assignment yes so this
2256     * XXX is some conformance file magic to work around that bug
2257     */
2258     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
2259     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
2260  }
2261   offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset, hf_index,
2262                                             NULL);
2263
2264
2265   return offset;
2266 }
2267 static int dissect_constraint_set_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2268   return dissect_ftam_Constraint_Set_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_constraint_set_name);
2269 }
2270
2271
2272 static const ber_sequence_t T_constraint_set_and_abstract_Syntax_sequence[] = {
2273   { BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_constraint_set_name },
2274   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_abstract_Syntax_name },
2275   { 0, 0, 0, NULL }
2276 };
2277
2278 static int
2279 dissect_ftam_T_constraint_set_and_abstract_Syntax(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2280   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2281                                    T_constraint_set_and_abstract_Syntax_sequence, hf_index, ett_ftam_T_constraint_set_and_abstract_Syntax);
2282
2283   return offset;
2284 }
2285 static int dissect_constraint_set_and_abstract_Syntax_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2286   return dissect_ftam_T_constraint_set_and_abstract_Syntax(TRUE, tvb, offset, pinfo, tree, hf_ftam_constraint_set_and_abstract_Syntax);
2287 }
2288
2289
2290 static const value_string ftam_Contents_Type_Attribute_vals[] = {
2291   {   0, "document-type" },
2292   {   1, "constraint-set-and-abstract-Syntax" },
2293   { 0, NULL }
2294 };
2295
2296 static const ber_choice_t Contents_Type_Attribute_choice[] = {
2297   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_document_type_impl },
2298   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_constraint_set_and_abstract_Syntax_impl },
2299   { 0, 0, 0, 0, NULL }
2300 };
2301
2302 static int
2303 dissect_ftam_Contents_Type_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2304   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2305                                  Contents_Type_Attribute_choice, hf_index, ett_ftam_Contents_Type_Attribute,
2306                                  NULL);
2307
2308   return offset;
2309 }
2310 static int dissect_proposed(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2311   return dissect_ftam_Contents_Type_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_proposed);
2312 }
2313 static int dissect_contents_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2314   return dissect_ftam_Contents_Type_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_contents_type);
2315 }
2316
2317
2318
2319 static int
2320 dissect_ftam_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2321   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
2322
2323   return offset;
2324 }
2325 static int dissect_unknown_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2326   return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_unknown);
2327 }
2328 static int dissect_no_value_available_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2329   return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_no_value_available);
2330 }
2331 static int dissect_abstract_Syntax_not_supported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2332   return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_abstract_Syntax_not_supported);
2333 }
2334 static int dissect_any_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2335   return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_any_match);
2336 }
2337
2338
2339 static const value_string ftam_Account_Attribute_vals[] = {
2340   {   0, "no-value-available" },
2341   {   1, "actual-values" },
2342   { 0, NULL }
2343 };
2344
2345 static const ber_choice_t Account_Attribute_choice[] = {
2346   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
2347   {   1, BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_actual_values2 },
2348   { 0, 0, 0, 0, NULL }
2349 };
2350
2351 static int
2352 dissect_ftam_Account_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2353   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2354                                  Account_Attribute_choice, hf_index, ett_ftam_Account_Attribute,
2355                                  NULL);
2356
2357   return offset;
2358 }
2359 static int dissect_storage_account(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2360   return dissect_ftam_Account_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_storage_account);
2361 }
2362
2363
2364 static const value_string ftam_T_actual_values_vals[] = {
2365   {   0, "immediate-availability" },
2366   {   1, "deferred-availability" },
2367   { 0, NULL }
2368 };
2369
2370
2371 static int
2372 dissect_ftam_T_actual_values(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2373   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2374                                   NULL);
2375
2376   return offset;
2377 }
2378 static int dissect_actual_values8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2379   return dissect_ftam_T_actual_values(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values8);
2380 }
2381
2382
2383 const value_string ftam_Object_Availability_Attribute_vals[] = {
2384   {   0, "no-value-available" },
2385   {   1, "actual-values" },
2386   { 0, NULL }
2387 };
2388
2389 static const ber_choice_t Object_Availability_Attribute_choice[] = {
2390   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
2391   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values8_impl },
2392   { 0, 0, 0, 0, NULL }
2393 };
2394
2395 int
2396 dissect_ftam_Object_Availability_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2397   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2398                                  Object_Availability_Attribute_choice, hf_index, ett_ftam_Object_Availability_Attribute,
2399                                  NULL);
2400
2401   return offset;
2402 }
2403 static int dissect_object_availability(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2404   return dissect_ftam_Object_Availability_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_object_availability);
2405 }
2406
2407
2408 const value_string ftam_Object_Size_Attribute_vals[] = {
2409   {   0, "no-value-available" },
2410   {   1, "actual-values" },
2411   { 0, NULL }
2412 };
2413
2414 static const ber_choice_t Object_Size_Attribute_choice[] = {
2415   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
2416   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values7_impl },
2417   { 0, 0, 0, 0, NULL }
2418 };
2419
2420 int
2421 dissect_ftam_Object_Size_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2422   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2423                                  Object_Size_Attribute_choice, hf_index, ett_ftam_Object_Size_Attribute,
2424                                  NULL);
2425
2426   return offset;
2427 }
2428 static int dissect_future_Object_size(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2429   return dissect_ftam_Object_Size_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_future_Object_size);
2430 }
2431 static int dissect_object_size(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2432   return dissect_ftam_Object_Size_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_object_size);
2433 }
2434
2435
2436 static const asn_namedbit Concurrency_Key_bits[] = {
2437   {  0, &hf_ftam_Concurrency_Key_not_required, -1, -1, "not-required", NULL },
2438   {  1, &hf_ftam_Concurrency_Key_shared, -1, -1, "shared", NULL },
2439   {  2, &hf_ftam_Concurrency_Key_exclusive, -1, -1, "exclusive", NULL },
2440   {  3, &hf_ftam_Concurrency_Key_no_access, -1, -1, "no-access", NULL },
2441   { 0, NULL, 0, 0, NULL, NULL }
2442 };
2443
2444 static int
2445 dissect_ftam_Concurrency_Key(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2446   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2447                                     Concurrency_Key_bits, hf_index, ett_ftam_Concurrency_Key,
2448                                     NULL);
2449
2450   return offset;
2451 }
2452 static int dissect_read_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2453   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_key);
2454 }
2455 static int dissect_insert_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2456   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_key);
2457 }
2458 static int dissect_replace_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2459   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_replace_key);
2460 }
2461 static int dissect_extend_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2462   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_extend_key);
2463 }
2464 static int dissect_erase_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2465   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_erase_key);
2466 }
2467 static int dissect_read_attribute_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2468   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_key);
2469 }
2470 static int dissect_change_attribute_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2471   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_key);
2472 }
2473 static int dissect_delete_Object_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2474   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_Object_key);
2475 }
2476
2477
2478 static const ber_sequence_t Concurrency_Access_sequence[] = {
2479   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_key_impl },
2480   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_key_impl },
2481   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_replace_key_impl },
2482   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_extend_key_impl },
2483   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_erase_key_impl },
2484   { BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_read_attribute_key_impl },
2485   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_change_attribute_key_impl },
2486   { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_delete_Object_key_impl },
2487   { 0, 0, 0, NULL }
2488 };
2489
2490 int
2491 dissect_ftam_Concurrency_Access(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2492   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2493                                    Concurrency_Access_sequence, hf_index, ett_ftam_Concurrency_Access);
2494
2495   return offset;
2496 }
2497 static int dissect_concurrency_access_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2498   return dissect_ftam_Concurrency_Access(TRUE, tvb, offset, pinfo, tree, hf_ftam_concurrency_access);
2499 }
2500
2501
2502
2503 static int
2504 dissect_ftam_AP_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2505         /* XXX have no idea about this one */
2506
2507   return offset;
2508 }
2509 static int dissect_ap(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2510   return dissect_ftam_AP_title(FALSE, tvb, offset, pinfo, tree, hf_ftam_ap);
2511 }
2512
2513
2514
2515 static int
2516 dissect_ftam_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2517         /* XXX have no idea about this one */
2518
2519
2520   return offset;
2521 }
2522 static int dissect_ae(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2523   return dissect_ftam_AE_qualifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_ae);
2524 }
2525
2526
2527 static const ber_sequence_t AE_title_sequence[] = {
2528   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ap },
2529   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ae },
2530   { 0, 0, 0, NULL }
2531 };
2532
2533 static int
2534 dissect_ftam_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2535   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2536                                    AE_title_sequence, hf_index, ett_ftam_AE_title);
2537
2538   return offset;
2539 }
2540
2541
2542
2543 static int
2544 dissect_ftam_Application_Entity_Title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2545   offset = dissect_ftam_AE_title(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2546
2547   return offset;
2548 }
2549 static int dissect_location_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2550   return dissect_ftam_Application_Entity_Title(TRUE, tvb, offset, pinfo, tree, hf_ftam_location);
2551 }
2552
2553
2554 static const ber_sequence_t Access_Control_Element_sequence[] = {
2555   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_action_list_impl },
2556   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_concurrency_access_impl },
2557   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_identity_impl },
2558   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_passwords_impl },
2559   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_location_impl },
2560   { 0, 0, 0, NULL }
2561 };
2562
2563 static int
2564 dissect_ftam_Access_Control_Element(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2565   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2566                                    Access_Control_Element_sequence, hf_index, ett_ftam_Access_Control_Element);
2567
2568   return offset;
2569 }
2570 static int dissect_actual_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2571   return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_actual_values_item);
2572 }
2573 static int dissect_insert_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2574   return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_insert_values_item);
2575 }
2576 static int dissect_delete_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2577   return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_delete_values_item);
2578 }
2579
2580
2581 static const ber_sequence_t SET_OF_Access_Control_Element_set_of[1] = {
2582   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actual_values_item },
2583 };
2584
2585 static int
2586 dissect_ftam_SET_OF_Access_Control_Element(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2587   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2588                                  SET_OF_Access_Control_Element_set_of, hf_index, ett_ftam_SET_OF_Access_Control_Element);
2589
2590   return offset;
2591 }
2592 static int dissect_actual_values3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2593   return dissect_ftam_SET_OF_Access_Control_Element(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values3);
2594 }
2595 static int dissect_insert_values_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2596   return dissect_ftam_SET_OF_Access_Control_Element(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_values);
2597 }
2598 static int dissect_delete_values_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2599   return dissect_ftam_SET_OF_Access_Control_Element(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_values);
2600 }
2601
2602
2603 static const value_string ftam_Access_Control_Attribute_vals[] = {
2604   {   0, "no-value-available" },
2605   {   1, "actual-values" },
2606   { 0, NULL }
2607 };
2608
2609 static const ber_choice_t Access_Control_Attribute_choice[] = {
2610   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
2611   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values3_impl },
2612   { 0, 0, 0, 0, NULL }
2613 };
2614
2615 static int
2616 dissect_ftam_Access_Control_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2617   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2618                                  Access_Control_Attribute_choice, hf_index, ett_ftam_Access_Control_Attribute,
2619                                  NULL);
2620
2621   return offset;
2622 }
2623 static int dissect_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2624   return dissect_ftam_Access_Control_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_access_control);
2625 }
2626 static int dissect_create_path_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2627   return dissect_ftam_Access_Control_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_create_path_access_control);
2628 }
2629 static int dissect_path_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2630   return dissect_ftam_Access_Control_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_path_access_control);
2631 }
2632
2633
2634 const value_string ftam_Legal_Qualification_Attribute_vals[] = {
2635   {   0, "no-value-available" },
2636   {   1, "actual-values" },
2637   { 0, NULL }
2638 };
2639
2640 static const ber_choice_t Legal_Qualification_Attribute_choice[] = {
2641   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
2642   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values9_impl },
2643   { 0, 0, 0, 0, NULL }
2644 };
2645
2646 int
2647 dissect_ftam_Legal_Qualification_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2648   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2649                                  Legal_Qualification_Attribute_choice, hf_index, ett_ftam_Legal_Qualification_Attribute,
2650                                  NULL);
2651
2652   return offset;
2653 }
2654 static int dissect_legal_qualification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2655   return dissect_ftam_Legal_Qualification_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_legal_qualification);
2656 }
2657
2658
2659 const value_string ftam_Private_Use_Attribute_vals[] = {
2660   {   0, "no-value-available" },
2661   {   1, "abstract-Syntax-not-supported" },
2662   {   2, "actual-values" },
2663   { 0, NULL }
2664 };
2665
2666 static const ber_choice_t Private_Use_Attribute_choice[] = {
2667   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
2668   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_abstract_Syntax_not_supported_impl },
2669   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_actual_values4_impl },
2670   { 0, 0, 0, 0, NULL }
2671 };
2672
2673 int
2674 dissect_ftam_Private_Use_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2675   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2676                                  Private_Use_Attribute_choice, hf_index, ett_ftam_Private_Use_Attribute,
2677                                  NULL);
2678
2679   return offset;
2680 }
2681 static int dissect_private_use(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2682   return dissect_ftam_Private_Use_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_private_use);
2683 }
2684
2685
2686
2687 static int
2688 dissect_ftam_Extension_Set_Identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2689   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2690
2691   return offset;
2692 }
2693 static int dissect_extension_set_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2694   return dissect_ftam_Extension_Set_Identifier(TRUE, tvb, offset, pinfo, tree, hf_ftam_extension_set_identifier);
2695 }
2696
2697
2698
2699 static int
2700 dissect_ftam_T_extension_attribute_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2701   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
2702
2703   return offset;
2704 }
2705 static int dissect_extension_attribute_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2706   return dissect_ftam_T_extension_attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_identifier);
2707 }
2708
2709
2710
2711 static int
2712 dissect_ftam_T_extension_attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2713   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
2714
2715
2716   return offset;
2717 }
2718 static int dissect_extension_attribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2719   return dissect_ftam_T_extension_attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute);
2720 }
2721
2722
2723 static const ber_sequence_t Extension_Attribute_sequence[] = {
2724   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_identifier },
2725   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_extension_attribute },
2726   { 0, 0, 0, NULL }
2727 };
2728
2729 static int
2730 dissect_ftam_Extension_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2731   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2732                                    Extension_Attribute_sequence, hf_index, ett_ftam_Extension_Attribute);
2733
2734   return offset;
2735 }
2736 static int dissect_extension_set_attributes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2737   return dissect_ftam_Extension_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attributes_item);
2738 }
2739
2740
2741 static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_sequence_of[1] = {
2742   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extension_set_attributes_item },
2743 };
2744
2745 static int
2746 dissect_ftam_SEQUENCE_OF_Extension_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2747   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2748                                       SEQUENCE_OF_Extension_Attribute_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute);
2749
2750   return offset;
2751 }
2752 static int dissect_extension_set_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2753   return dissect_ftam_SEQUENCE_OF_Extension_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attributes);
2754 }
2755
2756
2757 static const ber_sequence_t Attribute_Extension_Set_sequence[] = {
2758   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
2759   { BER_CLASS_CON, 1, 0, dissect_extension_set_attributes },
2760   { 0, 0, 0, NULL }
2761 };
2762
2763 static int
2764 dissect_ftam_Attribute_Extension_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2765   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2766                                    Attribute_Extension_Set_sequence, hf_index, ett_ftam_Attribute_Extension_Set);
2767
2768   return offset;
2769 }
2770 static int dissect_Attribute_Extensions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2771   return dissect_ftam_Attribute_Extension_Set(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extensions_item);
2772 }
2773
2774
2775 static const ber_sequence_t Attribute_Extensions_sequence_of[1] = {
2776   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extensions_item },
2777 };
2778
2779 int
2780 dissect_ftam_Attribute_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2781   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2782                                       Attribute_Extensions_sequence_of, hf_index, ett_ftam_Attribute_Extensions);
2783
2784   return offset;
2785 }
2786 static int dissect_attribute_extensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2787   return dissect_ftam_Attribute_Extensions(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extensions);
2788 }
2789
2790
2791 static const ber_sequence_t Create_Attributes_sequence[] = {
2792   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
2793   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_object_type_impl },
2794   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_permitted_actions_impl },
2795   { BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_contents_type },
2796   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_storage_account },
2797   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_availability },
2798   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_future_Object_size },
2799   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_access_control },
2800   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_create_path_access_control },
2801   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_legal_qualification },
2802   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_private_use },
2803   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extensions_impl },
2804   { 0, 0, 0, NULL }
2805 };
2806
2807 static int
2808 dissect_ftam_Create_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2809  gint8 class;
2810  gboolean pc, ind_field;
2811  gint32 tag;
2812  guint32 len1;
2813
2814  if(!implicit_tag){
2815    /* XXX  asn2eth can not yet handle tagged assignment yes so this
2816     * XXX is some conformance file magic to work around that bug
2817     */
2818     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
2819     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
2820  }
2821   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
2822                                 Create_Attributes_sequence, hf_index, ett_ftam_Create_Attributes);
2823
2824
2825   return offset;
2826 }
2827 static int dissect_initial_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2828   return dissect_ftam_Create_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_initial_attributes);
2829 }
2830
2831
2832 static const ber_sequence_t F_CREATE_request_sequence[] = {
2833   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
2834   { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
2835   { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
2836   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
2837   { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
2838   { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
2839   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
2840   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2841   { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
2842   { 0, 0, 0, NULL }
2843 };
2844
2845 static int
2846 dissect_ftam_F_CREATE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2847   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2848                                    F_CREATE_request_sequence, hf_index, ett_ftam_F_CREATE_request);
2849
2850   return offset;
2851 }
2852 static int dissect_f_create_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2853   return dissect_ftam_F_CREATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_request);
2854 }
2855
2856
2857 static const ber_sequence_t F_CREATE_response_sequence[] = {
2858   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
2859   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
2860   { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
2861   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2862   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
2863   { 0, 0, 0, NULL }
2864 };
2865
2866 static int
2867 dissect_ftam_F_CREATE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2868   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2869                                    F_CREATE_response_sequence, hf_index, ett_ftam_F_CREATE_response);
2870
2871   return offset;
2872 }
2873 static int dissect_f_create_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2874   return dissect_ftam_F_CREATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_response);
2875 }
2876
2877
2878 static const ber_sequence_t F_DELETE_request_sequence[] = {
2879   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2880   { 0, 0, 0, NULL }
2881 };
2882
2883 static int
2884 dissect_ftam_F_DELETE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2885   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2886                                    F_DELETE_request_sequence, hf_index, ett_ftam_F_DELETE_request);
2887
2888   return offset;
2889 }
2890 static int dissect_f_delete_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2891   return dissect_ftam_F_DELETE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_delete_request);
2892 }
2893
2894
2895 static const ber_sequence_t F_DELETE_response_sequence[] = {
2896   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
2897   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
2898   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
2899   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
2900   { 0, 0, 0, NULL }
2901 };
2902
2903 static int
2904 dissect_ftam_F_DELETE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2905   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2906                                    F_DELETE_response_sequence, hf_index, ett_ftam_F_DELETE_response);
2907
2908   return offset;
2909 }
2910 static int dissect_f_delete_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2911   return dissect_ftam_F_DELETE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_delete_response);
2912 }
2913
2914
2915 static const asn_namedbit Attribute_Names_bits[] = {
2916   {  0, &hf_ftam_Attribute_Names_read_pathname, -1, -1, "read-pathname", NULL },
2917   { 18, &hf_ftam_Attribute_Names_read_Object_type, -1, -1, "read-Object-type", NULL },
2918   {  1, &hf_ftam_Attribute_Names_read_permitted_actions, -1, -1, "read-permitted-actions", NULL },
2919   {  2, &hf_ftam_Attribute_Names_read_contents_type, -1, -1, "read-contents-type", NULL },
2920   { 19, &hf_ftam_Attribute_Names_read_linked_Object, -1, -1, "read-linked-Object", NULL },
2921   { 23, &hf_ftam_Attribute_Names_read_Child_objects, -1, -1, "read-Child-objects", NULL },
2922   { 20, &hf_ftam_Attribute_Names_read_primary_pathname, -1, -1, "read-primary-pathname", NULL },
2923   {  3, &hf_ftam_Attribute_Names_read_storage_account, -1, -1, "read-storage-account", NULL },
2924   {  4, &hf_ftam_Attribute_Names_read_date_and_time_of_creation, -1, -1, "read-date-and-time-of-creation", NULL },
2925   {  5, &hf_ftam_Attribute_Names_read_date_and_time_of_last_modification, -1, -1, "read-date-and-time-of-last-modification", NULL },
2926   {  6, &hf_ftam_Attribute_Names_read_date_and_time_of_last_read_access, -1, -1, "read-date-and-time-of-last-read-access", NULL },
2927   {  7, &hf_ftam_Attribute_Names_read_date_and_time_of_last_attribute_modification, -1, -1, "read-date-and-time-of-last-attribute-modification", NULL },
2928   {  8, &hf_ftam_Attribute_Names_read_identity_of_creator, -1, -1, "read-identity-of-creator", NULL },
2929   {  9, &hf_ftam_Attribute_Names_read_identity_of_last_modifier, -1, -1, "read-identity-of-last-modifier", NULL },
2930   { 10, &hf_ftam_Attribute_Names_read_identity_of_last_reader, -1, -1, "read-identity-of-last-reader", NULL },
2931   { 11, &hf_ftam_Attribute_Names_read_identity_of_last_attribute_modifier, -1, -1, "read-identity-of-last-attribute-modifier", NULL },
2932   { 12, &hf_ftam_Attribute_Names_read_Object_availability, -1, -1, "read-Object-availability", NULL },
2933   { 13, &hf_ftam_Attribute_Names_read_Object_size, -1, -1, "read-Object-size", NULL },
2934   { 14, &hf_ftam_Attribute_Names_read_future_Object_size, -1, -1, "read-future-Object-size", NULL },
2935   { 15, &hf_ftam_Attribute_Names_read_access_control, -1, -1, "read-access-control", NULL },
2936   { 21, &hf_ftam_Attribute_Names_read_path_access_control, -1, -1, "read-path-access-control", NULL },
2937   { 16, &hf_ftam_Attribute_Names_read_legal_qualifiCatiOnS, -1, -1, "read-legal-qualifiCatiOnS", NULL },
2938   { 17, &hf_ftam_Attribute_Names_read_private_use, -1, -1, "read-private-use", NULL },
2939   { 0, NULL, 0, 0, NULL, NULL }
2940 };
2941
2942 static int
2943 dissect_ftam_Attribute_Names(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2944   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2945                                     Attribute_Names_bits, hf_index, ett_ftam_Attribute_Names,
2946                                     NULL);
2947
2948   return offset;
2949 }
2950 static int dissect_attribute_names_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2951   return dissect_ftam_Attribute_Names(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_names);
2952 }
2953
2954
2955
2956 static int
2957 dissect_ftam_Extension_Attribute_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2958   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2959
2960   return offset;
2961 }
2962 static int dissect_extension_attribute_names_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2963   return dissect_ftam_Extension_Attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_names_item);
2964 }
2965
2966
2967 static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_identifier_sequence_of[1] = {
2968   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_names_item },
2969 };
2970
2971 static int
2972 dissect_ftam_SEQUENCE_OF_Extension_Attribute_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2973   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2974                                       SEQUENCE_OF_Extension_Attribute_identifier_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier);
2975
2976   return offset;
2977 }
2978 static int dissect_extension_attribute_names(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2979   return dissect_ftam_SEQUENCE_OF_Extension_Attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_names);
2980 }
2981
2982
2983 static const ber_sequence_t Attribute_Extension_Set_Name_sequence[] = {
2984   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
2985   { BER_CLASS_CON, 1, 0, dissect_extension_attribute_names },
2986   { 0, 0, 0, NULL }
2987 };
2988
2989 static int
2990 dissect_ftam_Attribute_Extension_Set_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2991   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2992                                    Attribute_Extension_Set_Name_sequence, hf_index, ett_ftam_Attribute_Extension_Set_Name);
2993
2994   return offset;
2995 }
2996 static int dissect_Attribute_Extension_Names_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2997   return dissect_ftam_Attribute_Extension_Set_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extension_Names_item);
2998 }
2999
3000
3001 static const ber_sequence_t Attribute_Extension_Names_sequence_of[1] = {
3002   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extension_Names_item },
3003 };
3004
3005 static int
3006 dissect_ftam_Attribute_Extension_Names(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3007   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3008                                       Attribute_Extension_Names_sequence_of, hf_index, ett_ftam_Attribute_Extension_Names);
3009
3010   return offset;
3011 }
3012 static int dissect_attribute_extension_names_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3013   return dissect_ftam_Attribute_Extension_Names(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extension_names);
3014 }
3015
3016
3017 static const ber_sequence_t F_READ_ATTRIB_request_sequence[] = {
3018   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
3019   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
3020   { 0, 0, 0, NULL }
3021 };
3022
3023 static int
3024 dissect_ftam_F_READ_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3025   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3026                                    F_READ_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_ATTRIB_request);
3027
3028   return offset;
3029 }
3030 static int dissect_f_read_attrib_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3031   return dissect_ftam_F_READ_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_attrib_request);
3032 }
3033
3034
3035 static const ber_sequence_t Child_Objects_Attribute_set_of[1] = {
3036   { BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_Child_Objects_Attribute_item },
3037 };
3038
3039 static int
3040 dissect_ftam_Child_Objects_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3041   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
3042                                  Child_Objects_Attribute_set_of, hf_index, ett_ftam_Child_Objects_Attribute);
3043
3044   return offset;
3045 }
3046 static int dissect_child_objects(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3047   return dissect_ftam_Child_Objects_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_child_objects);
3048 }
3049
3050
3051
3052 static int
3053 dissect_ftam_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3054   offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
3055
3056   return offset;
3057 }
3058 static int dissect_actual_values5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3059   return dissect_ftam_GeneralizedTime(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values5);
3060 }
3061 static int dissect_time_and_date_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3062   return dissect_ftam_GeneralizedTime(TRUE, tvb, offset, pinfo, tree, hf_ftam_time_and_date_value);
3063 }
3064
3065
3066 const value_string ftam_Date_and_Time_Attribute_vals[] = {
3067   {   0, "no-value-available" },
3068   {   1, "actual-values" },
3069   { 0, NULL }
3070 };
3071
3072 static const ber_choice_t Date_and_Time_Attribute_choice[] = {
3073   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
3074   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values5_impl },
3075   { 0, 0, 0, 0, NULL }
3076 };
3077
3078 int
3079 dissect_ftam_Date_and_Time_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3080   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3081                                  Date_and_Time_Attribute_choice, hf_index, ett_ftam_Date_and_Time_Attribute,
3082                                  NULL);
3083
3084   return offset;
3085 }
3086 static int dissect_date_and_time_of_creation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3087   return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_creation);
3088 }
3089 static int dissect_date_and_time_of_last_modification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3090   return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_modification);
3091 }
3092 static int dissect_date_and_time_of_last_read_access(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3093   return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_read_access);
3094 }
3095 static int dissect_date_and_time_of_last_attribute_modification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3096   return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_attribute_modification);
3097 }
3098
3099
3100 static const value_string ftam_User_Identity_Attribute_vals[] = {
3101   {   0, "no-value-available" },
3102   {   1, "actual-values" },
3103   { 0, NULL }
3104 };
3105
3106 static const ber_choice_t User_Identity_Attribute_choice[] = {
3107   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
3108   {   1, BER_CLASS_APP, 22, BER_FLAGS_NOOWNTAG, dissect_actual_values6 },
3109   { 0, 0, 0, 0, NULL }
3110 };
3111
3112 static int
3113 dissect_ftam_User_Identity_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3114   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3115                                  User_Identity_Attribute_choice, hf_index, ett_ftam_User_Identity_Attribute,
3116                                  NULL);
3117
3118   return offset;
3119 }
3120 static int dissect_identity_of_creator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3121   return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_of_creator);
3122 }
3123 static int dissect_identity_of_last_modifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3124   return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_modifier);
3125 }
3126 static int dissect_identity_of_last_reader(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3127   return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_reader);
3128 }
3129 static int dissect_identity_last_attribute_modifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3130   return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_last_attribute_modifier);
3131 }
3132
3133
3134 static const ber_sequence_t Read_Attributes_sequence[] = {
3135   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
3136   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_object_type_impl },
3137   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permitted_actions_impl },
3138   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_contents_type },
3139   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_linked_Object },
3140   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_child_objects },
3141   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_primaty_pathname },
3142   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_storage_account },
3143   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_creation },
3144   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_last_modification },
3145   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_last_read_access },
3146   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_last_attribute_modification },
3147   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_of_creator },
3148   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_of_last_modifier },
3149   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_of_last_reader },
3150   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_last_attribute_modifier },
3151   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_availability },
3152   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_size },
3153   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_future_Object_size },
3154   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_access_control },
3155   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_path_access_control },
3156   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_legal_qualification },
3157   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_private_use },
3158   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extensions_impl },
3159   { 0, 0, 0, NULL }
3160 };
3161
3162 static int
3163 dissect_ftam_Read_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3164  gint8 class;
3165  gboolean pc, ind_field;
3166  gint32 tag;
3167  guint32 len1;
3168
3169  if(!implicit_tag){
3170    /* XXX  asn2eth can not yet handle tagged assignment yes so this
3171     * XXX is some conformance file magic to work around that bug
3172     */
3173     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
3174     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
3175  }
3176   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
3177                                 Read_Attributes_sequence, hf_index, ett_ftam_Read_Attributes);
3178
3179
3180   return offset;
3181 }
3182 static int dissect_read_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3183   return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_attributes);
3184 }
3185 static int dissect_read_link_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3186   return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_link_attributes);
3187 }
3188 static int dissect_Objects_Attributes_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3189   return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_Objects_Attributes_List_item);
3190 }
3191
3192
3193 static const ber_sequence_t F_READ_ATTRIB_response_sequence[] = {
3194   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
3195   { BER_CLASS_APP, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_read_attributes },
3196   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
3197   { 0, 0, 0, NULL }
3198 };
3199
3200 static int
3201 dissect_ftam_F_READ_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3202   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3203                                    F_READ_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_ATTRIB_response);
3204
3205   return offset;
3206 }
3207 static int dissect_nBS9_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3208   return dissect_ftam_F_READ_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_nBS9);
3209 }
3210 static int dissect_f_read_attrib_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3211   return dissect_ftam_F_READ_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_attrib_response);
3212 }
3213
3214
3215 static const ber_sequence_t T_actual_values1_sequence[] = {
3216   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_insert_values_impl },
3217   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delete_values_impl },
3218   { 0, 0, 0, NULL }
3219 };
3220
3221 static int
3222 dissect_ftam_T_actual_values1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3223   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3224                                    T_actual_values1_sequence, hf_index, ett_ftam_T_actual_values1);
3225
3226   return offset;
3227 }
3228 static int dissect_actual_values1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3229   return dissect_ftam_T_actual_values1(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values1);
3230 }
3231
3232
3233 static const value_string ftam_Access_Control_Change_Attribute_vals[] = {
3234   {   0, "no-value-available" },
3235   {   1, "actual-values" },
3236   { 0, NULL }
3237 };
3238
3239 static const ber_choice_t Access_Control_Change_Attribute_choice[] = {
3240   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
3241   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values1_impl },
3242   { 0, 0, 0, 0, NULL }
3243 };
3244
3245 static int
3246 dissect_ftam_Access_Control_Change_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3247   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3248                                  Access_Control_Change_Attribute_choice, hf_index, ett_ftam_Access_Control_Change_Attribute,
3249                                  NULL);
3250
3251   return offset;
3252 }
3253 static int dissect_change_attributes_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {