aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-06-25 12:40:53 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-06-25 12:40:53 +0000
commit12c6e46a499ba7505934eaa93ebc3a85f1d59ab6 (patch)
treeb2cd9d0edf8dd85e5f497db7acda43558f42faef /epan/dissectors
parentd0a7c6efcdbc450737245fe61f0ab8aa10a566a4 (diff)
new FTAM dissector generated by asn2eth
svn path=/trunk/; revision=14747
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-ftam.c11184
-rw-r--r--epan/dissectors/packet-ftam.h638
2 files changed, 7547 insertions, 4275 deletions
diff --git a/epan/dissectors/packet-ftam.c b/epan/dissectors/packet-ftam.c
index 02a4bc6109..57c34cfd81 100644
--- a/epan/dissectors/packet-ftam.c
+++ b/epan/dissectors/packet-ftam.c
@@ -1,29 +1,39 @@
-/* packet-ftam.c
-*
-* Routine to dissect OSI ISO 8571 FTAM Protocol packets
-*
-* $Id$
-*
-* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
-*
-* Ethereal - Network traffic analyzer
-* By Gerald Combs <gerald@ethereal.com>
-* Copyright 1998 Gerald Combs
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-ftam.c */
+/* ../../tools/asn2eth.py -X -b -e -p ftam -c ftam.cnf -s packet-ftam-template ISO8571-FTAM.asn */
+
+/* Input file: packet-ftam-template.c */
+
+/* packet-ftam_asn1.c
+ * Routine to dissect OSI ISO 8571 FTAM Protocol packets
+ * based on the ASN.1 specification from http://www.itu.int/ITU-T/asn1/database/iso/8571-4/1988/
+ *
+ * also based on original handwritten dissector by
+ * Yuriy Sidelnikov <YSidelnikov@hotmail.com>
+ *
+ * Anders Broman and Ronnie Sahlberg 2005
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -31,3789 +41,7607 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/conversation.h>
#include <stdio.h>
#include <string.h>
-
-#include "packet-frame.h"
+#include "packet-ber.h"
+#include "packet-acse.h"
#include "packet-ftam.h"
-#include <epan/prefs.h>
-#include <epan/strutil.h>
+#define PNAME "FTAM"
+#define PSNAME "FTAM"
+#define PFNAME "ftam"
-#include <epan/asn1.h>
-#include "format-oid.h"
+/* Initialize the protocol and registered fields */
+int proto_ftam = -1;
+
+static char object_identifier_id[MAX_OID_STR_LEN];
-#include "packet-ber.h"
-#include "packet-ses.h"
-#include "packet-pres.h"
-extern const value_string ses_vals[];
static struct SESSION_DATA_STRUCTURE* session = NULL;
+/*--- Included file: packet-ftam-hf.c ---*/
+
+static int hf_ftam_fTAM_Regime_PDU = -1; /* FTAM_Regime_PDU */
+static int hf_ftam_file_PDU = -1; /* File_PDU */
+static int hf_ftam_bulk_Data_PDU = -1; /* Bulk_Data_PDU */
+static int hf_ftam_fSM_PDU = -1; /* FSM_PDU */
+static int hf_ftam_f_initialize_request = -1; /* F_INITIALIZE_request */
+static int hf_ftam_f_initialize_response = -1; /* F_INITIALIZE_response */
+static int hf_ftam_f_terminate_request = -1; /* F_TERMINATE_request */
+static int hf_ftam_f_terminate_response = -1; /* F_TERMINATE_response */
+static int hf_ftam_f_u_abort_request = -1; /* F_U_ABORT_request */
+static int hf_ftam_f_p_abort_request = -1; /* F_P_ABORT_request */
+static int hf_ftam_protocol_Version = -1; /* Protocol_Version */
+static int hf_ftam_implementation_information = -1; /* Implementation_Information */
+static int hf_ftam_presentation_tontext_management = -1; /* BOOLEAN */
+static int hf_ftam_service_class = -1; /* Service_Class */
+static int hf_ftam_functional_units = -1; /* Functional_Units */
+static int hf_ftam_attribute_groups = -1; /* Attribute_Groups */
+static int hf_ftam_shared_ASE_information = -1; /* Shared_ASE_Information */
+static int hf_ftam_ftam_quality_of_Service = -1; /* FTAM_Quality_of_Service */
+static int hf_ftam_contents_type_list = -1; /* Contents_Type_List */
+static int hf_ftam_initiator_identity = -1; /* User_Identity */
+static int hf_ftam_account = -1; /* Account */
+static int hf_ftam_filestore_password = -1; /* Password */
+static int hf_ftam_checkpoint_window = -1; /* INTEGER */
+static int hf_ftam_state_result = -1; /* State_Result */
+static int hf_ftam_action_result = -1; /* Action_Result */
+static int hf_ftam_diagnostic = -1; /* Diagnostic */
+static int hf_ftam_Contents_Type_List_item = -1; /* Contents_Type_List_item */
+static int hf_ftam_document_type_name = -1; /* Document_Type_Name */
+static int hf_ftam_abstract_Syntax_name = -1; /* Abstract_Syntax_Name */
+static int hf_ftam_charging = -1; /* Charging */
+static int hf_ftam_f_select_request = -1; /* F_SELECT_request */
+static int hf_ftam_f_select_response = -1; /* F_SELECT_response */
+static int hf_ftam_f_deselect_request = -1; /* F_DESELECT_request */
+static int hf_ftam_f_deselect_response = -1; /* F_DESELECT_response */
+static int hf_ftam_f_create_request = -1; /* F_CREATE_request */
+static int hf_ftam_f_create_response = -1; /* F_CREATE_response */
+static int hf_ftam_f_delete_request = -1; /* F_DELETE_request */
+static int hf_ftam_f_delete_response = -1; /* F_DELETE_response */
+static int hf_ftam_f_read_attrib_request = -1; /* F_READ_ATTRIB_request */
+static int hf_ftam_f_read_attrib_response = -1; /* F_READ_ATTRIB_response */
+static int hf_ftam_f_Change_attrib_reques = -1; /* F_CHANGE_ATTRIB_request */
+static int hf_ftam_f_Change_attrib_respon = -1; /* F_CHANGE_ATTRIB_response */
+static int hf_ftam_f_open_request = -1; /* F_OPEN_request */
+static int hf_ftam_f_open_response = -1; /* F_OPEN_response */
+static int hf_ftam_f_close_request = -1; /* F_CLOSE_request */
+static int hf_ftam_f_close_response = -1; /* F_CLOSE_response */
+static int hf_ftam_f_begin_group_request = -1; /* F_BEGIN_GROUP_request */
+static int hf_ftam_f_begin_group_response = -1; /* F_BEGIN_GROUP_response */
+static int hf_ftam_f_end_group_request = -1; /* F_END_GROUP_request */
+static int hf_ftam_f_end_group_response = -1; /* F_END_GROUP_response */
+static int hf_ftam_f_recover_request = -1; /* F_RECOVER_request */
+static int hf_ftam_f_recover_response = -1; /* F_RECOVER_response */
+static int hf_ftam_f_locate_request = -1; /* F_LOCATE_request */
+static int hf_ftam_f_locate_response = -1; /* F_LOCATE_response */
+static int hf_ftam_f_erase_request = -1; /* F_ERASE_request */
+static int hf_ftam_f_erase_response = -1; /* F_ERASE_response */
+static int hf_ftam_select_attributes = -1; /* Select_Attributes */
+static int hf_ftam_requested_access = -1; /* Access_Request */
+static int hf_ftam_access_passwords = -1; /* Access_Passwords */
+static int hf_ftam_path_access_passwords = -1; /* Path_Access_Passwords */
+static int hf_ftam_concurrency_control = -1; /* Concurrency_Control */
+static int hf_ftam_referent_indicator = -1; /* Referent_Indicator */
+static int hf_ftam_override = -1; /* Override */
+static int hf_ftam_initial_attributes = -1; /* Create_Attributes */
+static int hf_ftam_create_password = -1; /* Password */
+static int hf_ftam_attribute_names = -1; /* Attribute_Names */
+static int hf_ftam_attribute_extension_names = -1; /* Attribute_Extension_Names */
+static int hf_ftam_read_attributes = -1; /* Read_Attributes */
+static int hf_ftam_attributes = -1; /* Change_Attributes */
+static int hf_ftam_processing_mode = -1; /* T_processing_mode */
+static int hf_ftam_open_contents_type = -1; /* T_contents_type */
+static int hf_ftam_unknown = -1; /* NULL */
+static int hf_ftam_proposed = -1; /* Contents_Type_Attribute */
+static int hf_ftam_enable_fadu_locking = -1; /* BOOLEAN */
+static int hf_ftam_activity_identifier = -1; /* Activity_Identifier */
+static int hf_ftam_request_recovery_mode = -1; /* T_request_recovery_mode */
+static int hf_ftam_remove_contexts = -1; /* SET_OF_Abstract_Syntax_Name */
+static int hf_ftam_remove_contexts_item = -1; /* Abstract_Syntax_Name */
+static int hf_ftam_define_contexts = -1; /* SET_OF_Abstract_Syntax_Name */
+static int hf_ftam_define_contexts_item = -1; /* Abstract_Syntax_Name */
+static int hf_ftam_degree_of_overlap = -1; /* Degree_Of_Overlap */
+static int hf_ftam_transfer_window = -1; /* INTEGER */
+static int hf_ftam_contents_type = -1; /* Contents_Type_Attribute */
+static int hf_ftam_response_recovery_mode = -1; /* T_response_recovery_mode */
+static int hf_ftam_presentation_action = -1; /* BOOLEAN */
+static int hf_ftam_threshold = -1; /* INTEGER */
+static int hf_ftam_bulk_transfer_number = -1; /* INTEGER */
+static int hf_ftam_recovefy_Point = -1; /* INTEGER */
+static int hf_ftam_concurrent_bulk_transfer_number = -1; /* INTEGER */
+static int hf_ftam_concurrent_recovery_point = -1; /* INTEGER */
+static int hf_ftam_last_transfer_end_read_response = -1; /* INTEGER */
+static int hf_ftam_last_transfer_end_write_response = -1; /* INTEGER */
+static int hf_ftam_recovety_Point = -1; /* INTEGER */
+static int hf_ftam_last_transfer_end_read_request = -1; /* INTEGER */
+static int hf_ftam_last_transfer_end_write_request = -1; /* INTEGER */
+static int hf_ftam_file_access_data_unit_identity = -1; /* FADU_Identity */
+static int hf_ftam_fadu_lock = -1; /* FADU_Lock */
+static int hf_ftam_f_read_request = -1; /* F_READ_request */
+static int hf_ftam_f_write_request = -1; /* F_WRITE_request */
+static int hf_ftam_f_data_end_request = -1; /* F_DATA_END_request */
+static int hf_ftam_f_transfer_end_request = -1; /* F_TRANSFER_END_request */
+static int hf_ftam_f_transfer_end_response = -1; /* F_TRANSFER_END_response */
+static int hf_ftam_f_cancel_request = -1; /* F_CANCEL_request */
+static int hf_ftam_f_cancel_response = -1; /* F_CANCEL_response */
+static int hf_ftam_f_restart_request = -1; /* F_RESTART_request */
+static int hf_ftam_f_restart_response = -1; /* F_RESTART_response */
+static int hf_ftam_read_access_context = -1; /* Access_Context */
+static int hf_ftam_transfer_number = -1; /* INTEGER */
+static int hf_ftam_file_access_data_unit_Operation = -1; /* T_file_access_data_unit_Operation */
+static int hf_ftam_request_type = -1; /* Request_Type */
+static int hf_ftam_checkpoint_identifier = -1; /* INTEGER */
+static int hf_ftam_access_context = -1; /* T_access_context */
+static int hf_ftam_level_number = -1; /* INTEGER */
+static int hf_ftam_read_password = -1; /* Password */
+static int hf_ftam_insert_password = -1; /* Password */
+static int hf_ftam_replace_password = -1; /* Password */
+static int hf_ftam_extend_password = -1; /* Password */
+static int hf_ftam_erase_password = -1; /* Password */
+static int hf_ftam_read_attribute_password = -1; /* Password */
+static int hf_ftam_change_attribute_password = -1; /* Password */
+static int hf_ftam_delete_password = -1; /* Password */
+static int hf_ftam_pass_passwords = -1; /* Pass_Passwords */
+static int hf_ftam_link_password = -1; /* Password */
+static int hf_ftam_pathname = -1; /* Pathname_Attribute */
+static int hf_ftam_storage_account = -1; /* Account_Attribute */
+static int hf_ftam_object_availability = -1; /* Object_Availability_Attribute */
+static int hf_ftam_future_Object_size = -1; /* Object_Size_Attribute */
+static int hf_ftam_change_attributes_access_control = -1; /* Access_Control_Change_Attribute */
+static int hf_ftam_change_path_access_control = -1; /* Access_Control_Change_Attribute */
+static int hf_ftam_legal_qualification = -1; /* Legal_Qualification_Attribute */
+static int hf_ftam_private_use = -1; /* Private_Use_Attribute */
+static int hf_ftam_attribute_extensions = -1; /* Attribute_Extensions */
+static int hf_ftam_Charging_item = -1; /* Charging_item */
+static int hf_ftam_resource_identifier = -1; /* GraphicString */
+static int hf_ftam_charging_unit = -1; /* GraphicString */
+static int hf_ftam_charging_value = -1; /* INTEGER */
+static int hf_ftam_read_lock = -1; /* Lock */
+static int hf_ftam_insert_lock = -1; /* Lock */
+static int hf_ftam_replace_lock = -1; /* Lock */
+static int hf_ftam_extend_lock = -1; /* Lock */
+static int hf_ftam_erase_lock = -1; /* Lock */
+static int hf_ftam_read_attribute_lock = -1; /* Lock */
+static int hf_ftam_change_attribute_lock = -1; /* Lock */
+static int hf_ftam_delete_Object_lock = -1; /* Lock */
+static int hf_ftam_object_type = -1; /* Object_Type_Attribute */
+static int hf_ftam_permitted_actions = -1; /* Permitted_Actions_Attribute */
+static int hf_ftam_access_control = -1; /* Access_Control_Attribute */
+static int hf_ftam_create_path_access_control = -1; /* Access_Control_Attribute */
+static int hf_ftam_Diagnostic_item = -1; /* Diagnostic_item */
+static int hf_ftam_diagnostic_type = -1; /* T_diagnostic_type */
+static int hf_ftam_error_identifier = -1; /* INTEGER */
+static int hf_ftam_error_observer = -1; /* Entity_Reference */
+static int hf_ftam_error_Source = -1; /* Entity_Reference */
+static int hf_ftam_suggested_delay = -1; /* INTEGER */
+static int hf_ftam_further_details = -1; /* GraphicString */
+static int hf_ftam_first_last = -1; /* T_first_last */
+static int hf_ftam_relative = -1; /* T_relative */
+static int hf_ftam_begin_end = -1; /* T_begin_end */
+static int hf_ftam_single_name = -1; /* Node_Name */
+static int hf_ftam_name_list = -1; /* SEQUENCE_OF_Node_Name */
+static int hf_ftam_name_list_item = -1; /* Node_Name */
+static int hf_ftam_fadu_number = -1; /* INTEGER */
+static int hf_ftam_graphicString = -1; /* GraphicString */
+static int hf_ftam_octetString = -1; /* OCTET_STRING */
+static int hf_ftam_linked_Object = -1; /* Pathname_Attribute */
+static int hf_ftam_child_objects = -1; /* Child_Objects_Attribute */
+static int hf_ftam_primaty_pathname = -1; /* Pathname_Attribute */
+static int hf_ftam_date_and_time_of_creation = -1; /* Date_and_Time_Attribute */
+static int hf_ftam_date_and_time_of_last_modification = -1; /* Date_and_Time_Attribute */
+static int hf_ftam_date_and_time_of_last_read_access = -1; /* Date_and_Time_Attribute */
+static int hf_ftam_date_and_time_of_last_attribute_modification = -1; /* Date_and_Time_Attribute */
+static int hf_ftam_identity_of_creator = -1; /* User_Identity_Attribute */
+static int hf_ftam_identity_of_last_modifier = -1; /* User_Identity_Attribute */
+static int hf_ftam_identity_of_last_reader = -1; /* User_Identity_Attribute */
+static int hf_ftam_identity_last_attribute_modifier = -1; /* User_Identity_Attribute */
+static int hf_ftam_object_size = -1; /* Object_Size_Attribute */
+static int hf_ftam_path_access_control = -1; /* Access_Control_Attribute */
+static int hf_ftam_no_value_available = -1; /* NULL */
+static int hf_ftam_actual_values3 = -1; /* SET_OF_Access_Control_Element */
+static int hf_ftam_actual_values_item = -1; /* Access_Control_Element */
+static int hf_ftam_actual_values1 = -1; /* T_actual_values1 */
+static int hf_ftam_insert_values = -1; /* SET_OF_Access_Control_Element */
+static int hf_ftam_insert_values_item = -1; /* Access_Control_Element */
+static int hf_ftam_delete_values = -1; /* SET_OF_Access_Control_Element */
+static int hf_ftam_delete_values_item = -1; /* Access_Control_Element */
+static int hf_ftam_action_list = -1; /* Access_Request */
+static int hf_ftam_concurrency_access = -1; /* Concurrency_Access */
+static int hf_ftam_identity = -1; /* User_Identity */
+static int hf_ftam_passwords = -1; /* Access_Passwords */
+static int hf_ftam_location = -1; /* Application_Entity_Title */
+static int hf_ftam_read_key = -1; /* Concurrency_Key */
+static int hf_ftam_insert_key = -1; /* Concurrency_Key */
+static int hf_ftam_replace_key = -1; /* Concurrency_Key */
+static int hf_ftam_extend_key = -1; /* Concurrency_Key */
+static int hf_ftam_erase_key = -1; /* Concurrency_Key */
+static int hf_ftam_read_attribute_key = -1; /* Concurrency_Key */
+static int hf_ftam_change_attribute_key = -1; /* Concurrency_Key */
+static int hf_ftam_delete_Object_key = -1; /* Concurrency_Key */
+static int hf_ftam_actual_values2 = -1; /* Account */
+static int hf_ftam_document_type = -1; /* T_document_type */
+static int hf_ftam_parameter = -1; /* T_parameter */
+static int hf_ftam_constraint_set_and_abstract_Syntax = -1; /* T_constraint_set_and_abstract_Syntax */
+static int hf_ftam_constraint_set_name = -1; /* Constraint_Set_Name */
+static int hf_ftam_actual_values5 = -1; /* GeneralizedTime */
+static int hf_ftam_actual_values8 = -1; /* T_actual_values */
+static int hf_ftam_incomplete_pathname = -1; /* Pathname */
+static int hf_ftam_complete_pathname = -1; /* Pathname */
+static int hf_ftam_actual_values7 = -1; /* INTEGER */
+static int hf_ftam_actual_values9 = -1; /* GraphicString */
+static int hf_ftam_abstract_Syntax_not_supported = -1; /* NULL */
+static int hf_ftam_actual_values4 = -1; /* EXTERNAL */
+static int hf_ftam_actual_values6 = -1; /* User_Identity */
+static int hf_ftam_Child_Objects_Attribute_item = -1; /* GraphicString */
+static int hf_ftam_f_Change_prefix_request = -1; /* F_CHANGE_PREFIX_request */
+static int hf_ftam_f_Change_prefix_response = -1; /* F_CHANGE_PREFIX_response */
+static int hf_ftam_f_list_request = -1; /* F_LIST_request */
+static int hf_ftam_f_list_response = -1; /* F_LIST_response */
+static int hf_ftam_f_group_select_request = -1; /* F_GROUP_SELECT_request */
+static int hf_ftam_f_group_select_response = -1; /* F_GROUP_SELECT_response */
+static int hf_ftam_f_group_delete_request = -1; /* F_GROUP_DELETE_request */
+static int hf_ftam_f_group_delete_response = -1; /* F_GROUP_DELETE_response */
+static int hf_ftam_f_group_move_request = -1; /* F_GROUP_MOVE_request */
+static int hf_ftam_f_group_move_response = -1; /* F_GROUP_MOVE_response */
+static int hf_ftam_f_group_copy_request = -1; /* F_GROUP_COPY_request */
+static int hf_ftam_f_group_copy_response = -1; /* F_GROUP_COPY_response */
+static int hf_ftam_f_group_list_request = -1; /* F_GROUP_LIST_request */
+static int hf_ftam_f_group_list_response = -1; /* F_GROUP_LIST_response */
+static int hf_ftam_f_group_Change_attrib_request = -1; /* F_GROUP_CHANGE_ATTRIB_request */
+static int hf_ftam_f_group_Change_attrib_response = -1; /* F_GROUP_CHANGE_ATTRIB_response */
+static int hf_ftam_f_select_another_request = -1; /* F_SELECT_ANOTHER_request */
+static int hf_ftam_f_select_another_response = -1; /* F_SELECT_ANOTHER_response */
+static int hf_ftam_f_create_directory_request = -1; /* F_CREATE_DIRECTORY_request */
+static int hf_ftam_f_create_directory_response = -1; /* F_CREATE_DIRECTORY_response */
+static int hf_ftam_f_link_request = -1; /* F_LINK_request */
+static int hf_ftam_f_link_response = -1; /* F_LINK_response */
+static int hf_ftam_f_unlink_request = -1; /* F_UNLINK_request */
+static int hf_ftam_f_unlink_response = -1; /* F_UNLINK_response */
+static int hf_ftam_f_read_link_attrib_request = -1; /* F_READ_LINK_ATTRIB_request */
+static int hf_ftam_f_read_link_attrib_response = -1; /* F_READ_LINK_ATTRIB_response */
+static int hf_ftam_f_Change_link_attrib_request = -1; /* F_CHANGE_LINK_ATTRIB_request */
+static int hf_ftam_f_Change_Iink_attrib_response = -1; /* F_CHANGE_LINK_ATTRIB_response */
+static int hf_ftam_f_move_request = -1; /* F_MOVE_request */
+static int hf_ftam_f_move_response = -1; /* F_MOVE_response */
+static int hf_ftam_f_copy_request = -1; /* F_COPY_request */
+static int hf_ftam_f_copy_response = -1; /* F_COPY_response */
+static int hf_ftam_reset = -1; /* BOOLEAN */
+static int hf_ftam_destination_file_directory = -1; /* Destination_File_Directory */
+static int hf_ftam_attribute_value_asset_tions = -1; /* Attribute_Value_Assertions */
+static int hf_ftam_scope = -1; /* Scope */
+static int hf_ftam_objects_attributes_list = -1; /* Objects_Attributes_List */
+static int hf_ftam_attribute_value_assertions = -1; /* Attribute_Value_Assertions */
+static int hf_ftam_maximum_set_size = -1; /* INTEGER */
+static int hf_ftam_request_Operation_result = -1; /* Request_Operation_Result */
+static int hf_ftam_operation_result = -1; /* Operation_Result */
+static int hf_ftam_error_action = -1; /* Error_Action */
+static int hf_ftam_last_member_indicator = -1; /* BOOLEAN */
+static int hf_ftam_shared_ASE_infonnation = -1; /* Shared_ASE_Information */
+static int hf_ftam_target_object = -1; /* Pathname_Attribute */
+static int hf_ftam_target_Object = -1; /* Pathname_Attribute */
+static int hf_ftam_read_link_attributes = -1; /* Read_Attributes */
+static int hf_ftam_Attribute_Extension_Names_item = -1; /* Attribute_Extension_Set_Name */
+static int hf_ftam_extension_set_identifier = -1; /* Extension_Set_Identifier */
+static int hf_ftam_extension_attribute_names = -1; /* SEQUENCE_OF_Extension_Attribute_identifier */
+static int hf_ftam_extension_attribute_names_item = -1; /* Extension_Attribute_identifier */
+static int hf_ftam_Attribute_Extensions_item = -1; /* Attribute_Extension_Set */
+static int hf_ftam_extension_set_attributes = -1; /* SEQUENCE_OF_Extension_Attribute */
+static int hf_ftam_extension_set_attributes_item = -1; /* Extension_Attribute */
+static int hf_ftam_extension_attribute_identifier = -1; /* T_extension_attribute_identifier */
+static int hf_ftam_extension_attribute = -1; /* T_extension_attribute */
+static int hf_ftam_Scope_item = -1; /* Scope_item */
+static int hf_ftam_root_directory = -1; /* Pathname_Attribute */
+static int hf_ftam_retrieval_scope = -1; /* T_retrieval_scope */
+static int hf_ftam_OR_Set_item = -1; /* AND_Set */
+static int hf_ftam_AND_Set_item = -1; /* AND_Set_item */
+static int hf_ftam_pathname_Pattern = -1; /* Pathname_Pattern */
+static int hf_ftam_object_type_Pattern = -1; /* Integer_Pattern */
+static int hf_ftam_permitted_actions_Pattern = -1; /* Bitstring_Pattern */
+static int hf_ftam_contents_type_Pattern = -1; /* Contents_Type_Pattern */
+static int hf_ftam_linked_Object_Pattern = -1; /* Pathname_Pattern */
+static int hf_ftam_child_objects_Pattern = -1; /* Pathname_Pattern */
+static int hf_ftam_primaty_pathname_Pattern = -1; /* Pathname_Pattern */
+static int hf_ftam_storage_account_Pattern = -1; /* String_Pattern */
+static int hf_ftam_date_and_time_of_creation_Pattern = -1; /* Date_and_Time_Pattern */
+static int hf_ftam_date_and_time_of_last_modification_Pattern = -1; /* Date_and_Time_Pattern */
+static int hf_ftam_date_and_time_of_last_read_access_Pattern = -1; /* Date_and_Time_Pattern */
+static int hf_ftam_date_and_time_of_last_attribute_modification_Pattern = -1; /* Date_and_Time_Pattern */
+static int hf_ftam_identity_of_creator_Pattern = -1; /* User_Identity_Pattern */
+static int hf_ftam_identity_of_last_modifier_Pattern = -1; /* User_Identity_Pattern */
+static int hf_ftam_identity_of_last_reader_Pattern = -1; /* User_Identity_Pattern */
+static int hf_ftam_identity_of_last_attribute_modifier_Pattern = -1; /* User_Identity_Pattern */
+static int hf_ftam_object_availabiiity_Pattern = -1; /* Boolean_Pattern */
+static int hf_ftam_object_size_Pattern = -1; /* Integer_Pattern */
+static int hf_ftam_future_object_size_Pattern = -1; /* Integer_Pattern */
+static int hf_ftam_legal_quailfication_Pattern = -1; /* String_Pattern */
+static int hf_ftam_attribute_extensions_pattern = -1; /* Attribute_Extensions_Pattern */
+static int hf_ftam_equality_comparision = -1; /* Equality_Comparision */
+static int hf_ftam_pathname_value = -1; /* T_pathname_value */
+static int hf_ftam_pathname_value_item = -1; /* T_pathname_value_item */
+static int hf_ftam_string_match = -1; /* String_Pattern */
+static int hf_ftam_any_match = -1; /* NULL */
+static int hf_ftam_string_value = -1; /* T_string_value */
+static int hf_ftam_string_value_item = -1; /* T_string_value_item */
+static int hf_ftam_substring_match = -1; /* GraphicString */
+static int hf_ftam_number_of_characters_match = -1; /* INTEGER */
+static int hf_ftam_match_bitstring = -1; /* BIT_STRING */
+static int hf_ftam_significance_bitstring = -1; /* BIT_STRING */
+static int hf_ftam_relational_camparision = -1; /* Equality_Comparision */
+static int hf_ftam_time_and_date_value = -1; /* GeneralizedTime */
+static int hf_ftam_relational_comparision = -1; /* Relational_Comparision */
+static int hf_ftam_integer_value = -1; /* INTEGER */
+static int hf_ftam_object_identifier_value = -1; /* OBJECT_IDENTIFIER */
+static int hf_ftam_boolean_value = -1; /* BOOLEAN */
+static int hf_ftam_document_type_Pattern = -1; /* Object_Identifier_Pattern */
+static int hf_ftam_constraint_set_abstract_Syntax_Pattern = -1; /* T_constraint_set_abstract_Syntax_Pattern */
+static int hf_ftam_constraint_Set_Pattern = -1; /* Object_Identifier_Pattern */
+static int hf_ftam_abstract_Syntax_Pattern = -1; /* Object_Identifier_Pattern */
+static int hf_ftam_Attribute_Extensions_Pattern_item = -1; /* Attribute_Extensions_Pattern_item */
+static int hf_ftam_extension_set_attribute_Patterns = -1; /* T_extension_set_attribute_Patterns */
+static int hf_ftam_extension_set_attribute_Patterns_item = -1; /* T_extension_set_attribute_Patterns_item */
+static int hf_ftam_attribute_extension_attribute_identifier = -1; /* OBJECT_IDENTIFIER */
+static int hf_ftam_extension_attribute_Pattern = -1; /* T_extension_attribute_Pattern */
+static int hf_ftam_Objects_Attributes_List_item = -1; /* Read_Attributes */
+static int hf_ftam_success_Object_count = -1; /* INTEGER */
+static int hf_ftam_success_Object_names = -1; /* SEQUENCE_OF_Pathname */
+static int hf_ftam_success_Object_names_item = -1; /* Pathname */
+static int hf_ftam_Pathname_item = -1; /* GraphicString */
+static int hf_ftam_Pass_Passwords_item = -1; /* Password */
+static int hf_ftam_Path_Access_Passwords_item = -1; /* Path_Access_Passwords_item */
+static int hf_ftam_ap = -1; /* AP_title */
+static int hf_ftam_ae = -1; /* AE_qualifier */
+static int hf_ftam_Attribute_Value_Assertions_item = -1; /* AND_Set */
+/* named bits */
+static int hf_ftam_Protocol_Version_version_1 = -1;
+static int hf_ftam_Protocol_Version_version_2 = -1;
+static int hf_ftam_Service_Class_unconstrained_class = -1;
+static int hf_ftam_Service_Class_management_class = -1;
+static int hf_ftam_Service_Class_transfer_class = -1;
+static int hf_ftam_Service_Class_transfer_and_management_class = -1;
+static int hf_ftam_Service_Class_access_class = -1;
+static int hf_ftam_Functional_Units_read = -1;
+static int hf_ftam_Functional_Units_write = -1;
+static int hf_ftam_Functional_Units_file_access = -1;
+static int hf_ftam_Functional_Units_limited_file_management = -1;
+static int hf_ftam_Functional_Units_enhanced_file_management = -1;
+static int hf_ftam_Functional_Units_grouping = -1;
+static int hf_ftam_Functional_Units_fadu_locking = -1;
+static int hf_ftam_Functional_Units_recovery = -1;
+static int hf_ftam_Functional_Units_restart_data_transfer = -1;
+static int hf_ftam_Functional_Units_limited_filestore_management = -1;
+static int hf_ftam_Functional_Units_enhanced_filestore_management = -1;
+static int hf_ftam_Functional_Units_object_manipulation = -1;
+static int hf_ftam_Functional_Units_group_manipulation = -1;
+static int hf_ftam_Functional_Units_consecutive_access = -1;
+static int hf_ftam_Functional_Units_concurrent_access = -1;
+static int hf_ftam_Attribute_Groups_storage = -1;
+static int hf_ftam_Attribute_Groups_security = -1;
+static int hf_ftam_Attribute_Groups_private = -1;
+static int hf_ftam_Attribute_Groups_extension = -1;
+static int hf_ftam_T_processing_mode_f_read = -1;
+static int hf_ftam_T_processing_mode_f_insert = -1;
+static int hf_ftam_T_processing_mode_f_replace = -1;
+static int hf_ftam_T_processing_mode_f_extend = -1;
+static int hf_ftam_T_processing_mode_f_erase = -1;
+static int hf_ftam_Access_Request_read = -1;
+static int hf_ftam_Access_Request_insert = -1;
+static int hf_ftam_Access_Request_replace = -1;
+static int hf_ftam_Access_Request_extend = -1;
+static int hf_ftam_Access_Request_erase = -1;
+static int hf_ftam_Access_Request_read_attribute = -1;
+static int hf_ftam_Access_Request_change_attribute = -1;
+static int hf_ftam_Access_Request_delete_Object = -1;
+static int hf_ftam_Concurrency_Key_not_required = -1;
+static int hf_ftam_Concurrency_Key_shared = -1;
+static int hf_ftam_Concurrency_Key_exclusive = -1;
+static int hf_ftam_Concurrency_Key_no_access = -1;
+static int hf_ftam_Permitted_Actions_Attribute_read = -1;
+static int hf_ftam_Permitted_Actions_Attribute_insert = -1;
+static int hf_ftam_Permitted_Actions_Attribute_replace = -1;
+static int hf_ftam_Permitted_Actions_Attribute_extend = -1;
+static int hf_ftam_Permitted_Actions_Attribute_erase = -1;
+static int hf_ftam_Permitted_Actions_Attribute_read_attribute = -1;
+static int hf_ftam_Permitted_Actions_Attribute_change_attribute = -1;
+static int hf_ftam_Permitted_Actions_Attribute_delete_Object = -1;
+static int hf_ftam_Permitted_Actions_Attribute_pass = -1;
+static int hf_ftam_Permitted_Actions_Attribute_link = -1;
+static int hf_ftam_Permitted_Actions_Attribute_traversal = -1;
+static int hf_ftam_Permitted_Actions_Attribute_reverse_traversal = -1;
+static int hf_ftam_Permitted_Actions_Attribute_random_Order = -1;
+static int hf_ftam_Equality_Comparision_no_value_available_matches = -1;
+static int hf_ftam_Equality_Comparision_equals_matches = -1;
+static int hf_ftam_Relational_Comparision_no_value_available_matches = -1;
+static int hf_ftam_Relational_Comparision_equals_matches = -1;
+static int hf_ftam_Relational_Comparision_less_than_matches = -1;
+static int hf_ftam_Relational_Comparision_greater_than_matches = -1;
+static int hf_ftam_Attribute_Names_read_pathname = -1;
+static int hf_ftam_Attribute_Names_read_Object_type = -1;
+static int hf_ftam_Attribute_Names_read_permitted_actions = -1;
+static int hf_ftam_Attribute_Names_read_contents_type = -1;
+static int hf_ftam_Attribute_Names_read_linked_Object = -1;
+static int hf_ftam_Attribute_Names_read_Child_objects = -1;
+static int hf_ftam_Attribute_Names_read_primary_pathname = -1;
+static int hf_ftam_Attribute_Names_read_storage_account = -1;
+static int hf_ftam_Attribute_Names_read_date_and_time_of_creation = -1;
+static int hf_ftam_Attribute_Names_read_date_and_time_of_last_modification = -1;
+static int hf_ftam_Attribute_Names_read_date_and_time_of_last_read_access = -1;
+static int hf_ftam_Attribute_Names_read_date_and_time_of_last_attribute_modification = -1;
+static int hf_ftam_Attribute_Names_read_identity_of_creator = -1;
+static int hf_ftam_Attribute_Names_read_identity_of_last_modifier = -1;
+static int hf_ftam_Attribute_Names_read_identity_of_last_reader = -1;
+static int hf_ftam_Attribute_Names_read_identity_of_last_attribute_modifier = -1;
+static int hf_ftam_Attribute_Names_read_Object_availability = -1;
+static int hf_ftam_Attribute_Names_read_Object_size = -1;
+static int hf_ftam_Attribute_Names_read_future_Object_size = -1;
+static int hf_ftam_Attribute_Names_read_access_control = -1;
+static int hf_ftam_Attribute_Names_read_path_access_control = -1;
+static int hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS = -1;
+static int hf_ftam_Attribute_Names_read_private_use = -1;
+
+/*--- End of included file: packet-ftam-hf.c ---*/
+
+
+/* Initialize the subtree pointers */
+static gint ett_ftam = -1;
+
+/*--- Included file: packet-ftam-ett.c ---*/
+
+static gint ett_ftam_PDU = -1;
+static gint ett_ftam_FTAM_Regime_PDU = -1;
+static gint ett_ftam_F_INITIALIZE_request = -1;
+static gint ett_ftam_F_INITIALIZE_response = -1;
+static gint ett_ftam_Protocol_Version = -1;
+static gint ett_ftam_Service_Class = -1;
+static gint ett_ftam_Functional_Units = -1;
+static gint ett_ftam_Attribute_Groups = -1;
+static gint ett_ftam_Contents_Type_List = -1;
+static gint ett_ftam_Contents_Type_List_item = -1;
+static gint ett_ftam_F_TERMINATE_request = -1;
+static gint ett_ftam_F_TERMINATE_response = -1;
+static gint ett_ftam_F_U_ABORT_request = -1;
+static gint ett_ftam_F_P_ABORT_request = -1;
+static gint ett_ftam_File_PDU = -1;
+static gint ett_ftam_F_SELECT_request = -1;
+static gint ett_ftam_F_SELECT_response = -1;
+static gint ett_ftam_F_DESELECT_request = -1;
+static gint ett_ftam_F_DESELECT_response = -1;
+static gint ett_ftam_F_CREATE_request = -1;
+static gint ett_ftam_F_CREATE_response = -1;
+static gint ett_ftam_F_DELETE_request = -1;
+static gint ett_ftam_F_DELETE_response = -1;
+static gint ett_ftam_F_READ_ATTRIB_request = -1;
+static gint ett_ftam_F_READ_ATTRIB_response = -1;
+static gint ett_ftam_F_CHANGE_ATTRIB_request = -1;
+static gint ett_ftam_F_CHANGE_ATTRIB_response = -1;
+static gint ett_ftam_F_OPEN_request = -1;
+static gint ett_ftam_T_processing_mode = -1;
+static gint ett_ftam_T_contents_type = -1;
+static gint ett_ftam_SET_OF_Abstract_Syntax_Name = -1;
+static gint ett_ftam_F_OPEN_response = -1;
+static gint ett_ftam_F_CLOSE_request = -1;
+static gint ett_ftam_F_CLOSE_response = -1;
+static gint ett_ftam_F_BEGIN_GROUP_request = -1;
+static gint ett_ftam_F_BEGIN_GROUP_response = -1;
+static gint ett_ftam_F_END_GROUP_request = -1;
+static gint ett_ftam_F_END_GROUP_response = -1;
+static gint ett_ftam_F_RECOVER_request = -1;
+static gint ett_ftam_F_RECOVER_response = -1;
+static gint ett_ftam_F_LOCATE_request = -1;
+static gint ett_ftam_F_LOCATE_response = -1;
+static gint ett_ftam_F_ERASE_request = -1;
+static gint ett_ftam_F_ERASE_response = -1;
+static gint ett_ftam_Bulk_Data_PDU = -1;
+static gint ett_ftam_F_READ_request = -1;
+static gint ett_ftam_F_WRITE_request = -1;
+static gint ett_ftam_F_DATA_END_request = -1;
+static gint ett_ftam_F_TRANSFER_END_request = -1;
+static gint ett_ftam_F_TRANSFER_END_response = -1;
+static gint ett_ftam_F_CANCEL_request = -1;
+static gint ett_ftam_F_CANCEL_response = -1;
+static gint ett_ftam_F_CHECK_request = -1;
+static gint ett_ftam_F_CHECK_response = -1;
+static gint ett_ftam_F_RESTART_request = -1;
+static gint ett_ftam_F_RESTART_response = -1;
+static gint ett_ftam_Access_Context = -1;
+static gint ett_ftam_Access_Passwords = -1;
+static gint ett_ftam_Access_Request = -1;
+static gint ett_ftam_Change_Attributes = -1;
+static gint ett_ftam_Charging = -1;
+static gint ett_ftam_Charging_item = -1;
+static gint ett_ftam_Concurrency_Control = -1;
+static gint ett_ftam_Create_Attributes = -1;
+static gint ett_ftam_Diagnostic = -1;
+static gint ett_ftam_Diagnostic_item = -1;
+static gint ett_ftam_FADU_Identity = -1;
+static gint ett_ftam_SEQUENCE_OF_Node_Name = -1;
+static gint ett_ftam_Password = -1;
+static gint ett_ftam_Read_Attributes = -1;
+static gint ett_ftam_Select_Attributes = -1;
+static gint ett_ftam_Access_Control_Attribute = -1;
+static gint ett_ftam_SET_OF_Access_Control_Element = -1;
+static gint ett_ftam_Access_Control_Change_Attribute = -1;
+static gint ett_ftam_T_actual_values1 = -1;
+static gint ett_ftam_Access_Control_Element = -1;
+static gint ett_ftam_Concurrency_Access = -1;
+static gint ett_ftam_Concurrency_Key = -1;
+static gint ett_ftam_Account_Attribute = -1;
+static gint ett_ftam_Contents_Type_Attribute = -1;
+static gint ett_ftam_T_document_type = -1;
+static gint ett_ftam_T_constraint_set_and_abstract_Syntax = -1;
+static gint ett_ftam_Date_and_Time_Attribute = -1;
+static gint ett_ftam_Object_Availability_Attribute = -1;
+static gint ett_ftam_Pathname_Attribute = -1;
+static gint ett_ftam_Object_Size_Attribute = -1;
+static gint ett_ftam_Legal_Qualification_Attribute = -1;
+static gint ett_ftam_Permitted_Actions_Attribute = -1;
+static gint ett_ftam_Private_Use_Attribute = -1;
+static gint ett_ftam_User_Identity_Attribute = -1;
+static gint ett_ftam_Child_Objects_Attribute = -1;
+static gint ett_ftam_FSM_PDU = -1;
+static gint ett_ftam_F_CHANGE_PREFIX_request = -1;
+static gint ett_ftam_F_CHANGE_PREFIX_response = -1;
+static gint ett_ftam_F_LIST_request = -1;
+static gint ett_ftam_F_LIST_response = -1;
+static gint ett_ftam_F_GROUP_SELECT_request = -1;
+static gint ett_ftam_F_GROUP_SELECT_response = -1;
+static gint ett_ftam_F_GROUP_DELETE_request = -1;
+static gint ett_ftam_F_GROUP_DELETE_response = -1;
+static gint ett_ftam_F_GROUP_MOVE_request = -1;
+static gint ett_ftam_F_GROUP_MOVE_response = -1;
+static gint ett_ftam_F_GROUP_COPY_request = -1;
+static gint ett_ftam_F_GROUP_COPY_response = -1;
+static gint ett_ftam_F_GROUP_LIST_request = -1;
+static gint ett_ftam_F_GROUP_LIST_response = -1;
+static gint ett_ftam_F_GROUP_CHANGE_ATTRIB_request = -1;
+static gint ett_ftam_F_GROUP_CHANGE_ATTRIB_response = -1;
+static gint ett_ftam_F_SELECT_ANOTHER_request = -1;
+static gint ett_ftam_F_SELECT_ANOTHER_response = -1;
+static gint ett_ftam_F_CREATE_DIRECTORY_request = -1;
+static gint ett_ftam_F_CREATE_DIRECTORY_response = -1;
+static gint ett_ftam_F_LINK_request = -1;
+static gint ett_ftam_F_LINK_response = -1;
+static gint ett_ftam_F_UNLINK_request = -1;
+static gint ett_ftam_F_UNLINK_response = -1;
+static gint ett_ftam_F_READ_LINK_ATTRIB_request = -1;
+static gint ett_ftam_F_READ_LINK_ATTRIB_response = -1;
+static gint ett_ftam_F_CHANGE_LINK_ATTRIB_request = -1;
+static gint ett_ftam_F_CHANGE_LINK_ATTRIB_response = -1;
+static gint ett_ftam_F_MOVE_request = -1;
+static gint ett_ftam_F_MOVE_response = -1;
+static gint ett_ftam_F_COPY_request = -1;
+static gint ett_ftam_F_COPY_response = -1;
+static gint ett_ftam_Attribute_Extension_Names = -1;
+static gint ett_ftam_Attribute_Extension_Set_Name = -1;
+static gint ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier = -1;
+static gint ett_ftam_Attribute_Extensions = -1;
+static gint ett_ftam_Attribute_Extension_Set = -1;
+static gint ett_ftam_SEQUENCE_OF_Extension_Attribute = -1;
+static gint ett_ftam_Extension_Attribute = -1;
+static gint ett_ftam_Scope = -1;
+static gint ett_ftam_Scope_item = -1;
+static gint ett_ftam_OR_Set = -1;
+static gint ett_ftam_AND_Set = -1;
+static gint ett_ftam_AND_Set_item = -1;
+static gint ett_ftam_Equality_Comparision = -1;
+static gint ett_ftam_Relational_Comparision = -1;
+static gint ett_ftam_Pathname_Pattern = -1;
+static gint ett_ftam_T_pathname_value = -1;
+static gint ett_ftam_T_pathname_value_item = -1;
+static gint ett_ftam_String_Pattern = -1;
+static gint ett_ftam_T_string_value = -1;
+static gint ett_ftam_T_string_value_item = -1;
+static gint ett_ftam_Bitstring_Pattern = -1;
+static gint ett_ftam_Date_and_Time_Pattern = -1;
+static gint ett_ftam_Integer_Pattern = -1;
+static gint ett_ftam_Object_Identifier_Pattern = -1;
+static gint ett_ftam_Boolean_Pattern = -1;
+static gint ett_ftam_Contents_Type_Pattern = -1;
+static gint ett_ftam_T_constraint_set_abstract_Syntax_Pattern = -1;
+static gint ett_ftam_Attribute_Extensions_Pattern = -1;
+static gint ett_ftam_Attribute_Extensions_Pattern_item = -1;
+static gint ett_ftam_T_extension_set_attribute_Patterns = -1;
+static gint ett_ftam_T_extension_set_attribute_Patterns_item = -1;
+static gint ett_ftam_Objects_Attributes_List = -1;
+static gint ett_ftam_Operation_Result = -1;
+static gint ett_ftam_SEQUENCE_OF_Pathname = -1;
+static gint ett_ftam_Pathname = -1;
+static gint ett_ftam_Pass_Passwords = -1;
+static gint ett_ftam_Path_Access_Passwords = -1;
+static gint ett_ftam_Path_Access_Passwords_item = -1;
+static gint ett_ftam_Attribute_Names = -1;
+static gint ett_ftam_AE_title = -1;
+static gint ett_ftam_Attribute_Value_Assertions = -1;
+
+/*--- End of included file: packet-ftam-ett.c ---*/
+
+
+
+/*--- Included file: packet-ftam-fn.c ---*/
+
+/*--- Fields for imported types ---*/
+
+static int dissect_actual_values4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_acse_EXTERNAL(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values4);
+}
-/* ftam header fields */
-static int proto_ftam = -1;
-/* ftam fields defining a sub tree */
-static gint ett_ftam = -1;
-static gint ett_ftam_param = -1;
-static gint ett_ftam_rc = -1;
-static gint ett_ftam_ms = -1;
-static gint ett_ftam_itm = -1;
-/* dissector for data */
-static dissector_handle_t data_handle;
-/*
-----------------------------------------------------------------------------------------------------------*/
-static int hf_ftam_type = -1;
-static int hf_cp_type_message_length = -1;
-static int hf_protocol_version = -1;
-
-/* functional units flags */
-static int hf_functional_unit_restart_data_transfer = -1;
-static int hf_functional_unit_recovery = -1;
-static int hf_functional_unit_fadu_locking = -1;
-static int hf_functional_unit_grouping = -1;
-static int hf_functional_unit_limited_file_management = -1;
-static int hf_functional_unit_enhanced_file_management = -1;
-static int hf_functional_unit_file_access = -1;
-static int hf_functional_unit_read = -1;
-static int hf_functional_unit_write = -1;
-/* service classes */
-static int hf_service_class_access_class = -1;
-static int hf_service_class_transfer_and_management_class = -1;
-static int hf_service_class_transfer_class = -1;
-static int hf_service_class_management_class = -1;
-static int hf_service_class_unconstrained_class = -1;
-
-/* attribute groups */
-static int hf_attribute_groups_storage = -1;
-static int hf_attribute_groups_security = -1;
-static int hf_attribute_groups_private = -1;
-/* access */
-static int hf_filename_attribute_read = -1;
-static int hf_filename_attribute_insert = -1;
-static int hf_filename_attribute_replace = -1;
-static int hf_filename_attribute_extend = -1;
-static int hf_filename_attribute_erase = -1;
-static int hf_filename_attribute_read_attribute = -1;
-static int hf_filename_attribute_change_attribute = -1;
-static int hf_filename_attribute_delete_file = -1;
-/* mode */
-static int hf_processing_mode_read = -1;
-static int hf_processing_mode_replace = -1;
-static int hf_processing_mode_insert = -1;
-static int hf_processing_mode_extend = -1;
-static int hf_processing_mode_erase = -1;
-
-static int hf_permitted_action_attribute_read = -1;
-static int hf_permitted_action_attribute_insert = -1;
-static int hf_permitted_action_attribute_replace = -1;
-static int hf_permitted_action_attribute_extend = -1;
-static int hf_permitted_action_attribute_erase = -1;
-static int hf_permitted_action_attribute_read_attribute = -1;
-static int hf_permitted_action_attribute_change_attribute = -1;
-static int hf_permitted_action_attribute_delete_file = -1;
-static int hf_permitted_action_traversal = -1;
-static int hf_permitted_action_reverse_traversal = -1;
-static int hf_permitted_action_random_order = -1;
-
-static int hf_nbs9_read_filename = -1;
-static int hf_nbs9_read_permitted_actions = -1;
-static int hf_nbs9_read_contents_type = -1;
-static int hf_nbs9_read_storage_account = -1;
-static int hf_nbs9_read_date_and_time_of_creation = -1;
-static int hf_nbs9_read_date_and_time_of_last_modification = -1;
-static int hf_nbs9_read_date_and_time_of_read_access = -1;
-static int hf_nbs9_read_date_and_time_of_attribute_modification = -1;
-static int hf_nbs9_read_identity_of_creator = -1;
-static int hf_nbs9_read_identity_of_last_reader = -1;
-static int hf_nbs9_read_identity_of_last_modifier = -1;
-static int hf_nbs9_read_identity_of_last_attribute_modifier = -1;
-static int hf_nbs9_read_file_availability = -1;
-static int hf_nbs9_read_filesize = -1;
-static int hf_nbs9_read_future_filesize = -1;
-static int hf_nbs9_read_access_control = -1;
-static int hf_nbs9_read_legal_qualifications = -1;
-static int hf_nbs9_read_private_use = -1;
-static const value_string ftam_error_messages[] =
-{
- {ERROR_MESSAGE_FTAM_NO_REASON, "No reason" },
- {ERROR_MESSAGE_FTAM_RESPONDER_ERROR, "Responder error (unspecific)" },
- {ERROR_MESSAGE_FTAM_SYSTEM_SHUTDOWN, "System shutdown" },
- {ERROR_MESSAGE_FTAM_MANAGEMENT_PROBLEM_U, "FTAM management problem (unspecific)" },
- {ERROR_MESSAGE_FTAM_MANAGEMENT_PROBLEM_BA, "FTAM management, bad account" },
- {ERROR_MESSAGE_FTAM_MANAGEMENT_PROBLEM_SC, "FTAM management, security not passed" },
- {ERROR_MESSAGE_DELAY_MAYBE_ENCOUNTERED, "Delay may be encountered" },
- {ERROR_MESSAGE_INITIATOR_ERROR, "Initiator error (unspecific)" },
- {ERROR_MESSAGE_SUBSEQUENT_ERROR, "Subsequent error" },
- {ERROR_MESSAGE_TEMPORAL_INSUFFICIENCY_OF_RESOURCES, "Temporal insufficiency of resources" },
- {ERROR_MESSAGE_ACCESS_REQUEST_VIOLATES_VFS_SECURITY, "Access request violates VFS security" },
- {ERROR_MESSAGE_ACCESS_REQUEST_VIOLATES_LOCAL_SECURITY, "Access request violates local security" },
-
- {ERROR_MESSAGE_CONFLICTING_PARAMETER_VALUE, "Conflicting parameter value" },
- {ERROR_MESSAGE_UNSUPPORTED_PARAMETER_VALUE, "Unsupported parameter value" },
- {ERROR_MESSAGE_MANDATORY_PARAMETER_NOT_SET, "Mandatory parameter not set" },
- {ERROR_MESSAGE_UNSUPPORTED_PARAMETER, "Unsupported parameter" },
- {ERROR_MESSAGE_DUBLICATED_PARAMETER, "Duplicated parameter" },
- {ERROR_MESSAGE_ILLEGAL_PARAMETER_TYPE, "Illegal parameter type" },
- {ERROR_MESSAGE_UNSUPPORTED_PARAMETER_TYPE, "Unsupported parameter type" },
- {ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_U, "FTAM protocol error (unspecific)" },
- {ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_PE, "FTAM protocol error, procedure error" },
- {ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_FUE, "FTAM protocol error, functional unit error" },
- {ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_CE, "FTAM protocol error, corruption error" },
- {ERROR_MESSAGE_FTAM_LOWER_LAYER_FAILURE, "Lower layer failure" },
- {ERROR_MESSAGE_FTAM_LOWER_ADDRESING_ERROR, "Lower layer addressing error" },
- {ERROR_MESSAGE_FTAM_TIMEOUT, "Timeout" },
- {ERROR_MESSAGE_FTAM_SYSTEM_SHUTDOWN_, "System shutdown" },
- {ERROR_MESSAGE_FTAM_ILLEGAL_GROUPING_SEQUENCE, "Illegal grouping sequence" },
- {ERROR_MESSAGE_GROUPING_THRESHHOLD_VIOLATION, "Grouping threshold violation" },
- {ERROR_MESSAGE_SPECIFIC_PDU_REQUEST_INCONSISTENT, "Specific PDU request inconsistent with the current requested access" },
-
- {ERROR_MESSAGE_ASSOCIATION_WITH_USER_NOT_ALLOWED, "Association with user not allowed" },
- {ERROR_MESSAGE_NOT_ASSIGNED, "not assigned" },
- {ERROR_MESSAGE_UNSUPPORTED_SERVICE_CLASS, "Unsupported service class" },
- {ERROR_MESSAGE_UNSUPPORTED_FUNCTIONAL_UNIT, "Unsupported functional unit" },
- {ERROR_MESSAGE_ATTRIBUTE_GROUP_ERROR, "Attribute group error (unspecific)" },
- {ERROR_MESSAGE_ATTRIBUTE_GROUP_NOT_ALLOWED, "Attribute group not allowed" },
- {ERROR_MESSAGE_BAD_ACCOUNT, "Bad account" },
- {ERROR_MESSAGE_ASSOC_MANAGEMENT, "Association management (unspecific)" },
- {ERROR_MESSAGE_ASSOC_MANAGEMENT_BA, "Association management, bad address" },
- {ERROR_MESSAGE_ASSOC_MANAGEMENT_BAC, "Association management, bad account" },
- {ERROR_MESSAGE_CHECKPOINT_W_E_TL, "Checkpoint window error, too large" },
- {ERROR_MESSAGE_CHECKPOINT_W_E_TS, "Checkpoint window error, too small" },
- {ERROR_MESSAGE_CHECKPOINT_W_E_UN , "Checkpoint window error, unsupported" },
- {ERROR_MESSAGE_COMMUNICATION_QOS_NOT_SUPPORTED, "Communications QoS not supported" },
- {ERROR_MESSAGE_INITIATOR_IDENTITY_UNACCEPTABLE, "Initiator identity unacceptable" },
- {ERROR_MESSAGE_CONTEXT_MANAGEMENT_REFUSED, "Context management refused" },
- {ERROR_MESSAGE_ROLLBACK_NOT_AVAILABLE, "Rollback not available " },
- {ERROR_MESSAGE_CONTENTS_TYPE_LIST_CUT_BY_R, "Contents type list cut by responder " },
- {ERROR_MESSAGE_CONTENTS_TYPE_LIST_CUT_BY_P, "Contents type list cut by Presentation service" },
- {ERROR_MESSAGE_INVALID_FILESTORE_PASSWORD, "Invalid filestore password" },
- {ERROR_MESSAGE_INCOMPATABLE_SERVICE_CLASS, "Incompatible service class" },
-
- {ERROR_MESSAGE_FILENAME_NOT_FOUND, "Filename not found" },
- {ERROR_MESSAGE_SELECTION_ATTRIBUTES_NOT_MATCHED, "Selection attributes not matched" },
- {ERROR_MESSAGE_INITIAL_ATTRIBUTES_NOT_POSSIBLE, "Initial attributes not possible" },
- {ERROR_MESSAGE_BAD_ATTRIBUTE_NAME, "Bad attribute name" },
- {ERROR_MESSAGE_NON_EXISTENT_FILE, "Non-existent file" },
- {ERROR_MESSAGE_FILE_ALREADY_EXISTS, "File already exists" },
- {ERROR_MESSAGE_FILE_CANNOT_BE_CREATED, "File cannot be created" },
- {ERROR_MESSAGE_FILE_CANNOT_BE_DELETED, "File cannot be deleted" },
- {ERROR_MESSAGE_CONCURRENCY_CONTROL_NOT_AVAILABLE, "Concurrency control not available" },
- {ERROR_MESSAGE_CONCURRENCY_CONTROL_NOT_SUPPORTED, "Concurrency control not supported" },
- {ERROR_MESSAGE_CONCURRENCY_CONTROL_NOT_POSSIBLE, "Concurrency control not possible" },
- {ERROR_MESSAGE_MORE_RESTRICTIVE_LOCK, "More restrictive lock" },
- {ERROR_MESSAGE_FILE_BUSY, "File busy" },
- {ERROR_MESSAGE_ACCESS_CONTROL_NOT_AVAILABLE, "Access control not available" },
- {ERROR_MESSAGE_ACCESS_CONTROL_NOT_SUPPORTED, "Access control not supported" },
- {ERROR_MESSAGE_ACCESS_CONTROL_INCONSISTENT, "Access control not inconsistent" },
- {ERROR_MESSAGE_FILENAME_TRUNCATED, "Filename truncated" },
- {ERROR_MESSAGE_INITIAL_ATTRIBUTES_ALTERED, "Initial attributes altered" },
- {ERROR_MESSAGE_BAD_ACCOUNT_, "Bad account" },
- {ERROR_MESSAGE_OVERRIDE_SELECTED_EXISTING_FILE, "Override selected existing file" },
- {ERROR_MESSAGE_OVERRIDE_DELETED_AND_RECREATED_FILE_OLD, "Override deleted and recreated file with old attributes" },
- {ERROR_MESSAGE_OVERRIDE_DELETED_AND_RECREATED_FILE_NEW, "Override deleted and recreated file with new attributes" },
- {ERROR_MESSAGE_CREATE_OVERRIDE_NOT_POSSIBLE, "Create override, not possible" },
- {ERROR_MESSAGE_AMBIGUOUS_FILE_SPECIFICATION, "Ambiguous file specification" },
- {ERROR_MESSAGE_INVALID_CREATE_PASSWORD, "Invalid create password" },
- {ERROR_MESSAGE_INVALID_DELETE_PASSWORD, "Invalid delete password on override" },
- {ERROR_MESSAGE_BAD_ATTRIBUTE_VALUE, "Bad attribute value" },
- {ERROR_MESSAGE_REQUESTED_ACCESS_VIOLATES_PERMITTED_ACTIONS, "Requested access violates permitted actions" },
- {ERROR_MESSAGE_REQUESTED_FUNCTIONAL_UNIT_NOT_AVAILABLE, "Functional unit not available for requested access" },
- {ERROR_MESSAGE_REQUESTED_FILE_CREATED_BUT_NOT_SELECTED, "File created but not selected" },
-
- {ERROR_MESSAGE_ATTRIBUTE_NON_EXISTENT, "Attribute non existent" },
- {ERROR_MESSAGE_ATTRIBUTE_CANNOT_BE_READ, "Attribute cannot be read" },
- {ERROR_MESSAGE_ATTRIBUTE_CANNOT_BE_CHANGED, "Attribute cannot be changed" },
- {ERROR_MESSAGE_ATTRIBUTE_NOT_SUPPORTED, "Attribute not supported" },
- {ERROR_MESSAGE_BAD_ATTRIBUTE_NAME_, "Bad attribute name" },
- {ERROR_MESSAGE_BAD_ATTRIBUTE_VALUE_, "Bad attribute value" },
- {ERROR_MESSAGE_ATTRIBUTE_PARTIALLY_SUPPORTED, "Attribute partially supported" },
- {ERROR_MESSAGE_ADDITIONAL_SET_ATTRIBUTE_, "Additional set attribute value not distinct" },
-
- {ERROR_MESSAGE_ARD_BAD_FADU_U, "Bad FADU (unspecific)" },
- {ERROR_MESSAGE_ARD_BAD_FADU_SIZE_ERROR, "Bad FADU - size error" },
- {ERROR_MESSAGE_ARD_BAD_FADU_TYPE_ERROR, "Bad FADU - type error" },
- {ERROR_MESSAGE_ARD_BAD_FADU_POORLY_SPECIFIED, "Bad FADU - poorly specified" },
- {ERROR_MESSAGE_ARD_BAD_FADU_BAD_LOCATION, "Bad FADU - bad location" },
- {ERROR_MESSAGE_ARD_FADU_DOES_NOT_EXIST, "FADU does not exist" },
- {ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_U, "FADU not available (unspecific)" },
- {ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_R, "FADU not available for reading" },
- {ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_W, "FADU not available for writing" },
- {ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_L, "FADU not available for location" },
- {ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_E, "FADU not available for erasure" },
- {ERROR_MESSAGE_ARD_FADU_CAN_NOT_BE_INSERTED, "FADU cannot be insterted" },
- {ERROR_MESSAGE_ARD_FADU_CAN_NOT_BE_REPLACED, "FADU cannot be replaced" },
- {ERROR_MESSAGE_ARD_FADU_CAN_NOT_BE_LOCATED, "FADU cannot be located" },
- {ERROR_MESSAGE_ARD_BAD_DATA_ELEMENT_TYPE, "Bad data element type" },
- {ERROR_MESSAGE_ARD_OPERATION_NOT_AVAILABLE, "Operation not available" },
- {ERROR_MESSAGE_ARD_OPERATION_NOT_SUPPORTED, "Operation not supported" },
- {ERROR_MESSAGE_ARD_OPERATION_NOT_INCONSISTENT, "Operation not inconsistent" },
- {ERROR_MESSAGE_ARD_CONCURENCY_CONTROL_NOT_AVAILABLE, "Concurrency control not available" },
- {ERROR_MESSAGE_ARD_CONCURENCY_CONTROL_NOT_SUPPORTED, "Concurrency control not supported" },
- {ERROR_MESSAGE_ARD_CONCURENCY_CONTROL_NOT_INCONSISTENT, "Concurrency control not inconsistent" },
- {ERROR_MESSAGE_ARD_PROCESSING_MODE_NOT_AVAILABLE, "Processing mode not available" },
- {ERROR_MESSAGE_ARD_PROCESSING_MODE_NOT_SUPPORTED, "Processing mode not supported" },
- {ERROR_MESSAGE_ARD_PROCESSING_MODE_NOT_INCONSISTENT, "Processing mode not inconsistent" },
- {ERROR_MESSAGE_ARD_ACCESS_CONTEXT_NOT_AVAILABLE, "Access context not available" },
- {ERROR_MESSAGE_ARD_ACCESS_CONTEXT_NOT_SUPPORTED, "Access context not supported" },
- {ERROR_MESSAGE_ARD_BAD_WRITE_U, "Bad write (unspecific)" },
- {ERROR_MESSAGE_ARD_BAD_READ_U, "Bad read (unspecific)" },
- {ERROR_MESSAGE_ARD_LOCAL_FAILURE_U, "Local failure (unspecific)" },
- {ERROR_MESSAGE_ARD_LOCAL_FAILURE_FE, "Local failure - filespace exhausted" },
- {ERROR_MESSAGE_ARD_LOCAL_FAILURE_DC, "Local failure - data corrupted" },
- {ERROR_MESSAGE_ARD_LOCAL_FAILURE_DF, "Local failure - device failure" },
- {ERROR_MESSAGE_ARD_FUTURE_FILE_SIZE_EXCEEDED, "Future file size exceeded" },
- {ERROR_MESSAGE_ARD_FUTURE_FILE_SIZE_INCREASED, "Future file size increased" },
- {ERROR_MESSAGE_ARD_FUNCTIONAL_UNIT_INVALID, "Functional unit invalid in processing mode" },
- {ERROR_MESSAGE_ARD_CONTENTS_TYPE_INCONSISTENT, "Contents type inconsistent" },
- {ERROR_MESSAGE_ARD_CONTENTS_TYPE_SIMPLIFIED, "Contents type simplified" },
- {ERROR_MESSAGE_ARD_DUBLICATE_FADU_NAME, "Duplicate FADU name" },
- {ERROR_MESSAGE_ARD_DAMAGE_TO_SO, "Damage to select/open regime" },
- {ERROR_MESSAGE_ARD_FADU_LOCKING_NOT_A, "FADU locking not available on file" },
- {ERROR_MESSAGE_ARD_FADU_LOCKED_BY_ANOTHER_USER, "FADU locked by another user" },
-
- {ERROR_MESSAGE_RR_BAD_CHECKPOINT, "Bad checkpoint (unspecific)" },
- {ERROR_MESSAGE_RR_ACTIVITY_NOT_UNIQUE, "Activity not unique" },
- {ERROR_MESSAGE_RR_CHECKPOINT_OUTSIDE_WINDOW, "Checkpoint outside window" },
- {ERROR_MESSAGE_RR_ACTIVITY_NO_LONGER_EXISTS, "Activity no longer exists" },
- {ERROR_MESSAGE_RR_ACTIVITY_NO_LONGER_RECOGNIZED, "Activity not recognized" },
- {ERROR_MESSAGE_RR_ACTIVITY_NO_DOCKET, "No docket" },
- {ERROR_MESSAGE_RR_ACTIVITY_CORRUPT_DOCKET, "Corrupt docket" },
- {ERROR_MESSAGE_RR_FILE_WAITING_RESTART, "File waiting restart" },
- {ERROR_MESSAGE_RR_BAD_RECOVERY_POINT, "Bad recovery point" },
- {ERROR_MESSAGE_RR_NON_EXISTENT_RECOVERY_POINT, "Non-existent recovery point" },
- {ERROR_MESSAGE_RR_RECOVERY_MODE_NOT_AVAILABLE, "Recovery mode not available" },
- {ERROR_MESSAGE_RR_RECOVERY_MODE_INCONSISTENT, "Recovery mode inconsistent" },
- {ERROR_MESSAGE_RR_RECOVERY_MODE_REDUCE, "Recovery mode not reduce" },
- {ERROR_MESSAGE_RR_ACCESS_CONTROL_NOT_A, "Access control not available" },
- {ERROR_MESSAGE_RR_ACCESS_CONTROL_NOT_S, "Access control not supported" },
- {ERROR_MESSAGE_RR_ACCESS_CONTROL_I, "Access control not inconsistent" },
- {ERROR_MESSAGE_RR_CONTENTS_TYPE_I, "Contents type inconsistent" },
- {ERROR_MESSAGE_RR_CONTENTS_TYPE_S, "Contents type simplified" },
- {0, NULL }
-};
-
-static const value_string ftam_data_vals[] =
-{
- {FTAM_GRAPHIC_STRING, "Graphic String" },
- {FTAM_TELEX_STRING, "Teletex String" },
- {FTAM_VIDEO_STRING, "Videotex String" },
- {FTAM_IA5_STRING, "IA5String" },
- {FTAM_VISIBLE_STRING, "Visible String" },
- {FTAM_GENERAL_STRING, "General String" },
- {FTAM_PRINTABLE_STRING, "Printable String" },
- {FTAM_OCTET_STRING, "OCTET String" },
- {FTAM_NODE_DESCRIPTOR_DATA_ELEMENT, "Node Descriptor Data Element" },
- {FTAM_ENTER_SUBTREE_DATA_ELEMENT, "Enter subtree Data Element" },
- {FTAM_EXIT_SUBTREE_DATA_ELEMENT, "Exit subtree Data Element" },
- {FTAM_DATATYPE_NBS9, "Datatype NBS9" },
- {0, NULL }
-};
-static const value_string ftam_pdu_vals[] =
-{
- {FTAM_F_INITIALIZE_REQUEST, "f-initialize request" },
- {FTAM_F_INITIALIZE_RESPONSE, "f-initialize response" },
- {FTAM_F_TERMINATE_REQUEST, "f-terminate request" },
- {FTAM_F_TERMINATE_RESPONSE, "f-terminate response" },
- {FTAM_F_U_ABORT_REQUEST, "f-u-abort request" },
- {FTAM_F_P_ABORT_REQUEST, "f-p-abort request" },
- {FTAM_F_SELECT_REQUEST, "f-select request" },
- {FTAM_F_SELECT_RESPONSE, "f-select response" },
- {FTAM_F_DESELECT_REQUEST, "f-deselect request" },
- {FTAM_F_DESELECT_RESPONSE, "f-deselect response" },
- {FTAM_F_CREATE_REQUEST, "f-create request" },
- {FTAM_F_CREATE_RESPONSE, "f-create response" },
- {FTAM_F_DELETE_REQUEST, "f-delete request" },
- {FTAM_F_DELETE_RESPONSE, "f-delete response" },
- {FTAM_F_READ_ATTRIB_REQUEST, "f-read-attrib request" },
- {FTAM_F_READ_ATTRIB_RESPONSE, "f-read-attrib response" },
- {FTAM_F_CHANGE_ATTRIB_REQUEST, "f-change-attrib request" },
- {FTAM_F_CHANGE_ATTRIB_RESPONSE, "f-change-attrib response" },
- {FTAM_F_OPEN_REQUEST, "f-open request" },
- {FTAM_F_OPEN_RESPONSE, "f-open response" },
- {FTAM_F_CLOSE_REQUEST, "f-close request" },
- {FTAM_F_CLOSE_RESPONSE, "f-close response" },
- {FTAM_F_BEGIN_GROUP_REQUEST, "f-begin-group request" },
- {FTAM_F_BEGIN_GROUP_RESPONSE, "f-begin-group response" },
- {FTAM_F_END_GROUP_REQUEST, "f-end-group request" },
- {FTAM_F_END_GROUP_RESPONSE, "f-end-group response" },
- {FTAM_F_RECOVER_REQUEST, "f-recover request" },
- {FTAM_F_RECOVER_RESPONSE, "f-recover response" },
- {FTAM_F_LOCATE_REQUEST, "f-locate request" },
- {FTAM_F_LOCATE_RESPONSE, "f-locate response" },
- {FTAM_F_ERASE_REQUEST, "f-erase request" },
- {FTAM_F_ERASE_RESPONSE, "f-erase response" },
- {FTAM_F_READ_REQUEST, "f-read request" },
- {FTAM_F_WRITE_REQUEST, "f-write request" },
- {FTAM_F_DATA_END_REQUEST, "f-data end request" },
- {FTAM_F_TRANSFER_END_REQUEST, "f-transfer end request" },
- {FTAM_F_TRANSFER_END_RESPONSE, "f-transfer end response" },
- {FTAM_F_CANCEL_REQUEST, "f-cancel request" },
- {FTAM_F_CANCEL_RESPONSE, "f-cancel response" },
- {FTAM_F_REASTART_REQUEST, "f-restart request" },
- {FTAM_F_REASTART_RESPONSE, "f-restart response" },
- {0, NULL }
-};
-static const value_string contents_type_list_vals[] =
-{
- {FTAM_DOCUMENT_TYPE, "Document type"},
- {FTAM_ABSTRACT_SYNTAX_NAME, "Abstract syntax name"},
- {0, NULL}
+static const asn_namedbit Protocol_Version_bits[] = {
+ { 0, &hf_ftam_Protocol_Version_version_1, -1, -1, "version-1", NULL },
+ { 1, &hf_ftam_Protocol_Version_version_2, -1, -1, "version-2", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
};
-static const value_string request_sequence_top_vals[] =
-{
- {FTAM_RESPONSE_STATE_RESULT, "State result"},
- {FTAM_PROTOCOL_VERSION, "Protocol version"},
- {FTAM_IMPLEMENTATION_INFORMATION, "Implementation information"},
- {FTAM_PRESENTATION_CONTEXT_MANAGEMENT, "Presentation context management"},
- {FTAM_SERVICE_CLASS, "Service class"},
- {FTAM_FUNCTIONAL_UNITS, "Functional units"},
- {FTAM_ATTRIBUTE_GROUPS, "Attribute groups"},
- {FTAM_SHARED_ASE_INFORMATION, "Shared ASE information"},
- {FTAM_QUALITY_OF_SERVICE, "Ftam quality of service"},
- {FTAM_CONTENTS_TYPE_LIST, "Contents type list"},
- {FTAM_INITIATOR_IDENTIFY, "Initiator identity"},
- {FTAM_ACCOUNT,"Account"},
- {FTAM_FILESTORE_PASSWORD,"Filestore password"},
- {FTAM_CHECKPOINT_WINDOW,"Checkpoint window"},
- {FTAM_RESPONSE_ACTION_RESULT, "Action result"},
- {FTAM_RESPONSE_DIAGNOSTIC, "Diagnostic"},
- {FTAM_CHARGING,"Charging"},
- {0, NULL}
-};
-
-static const value_string diagnostic_sequence_list_vals[] =
-{
- {FTAM_DIAGNOSTIC_TYPE, "Diagnostic type"},
- {FTAM_ERROR_IDENTIFIER, "Error identifier"},
- {FTAM_ERROR_OBSERVER, "Error observer"},
- {FTAM_ERROR_SOURCE, "Error source"},
- {FTAM_SUGGESTED_DELAY, "Suggested delay"},
- {FTAM_FURTHER_DETAILS, "Further details"},
- {0, NULL}
-};
-static const value_string diag_definition_vals[] =
-{
- {SEQUENCE, "Sequence"},
- {0, NULL}
+static int
+dissect_ftam_Protocol_Version(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
+ Protocol_Version_bits, hf_index, ett_ftam_Protocol_Version,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_protocol_Version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Protocol_Version(FALSE, tvb, offset, pinfo, tree, hf_ftam_protocol_Version);
+}
+
+
+static int
+dissect_ftam_Implementation_Information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_restricted_string(TRUE, 1,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_implementation_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Implementation_Information(FALSE, tvb, offset, pinfo, tree, hf_ftam_implementation_information);
+}
+
+
+static int
+dissect_ftam_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_presentation_tontext_management_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_presentation_tontext_management);
+}
+static int dissect_enable_fadu_locking_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_enable_fadu_locking);
+}
+static int dissect_presentation_action_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_presentation_action);
+}
+static int dissect_reset_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_reset);
+}
+static int dissect_last_member_indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_member_indicator);
+}
+static int dissect_boolean_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_boolean_value);
+}
+
+static const asn_namedbit Service_Class_bits[] = {
+ { 0, &hf_ftam_Service_Class_unconstrained_class, -1, -1, "unconstrained-class", NULL },
+ { 1, &hf_ftam_Service_Class_management_class, -1, -1, "management-class", NULL },
+ { 2, &hf_ftam_Service_Class_transfer_class, -1, -1, "transfer-class", NULL },
+ { 3, &hf_ftam_Service_Class_transfer_and_management_class, -1, -1, "transfer-and-management-class", NULL },
+ { 4, &hf_ftam_Service_Class_access_class, -1, -1, "access-class", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
};
-static const value_string entity_reference_vals[] =
-{
- {FTAM_NO_CATEGORIZATION_POSSIBLE, "No categorization possible"},
- {FTAM_INITIATING_FILE_SERVICE_USER, "Initiating file service user"},
- {FTAM_INITIATING_FILE_PROTOCOL_MASHINE, "Initiating file protocol machine"},
- {FTAM_SERVICE_SUPPORTING_THE_FILE_PROTOCOL_MACHINE, "Service supporting the file protocol machine"},
- {FTAM_RESPONDING_FILE_PROTOCOL_MASHINE, "Responding file protocol machine"},
- {FTAM_RESPONDING_FILE_SERVICE_USER, "Responding file service user"},
- {0, NULL}
-};
-static const value_string diagnostic_type_vals[] =
-{
- {FTAM_DIAGNOSTIC_INFORMATIVE, "Informative"},
- {FTAM_DIAGNOSTIC_TRANSIENT, "Transient"},
- {FTAM_DIAGNOSTIC_PERMANENT, "Permanent"},
- {0, NULL}
+
+static int
+dissect_ftam_Service_Class(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
+ Service_Class_bits, hf_index, ett_ftam_Service_Class,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_service_class(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Service_Class(FALSE, tvb, offset, pinfo, tree, hf_ftam_service_class);
+}
+
+static const asn_namedbit Functional_Units_bits[] = {
+ { 2, &hf_ftam_Functional_Units_read, -1, -1, "read", NULL },
+ { 3, &hf_ftam_Functional_Units_write, -1, -1, "write", NULL },
+ { 4, &hf_ftam_Functional_Units_file_access, -1, -1, "file-access", NULL },
+ { 5, &hf_ftam_Functional_Units_limited_file_management, -1, -1, "limited-file-management", NULL },
+ { 6, &hf_ftam_Functional_Units_enhanced_file_management, -1, -1, "enhanced-file-management", NULL },
+ { 7, &hf_ftam_Functional_Units_grouping, -1, -1, "grouping", NULL },
+ { 8, &hf_ftam_Functional_Units_fadu_locking, -1, -1, "fadu-locking", NULL },
+ { 9, &hf_ftam_Functional_Units_recovery, -1, -1, "recovery", NULL },
+ { 10, &hf_ftam_Functional_Units_restart_data_transfer, -1, -1, "restart-data-transfer", NULL },
+ { 11, &hf_ftam_Functional_Units_limited_filestore_management, -1, -1, "limited-filestore-management", NULL },
+ { 12, &hf_ftam_Functional_Units_enhanced_filestore_management, -1, -1, "enhanced-filestore-management", NULL },
+ { 13, &hf_ftam_Functional_Units_object_manipulation, -1, -1, "object-manipulation", NULL },
+ { 14, &hf_ftam_Functional_Units_group_manipulation, -1, -1, "group-manipulation", NULL },
+ { 15, &hf_ftam_Functional_Units_consecutive_access, -1, -1, "consecutive-access", NULL },
+ { 16, &hf_ftam_Functional_Units_concurrent_access, -1, -1, "concurrent-access", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
};
-static const value_string response_state_vals[] =
-{
- {FTAM_RESPONSE_STATE_SUCCESS, "Success"},
- {FTAM_RESPONSE_STATE_FAILURE, "failure"},
- {0, NULL}
+
+static int
+dissect_ftam_Functional_Units(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
+ Functional_Units_bits, hf_index, ett_ftam_Functional_Units,
+ NULL);
+
+
+
+ return offset;
+}
+static int dissect_functional_units(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Functional_Units(FALSE, tvb, offset, pinfo, tree, hf_ftam_functional_units);
+}
+
+static const asn_namedbit Attribute_Groups_bits[] = {
+ { 0, &hf_ftam_Attribute_Groups_storage, -1, -1, "storage", NULL },
+ { 1, &hf_ftam_Attribute_Groups_security, -1, -1, "security", NULL },
+ { 2, &hf_ftam_Attribute_Groups_private, -1, -1, "private", NULL },
+ { 3, &hf_ftam_Attribute_Groups_extension, -1, -1, "extension", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
};
-static const value_string response_action_result_vals[] =
-{
- {FTAM_RESPONSE_ACTION_RESULT_SUCCESS, "Success"},
- {FTAM_RESPONSE_ACTION_RESULT_TRANSIENT_ERROR, "Transient error"},
- {FTAM_RESPONSE_ACTION_RESULT_PERMANENT_ERROR, "Permanent error"},
- {0, NULL}
+
+static int
+dissect_ftam_Attribute_Groups(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
+ Attribute_Groups_bits, hf_index, ett_ftam_Attribute_Groups,
+ NULL);
+
+
+
+ return offset;
+}
+static int dissect_attribute_groups(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Groups(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_groups);
+}
+
+
+static int
+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_) {
+ offset = dissect_acse_EXTERNAL(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_shared_ASE_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Shared_ASE_Information(FALSE, tvb, offset, pinfo, tree, hf_ftam_shared_ASE_information);
+}
+static int dissect_shared_ASE_infonnation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Shared_ASE_Information(FALSE, tvb, offset, pinfo, tree, hf_ftam_shared_ASE_infonnation);
+}
+
+
+static const value_string ftam_FTAM_Quality_of_Service_vals[] = {
+ { 0, "no-recovery" },
+ { 1, "class-1-recovery" },
+ { 2, "class-2-recovery" },
+ { 3, "class-3-recovery" },
+ { 0, NULL }
};
-static const value_string select_request_vals[] =
-{
- {FTAM_SELECT_ATTRIBUTES, "Select attributes"},
- {FTAM_CREATE_ATTRIBUTES, "Create attributes"},
- {FTAM_ACCESS_REQUEST, "Access request"},
- {FTAM_ACCSESS_PASSWORDS, "Access passwords"},
- {FTAM_SHARED_ASE_INFORMATION, "Shared ASE information"},
- {FTAM_ACCOUNT,"Account"},
- {FTAM_OVERRIDE,"Override"},
- /*no concurrency-control yet */
- {0, NULL}
-};
-static const value_string select_attribute_vals[] =
-{
- {FTAM_CREATE_FILENAME_ATTRIBUTES, "File name attributes"},
- {FTAM_CREATE_PERMITTED_ACTIONS_ATTRIBUTE, "Permitted actions attribute"},
- {FTAM_CREATE_CONTENTS_TYPE,"Contents type"},
- {FTAM_CREATE_ACCOUNT_ATTRIBUTE,"Account attribute"},
- {FTAM_CREATE_FILE_AVAILABILITY_ATTRIBUTE,"File availability attribute"},
- {FTAM_CREATE_FILESIZE_ATTRIBUTE,"Filesize attribute"},
- {FTAM_CREATE_ACCESS_CONTROL_ATTRIBUTE,"Access control attribute"},
- {FTAM_CREATE_ACCESS_LEGAL_AUALIFICATION_ATTRIBUTE,"Legal aualification attribute"},
- {FTAM_CREATE_ACCESS_PRIVATE_USE_ATTRIBUTE,"Private use attribute"},
- {0, NULL}
-};
-static const value_string open_request_vals[] =
-{
- {FTAM_PROCESSING_MODE, "Processing mode"},
- {FTAM_CONTENTS_TYPE, "Contents type"},
- {FTAM_CONCURENCY_CONTROL, "Concurrency control"},
- {FTAM_SHARED_ASE_INFORMATION, "Shared ASE information"},
- {FTAM_ENABLE_FADU_LOCKING,"Enable fadu locking"},
- {FTAM_ACTIVITY_IDENTIFIER,"Activity identifier"},
- {FTAM_RECOVERY_MODE,"Recovery mode"},
- {FTAM_REMOTE_CONTEXTS,"Remove contexts"},
- {FTAM_DEFINE_CONTEXTS,"Define contexts"},
- {0, NULL}
-};
-static const value_string contents_type_vals[] =
-{
- {FTAM_CONTENTS_TYPE_UNKNOWN, "Unknown"},
- {FTAM_CONTENTS_TYPE_PROPOSED, "Proposed"},
- {0, NULL}
+
+
+static int
+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_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_ftam_quality_of_Service(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_FTAM_Quality_of_Service(FALSE, tvb, offset, pinfo, tree, hf_ftam_ftam_quality_of_Service);
+}
+
+
+
+static int
+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_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset,
+ hf_index, object_identifier_id);
+
+
+ return offset;
+}
+static int dissect_document_type_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Document_Type_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_document_type_name);
+}
+
+
+
+static int
+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_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+
+ return offset;
+}
+static int dissect_abstract_Syntax_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Abstract_Syntax_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_abstract_Syntax_name);
+}
+static int dissect_remove_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Abstract_Syntax_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_remove_contexts_item);
+}
+static int dissect_define_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Abstract_Syntax_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_define_contexts_item);
+}
+
+
+static const value_string ftam_Contents_Type_List_item_vals[] = {
+ { 14, "document-type-name" },
+ { 0, "abstract-Syntax-name" },
+ { 0, NULL }
};
-static const value_string contents_type_proposed_vals[] =
-{
- {FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE, "Document type"},
- {FTAM_CONTENTS_TYPE_PROPOSED_CONSTRAINT_SET, "Constraint set and abstract syntax"},
- {0, NULL}
+
+static const ber_choice_t Contents_Type_List_item_choice[] = {
+ { 14, BER_CLASS_APP, 14, BER_FLAGS_NOOWNTAG, dissect_document_type_name },
+ { 0, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_abstract_Syntax_name },
+ { 0, 0, 0, 0, NULL }
};
-static const value_string contents_type_proposed_document_type_vals[] =
-{
- {FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_NAME, "Document type name"},
- {FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_PARAMETER, "Parameter"},
- {0, NULL}
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Contents_Type_List_item_choice, hf_index, ett_ftam_Contents_Type_List_item);
+
+ return offset;
+}
+static int dissect_Contents_Type_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Contents_Type_List_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Contents_Type_List_item);
+}
+
+static const ber_sequence_t Contents_Type_List_sequence_of[1] = {
+ { BER_CLASS_APP, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Contents_Type_List_item },
};
-static const value_string override_vals[] =
-{
- {FTAM_CREATE_FAILURE, "Create failure"},
- {FTAM_SELECT_OLD_FILE, "Select old file"},
- {FTAM_DELETE_AND_CREATE_WITH_OLD_ATTRIBUTES, "Delete and create with old attributes"},
- {FTAM_DELETE_AND_CREATE_WITH_NEW_ATTRIBUTES, "Delete and create with new attributes"},
- {0, NULL}
+
+static int
+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_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
+ Contents_Type_List_sequence_of, hf_index, ett_ftam_Contents_Type_List);
+
+
+
+ return offset;
+}
+static int dissect_contents_type_list(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Contents_Type_List(FALSE, tvb, offset, pinfo, tree, hf_ftam_contents_type_list);
+}
+
+
+static int
+dissect_ftam_User_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_restricted_string(TRUE, 22,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_initiator_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity(FALSE, tvb, offset, pinfo, tree, hf_ftam_initiator_identity);
+}
+static int dissect_identity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity);
+}
+static int dissect_actual_values6(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity(FALSE, tvb, offset, pinfo, tree, hf_ftam_actual_values6);
+}
+
+
+static int
+dissect_ftam_Account(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_restricted_string(TRUE, 4,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_account(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Account(FALSE, tvb, offset, pinfo, tree, hf_ftam_account);
+}
+static int dissect_actual_values2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Account(FALSE, tvb, offset, pinfo, tree, hf_ftam_actual_values2);
+}
+
+
+static int
+dissect_ftam_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, 0,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_resource_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_resource_identifier);
+}
+static int dissect_charging_unit_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_charging_unit);
+}
+static int dissect_further_details_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_further_details);
+}
+static int dissect_graphicString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(FALSE, tvb, offset, pinfo, tree, hf_ftam_graphicString);
+}
+static int dissect_actual_values9_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values9);
+}
+static int dissect_Child_Objects_Attribute_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(FALSE, tvb, offset, pinfo, tree, hf_ftam_Child_Objects_Attribute_item);
+}
+static int dissect_substring_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(TRUE, tvb, offset, pinfo, tree, hf_ftam_substring_match);
+}
+static int dissect_Pathname_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GraphicString(FALSE, tvb, offset, pinfo, tree, hf_ftam_Pathname_item);
+}
+
+
+static int
+dissect_ftam_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_octetString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_ftam_octetString);
+}
+
+
+static const value_string ftam_Password_vals[] = {
+ { 0, "graphicString" },
+ { 1, "octetString" },
+ { 0, NULL }
};
-static const value_string read_write_vals[] =
-{
- {FTAM_FILE_ACCESS_DATA_UNIT_IDENTITY, "File access data unit identity"},
- {FTAM_FILE_ACCESS_CONTEXT, "Access context"},
- {FTAM_FILE_FADU_LOCK, "Fadu lock"},
- {FTAM_FILE_ACCESS_DATA_UNIT_OPERATION, "File access data unit operation"},
- {0, NULL}
+
+static const ber_choice_t Password_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_graphicString },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_octetString },
+ { 0, 0, 0, 0, NULL }
};
-static const value_string fadu_vals[] =
-{
- {FTAM_FADU_FIRST_LAST, "First/Last"},
- {FTAM_FADU_RELATIVE, "Relative"},
- {FTAM_FADU_BEGIN_END, "Begin/End"},
- {FTAM_FADU_SINGLE_NAME, "Single name"},
- {FTAM_FADU_NAME_LIST, "Name list"},
- {FTAM_FADU_FADU_NUMBER, "FADU number"},
- {0, NULL}
-};
-static const value_string first_last_vals[] =
-{
- {FTAM_FADU_FIRST, "First"},
- {FTAM_FADU_LAST, "LAST"},
- {0, NULL}
+
+static int
+dissect_ftam_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Password_choice, hf_index, ett_ftam_Password);
+
+
+
+ return offset;
+}
+static int dissect_filestore_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_filestore_password);
+}
+static int dissect_create_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_create_password);
+}
+static int dissect_read_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_password);
+}
+static int dissect_read_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_password);
+}
+static int dissect_insert_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_insert_password);
+}
+static int dissect_insert_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_password);
+}
+static int dissect_replace_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_replace_password);
+}
+static int dissect_replace_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_replace_password);
+}
+static int dissect_extend_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_extend_password);
+}
+static int dissect_extend_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_extend_password);
+}
+static int dissect_erase_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_erase_password);
+}
+static int dissect_erase_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_erase_password);
+}
+static int dissect_read_attribute_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_password);
+}
+static int dissect_read_attribute_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_password);
+}
+static int dissect_change_attribute_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_password);
+}
+static int dissect_change_attribute_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_password);
+}
+static int dissect_delete_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_delete_password);
+}
+static int dissect_delete_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_password);
+}
+static int dissect_link_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_link_password);
+}
+static int dissect_link_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(TRUE, tvb, offset, pinfo, tree, hf_ftam_link_password);
+}
+static int dissect_Pass_Passwords_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Password(FALSE, tvb, offset, pinfo, tree, hf_ftam_Pass_Passwords_item);
+}
+
+
+
+static int
+dissect_ftam_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_checkpoint_window_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_checkpoint_window);
+}
+static int dissect_transfer_window_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_transfer_window);
+}
+static int dissect_threshold_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_threshold);
+}
+static int dissect_bulk_transfer_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_bulk_transfer_number);
+}
+static int dissect_recovefy_Point_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_recovefy_Point);
+}
+static int dissect_concurrent_bulk_transfer_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_concurrent_bulk_transfer_number);
+}
+static int dissect_concurrent_recovery_point_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_concurrent_recovery_point);
+}
+static int dissect_last_transfer_end_read_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_read_response);
+}
+static int dissect_last_transfer_end_write_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_write_response);
+}
+static int dissect_recovety_Point_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_recovety_Point);
+}
+static int dissect_last_transfer_end_read_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_read_request);
+}
+static int dissect_last_transfer_end_write_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_last_transfer_end_write_request);
+}
+static int dissect_transfer_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_transfer_number);
+}
+static int dissect_checkpoint_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_checkpoint_identifier);
+}
+static int dissect_level_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_level_number);
+}
+static int dissect_charging_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_charging_value);
+}
+static int dissect_error_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_identifier);
+}
+static int dissect_suggested_delay_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_suggested_delay);
+}
+static int dissect_fadu_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_fadu_number);
+}
+static int dissect_actual_values7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values7);
+}
+static int dissect_maximum_set_size_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_maximum_set_size);
+}
+static int dissect_number_of_characters_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_number_of_characters_match);
+}
+static int dissect_integer_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_integer_value);
+}
+static int dissect_success_Object_count_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_success_Object_count);
+}
+
+static const ber_sequence_t F_INITIALIZE_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protocol_Version },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_implementation_information },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_presentation_tontext_management_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_service_class },
+ { BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_functional_units },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attribute_groups },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_CON, 6, BER_FLAGS_NOOWNTAG, dissect_ftam_quality_of_Service },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contents_type_list },
+ { BER_CLASS_APP, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_initiator_identity },
+ { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_filestore_password },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_checkpoint_window_impl },
+ { 0, 0, 0, NULL }
};
-static const value_string relative_vals[] =
-{
- {FTAM_FADU_PREVIOUS, "Previous"},
- {FTAM_FADU_CURRENT, "Current"},
- {FTAM_FADU_NEXT, "Next"},
- {0, NULL}
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_INITIALIZE_request_sequence, hf_index, ett_ftam_F_INITIALIZE_request);
+
+ return offset;
+}
+static int dissect_f_initialize_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_INITIALIZE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_initialize_request);
+}
+
+
+static const value_string ftam_State_Result_vals[] = {
+ { 0, "success" },
+ { 1, "failure" },
+ { 0, NULL }
};
-static const value_string begin_end_vals[] =
-{
- {FTAM_FADU_BEGIN, "Begin"},
- {FTAM_FADU_END, "End"},
- {0, NULL}
+
+
+static int
+dissect_ftam_State_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_state_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_State_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_state_result);
+}
+
+
+static const value_string ftam_Action_Result_vals[] = {
+ { 0, "success" },
+ { 1, "transient-error" },
+ { 2, "permanent-error" },
+ { 0, NULL }
};
-static const value_string access_context_vals[] =
-{
- {FTAM_HIERARCHICAL_ALL_DATA_UNITS, "Hierarchical all data units"},
- {FTAM_HIERARCHICAL_NO_DATA_UNITS, "Hierarchical no data units"},
- {FTAM_ALL_DATA_UNITS, "Flat all data units"},
- {FTAM_ONE_LEVEL_DATA_UNITS, "Flat one level data units"},
- {FTAM_SINGLE_DATA_UNITS, "Flat single data units"},
- {FTAM_UNSTRUCTURED_ALL_DATA_UNITS, "Unstructured all data units"},
- {FTAM_UNSTRUCTURED_SINGLE_DATA_UNITS, "Unstructured single data units"},
- {0, NULL}
-};
-static const value_string access_data_unit_operation_vals[] =
-{
- {FTAM_ACCESS_INSERT, "Insert"},
- {FTAM_ACCESS_REPLACE, "Replace"},
- {FTAM_ACCESS_EXTEND, "Extend"},
- {0, NULL}
+
+
+static int
+dissect_ftam_Action_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+
+ return offset;
+}
+static int dissect_action_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Action_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_action_result);
+}
+
+
+static const value_string ftam_T_diagnostic_type_vals[] = {
+ { 0, "informative" },
+ { 1, "transient" },
+ { 2, "permanent" },
+ { 0, NULL }
};
+static int
+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_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
-static const value_string ftam_parameters_vals[] =
-{
- {FTAM_UNIVERSAL_CLASS_NUMBER, "Universal class number"},
- {FTAM_MAXIMUM_STRING_LENGTH, "Maximum string length"},
- {FTAM_STRING_SIGNIFICANCE, "String significance"},
- {0, NULL}
+ return offset;
+}
+static int dissect_diagnostic_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_diagnostic_type(TRUE, tvb, offset, pinfo, tree, hf_ftam_diagnostic_type);
+}
+
+
+static const value_string ftam_Entity_Reference_vals[] = {
+ { 0, "no-categorization-possible" },
+ { 1, "initiating-file-service-user" },
+ { 2, "initiating-file-protocol-machine" },
+ { 3, "service-supporting-the-file-protocol-machine" },
+ { 4, "responding-file-protocol-machine" },
+ { 5, "responding-file-service-user" },
+ { 0, NULL }
};
-static const value_string universal_class_number_vals[] =
-{
- {FTAM_PRINTABLE_LENGTH, "Printable string"},
- {FTAM_GRAPHIC_STRING, "Graphic string"},
- {FTAM_TELEX_STRING, "Teletex string"},
- {FTAM_VIDEO_STRING, "Video texstring"},
- {FTAM_IA5_STRING, "ia5string"},
- {FTAM_VISIBLE_STRING, "Visible string"},
- {FTAM_GENERAL_STRING, "General string"},
- {0, NULL}
+
+static int
+dissect_ftam_Entity_Reference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_error_observer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Entity_Reference(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_observer);
+}
+static int dissect_error_Source_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Entity_Reference(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_Source);
+}
+
+static const ber_sequence_t Diagnostic_item_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_diagnostic_type_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_identifier_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_error_observer_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_error_Source_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suggested_delay_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_further_details_impl },
+ { 0, 0, 0, NULL }
};
+static int
+dissect_ftam_Diagnostic_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Diagnostic_item_sequence, hf_index, ett_ftam_Diagnostic_item);
+
+ return offset;
+}
+static int dissect_Diagnostic_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Diagnostic_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Diagnostic_item);
+}
-static const value_string string_significance_vals[] =
-{
- {FTAM_VARIABLE, "Variable"},
- {FTAM_FIXED, "Fixed"},
- {FTAM_NOT_SIGNIFICANT, "Not significant"},
- {0, NULL}
+static const ber_sequence_t Diagnostic_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Diagnostic_item },
};
-static const value_string read_attributes_vals[] =
-{
- {FTAM_READ_ATTRIBUTE_FILENAME, "Filename"},
- {FTAM_READ_ATTRIBUTE_PERMITTED_ACTIONS, "Permitted actions"},
- {FTAM_READ_ATTRIBUTE_CONTENTS_TYPE, "Contents type"},
- {FTAM_READ_ATTRIBUTE_STORAGE_ACCOUNT, "Storage account"},
- {FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_CREATION, "Date and time of creation"},
- {FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_MODIFICATION, "Date and time of last modification"},
- {FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_READ_ACCESS, "Date and time of last read access"},
- {FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION, "Date and time of last attribute modification"},
- {FTAM_READ_ATTRIBUTE_IDENTITY_OF_CREATOR, "Identity of creator"},
- {FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_MODIFIER, "Identity of last modifier"},
- {FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_READER, "Identity of last reader"},
- {FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER, "Identity of last attribute modifier"},
- {FTAM_READ_ATTRIBUTE_FILE_AVAILABILITY, "File availability"},
- {FTAM_READ_ATTRIBUTE_FILESIZE, "Filesize"},
- {FTAM_READ_ATTRIBUTE_FUTURE_FILESIZE, "Future filesize"},
- {FTAM_READ_ATTRIBUTE_ACCESS_CONTROL, "Access control"},
- {FTAM_READ_ATTRIBUTE_LEGAL_QUALIFICATION, "legal qualification"},
- {FTAM_READ_ATTRIBUTE_PRIVATE_USE, "Private use"},
- {0, NULL}
-};
-static const value_string date_and_time_vals[] =
-{
- {FTAM_DATE_AND_TIME_NO_VALUE_AVAILABLE, "No value available"},
- {FTAM_DATE_AND_TIME_ACTUAL_VALUE, "actual values"},
- {0, NULL}
+
+static int
+dissect_ftam_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
+ Diagnostic_sequence_of, hf_index, ett_ftam_Diagnostic);
+
+
+
+ return offset;
+}
+static int dissect_diagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Diagnostic(FALSE, tvb, offset, pinfo, tree, hf_ftam_diagnostic);
+}
+
+static const ber_sequence_t F_INITIALIZE_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protocol_Version },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_implementation_information },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_presentation_tontext_management_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_service_class },
+ { BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_functional_units },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attribute_groups },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_CON, 6, BER_FLAGS_NOOWNTAG, dissect_ftam_quality_of_Service },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contents_type_list },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_checkpoint_window_impl },
+ { 0, 0, 0, NULL }
};
-static const value_string identity_vals[] =
-{
- {FTAM_DATE_IDENTITY_NO_VALUE_AVAILABLE, "No value available"},
- {FTAM_USER_IDENTITY, "actual values"},
- {0, NULL}
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_INITIALIZE_response_sequence, hf_index, ett_ftam_F_INITIALIZE_response);
+
+ return offset;
+}
+static int dissect_f_initialize_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_INITIALIZE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_initialize_response);
+}
+
+static const ber_sequence_t F_TERMINATE_request_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
};
-static const value_string read_attribute_vals[] =
-{
- {FTAM_READ_ATTRIBUTES, "Read attributes"},
- {0, NULL}
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_TERMINATE_request_sequence, hf_index, ett_ftam_F_TERMINATE_request);
+
+ return offset;
+}
+static int dissect_f_terminate_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_TERMINATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_terminate_request);
+}
+
+static const ber_sequence_t Charging_item_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_resource_identifier_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_unit_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_value_impl },
+ { 0, 0, 0, NULL }
};
-/* function definitions */
-static void
-show_contents_type(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len);
-static void
-show_contents_type_proposed(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len);
-static void
-show_select_create_attributes(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len);
-static void
-show_nbs9_parameters(ASN1_SCK *asn,proto_tree *ftam_tree_itm,tvbuff_t *tvb,int
-*offset,int item_len);
+static int
+dissect_ftam_Charging_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Charging_item_sequence, hf_index, ett_ftam_Charging_item);
+ return offset;
+}
+static int dissect_Charging_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Charging_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Charging_item);
+}
-static int read_length(ASN1_SCK *a, proto_tree *tree, int hf_id, guint *len)
-{
- guint length = 0;
- gboolean def = FALSE;
- int start = a->offset;
- int ret;
- ret = asn1_length_decode(a, &def, &length);
- if (ret != ASN1_ERR_NOERROR)
- {
- if (tree)
- {
- proto_tree_add_text(tree, a->tvb, start, 0,
- "%s: ERROR: Couldn't parse length: %s",
- proto_registrar_get_name(hf_id), asn1_err_to_str(ret));
- }
- return ret;
- }
- if (len)
- *len = length;
- if (hf_id)
- proto_tree_add_uint(tree, hf_id, a->tvb, start, a->offset-start,length);
-
- return ASN1_ERR_NOERROR;
-}
-
-static int read_integer_value(ASN1_SCK *a, proto_tree *tree, int hf_id,
- proto_item **new_item, guint *i, int start, guint length)
-{
- guint integer = 0;
- proto_item *temp_item = NULL;
- int ret;
+static const ber_sequence_t Charging_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Charging_item },
+};
- ret = asn1_uint32_value_decode(a, length, &integer);
- if (ret != ASN1_ERR_NOERROR)
- {
- if (tree)
- {
- proto_tree_add_text(tree, a->tvb, start, 0,
- "%s: ERROR: Couldn't parse value: %s",
- proto_registrar_get_name(hf_id), asn1_err_to_str(ret));
- }
- return ret;
- }
+static int
+dissect_ftam_Charging(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
- if (i)
- *i = integer;
+ offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
+ Charging_sequence_of, hf_index, ett_ftam_Charging);
- if (hf_id)
- temp_item = proto_tree_add_uint(tree, hf_id, a->tvb, start,a->offset-start, integer);
- if (new_item)
- *new_item = temp_item;
- return ASN1_ERR_NOERROR;
+ return offset;
+}
+static int dissect_charging(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Charging(FALSE, tvb, offset, pinfo, tree, hf_ftam_charging);
}
-static void
-show_graphic_string(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_itm = NULL;
- proto_item *itm;
- gint length;
- gint header_len = (asn->offset -*offset);
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- header_len+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
-
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+
- item_len,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_itm = proto_item_add_subtree(itm, ett_ftam_itm);
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_itm, tvb, *offset, item_len,GRAPHIC_STRING);
- *offset = *offset + item_len;
- asn->offset = *offset;
+static const ber_sequence_t F_TERMINATE_response_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_TERMINATE_response_sequence, hf_index, ett_ftam_F_TERMINATE_response);
+
+ return offset;
}
-static void
-show_graphic_string_nameless(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- gint length;
- gint header_len = (asn->offset -*offset);
- gint new_item_len;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- header_len+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
-
- /* skip type */
- (*offset)++;
- asn->offset = *offset;
- /* get length */
- if (read_length(asn, ftam_tree, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- return ;
- }
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) <
- new_item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- return ;
- }
-
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree, tvb, *offset, new_item_len,GRAPHIC_STRING);
+static int dissect_f_terminate_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_TERMINATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_terminate_response);
}
-static void
-show_file_store_password(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_itm = NULL;
- proto_item *itm;
- gint length;
- gint header_len = (asn->offset -*offset);
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- header_len+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
-
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+
- item_len,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_itm = proto_item_add_subtree(itm, ett_ftam_itm);
- *offset = asn->offset;
- show_graphic_string_nameless(asn,ftam_tree_itm,tvb,offset,item_len-header_len );
- *offset = *offset + item_len;
- asn->offset = *offset;
+
+static const ber_sequence_t F_U_ABORT_request_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_U_ABORT_request_sequence, hf_index, ett_ftam_F_U_ABORT_request);
+
+ return offset;
+}
+static int dissect_f_u_abort_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_U_ABORT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_u_abort_request);
}
-static void
-show_attribute_groups(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_itm = NULL;
- proto_item *itm;
- guint8 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+
- item_len,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_itm = proto_item_add_subtree(itm, ett_ftam_itm);
- *offset = asn->offset;
- flags = tvb_get_guint8(tvb, (*offset)+1);
- proto_tree_add_boolean(ftam_tree_itm,hf_attribute_groups_storage, tvb, (*offset)+1,1,flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_attribute_groups_security, tvb, (*offset)+1,1,flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_attribute_groups_private, tvb, (*offset)+1,1,flags);
- *offset = *offset + item_len;
- asn->offset = *offset;
+static const ber_sequence_t F_P_ABORT_request_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_P_ABORT_request_sequence, hf_index, ett_ftam_F_P_ABORT_request);
+
+ return offset;
+}
+static int dissect_f_p_abort_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_P_ABORT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_p_abort_request);
}
-static void
-show_create_permitted_actions_attribute(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- guint16 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- *offset = asn->offset+1;
- flags = tvb_get_ntohs(tvb,*offset);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_read, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_insert, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_replace, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_extend, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_erase, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_read_attribute, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_change_attribute, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_attribute_delete_file, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_traversal, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_permitted_action_random_order, tvb, (*offset),2,flags);
-
- *offset = *offset + item_len;
- asn->offset = *offset;
+
+static const value_string ftam_FTAM_Regime_PDU_vals[] = {
+ { 0, "f-initialize-request" },
+ { 1, "f-initialize-response" },
+ { 2, "f-terminate-request" },
+ { 3, "f-terminate-response" },
+ { 4, "f-u-abort-request" },
+ { 5, "f-p-abort-request" },
+ { 0, NULL }
+};
+
+static const ber_choice_t FTAM_Regime_PDU_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_f_initialize_request_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_f_initialize_response_impl },
+ { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_f_terminate_request_impl },
+ { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_f_terminate_response_impl },
+ { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_f_u_abort_request_impl },
+ { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_f_p_abort_request_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ FTAM_Regime_PDU_choice, hf_index, ett_ftam_FTAM_Regime_PDU);
+
+ return offset;
}
-static void
-show_processing_mode(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- guint16 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- *offset = asn->offset;
- flags = tvb_get_ntohs(tvb,*offset);
- proto_tree_add_boolean(ftam_tree,hf_processing_mode_read, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_processing_mode_replace, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_processing_mode_insert, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_processing_mode_extend, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_processing_mode_erase, tvb, (*offset),2,flags);
- *offset = *offset + item_len;
- asn->offset = *offset;
+static int dissect_fTAM_Regime_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_FTAM_Regime_PDU(FALSE, tvb, offset, pinfo, tree, hf_ftam_fTAM_Regime_PDU);
}
-static void
-show_access_attributes(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- guint16 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- *offset = asn->offset;
- flags = tvb_get_ntohs(tvb,*offset);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_read, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_insert, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_replace, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_extend, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_erase, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_read_attribute, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_change_attribute, tvb, (*offset),2,flags);
- proto_tree_add_boolean(ftam_tree,hf_filename_attribute_delete_file, tvb, (*offset),2,flags);
- *offset = *offset + item_len;
- asn->offset = *offset;
+
+static const ber_sequence_t Pathname_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_Pathname_item },
+};
+
+static int
+dissect_ftam_Pathname(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ Pathname_sequence_of, hf_index, ett_ftam_Pathname);
+
+ return offset;
}
-static void
-show_service_classes(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_itm = NULL;
- proto_item *itm;
- guint8 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+
- item_len,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_itm = proto_item_add_subtree(itm, ett_ftam_itm);
- *offset = asn->offset;
- flags = tvb_get_guint8(tvb, (*offset)+1);
- proto_tree_add_boolean(ftam_tree_itm,hf_service_class_unconstrained_class, tvb, (*offset)+1,1,flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_service_class_management_class, tvb, (*offset)+1,1,flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_service_class_transfer_class, tvb, (*offset)+1,1,flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_service_class_transfer_and_management_class, tvb, (*offset)+1,1,flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_service_class_transfer_and_management_class, tvb, (*offset)+1,1,flags);
- *offset = *offset + item_len;
- asn->offset = *offset;
+static int dissect_incomplete_pathname_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname(TRUE, tvb, offset, pinfo, tree, hf_ftam_incomplete_pathname);
+}
+static int dissect_complete_pathname_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname(TRUE, tvb, offset, pinfo, tree, hf_ftam_complete_pathname);
+}
+static int dissect_success_Object_names_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname(FALSE, tvb, offset, pinfo, tree, hf_ftam_success_Object_names_item);
}
-static void
-show_functional_units(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_itm = NULL;
- proto_item *itm;
- guint16 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+
- item_len,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_itm = proto_item_add_subtree(itm, ett_ftam_itm);
- *offset = asn->offset;
- flags = tvb_get_ntohs(tvb, (*offset)+1);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_read, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_write, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_file_access, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_limited_file_management, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_enhanced_file_management, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_grouping, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_fadu_locking, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_recovery, tvb, (*offset)+1,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_functional_unit_restart_data_transfer, tvb, (*offset)+1,2, flags);
- *offset = *offset + item_len;
- asn->offset = *offset;
+
+static const value_string ftam_Pathname_Attribute_vals[] = {
+ { 0, "incomplete-pathname" },
+ { 1, "complete-pathname" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Pathname_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_incomplete_pathname_impl },
+ { 1, BER_CLASS_APP, 23, BER_FLAGS_IMPLTAG, dissect_complete_pathname_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Pathname_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Pathname_Attribute_choice, hf_index, ett_ftam_Pathname_Attribute);
+
+ return offset;
}
-static void
-show_nbs9_parameters(ASN1_SCK *asn,proto_tree *ftam_tree_itm,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- guint16 flags;
- gint length;
- guint8 flag;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree_itm, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- *offset = asn->offset;
- flags = tvb_get_ntohs(tvb, (*offset)+3);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_filename, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_permitted_actions, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_contents_type, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_storage_account, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_date_and_time_of_creation, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_date_and_time_of_last_modification, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_date_and_time_of_read_access, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_date_and_time_of_attribute_modification, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_identity_of_creator, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_identity_of_last_reader, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_identity_of_last_attribute_modifier, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_file_availability, tvb, (*offset)+1,3, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_filesize, tvb, (*offset)+1,3, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_future_filesize, tvb, (*offset)+3,2, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_access_control, tvb, (*offset)+3,2, flags);
- flag = tvb_get_guint8(tvb, (*offset)+5 );
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_legal_qualifications, tvb, (*offset)+5,1, flags);
- proto_tree_add_boolean(ftam_tree_itm,hf_nbs9_read_private_use, tvb, (*offset)+5,1, flag);
- *offset = *offset + item_len;
- asn->offset = *offset;
+static int dissect_pathname(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_pathname);
}
-static void
-show_protocol_version(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_itm = NULL;
- proto_item *itm;
- guint16 flags;
- gint length;
-/* do we have enough bytes to dissect this item ? */
- if( ( length = tvb_reported_length_remaining(tvb, *offset)) <
- (asn->offset -*offset)+ item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
-
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+
- item_len,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_itm = proto_item_add_subtree(itm, ett_ftam_itm);
- *offset = asn->offset;
- flags = tvb_get_ntohs(tvb, *offset);
- proto_tree_add_boolean(ftam_tree_itm,hf_protocol_version, tvb, *offset,
- 2, flags);
- *offset = *offset + item_len;
- asn->offset = *offset;
+static int dissect_linked_Object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_linked_Object);
}
-static void
-print_oid_value(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- guint ret;
- subid_t *oid;
- guint len;
- gchar *display_string;
- guint length;
- guint start=*offset;
-
- ret = asn1_oid_value_decode (asn, item_len, &oid, &len);
- if (ret != ASN1_ERR_NOERROR)
- {
- return ;
- }
- length = asn->offset - start;
- display_string = format_oid(oid, len);
- proto_tree_add_text(ftam_tree, tvb, *offset,length,"Value:%s",
- display_string);
- g_free(display_string);
- (*offset)=start+item_len;
- asn->offset = (*offset);
+static int dissect_primaty_pathname(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_primaty_pathname);
+}
+static int dissect_target_object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_target_object);
+}
+static int dissect_target_Object(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_target_Object);
+}
+static int dissect_root_directory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_root_directory);
}
-static void
-contents_type_list_data(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- proto_tree *ftam_tree_ms = NULL;
- guint length;
- guint type;
- proto_item *ms;
- guint new_item_len;
- guint start = *offset;
- guint header_len;
- int old_offset;
- /* print seq */
- while ( item_len > 0 && tvb_reported_length_remaining(tvb, *offset) > 0 )
- {
- old_offset = *offset ;
- /* get item type */
- type = tvb_get_guint8(tvb, *offset);
- /* skip type */
- (*offset)++;
- asn->offset = *offset;
- /* get length */
- if (read_length(asn, ftam_tree, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) <
- new_item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- header_len = asn->offset - (*offset) +1;
- ms = proto_tree_add_text(ftam_tree, tvb, *offset-1,
- new_item_len+(asn->offset-*offset)+1,
- val_to_str(type, contents_type_list_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
- *offset = asn->offset;
- switch(type)
- {
- case FTAM_ABSTRACT_SYNTAX_NAME:
- case FTAM_DOCUMENT_TYPE:
- print_oid_value(asn,ftam_tree_ms,tvb,offset,new_item_len);
- break;
- default:
- proto_tree_add_text(ftam_tree, tvb, *offset,
- new_item_len+(asn->offset-*offset),
- "Unknown asn.1 parameter: (0x%02x)", type);
- }
- *offset = old_offset+new_item_len+header_len;
- item_len-=new_item_len+header_len;
- }
- /* align the pointer */
- (*offset)=start+item_len;
- asn->offset = (*offset);
+static const ber_sequence_t Select_Attributes_sequence[] = {
+ { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Select_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Select_Attributes_sequence, hf_index, ett_ftam_Select_Attributes);
+
+
+ return offset;
+}
+static int dissect_select_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Select_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_select_attributes);
}
-static void
-contents_type_list(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_pc = NULL;
- proto_item *itu;
- guint start = asn->offset;
- guint item_length = item_len;
- guint new_item_len;
- guint length;
- itu = proto_tree_add_text(ftam_tree, tvb,
- *offset,item_len+(asn->offset-*offset),
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_pc = proto_item_add_subtree(itu, ett_ftam_ms);
- switch(tag)
- {
- case FTAM_CONTENTS_TYPE_LIST:
- /* get length */
- (*offset)++;
- asn->offset = *offset;
- if (read_length(asn, ftam_tree, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < new_item_len )
- {
- proto_tree_add_text(ftam_tree_pc, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- *offset = asn->offset;
- contents_type_list_data(asn,ftam_tree_pc,tvb,offset,new_item_len);
- break;
- default:
- break;
- }
-
-
- /* align the pointer */
- (*offset)=start+item_length;
- asn->offset = (*offset);
-
-}
-
-/* if we can't dissect */
-static void
-dissect_parse_error(tvbuff_t *tvb, int offset, packet_info *pinfo,
- proto_tree *tree, const char *field_name, int ret)
-{
- char *errstr;
- errstr = asn1_err_to_str(ret);
-
- if (tree != NULL)
- {
- proto_tree_add_text(tree, tvb, offset, 0,
- "ERROR: Couldn't parse %s: %s", field_name, errstr);
- call_dissector(data_handle,
- tvb_new_subset(tvb, offset, -1, -1), pinfo, tree);
- }
+static const asn_namedbit Access_Request_bits[] = {
+ { 0, &hf_ftam_Access_Request_read, -1, -1, "read", NULL },
+ { 1, &hf_ftam_Access_Request_insert, -1, -1, "insert", NULL },
+ { 2, &hf_ftam_Access_Request_replace, -1, -1, "replace", NULL },
+ { 3, &hf_ftam_Access_Request_extend, -1, -1, "extend", NULL },
+ { 4, &hf_ftam_Access_Request_erase, -1, -1, "erase", NULL },
+ { 5, &hf_ftam_Access_Request_read_attribute, -1, -1, "read-attribute", NULL },
+ { 6, &hf_ftam_Access_Request_change_attribute, -1, -1, "change-attribute", NULL },
+ { 7, &hf_ftam_Access_Request_delete_Object, -1, -1, "delete-Object", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_ftam_Access_Request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
+ Access_Request_bits, hf_index, ett_ftam_Access_Request,
+ NULL);
+
+ return offset;
+}
+static int dissect_requested_access(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Request(FALSE, tvb, offset, pinfo, tree, hf_ftam_requested_access);
+}
+static int dissect_action_list_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Request(TRUE, tvb, offset, pinfo, tree, hf_ftam_action_list);
}
-/* display request top sequence */
-static void
-show_access_context(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- gint length;
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Sequence error %u", ret);
-
- return;
- }
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /* align to value */
- *offset = asn->offset;
-
- proto_tree_add_text(ftam_tree, tvb,*offset,len1,
- val_to_str(tvb_get_guint8(tvb,*offset), access_context_vals,"Unknown item (0x%02x)"));
-
-
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
-
-}
-
-/* display attribute identity */
-static void
-show_attribute_identity(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- gint length;
- int offset_save = *offset;
- proto_item *itm;
- proto_tree *ftam_tree_ms = NULL;
-
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Sequence error %u", ret);
- return;
- }
- itm = proto_tree_add_text(ftam_tree, tvb,*offset,len1,
- val_to_str(tag, identity_vals,"Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(itm, ett_ftam_ms);
-
- switch(tag)
- {
- case FTAM_USER_IDENTITY:
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /* align to value */
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb,*offset,len1,
- "String");
- break;
- default:;
- }
-
-
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
-
-}
-
-/* display attribute date */
-static void
-show_attribute_data_and_time(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- gint length;
- int offset_save = *offset;
- proto_item *itm;
- proto_tree *ftam_tree_ms = NULL;
-
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- return;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Sequence error %u", ret);
- return;
- }
- itm = proto_tree_add_text(ftam_tree, tvb,*offset,len1,
- val_to_str(tag, date_and_time_vals,"Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(itm, ett_ftam_ms);
-
- switch(tag)
- {
- case FTAM_DATE_AND_TIME_ACTUAL_VALUE:
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /* align to value */
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb,*offset,len1,
- "Generalized Time");
- break;
- default:;
- }
-
-
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
-
-}
-
-
-
-/* display read attribute structure */
-static void
-show_read_attributes(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gboolean def;
- proto_item *itm;
- gint length;
- gint new_item_len;
- proto_tree *ftam_tree_ms = NULL;
-
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- itm = proto_tree_add_text(ftam_tree, tvb, (*offset),(asn->offset-*offset)+ len1,
- val_to_str(tag, read_attributes_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(itm, ett_ftam_ms);
-
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_CREATE_FILENAME_ATTRIBUTES:
- /* get length */
- (*offset)++;
- asn->offset = *offset;
- if (read_length(asn, ftam_tree, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- return ;
- }
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < new_item_len )
- {
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
-
- return ;
- }
- *offset = asn->offset;
- show_graphic_string_nameless(asn,ftam_tree_ms,tvb,offset,new_item_len);
- break;
- case FTAM_CREATE_PERMITTED_ACTIONS_ATTRIBUTE:
- *offset = asn->offset;
- show_create_permitted_actions_attribute(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- case FTAM_READ_ATTRIBUTE_IDENTITY_OF_CREATOR:
- case FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_MODIFIER:
- case FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_READER:
- case FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER:
- *offset = asn->offset;
- show_attribute_identity(asn,ftam_tree_ms,tvb,offset,len1);
- break;
-
- case FTAM_CREATE_CONTENTS_TYPE:
- *offset = asn->offset;
- show_contents_type_proposed(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- case FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_CREATION:
- case FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_MODIFICATION:
- case FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_READ_ACCESS:
- case FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION:
- *offset = asn->offset;
- show_attribute_data_and_time(asn,ftam_tree_ms,tvb,offset,len1);
- break;
-
-
- default:
- if (match_strval(tag, read_attributes_vals) == NULL)
- {
- proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const ber_sequence_t Pass_Passwords_sequence_of[1] = {
+ { BER_CLASS_APP, 17, BER_FLAGS_NOOWNTAG, dissect_Pass_Passwords_item },
+};
+
+static int
+dissect_ftam_Pass_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ Pass_Passwords_sequence_of, hf_index, ett_ftam_Pass_Passwords);
+
+ return offset;
+}
+static int dissect_pass_passwords_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pass_Passwords(TRUE, tvb, offset, pinfo, tree, hf_ftam_pass_passwords);
}
-/* display nbs9 structure */
-static void
-show_nbs9(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gboolean def;
- gint length;
- proto_item *itm;
- proto_tree *ftam_tree_ms = NULL;
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
-
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
-
- itm = proto_tree_add_text(ftam_tree, tvb, (*offset),(asn->offset-*offset)+ len1,
- val_to_str(tag, read_attribute_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(itm, ett_ftam_ms);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_READ_ATTRIBUTES:
- *offset = asn->offset;
- show_read_attributes(asn,ftam_tree_ms,tvb,pinfo,offset,len1);
- break;
- default:
- proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const ber_sequence_t Access_Passwords_sequence[] = {
+ { BER_CLASS_CON, 0, 0, dissect_read_password },
+ { BER_CLASS_CON, 1, 0, dissect_insert_password },
+ { BER_CLASS_CON, 2, 0, dissect_replace_password },
+ { BER_CLASS_CON, 3, 0, dissect_extend_password },
+ { BER_CLASS_CON, 4, 0, dissect_erase_password },
+ { BER_CLASS_CON, 5, 0, dissect_read_attribute_password },
+ { BER_CLASS_CON, 6, 0, dissect_change_attribute_password },
+ { BER_CLASS_CON, 7, 0, dissect_delete_password },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pass_passwords_impl },
+ { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_link_password },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Access_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Access_Passwords_sequence, hf_index, ett_ftam_Access_Passwords);
+
+
+ return offset;
+}
+static int dissect_access_passwords(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Passwords(FALSE, tvb, offset, pinfo, tree, hf_ftam_access_passwords);
+}
+static int dissect_passwords_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Passwords(TRUE, tvb, offset, pinfo, tree, hf_ftam_passwords);
}
-/* display request top sequence */
-static void
-show_request_sequence_top(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_IMPLEMENTATION_INFORMATION:
- case FTAM_INITIATOR_IDENTIFY:
- show_graphic_string(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_FILESTORE_PASSWORD:
- show_file_store_password(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_FUNCTIONAL_UNITS:
- show_functional_units(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_ATTRIBUTE_GROUPS:
- show_attribute_groups(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_SERVICE_CLASS:
- show_service_classes(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_ACCOUNT:
- if( con == ASN1_CON)
- {
- /* it is FTAM_ACCOUNT */
- show_graphic_string(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- }
- /* no,it is FTAM_CHECKPOINT_WINDOW, go below */
- tag = FTAM_CHECKPOINT_WINDOW;
-
-
- case FTAM_PRESENTATION_CONTEXT_MANAGEMENT:
- case FTAM_QUALITY_OF_SERVICE:
- {
- proto_tree *ftam_tree_pr = NULL;
- proto_item *pr;
- guint ret;
- guint value;
- pr = proto_tree_add_text(ftam_tree,tvb,*offset,
- len1+(asn->offset-*offset),
- val_to_str(tag ,request_sequence_top_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_pr = proto_item_add_subtree(pr, ett_ftam_ms);
- ret = read_integer_value(asn,ftam_tree_pr, 0, NULL, &value, asn->offset, len1);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- itm = proto_tree_add_text(ftam_tree_pr, tvb, (*offset)-len1,
- len1,
- "Integer value: %u",value);
- }
- }
- break;
- case FTAM_CONTENTS_TYPE_LIST:
- contents_type_list(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_PROTOCOL_VERSION:
- show_protocol_version(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_SHARED_ASE_INFORMATION:
- proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+len1,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- break;
- default:
- proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const ber_sequence_t Path_Access_Passwords_item_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_password_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_password_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_replace_password_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_extend_password_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_erase_password_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_read_attribute_password_impl },
+ { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_change_attribute_password_impl },
+ { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_delete_password_impl },
+ { BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_pass_passwords_impl },
+ { BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_link_password_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Path_Access_Passwords_item_sequence, hf_index, ett_ftam_Path_Access_Passwords_item);
+
+ return offset;
}
-static void
-show_error_identifier(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len)
-{
- guint ret;
- guint value;
- ret = read_integer_value(asn,ftam_tree, 0, NULL, &value, asn->offset, item_len);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree, tvb, (*offset)-item_len,
- item_len,
- "Integer value: (%u) %s",value,
- val_to_str(value, ftam_error_messages, "Unknown ftam error code (%d)"));
- }
+static int dissect_Path_Access_Passwords_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Path_Access_Passwords_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Path_Access_Passwords_item);
}
-static void
-show_diagnostic_type(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len)
-{
- guint ret;
- guint value;
- ret = read_integer_value(asn,ftam_tree, 0, NULL, &value, asn->offset, item_len);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree, tvb, (*offset)-item_len, item_len,
- val_to_str(value, diagnostic_type_vals,
- "Unknown item (0x%02x)"));
- }
+static const ber_sequence_t Path_Access_Passwords_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Path_Access_Passwords_item },
+};
+
+static int
+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_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
+ Path_Access_Passwords_sequence_of, hf_index, ett_ftam_Path_Access_Passwords);
+
+
+ return offset;
+}
+static int dissect_path_access_passwords(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Path_Access_Passwords(FALSE, tvb, offset, pinfo, tree, hf_ftam_path_access_passwords);
}
-static void
-show_entity_reference(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len)
-{
- guint ret;
- guint value;
- ret = read_integer_value(asn,ftam_tree, 0, NULL, &value, asn->offset, item_len);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree, tvb, (*offset)-item_len, item_len,
- val_to_str(value, entity_reference_vals,
- "Unknown item (0x%02x)"));
- }
+
+static const value_string ftam_Lock_vals[] = {
+ { 0, "not-required" },
+ { 1, "shared" },
+ { 2, "exclusive" },
+ { 3, "no-access" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_Lock(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_read_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_lock);
+}
+static int dissect_insert_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_lock);
+}
+static int dissect_replace_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_replace_lock);
+}
+static int dissect_extend_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_extend_lock);
+}
+static int dissect_erase_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_erase_lock);
+}
+static int dissect_read_attribute_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_lock);
+}
+static int dissect_change_attribute_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_lock);
+}
+static int dissect_delete_Object_lock_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_Object_lock);
}
-static void
-show_response_state(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len)
-{
- guint ret;
- guint value;
- ret = read_integer_value(asn,ftam_tree, 0, NULL, &value, asn->offset, item_len);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree, tvb, (*offset)-item_len, item_len,
- val_to_str(value, response_state_vals,
- "Unknown item (0x%02x)"));
- }
+static const ber_sequence_t Concurrency_Control_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_lock_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_lock_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_replace_lock_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_extend_lock_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_erase_lock_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_read_attribute_lock_impl },
+ { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_change_attribute_lock_impl },
+ { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_delete_Object_lock_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Concurrency_Control(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Concurrency_Control_sequence, hf_index, ett_ftam_Concurrency_Control);
+
+
+
+ return offset;
+}
+static int dissect_concurrency_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Control(FALSE, tvb, offset, pinfo, tree, hf_ftam_concurrency_control);
}
-static void
-show_response_action_result(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len)
-{
- guint ret;
- guint value;
- ret = read_integer_value(asn,ftam_tree, 0, NULL, &value, asn->offset, item_len);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree, tvb, (*offset)-item_len, item_len,
- val_to_str(value, response_action_result_vals,
- "Unknown item (0x%02x)"));
- }
+static const ber_sequence_t F_SELECT_request_sequence[] = {
+ { BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_select_attributes },
+ { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_SELECT_request_sequence, hf_index, ett_ftam_F_SELECT_request);
+
+ return offset;
+}
+static int dissect_f_select_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_SELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_request);
}
-static void
-show_diagnostic_seq(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len)
-{
- proto_tree *ftam_tree_ms = NULL;
- guint length;
- guint type;
- proto_item *ms;
- guint new_item_len;
- guint start = *offset;
- guint header_len;
- int old_offset;
-
- /* print seq */
- while ( item_len > 0 && tvb_reported_length_remaining(tvb, *offset) > 0 )
- {
- old_offset = *offset ;
- /* get item type */
- type = tvb_get_guint8(tvb, *offset);
- /* skip type */
- (*offset)++;
- asn->offset = *offset;
- /* get length */
- if (read_length(asn, ftam_tree, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
-
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < new_item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- header_len = asn->offset - (*offset) +1;
- ms = proto_tree_add_text(ftam_tree, tvb, *offset-1, new_item_len+(asn->offset-*offset)+1,
- val_to_str(type, diagnostic_sequence_list_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
- *offset = asn->offset = (*offset)+1;
-
-
- switch(type)
- {
- case FTAM_FURTHER_DETAILS:
- (*offset)-=2;
- show_graphic_string_nameless(asn,ftam_tree_ms,tvb,offset,new_item_len);
- break;
- case FTAM_ERROR_IDENTIFIER:
- show_error_identifier(asn,ftam_tree_ms,tvb,offset,new_item_len);
- break;
- case FTAM_DIAGNOSTIC_TYPE:
- show_diagnostic_type(asn,ftam_tree_ms,tvb,offset,new_item_len);
- break;
- case FTAM_ERROR_OBSERVER:
- case FTAM_ERROR_SOURCE:
- show_entity_reference(asn,ftam_tree_ms,tvb,offset,new_item_len);
- break;
- case FTAM_SUGGESTED_DELAY:
- *offset = old_offset+new_item_len+header_len;
- item_len-=new_item_len+header_len;
- break;
- default:
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, new_item_len+(asn->offset-*offset),
- "Unknown asn.1 parameter: (0x%02x)", type);
- }
- *offset = old_offset+new_item_len+header_len;
- item_len-=new_item_len+header_len;
- }
- /* align the pointer */
- (*offset)=start+item_len;
- asn->offset = (*offset);
-}
-
-
-/* display diagnostic in the f-initiate response */
-static void
-show_diagnostic(ASN1_SCK *asn,proto_tree
-*ftam_tree,tvbuff_t *tvb,int *offset,int item_len,int tag)
-{
- proto_tree *ftam_tree_ms = NULL;
- proto_tree *ftam_tree_pc = NULL;
- proto_item *itm;
- gint length;
- guint type;
- guint header_len;
- proto_item *ms;
- gint new_item_len;
- guint start = asn->offset;
- guint item_length = item_len;
-
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,item_len+(asn->offset-*offset),
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- ftam_tree_pc = proto_item_add_subtree(itm, ett_ftam_ms);
-
-/* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree_pc, tvb, *offset, item_len,
- "Wrong item.Need %u bytes but have %u", item_len,length);
- /* align the pointer */
- (*offset)=start+item_length;
- asn->offset = (*offset);
- return ;
- }
- *offset =asn->offset;
- start = *offset;
- /* read the rest */
- while ( item_len > 0 && tvb_reported_length_remaining(tvb, *offset) > 0 )
- {
- int old_offset = *offset;
- /* get item type */
- type = tvb_get_guint8(tvb, *offset);
- /* skip type */
- (*offset)++;
- asn->offset = *offset;
- /* get length */
- if (read_length(asn, ftam_tree_pc, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- /* align the pointer */
- (*offset)=start+item_length;
- asn->offset = (*offset);
- return ;
- }
- header_len = asn->offset - (*offset) +1;
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < new_item_len )
- {
- proto_tree_add_text(ftam_tree_pc, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- /* align the pointer */
- (*offset)=start+item_length;
- asn->offset = (*offset);
- return ;
- }
- ms = proto_tree_add_text(ftam_tree_pc, tvb, *offset-1, new_item_len+(asn->offset-*offset)+1,
- val_to_str(type, diag_definition_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
- *offset = asn->offset;
-
-
- switch(type)
- {
-
- case SEQUENCE:
- show_diagnostic_seq(asn,ftam_tree_ms,tvb,offset,new_item_len);
-
- *offset = old_offset+(new_item_len+header_len);
- break;
-
- default:
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, new_item_len+(asn->offset-*offset),
- "Unknown asn.1 parameter: (0x%02x)", type);
- *offset = old_offset+(new_item_len+header_len);
- }
- item_len = item_len - (new_item_len+header_len);
-
- }
-
-
- /* align the pointer */
- (*offset)=start+item_length;
- asn->offset = (*offset);
-}
-
-/* display response top sequence */
-static void
-show_response_sequence_top(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_IMPLEMENTATION_INFORMATION:
- if( con == ASN1_CON)
- {
- /* it is FTAM_CONTETS_TYPE */
- *offset = asn->offset;
- show_contents_type_proposed(asn,ftam_tree,tvb,offset,len1);
- break;
- }
- /* no, it is implementation information.Just go below */
-
- case FTAM_INITIATOR_IDENTIFY:
- show_graphic_string(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_FILESTORE_PASSWORD:
- show_file_store_password(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_FUNCTIONAL_UNITS:
- show_functional_units(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_CHARGING:
- proto_tree_add_text(ftam_tree,tvb,*offset,
- len1+(asn->offset-*offset),
- val_to_str(tag ,request_sequence_top_vals,
- "Unknown item (0x%02x)"));
- break;
-
- case FTAM_ATTRIBUTE_GROUPS:
- if( cls == ASN1_APL)
- {
- /* it is FTAM_RESPONSE_ACTION_RESULT */
- proto_tree *ftam_tree_pr = NULL;
- proto_item *pr;
- pr = proto_tree_add_text(ftam_tree,tvb,*offset,
- len1+(asn->offset-*offset),
- val_to_str(FTAM_RESPONSE_ACTION_RESULT ,request_sequence_top_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_pr = proto_item_add_subtree(pr, ett_ftam_ms);
- show_response_action_result(asn,ftam_tree_pr,tvb,offset,len1);
- }
- else
- {
- show_attribute_groups(asn,ftam_tree,tvb,offset,len1,tag);
- }
- break;
- case FTAM_SERVICE_CLASS:
- show_service_classes(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_CREATE_ATTRIBUTES:
- *offset = asn->offset;
- show_select_create_attributes(asn,ftam_tree,tvb,offset,len1);
- break;
-
- case FTAM_RESPONSE_STATE_RESULT:
- {
- proto_tree *ftam_tree_pr = NULL;
- proto_item *pr;
- pr = proto_tree_add_text(ftam_tree,tvb,*offset,
- len1+(asn->offset-*offset),
- val_to_str(tag ,request_sequence_top_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_pr = proto_item_add_subtree(pr, ett_ftam_ms);
- show_response_state(asn,ftam_tree_pr,tvb,offset,len1);
- }
- break;
- case FTAM_ACCOUNT:
- if( con == ASN1_CON)
- {
- /* it is FTAM_ACCOUNT */
- show_graphic_string(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- }
- /* no,it is FTAM_CHECKPOINT_WINDOW, go below */
- tag = FTAM_CHECKPOINT_WINDOW;
- case FTAM_PRESENTATION_CONTEXT_MANAGEMENT:
- case FTAM_QUALITY_OF_SERVICE:
- {
- proto_tree *ftam_tree_pr = NULL;
- proto_item *pr;
- guint ret;
- guint value;
- pr = proto_tree_add_text(ftam_tree,tvb,*offset,
- len1+(asn->offset-*offset),
- val_to_str(tag ,request_sequence_top_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_pr = proto_item_add_subtree(pr, ett_ftam_ms);
- ret = read_integer_value(asn,ftam_tree_pr, 0, NULL, &value, asn->offset, len1);
- if (ret == ASN1_ERR_NOERROR )
- {
- *offset = asn->offset;
- itm = proto_tree_add_text(ftam_tree_pr, tvb, (*offset)-len1,
- len1,
- "Integer value: %u",value);
- }
- }
- break;
- case FTAM_CONTENTS_TYPE_LIST:
- contents_type_list(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_PROTOCOL_VERSION:
- show_protocol_version(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_SHARED_ASE_INFORMATION:
- proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset -*offset)+len1,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- break;
- case FTAM_RESPONSE_DIAGNOSTIC:
- show_diagnostic(asn,ftam_tree,tvb,offset,len1,tag);
- break;
- case FTAM_SELECT_ATTRIBUTES:
- *offset = asn->offset;
- show_select_create_attributes(asn,ftam_tree,tvb,offset,len1);
- break;
-
- default:
- itm = proto_tree_add_text(ftam_tree, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+
+static int
+dissect_ftam_Referent_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_boolean(TRUE, pinfo, tree, tvb, offset, hf_index);
+
+
+ return offset;
+}
+static int dissect_referent_indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Referent_Indicator(FALSE, tvb, offset, pinfo, tree, hf_ftam_referent_indicator);
}
-static void
-show_select_create_attributes(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t *tvb,int
-*offset,int item_len)
-{
- proto_tree *ftam_tree_pc = NULL;
- proto_item *itu;
- guint start = asn->offset;
- int new_item_len;
- int length;
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "sequence error %u", ret);
- break;
- }
- type = type & 0x1f;
-
- itu = proto_tree_add_text(ftam_tree, tvb,*offset,len1+(asn->offset-*offset),
- val_to_str(type, select_attribute_vals,"Unknown item (0x%02x)"));
- ftam_tree_pc = proto_item_add_subtree(itu, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- switch(type)
- {
- case FTAM_CREATE_FILENAME_ATTRIBUTES:
- /* get length */
- (*offset)++;
- asn->offset = *offset;
- if (read_length(asn, ftam_tree, 0, &new_item_len) != ASN1_ERR_NOERROR)
- {
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < new_item_len )
- {
- proto_tree_add_text(ftam_tree_pc, tvb, *offset, new_item_len,
- "Wrong item.Need %u bytes but have %u", new_item_len,length);
- (*offset)=start+item_len;
- asn->offset = (*offset);
- return ;
- }
- *offset = asn->offset;
- show_graphic_string_nameless(asn,ftam_tree_pc,tvb,offset,new_item_len);
- break;
- case FTAM_CREATE_PERMITTED_ACTIONS_ATTRIBUTE:
- *offset = asn->offset;
- show_create_permitted_actions_attribute(asn,ftam_tree_pc,tvb,offset,len1);
- break;
-
- case FTAM_CREATE_CONTENTS_TYPE:
- *offset = asn->offset;
- show_contents_type_proposed(asn,ftam_tree_pc,tvb,offset,len1);
- break;
-
- default:
- break;
- }
-
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const ber_sequence_t F_SELECT_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_select_attributes },
+ { BER_CLASS_APP, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_referent_indicator },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_SELECT_response_sequence, hf_index, ett_ftam_F_SELECT_response);
+
+ return offset;
+}
+static int dissect_f_select_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_SELECT_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_response);
}
-/* display select_request */
-static void
-show_select_request(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, select_request_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_OVERRIDE:
-
- proto_tree_add_text(ftam_tree_ms, tvb, asn->offset,len1,
- val_to_str(tvb_get_guint8(tvb, asn->offset), override_vals,"Unknown item (0x%02x)"));
- break;
- case FTAM_ACCOUNT:
- show_graphic_string(asn,ftam_tree_ms,tvb,offset,len1,tag);
- break;
- case FTAM_SELECT_ATTRIBUTES:
- case FTAM_CREATE_ATTRIBUTES:
- *offset = asn->offset;
- show_select_create_attributes(asn,ftam_tree_ms,tvb,offset,len1);
- break;
-
- case FTAM_SHARED_ASE_INFORMATION:
- proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset -*offset)+len1,
- val_to_str(tag, request_sequence_top_vals,"Unknown item (0x%02x)"));
- break;
- case FTAM_ACCESS_REQUEST:
- show_access_attributes(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- default:
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const ber_sequence_t F_DESELECT_request_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_DESELECT_request_sequence, hf_index, ett_ftam_F_DESELECT_request);
+
+ return offset;
+}
+static int dissect_f_deselect_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_DESELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_deselect_request);
}
+static const ber_sequence_t F_DESELECT_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
-/* display select_request */
-static void
-show_ftam_parameters(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &item_len);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "sequence error %u", ret);
- return;
- }
- *offset = asn->offset;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "sequence error %u", ret);
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, ftam_parameters_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_UNIVERSAL_CLASS_NUMBER:
- *offset =asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, len1,
- val_to_str(tvb_get_guint8(tvb, *offset),
- universal_class_number_vals,"Unknown item (0x%02x)"));
- break;
- case FTAM_STRING_SIGNIFICANCE:
- *offset =asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, len1,
- val_to_str(tvb_get_guint8(tvb, *offset),
- string_significance_vals,"Unknown item (0x%02x)"));
- break;
-
- default:
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_DESELECT_response_sequence, hf_index, ett_ftam_F_DESELECT_response);
+
+ return offset;
+}
+static int dissect_f_deselect_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_DESELECT_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_deselect_response);
}
+static const value_string ftam_Override_vals[] = {
+ { 0, "create-failure" },
+ { 1, "select-old-Object" },
+ { 2, "delete-and-create-with-old-attributes" },
+ { 3, "delete-and-create-with-new-attributes" },
+ { 0, NULL }
+};
-/* display contents type proposed document type*/
-static void
-show_contents_type_proposed_document_type(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
- gboolean nbs9 = FALSE;
- gint tp;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "sequence error %u", ret);
-
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, contents_type_proposed_document_type_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_NAME:
- if( (tp=tvb_get_guint8(tvb, (*offset)+2)) == NBS9_OID )
- {
- nbs9 = TRUE;
- }
- print_oid_value(asn,ftam_tree_ms,tvb,offset,len1);
- *offset = asn->offset;
- break;
- case FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_PARAMETER:
- if(nbs9)
- {
- /* it is NBS9 directory */
- *offset = asn->offset;
- show_nbs9_parameters(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- }
- else
- {
- show_ftam_parameters(asn,ftam_tree_ms,tvb,offset,len1);
- }
- default:
- if (match_strval(tag, contents_type_proposed_document_type_vals) == NULL)
- {
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+
+static int
+dissect_ftam_Override(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_override_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Override(TRUE, tvb, offset, pinfo, tree, hf_ftam_override);
}
-/* display contents type proposed */
-static void
-show_contents_type_proposed(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "sequence error %u", ret);
-
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, contents_type_proposed_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE:
- *offset = asn->offset;
- show_contents_type_proposed_document_type(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- default:
- if (match_strval(tag, contents_type_proposed_vals) == NULL)
- {
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+
+static const value_string ftam_Object_Type_Attribute_vals[] = {
+ { 0, "file" },
+ { 1, "file-directory" },
+ { 2, "reference" },
+ { 0, NULL }
+};
+
+
+static int
+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_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_object_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Type_Attribute(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_type);
}
-/* display FADU indetity type */
-static void
-show_fadu_identity_type(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, len1,
- "sequence error %u", ret);
-
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, fadu_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_FADU_FIRST_LAST:
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, len1,
- val_to_str(tvb_get_guint8(tvb, *offset), first_last_vals,"Unknown item (0x%02x)"));
- break;
- case FTAM_FADU_RELATIVE:
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, len1,
- val_to_str(tvb_get_guint8(tvb, *offset), relative_vals,"Unknown item (0x%02x)"));
- break;
- case FTAM_FADU_BEGIN_END:
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, len1,
- val_to_str(tvb_get_guint8(tvb, *offset), begin_end_vals,"Unknown item (0x%02x)"));
- break;
-
- default:
- if (match_strval(tag, contents_type_vals) == NULL)
- {
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const asn_namedbit Permitted_Actions_Attribute_bits[] = {
+ { 0, &hf_ftam_Permitted_Actions_Attribute_read, -1, -1, "read", NULL },
+ { 1, &hf_ftam_Permitted_Actions_Attribute_insert, -1, -1, "insert", NULL },
+ { 2, &hf_ftam_Permitted_Actions_Attribute_replace, -1, -1, "replace", NULL },
+ { 3, &hf_ftam_Permitted_Actions_Attribute_extend, -1, -1, "extend", NULL },
+ { 4, &hf_ftam_Permitted_Actions_Attribute_erase, -1, -1, "erase", NULL },
+ { 5, &hf_ftam_Permitted_Actions_Attribute_read_attribute, -1, -1, "read-attribute", NULL },
+ { 6, &hf_ftam_Permitted_Actions_Attribute_change_attribute, -1, -1, "change-attribute", NULL },
+ { 7, &hf_ftam_Permitted_Actions_Attribute_delete_Object, -1, -1, "delete-Object", NULL },
+ { 11, &hf_ftam_Permitted_Actions_Attribute_pass, -1, -1, "pass", NULL },
+ { 12, &hf_ftam_Permitted_Actions_Attribute_link, -1, -1, "link", NULL },
+ { 8, &hf_ftam_Permitted_Actions_Attribute_traversal, -1, -1, "traversal", NULL },
+ { 9, &hf_ftam_Permitted_Actions_Attribute_reverse_traversal, -1, -1, "reverse-traversal", NULL },
+ { 10, &hf_ftam_Permitted_Actions_Attribute_random_Order, -1, -1, "random-Order", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ Permitted_Actions_Attribute_bits, hf_index, ett_ftam_Permitted_Actions_Attribute,
+ NULL);
+
+ return offset;
+}
+static int dissect_permitted_actions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Permitted_Actions_Attribute(TRUE, tvb, offset, pinfo, tree, hf_ftam_permitted_actions);
}
+static int
+dissect_ftam_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
-/* display contents type */
-static void
-show_contents_type(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, len1,
- "sequence error %u", ret);
-
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, contents_type_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_CONTENTS_TYPE_PROPOSED:
- *offset = asn->offset;
- show_contents_type_proposed(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- default:
- if (match_strval(tag, contents_type_vals) == NULL)
- {
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+
+ return offset;
}
-/* display read and write request */
-static void
-show_read_write_request(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, read_write_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_FILE_ACCESS_DATA_UNIT_OPERATION:
- *offset = asn->offset;
- proto_tree_add_text(ftam_tree_ms, tvb, *offset, len1,
- val_to_str(tvb_get_guint8(tvb, *offset), access_data_unit_operation_vals,
- "Unknown item (0x%02x)"));
-
- break;
- case FTAM_FILE_ACCESS_DATA_UNIT_IDENTITY:
- *offset = asn->offset;
- show_fadu_identity_type(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- case FTAM_FILE_ACCESS_CONTEXT:
- *offset = asn->offset;
- show_access_context(asn,ftam_tree_ms,tvb,offset,len1);
- break;
-
- default:
- if (match_strval(tag, ftam_pdu_vals) == NULL)
- {
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static int dissect_parameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_parameter(FALSE, tvb, offset, pinfo, tree, hf_ftam_parameter);
}
-/* display open_request */
-static void
-show_open_request(ASN1_SCK *asn,proto_tree *ftam_tree,tvbuff_t
-*tvb,packet_info *pinfo,int *offset,int item_len)
-{
- int ret;
- guint cls, con, tag,len1;
- gint type;
- gboolean def;
- proto_item *itm;
- gint length;
- proto_tree *ftam_tree_ms = NULL;
- proto_item *ms;
-
- while(item_len > 0 )
- {
- int offset_save = *offset;
-/* do we have enough bytes to dissect this item ? */
- if( ( length =tvb_reported_length_remaining(tvb, *offset)) < item_len )
- {
- proto_tree_add_text(ftam_tree, tvb, *offset, item_len,
- "Wrong Item.Need %u bytes but have %u", item_len,length);
- break;
- }
- /* get tag */
- type = tvb_get_guint8(tvb, *offset);
- /* decode header */
- ret = asn1_header_decode(asn, &cls, &con, &tag, &def, &len1);
-
- if (ret != ASN1_ERR_NOERROR)
- {
- dissect_parse_error(tvb, *offset, pinfo, ftam_tree,
- "sequence error", ret);
- break;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, *offset, len1+(asn->offset-*offset),
- val_to_str(tag, open_request_vals,
- "Unknown item (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* add header */
- item_len = item_len - (asn->offset - *offset);
- offset_save += (asn->offset - *offset);
- /*
- * [APPLICATION <tag>]
- */
- switch (tag)
- {
- case FTAM_PROCESSING_MODE:
- show_processing_mode(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- case FTAM_CONTENTS_TYPE:
- *offset = asn->offset;
- show_contents_type(asn,ftam_tree_ms,tvb,offset,len1);
- break;
- case FTAM_SHARED_ASE_INFORMATION:
-
- break;
- default:
- if (match_strval(tag, ftam_pdu_vals) == NULL)
- {
- itm = proto_tree_add_text(ftam_tree_ms, tvb, *offset,(asn->offset-*offset)+ len1,
- "Unknown tag: %x",tag);
- }
- }
- item_len-=len1;
- *offset = asn->offset = offset_save+len1;
- }
+static const ber_sequence_t T_document_type_sequence[] = {
+ { BER_CLASS_APP, 14, BER_FLAGS_NOOWNTAG, dissect_document_type_name },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_parameter },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_document_type_sequence, hf_index, ett_ftam_T_document_type);
+
+ return offset;
+}
+static int dissect_document_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_document_type(TRUE, tvb, offset, pinfo, tree, hf_ftam_document_type);
}
-/*
-* Dissect a pdu.
-*/
+
+
static int
-dissect_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
- *tree)
-{
- proto_item *ti;
- proto_tree *ftam_tree = NULL;
- guint length;
- guint rest_len;
- guint s_type;
- ASN1_SCK asn;
- guint cp_type_len;
-/* get type of tag */
- s_type = tvb_get_guint8(tvb, offset);
- /* is it data bulk pdu ? */
- if (tree)
- {
- ti = proto_tree_add_item(tree, proto_ftam, tvb, offset, -1,
- FALSE);
- ftam_tree = proto_item_add_subtree(ti, ett_ftam);
- }
+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_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
- if(s_type == DATA_BULK_PDU )
- {
- if(tree)
- {
- proto_tree_add_text(ftam_tree, tvb, offset, 1,
- "Bulk data Pdu");
- }
- /* skip additional data type byte */
- offset++;
- /* get type of tag */
- s_type = tvb_get_guint8(tvb, offset); /*set application bite */
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
- }
- offset++;
-/* open asn.1 stream */
- asn1_open(&asn, tvb, offset);
-
- /* is it data PDU ? */
- if( session->abort_type == DATA_BLOCK && (match_strval(s_type, ftam_data_vals)) )
- {
- proto_item *ms;
- proto_tree *ftam_tree_ms = NULL;
- int save_offset;
- /* set up type of pdu */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo, COL_INFO,"FTAM data PDU");
-
- /* get length */
- if (read_length(&asn, ftam_tree_ms, 0, &rest_len) != ASN1_ERR_NOERROR)
- {
- return FALSE;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, offset-1, rest_len+(asn.offset-offset)+1,
- val_to_str(s_type, ftam_data_vals, "Unknown pdu type (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
-
- /* skip length */
- offset = asn.offset;
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, offset)) < rest_len
- )
- {
- if(tree)
- {
- proto_tree_add_text(ftam_tree, tvb, offset, -1,
- "Wrong pdu.Need %u bytes but have %u", rest_len,length);
- }
- return FALSE;
- }
- save_offset = asn.offset;
-
- switch(s_type)
- {
- case FTAM_DATATYPE_NBS9:
- show_nbs9(&asn,ftam_tree_ms,tvb,pinfo,&offset,rest_len);
- break;
- case FTAM_PRINTABLE_LENGTH:
- case FTAM_GRAPHIC_STRING:
- case FTAM_TELEX_STRING:
- case FTAM_IA5_STRING:
- case FTAM_VISIBLE_STRING:
- case FTAM_GENERAL_STRING:
- case FTAM_OCTET_STRING:
- case FTAM_PRINTABLE_STRING:
- break;
- default:
- {
- if(tree)
- {
- ms = proto_tree_add_text(ftam_tree, tvb, offset, rest_len+(asn.offset-offset),
- "Unknown data pdu type (0x%02x)",s_type);
- }
- }
+ offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
- }
- offset =rest_len+save_offset;
- asn.offset=offset;
- /* close asn.1 stream */
- asn1_close(&asn, &offset);
- return offset ;
- }
- /* no, it is not data PDU */
- /* set up type of pdu */
- if (check_col(pinfo->cinfo, COL_INFO))
- col_add_str(pinfo->cinfo, COL_INFO,
- val_to_str(s_type, ftam_pdu_vals, "Unknown pdu type (0x%02x)"));
-
- switch(s_type)
- {
- case FTAM_F_INITIALIZE_REQUEST:
- case FTAM_F_INITIALIZE_RESPONSE:
- case FTAM_F_TERMINATE_REQUEST:
- case FTAM_F_TERMINATE_RESPONSE:
- case FTAM_F_U_ABORT_REQUEST:
- case FTAM_F_P_ABORT_REQUEST:
- case FTAM_F_DESELECT_RESPONSE:
- case FTAM_F_DELETE_RESPONSE:
- case FTAM_F_CLOSE_RESPONSE:
- case FTAM_F_ERASE_RESPONSE:
- case FTAM_F_TRANSFER_END_REQUEST:
- case FTAM_F_CANCEL_REQUEST:
- case FTAM_F_CANCEL_RESPONSE:
- case FTAM_F_CREATE_RESPONSE:
- case FTAM_F_OPEN_RESPONSE:
- case FTAM_F_SELECT_RESPONSE:
-
- proto_tree_add_uint(ftam_tree, hf_ftam_type, tvb, offset-1, 1, s_type);
- if (read_length(&asn, ftam_tree, hf_cp_type_message_length, &cp_type_len)
- != ASN1_ERR_NOERROR)
- {
- return FALSE;
- }
- /* skip length */
- offset = asn.offset;
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, offset)) < cp_type_len
- )
- {
- if(tree)
- {
- proto_tree_add_text(ftam_tree, tvb, offset, -1,
- "Wrong pdu.Need %u bytes but have %u", cp_type_len,length);
- }
- return FALSE;
- }
- {
- if(s_type == FTAM_F_INITIALIZE_REQUEST)
- {
- show_request_sequence_top(&asn,ftam_tree,tvb,pinfo,&offset,cp_type_len);
- }
- else
- {
- show_response_sequence_top(&asn,ftam_tree,tvb,pinfo,&offset,cp_type_len);
- }
-
- }
- break;
- case FTAM_F_SELECT_REQUEST:
- case FTAM_F_CREATE_REQUEST:
- proto_tree_add_uint(ftam_tree, hf_ftam_type, tvb, offset-1, 1, s_type);
- if (read_length(&asn, ftam_tree, hf_cp_type_message_length, &cp_type_len)
- != ASN1_ERR_NOERROR)
- {
- return FALSE;
- }
- /* skip length */
- offset = asn.offset;
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, offset)) < cp_type_len
- )
- {
- if(tree)
- {
- proto_tree_add_text(ftam_tree, tvb, offset, -1,
- "Wrong pdu.Need %u bytes but have %u", cp_type_len,length);
- }
- return FALSE;
- }
- {
- show_select_request(&asn,ftam_tree,tvb,pinfo,&offset,cp_type_len);
- }
- break;
- case FTAM_F_OPEN_REQUEST:
- proto_tree_add_uint(ftam_tree, hf_ftam_type, tvb, offset-1, 1, s_type);
- if (read_length(&asn, ftam_tree, hf_cp_type_message_length, &cp_type_len)
- != ASN1_ERR_NOERROR)
- {
- return FALSE;
- }
- /* skip length */
- offset = asn.offset;
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, offset)) < cp_type_len
- )
- {
- if(tree)
- {
- proto_tree_add_text(ftam_tree, tvb, offset, -1,
- "Wrong pdu.Need %u bytes but have %u", cp_type_len,length);
- }
- return FALSE;
- }
- {
- show_open_request(&asn,ftam_tree,tvb,pinfo,&offset,cp_type_len);
- }
- break;
- case FTAM_F_READ_REQUEST:
- case FTAM_F_WRITE_REQUEST:
- proto_tree_add_uint(ftam_tree, hf_ftam_type, tvb, offset-1, 1, s_type);
- if (read_length(&asn, ftam_tree, hf_cp_type_message_length, &cp_type_len)
- != ASN1_ERR_NOERROR)
- {
- return FALSE;
- }
- /* skip length */
- offset = asn.offset;
- /* do we have enough bytes to dissect ? */
- if( ( length =tvb_reported_length_remaining(tvb, offset)) < cp_type_len
- )
- {
- if(tree)
- {
- proto_tree_add_text(ftam_tree, tvb, offset, -1,
- "Wrong pdu.Need %u bytes but have %u", cp_type_len,length);
- }
- return FALSE;
- }
- {
- show_read_write_request(&asn,ftam_tree,tvb,pinfo,&offset,cp_type_len);
- }
- break;
-
- default:
- {
- proto_item *ms;
- proto_tree *ftam_tree_ms = NULL;
- /* back to type */
- offset--;
- /* get length */
- if (read_length(&asn, ftam_tree, 0, &rest_len) != ASN1_ERR_NOERROR)
- {
- return FALSE;
- }
- ms = proto_tree_add_text(ftam_tree, tvb, offset, rest_len+(asn.offset-offset),
- val_to_str(s_type, ftam_pdu_vals, "Unknown nodata pdu type (0x%02x)"));
- ftam_tree_ms = proto_item_add_subtree(ms, ett_ftam_ms);
- offset+=rest_len+(asn.offset-offset);
- asn.offset=offset;
- }
- }
-/* close asn.1 stream */
- asn1_close(&asn, &offset);
- return offset;
+ return offset;
}
+static int dissect_constraint_set_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Constraint_Set_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_constraint_set_name);
+}
+
+static const ber_sequence_t T_constraint_set_and_abstract_Syntax_sequence[] = {
+ { BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_constraint_set_name },
+ { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_abstract_Syntax_name },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_constraint_set_and_abstract_Syntax_sequence, hf_index, ett_ftam_T_constraint_set_and_abstract_Syntax);
+
+ return offset;
+}
+static int dissect_constraint_set_and_abstract_Syntax_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_constraint_set_and_abstract_Syntax(TRUE, tvb, offset, pinfo, tree, hf_ftam_constraint_set_and_abstract_Syntax);
+}
+
+
+static const value_string ftam_Contents_Type_Attribute_vals[] = {
+ { 0, "document-type" },
+ { 1, "constraint-set-and-abstract-Syntax" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Contents_Type_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_document_type_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_constraint_set_and_abstract_Syntax_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Contents_Type_Attribute_choice, hf_index, ett_ftam_Contents_Type_Attribute);
+
+ return offset;
+}
+static int dissect_proposed(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Contents_Type_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_proposed);
+}
+static int dissect_contents_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Contents_Type_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_contents_type);
+}
+
+
+
+static int
+dissect_ftam_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_unknown_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_unknown);
+}
+static int dissect_no_value_available_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_no_value_available);
+}
+static int dissect_abstract_Syntax_not_supported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_abstract_Syntax_not_supported);
+}
+static int dissect_any_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_NULL(TRUE, tvb, offset, pinfo, tree, hf_ftam_any_match);
+}
+
+
+static const value_string ftam_Account_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Account_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_actual_values2 },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Account_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Account_Attribute_choice, hf_index, ett_ftam_Account_Attribute);
+
+ return offset;
+}
+static int dissect_storage_account(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Account_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_storage_account);
+}
+
+
+static const value_string ftam_T_actual_values_vals[] = {
+ { 0, "immediate-availability" },
+ { 1, "deferred-availability" },
+ { 0, NULL }
+};
+
+
+static int
+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_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_actual_values8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_actual_values(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values8);
+}
+
+
+static const value_string ftam_Object_Availability_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Object_Availability_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values8_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Object_Availability_Attribute_choice, hf_index, ett_ftam_Object_Availability_Attribute);
+
+ return offset;
+}
+static int dissect_object_availability(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Availability_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_object_availability);
+}
+
+
+static const value_string ftam_Object_Size_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Object_Size_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values7_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Object_Size_Attribute_choice, hf_index, ett_ftam_Object_Size_Attribute);
+
+ return offset;
+}
+static int dissect_future_Object_size(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Size_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_future_Object_size);
+}
+static int dissect_object_size(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Size_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_object_size);
+}
+
+static const asn_namedbit Concurrency_Key_bits[] = {
+ { 0, &hf_ftam_Concurrency_Key_not_required, -1, -1, "not-required", NULL },
+ { 1, &hf_ftam_Concurrency_Key_shared, -1, -1, "shared", NULL },
+ { 2, &hf_ftam_Concurrency_Key_exclusive, -1, -1, "exclusive", NULL },
+ { 3, &hf_ftam_Concurrency_Key_no_access, -1, -1, "no-access", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_ftam_Concurrency_Key(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ Concurrency_Key_bits, hf_index, ett_ftam_Concurrency_Key,
+ NULL);
+
+ return offset;
+}
+static int dissect_read_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_key);
+}
+static int dissect_insert_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_key);
+}
+static int dissect_replace_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_replace_key);
+}
+static int dissect_extend_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_extend_key);
+}
+static int dissect_erase_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_erase_key);
+}
+static int dissect_read_attribute_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_read_attribute_key);
+}
+static int dissect_change_attribute_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_change_attribute_key);
+}
+static int dissect_delete_Object_key_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_Object_key);
+}
+
+static const ber_sequence_t Concurrency_Access_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_key_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_key_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_replace_key_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_extend_key_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_erase_key_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_read_attribute_key_impl },
+ { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_change_attribute_key_impl },
+ { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_delete_Object_key_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Concurrency_Access(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Concurrency_Access_sequence, hf_index, ett_ftam_Concurrency_Access);
+
+ return offset;
+}
+static int dissect_concurrency_access_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Concurrency_Access(TRUE, tvb, offset, pinfo, tree, hf_ftam_concurrency_access);
+}
+
+
+
+static int
+dissect_ftam_AP_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX have no idea about this one */
+
+ return offset;
+}
+static int dissect_ap(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_AP_title(FALSE, tvb, offset, pinfo, tree, hf_ftam_ap);
+}
+
+
+
+static int
+dissect_ftam_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ /* XXX have no idea about this one */
+
+
+ return offset;
+}
+static int dissect_ae(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_AE_qualifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_ae);
+}
+
+static const ber_sequence_t AE_title_sequence[] = {
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ap },
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ae },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ AE_title_sequence, hf_index, ett_ftam_AE_title);
+
+ return offset;
+}
+
+
+static int
+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_) {
+ offset = dissect_ftam_AE_title(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_location_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Application_Entity_Title(TRUE, tvb, offset, pinfo, tree, hf_ftam_location);
+}
+
+static const ber_sequence_t Access_Control_Element_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_action_list_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_concurrency_access_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_identity_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_passwords_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_location_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Access_Control_Element_sequence, hf_index, ett_ftam_Access_Control_Element);
+
+ return offset;
+}
+static int dissect_actual_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_actual_values_item);
+}
+static int dissect_insert_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_insert_values_item);
+}
+static int dissect_delete_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_delete_values_item);
+}
+
+static const ber_sequence_t SET_OF_Access_Control_Element_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actual_values_item },
+};
+
+static int
+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_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_Access_Control_Element_set_of, hf_index, ett_ftam_SET_OF_Access_Control_Element);
+
+ return offset;
+}
+static int dissect_actual_values3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SET_OF_Access_Control_Element(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values3);
+}
+static int dissect_insert_values_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SET_OF_Access_Control_Element(TRUE, tvb, offset, pinfo, tree, hf_ftam_insert_values);
+}
+static int dissect_delete_values_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SET_OF_Access_Control_Element(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_values);
+}
+
+
+static const value_string ftam_Access_Control_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Access_Control_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values3_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Access_Control_Attribute_choice, hf_index, ett_ftam_Access_Control_Attribute);
+
+ return offset;
+}
+static int dissect_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_access_control);
+}
+static int dissect_create_path_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_create_path_access_control);
+}
+static int dissect_path_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_path_access_control);
+}
+
+
+static const value_string ftam_Legal_Qualification_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Legal_Qualification_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values9_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Legal_Qualification_Attribute_choice, hf_index, ett_ftam_Legal_Qualification_Attribute);
+
+ return offset;
+}
+static int dissect_legal_qualification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Legal_Qualification_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_legal_qualification);
+}
+
+
+static const value_string ftam_Private_Use_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "abstract-Syntax-not-supported" },
+ { 2, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Private_Use_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_abstract_Syntax_not_supported_impl },
+ { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_actual_values4_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Private_Use_Attribute_choice, hf_index, ett_ftam_Private_Use_Attribute);
+
+ return offset;
+}
+static int dissect_private_use(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Private_Use_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_private_use);
+}
+
+
+
+static int
+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_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_extension_set_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Extension_Set_Identifier(TRUE, tvb, offset, pinfo, tree, hf_ftam_extension_set_identifier);
+}
+
+
+
+static int
+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_) {
+ offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
+ hf_index, object_identifier_id);
+
+
+ return offset;
+}
+static int dissect_extension_attribute_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_extension_attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_identifier);
+}
+
+
+
+static int
+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_) {
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+
+ return offset;
+}
+static int dissect_extension_attribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_extension_attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute);
+}
+
+static const ber_sequence_t Extension_Attribute_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_identifier },
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_extension_attribute },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Extension_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Extension_Attribute_sequence, hf_index, ett_ftam_Extension_Attribute);
+
+ return offset;
+}
+static int dissect_extension_set_attributes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Extension_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attributes_item);
+}
+
+static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extension_set_attributes_item },
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Extension_Attribute_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute);
+
+ return offset;
+}
+static int dissect_extension_set_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SEQUENCE_OF_Extension_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attributes);
+}
+
+static const ber_sequence_t Attribute_Extension_Set_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
+ { BER_CLASS_CON, 1, 0, dissect_extension_set_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Extension_Set_sequence, hf_index, ett_ftam_Attribute_Extension_Set);
+
+ return offset;
+}
+static int dissect_Attribute_Extensions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Extension_Set(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extensions_item);
+}
+
+static const ber_sequence_t Attribute_Extensions_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extensions_item },
+};
+
+static int
+dissect_ftam_Attribute_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Extensions_sequence_of, hf_index, ett_ftam_Attribute_Extensions);
+
+ return offset;
+}
+static int dissect_attribute_extensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Extensions(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extensions);
+}
+
+static const ber_sequence_t Create_Attributes_sequence[] = {
+ { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+ { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_object_type_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_permitted_actions_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_contents_type },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_storage_account },
+ { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_availability },
+ { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_future_Object_size },
+ { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_access_control },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_create_path_access_control },
+ { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_legal_qualification },
+ { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_private_use },
+ { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extensions_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Create_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Create_Attributes_sequence, hf_index, ett_ftam_Create_Attributes);
+
+
+ return offset;
+}
+static int dissect_initial_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Create_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_initial_attributes);
+}
+
+static const ber_sequence_t F_CREATE_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
+ { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CREATE_request_sequence, hf_index, ett_ftam_F_CREATE_request);
+
+ return offset;
+}
+static int dissect_f_create_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CREATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_request);
+}
+
+static const ber_sequence_t F_CREATE_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CREATE_response_sequence, hf_index, ett_ftam_F_CREATE_response);
+
+ return offset;
+}
+static int dissect_f_create_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CREATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_response);
+}
+
+static const ber_sequence_t F_DELETE_request_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_DELETE_request_sequence, hf_index, ett_ftam_F_DELETE_request);
+
+ return offset;
+}
+static int dissect_f_delete_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_DELETE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_delete_request);
+}
+
+static const ber_sequence_t F_DELETE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_DELETE_response_sequence, hf_index, ett_ftam_F_DELETE_response);
+
+ return offset;
+}
+static int dissect_f_delete_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_DELETE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_delete_response);
+}
+
+static const asn_namedbit Attribute_Names_bits[] = {
+ { 0, &hf_ftam_Attribute_Names_read_pathname, -1, -1, "read-pathname", NULL },
+ { 18, &hf_ftam_Attribute_Names_read_Object_type, -1, -1, "read-Object-type", NULL },
+ { 1, &hf_ftam_Attribute_Names_read_permitted_actions, -1, -1, "read-permitted-actions", NULL },
+ { 2, &hf_ftam_Attribute_Names_read_contents_type, -1, -1, "read-contents-type", NULL },
+ { 19, &hf_ftam_Attribute_Names_read_linked_Object, -1, -1, "read-linked-Object", NULL },
+ { 23, &hf_ftam_Attribute_Names_read_Child_objects, -1, -1, "read-Child-objects", NULL },
+ { 20, &hf_ftam_Attribute_Names_read_primary_pathname, -1, -1, "read-primary-pathname", NULL },
+ { 3, &hf_ftam_Attribute_Names_read_storage_account, -1, -1, "read-storage-account", NULL },
+ { 4, &hf_ftam_Attribute_Names_read_date_and_time_of_creation, -1, -1, "read-date-and-time-of-creation", NULL },
+ { 5, &hf_ftam_Attribute_Names_read_date_and_time_of_last_modification, -1, -1, "read-date-and-time-of-last-modification", NULL },
+ { 6, &hf_ftam_Attribute_Names_read_date_and_time_of_last_read_access, -1, -1, "read-date-and-time-of-last-read-access", NULL },
+ { 7, &hf_ftam_Attribute_Names_read_date_and_time_of_last_attribute_modification, -1, -1, "read-date-and-time-of-last-attribute-modification", NULL },
+ { 8, &hf_ftam_Attribute_Names_read_identity_of_creator, -1, -1, "read-identity-of-creator", NULL },
+ { 9, &hf_ftam_Attribute_Names_read_identity_of_last_modifier, -1, -1, "read-identity-of-last-modifier", NULL },
+ { 10, &hf_ftam_Attribute_Names_read_identity_of_last_reader, -1, -1, "read-identity-of-last-reader", NULL },
+ { 11, &hf_ftam_Attribute_Names_read_identity_of_last_attribute_modifier, -1, -1, "read-identity-of-last-attribute-modifier", NULL },
+ { 12, &hf_ftam_Attribute_Names_read_Object_availability, -1, -1, "read-Object-availability", NULL },
+ { 13, &hf_ftam_Attribute_Names_read_Object_size, -1, -1, "read-Object-size", NULL },
+ { 14, &hf_ftam_Attribute_Names_read_future_Object_size, -1, -1, "read-future-Object-size", NULL },
+ { 15, &hf_ftam_Attribute_Names_read_access_control, -1, -1, "read-access-control", NULL },
+ { 21, &hf_ftam_Attribute_Names_read_path_access_control, -1, -1, "read-path-access-control", NULL },
+ { 16, &hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS, -1, -1, "read-l8gal-qualifiCatiOnS", NULL },
+ { 17, &hf_ftam_Attribute_Names_read_private_use, -1, -1, "read-private-use", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_ftam_Attribute_Names(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Names_bits, hf_index, ett_ftam_Attribute_Names,
+ NULL);
+
+ return offset;
+}
+static int dissect_attribute_names_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Names(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_names);
+}
+
+
+
+static int
+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_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_extension_attribute_names_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Extension_Attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_names_item);
+}
+
+static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_identifier_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_names_item },
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Extension_Attribute_identifier_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier);
+
+ return offset;
+}
+static int dissect_extension_attribute_names(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SEQUENCE_OF_Extension_Attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_names);
+}
+
+static const ber_sequence_t Attribute_Extension_Set_Name_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
+ { BER_CLASS_CON, 1, 0, dissect_extension_attribute_names },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Extension_Set_Name_sequence, hf_index, ett_ftam_Attribute_Extension_Set_Name);
+
+ return offset;
+}
+static int dissect_Attribute_Extension_Names_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Extension_Set_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extension_Names_item);
+}
+
+static const ber_sequence_t Attribute_Extension_Names_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extension_Names_item },
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Extension_Names_sequence_of, hf_index, ett_ftam_Attribute_Extension_Names);
+
+ return offset;
+}
+static int dissect_attribute_extension_names_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Extension_Names(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extension_names);
+}
+
+static const ber_sequence_t F_READ_ATTRIB_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_READ_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_ATTRIB_request);
+
+ return offset;
+}
+static int dissect_f_read_attrib_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_READ_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_attrib_request);
+}
+
+static const ber_sequence_t Child_Objects_Attribute_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_Child_Objects_Attribute_item },
+};
+
+static int
+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_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ Child_Objects_Attribute_set_of, hf_index, ett_ftam_Child_Objects_Attribute);
+
+ return offset;
+}
+static int dissect_child_objects(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Child_Objects_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_child_objects);
+}
+
+
+static int
+dissect_ftam_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_actual_values5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GeneralizedTime(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values5);
+}
+static int dissect_time_and_date_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_GeneralizedTime(TRUE, tvb, offset, pinfo, tree, hf_ftam_time_and_date_value);
+}
+
+
+static const value_string ftam_Date_and_Time_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Date_and_Time_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values5_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Date_and_Time_Attribute_choice, hf_index, ett_ftam_Date_and_Time_Attribute);
+
+ return offset;
+}
+static int dissect_date_and_time_of_creation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_creation);
+}
+static int dissect_date_and_time_of_last_modification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_modification);
+}
+static int dissect_date_and_time_of_last_read_access(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_read_access);
+}
+static int dissect_date_and_time_of_last_attribute_modification(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_attribute_modification);
+}
+
+
+static const value_string ftam_User_Identity_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t User_Identity_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_APP, 22, BER_FLAGS_NOOWNTAG, dissect_actual_values6 },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ User_Identity_Attribute_choice, hf_index, ett_ftam_User_Identity_Attribute);
+
+ return offset;
+}
+static int dissect_identity_of_creator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_of_creator);
+}
+static int dissect_identity_of_last_modifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_modifier);
+}
+static int dissect_identity_of_last_reader(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_reader);
+}
+static int dissect_identity_last_attribute_modifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_last_attribute_modifier);
+}
+
+static const ber_sequence_t Read_Attributes_sequence[] = {
+ { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+ { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_object_type_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permitted_actions_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_contents_type },
+ { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_linked_Object },
+ { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_child_objects },
+ { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_primaty_pathname },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_storage_account },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_creation },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_last_modification },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_last_read_access },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_date_and_time_of_last_attribute_modification },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_of_creator },
+ { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_of_last_modifier },
+ { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_of_last_reader },
+ { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_identity_last_attribute_modifier },
+ { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_availability },
+ { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_size },
+ { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_future_Object_size },
+ { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_access_control },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_path_access_control },
+ { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_legal_qualification },
+ { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_private_use },
+ { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extensions_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Read_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Read_Attributes_sequence, hf_index, ett_ftam_Read_Attributes);
+
+
+ return offset;
+}
+static int dissect_read_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_attributes);
+}
+static int dissect_read_link_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_link_attributes);
+}
+static int dissect_Objects_Attributes_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_Objects_Attributes_List_item);
+}
+
+static const ber_sequence_t F_READ_ATTRIB_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_read_attributes },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_READ_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_ATTRIB_response);
+
+ return offset;
+}
+static int dissect_f_read_attrib_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_READ_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_attrib_response);
+}
+
+static const ber_sequence_t T_actual_values1_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_insert_values_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delete_values_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_actual_values1_sequence, hf_index, ett_ftam_T_actual_values1);
+
+ return offset;
+}
+static int dissect_actual_values1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_actual_values1(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values1);
+}
+
+
+static const value_string ftam_Access_Control_Change_Attribute_vals[] = {
+ { 0, "no-value-available" },
+ { 1, "actual-values" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Access_Control_Change_Attribute_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_no_value_available_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_actual_values1_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+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_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Access_Control_Change_Attribute_choice, hf_index, ett_ftam_Access_Control_Change_Attribute);
+
+ return offset;
+}
+static int dissect_change_attributes_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Change_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_change_attributes_access_control);
+}
+static int dissect_change_path_access_control(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Control_Change_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_change_path_access_control);
+}
+
+static const ber_sequence_t Change_Attributes_sequence[] = {
+ { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_storage_account },
+ { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_availability },
+ { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_future_Object_size },
+ { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_change_attributes_access_control },
+ { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_change_path_access_control },
+ { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_legal_qualification },
+ { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_private_use },
+ { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extensions_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Change_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Change_Attributes_sequence, hf_index, ett_ftam_Change_Attributes);
+
+
+
+ return offset;
+}
+static int dissect_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Change_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_attributes);
+}
+
+static const ber_sequence_t F_CHANGE_ATTRIB_request_sequence[] = {
+ { BER_CLASS_APP, 8, BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHANGE_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHANGE_ATTRIB_request_sequence, hf_index, ett_ftam_F_CHANGE_ATTRIB_request);
+
+ return offset;
+}
+static int dissect_f_Change_attrib_reques_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CHANGE_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_attrib_reques);
+}
+
+static const ber_sequence_t F_CHANGE_ATTRIB_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHANGE_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHANGE_ATTRIB_response_sequence, hf_index, ett_ftam_F_CHANGE_ATTRIB_response);
+
+ return offset;
+}
+static int dissect_f_Change_attrib_respon_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CHANGE_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_attrib_respon);
+}
+
+static const asn_namedbit T_processing_mode_bits[] = {
+ { 0, &hf_ftam_T_processing_mode_f_read, -1, -1, "f-read", NULL },
+ { 1, &hf_ftam_T_processing_mode_f_insert, -1, -1, "f-insert", NULL },
+ { 2, &hf_ftam_T_processing_mode_f_replace, -1, -1, "f-replace", NULL },
+ { 3, &hf_ftam_T_processing_mode_f_extend, -1, -1, "f-extend", NULL },
+ { 4, &hf_ftam_T_processing_mode_f_erase, -1, -1, "f-erase", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_ftam_T_processing_mode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ T_processing_mode_bits, hf_index, ett_ftam_T_processing_mode,
+ NULL);
+
+ return offset;
+}
+static int dissect_processing_mode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_processing_mode(TRUE, tvb, offset, pinfo, tree, hf_ftam_processing_mode);
+}
+
+
+static const value_string ftam_T_contents_type_vals[] = {
+ { 0, "unknown" },
+ { 1, "proposed" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_contents_type_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_unknown_impl },
+ { 1, BER_CLASS_CON, 1, 0, dissect_proposed },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_T_contents_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_contents_type_choice, hf_index, ett_ftam_T_contents_type);
+
+ return offset;
+}
+static int dissect_open_contents_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_contents_type(FALSE, tvb, offset, pinfo, tree, hf_ftam_open_contents_type);
+}
+
+
+
+static int
+dissect_ftam_Activity_Identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+
+ return offset;
+}
+static int dissect_activity_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Activity_Identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_activity_identifier);
+}
+
+
+static const value_string ftam_T_request_recovery_mode_vals[] = {
+ { 0, "none" },
+ { 1, "at-start-of-file" },
+ { 2, "at-any-active-Checkpoint" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_request_recovery_mode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_request_recovery_mode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_request_recovery_mode(TRUE, tvb, offset, pinfo, tree, hf_ftam_request_recovery_mode);
+}
+
+static const ber_sequence_t SET_OF_Abstract_Syntax_Name_set_of[1] = {
+ { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_remove_contexts_item },
+};
+
+static int
+dissect_ftam_SET_OF_Abstract_Syntax_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+ SET_OF_Abstract_Syntax_Name_set_of, hf_index, ett_ftam_SET_OF_Abstract_Syntax_Name);
+
+ return offset;
+}
+static int dissect_remove_contexts_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SET_OF_Abstract_Syntax_Name(TRUE, tvb, offset, pinfo, tree, hf_ftam_remove_contexts);
+}
+static int dissect_define_contexts_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SET_OF_Abstract_Syntax_Name(TRUE, tvb, offset, pinfo, tree, hf_ftam_define_contexts);
+}
+
+
+static const value_string ftam_Degree_Of_Overlap_vals[] = {
+ { 0, "normal" },
+ { 1, "consecutive" },
+ { 2, "concurrent" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_Degree_Of_Overlap(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_degree_of_overlap(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Degree_Of_Overlap(FALSE, tvb, offset, pinfo, tree, hf_ftam_degree_of_overlap);
+}
+
+static const ber_sequence_t F_OPEN_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_processing_mode_impl },
+ { BER_CLASS_CON, 1, 0, dissect_open_contents_type },
+ { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_enable_fadu_locking_impl },
+ { BER_CLASS_APP, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_activity_identifier },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_request_recovery_mode_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_remove_contexts_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_define_contexts_impl },
+ { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_degree_of_overlap },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_window_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_OPEN_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_OPEN_request_sequence, hf_index, ett_ftam_F_OPEN_request);
+
+ return offset;
+}
+static int dissect_f_open_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_OPEN_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_open_request);
+}
+
+
+static const value_string ftam_T_response_recovery_mode_vals[] = {
+ { 0, "none" },
+ { 1, "at-start-of-file" },
+ { 2, "at-any-active-Checkpoint" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_response_recovery_mode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_response_recovery_mode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_response_recovery_mode(TRUE, tvb, offset, pinfo, tree, hf_ftam_response_recovery_mode);
+}
+
+static const ber_sequence_t F_OPEN_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_contents_type },
+ { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_response_recovery_mode_impl },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_presentation_action_impl },
+ { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_degree_of_overlap },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_window_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_OPEN_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_OPEN_response_sequence, hf_index, ett_ftam_F_OPEN_response);
+
+ return offset;
+}
+static int dissect_f_open_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_OPEN_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_open_response);
+}
+
+static const ber_sequence_t F_CLOSE_request_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CLOSE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CLOSE_request_sequence, hf_index, ett_ftam_F_CLOSE_request);
+
+ return offset;
+}
+static int dissect_f_close_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CLOSE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_close_request);
+}
+
+static const ber_sequence_t F_CLOSE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CLOSE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CLOSE_response_sequence, hf_index, ett_ftam_F_CLOSE_response);
+
+ return offset;
+}
+static int dissect_f_close_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CLOSE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_close_response);
+}
+
+static const ber_sequence_t F_BEGIN_GROUP_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_threshold_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_BEGIN_GROUP_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_BEGIN_GROUP_request_sequence, hf_index, ett_ftam_F_BEGIN_GROUP_request);
+
+ return offset;
+}
+static int dissect_f_begin_group_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_BEGIN_GROUP_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_begin_group_request);
+}
+
+static const ber_sequence_t F_BEGIN_GROUP_response_sequence[] = {
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_BEGIN_GROUP_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_BEGIN_GROUP_response_sequence, hf_index, ett_ftam_F_BEGIN_GROUP_response);
+
+ return offset;
+}
+static int dissect_f_begin_group_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_BEGIN_GROUP_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_begin_group_response);
+}
+
+static const ber_sequence_t F_END_GROUP_request_sequence[] = {
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_END_GROUP_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_END_GROUP_request_sequence, hf_index, ett_ftam_F_END_GROUP_request);
+
+ return offset;
+}
+static int dissect_f_end_group_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_END_GROUP_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_end_group_request);
+}
+
+static const ber_sequence_t F_END_GROUP_response_sequence[] = {
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_END_GROUP_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_END_GROUP_response_sequence, hf_index, ett_ftam_F_END_GROUP_response);
+
+ return offset;
+}
+static int dissect_f_end_group_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_END_GROUP_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_end_group_response);
+}
+
+static const ber_sequence_t F_RECOVER_request_sequence[] = {
+ { BER_CLASS_APP, 6, BER_FLAGS_NOOWNTAG, dissect_activity_identifier },
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_bulk_transfer_number_impl },
+ { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_recovefy_Point_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_remove_contexts_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_define_contexts_impl },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_concurrent_bulk_transfer_number_impl },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_concurrent_recovery_point_impl },
+ { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_response_impl },
+ { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_response_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_RECOVER_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_RECOVER_request_sequence, hf_index, ett_ftam_F_RECOVER_request);
+
+ return offset;
+}
+static int dissect_f_recover_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_RECOVER_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_recover_request);
+}
+
+static const ber_sequence_t F_RECOVER_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_contents_type },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_recovety_Point_impl },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_presentation_action_impl },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_concurrent_recovery_point_impl },
+ { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_request_impl },
+ { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_request_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_RECOVER_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_RECOVER_response_sequence, hf_index, ett_ftam_F_RECOVER_response);
+
+ return offset;
+}
+static int dissect_f_recover_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_RECOVER_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_recover_response);
+}
+
+
+static const value_string ftam_T_first_last_vals[] = {
+ { 0, "first" },
+ { 1, "last" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_first_last(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_first_last_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_first_last(TRUE, tvb, offset, pinfo, tree, hf_ftam_first_last);
+}
+
+
+static const value_string ftam_T_relative_vals[] = {
+ { 0, "previous" },
+ { 1, "current" },
+ { 2, "next" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_relative(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_relative_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_relative(TRUE, tvb, offset, pinfo, tree, hf_ftam_relative);
+}
+
+
+static const value_string ftam_T_begin_end_vals[] = {
+ { 0, "begin" },
+ { 1, "end" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_begin_end(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_begin_end_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_begin_end(TRUE, tvb, offset, pinfo, tree, hf_ftam_begin_end);
+}
+
+
+static int
+dissect_ftam_Node_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_acse_EXTERNAL(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_single_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Node_Name(TRUE, tvb, offset, pinfo, tree, hf_ftam_single_name);
+}
+static int dissect_name_list_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Node_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_name_list_item);
+}
+
+static const ber_sequence_t SEQUENCE_OF_Node_Name_sequence_of[1] = {
+ { BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_name_list_item },
+};
+
+static int
+dissect_ftam_SEQUENCE_OF_Node_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Node_Name_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Node_Name);
+
+ return offset;
+}
+static int dissect_name_list_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SEQUENCE_OF_Node_Name(TRUE, tvb, offset, pinfo, tree, hf_ftam_name_list);
+}
+
+
+static const value_string ftam_FADU_Identity_vals[] = {
+ { 0, "first-last" },
+ { 1, "relative" },
+ { 2, "begin-end" },
+ { 3, "single-name" },
+ { 4, "name-list" },
+ { 5, "fadu-number" },
+ { 0, NULL }
+};
+
+static const ber_choice_t FADU_Identity_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_first_last_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_relative_impl },
+ { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_begin_end_impl },
+ { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_single_name_impl },
+ { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_name_list_impl },
+ { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_fadu_number_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_FADU_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ FADU_Identity_choice, hf_index, ett_ftam_FADU_Identity);
+
+
+ return offset;
+}
+static int dissect_file_access_data_unit_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_FADU_Identity(FALSE, tvb, offset, pinfo, tree, hf_ftam_file_access_data_unit_identity);
+}
+
+
+static const value_string ftam_FADU_Lock_vals[] = {
+ { 0, "off" },
+ { 1, "on" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_FADU_Lock(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_fadu_lock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_FADU_Lock(FALSE, tvb, offset, pinfo, tree, hf_ftam_fadu_lock);
+}
+
+static const ber_sequence_t F_LOCATE_request_sequence[] = {
+ { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
+ { BER_CLASS_APP, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fadu_lock },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_LOCATE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_LOCATE_request_sequence, hf_index, ett_ftam_F_LOCATE_request);
+
+ return offset;
+}
+static int dissect_f_locate_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_LOCATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_locate_request);
+}
+
+static const ber_sequence_t F_LOCATE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_LOCATE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_LOCATE_response_sequence, hf_index, ett_ftam_F_LOCATE_response);
+
+ return offset;
+}
+static int dissect_f_locate_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_LOCATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_locate_response);
+}
+
+static const ber_sequence_t F_ERASE_request_sequence[] = {
+ { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_ERASE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_ERASE_request_sequence, hf_index, ett_ftam_F_ERASE_request);
+
+ return offset;
+}
+static int dissect_f_erase_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_ERASE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_erase_request);
+}
+
+static const ber_sequence_t F_ERASE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_ERASE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_ERASE_response_sequence, hf_index, ett_ftam_F_ERASE_response);
+
+ return offset;
+}
+static int dissect_f_erase_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_ERASE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_erase_response);
+}
+
+
+static const value_string ftam_File_PDU_vals[] = {
+ { 6, "f-select-request" },
+ { 7, "f-select-response" },
+ { 8, "f-deselect-request" },
+ { 9, "f-deselect-response" },
+ { 10, "f-create-request" },
+ { 11, "f-create-response" },
+ { 12, "f-delete-request" },
+ { 13, "f-delete-response" },
+ { 14, "f-read-attrib-request" },
+ { 15, "f-read-attrib-response" },
+ { 16, "f-Change-attrib-reques" },
+ { 17, "f-Change-attrib-respon" },
+ { 18, "f-open-request" },
+ { 19, "f-open-response" },
+ { 20, "f-close-request" },
+ { 21, "f-close-response" },
+ { 22, "f-begin-group-request" },
+ { 23, "f-begin-group-response" },
+ { 24, "f-end-group-request" },
+ { 25, "f-end-group-response" },
+ { 26, "f-recover-request" },
+ { 27, "f-recover-response" },
+ { 28, "f-locate-request" },
+ { 29, "f-locate-response" },
+ { 30, "f-erase-request" },
+ { 31, "f-erase-response" },
+ { 0, NULL }
+};
+
+static const ber_choice_t File_PDU_choice[] = {
+ { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_f_select_request_impl },
+ { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_f_select_response_impl },
+ { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_f_deselect_request_impl },
+ { 9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_f_deselect_response_impl },
+ { 10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_f_create_request_impl },
+ { 11, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_f_create_response_impl },
+ { 12, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_f_delete_request_impl },
+ { 13, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_f_delete_response_impl },
+ { 14, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_f_read_attrib_request_impl },
+ { 15, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_f_read_attrib_response_impl },
+ { 16, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_f_Change_attrib_reques_impl },
+ { 17, BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_f_Change_attrib_respon_impl },
+ { 18, BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_f_open_request_impl },
+ { 19, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_f_open_response_impl },
+ { 20, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_f_close_request_impl },
+ { 21, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_f_close_response_impl },
+ { 22, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_f_begin_group_request_impl },
+ { 23, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_f_begin_group_response_impl },
+ { 24, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_f_end_group_request_impl },
+ { 25, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_f_end_group_response_impl },
+ { 26, BER_CLASS_CON, 26, BER_FLAGS_IMPLTAG, dissect_f_recover_request_impl },
+ { 27, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_f_recover_response_impl },
+ { 28, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_f_locate_request_impl },
+ { 29, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_f_locate_response_impl },
+ { 30, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_f_erase_request_impl },
+ { 31, BER_CLASS_CON, 31, BER_FLAGS_IMPLTAG, dissect_f_erase_response_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_File_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ File_PDU_choice, hf_index, ett_ftam_File_PDU);
+
+ return offset;
+}
+static int dissect_file_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_File_PDU(FALSE, tvb, offset, pinfo, tree, hf_ftam_file_PDU);
+}
+
+
+static const value_string ftam_T_access_context_vals[] = {
+ { 0, "hierarchical-all-data-units" },
+ { 1, "hierarchical-no-data-units" },
+ { 2, "flat-all-data-units" },
+ { 3, "flat-one-level-data-unit" },
+ { 4, "flat-Single-data-unit" },
+ { 5, "unstructured-all-data-units" },
+ { 6, "unstructured-Single-data-unit" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_access_context(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_access_context_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_access_context(TRUE, tvb, offset, pinfo, tree, hf_ftam_access_context);
+}
+
+static const ber_sequence_t Access_Context_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_access_context_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_level_number_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Access_Context(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
+ Access_Context_sequence, hf_index, ett_ftam_Access_Context);
+
+
+ return offset;
+}
+static int dissect_read_access_context(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Access_Context(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_access_context);
+}
+
+static const ber_sequence_t F_READ_request_sequence[] = {
+ { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
+ { BER_CLASS_APP, 1, BER_FLAGS_NOOWNTAG, dissect_read_access_context },
+ { BER_CLASS_APP, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fadu_lock },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_READ_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_READ_request_sequence, hf_index, ett_ftam_F_READ_request);
+
+ return offset;
+}
+static int dissect_f_read_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_READ_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_request);
+}
+
+
+static const value_string ftam_T_file_access_data_unit_Operation_vals[] = {
+ { 0, "insert" },
+ { 1, "replace" },
+ { 2, "extend" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_file_access_data_unit_Operation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_file_access_data_unit_Operation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_file_access_data_unit_Operation(TRUE, tvb, offset, pinfo, tree, hf_ftam_file_access_data_unit_Operation);
+}
+
+static const ber_sequence_t F_WRITE_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_file_access_data_unit_Operation_impl },
+ { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
+ { BER_CLASS_APP, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fadu_lock },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_WRITE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_WRITE_request_sequence, hf_index, ett_ftam_F_WRITE_request);
+
+ return offset;
+}
+static int dissect_f_write_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_WRITE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_write_request);
+}
+
+static const ber_sequence_t F_DATA_END_request_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_DATA_END_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_DATA_END_request_sequence, hf_index, ett_ftam_F_DATA_END_request);
+
+ return offset;
+}
+static int dissect_f_data_end_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_DATA_END_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_data_end_request);
+}
+
+
+static const value_string ftam_Request_Type_vals[] = {
+ { 0, "read" },
+ { 1, "write" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_Request_Type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_request_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Request_Type(FALSE, tvb, offset, pinfo, tree, hf_ftam_request_type);
+}
+
+static const ber_sequence_t F_TRANSFER_END_request_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_response_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_response_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_TRANSFER_END_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_TRANSFER_END_request_sequence, hf_index, ett_ftam_F_TRANSFER_END_request);
+
+ return offset;
+}
+static int dissect_f_transfer_end_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_TRANSFER_END_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_transfer_end_request);
+}
+
+static const ber_sequence_t F_TRANSFER_END_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_TRANSFER_END_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_TRANSFER_END_response_sequence, hf_index, ett_ftam_F_TRANSFER_END_response);
+
+ return offset;
+}
+static int dissect_f_transfer_end_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_TRANSFER_END_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_transfer_end_response);
+}
+
+static const ber_sequence_t F_CANCEL_request_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { BER_CLASS_APP, 31, BER_FLAGS_NOOWNTAG, dissect_request_type },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_request_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_response_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_request_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_response_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CANCEL_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CANCEL_request_sequence, hf_index, ett_ftam_F_CANCEL_request);
+
+ return offset;
+}
+static int dissect_f_cancel_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CANCEL_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_cancel_request);
+}
+
+static const ber_sequence_t F_CANCEL_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_request_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_response_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_request_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_response_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CANCEL_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CANCEL_response_sequence, hf_index, ett_ftam_F_CANCEL_response);
+
+ return offset;
+}
+static int dissect_f_cancel_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CANCEL_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_cancel_response);
+}
+
+static const ber_sequence_t F_RESTART_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_request_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_response_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_request_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_response_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_RESTART_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_RESTART_request_sequence, hf_index, ett_ftam_F_RESTART_request);
+
+ return offset;
+}
+static int dissect_f_restart_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_RESTART_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_restart_request);
+}
+
+static const ber_sequence_t F_RESTART_response_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_request_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_read_response_impl },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_request_impl },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_transfer_end_write_response_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_RESTART_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_RESTART_response_sequence, hf_index, ett_ftam_F_RESTART_response);
+
+ return offset;
+}
+static int dissect_f_restart_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_RESTART_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_restart_response);
+}
+
+
+static const value_string ftam_Bulk_Data_PDU_vals[] = {
+ { 32, "f-read-request" },
+ { 33, "f-write-request" },
+ { 34, "f-data-end-request" },
+ { 35, "f-transfer-end-request" },
+ { 36, "f-transfer-end-response" },
+ { 37, "f-cancel-request" },
+ { 38, "f-cancel-response" },
+ { 39, "f-restart-request" },
+ { 40, "f-restart-response" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Bulk_Data_PDU_choice[] = {
+ { 32, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_f_read_request_impl },
+ { 33, BER_CLASS_CON, 33, BER_FLAGS_IMPLTAG, dissect_f_write_request_impl },
+ { 34, BER_CLASS_CON, 34, BER_FLAGS_IMPLTAG, dissect_f_data_end_request_impl },
+ { 35, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_f_transfer_end_request_impl },
+ { 36, BER_CLASS_CON, 36, BER_FLAGS_IMPLTAG, dissect_f_transfer_end_response_impl },
+ { 37, BER_CLASS_CON, 37, BER_FLAGS_IMPLTAG, dissect_f_cancel_request_impl },
+ { 38, BER_CLASS_CON, 38, BER_FLAGS_IMPLTAG, dissect_f_cancel_response_impl },
+ { 39, BER_CLASS_CON, 39, BER_FLAGS_IMPLTAG, dissect_f_restart_request_impl },
+ { 40, BER_CLASS_CON, 40, BER_FLAGS_IMPLTAG, dissect_f_restart_response_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Bulk_Data_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Bulk_Data_PDU_choice, hf_index, ett_ftam_Bulk_Data_PDU);
+
+ return offset;
+}
+static int dissect_bulk_Data_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Bulk_Data_PDU(FALSE, tvb, offset, pinfo, tree, hf_ftam_bulk_Data_PDU);
+}
+
+
+static int
+dissect_ftam_Destination_File_Directory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ftam_Pathname_Attribute(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_destination_file_directory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Destination_File_Directory(FALSE, tvb, offset, pinfo, tree, hf_ftam_destination_file_directory);
+}
+
+static const ber_sequence_t F_CHANGE_PREFIX_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reset_impl },
+ { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHANGE_PREFIX_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHANGE_PREFIX_request_sequence, hf_index, ett_ftam_F_CHANGE_PREFIX_request);
+
+ return offset;
+}
+static int dissect_f_Change_prefix_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CHANGE_PREFIX_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_prefix_request);
+}
+
+static const ber_sequence_t F_CHANGE_PREFIX_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHANGE_PREFIX_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHANGE_PREFIX_response_sequence, hf_index, ett_ftam_F_CHANGE_PREFIX_response);
+
+ return offset;
+}
+static int dissect_f_Change_prefix_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CHANGE_PREFIX_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_prefix_response);
+}
+
+static const asn_namedbit Equality_Comparision_bits[] = {
+ { 0, &hf_ftam_Equality_Comparision_no_value_available_matches, -1, -1, "no-value-available-matches", NULL },
+ { 1, &hf_ftam_Equality_Comparision_equals_matches, -1, -1, "equals-matches", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_ftam_Equality_Comparision(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ Equality_Comparision_bits, hf_index, ett_ftam_Equality_Comparision,
+ NULL);
+
+ return offset;
+}
+static int dissect_equality_comparision_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Equality_Comparision(TRUE, tvb, offset, pinfo, tree, hf_ftam_equality_comparision);
+}
+static int dissect_relational_camparision_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Equality_Comparision(TRUE, tvb, offset, pinfo, tree, hf_ftam_relational_camparision);
+}
+
+
+static const value_string ftam_T_string_value_item_vals[] = {
+ { 2, "substring-match" },
+ { 3, "any-match" },
+ { 4, "number-of-characters-match" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_string_value_item_choice[] = {
+ { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_substring_match_impl },
+ { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_any_match_impl },
+ { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_number_of_characters_match_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_T_string_value_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_string_value_item_choice, hf_index, ett_ftam_T_string_value_item);
+
+ return offset;
+}
+static int dissect_string_value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_string_value_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_string_value_item);
+}
+
+static const ber_sequence_t T_string_value_sequence_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_string_value_item },
+};
+
+static int
+dissect_ftam_T_string_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_string_value_sequence_of, hf_index, ett_ftam_T_string_value);
+
+ return offset;
+}
+static int dissect_string_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_string_value(TRUE, tvb, offset, pinfo, tree, hf_ftam_string_value);
+}
+
+static const ber_sequence_t String_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_string_value_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_String_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ String_Pattern_sequence, hf_index, ett_ftam_String_Pattern);
+
+ return offset;
+}
+static int dissect_storage_account_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_String_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_storage_account_Pattern);
+}
+static int dissect_legal_quailfication_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_String_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_legal_quailfication_Pattern);
+}
+static int dissect_string_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_String_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_string_match);
+}
+
+
+static const value_string ftam_T_pathname_value_item_vals[] = {
+ { 2, "string-match" },
+ { 3, "any-match" },
+ { 0, NULL }
+};
+
+static const ber_choice_t T_pathname_value_item_choice[] = {
+ { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_string_match_impl },
+ { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_any_match_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_T_pathname_value_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ T_pathname_value_item_choice, hf_index, ett_ftam_T_pathname_value_item);
+
+ return offset;
+}
+static int dissect_pathname_value_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_pathname_value_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_pathname_value_item);
+}
+
+static const ber_sequence_t T_pathname_value_sequence_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname_value_item },
+};
+
+static int
+dissect_ftam_T_pathname_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_pathname_value_sequence_of, hf_index, ett_ftam_T_pathname_value);
+
+ return offset;
+}
+static int dissect_pathname_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_pathname_value(TRUE, tvb, offset, pinfo, tree, hf_ftam_pathname_value);
+}
+
+static const ber_sequence_t Pathname_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_pathname_value_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Pathname_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Pathname_Pattern_sequence, hf_index, ett_ftam_Pathname_Pattern);
+
+ return offset;
+}
+static int dissect_pathname_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_pathname_Pattern);
+}
+static int dissect_linked_Object_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_linked_Object_Pattern);
+}
+static int dissect_child_objects_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_child_objects_Pattern);
+}
+static int dissect_primaty_pathname_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Pathname_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_primaty_pathname_Pattern);
+}
+
+static const asn_namedbit Relational_Comparision_bits[] = {
+ { 0, &hf_ftam_Relational_Comparision_no_value_available_matches, -1, -1, "no-value-available-matches", NULL },
+ { 1, &hf_ftam_Relational_Comparision_equals_matches, -1, -1, "equals-matches", NULL },
+ { 2, &hf_ftam_Relational_Comparision_less_than_matches, -1, -1, "less-than-matches", NULL },
+ { 3, &hf_ftam_Relational_Comparision_greater_than_matches, -1, -1, "greater-than-matches", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_ftam_Relational_Comparision(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ Relational_Comparision_bits, hf_index, ett_ftam_Relational_Comparision,
+ NULL);
+
+ return offset;
+}
+static int dissect_relational_comparision_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Relational_Comparision(TRUE, tvb, offset, pinfo, tree, hf_ftam_relational_comparision);
+}
+
+static const ber_sequence_t Integer_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relational_comparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_integer_value_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Integer_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Integer_Pattern_sequence, hf_index, ett_ftam_Integer_Pattern);
+
+ return offset;
+}
+static int dissect_object_type_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Integer_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_type_Pattern);
+}
+static int dissect_object_size_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Integer_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_size_Pattern);
+}
+static int dissect_future_object_size_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Integer_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_future_object_size_Pattern);
+}
+
+
+static int
+dissect_ftam_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ NULL, hf_index, -1,
+ NULL);
+
+ return offset;
+}
+static int dissect_match_bitstring_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_ftam_match_bitstring);
+}
+static int dissect_significance_bitstring_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_ftam_significance_bitstring);
+}
+
+static const ber_sequence_t Bitstring_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_match_bitstring_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_significance_bitstring_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Bitstring_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Bitstring_Pattern_sequence, hf_index, ett_ftam_Bitstring_Pattern);
+
+ return offset;
+}
+static int dissect_permitted_actions_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Bitstring_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_permitted_actions_Pattern);
+}
+
+
+
+static int
+dissect_ftam_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_object_identifier_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_identifier_value);
+}
+static int dissect_attribute_extension_attribute_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_extension_attribute_identifier);
+}
+
+static const ber_sequence_t Object_Identifier_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_object_identifier_value_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Object_Identifier_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Object_Identifier_Pattern_sequence, hf_index, ett_ftam_Object_Identifier_Pattern);
+
+ return offset;
+}
+static int dissect_document_type_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Identifier_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_document_type_Pattern);
+}
+static int dissect_constraint_Set_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Identifier_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_constraint_Set_Pattern);
+}
+static int dissect_abstract_Syntax_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Object_Identifier_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_abstract_Syntax_Pattern);
+}
+
+static const ber_sequence_t T_constraint_set_abstract_Syntax_Pattern_sequence[] = {
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_constraint_Set_Pattern_impl },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_abstract_Syntax_Pattern_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_T_constraint_set_abstract_Syntax_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_constraint_set_abstract_Syntax_Pattern_sequence, hf_index, ett_ftam_T_constraint_set_abstract_Syntax_Pattern);
+
+ return offset;
+}
+static int dissect_constraint_set_abstract_Syntax_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_constraint_set_abstract_Syntax_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_constraint_set_abstract_Syntax_Pattern);
+}
+
+
+static const value_string ftam_Contents_Type_Pattern_vals[] = {
+ { 0, "document-type-Pattern" },
+ { 1, "constraint-set-abstract-Syntax-Pattern" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Contents_Type_Pattern_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_document_type_Pattern_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_constraint_set_abstract_Syntax_Pattern_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Contents_Type_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Contents_Type_Pattern_choice, hf_index, ett_ftam_Contents_Type_Pattern);
+
+ return offset;
+}
+static int dissect_contents_type_Pattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Contents_Type_Pattern(FALSE, tvb, offset, pinfo, tree, hf_ftam_contents_type_Pattern);
+}
+
+static const ber_sequence_t Date_and_Time_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relational_camparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_time_and_date_value_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Date_and_Time_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Date_and_Time_Pattern_sequence, hf_index, ett_ftam_Date_and_Time_Pattern);
+
+ return offset;
+}
+static int dissect_date_and_time_of_creation_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_creation_Pattern);
+}
+static int dissect_date_and_time_of_last_modification_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_modification_Pattern);
+}
+static int dissect_date_and_time_of_last_read_access_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_read_access_Pattern);
+}
+static int dissect_date_and_time_of_last_attribute_modification_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Date_and_Time_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_date_and_time_of_last_attribute_modification_Pattern);
+}
+
+
+static int
+dissect_ftam_User_Identity_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ftam_String_Pattern(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_identity_of_creator_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity_of_creator_Pattern);
+}
+static int dissect_identity_of_last_modifier_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_modifier_Pattern);
+}
+static int dissect_identity_of_last_reader_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_reader_Pattern);
+}
+static int dissect_identity_of_last_attribute_modifier_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_User_Identity_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_attribute_modifier_Pattern);
+}
+
+static const ber_sequence_t Boolean_Pattern_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_boolean_value_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Boolean_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Boolean_Pattern_sequence, hf_index, ett_ftam_Boolean_Pattern);
+
+ return offset;
+}
+static int dissect_object_availabiiity_Pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Boolean_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_availabiiity_Pattern);
+}
+
+
+
+static int
+dissect_ftam_T_extension_attribute_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+
+ return offset;
+}
+static int dissect_extension_attribute_Pattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_extension_attribute_Pattern(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_Pattern);
+}
+
+static const ber_sequence_t T_extension_set_attribute_Patterns_item_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attribute_extension_attribute_identifier },
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_Pattern },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_T_extension_set_attribute_Patterns_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ T_extension_set_attribute_Patterns_item_sequence, hf_index, ett_ftam_T_extension_set_attribute_Patterns_item);
+
+ return offset;
+}
+static int dissect_extension_set_attribute_Patterns_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_extension_set_attribute_Patterns_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attribute_Patterns_item);
+}
+
+static const ber_sequence_t T_extension_set_attribute_Patterns_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extension_set_attribute_Patterns_item },
+};
+
+static int
+dissect_ftam_T_extension_set_attribute_Patterns(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_extension_set_attribute_Patterns_sequence_of, hf_index, ett_ftam_T_extension_set_attribute_Patterns);
+
+ return offset;
+}
+static int dissect_extension_set_attribute_Patterns_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_extension_set_attribute_Patterns(TRUE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attribute_Patterns);
+}
+
+static const ber_sequence_t Attribute_Extensions_Pattern_item_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_extension_set_attribute_Patterns_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Attribute_Extensions_Pattern_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Extensions_Pattern_item_sequence, hf_index, ett_ftam_Attribute_Extensions_Pattern_item);
+
+ return offset;
+}
+static int dissect_Attribute_Extensions_Pattern_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Extensions_Pattern_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extensions_Pattern_item);
+}
+
+static const ber_sequence_t Attribute_Extensions_Pattern_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extensions_Pattern_item },
+};
+
+static int
+dissect_ftam_Attribute_Extensions_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ Attribute_Extensions_Pattern_sequence_of, hf_index, ett_ftam_Attribute_Extensions_Pattern);
+
+ return offset;
+}
+static int dissect_attribute_extensions_pattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Extensions_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extensions_pattern);
+}
+
+
+static const value_string ftam_AND_Set_item_vals[] = {
+ { 0, "pathname-Pattern" },
+ { 18, "object-type-Pattern" },
+ { 1, "permitted-actions-Pattern" },
+ { 2, "contents-type-Pattern" },
+ { 19, "linked-Object-Pattern" },
+ { 23, "child-objects-Pattern" },
+ { 20, "primaty-pathname-Pattern" },
+ { 3, "storage-account-Pattern" },
+ { 4, "date-and-time-of-creation-Pattern" },
+ { 5, "date-and-time-of-last-modification-Pattern" },
+ { 6, "date-and-time-of-last-read-access-Pattern" },
+ { 7, "date-and-time-of-last-attribute-modification-Pattern" },
+ { 8, "identity-of-creator-Pattern" },
+ { 9, "identity-of-last-modifier-Pattern" },
+ { 10, "identity-of-last-reader-Pattern" },
+ { 11, "identity-of-last-attribute-modifier-Pattern" },
+ { 12, "object-availabiiity-Pattern" },
+ { 13, "object-size-Pattern" },
+ { 14, "future-object-size-Pattern" },
+ { 16, "legal-quailfication-Pattern" },
+ { 22, "attribute-extensions-pattern" },
+ { 0, NULL }
+};
+
+static const ber_choice_t AND_Set_item_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pathname_Pattern_impl },
+ { 18, BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_object_type_Pattern_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_permitted_actions_Pattern_impl },
+ { 2, BER_CLASS_CON, 2, 0, dissect_contents_type_Pattern },
+ { 19, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_linked_Object_Pattern_impl },
+ { 23, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_child_objects_Pattern_impl },
+ { 20, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_primaty_pathname_Pattern_impl },
+ { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_storage_account_Pattern_impl },
+ { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_date_and_time_of_creation_Pattern_impl },
+ { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_date_and_time_of_last_modification_Pattern_impl },
+ { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_date_and_time_of_last_read_access_Pattern_impl },
+ { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_date_and_time_of_last_attribute_modification_Pattern_impl },
+ { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_identity_of_creator_Pattern_impl },
+ { 9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_identity_of_last_modifier_Pattern_impl },
+ { 10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_identity_of_last_reader_Pattern_impl },
+ { 11, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_identity_of_last_attribute_modifier_Pattern_impl },
+ { 12, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_object_availabiiity_Pattern_impl },
+ { 13, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_object_size_Pattern_impl },
+ { 14, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_future_object_size_Pattern_impl },
+ { 16, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_legal_quailfication_Pattern_impl },
+ { 22, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_attribute_extensions_pattern_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_AND_Set_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ AND_Set_item_choice, hf_index, ett_ftam_AND_Set_item);
+
+ return offset;
+}
+static int dissect_AND_Set_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_AND_Set_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_AND_Set_item);
+}
+
+static const ber_sequence_t AND_Set_sequence_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_AND_Set_item },
+};
+
+static int
+dissect_ftam_AND_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ AND_Set_sequence_of, hf_index, ett_ftam_AND_Set);
+
+ return offset;
+}
+static int dissect_OR_Set_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_AND_Set(FALSE, tvb, offset, pinfo, tree, hf_ftam_OR_Set_item);
+}
+static int dissect_Attribute_Value_Assertions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_AND_Set(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Value_Assertions_item);
+}
+
+static const ber_sequence_t Attribute_Value_Assertions_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Value_Assertions_item },
+};
+
+static int
+dissect_ftam_Attribute_Value_Assertions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ftam_OR_Set(TRUE, tvb, offset, pinfo, tree, hf_index);
+
+
+ return offset;
+}
+static int dissect_attribute_value_asset_tions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Value_Assertions(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_value_asset_tions);
+}
+static int dissect_attribute_value_assertions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Attribute_Value_Assertions(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_value_assertions);
+}
+
+
+static const value_string ftam_T_retrieval_scope_vals[] = {
+ { 0, "child" },
+ { 1, "all" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_T_retrieval_scope(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_retrieval_scope_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_T_retrieval_scope(TRUE, tvb, offset, pinfo, tree, hf_ftam_retrieval_scope);
+}
+
+static const ber_sequence_t Scope_item_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_root_directory },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_retrieval_scope_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Scope_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ Scope_item_sequence, hf_index, ett_ftam_Scope_item);
+
+ return offset;
+}
+static int dissect_Scope_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Scope_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Scope_item);
+}
+
+static const ber_sequence_t Scope_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Scope_item },
+};
+
+static int
+dissect_ftam_Scope(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
+ Scope_sequence_of, hf_index, ett_ftam_Scope);
+
+
+ return offset;
+}
+static int dissect_scope(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Scope(FALSE, tvb, offset, pinfo, tree, hf_ftam_scope);
+}
+
+static const ber_sequence_t F_LIST_request_sequence[] = {
+ { BER_CLASS_APP, 26, BER_FLAGS_NOOWNTAG, dissect_attribute_value_asset_tions },
+ { BER_CLASS_APP, 28, BER_FLAGS_NOOWNTAG, dissect_scope },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_LIST_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_LIST_request_sequence, hf_index, ett_ftam_F_LIST_request);
+
+ return offset;
+}
+static int dissect_f_list_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_LIST_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_list_request);
+}
+
+static const ber_sequence_t Objects_Attributes_List_sequence_of[1] = {
+ { BER_CLASS_APP, 18, BER_FLAGS_NOOWNTAG, dissect_Objects_Attributes_List_item },
+};
+
+static int
+dissect_ftam_Objects_Attributes_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
+ Objects_Attributes_List_sequence_of, hf_index, ett_ftam_Objects_Attributes_List);
+
+
+ return offset;
+}
+static int dissect_objects_attributes_list(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Objects_Attributes_List(FALSE, tvb, offset, pinfo, tree, hf_ftam_objects_attributes_list);
+}
+
+static const ber_sequence_t F_LIST_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_objects_attributes_list },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_LIST_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_LIST_response_sequence, hf_index, ett_ftam_F_LIST_response);
+
+ return offset;
+}
+static int dissect_f_list_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_LIST_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_list_response);
+}
+
+static const ber_sequence_t F_GROUP_SELECT_request_sequence[] = {
+ { BER_CLASS_APP, 26, BER_FLAGS_NOOWNTAG, dissect_attribute_value_assertions },
+ { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximum_set_size_impl },
+ { BER_CLASS_APP, 28, BER_FLAGS_NOOWNTAG, dissect_scope },
+ { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_SELECT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_SELECT_request_sequence, hf_index, ett_ftam_F_GROUP_SELECT_request);
+
+ return offset;
+}
+static int dissect_f_group_select_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_SELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_select_request);
+}
+
+static const ber_sequence_t F_GROUP_SELECT_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_SELECT_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_SELECT_response_sequence, hf_index, ett_ftam_F_GROUP_SELECT_response);
+
+ return offset;
+}
+static int dissect_f_group_select_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_SELECT_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_select_response);
+}
+
+
+static const value_string ftam_Request_Operation_Result_vals[] = {
+ { 0, "summary" },
+ { 1, "fiii-list" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_Request_Operation_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+
+ return offset;
+}
+static int dissect_request_Operation_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Request_Operation_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_request_Operation_result);
+}
+
+static const ber_sequence_t F_GROUP_DELETE_request_sequence[] = {
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_Operation_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_DELETE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_DELETE_request_sequence, hf_index, ett_ftam_F_GROUP_DELETE_request);
+
+ return offset;
+}
+static int dissect_f_group_delete_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_DELETE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_delete_request);
+}
+
+static const ber_sequence_t SEQUENCE_OF_Pathname_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_success_Object_names_item },
+};
+
+static int
+dissect_ftam_SEQUENCE_OF_Pathname(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUENCE_OF_Pathname_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Pathname);
+
+ return offset;
+}
+static int dissect_success_Object_names_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_SEQUENCE_OF_Pathname(TRUE, tvb, offset, pinfo, tree, hf_ftam_success_Object_names);
+}
+
+
+static const value_string ftam_Operation_Result_vals[] = {
+ { 0, "success-Object-count" },
+ { 1, "success-Object-names" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Operation_Result_choice[] = {
+ { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_success_Object_count_impl },
+ { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_success_Object_names_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_Operation_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ gint8 class;
+ gboolean pc, ind_field;
+ gint32 tag;
+ gint32 len1;
+
+ /* XXX asn2eth can not yet handle tagged assignment yes so this
+ * XXX is some conformance file magic to work around that bug
+ */
+ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+ offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ Operation_Result_choice, hf_index, ett_ftam_Operation_Result);
+
+
+ return offset;
+}
+static int dissect_operation_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Operation_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_operation_result);
+}
+
+static const ber_sequence_t F_GROUP_DELETE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
+ { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_operation_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_DELETE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_DELETE_response_sequence, hf_index, ett_ftam_F_GROUP_DELETE_response);
+
+ return offset;
+}
+static int dissect_f_group_delete_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_DELETE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_delete_response);
+}
+
+
+static const value_string ftam_Error_Action_vals[] = {
+ { 0, "terminate" },
+ { 1, "continue" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_ftam_Error_Action(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_error_action_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_Error_Action(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_action);
+}
+
+static const ber_sequence_t F_GROUP_MOVE_request_sequence[] = {
+ { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
+ { BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_error_action_impl },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_Operation_result },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_MOVE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_MOVE_request_sequence, hf_index, ett_ftam_F_GROUP_MOVE_request);
+
+ return offset;
+}
+static int dissect_f_group_move_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_MOVE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_move_request);
+}
+
+static const ber_sequence_t F_GROUP_MOVE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_operation_result },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_MOVE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_MOVE_response_sequence, hf_index, ett_ftam_F_GROUP_MOVE_response);
+
+ return offset;
+}
+static int dissect_f_group_move_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_MOVE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_move_response);
+}
+
+static const ber_sequence_t F_GROUP_COPY_request_sequence[] = {
+ { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_action_impl },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_Operation_result },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_COPY_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_COPY_request_sequence, hf_index, ett_ftam_F_GROUP_COPY_request);
+
+ return offset;
+}
+static int dissect_f_group_copy_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_COPY_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_copy_request);
+}
+
+static const ber_sequence_t F_GROUP_COPY_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_operation_result },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_COPY_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_COPY_response_sequence, hf_index, ett_ftam_F_GROUP_COPY_response);
+
+ return offset;
+}
+static int dissect_f_group_copy_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_COPY_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_copy_response);
+}
+
+static const ber_sequence_t F_GROUP_LIST_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_LIST_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_LIST_request_sequence, hf_index, ett_ftam_F_GROUP_LIST_request);
+
+ return offset;
+}
+static int dissect_f_group_list_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_LIST_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_list_request);
+}
+
+static const ber_sequence_t F_GROUP_LIST_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_objects_attributes_list },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_LIST_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_LIST_response_sequence, hf_index, ett_ftam_F_GROUP_LIST_response);
+
+ return offset;
+}
+static int dissect_f_group_list_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_LIST_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_list_response);
+}
+
+static const ber_sequence_t F_GROUP_CHANGE_ATTRIB_request_sequence[] = {
+ { BER_CLASS_APP, 8, BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_action_impl },
+ { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_Operation_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_CHANGE_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_CHANGE_ATTRIB_request_sequence, hf_index, ett_ftam_F_GROUP_CHANGE_ATTRIB_request);
+
+ return offset;
+}
+static int dissect_f_group_Change_attrib_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_CHANGE_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_Change_attrib_request);
+}
+
+static const ber_sequence_t F_GROUP_CHANGE_ATTRIB_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_operation_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_GROUP_CHANGE_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_GROUP_CHANGE_ATTRIB_response_sequence, hf_index, ett_ftam_F_GROUP_CHANGE_ATTRIB_response);
+
+ return offset;
+}
+static int dissect_f_group_Change_attrib_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_GROUP_CHANGE_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_Change_attrib_response);
+}
+
+static const ber_sequence_t F_SELECT_ANOTHER_request_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_SELECT_ANOTHER_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_SELECT_ANOTHER_request_sequence, hf_index, ett_ftam_F_SELECT_ANOTHER_request);
+
+ return offset;
+}
+static int dissect_f_select_another_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_SELECT_ANOTHER_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_another_request);
+}
+
+static const ber_sequence_t F_SELECT_ANOTHER_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_last_member_indicator_impl },
+ { BER_CLASS_APP, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_referent_indicator },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_SELECT_ANOTHER_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_SELECT_ANOTHER_response_sequence, hf_index, ett_ftam_F_SELECT_ANOTHER_response);
+
+ return offset;
+}
+static int dissect_f_select_another_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_SELECT_ANOTHER_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_another_response);
+}
+
+static const ber_sequence_t F_CREATE_DIRECTORY_request_sequence[] = {
+ { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_infonnation },
+ { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CREATE_DIRECTORY_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CREATE_DIRECTORY_request_sequence, hf_index, ett_ftam_F_CREATE_DIRECTORY_request);
+
+ return offset;
+}
+static int dissect_f_create_directory_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CREATE_DIRECTORY_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_directory_request);
+}
+
+static const ber_sequence_t F_CREATE_DIRECTORY_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CREATE_DIRECTORY_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CREATE_DIRECTORY_response_sequence, hf_index, ett_ftam_F_CREATE_DIRECTORY_response);
+
+ return offset;
+}
+static int dissect_f_create_directory_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CREATE_DIRECTORY_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_directory_response);
+}
+
+static const ber_sequence_t F_LINK_request_sequence[] = {
+ { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
+ { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_target_object },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_concurrency_control },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_account },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_LINK_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_LINK_request_sequence, hf_index, ett_ftam_F_LINK_request);
+
+ return offset;
+}
+static int dissect_f_link_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_LINK_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_link_request);
+}
+
+static const ber_sequence_t F_LINK_response_sequence[] = {
+ { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
+ { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_target_Object },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_LINK_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_LINK_response_sequence, hf_index, ett_ftam_F_LINK_response);
+
+ return offset;
+}
+static int dissect_f_link_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_LINK_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_link_response);
+}
+
+static const ber_sequence_t F_UNLINK_request_sequence[] = {
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_UNLINK_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_UNLINK_request_sequence, hf_index, ett_ftam_F_UNLINK_request);
+
+ return offset;
+}
+static int dissect_f_unlink_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_UNLINK_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_unlink_request);
+}
+
+static const ber_sequence_t F_UNLINK_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
+ { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_UNLINK_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_UNLINK_response_sequence, hf_index, ett_ftam_F_UNLINK_response);
+
+ return offset;
+}
+static int dissect_f_unlink_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_UNLINK_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_unlink_response);
+}
+
+static const ber_sequence_t F_READ_LINK_ATTRIB_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_READ_LINK_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_READ_LINK_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_LINK_ATTRIB_request);
+
+ return offset;
+}
+static int dissect_f_read_link_attrib_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_READ_LINK_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_link_attrib_request);
+}
+
+static const ber_sequence_t F_READ_LINK_ATTRIB_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_read_link_attributes },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_READ_LINK_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_READ_LINK_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_LINK_ATTRIB_response);
+
+ return offset;
+}
+static int dissect_f_read_link_attrib_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_READ_LINK_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_link_attrib_response);
+}
+
+static const ber_sequence_t F_CHANGE_LINK_ATTRIB_request_sequence[] = {
+ { BER_CLASS_APP, 8, BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHANGE_LINK_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHANGE_LINK_ATTRIB_request_sequence, hf_index, ett_ftam_F_CHANGE_LINK_ATTRIB_request);
+
+ return offset;
+}
+static int dissect_f_Change_link_attrib_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CHANGE_LINK_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_link_attrib_request);
+}
+
+static const ber_sequence_t F_CHANGE_LINK_ATTRIB_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHANGE_LINK_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHANGE_LINK_ATTRIB_response_sequence, hf_index, ett_ftam_F_CHANGE_LINK_ATTRIB_response);
+
+ return offset;
+}
+static int dissect_f_Change_Iink_attrib_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_CHANGE_LINK_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_Iink_attrib_response);
+}
+
+static const ber_sequence_t F_MOVE_request_sequence[] = {
+ { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_MOVE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_MOVE_request_sequence, hf_index, ett_ftam_F_MOVE_request);
+
+ return offset;
+}
+static int dissect_f_move_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_MOVE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_move_request);
+}
+
+static const ber_sequence_t F_MOVE_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_MOVE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_MOVE_response_sequence, hf_index, ett_ftam_F_MOVE_response);
+
+ return offset;
+}
+static int dissect_f_move_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_MOVE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_move_response);
+}
+
+static const ber_sequence_t F_COPY_request_sequence[] = {
+ { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
+ { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
+ { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
+ { BER_CLASS_APP, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_path_access_passwords },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_COPY_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_COPY_request_sequence, hf_index, ett_ftam_F_COPY_request);
+
+ return offset;
+}
+static int dissect_f_copy_request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_COPY_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_copy_request);
+}
+
+static const ber_sequence_t F_COPY_response_sequence[] = {
+ { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
+ { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
+ { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
+ { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_COPY_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_COPY_response_sequence, hf_index, ett_ftam_F_COPY_response);
+
+ return offset;
+}
+static int dissect_f_copy_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_F_COPY_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_copy_response);
+}
+
+
+static const value_string ftam_FSM_PDU_vals[] = {
+ { 41, "f-Change-prefix-request" },
+ { 42, "f-Change-prefix-response" },
+ { 43, "f-list-request" },
+ { 44, "f-list-response" },
+ { 45, "f-group-select-request" },
+ { 46, "f-group-select-response" },
+ { 47, "f-group-delete-request" },
+ { 48, "f-group-delete-response" },
+ { 49, "f-group-move-request" },
+ { 50, "f-group-move-response" },
+ { 51, "f-group-copy-request" },
+ { 52, "f-group-copy-response" },
+ { 53, "f-group-list-request" },
+ { 54, "f-group-list-response" },
+ { 55, "f-group-Change-attrib-request" },
+ { 56, "f-group-Change-attrib-response" },
+ { 57, "f-select-another-request" },
+ { 58, "f-select-another-response" },
+ { 59, "f-create-directory-request" },
+ { 60, "f-create-directory-response" },
+ { 61, "f-link-request" },
+ { 62, "f-link-response" },
+ { 63, "f-unlink-request" },
+ { 64, "f-unlink-response" },
+ { 65, "f-read-link-attrib-request" },
+ { 66, "f-read-link-attrib-response" },
+ { 67, "f-Change-link-attrib-request" },
+ { 68, "f-Change-Iink-attrib-response" },
+ { 69, "f-move-request" },
+ { 70, "f-move-response" },
+ { 71, "f-copy-request" },
+ { 72, "f-copy-response" },
+ { 0, NULL }
+};
+
+static const ber_choice_t FSM_PDU_choice[] = {
+ { 41, BER_CLASS_CON, 41, BER_FLAGS_IMPLTAG, dissect_f_Change_prefix_request_impl },
+ { 42, BER_CLASS_CON, 42, BER_FLAGS_IMPLTAG, dissect_f_Change_prefix_response_impl },
+ { 43, BER_CLASS_CON, 43, BER_FLAGS_IMPLTAG, dissect_f_list_request_impl },
+ { 44, BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_f_list_response_impl },
+ { 45, BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_f_group_select_request_impl },
+ { 46, BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_f_group_select_response_impl },
+ { 47, BER_CLASS_CON, 47, BER_FLAGS_IMPLTAG, dissect_f_group_delete_request_impl },
+ { 48, BER_CLASS_CON, 48, BER_FLAGS_IMPLTAG, dissect_f_group_delete_response_impl },
+ { 49, BER_CLASS_CON, 49, BER_FLAGS_IMPLTAG, dissect_f_group_move_request_impl },
+ { 50, BER_CLASS_CON, 50, BER_FLAGS_IMPLTAG, dissect_f_group_move_response_impl },
+ { 51, BER_CLASS_CON, 51, BER_FLAGS_IMPLTAG, dissect_f_group_copy_request_impl },
+ { 52, BER_CLASS_CON, 52, BER_FLAGS_IMPLTAG, dissect_f_group_copy_response_impl },
+ { 53, BER_CLASS_CON, 53, BER_FLAGS_IMPLTAG, dissect_f_group_list_request_impl },
+ { 54, BER_CLASS_CON, 54, BER_FLAGS_IMPLTAG, dissect_f_group_list_response_impl },
+ { 55, BER_CLASS_CON, 55, BER_FLAGS_IMPLTAG, dissect_f_group_Change_attrib_request_impl },
+ { 56, BER_CLASS_CON, 56, BER_FLAGS_IMPLTAG, dissect_f_group_Change_attrib_response_impl },
+ { 57, BER_CLASS_CON, 57, BER_FLAGS_IMPLTAG, dissect_f_select_another_request_impl },
+ { 58, BER_CLASS_CON, 58, BER_FLAGS_IMPLTAG, dissect_f_select_another_response_impl },
+ { 59, BER_CLASS_CON, 59, BER_FLAGS_IMPLTAG, dissect_f_create_directory_request_impl },
+ { 60, BER_CLASS_CON, 60, BER_FLAGS_IMPLTAG, dissect_f_create_directory_response_impl },
+ { 61, BER_CLASS_CON, 61, BER_FLAGS_IMPLTAG, dissect_f_link_request_impl },
+ { 62, BER_CLASS_CON, 62, BER_FLAGS_IMPLTAG, dissect_f_link_response_impl },
+ { 63, BER_CLASS_CON, 63, BER_FLAGS_IMPLTAG, dissect_f_unlink_request_impl },
+ { 64, BER_CLASS_CON, 64, BER_FLAGS_IMPLTAG, dissect_f_unlink_response_impl },
+ { 65, BER_CLASS_CON, 65, BER_FLAGS_IMPLTAG, dissect_f_read_link_attrib_request_impl },
+ { 66, BER_CLASS_CON, 66, BER_FLAGS_IMPLTAG, dissect_f_read_link_attrib_response_impl },
+ { 67, BER_CLASS_CON, 67, BER_FLAGS_IMPLTAG, dissect_f_Change_link_attrib_request_impl },
+ { 68, BER_CLASS_CON, 68, BER_FLAGS_IMPLTAG, dissect_f_Change_Iink_attrib_response_impl },
+ { 69, BER_CLASS_CON, 69, BER_FLAGS_IMPLTAG, dissect_f_move_request_impl },
+ { 70, BER_CLASS_CON, 70, BER_FLAGS_IMPLTAG, dissect_f_move_response_impl },
+ { 71, BER_CLASS_CON, 71, BER_FLAGS_IMPLTAG, dissect_f_copy_request_impl },
+ { 72, BER_CLASS_CON, 72, BER_FLAGS_IMPLTAG, dissect_f_copy_response_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_FSM_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ FSM_PDU_choice, hf_index, ett_ftam_FSM_PDU);
+
+ return offset;
+}
+static int dissect_fSM_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_ftam_FSM_PDU(FALSE, tvb, offset, pinfo, tree, hf_ftam_fSM_PDU);
+}
+
+
+static const value_string ftam_PDU_vals[] = {
+ { -1/*choice*/, "fTAM-Regime-PDU" },
+ { -1/*choice*/, "file-PDU" },
+ { -1/*choice*/, "bulk-Data-PDU" },
+ { -1/*choice*/, "fSM-PDU" },
+ { 0, NULL }
+};
+
+static const ber_choice_t PDU_choice[] = {
+ { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_fTAM_Regime_PDU },
+ { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_file_PDU },
+ { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_bulk_Data_PDU },
+ { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_fSM_PDU },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ PDU_choice, hf_index, ett_ftam_PDU);
+
+ return offset;
+}
+
+static const ber_sequence_t F_CHECK_request_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHECK_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHECK_request_sequence, hf_index, ett_ftam_F_CHECK_request);
+
+ return offset;
+}
+
+static const ber_sequence_t F_CHECK_response_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_ftam_F_CHECK_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ F_CHECK_response_sequence, hf_index, ett_ftam_F_CHECK_response);
+
+ return offset;
+}
+
+static const ber_sequence_t OR_Set_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_OR_Set_item },
+};
+
+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_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ OR_Set_sequence_of, hf_index, ett_ftam_OR_Set);
+
+ return offset;
+}
+
+
+static int
+dissect_ftam_Other_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ftam_Equality_Comparision(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+
+/*--- End of included file: packet-ftam-fn.c ---*/
+
/*
* Dissect FTAM PDUs inside a PPDU.
*/
static void
-dissect_ftam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+dissect_ftam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
int offset = 0;
- guint s_type;
-
-/* first, try to check length */
-/* do we have at least 2 bytes */
- if (!tvb_bytes_exist(tvb, 0, 2))
- {
- proto_tree_add_text(tree, tvb, offset,tvb_reported_length_remaining(tvb,offset),
- "User data");
- return; /* no, it isn't a FTAM PDU */
- }
-
-/* do we have spdu type from the session dissector? */
- if( !pinfo->private_data )
- {
- if(tree)
- {
- proto_tree_add_text(tree, tvb, offset, -1,
- "Internal error:can't get spdu type from session dissector.");
- return ;
- }
- }
- else
- {
- session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
- if(session->spdu_type == 0 )
- {
- if(tree)
- {
- proto_tree_add_text(tree, tvb, offset, -1,
- "Internal error:wrong spdu type %x from session dissector.",session->spdu_type);
- return ;
- }
- }
- }
-
-/* get type of tag */
- s_type = tvb_get_guint8(tvb, offset);
-
- /* check PDU type */
- if ( (match_strval(s_type, ftam_pdu_vals) == NULL) && (match_strval(s_type, ftam_data_vals) == NULL))
- {
- return ; /* no, it isn't a FTAM PDU */
- }
-
- /* we can't make any additional checking here */
- /* postpone it before dissector will have more information */
+ int old_offset;
+ proto_item *item=NULL;
+ proto_tree *tree=NULL;
+ if(parent_tree){
+ item = proto_tree_add_item(parent_tree, proto_ftam, tvb, 0, -1, FALSE);
+ tree = proto_item_add_subtree(item, ett_ftam);
+ }
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FTAM");
if (check_col(pinfo->cinfo, COL_INFO))
col_clear(pinfo->cinfo, COL_INFO);
- while (tvb_reported_length_remaining(tvb, offset) > 0)
- {
- offset = dissect_pdu(tvb, offset, pinfo, tree);
- if(offset == FALSE )
- {
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error");
- offset = tvb_length(tvb);
- break;
- }
- }
+ while (tvb_reported_length_remaining(tvb, offset) > 0){
+ old_offset=offset;
+ offset=dissect_ftam_PDU(FALSE, tvb, offset, pinfo , tree, -1);
+ if(offset == old_offset){
+ proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte FTAM PDU");
+ offset = tvb_length(tvb);
+ break;
+ }
+ }
}
-void
-proto_register_ftam(void)
-{
- static hf_register_info hf[] =
- {
- {
- &hf_ftam_type,
- {
- "PDU Type",
- "ftam.type",
- FT_UINT8,
- BASE_DEC,
- VALS(ftam_pdu_vals),
- 0x0,
- "", HFILL
- }
- },
- {
- &hf_cp_type_message_length,
- {
- "Message Length",
- "cp_type.message_length",
- FT_UINT32,
- BASE_DEC,
- NULL,
- 0x0,
- "CP type Message Length",
- HFILL
- }
- },
- {
- &hf_protocol_version,
- {
- "Protocol version 1",
- "ftam.protocol.version",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PROTOCOL_VERGION,
- "Protocol version 1",
- HFILL
- }
- },
- {
- &hf_functional_unit_read,
- {
- "Read",
- "ftam.functional.units.read",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_READ,
- "Read",
- HFILL
- }
- },
- {
- &hf_functional_unit_write,
- {
- "Write",
- "ftam.functional.units.write",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_WRITE,
- "Write",
- HFILL
- }
- },
- {
- &hf_functional_unit_file_access,
- {
- "File access",
- "ftam.functional.units.file_access",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_FILE_ACCESS,
- "File access",
- HFILL
- }
- },
- {
- &hf_functional_unit_limited_file_management,
- {
- "Limited file management",
- "ftam.functional.units.limited_file_management",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_LIMITED_FILE_MANAGEMENT,
- "Limited file management",
- HFILL
- }
- },
- {
- &hf_functional_unit_enhanced_file_management,
- {
- "Enhanced file management",
- "ftam.functional.units.enhanced_file_management",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_ENHANCED_FILE_MANAGEMENT,
- "Enhanced file management",
- HFILL
- }
- },
- {
- &hf_functional_unit_grouping,
- {
- "Grouping",
- "ftam.functional.units.grouping",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_GROUPING,
- "Grouping",
- HFILL
- }
- },
- {
- &hf_functional_unit_fadu_locking,
- {
- "Fadu locking",
- "ftam.functional.units.fadu_locking",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_FADU_LOCKING,
- "Fadu locking",
- HFILL
- }
- },
- {
- &hf_functional_unit_recovery,
- {
- "Recovery",
- "ftam.functional.units.recovery",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_RECOVERY,
- "Recovery",
- HFILL
- }
- },
- {
- &hf_functional_unit_restart_data_transfer,
- {
- "Restart data transfer",
- "ftam.functional.units.restart_data_transfer",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FUNCTIONAL_UNIT_RESTART_DATA_TRANSFER,
- "Restart data transfer",
- HFILL
- }
- },
- {
- &hf_service_class_unconstrained_class,
- {
- "Unconstrained class",
- "ftam.functional.units.unconstrained_class",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_FUNCTIONAL_UNIT_UNCONSTRAINED_CLASS,
- "Unconstrained class",
- HFILL
- }
- },
- {
- &hf_service_class_management_class,
- {
- "Management class",
- "ftam.functional.units.management_class",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_FUNCTIONAL_UNIT_MANAGEMENT_CLASS,
- "Management class",
- HFILL
- }
- },
- {
- &hf_service_class_transfer_class,
- {
- "Transfer class",
- "ftam.functional.units.transfer_class",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_FUNCTIONAL_UNIT_TRANSFER_CLASS,
- "Transfer class",
- HFILL
- }
- },
- {
- &hf_service_class_transfer_and_management_class,
- {
- "Transfer and management class",
- "ftam.functional.units.transfer_and_management_class",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_FUNCTIONAL_UNIT_TRANSFER_AND_MANAGEMENT_CLASS,
- "Transfer and management class",
- HFILL
- }
- },
- {
- &hf_service_class_access_class,
- {
- "Access class",
- "ftam.functional.units.access_class",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_FUNCTIONAL_UNIT_ACESS_CLASS,
- "access class",
- HFILL
- }
- },
- {
- &hf_attribute_groups_storage,
- {
- "Storage",
- "ftam.attribute.group.storage",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_ATTRIBUTE_GROUPS_STORAGE,
- "Storage",
- HFILL
- }
- },
- {
- &hf_attribute_groups_security,
- {
- "Security",
- "ftam.attribute.group.security",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_ATTRIBUTE_GROUPS_SECURITY,
- "Security",
- HFILL
- }
- },
- {
- &hf_attribute_groups_private,
- {
- "Private",
- "ftam.attribute.group.private",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_ATTRIBUTE_GROUPS_PRIVATE,
- "Private",
- HFILL
- }
- },
- {
- &hf_filename_attribute_read,
- {
- "Read",
- "ftam.filename.attribute.read",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_READ,
- "Read",
- HFILL
- }
- },
- {
- &hf_filename_attribute_insert,
- {
- "Insert",
- "ftam.filename.attribute.insert",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_INSERT,
- "Insert",
- HFILL
- }
- },
- {
- &hf_filename_attribute_replace,
- {
- "Replace",
- "ftam.filename.attribute.replace",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_REPLACE,
- "Replace",
- HFILL
- }
- },
- {
- &hf_filename_attribute_extend,
- {
- "Extend",
- "ftam.filename.attribute.extend",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_EXTEND,
- "Extend",
- HFILL
- }
- },
- {
- &hf_filename_attribute_erase,
- {
- "Erase",
- "ftam.filename.attribute.erase",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_ERASE,
- "Erase",
- HFILL
- }
- },
- {
- &hf_filename_attribute_read_attribute,
- {
- "Read attribute",
- "ftam.filename.attribute.read_attribute",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_READ_ATTRIBUTE,
- "Read attribute",
- HFILL
- }
- },
- {
- &hf_filename_attribute_change_attribute,
- {
- "Change attribute",
- "ftam.filename.attribute.change_attribute",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_CHANGE_ATTRIBUTE,
- "Change attribute",
- HFILL
- }
- },
- {
- &hf_filename_attribute_delete_file,
- {
- "Delete file",
- "ftam.filename.attribute.delete_file",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_FILENAME_ATTRIBUTE_DELETE_FILE,
- "Delete file",
- HFILL
- }
- },
- {
- &hf_processing_mode_read,
- {
- "f-read",
- "ftam.processing.mode.read",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PROCESSING_MODE_READ,
- "f-read",
- HFILL
- }
- },
- {
- &hf_processing_mode_replace,
- {
- "f-replace",
- "ftam.processing.mode.replace",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PROCESSING_MODE_REPLACE,
- "f-replace",
- HFILL
- }
- },
- {
- &hf_processing_mode_insert,
- {
- "f-insert",
- "ftam.processing.mode.insert",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PROCESSING_MODE_INSERT,
- "f-insert",
- HFILL
- }
- },
- {
- &hf_processing_mode_extend,
- {
- "f-extend",
- "ftam.processing.mode.extend",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PROCESSING_MODE_EXTEND,
- "f-extend",
- HFILL
- }
- },
- {
- &hf_processing_mode_erase,
- {
- "f-erase",
- "ftam.processing.mode.erase",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PROCESSING_MODE_ERASE,
- "f-erase",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_read,
- {
- "Read",
- "ftam.permitted.action.attribute.read",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_READ,
- "Read",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_insert,
- {
- "Insert",
- "ftam.permitted.action.attribute.insert",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_INSERT,
- "Insert",
- HFILL
- }
- },
-
- {
- &hf_permitted_action_attribute_replace,
- {
- "Replace",
- "ftam.permitted.action.attribute.replace",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_REPLACE,
- "Replace",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_extend,
- {
- "Extend",
- "ftam.permitted.action.attribute.extend",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_EXTEND,
- "Extend",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_erase,
- {
- "Erase",
- "ftam.permitted.action.attribute.erase",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_ERASE,
- "Erase",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_read_attribute,
- {
- "Read attribute",
- "ftam.permitted.action.attribute.read.attribute",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_READ_ATTRIBUTE,
- "Read attribute",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_change_attribute,
- {
- "Change attribute",
- "ftam.permitted.action.attribute.read.attribute",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_CHANGE_ATTRIBUTE,
- "Change attribute",
- HFILL
- }
- },
- {
- &hf_permitted_action_attribute_delete_file,
- {
- "Delete file",
- "ftam.permitted.action.attribute.delete.file",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_DELETE_FILE,
- "Delete file",
- HFILL
- }
- },
- {
- &hf_permitted_action_traversal,
- {
- "Traversal",
- "ftam.permitted.action.attribute.traversal",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_TRAVERSAL,
- "Traversal",
- HFILL
- }
- },
- {
- &hf_permitted_action_reverse_traversal,
- {
- "Reverse traversal",
- "ftam.permitted.action.attribute.reverse.traversal",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_REVERSE_TRAVERSAL,
- "Reverse raversal",
- HFILL
- }
- },
- {
- &hf_permitted_action_random_order,
- {
- "Random order",
- "ftam.permitted.action.attribute.random.order",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_PERMITTED_ACTION_ATTRIBUTE_RANDOM_ORDER,
- "Random order",
- HFILL
- }
- },
- {
- &hf_nbs9_read_filename,
- {
- "Read filename",
- "ftam.nbs9.read.filename",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_FILENAME,
- "Read filename",
- HFILL
- }
- },
- {
- &hf_nbs9_read_permitted_actions,
- {
- "Read permitted actions",
- "ftam.nbs9.read.permitted.actions",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_PERMITTED_ACTIONS,
- "Read permitted actions",
- HFILL
- }
- },
- {
- &hf_nbs9_read_contents_type,
- {
- "Read contents type",
- "ftam.nbs9.read.contents.type",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_CONTENTS_TYPE,
- "Read contents type",
- HFILL
- }
- },
- {
- &hf_nbs9_read_storage_account,
- {
- "Read storage account",
- "ftam.nbs9.read.storage.account",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_STORAGE_ACCOUNT,
- "Read storage account",
- HFILL
- }
- },
- {
- &hf_nbs9_read_date_and_time_of_creation,
- {
- "Read date and time of creation",
- "ftam.nbs9.read.date.and.time.of.creation",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_DATE_AND_TIME_OF_CREATION,
- "Read date and time of creation",
- HFILL
- }
- },
- {
- &hf_nbs9_read_date_and_time_of_last_modification,
- {
- "Read date and time of last modification",
- "ftam.nbs9.read.date.and.time.of.last.modification",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_MODIFICATION,
- "Read date and time of last modification",
- HFILL
- }
- },
- {
- &hf_nbs9_read_date_and_time_of_read_access,
- {
- "Read date and time of last read access",
- "ftam.nbs9.read.date.and.time.of.last.read.access",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_READ_ACCESS,
- "Read date and time of last read access",
- HFILL
- }
- },
- {
- &hf_nbs9_read_date_and_time_of_attribute_modification,
- {
- "Read date and time of last attribute modification",
- "ftam.nbs9.read.date.and.time.of.last.attribute.modification",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION,
- "Read date and time of last attribute modification",
- HFILL
- }
- },
- {
- &hf_nbs9_read_identity_of_creator,
- {
- "Read identity of creator",
- "ftam.nbs9.read.identity.of.creator",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_IDENTITY_OF_CREATOR,
- "Read identity of creator",
- HFILL
- }
- },
- {
- &hf_nbs9_read_identity_of_last_modifier,
- {
- "Read identity of last modifier",
- "ftam.nbs9.read.identity.of.last.modifier",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_IDENTITY_OF_LAST_MODIFIER,
- "Read identity of last modifier",
- HFILL
- }
- },
- {
- &hf_nbs9_read_identity_of_last_reader,
- {
- "Read identity of last reader",
- "ftam.nbs9.read.identity.of.last.reader",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_IDENTITY_OF_LAST_READER,
- "Read identity of last reader",
- HFILL
- }
- },
- {
- &hf_nbs9_read_identity_of_last_attribute_modifier,
- {
- "Read identity of last attribute modifier",
- "ftam.nbs9.read.identity.of.last.attribute.modifier",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER,
- "Read identity of last attribute modifier",
- HFILL
- }
- },
- {
- &hf_nbs9_read_file_availability,
- {
- "Read file availability",
- "ftam.nbs9.read.file.availability",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_FILE_AVAILABILITY,
- "Read file availability",
- HFILL
- }
- },
- {
- &hf_nbs9_read_filesize,
- {
- "Read filesize",
- "ftam.nbs9.read.file.filesize",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_FILESIZE,
- "Read filesize",
- HFILL
- }
- },
- {
- &hf_nbs9_read_future_filesize,
- {
- "Read future filesize",
- "ftam.nbs9.read.future.filesize",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_FUTURE_FILESIZE,
- "Read future filesize",
- HFILL
- }
- },
- {
- &hf_nbs9_read_access_control,
- {
- "Read access control",
- "ftam.nbs9.read.access_control",
- FT_BOOLEAN, 16,
- NULL,
- FTAM_NBS9_READ_ACCESS_CONTROL,
- "Read access control",
- HFILL
- }
- },
- {
- &hf_nbs9_read_legal_qualifications,
- {
- "Read legal qualifications",
- "ftam.nbs9.read.legal.qualifications",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_NBS9_READ_LEGAL_QUALIFICATIONS,
- "Read legal qualifications",
- HFILL
- }
- },
-
- {
- &hf_nbs9_read_private_use,
- {
- "Read private use",
- "ftam.nbs9.read.private.use",
- FT_BOOLEAN, 8,
- NULL,
- FTAM_NBS9_READ_PRIVATE_USE,
- "Read private use",
- HFILL
- }
- },
- };
- static gint *ett[] =
- {
- &ett_ftam,
- &ett_ftam_param,
- &ett_ftam_rc,
- &ett_ftam_ms,
- &ett_ftam_itm,
- };
- module_t *ftam_module;
- proto_ftam = proto_register_protocol(PROTO_STRING_FTAM, "FTAM", "ftam");
- proto_register_field_array(proto_ftam, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- ftam_module = prefs_register_protocol(proto_ftam, NULL);
-}
-
-void
-proto_reg_handoff_ftam(void)
-{
- /* find data dissector */
- data_handle = find_dissector("data");
- register_ber_oid_dissector("1.0.8571.1.1", dissect_ftam, proto_ftam, "ftam");
+
+/*--- proto_register_ftam -------------------------------------------*/
+void proto_register_ftam(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] =
+ {
+
+/*--- Included file: packet-ftam-hfarr.c ---*/
+
+ { &hf_ftam_fTAM_Regime_PDU,
+ { "fTAM-Regime-PDU", "ftam.fTAM_Regime_PDU",
+ FT_UINT32, BASE_DEC, VALS(ftam_FTAM_Regime_PDU_vals), 0,
+ "PDU/fTAM-Regime-PDU", HFILL }},
+ { &hf_ftam_file_PDU,
+ { "file-PDU", "ftam.file_PDU",
+ FT_UINT32, BASE_DEC, VALS(ftam_File_PDU_vals), 0,
+ "PDU/file-PDU", HFILL }},
+ { &hf_ftam_bulk_Data_PDU,
+ { "bulk-Data-PDU", "ftam.bulk_Data_PDU",
+ FT_UINT32, BASE_DEC, VALS(ftam_Bulk_Data_PDU_vals), 0,
+ "PDU/bulk-Data-PDU", HFILL }},
+ { &hf_ftam_fSM_PDU,
+ { "fSM-PDU", "ftam.fSM_PDU",
+ FT_UINT32, BASE_DEC, VALS(ftam_FSM_PDU_vals), 0,
+ "PDU/fSM-PDU", HFILL }},
+ { &hf_ftam_f_initialize_request,
+ { "f-initialize-request", "ftam.f_initialize_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FTAM-Regime-PDU/f-initialize-request", HFILL }},
+ { &hf_ftam_f_initialize_response,
+ { "f-initialize-response", "ftam.f_initialize_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FTAM-Regime-PDU/f-initialize-response", HFILL }},
+ { &hf_ftam_f_terminate_request,
+ { "f-terminate-request", "ftam.f_terminate_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FTAM-Regime-PDU/f-terminate-request", HFILL }},
+ { &hf_ftam_f_terminate_response,
+ { "f-terminate-response", "ftam.f_terminate_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FTAM-Regime-PDU/f-terminate-response", HFILL }},
+ { &hf_ftam_f_u_abort_request,
+ { "f-u-abort-request", "ftam.f_u_abort_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FTAM-Regime-PDU/f-u-abort-request", HFILL }},
+ { &hf_ftam_f_p_abort_request,
+ { "f-p-abort-request", "ftam.f_p_abort_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FTAM-Regime-PDU/f-p-abort-request", HFILL }},
+ { &hf_ftam_protocol_Version,
+ { "protocol-Version", "ftam.protocol_Version",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_implementation_information,
+ { "implementation-information", "ftam.implementation_information",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_presentation_tontext_management,
+ { "presentation-tontext-management", "ftam.presentation_tontext_management",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_service_class,
+ { "service-class", "ftam.service_class",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_functional_units,
+ { "functional-units", "ftam.functional_units",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_attribute_groups,
+ { "attribute-groups", "ftam.attribute_groups",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_shared_ASE_information,
+ { "shared-ASE-information", "ftam.shared_ASE_information",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_ftam_quality_of_Service,
+ { "ftam-quality-of-Service", "ftam.ftam_quality_of_Service",
+ FT_INT32, BASE_DEC, VALS(ftam_FTAM_Quality_of_Service_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_contents_type_list,
+ { "contents-type-list", "ftam.contents_type_list",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_initiator_identity,
+ { "initiator-identity", "ftam.initiator_identity",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "F-INITIALIZE-request/initiator-identity", HFILL }},
+ { &hf_ftam_account,
+ { "account", "ftam.account",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_filestore_password,
+ { "filestore-password", "ftam.filestore_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "F-INITIALIZE-request/filestore-password", HFILL }},
+ { &hf_ftam_checkpoint_window,
+ { "checkpoint-window", "ftam.checkpoint_window",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_state_result,
+ { "state-result", "ftam.state_result",
+ FT_INT32, BASE_DEC, VALS(ftam_State_Result_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_action_result,
+ { "action-result", "ftam.action_result",
+ FT_INT32, BASE_DEC, VALS(ftam_Action_Result_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_diagnostic,
+ { "diagnostic", "ftam.diagnostic",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_Contents_Type_List_item,
+ { "Item", "ftam.Contents_Type_List_item",
+ FT_UINT32, BASE_DEC, VALS(ftam_Contents_Type_List_item_vals), 0,
+ "Contents-Type-List/_item", HFILL }},
+ { &hf_ftam_document_type_name,
+ { "document-type-name", "ftam.document_type_name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_abstract_Syntax_name,
+ { "abstract-Syntax-name", "ftam.abstract_Syntax_name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_charging,
+ { "charging", "ftam.charging",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_f_select_request,
+ { "f-select-request", "ftam.f_select_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-select-request", HFILL }},
+ { &hf_ftam_f_select_response,
+ { "f-select-response", "ftam.f_select_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-select-response", HFILL }},
+ { &hf_ftam_f_deselect_request,
+ { "f-deselect-request", "ftam.f_deselect_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-deselect-request", HFILL }},
+ { &hf_ftam_f_deselect_response,
+ { "f-deselect-response", "ftam.f_deselect_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-deselect-response", HFILL }},
+ { &hf_ftam_f_create_request,
+ { "f-create-request", "ftam.f_create_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-create-request", HFILL }},
+ { &hf_ftam_f_create_response,
+ { "f-create-response", "ftam.f_create_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-create-response", HFILL }},
+ { &hf_ftam_f_delete_request,
+ { "f-delete-request", "ftam.f_delete_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-delete-request", HFILL }},
+ { &hf_ftam_f_delete_response,
+ { "f-delete-response", "ftam.f_delete_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-delete-response", HFILL }},
+ { &hf_ftam_f_read_attrib_request,
+ { "f-read-attrib-request", "ftam.f_read_attrib_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-read-attrib-request", HFILL }},
+ { &hf_ftam_f_read_attrib_response,
+ { "f-read-attrib-response", "ftam.f_read_attrib_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-read-attrib-response", HFILL }},
+ { &hf_ftam_f_Change_attrib_reques,
+ { "f-Change-attrib-reques", "ftam.f_Change_attrib_reques",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-Change-attrib-reques", HFILL }},
+ { &hf_ftam_f_Change_attrib_respon,
+ { "f-Change-attrib-respon", "ftam.f_Change_attrib_respon",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-Change-attrib-respon", HFILL }},
+ { &hf_ftam_f_open_request,
+ { "f-open-request", "ftam.f_open_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-open-request", HFILL }},
+ { &hf_ftam_f_open_response,
+ { "f-open-response", "ftam.f_open_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-open-response", HFILL }},
+ { &hf_ftam_f_close_request,
+ { "f-close-request", "ftam.f_close_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-close-request", HFILL }},
+ { &hf_ftam_f_close_response,
+ { "f-close-response", "ftam.f_close_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-close-response", HFILL }},
+ { &hf_ftam_f_begin_group_request,
+ { "f-begin-group-request", "ftam.f_begin_group_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-begin-group-request", HFILL }},
+ { &hf_ftam_f_begin_group_response,
+ { "f-begin-group-response", "ftam.f_begin_group_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-begin-group-response", HFILL }},
+ { &hf_ftam_f_end_group_request,
+ { "f-end-group-request", "ftam.f_end_group_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-end-group-request", HFILL }},
+ { &hf_ftam_f_end_group_response,
+ { "f-end-group-response", "ftam.f_end_group_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-end-group-response", HFILL }},
+ { &hf_ftam_f_recover_request,
+ { "f-recover-request", "ftam.f_recover_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-recover-request", HFILL }},
+ { &hf_ftam_f_recover_response,
+ { "f-recover-response", "ftam.f_recover_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-recover-response", HFILL }},
+ { &hf_ftam_f_locate_request,
+ { "f-locate-request", "ftam.f_locate_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-locate-request", HFILL }},
+ { &hf_ftam_f_locate_response,
+ { "f-locate-response", "ftam.f_locate_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-locate-response", HFILL }},
+ { &hf_ftam_f_erase_request,
+ { "f-erase-request", "ftam.f_erase_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-erase-request", HFILL }},
+ { &hf_ftam_f_erase_response,
+ { "f-erase-response", "ftam.f_erase_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "File-PDU/f-erase-response", HFILL }},
+ { &hf_ftam_select_attributes,
+ { "attributes", "ftam.attributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_requested_access,
+ { "requested-access", "ftam.requested_access",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_access_passwords,
+ { "access-passwords", "ftam.access_passwords",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_path_access_passwords,
+ { "path-access-passwords", "ftam.path_access_passwords",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_concurrency_control,
+ { "concurrency-control", "ftam.concurrency_control",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_referent_indicator,
+ { "referent-indicator", "ftam.referent_indicator",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_override,
+ { "override", "ftam.override",
+ FT_INT32, BASE_DEC, VALS(ftam_Override_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_initial_attributes,
+ { "initial-attributes", "ftam.initial_attributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_create_password,
+ { "create-password", "ftam.create_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_attribute_names,
+ { "attribute-names", "ftam.attribute_names",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_attribute_extension_names,
+ { "attribute-extension-names", "ftam.attribute_extension_names",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_read_attributes,
+ { "attributes", "ftam.attributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-READ-ATTRIB-response/attributes", HFILL }},
+ { &hf_ftam_attributes,
+ { "attributes", "ftam.attributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_processing_mode,
+ { "processing-mode", "ftam.processing_mode",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "F-OPEN-request/processing-mode", HFILL }},
+ { &hf_ftam_open_contents_type,
+ { "contents-type", "ftam.contents_type",
+ FT_UINT32, BASE_DEC, VALS(ftam_T_contents_type_vals), 0,
+ "F-OPEN-request/contents-type", HFILL }},
+ { &hf_ftam_unknown,
+ { "unknown", "ftam.unknown",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-OPEN-request/contents-type/unknown", HFILL }},
+ { &hf_ftam_proposed,
+ { "proposed", "ftam.proposed",
+ FT_UINT32, BASE_DEC, VALS(ftam_Contents_Type_Attribute_vals), 0,
+ "F-OPEN-request/contents-type/proposed", HFILL }},
+ { &hf_ftam_enable_fadu_locking,
+ { "enable-fadu-locking", "ftam.enable_fadu_locking",
+ FT_BOOLEAN, 8, NULL, 0,
+ "F-OPEN-request/enable-fadu-locking", HFILL }},
+ { &hf_ftam_activity_identifier,
+ { "activity-identifier", "ftam.activity_identifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_request_recovery_mode,
+ { "recovery-mode", "ftam.recovery_mode",
+ FT_INT32, BASE_DEC, VALS(ftam_T_request_recovery_mode_vals), 0,
+ "F-OPEN-request/recovery-mode", HFILL }},
+ { &hf_ftam_remove_contexts,
+ { "remove-contexts", "ftam.remove_contexts",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_remove_contexts_item,
+ { "Item", "ftam.remove_contexts_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_define_contexts,
+ { "define-contexts", "ftam.define_contexts",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_define_contexts_item,
+ { "Item", "ftam.define_contexts_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_degree_of_overlap,
+ { "degree-of-overlap", "ftam.degree_of_overlap",
+ FT_INT32, BASE_DEC, VALS(ftam_Degree_Of_Overlap_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_transfer_window,
+ { "transfer-window", "ftam.transfer_window",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_contents_type,
+ { "contents-type", "ftam.contents_type",
+ FT_UINT32, BASE_DEC, VALS(ftam_Contents_Type_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_response_recovery_mode,
+ { "recovery-mode", "ftam.recovery_mode",
+ FT_INT32, BASE_DEC, VALS(ftam_T_response_recovery_mode_vals), 0,
+ "F-OPEN-response/recovery-mode", HFILL }},
+ { &hf_ftam_presentation_action,
+ { "presentation-action", "ftam.presentation_action",
+ FT_BOOLEAN, 8, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_threshold,
+ { "threshold", "ftam.threshold",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "F-BEGIN-GROUP-request/threshold", HFILL }},
+ { &hf_ftam_bulk_transfer_number,
+ { "bulk-transfer-number", "ftam.bulk_transfer_number",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "F-RECOVER-request/bulk-transfer-number", HFILL }},
+ { &hf_ftam_recovefy_Point,
+ { "recovefy-Point", "ftam.recovefy_Point",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "F-RECOVER-request/recovefy-Point", HFILL }},
+ { &hf_ftam_concurrent_bulk_transfer_number,
+ { "concurrent-bulk-transfer-number", "ftam.concurrent_bulk_transfer_number",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "F-RECOVER-request/concurrent-bulk-transfer-number", HFILL }},
+ { &hf_ftam_concurrent_recovery_point,
+ { "concurrent-recovery-point", "ftam.concurrent_recovery_point",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_last_transfer_end_read_response,
+ { "last-transfer-end-read-response", "ftam.last_transfer_end_read_response",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_last_transfer_end_write_response,
+ { "last-transfer-end-write-response", "ftam.last_transfer_end_write_response",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_recovety_Point,
+ { "recovety-Point", "ftam.recovety_Point",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "F-RECOVER-response/recovety-Point", HFILL }},
+ { &hf_ftam_last_transfer_end_read_request,
+ { "last-transfer-end-read-request", "ftam.last_transfer_end_read_request",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_last_transfer_end_write_request,
+ { "last-transfer-end-write-request", "ftam.last_transfer_end_write_request",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_file_access_data_unit_identity,
+ { "file-access-data-unit-identity", "ftam.file_access_data_unit_identity",
+ FT_UINT32, BASE_DEC, VALS(ftam_FADU_Identity_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_fadu_lock,
+ { "fadu-lock", "ftam.fadu_lock",
+ FT_INT32, BASE_DEC, VALS(ftam_FADU_Lock_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_f_read_request,
+ { "f-read-request", "ftam.f_read_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-read-request", HFILL }},
+ { &hf_ftam_f_write_request,
+ { "f-write-request", "ftam.f_write_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-write-request", HFILL }},
+ { &hf_ftam_f_data_end_request,
+ { "f-data-end-request", "ftam.f_data_end_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-data-end-request", HFILL }},
+ { &hf_ftam_f_transfer_end_request,
+ { "f-transfer-end-request", "ftam.f_transfer_end_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-transfer-end-request", HFILL }},
+ { &hf_ftam_f_transfer_end_response,
+ { "f-transfer-end-response", "ftam.f_transfer_end_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-transfer-end-response", HFILL }},
+ { &hf_ftam_f_cancel_request,
+ { "f-cancel-request", "ftam.f_cancel_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-cancel-request", HFILL }},
+ { &hf_ftam_f_cancel_response,
+ { "f-cancel-response", "ftam.f_cancel_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-cancel-response", HFILL }},
+ { &hf_ftam_f_restart_request,
+ { "f-restart-request", "ftam.f_restart_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-restart-request", HFILL }},
+ { &hf_ftam_f_restart_response,
+ { "f-restart-response", "ftam.f_restart_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Bulk-Data-PDU/f-restart-response", HFILL }},
+ { &hf_ftam_read_access_context,
+ { "access-context", "ftam.access_context",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-READ-request/access-context", HFILL }},
+ { &hf_ftam_transfer_number,
+ { "transfer-number", "ftam.transfer_number",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_file_access_data_unit_Operation,
+ { "file-access-data-unit-Operation", "ftam.file_access_data_unit_Operation",
+ FT_INT32, BASE_DEC, VALS(ftam_T_file_access_data_unit_Operation_vals), 0,
+ "F-WRITE-request/file-access-data-unit-Operation", HFILL }},
+ { &hf_ftam_request_type,
+ { "request-type", "ftam.request_type",
+ FT_INT32, BASE_DEC, VALS(ftam_Request_Type_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_checkpoint_identifier,
+ { "checkpoint-identifier", "ftam.checkpoint_identifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_access_context,
+ { "access-context", "ftam.access_context",
+ FT_INT32, BASE_DEC, VALS(ftam_T_access_context_vals), 0,
+ "Access-Context/access-context", HFILL }},
+ { &hf_ftam_level_number,
+ { "level-number", "ftam.level_number",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Access-Context/level-number", HFILL }},
+ { &hf_ftam_read_password,
+ { "read-password", "ftam.read_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_insert_password,
+ { "insert-password", "ftam.insert_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_replace_password,
+ { "replace-password", "ftam.replace_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_extend_password,
+ { "extend-password", "ftam.extend_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_erase_password,
+ { "erase-password", "ftam.erase_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_read_attribute_password,
+ { "read-attribute-password", "ftam.read_attribute_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_change_attribute_password,
+ { "change-attribute-password", "ftam.change_attribute_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_delete_password,
+ { "delete-password", "ftam.delete_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_pass_passwords,
+ { "pass-passwords", "ftam.pass_passwords",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_link_password,
+ { "link-password", "ftam.link_password",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_pathname,
+ { "pathname", "ftam.pathname",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_storage_account,
+ { "storage-account", "ftam.storage_account",
+ FT_UINT32, BASE_DEC, VALS(ftam_Account_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_object_availability,
+ { "object-availability", "ftam.object_availability",
+ FT_UINT32, BASE_DEC, VALS(ftam_Object_Availability_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_future_Object_size,
+ { "future-Object-size", "ftam.future_Object_size",
+ FT_UINT32, BASE_DEC, VALS(ftam_Object_Size_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_change_attributes_access_control,
+ { "access-control", "ftam.access_control",
+ FT_UINT32, BASE_DEC, VALS(ftam_Access_Control_Change_Attribute_vals), 0,
+ "Change-Attributes/access-control", HFILL }},
+ { &hf_ftam_change_path_access_control,
+ { "path-access-control", "ftam.path_access_control",
+ FT_UINT32, BASE_DEC, VALS(ftam_Access_Control_Change_Attribute_vals), 0,
+ "Change-Attributes/path-access-control", HFILL }},
+ { &hf_ftam_legal_qualification,
+ { "legal-qualification", "ftam.legal_qualification",
+ FT_UINT32, BASE_DEC, VALS(ftam_Legal_Qualification_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_private_use,
+ { "private-use", "ftam.private_use",
+ FT_UINT32, BASE_DEC, VALS(ftam_Private_Use_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_attribute_extensions,
+ { "attribute-extensions", "ftam.attribute_extensions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_Charging_item,
+ { "Item", "ftam.Charging_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Charging/_item", HFILL }},
+ { &hf_ftam_resource_identifier,
+ { "resource-identifier", "ftam.resource_identifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Charging/_item/resource-identifier", HFILL }},
+ { &hf_ftam_charging_unit,
+ { "charging-unit", "ftam.charging_unit",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Charging/_item/charging-unit", HFILL }},
+ { &hf_ftam_charging_value,
+ { "charging-value", "ftam.charging_value",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Charging/_item/charging-value", HFILL }},
+ { &hf_ftam_read_lock,
+ { "read", "ftam.read",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/read", HFILL }},
+ { &hf_ftam_insert_lock,
+ { "insert", "ftam.insert",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/insert", HFILL }},
+ { &hf_ftam_replace_lock,
+ { "replace", "ftam.replace",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/replace", HFILL }},
+ { &hf_ftam_extend_lock,
+ { "extend", "ftam.extend",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/extend", HFILL }},
+ { &hf_ftam_erase_lock,
+ { "erase", "ftam.erase",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/erase", HFILL }},
+ { &hf_ftam_read_attribute_lock,
+ { "read-attribute", "ftam.read_attribute",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/read-attribute", HFILL }},
+ { &hf_ftam_change_attribute_lock,
+ { "change-attribute", "ftam.change_attribute",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/change-attribute", HFILL }},
+ { &hf_ftam_delete_Object_lock,
+ { "delete-Object", "ftam.delete_Object",
+ FT_INT32, BASE_DEC, VALS(ftam_Lock_vals), 0,
+ "Concurrency-Control/delete-Object", HFILL }},
+ { &hf_ftam_object_type,
+ { "object-type", "ftam.object_type",
+ FT_INT32, BASE_DEC, VALS(ftam_Object_Type_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_permitted_actions,
+ { "permitted-actions", "ftam.permitted_actions",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_access_control,
+ { "access-control", "ftam.access_control",
+ FT_UINT32, BASE_DEC, VALS(ftam_Access_Control_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_create_path_access_control,
+ { "path-access-control", "ftam.path_access_control",
+ FT_UINT32, BASE_DEC, VALS(ftam_Access_Control_Attribute_vals), 0,
+ "Create-Attributes/path-access-control", HFILL }},
+ { &hf_ftam_Diagnostic_item,
+ { "Item", "ftam.Diagnostic_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Diagnostic/_item", HFILL }},
+ { &hf_ftam_diagnostic_type,
+ { "diagnostic-type", "ftam.diagnostic_type",
+ FT_INT32, BASE_DEC, VALS(ftam_T_diagnostic_type_vals), 0,
+ "Diagnostic/_item/diagnostic-type", HFILL }},
+ { &hf_ftam_error_identifier,
+ { "error-identifier", "ftam.error_identifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Diagnostic/_item/error-identifier", HFILL }},
+ { &hf_ftam_error_observer,
+ { "error-observer", "ftam.error_observer",
+ FT_INT32, BASE_DEC, VALS(ftam_Entity_Reference_vals), 0,
+ "Diagnostic/_item/error-observer", HFILL }},
+ { &hf_ftam_error_Source,
+ { "error-Source", "ftam.error_Source",
+ FT_INT32, BASE_DEC, VALS(ftam_Entity_Reference_vals), 0,
+ "Diagnostic/_item/error-Source", HFILL }},
+ { &hf_ftam_suggested_delay,
+ { "suggested-delay", "ftam.suggested_delay",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Diagnostic/_item/suggested-delay", HFILL }},
+ { &hf_ftam_further_details,
+ { "further-details", "ftam.further_details",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Diagnostic/_item/further-details", HFILL }},
+ { &hf_ftam_first_last,
+ { "first-last", "ftam.first_last",
+ FT_INT32, BASE_DEC, VALS(ftam_T_first_last_vals), 0,
+ "FADU-Identity/first-last", HFILL }},
+ { &hf_ftam_relative,
+ { "relative", "ftam.relative",
+ FT_INT32, BASE_DEC, VALS(ftam_T_relative_vals), 0,
+ "FADU-Identity/relative", HFILL }},
+ { &hf_ftam_begin_end,
+ { "begin-end", "ftam.begin_end",
+ FT_INT32, BASE_DEC, VALS(ftam_T_begin_end_vals), 0,
+ "FADU-Identity/begin-end", HFILL }},
+ { &hf_ftam_single_name,
+ { "single-name", "ftam.single_name",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FADU-Identity/single-name", HFILL }},
+ { &hf_ftam_name_list,
+ { "name-list", "ftam.name_list",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FADU-Identity/name-list", HFILL }},
+ { &hf_ftam_name_list_item,
+ { "Item", "ftam.name_list_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FADU-Identity/name-list/_item", HFILL }},
+ { &hf_ftam_fadu_number,
+ { "fadu-number", "ftam.fadu_number",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "FADU-Identity/fadu-number", HFILL }},
+ { &hf_ftam_graphicString,
+ { "graphicString", "ftam.graphicString",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Password/graphicString", HFILL }},
+ { &hf_ftam_octetString,
+ { "octetString", "ftam.octetString",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Password/octetString", HFILL }},
+ { &hf_ftam_linked_Object,
+ { "linked-Object", "ftam.linked_Object",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "Read-Attributes/linked-Object", HFILL }},
+ { &hf_ftam_child_objects,
+ { "child-objects", "ftam.child_objects",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Read-Attributes/child-objects", HFILL }},
+ { &hf_ftam_primaty_pathname,
+ { "primaty-pathname", "ftam.primaty_pathname",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "Read-Attributes/primaty-pathname", HFILL }},
+ { &hf_ftam_date_and_time_of_creation,
+ { "date-and-time-of-creation", "ftam.date_and_time_of_creation",
+ FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
+ "Read-Attributes/date-and-time-of-creation", HFILL }},
+ { &hf_ftam_date_and_time_of_last_modification,
+ { "date-and-time-of-last-modification", "ftam.date_and_time_of_last_modification",
+ FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
+ "Read-Attributes/date-and-time-of-last-modification", HFILL }},
+ { &hf_ftam_date_and_time_of_last_read_access,
+ { "date-and-time-of-last-read-access", "ftam.date_and_time_of_last_read_access",
+ FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
+ "Read-Attributes/date-and-time-of-last-read-access", HFILL }},
+ { &hf_ftam_date_and_time_of_last_attribute_modification,
+ { "date-and-time-of-last-attribute-modification", "ftam.date_and_time_of_last_attribute_modification",
+ FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
+ "Read-Attributes/date-and-time-of-last-attribute-modification", HFILL }},
+ { &hf_ftam_identity_of_creator,
+ { "identity-of-creator", "ftam.identity_of_creator",
+ FT_UINT32, BASE_DEC, VALS(ftam_User_Identity_Attribute_vals), 0,
+ "Read-Attributes/identity-of-creator", HFILL }},
+ { &hf_ftam_identity_of_last_modifier,
+ { "identity-of-last-modifier", "ftam.identity_of_last_modifier",
+ FT_UINT32, BASE_DEC, VALS(ftam_User_Identity_Attribute_vals), 0,
+ "Read-Attributes/identity-of-last-modifier", HFILL }},
+ { &hf_ftam_identity_of_last_reader,
+ { "identity-of-last-reader", "ftam.identity_of_last_reader",
+ FT_UINT32, BASE_DEC, VALS(ftam_User_Identity_Attribute_vals), 0,
+ "Read-Attributes/identity-of-last-reader", HFILL }},
+ { &hf_ftam_identity_last_attribute_modifier,
+ { "identity-last-attribute-modifier", "ftam.identity_last_attribute_modifier",
+ FT_UINT32, BASE_DEC, VALS(ftam_User_Identity_Attribute_vals), 0,
+ "Read-Attributes/identity-last-attribute-modifier", HFILL }},
+ { &hf_ftam_object_size,
+ { "object-size", "ftam.object_size",
+ FT_UINT32, BASE_DEC, VALS(ftam_Object_Size_Attribute_vals), 0,
+ "Read-Attributes/object-size", HFILL }},
+ { &hf_ftam_path_access_control,
+ { "path-access-control", "ftam.path_access_control",
+ FT_UINT32, BASE_DEC, VALS(ftam_Access_Control_Attribute_vals), 0,
+ "Read-Attributes/path-access-control", HFILL }},
+ { &hf_ftam_no_value_available,
+ { "no-value-available", "ftam.no_value_available",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_actual_values3,
+ { "actual-values", "ftam.actual_values",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Attribute/actual-values", HFILL }},
+ { &hf_ftam_actual_values_item,
+ { "Item", "ftam.actual_values_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Attribute/actual-values/_item", HFILL }},
+ { &hf_ftam_actual_values1,
+ { "actual-values", "ftam.actual_values",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Change-Attribute/actual-values", HFILL }},
+ { &hf_ftam_insert_values,
+ { "insert-values", "ftam.insert_values",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Change-Attribute/actual-values/insert-values", HFILL }},
+ { &hf_ftam_insert_values_item,
+ { "Item", "ftam.insert_values_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Change-Attribute/actual-values/insert-values/_item", HFILL }},
+ { &hf_ftam_delete_values,
+ { "delete-values", "ftam.delete_values",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Change-Attribute/actual-values/delete-values", HFILL }},
+ { &hf_ftam_delete_values_item,
+ { "Item", "ftam.delete_values_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Change-Attribute/actual-values/delete-values/_item", HFILL }},
+ { &hf_ftam_action_list,
+ { "action-list", "ftam.action_list",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Access-Control-Element/action-list", HFILL }},
+ { &hf_ftam_concurrency_access,
+ { "concurrency-access", "ftam.concurrency_access",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Element/concurrency-access", HFILL }},
+ { &hf_ftam_identity,
+ { "identity", "ftam.identity",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Access-Control-Element/identity", HFILL }},
+ { &hf_ftam_passwords,
+ { "passwords", "ftam.passwords",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Element/passwords", HFILL }},
+ { &hf_ftam_location,
+ { "location", "ftam.location",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Access-Control-Element/location", HFILL }},
+ { &hf_ftam_read_key,
+ { "read", "ftam.read",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/read", HFILL }},
+ { &hf_ftam_insert_key,
+ { "insert", "ftam.insert",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/insert", HFILL }},
+ { &hf_ftam_replace_key,
+ { "replace", "ftam.replace",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/replace", HFILL }},
+ { &hf_ftam_extend_key,
+ { "extend", "ftam.extend",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/extend", HFILL }},
+ { &hf_ftam_erase_key,
+ { "erase", "ftam.erase",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/erase", HFILL }},
+ { &hf_ftam_read_attribute_key,
+ { "read-attribute", "ftam.read_attribute",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/read-attribute", HFILL }},
+ { &hf_ftam_change_attribute_key,
+ { "change-attribute", "ftam.change_attribute",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/change-attribute", HFILL }},
+ { &hf_ftam_delete_Object_key,
+ { "delete-Object", "ftam.delete_Object",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Concurrency-Access/delete-Object", HFILL }},
+ { &hf_ftam_actual_values2,
+ { "actual-values", "ftam.actual_values",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Account-Attribute/actual-values", HFILL }},
+ { &hf_ftam_document_type,
+ { "document-type", "ftam.document_type",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Attribute/document-type", HFILL }},
+ { &hf_ftam_parameter,
+ { "parameter", "ftam.parameter",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Attribute/document-type/parameter", HFILL }},
+ { &hf_ftam_constraint_set_and_abstract_Syntax,
+ { "constraint-set-and-abstract-Syntax", "ftam.constraint_set_and_abstract_Syntax",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Attribute/constraint-set-and-abstract-Syntax", HFILL }},
+ { &hf_ftam_constraint_set_name,
+ { "constraint-set-name", "ftam.constraint_set_name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Contents-Type-Attribute/constraint-set-and-abstract-Syntax/constraint-set-name", HFILL }},
+ { &hf_ftam_actual_values5,
+ { "actual-values", "ftam.actual_values",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Date-and-Time-Attribute/actual-values", HFILL }},
+ { &hf_ftam_actual_values8,
+ { "actual-values", "ftam.actual_values",
+ FT_INT32, BASE_DEC, VALS(ftam_T_actual_values_vals), 0,
+ "Object-Availability-Attribute/actual-values", HFILL }},
+ { &hf_ftam_incomplete_pathname,
+ { "incomplete-pathname", "ftam.incomplete_pathname",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Pathname-Attribute/incomplete-pathname", HFILL }},
+ { &hf_ftam_complete_pathname,
+ { "complete-pathname", "ftam.complete_pathname",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Pathname-Attribute/complete-pathname", HFILL }},
+ { &hf_ftam_actual_values7,
+ { "actual-values", "ftam.actual_values",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Object-Size-Attribute/actual-values", HFILL }},
+ { &hf_ftam_actual_values9,
+ { "actual-values", "ftam.actual_values",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Legal-Qualification-Attribute/actual-values", HFILL }},
+ { &hf_ftam_abstract_Syntax_not_supported,
+ { "abstract-Syntax-not-supported", "ftam.abstract_Syntax_not_supported",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Private-Use-Attribute/abstract-Syntax-not-supported", HFILL }},
+ { &hf_ftam_actual_values4,
+ { "actual-values", "ftam.actual_values",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Private-Use-Attribute/actual-values", HFILL }},
+ { &hf_ftam_actual_values6,
+ { "actual-values", "ftam.actual_values",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "User-Identity-Attribute/actual-values", HFILL }},
+ { &hf_ftam_Child_Objects_Attribute_item,
+ { "Item", "ftam.Child_Objects_Attribute_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Child-Objects-Attribute/_item", HFILL }},
+ { &hf_ftam_f_Change_prefix_request,
+ { "f-Change-prefix-request", "ftam.f_Change_prefix_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-Change-prefix-request", HFILL }},
+ { &hf_ftam_f_Change_prefix_response,
+ { "f-Change-prefix-response", "ftam.f_Change_prefix_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-Change-prefix-response", HFILL }},
+ { &hf_ftam_f_list_request,
+ { "f-list-request", "ftam.f_list_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-list-request", HFILL }},
+ { &hf_ftam_f_list_response,
+ { "f-list-response", "ftam.f_list_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-list-response", HFILL }},
+ { &hf_ftam_f_group_select_request,
+ { "f-group-select-request", "ftam.f_group_select_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-select-request", HFILL }},
+ { &hf_ftam_f_group_select_response,
+ { "f-group-select-response", "ftam.f_group_select_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-select-response", HFILL }},
+ { &hf_ftam_f_group_delete_request,
+ { "f-group-delete-request", "ftam.f_group_delete_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-delete-request", HFILL }},
+ { &hf_ftam_f_group_delete_response,
+ { "f-group-delete-response", "ftam.f_group_delete_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-delete-response", HFILL }},
+ { &hf_ftam_f_group_move_request,
+ { "f-group-move-request", "ftam.f_group_move_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-move-request", HFILL }},
+ { &hf_ftam_f_group_move_response,
+ { "f-group-move-response", "ftam.f_group_move_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-move-response", HFILL }},
+ { &hf_ftam_f_group_copy_request,
+ { "f-group-copy-request", "ftam.f_group_copy_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-copy-request", HFILL }},
+ { &hf_ftam_f_group_copy_response,
+ { "f-group-copy-response", "ftam.f_group_copy_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-copy-response", HFILL }},
+ { &hf_ftam_f_group_list_request,
+ { "f-group-list-request", "ftam.f_group_list_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-list-request", HFILL }},
+ { &hf_ftam_f_group_list_response,
+ { "f-group-list-response", "ftam.f_group_list_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-list-response", HFILL }},
+ { &hf_ftam_f_group_Change_attrib_request,
+ { "f-group-Change-attrib-request", "ftam.f_group_Change_attrib_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-Change-attrib-request", HFILL }},
+ { &hf_ftam_f_group_Change_attrib_response,
+ { "f-group-Change-attrib-response", "ftam.f_group_Change_attrib_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-group-Change-attrib-response", HFILL }},
+ { &hf_ftam_f_select_another_request,
+ { "f-select-another-request", "ftam.f_select_another_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-select-another-request", HFILL }},
+ { &hf_ftam_f_select_another_response,
+ { "f-select-another-response", "ftam.f_select_another_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-select-another-response", HFILL }},
+ { &hf_ftam_f_create_directory_request,
+ { "f-create-directory-request", "ftam.f_create_directory_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-create-directory-request", HFILL }},
+ { &hf_ftam_f_create_directory_response,
+ { "f-create-directory-response", "ftam.f_create_directory_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-create-directory-response", HFILL }},
+ { &hf_ftam_f_link_request,
+ { "f-link-request", "ftam.f_link_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-link-request", HFILL }},
+ { &hf_ftam_f_link_response,
+ { "f-link-response", "ftam.f_link_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-link-response", HFILL }},
+ { &hf_ftam_f_unlink_request,
+ { "f-unlink-request", "ftam.f_unlink_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-unlink-request", HFILL }},
+ { &hf_ftam_f_unlink_response,
+ { "f-unlink-response", "ftam.f_unlink_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-unlink-response", HFILL }},
+ { &hf_ftam_f_read_link_attrib_request,
+ { "f-read-link-attrib-request", "ftam.f_read_link_attrib_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-read-link-attrib-request", HFILL }},
+ { &hf_ftam_f_read_link_attrib_response,
+ { "f-read-link-attrib-response", "ftam.f_read_link_attrib_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-read-link-attrib-response", HFILL }},
+ { &hf_ftam_f_Change_link_attrib_request,
+ { "f-Change-link-attrib-request", "ftam.f_Change_link_attrib_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-Change-link-attrib-request", HFILL }},
+ { &hf_ftam_f_Change_Iink_attrib_response,
+ { "f-Change-Iink-attrib-response", "ftam.f_Change_Iink_attrib_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-Change-Iink-attrib-response", HFILL }},
+ { &hf_ftam_f_move_request,
+ { "f-move-request", "ftam.f_move_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-move-request", HFILL }},
+ { &hf_ftam_f_move_response,
+ { "f-move-response", "ftam.f_move_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-move-response", HFILL }},
+ { &hf_ftam_f_copy_request,
+ { "f-copy-request", "ftam.f_copy_request",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-copy-request", HFILL }},
+ { &hf_ftam_f_copy_response,
+ { "f-copy-response", "ftam.f_copy_response",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FSM-PDU/f-copy-response", HFILL }},
+ { &hf_ftam_reset,
+ { "reset", "ftam.reset",
+ FT_BOOLEAN, 8, NULL, 0,
+ "F-CHANGE-PREFIX-request/reset", HFILL }},
+ { &hf_ftam_destination_file_directory,
+ { "destination-file-directory", "ftam.destination_file_directory",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_attribute_value_asset_tions,
+ { "attribute-value-asset-tions", "ftam.attribute_value_asset_tions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-LIST-request/attribute-value-asset-tions", HFILL }},
+ { &hf_ftam_scope,
+ { "scope", "ftam.scope",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_objects_attributes_list,
+ { "objects-attributes-list", "ftam.objects_attributes_list",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_attribute_value_assertions,
+ { "attribute-value-assertions", "ftam.attribute_value_assertions",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-GROUP-SELECT-request/attribute-value-assertions", HFILL }},
+ { &hf_ftam_maximum_set_size,
+ { "maximum-set-size", "ftam.maximum_set_size",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "F-GROUP-SELECT-request/maximum-set-size", HFILL }},
+ { &hf_ftam_request_Operation_result,
+ { "request-Operation-result", "ftam.request_Operation_result",
+ FT_INT32, BASE_DEC, VALS(ftam_Request_Operation_Result_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_operation_result,
+ { "operation-result", "ftam.operation_result",
+ FT_UINT32, BASE_DEC, VALS(ftam_Operation_Result_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_error_action,
+ { "error-action", "ftam.error_action",
+ FT_INT32, BASE_DEC, VALS(ftam_Error_Action_vals), 0,
+ "", HFILL }},
+ { &hf_ftam_last_member_indicator,
+ { "last-member-indicator", "ftam.last_member_indicator",
+ FT_BOOLEAN, 8, NULL, 0,
+ "F-SELECT-ANOTHER-response/last-member-indicator", HFILL }},
+ { &hf_ftam_shared_ASE_infonnation,
+ { "shared-ASE-infonnation", "ftam.shared_ASE_infonnation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-CREATE-DIRECTORY-request/shared-ASE-infonnation", HFILL }},
+ { &hf_ftam_target_object,
+ { "target-object", "ftam.target_object",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "F-LINK-request/target-object", HFILL }},
+ { &hf_ftam_target_Object,
+ { "target-Object", "ftam.target_Object",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "F-LINK-response/target-Object", HFILL }},
+ { &hf_ftam_read_link_attributes,
+ { "attributes", "ftam.attributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "F-READ-LINK-ATTRIB-response/attributes", HFILL }},
+ { &hf_ftam_Attribute_Extension_Names_item,
+ { "Item", "ftam.Attribute_Extension_Names_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extension-Names/_item", HFILL }},
+ { &hf_ftam_extension_set_identifier,
+ { "extension-set-identifier", "ftam.extension_set_identifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_extension_attribute_names,
+ { "extension-attribute-names", "ftam.extension_attribute_names",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extension-Set-Name/extension-attribute-names", HFILL }},
+ { &hf_ftam_extension_attribute_names_item,
+ { "Item", "ftam.extension_attribute_names_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Attribute-Extension-Set-Name/extension-attribute-names/_item", HFILL }},
+ { &hf_ftam_Attribute_Extensions_item,
+ { "Item", "ftam.Attribute_Extensions_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extensions/_item", HFILL }},
+ { &hf_ftam_extension_set_attributes,
+ { "extension-set-attributes", "ftam.extension_set_attributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extension-Set/extension-set-attributes", HFILL }},
+ { &hf_ftam_extension_set_attributes_item,
+ { "Item", "ftam.extension_set_attributes_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extension-Set/extension-set-attributes/_item", HFILL }},
+ { &hf_ftam_extension_attribute_identifier,
+ { "extension-attribute-identifier", "ftam.extension_attribute_identifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Extension-Attribute/extension-attribute-identifier", HFILL }},
+ { &hf_ftam_extension_attribute,
+ { "extension-attribute", "ftam.extension_attribute",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Extension-Attribute/extension-attribute", HFILL }},
+ { &hf_ftam_Scope_item,
+ { "Item", "ftam.Scope_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Scope/_item", HFILL }},
+ { &hf_ftam_root_directory,
+ { "root-directory", "ftam.root_directory",
+ FT_UINT32, BASE_DEC, VALS(ftam_Pathname_Attribute_vals), 0,
+ "Scope/_item/root-directory", HFILL }},
+ { &hf_ftam_retrieval_scope,
+ { "retrieval-scope", "ftam.retrieval_scope",
+ FT_INT32, BASE_DEC, VALS(ftam_T_retrieval_scope_vals), 0,
+ "Scope/_item/retrieval-scope", HFILL }},
+ { &hf_ftam_OR_Set_item,
+ { "Item", "ftam.OR_Set_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "OR-Set/_item", HFILL }},
+ { &hf_ftam_AND_Set_item,
+ { "Item", "ftam.AND_Set_item",
+ FT_UINT32, BASE_DEC, VALS(ftam_AND_Set_item_vals), 0,
+ "AND-Set/_item", HFILL }},
+ { &hf_ftam_pathname_Pattern,
+ { "pathname-Pattern", "ftam.pathname_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/pathname-Pattern", HFILL }},
+ { &hf_ftam_object_type_Pattern,
+ { "object-type-Pattern", "ftam.object_type_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/object-type-Pattern", HFILL }},
+ { &hf_ftam_permitted_actions_Pattern,
+ { "permitted-actions-Pattern", "ftam.permitted_actions_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/permitted-actions-Pattern", HFILL }},
+ { &hf_ftam_contents_type_Pattern,
+ { "contents-type-Pattern", "ftam.contents_type_Pattern",
+ FT_UINT32, BASE_DEC, VALS(ftam_Contents_Type_Pattern_vals), 0,
+ "AND-Set/_item/contents-type-Pattern", HFILL }},
+ { &hf_ftam_linked_Object_Pattern,
+ { "linked-Object-Pattern", "ftam.linked_Object_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/linked-Object-Pattern", HFILL }},
+ { &hf_ftam_child_objects_Pattern,
+ { "child-objects-Pattern", "ftam.child_objects_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/child-objects-Pattern", HFILL }},
+ { &hf_ftam_primaty_pathname_Pattern,
+ { "primaty-pathname-Pattern", "ftam.primaty_pathname_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/primaty-pathname-Pattern", HFILL }},
+ { &hf_ftam_storage_account_Pattern,
+ { "storage-account-Pattern", "ftam.storage_account_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/storage-account-Pattern", HFILL }},
+ { &hf_ftam_date_and_time_of_creation_Pattern,
+ { "date-and-time-of-creation-Pattern", "ftam.date_and_time_of_creation_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/date-and-time-of-creation-Pattern", HFILL }},
+ { &hf_ftam_date_and_time_of_last_modification_Pattern,
+ { "date-and-time-of-last-modification-Pattern", "ftam.date_and_time_of_last_modification_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/date-and-time-of-last-modification-Pattern", HFILL }},
+ { &hf_ftam_date_and_time_of_last_read_access_Pattern,
+ { "date-and-time-of-last-read-access-Pattern", "ftam.date_and_time_of_last_read_access_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/date-and-time-of-last-read-access-Pattern", HFILL }},
+ { &hf_ftam_date_and_time_of_last_attribute_modification_Pattern,
+ { "date-and-time-of-last-attribute-modification-Pattern", "ftam.date_and_time_of_last_attribute_modification_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/date-and-time-of-last-attribute-modification-Pattern", HFILL }},
+ { &hf_ftam_identity_of_creator_Pattern,
+ { "identity-of-creator-Pattern", "ftam.identity_of_creator_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/identity-of-creator-Pattern", HFILL }},
+ { &hf_ftam_identity_of_last_modifier_Pattern,
+ { "identity-of-last-modifier-Pattern", "ftam.identity_of_last_modifier_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/identity-of-last-modifier-Pattern", HFILL }},
+ { &hf_ftam_identity_of_last_reader_Pattern,
+ { "identity-of-last-reader-Pattern", "ftam.identity_of_last_reader_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/identity-of-last-reader-Pattern", HFILL }},
+ { &hf_ftam_identity_of_last_attribute_modifier_Pattern,
+ { "identity-of-last-attribute-modifier-Pattern", "ftam.identity_of_last_attribute_modifier_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/identity-of-last-attribute-modifier-Pattern", HFILL }},
+ { &hf_ftam_object_availabiiity_Pattern,
+ { "object-availabiiity-Pattern", "ftam.object_availabiiity_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/object-availabiiity-Pattern", HFILL }},
+ { &hf_ftam_object_size_Pattern,
+ { "object-size-Pattern", "ftam.object_size_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/object-size-Pattern", HFILL }},
+ { &hf_ftam_future_object_size_Pattern,
+ { "future-object-size-Pattern", "ftam.future_object_size_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/future-object-size-Pattern", HFILL }},
+ { &hf_ftam_legal_quailfication_Pattern,
+ { "legal-quailfication-Pattern", "ftam.legal_quailfication_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/legal-quailfication-Pattern", HFILL }},
+ { &hf_ftam_attribute_extensions_pattern,
+ { "attribute-extensions-pattern", "ftam.attribute_extensions_pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AND-Set/_item/attribute-extensions-pattern", HFILL }},
+ { &hf_ftam_equality_comparision,
+ { "equality-comparision", "ftam.equality_comparision",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_pathname_value,
+ { "pathname-value", "ftam.pathname_value",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Pathname-Pattern/pathname-value", HFILL }},
+ { &hf_ftam_pathname_value_item,
+ { "Item", "ftam.pathname_value_item",
+ FT_UINT32, BASE_DEC, VALS(ftam_T_pathname_value_item_vals), 0,
+ "Pathname-Pattern/pathname-value/_item", HFILL }},
+ { &hf_ftam_string_match,
+ { "string-match", "ftam.string_match",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Pathname-Pattern/pathname-value/_item/string-match", HFILL }},
+ { &hf_ftam_any_match,
+ { "any-match", "ftam.any_match",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_ftam_string_value,
+ { "string-value", "ftam.string_value",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "String-Pattern/string-value", HFILL }},
+ { &hf_ftam_string_value_item,
+ { "Item", "ftam.string_value_item",
+ FT_UINT32, BASE_DEC, VALS(ftam_T_string_value_item_vals), 0,
+ "String-Pattern/string-value/_item", HFILL }},
+ { &hf_ftam_substring_match,
+ { "substring-match", "ftam.substring_match",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "String-Pattern/string-value/_item/substring-match", HFILL }},
+ { &hf_ftam_number_of_characters_match,
+ { "number-of-characters-match", "ftam.number_of_characters_match",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "String-Pattern/string-value/_item/number-of-characters-match", HFILL }},
+ { &hf_ftam_match_bitstring,
+ { "match-bitstring", "ftam.match_bitstring",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Bitstring-Pattern/match-bitstring", HFILL }},
+ { &hf_ftam_significance_bitstring,
+ { "significance-bitstring", "ftam.significance_bitstring",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Bitstring-Pattern/significance-bitstring", HFILL }},
+ { &hf_ftam_relational_camparision,
+ { "relational-camparision", "ftam.relational_camparision",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Date-and-Time-Pattern/relational-camparision", HFILL }},
+ { &hf_ftam_time_and_date_value,
+ { "time-and-date-value", "ftam.time_and_date_value",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Date-and-Time-Pattern/time-and-date-value", HFILL }},
+ { &hf_ftam_relational_comparision,
+ { "relational-comparision", "ftam.relational_comparision",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Integer-Pattern/relational-comparision", HFILL }},
+ { &hf_ftam_integer_value,
+ { "integer-value", "ftam.integer_value",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Integer-Pattern/integer-value", HFILL }},
+ { &hf_ftam_object_identifier_value,
+ { "object-identifier-value", "ftam.object_identifier_value",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Object-Identifier-Pattern/object-identifier-value", HFILL }},
+ { &hf_ftam_boolean_value,
+ { "boolean-value", "ftam.boolean_value",
+ FT_BOOLEAN, 8, NULL, 0,
+ "Boolean-Pattern/boolean-value", HFILL }},
+ { &hf_ftam_document_type_Pattern,
+ { "document-type-Pattern", "ftam.document_type_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Pattern/document-type-Pattern", HFILL }},
+ { &hf_ftam_constraint_set_abstract_Syntax_Pattern,
+ { "constraint-set-abstract-Syntax-Pattern", "ftam.constraint_set_abstract_Syntax_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Pattern/constraint-set-abstract-Syntax-Pattern", HFILL }},
+ { &hf_ftam_constraint_Set_Pattern,
+ { "constraint-Set-Pattern", "ftam.constraint_Set_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Pattern/constraint-set-abstract-Syntax-Pattern/constraint-Set-Pattern", HFILL }},
+ { &hf_ftam_abstract_Syntax_Pattern,
+ { "abstract-Syntax-Pattern", "ftam.abstract_Syntax_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Contents-Type-Pattern/constraint-set-abstract-Syntax-Pattern/abstract-Syntax-Pattern", HFILL }},
+ { &hf_ftam_Attribute_Extensions_Pattern_item,
+ { "Item", "ftam.Attribute_Extensions_Pattern_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extensions-Pattern/_item", HFILL }},
+ { &hf_ftam_extension_set_attribute_Patterns,
+ { "extension-set-attribute-Patterns", "ftam.extension_set_attribute_Patterns",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns", HFILL }},
+ { &hf_ftam_extension_set_attribute_Patterns_item,
+ { "Item", "ftam.extension_set_attribute_Patterns_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item", HFILL }},
+ { &hf_ftam_attribute_extension_attribute_identifier,
+ { "extension-attribute-identifier", "ftam.extension_attribute_identifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-identifier", HFILL }},
+ { &hf_ftam_extension_attribute_Pattern,
+ { "extension-attribute-Pattern", "ftam.extension_attribute_Pattern",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern", HFILL }},
+ { &hf_ftam_Objects_Attributes_List_item,
+ { "Item", "ftam.Objects_Attributes_List_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Objects-Attributes-List/_item", HFILL }},
+ { &hf_ftam_success_Object_count,
+ { "success-Object-count", "ftam.success_Object_count",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Operation-Result/success-Object-count", HFILL }},
+ { &hf_ftam_success_Object_names,
+ { "success-Object-names", "ftam.success_Object_names",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Operation-Result/success-Object-names", HFILL }},
+ { &hf_ftam_success_Object_names_item,
+ { "Item", "ftam.success_Object_names_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Operation-Result/success-Object-names/_item", HFILL }},
+ { &hf_ftam_Pathname_item,
+ { "Item", "ftam.Pathname_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Pathname/_item", HFILL }},
+ { &hf_ftam_Pass_Passwords_item,
+ { "Item", "ftam.Pass_Passwords_item",
+ FT_UINT32, BASE_DEC, VALS(ftam_Password_vals), 0,
+ "Pass-Passwords/_item", HFILL }},
+ { &hf_ftam_Path_Access_Passwords_item,
+ { "Item", "ftam.Path_Access_Passwords_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Path-Access-Passwords/_item", HFILL }},
+ { &hf_ftam_ap,
+ { "ap", "ftam.ap",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AE-title/ap", HFILL }},
+ { &hf_ftam_ae,
+ { "ae", "ftam.ae",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AE-title/ae", HFILL }},
+ { &hf_ftam_Attribute_Value_Assertions_item,
+ { "Item", "ftam.Attribute_Value_Assertions_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute-Value-Assertions/_item", HFILL }},
+ { &hf_ftam_Protocol_Version_version_1,
+ { "version-1", "ftam.version-1",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Protocol_Version_version_2,
+ { "version-2", "ftam.version-2",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Service_Class_unconstrained_class,
+ { "unconstrained-class", "ftam.unconstrained-class",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Service_Class_management_class,
+ { "management-class", "ftam.management-class",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Service_Class_transfer_class,
+ { "transfer-class", "ftam.transfer-class",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Service_Class_transfer_and_management_class,
+ { "transfer-and-management-class", "ftam.transfer-and-management-class",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Service_Class_access_class,
+ { "access-class", "ftam.access-class",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_read,
+ { "read", "ftam.read",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_write,
+ { "write", "ftam.write",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_file_access,
+ { "file-access", "ftam.file-access",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_limited_file_management,
+ { "limited-file-management", "ftam.limited-file-management",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_enhanced_file_management,
+ { "enhanced-file-management", "ftam.enhanced-file-management",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_grouping,
+ { "grouping", "ftam.grouping",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_fadu_locking,
+ { "fadu-locking", "ftam.fadu-locking",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_recovery,
+ { "recovery", "ftam.recovery",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_restart_data_transfer,
+ { "restart-data-transfer", "ftam.restart-data-transfer",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_limited_filestore_management,
+ { "limited-filestore-management", "ftam.limited-filestore-management",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_enhanced_filestore_management,
+ { "enhanced-filestore-management", "ftam.enhanced-filestore-management",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_object_manipulation,
+ { "object-manipulation", "ftam.object-manipulation",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_group_manipulation,
+ { "group-manipulation", "ftam.group-manipulation",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_consecutive_access,
+ { "consecutive-access", "ftam.consecutive-access",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Functional_Units_concurrent_access,
+ { "concurrent-access", "ftam.concurrent-access",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Groups_storage,
+ { "storage", "ftam.storage",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Groups_security,
+ { "security", "ftam.security",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Groups_private,
+ { "private", "ftam.private",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Groups_extension,
+ { "extension", "ftam.extension",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_T_processing_mode_f_read,
+ { "f-read", "ftam.f-read",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_T_processing_mode_f_insert,
+ { "f-insert", "ftam.f-insert",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_T_processing_mode_f_replace,
+ { "f-replace", "ftam.f-replace",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_T_processing_mode_f_extend,
+ { "f-extend", "ftam.f-extend",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_T_processing_mode_f_erase,
+ { "f-erase", "ftam.f-erase",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_read,
+ { "read", "ftam.read",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_insert,
+ { "insert", "ftam.insert",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_replace,
+ { "replace", "ftam.replace",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_extend,
+ { "extend", "ftam.extend",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_erase,
+ { "erase", "ftam.erase",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_read_attribute,
+ { "read-attribute", "ftam.read-attribute",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_change_attribute,
+ { "change-attribute", "ftam.change-attribute",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_ftam_Access_Request_delete_Object,
+ { "delete-Object", "ftam.delete-Object",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Concurrency_Key_not_required,
+ { "not-required", "ftam.not-required",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Concurrency_Key_shared,
+ { "shared", "ftam.shared",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Concurrency_Key_exclusive,
+ { "exclusive", "ftam.exclusive",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Concurrency_Key_no_access,
+ { "no-access", "ftam.no-access",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_read,
+ { "read", "ftam.read",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_insert,
+ { "insert", "ftam.insert",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_replace,
+ { "replace", "ftam.replace",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_extend,
+ { "extend", "ftam.extend",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_erase,
+ { "erase", "ftam.erase",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_read_attribute,
+ { "read-attribute", "ftam.read-attribute",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_change_attribute,
+ { "change-attribute", "ftam.change-attribute",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_delete_Object,
+ { "delete-Object", "ftam.delete-Object",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_pass,
+ { "pass", "ftam.pass",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_link,
+ { "link", "ftam.link",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_traversal,
+ { "traversal", "ftam.traversal",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_reverse_traversal,
+ { "reverse-traversal", "ftam.reverse-traversal",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Permitted_Actions_Attribute_random_Order,
+ { "random-Order", "ftam.random-Order",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Equality_Comparision_no_value_available_matches,
+ { "no-value-available-matches", "ftam.no-value-available-matches",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Equality_Comparision_equals_matches,
+ { "equals-matches", "ftam.equals-matches",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Relational_Comparision_no_value_available_matches,
+ { "no-value-available-matches", "ftam.no-value-available-matches",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Relational_Comparision_equals_matches,
+ { "equals-matches", "ftam.equals-matches",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Relational_Comparision_less_than_matches,
+ { "less-than-matches", "ftam.less-than-matches",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Relational_Comparision_greater_than_matches,
+ { "greater-than-matches", "ftam.greater-than-matches",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_pathname,
+ { "read-pathname", "ftam.read-pathname",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_Object_type,
+ { "read-Object-type", "ftam.read-Object-type",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_permitted_actions,
+ { "read-permitted-actions", "ftam.read-permitted-actions",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_contents_type,
+ { "read-contents-type", "ftam.read-contents-type",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_linked_Object,
+ { "read-linked-Object", "ftam.read-linked-Object",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_Child_objects,
+ { "read-Child-objects", "ftam.read-Child-objects",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_primary_pathname,
+ { "read-primary-pathname", "ftam.read-primary-pathname",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_storage_account,
+ { "read-storage-account", "ftam.read-storage-account",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_date_and_time_of_creation,
+ { "read-date-and-time-of-creation", "ftam.read-date-and-time-of-creation",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_date_and_time_of_last_modification,
+ { "read-date-and-time-of-last-modification", "ftam.read-date-and-time-of-last-modification",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_date_and_time_of_last_read_access,
+ { "read-date-and-time-of-last-read-access", "ftam.read-date-and-time-of-last-read-access",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_date_and_time_of_last_attribute_modification,
+ { "read-date-and-time-of-last-attribute-modification", "ftam.read-date-and-time-of-last-attribute-modification",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_identity_of_creator,
+ { "read-identity-of-creator", "ftam.read-identity-of-creator",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_identity_of_last_modifier,
+ { "read-identity-of-last-modifier", "ftam.read-identity-of-last-modifier",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_identity_of_last_reader,
+ { "read-identity-of-last-reader", "ftam.read-identity-of-last-reader",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_identity_of_last_attribute_modifier,
+ { "read-identity-of-last-attribute-modifier", "ftam.read-identity-of-last-attribute-modifier",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_Object_availability,
+ { "read-Object-availability", "ftam.read-Object-availability",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_Object_size,
+ { "read-Object-size", "ftam.read-Object-size",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_future_Object_size,
+ { "read-future-Object-size", "ftam.read-future-Object-size",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_access_control,
+ { "read-access-control", "ftam.read-access-control",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_path_access_control,
+ { "read-path-access-control", "ftam.read-path-access-control",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS,
+ { "read-l8gal-qualifiCatiOnS", "ftam.read-l8gal-qualifiCatiOnS",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_ftam_Attribute_Names_read_private_use,
+ { "read-private-use", "ftam.read-private-use",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+
+/*--- End of included file: packet-ftam-hfarr.c ---*/
+
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_ftam,
+
+/*--- Included file: packet-ftam-ettarr.c ---*/
+
+ &ett_ftam_PDU,
+ &ett_ftam_FTAM_Regime_PDU,
+ &ett_ftam_F_INITIALIZE_request,
+ &ett_ftam_F_INITIALIZE_response,
+ &ett_ftam_Protocol_Version,
+ &ett_ftam_Service_Class,
+ &ett_ftam_Functional_Units,
+ &ett_ftam_Attribute_Groups,
+ &ett_ftam_Contents_Type_List,
+ &ett_ftam_Contents_Type_List_item,
+ &ett_ftam_F_TERMINATE_request,
+ &ett_ftam_F_TERMINATE_response,
+ &ett_ftam_F_U_ABORT_request,
+ &ett_ftam_F_P_ABORT_request,
+ &ett_ftam_File_PDU,
+ &ett_ftam_F_SELECT_request,
+ &ett_ftam_F_SELECT_response,
+ &ett_ftam_F_DESELECT_request,
+ &ett_ftam_F_DESELECT_response,
+ &ett_ftam_F_CREATE_request,
+ &ett_ftam_F_CREATE_response,
+ &ett_ftam_F_DELETE_request,
+ &ett_ftam_F_DELETE_response,
+ &ett_ftam_F_READ_ATTRIB_request,
+ &ett_ftam_F_READ_ATTRIB_response,
+ &ett_ftam_F_CHANGE_ATTRIB_request,
+ &ett_ftam_F_CHANGE_ATTRIB_response,
+ &ett_ftam_F_OPEN_request,
+ &ett_ftam_T_processing_mode,
+ &ett_ftam_T_contents_type,
+ &ett_ftam_SET_OF_Abstract_Syntax_Name,
+ &ett_ftam_F_OPEN_response,
+ &ett_ftam_F_CLOSE_request,
+ &ett_ftam_F_CLOSE_response,
+ &ett_ftam_F_BEGIN_GROUP_request,
+ &ett_ftam_F_BEGIN_GROUP_response,
+ &ett_ftam_F_END_GROUP_request,
+ &ett_ftam_F_END_GROUP_response,
+ &ett_ftam_F_RECOVER_request,
+ &ett_ftam_F_RECOVER_response,
+ &ett_ftam_F_LOCATE_request,
+ &ett_ftam_F_LOCATE_response,
+ &ett_ftam_F_ERASE_request,
+ &ett_ftam_F_ERASE_response,
+ &ett_ftam_Bulk_Data_PDU,
+ &ett_ftam_F_READ_request,
+ &ett_ftam_F_WRITE_request,
+ &ett_ftam_F_DATA_END_request,
+ &ett_ftam_F_TRANSFER_END_request,
+ &ett_ftam_F_TRANSFER_END_response,
+ &ett_ftam_F_CANCEL_request,
+ &ett_ftam_F_CANCEL_response,
+ &ett_ftam_F_CHECK_request,
+ &ett_ftam_F_CHECK_response,
+ &ett_ftam_F_RESTART_request,
+ &ett_ftam_F_RESTART_response,
+ &ett_ftam_Access_Context,
+ &ett_ftam_Access_Passwords,
+ &ett_ftam_Access_Request,
+ &ett_ftam_Change_Attributes,
+ &ett_ftam_Charging,
+ &ett_ftam_Charging_item,
+ &ett_ftam_Concurrency_Control,
+ &ett_ftam_Create_Attributes,
+ &ett_ftam_Diagnostic,
+ &ett_ftam_Diagnostic_item,
+ &ett_ftam_FADU_Identity,
+ &ett_ftam_SEQUENCE_OF_Node_Name,
+ &ett_ftam_Password,
+ &ett_ftam_Read_Attributes,
+ &ett_ftam_Select_Attributes,
+ &ett_ftam_Access_Control_Attribute,
+ &ett_ftam_SET_OF_Access_Control_Element,
+ &ett_ftam_Access_Control_Change_Attribute,
+ &ett_ftam_T_actual_values1,
+ &ett_ftam_Access_Control_Element,
+ &ett_ftam_Concurrency_Access,
+ &ett_ftam_Concurrency_Key,
+ &ett_ftam_Account_Attribute,
+ &ett_ftam_Contents_Type_Attribute,
+ &ett_ftam_T_document_type,
+ &ett_ftam_T_constraint_set_and_abstract_Syntax,
+ &ett_ftam_Date_and_Time_Attribute,
+ &ett_ftam_Object_Availability_Attribute,
+ &ett_ftam_Pathname_Attribute,
+ &ett_ftam_Object_Size_Attribute,
+ &ett_ftam_Legal_Qualification_Attribute,
+ &ett_ftam_Permitted_Actions_Attribute,
+ &ett_ftam_Private_Use_Attribute,
+ &ett_ftam_User_Identity_Attribute,
+ &ett_ftam_Child_Objects_Attribute,
+ &ett_ftam_FSM_PDU,
+ &ett_ftam_F_CHANGE_PREFIX_request,
+ &ett_ftam_F_CHANGE_PREFIX_response,
+ &ett_ftam_F_LIST_request,
+ &ett_ftam_F_LIST_response,
+ &ett_ftam_F_GROUP_SELECT_request,
+ &ett_ftam_F_GROUP_SELECT_response,
+ &ett_ftam_F_GROUP_DELETE_request,
+ &ett_ftam_F_GROUP_DELETE_response,
+ &ett_ftam_F_GROUP_MOVE_request,
+ &ett_ftam_F_GROUP_MOVE_response,
+ &ett_ftam_F_GROUP_COPY_request,
+ &ett_ftam_F_GROUP_COPY_response,
+ &ett_ftam_F_GROUP_LIST_request,
+ &ett_ftam_F_GROUP_LIST_response,
+ &ett_ftam_F_GROUP_CHANGE_ATTRIB_request,
+ &ett_ftam_F_GROUP_CHANGE_ATTRIB_response,
+ &ett_ftam_F_SELECT_ANOTHER_request,
+ &ett_ftam_F_SELECT_ANOTHER_response,
+ &ett_ftam_F_CREATE_DIRECTORY_request,
+ &ett_ftam_F_CREATE_DIRECTORY_response,
+ &ett_ftam_F_LINK_request,
+ &ett_ftam_F_LINK_response,
+ &ett_ftam_F_UNLINK_request,
+ &ett_ftam_F_UNLINK_response,
+ &ett_ftam_F_READ_LINK_ATTRIB_request,
+ &ett_ftam_F_READ_LINK_ATTRIB_response,
+ &ett_ftam_F_CHANGE_LINK_ATTRIB_request,
+ &ett_ftam_F_CHANGE_LINK_ATTRIB_response,
+ &ett_ftam_F_MOVE_request,
+ &ett_ftam_F_MOVE_response,
+ &ett_ftam_F_COPY_request,
+ &ett_ftam_F_COPY_response,
+ &ett_ftam_Attribute_Extension_Names,
+ &ett_ftam_Attribute_Extension_Set_Name,
+ &ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier,
+ &ett_ftam_Attribute_Extensions,
+ &ett_ftam_Attribute_Extension_Set,
+ &ett_ftam_SEQUENCE_OF_Extension_Attribute,
+ &ett_ftam_Extension_Attribute,
+ &ett_ftam_Scope,
+ &ett_ftam_Scope_item,
+ &ett_ftam_OR_Set,
+ &ett_ftam_AND_Set,
+ &ett_ftam_AND_Set_item,
+ &ett_ftam_Equality_Comparision,
+ &ett_ftam_Relational_Comparision,
+ &ett_ftam_Pathname_Pattern,
+ &ett_ftam_T_pathname_value,
+ &ett_ftam_T_pathname_value_item,
+ &ett_ftam_String_Pattern,
+ &ett_ftam_T_string_value,
+ &ett_ftam_T_string_value_item,
+ &ett_ftam_Bitstring_Pattern,
+ &ett_ftam_Date_and_Time_Pattern,
+ &ett_ftam_Integer_Pattern,
+ &ett_ftam_Object_Identifier_Pattern,
+ &ett_ftam_Boolean_Pattern,
+ &ett_ftam_Contents_Type_Pattern,
+ &ett_ftam_T_constraint_set_abstract_Syntax_Pattern,
+ &ett_ftam_Attribute_Extensions_Pattern,
+ &ett_ftam_Attribute_Extensions_Pattern_item,
+ &ett_ftam_T_extension_set_attribute_Patterns,
+ &ett_ftam_T_extension_set_attribute_Patterns_item,
+ &ett_ftam_Objects_Attributes_List,
+ &ett_ftam_Operation_Result,
+ &ett_ftam_SEQUENCE_OF_Pathname,
+ &ett_ftam_Pathname,
+ &ett_ftam_Pass_Passwords,
+ &ett_ftam_Path_Access_Passwords,
+ &ett_ftam_Path_Access_Passwords_item,
+ &ett_ftam_Attribute_Names,
+ &ett_ftam_AE_title,
+ &ett_ftam_Attribute_Value_Assertions,
+
+/*--- End of included file: packet-ftam-ettarr.c ---*/
+
+ };
+
+ /* Register protocol */
+ proto_ftam = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ register_dissector("ftam", dissect_ftam, proto_ftam);
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_ftam, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
}
+/*--- proto_reg_handoff_ftam --- */
+void proto_reg_handoff_ftam(void) {
+ register_ber_oid_dissector("1.0.8571.1.1", dissect_ftam, proto_ftam,
+ "ftam");
+}
diff --git a/epan/dissectors/packet-ftam.h b/epan/dissectors/packet-ftam.h
index 00d034bc99..e965b3a268 100644
--- a/epan/dissectors/packet-ftam.h
+++ b/epan/dissectors/packet-ftam.h
@@ -1,599 +1,43 @@
-/* packet-ftam.h
-*
-* Routine to dissect OSI ISO 8571 FTAM Protocol packets
-*
-* $Id$
-*
-* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
-*
-* Ethereal - Network traffic analyzer
-* By Gerald Combs <gerald@ethereal.com>
-* Copyright 1998 Gerald Combs
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#define PROTO_STRING_FTAM "OSI ISO 8571 FTAM Protocol"
-#define PROTO_STRING_FTAM_INFO "OSI ISO 8571 FTAM Protocol"
-
-/* asn.1 definitions */
-#define ASN1_CLASS_UNIVERSAL 0x00
-#define ASN1_CLASS_APPLICATION 0x40
-#define ASN1_CLASS_CONTEXT_SPECIFIC 0x80
-#define ASN1_CLASS_Private 0xc0
-#define ASN1_CLASS_PC 0x20
-
-#define INTEGER_ITEM 0x01
-#define BOOLEAN_ITEM 0x01
-
-#define NBS9_OID 0x2b
-
-#define SEQUENCE 0x30
-
-/* sequence top */
-#define TAG_00 0
-#define TAG_01 1
-
-enum
-{
-FTAM_F_INITIALIZE_REQUEST = 0xa0,
-FTAM_F_INITIALIZE_RESPONSE,
-FTAM_F_TERMINATE_REQUEST,
-FTAM_F_TERMINATE_RESPONSE,
-FTAM_F_U_ABORT_REQUEST,
-FTAM_F_P_ABORT_REQUEST,
-FTAM_F_SELECT_REQUEST,
-FTAM_F_SELECT_RESPONSE,
-FTAM_F_DESELECT_REQUEST,
-FTAM_F_DESELECT_RESPONSE,
-FTAM_F_CREATE_REQUEST,
-FTAM_F_CREATE_RESPONSE,
-FTAM_F_DELETE_REQUEST,
-FTAM_F_DELETE_RESPONSE,
-FTAM_F_READ_ATTRIB_REQUEST,
-FTAM_F_READ_ATTRIB_RESPONSE,
-FTAM_F_CHANGE_ATTRIB_REQUEST,
-FTAM_F_CHANGE_ATTRIB_RESPONSE,
-FTAM_F_OPEN_REQUEST,
-FTAM_F_OPEN_RESPONSE,
-FTAM_F_CLOSE_REQUEST,
-FTAM_F_CLOSE_RESPONSE,
-FTAM_F_BEGIN_GROUP_REQUEST,
-FTAM_F_BEGIN_GROUP_RESPONSE,
-FTAM_F_END_GROUP_REQUEST,
-FTAM_F_END_GROUP_RESPONSE,
-FTAM_F_RECOVER_REQUEST,
-FTAM_F_RECOVER_RESPONSE,
-FTAM_F_LOCATE_REQUEST,
-FTAM_F_LOCATE_RESPONSE,
-FTAM_F_ERASE_REQUEST,
-FTAM_F_ERASE_RESPONSE
-};
-enum
-{
-FTAM_F_READ_REQUEST=0x20,
-FTAM_F_WRITE_REQUEST,
-FTAM_F_DATA_END_REQUEST,
-FTAM_F_TRANSFER_END_REQUEST,
-FTAM_F_TRANSFER_END_RESPONSE,
-FTAM_F_CANCEL_REQUEST,
-FTAM_F_CANCEL_RESPONSE,
-FTAM_F_REASTART_REQUEST,
-FTAM_F_REASTART_RESPONSE
-};
-enum
-{
-FTAM_PROTOCOL_VERSION,
-FTAM_IMPLEMENTATION_INFORMATION,
-FTAM_PRESENTATION_CONTEXT_MANAGEMENT,
-FTAM_SERVICE_CLASS,
-FTAM_FUNCTIONAL_UNITS,
-FTAM_ATTRIBUTE_GROUPS,
-FTAM_QUALITY_OF_SERVICE,
-FTAM_CONTENTS_TYPE_LIST
-};
-/* pseudo value */
-#define FTAM_CHECKPOINT_WINDOW 55
-#define FTAM_CHARGING 9
-enum
-{
-FTAM_DIAGNOSTIC_TYPE=0x80,
-FTAM_ERROR_IDENTIFIER,
-FTAM_ERROR_OBSERVER,
-FTAM_ERROR_SOURCE,
-FTAM_SUGGESTED_DELAY,
-FTAM_FURTHER_DETAILS
-};
-enum
-{
-FTAM_NO_CATEGORIZATION_POSSIBLE,
-FTAM_INITIATING_FILE_SERVICE_USER,
-FTAM_INITIATING_FILE_PROTOCOL_MASHINE,
-FTAM_SERVICE_SUPPORTING_THE_FILE_PROTOCOL_MACHINE,
-FTAM_RESPONDING_FILE_PROTOCOL_MASHINE,
-FTAM_RESPONDING_FILE_SERVICE_USER
-};
-enum
-{
-FTAM_DIAGNOSTIC_INFORMATIVE,
-FTAM_DIAGNOSTIC_TRANSIENT,
-FTAM_DIAGNOSTIC_PERMANENT
-};
-enum
-{
-FTAM_RESPONSE_STATE_SUCCESS,
-FTAM_RESPONSE_STATE_FAILURE
-};
-enum
-{
-FTAM_RESPONSE_ACTION_RESULT_SUCCESS,
-FTAM_RESPONSE_ACTION_RESULT_TRANSIENT_ERROR,
-FTAM_RESPONSE_ACTION_RESULT_PERMANENT_ERROR
-};
-enum
-{
-FTAM_PROCESSING_MODE,
-FTAM_CONTENTS_TYPE,
-FTAM_CONCURENCY_CONTROL,
-FTAM_ENABLE_FADU_LOCKING,
-FTAM_ACTIVITY_IDENTIFIER,
-FTAM_RECOVERY_MODE,
-FTAM_REMOTE_CONTEXTS,
-FTAM_DEFINE_CONTEXTS
-};
-enum
-{
-FTAM_CONTENTS_TYPE_UNKNOWN,
-FTAM_CONTENTS_TYPE_PROPOSED
-};
-enum
-{
-FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE,
-FTAM_CONTENTS_TYPE_PROPOSED_CONSTRAINT_SET
-};
-enum
-{
-FTAM_CREATE_FAILURE,
-FTAM_SELECT_OLD_FILE,
-FTAM_DELETE_AND_CREATE_WITH_OLD_ATTRIBUTES,
-FTAM_DELETE_AND_CREATE_WITH_NEW_ATTRIBUTES
-};
-enum
-{
-FTAM_FADU_FIRST_LAST,
-FTAM_FADU_RELATIVE,
-FTAM_FADU_BEGIN_END,
-FTAM_FADU_SINGLE_NAME,
-FTAM_FADU_NAME_LIST,
-FTAM_FADU_FADU_NUMBER
-};
-enum
-{
-FTAM_FADU_FIRST,
-FTAM_FADU_LAST
-};
-enum
-{
-FTAM_FADU_PREVIOUS,
-FTAM_FADU_CURRENT,
-FTAM_FADU_NEXT
-};
-enum
-{
-FTAM_FADU_BEGIN,
-FTAM_FADU_END
-};
-enum
-{
-FTAM_HIERARCHICAL_ALL_DATA_UNITS,
-FTAM_HIERARCHICAL_NO_DATA_UNITS,
-FTAM_ALL_DATA_UNITS,
-FTAM_ONE_LEVEL_DATA_UNITS,
-FTAM_SINGLE_DATA_UNITS,
-FTAM_UNSTRUCTURED_ALL_DATA_UNITS,
-FTAM_UNSTRUCTURED_SINGLE_DATA_UNITS
-};
-enum
-{
-FTAM_ACCESS_INSERT,
-FTAM_ACCESS_REPLACE,
-FTAM_ACCESS_EXTEND
-};
-enum
-{
-FTAM_UNIVERSAL_CLASS_NUMBER,
-FTAM_MAXIMUM_STRING_LENGTH,
-FTAM_STRING_SIGNIFICANCE
-};
-enum
-{
-FTAM_VARIABLE,
-FTAM_FIXED,
-FTAM_NOT_SIGNIFICANT
-};
-enum
-{
-FTAM_READ_ATTRIBUTE_FILENAME,
-FTAM_READ_ATTRIBUTE_PERMITTED_ACTIONS,
-FTAM_READ_ATTRIBUTE_CONTENTS_TYPE,
-FTAM_READ_ATTRIBUTE_STORAGE_ACCOUNT,
-FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_CREATION,
-FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_MODIFICATION,
-FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_READ_ACCESS,
-FTAM_READ_ATTRIBUTE_DATA_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION,
-FTAM_READ_ATTRIBUTE_IDENTITY_OF_CREATOR,
-FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_MODIFIER,
-FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_READER,
-FTAM_READ_ATTRIBUTE_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER,
-FTAM_READ_ATTRIBUTE_FILE_AVAILABILITY,
-FTAM_READ_ATTRIBUTE_FILESIZE,
-FTAM_READ_ATTRIBUTE_FUTURE_FILESIZE,
-FTAM_READ_ATTRIBUTE_ACCESS_CONTROL,
-FTAM_READ_ATTRIBUTE_LEGAL_QUALIFICATION,
-FTAM_READ_ATTRIBUTE_PRIVATE_USE
-};
-
-
-#define FTAM_DATE_AND_TIME_NO_VALUE_AVAILABLE 0x00
-#define FTAM_DATE_AND_TIME_ACTUAL_VALUE 0x01
-
-#define FTAM_DATE_IDENTITY_NO_VALUE_AVAILABLE 0x00
-#define FTAM_DATE_IDENTITY_ACTUAL_VALUE 0x01
-
-
-#define FTAM_USER_IDENTITY 22
-
-#define FTAM_PRINTABLE_LENGTH 19
-#define FTAM_GRAPHIC_STRING 25
-#define FTAM_TELEX_STRING 20
-#define FTAM_VIDEO_STRING 21
-#define FTAM_IA5_STRING 22
-#define FTAM_VISIBLE_STRING 26
-#define FTAM_GENERAL_STRING 27
-#define FTAM_OCTET_STRING 04
-#define FTAM_PRINTABLE_STRING 05
-#define FTAM_NODE_DESCRIPTOR_DATA_ELEMENT 0xa0
-#define FTAM_ENTER_SUBTREE_DATA_ELEMENT 0xa1
-#define FTAM_EXIT_SUBTREE_DATA_ELEMENT 0xa2
-#define FTAM_DATATYPE_NBS9 0xe2
-
-#define FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_NAME 14
-#define FTAM_CONTENTS_TYPE_PROPOSED_DOCUMENT_TYPE_PARAMETER 0
-
-#define FTAM_PROCESSING_MODE_READ 0x0080
-#define FTAM_PROCESSING_MODE_REPLACE 0x0040
-#define FTAM_PROCESSING_MODE_INSERT 0x0020
-#define FTAM_PROCESSING_MODE_EXTEND 0x0010
-#define FTAM_PROCESSING_MODE_ERASE 0x0008
-
-
-#define FTAM_NBS9_READ_FILENAME 0x8000
-#define FTAM_NBS9_READ_PERMITTED_ACTIONS 0x4000
-#define FTAM_NBS9_READ_CONTENTS_TYPE 0x2000
-#define FTAM_NBS9_READ_STORAGE_ACCOUNT 0x1000
-#define FTAM_NBS9_READ_DATE_AND_TIME_OF_CREATION 0x0800
-#define FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_MODIFICATION 0x0400
-#define FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_READ_ACCESS 0x0200
-#define FTAM_NBS9_READ_DATE_AND_TIME_OF_LAST_ATTRIBUTE_MODIFICATION 0x0100
-#define FTAM_NBS9_READ_IDENTITY_OF_CREATOR 0x0080
-#define FTAM_NBS9_READ_IDENTITY_OF_LAST_MODIFIER 0x0040
-#define FTAM_NBS9_READ_IDENTITY_OF_LAST_READER 0x0020
-#define FTAM_NBS9_READ_IDENTITY_OF_LAST_ATTRIBUTE_MODIFIER 0x0010
-#define FTAM_NBS9_READ_FILE_AVAILABILITY 0x0008
-#define FTAM_NBS9_READ_FILESIZE 0x0004
-#define FTAM_NBS9_READ_FUTURE_FILESIZE 0x0002
-#define FTAM_NBS9_READ_ACCESS_CONTROL 0x0001
-#define FTAM_NBS9_READ_LEGAL_QUALIFICATIONS 0x80
-#define FTAM_NBS9_READ_PRIVATE_USE 0x40
-
-
-
-#define FTAM_SELECT_ATTRIBUTES 19
-#define FTAM_CREATE_ATTRIBUTES 12
-#define FTAM_ACCESS_REQUEST 3
-#define FTAM_ACCSESS_PASSWORDS 2
-#define FTAM_OVERRIDE 0
-
-#define FTAM_ACCSESS_PASSWORDS 2
-
-#define FTAM_READ_ATTRIBUTES 18
-
-
-
-#define FTAM_CREATE_FILENAME_ATTRIBUTES 0
-#define FTAM_CREATE_PERMITTED_ACTIONS_ATTRIBUTE 1
-#define FTAM_CREATE_CONTENTS_TYPE 2
-#define FTAM_CREATE_ACCOUNT_ATTRIBUTE 3
-#define FTAM_CREATE_FILE_AVAILABILITY_ATTRIBUTE 12
-#define FTAM_CREATE_FILESIZE_ATTRIBUTE 14
-#define FTAM_CREATE_ACCESS_CONTROL_ATTRIBUTE 15
-#define FTAM_CREATE_ACCESS_LEGAL_AUALIFICATION_ATTRIBUTE 16
-#define FTAM_CREATE_ACCESS_PRIVATE_USE_ATTRIBUTE 17
-
-#define FTAM_FILE_ACCESS_DATA_UNIT_IDENTITY 15
-#define FTAM_FILE_ACCESS_CONTEXT 1
-#define FTAM_FILE_FADU_LOCK 16
-#define FTAM_FILE_ACCESS_DATA_UNIT_OPERATION 0
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_READ 0x8000
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_INSERT 0x4000
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_REPLACE 0x2000
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_EXTEND 0x1000
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_ERASE 0x0800
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_READ_ATTRIBUTE 0x0400
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_CHANGE_ATTRIBUTE 0x0200
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_DELETE_FILE 0x0100
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_TRAVERSAL 0x0080
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_REVERSE_TRAVERSAL 0x0040
-#define FTAM_PERMITTED_ACTION_ATTRIBUTE_RANDOM_ORDER 0x0020
-
-
-#define FTAM_ACCOUNT 8
-#define FTAM_FILESTORE_PASSWORD 17
-#define FTAM_SHARED_ASE_INFORMATION 20
-#define FTAM_INITIATOR_IDENTIFY 22
-#define FTAM_DOCUMENT_TYPE 0x4e
-
-#define FTAM_ABSTRACT_SYNTAX_NAME 0x40
-
-
-/* filename attributes */
-#define FTAM_FILENAME_ATTRIBUTE_READ 0x0080
-#define FTAM_FILENAME_ATTRIBUTE_INSERT 0x0040
-#define FTAM_FILENAME_ATTRIBUTE_REPLACE 0x0020
-#define FTAM_FILENAME_ATTRIBUTE_EXTEND 0x0010
-#define FTAM_FILENAME_ATTRIBUTE_ERASE 0x0008
-#define FTAM_FILENAME_ATTRIBUTE_READ_ATTRIBUTE 0x0004
-#define FTAM_FILENAME_ATTRIBUTE_CHANGE_ATTRIBUTE 0x0002
-#define FTAM_FILENAME_ATTRIBUTE_DELETE_FILE 0x0001
-
-
-
-#define IMPLEMENTATION_INFORMATION 29
-#define USER_INFORMATION 30
-
-#define ftam_EXTERNAL 8
-
-#define FTAM_RESPONSE_STATE_RESULT 21
-/* dummy entry */
-#define FTAM_RESPONSE_ACTION_RESULT 555
-#define FTAM_RESPONSE_SHARED_ASE_INFORMATION 20
-#define FTAM_RESPONSE_DIAGNOSTIC 13
-
-/* definition list **/
-#define PRESENTATION_CONTEXT_IDENTIFIER 2
-#define ABSTRACT_SYNTAX_NAME 6
-#define TRANSFER_SYNTAX_NAMES 0x30
-/* result list */
-#define PRESENTATION_RESULT 0x80
-#define PRESENTATION_RESULT_TRANSFER_SYNTAX_NAME 0x81
-#define PRESENTATION_RESULT_INTEGER 0x82
-
-/* result values */
-#define PRESENTATION_RESULT_ACCEPTANCE 0
-#define PRESENTATION_RESULT_USER_REJECTION 1
-#define PRESENTATION_RESULT_PROVIDER_REJECTION 2
-
-
-/* user data */
-#define SIMPLY_ENCODED_DATA 0x60
-#define FULLY_ENCODED_DATA 0x61
-
-
-
-#define FTAM_PROTOCOL_VERGION 0x0080
-
-/* functional units */
-#define FTAM_FUNCTIONAL_UNIT_READ 0x2000
-#define FTAM_FUNCTIONAL_UNIT_WRITE 0x1000
-#define FTAM_FUNCTIONAL_UNIT_FILE_ACCESS 0x0800
-#define FTAM_FUNCTIONAL_UNIT_LIMITED_FILE_MANAGEMENT 0x0400
-#define FTAM_FUNCTIONAL_UNIT_ENHANCED_FILE_MANAGEMENT 0x0200
-#define FTAM_FUNCTIONAL_UNIT_GROUPING 0x0100
-#define FTAM_FUNCTIONAL_FADU_LOCKING 0x0080
-#define FTAM_FUNCTIONAL_UNIT_RECOVERY 0x0040
-#define FTAM_FUNCTIONAL_UNIT_RESTART_DATA_TRANSFER 0x0020
-
-/* service classes */
-#define FTAM_FUNCTIONAL_UNIT_UNCONSTRAINED_CLASS 0x80
-#define FTAM_FUNCTIONAL_UNIT_MANAGEMENT_CLASS 0x40
-#define FTAM_FUNCTIONAL_UNIT_TRANSFER_CLASS 0x20
-#define FTAM_FUNCTIONAL_UNIT_TRANSFER_AND_MANAGEMENT_CLASS 0x10
-#define FTAM_FUNCTIONAL_UNIT_ACESS_CLASS 0x08
-
-/* attribute group */
-#define FTAM_ATTRIBUTE_GROUPS_STORAGE 0x80
-#define FTAM_ATTRIBUTE_GROUPS_SECURITY 0x40
-#define FTAM_ATTRIBUTE_GROUPS_PRIVATE 0x20
-
-#define DATA_BULK_PDU 0xbf
-#define MAXSTRING 256
-#define ABORT_REASON_LEN 3
-
-
-
-#define GRAPHIC_STRING "Graphic string"
-enum
-{
-ERROR_MESSAGE_FTAM_NO_REASON,
-ERROR_MESSAGE_FTAM_RESPONDER_ERROR,
-ERROR_MESSAGE_FTAM_SYSTEM_SHUTDOWN,
-ERROR_MESSAGE_FTAM_MANAGEMENT_PROBLEM_U,
-ERROR_MESSAGE_FTAM_MANAGEMENT_PROBLEM_BA,
-ERROR_MESSAGE_FTAM_MANAGEMENT_PROBLEM_SC,
-ERROR_MESSAGE_DELAY_MAYBE_ENCOUNTERED,
-ERROR_MESSAGE_INITIATOR_ERROR,
-ERROR_MESSAGE_SUBSEQUENT_ERROR,
-ERROR_MESSAGE_TEMPORAL_INSUFFICIENCY_OF_RESOURCES,
-ERROR_MESSAGE_ACCESS_REQUEST_VIOLATES_VFS_SECURITY,
-ERROR_MESSAGE_ACCESS_REQUEST_VIOLATES_LOCAL_SECURITY
-};
-enum
-{
-ERROR_MESSAGE_CONFLICTING_PARAMETER_VALUE=1000,
-ERROR_MESSAGE_UNSUPPORTED_PARAMETER_VALUE,
-ERROR_MESSAGE_MANDATORY_PARAMETER_NOT_SET,
-ERROR_MESSAGE_UNSUPPORTED_PARAMETER,
-ERROR_MESSAGE_DUBLICATED_PARAMETER,
-ERROR_MESSAGE_ILLEGAL_PARAMETER_TYPE,
-ERROR_MESSAGE_UNSUPPORTED_PARAMETER_TYPE,
-ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_U,
-ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_PE,
-ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_FUE,
-ERROR_MESSAGE_FTAM_PROTOCOL_ERROR_CE,
-ERROR_MESSAGE_FTAM_LOWER_LAYER_FAILURE,
-ERROR_MESSAGE_FTAM_LOWER_ADDRESING_ERROR,
-ERROR_MESSAGE_FTAM_TIMEOUT,
-ERROR_MESSAGE_FTAM_SYSTEM_SHUTDOWN_,
-ERROR_MESSAGE_FTAM_ILLEGAL_GROUPING_SEQUENCE,
-ERROR_MESSAGE_GROUPING_THRESHHOLD_VIOLATION,
-ERROR_MESSAGE_SPECIFIC_PDU_REQUEST_INCONSISTENT
-};
-enum
-{
-ERROR_MESSAGE_ASSOCIATION_WITH_USER_NOT_ALLOWED=2000,
-ERROR_MESSAGE_NOT_ASSIGNED,
-ERROR_MESSAGE_UNSUPPORTED_SERVICE_CLASS,
-ERROR_MESSAGE_UNSUPPORTED_FUNCTIONAL_UNIT,
-ERROR_MESSAGE_ATTRIBUTE_GROUP_ERROR,
-ERROR_MESSAGE_ATTRIBUTE_GROUP_NOT_ALLOWED,
-ERROR_MESSAGE_BAD_ACCOUNT,
-ERROR_MESSAGE_ASSOC_MANAGEMENT,
-ERROR_MESSAGE_ASSOC_MANAGEMENT_BA,
-ERROR_MESSAGE_ASSOC_MANAGEMENT_BAC,
-ERROR_MESSAGE_CHECKPOINT_W_E_TL,
-ERROR_MESSAGE_CHECKPOINT_W_E_TS,
-ERROR_MESSAGE_CHECKPOINT_W_E_UN,
-ERROR_MESSAGE_COMMUNICATION_QOS_NOT_SUPPORTED,
-ERROR_MESSAGE_INITIATOR_IDENTITY_UNACCEPTABLE,
-ERROR_MESSAGE_CONTEXT_MANAGEMENT_REFUSED,
-ERROR_MESSAGE_ROLLBACK_NOT_AVAILABLE,
-ERROR_MESSAGE_CONTENTS_TYPE_LIST_CUT_BY_R,
-ERROR_MESSAGE_CONTENTS_TYPE_LIST_CUT_BY_P,
-ERROR_MESSAGE_INVALID_FILESTORE_PASSWORD,
-ERROR_MESSAGE_INCOMPATABLE_SERVICE_CLASS
-};
-enum
-{
-ERROR_MESSAGE_FILENAME_NOT_FOUND=3000,
-ERROR_MESSAGE_SELECTION_ATTRIBUTES_NOT_MATCHED,
-ERROR_MESSAGE_INITIAL_ATTRIBUTES_NOT_POSSIBLE,
-ERROR_MESSAGE_BAD_ATTRIBUTE_NAME,
-ERROR_MESSAGE_NON_EXISTENT_FILE,
-ERROR_MESSAGE_FILE_ALREADY_EXISTS,
-ERROR_MESSAGE_FILE_CANNOT_BE_CREATED,
-ERROR_MESSAGE_FILE_CANNOT_BE_DELETED,
-ERROR_MESSAGE_CONCURRENCY_CONTROL_NOT_AVAILABLE,
-ERROR_MESSAGE_CONCURRENCY_CONTROL_NOT_SUPPORTED,
-ERROR_MESSAGE_CONCURRENCY_CONTROL_NOT_POSSIBLE,
-ERROR_MESSAGE_MORE_RESTRICTIVE_LOCK,
-ERROR_MESSAGE_FILE_BUSY,
-ERROR_MESSAGE_ACCESS_CONTROL_NOT_AVAILABLE,
-ERROR_MESSAGE_ACCESS_CONTROL_NOT_SUPPORTED,
-ERROR_MESSAGE_ACCESS_CONTROL_INCONSISTENT,
-ERROR_MESSAGE_FILENAME_TRUNCATED,
-ERROR_MESSAGE_INITIAL_ATTRIBUTES_ALTERED,
-ERROR_MESSAGE_BAD_ACCOUNT_,
-ERROR_MESSAGE_OVERRIDE_SELECTED_EXISTING_FILE,
-ERROR_MESSAGE_OVERRIDE_DELETED_AND_RECREATED_FILE_OLD,
-ERROR_MESSAGE_OVERRIDE_DELETED_AND_RECREATED_FILE_NEW,
-ERROR_MESSAGE_CREATE_OVERRIDE_NOT_POSSIBLE,
-ERROR_MESSAGE_AMBIGUOUS_FILE_SPECIFICATION,
-ERROR_MESSAGE_INVALID_CREATE_PASSWORD,
-ERROR_MESSAGE_INVALID_DELETE_PASSWORD,
-ERROR_MESSAGE_BAD_ATTRIBUTE_VALUE,
-ERROR_MESSAGE_REQUESTED_ACCESS_VIOLATES_PERMITTED_ACTIONS,
-ERROR_MESSAGE_REQUESTED_FUNCTIONAL_UNIT_NOT_AVAILABLE,
-ERROR_MESSAGE_REQUESTED_FILE_CREATED_BUT_NOT_SELECTED
-};
-enum
-{
-ERROR_MESSAGE_ATTRIBUTE_NON_EXISTENT=4000,
-ERROR_MESSAGE_ATTRIBUTE_CANNOT_BE_READ,
-ERROR_MESSAGE_ATTRIBUTE_CANNOT_BE_CHANGED,
-ERROR_MESSAGE_ATTRIBUTE_NOT_SUPPORTED,
-ERROR_MESSAGE_BAD_ATTRIBUTE_NAME_,
-ERROR_MESSAGE_BAD_ATTRIBUTE_VALUE_,
-ERROR_MESSAGE_ATTRIBUTE_PARTIALLY_SUPPORTED,
-ERROR_MESSAGE_ADDITIONAL_SET_ATTRIBUTE_
-};
-enum
-{
-ERROR_MESSAGE_ARD_BAD_FADU_U = 5000,
-ERROR_MESSAGE_ARD_BAD_FADU_SIZE_ERROR,
-ERROR_MESSAGE_ARD_BAD_FADU_TYPE_ERROR,
-ERROR_MESSAGE_ARD_BAD_FADU_POORLY_SPECIFIED,
-ERROR_MESSAGE_ARD_BAD_FADU_BAD_LOCATION,
-ERROR_MESSAGE_ARD_FADU_DOES_NOT_EXIST,
-ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_U,
-ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_R,
-ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_W,
-ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_L,
-ERROR_MESSAGE_ARD_FADU_NOT_AVAILABLE_E,
-ERROR_MESSAGE_ARD_FADU_CAN_NOT_BE_INSERTED,
-ERROR_MESSAGE_ARD_FADU_CAN_NOT_BE_REPLACED,
-ERROR_MESSAGE_ARD_FADU_CAN_NOT_BE_LOCATED,
-ERROR_MESSAGE_ARD_BAD_DATA_ELEMENT_TYPE,
-ERROR_MESSAGE_ARD_OPERATION_NOT_AVAILABLE,
-ERROR_MESSAGE_ARD_OPERATION_NOT_SUPPORTED,
-ERROR_MESSAGE_ARD_OPERATION_NOT_INCONSISTENT,
-ERROR_MESSAGE_ARD_CONCURENCY_CONTROL_NOT_AVAILABLE,
-ERROR_MESSAGE_ARD_CONCURENCY_CONTROL_NOT_SUPPORTED,
-ERROR_MESSAGE_ARD_CONCURENCY_CONTROL_NOT_INCONSISTENT,
-ERROR_MESSAGE_ARD_PROCESSING_MODE_NOT_AVAILABLE,
-ERROR_MESSAGE_ARD_PROCESSING_MODE_NOT_SUPPORTED,
-ERROR_MESSAGE_ARD_PROCESSING_MODE_NOT_INCONSISTENT,
-ERROR_MESSAGE_ARD_ACCESS_CONTEXT_NOT_AVAILABLE,
-ERROR_MESSAGE_ARD_ACCESS_CONTEXT_NOT_SUPPORTED,
-ERROR_MESSAGE_ARD_BAD_WRITE_U,
-ERROR_MESSAGE_ARD_BAD_READ_U,
-ERROR_MESSAGE_ARD_LOCAL_FAILURE_U,
-ERROR_MESSAGE_ARD_LOCAL_FAILURE_FE,
-ERROR_MESSAGE_ARD_LOCAL_FAILURE_DC,
-ERROR_MESSAGE_ARD_LOCAL_FAILURE_DF,
-ERROR_MESSAGE_ARD_FUTURE_FILE_SIZE_EXCEEDED,
-ERROR_MESSAGE_ARD_FUTURE_FILE_SIZE_INCREASED,
-ERROR_MESSAGE_ARD_FUNCTIONAL_UNIT_INVALID,
-ERROR_MESSAGE_ARD_CONTENTS_TYPE_INCONSISTENT,
-ERROR_MESSAGE_ARD_CONTENTS_TYPE_SIMPLIFIED,
-ERROR_MESSAGE_ARD_DUBLICATE_FADU_NAME,
-ERROR_MESSAGE_ARD_DAMAGE_TO_SO,
-ERROR_MESSAGE_ARD_FADU_LOCKING_NOT_A,
-ERROR_MESSAGE_ARD_FADU_LOCKED_BY_ANOTHER_USER
-};
-enum
-{
-ERROR_MESSAGE_RR_BAD_CHECKPOINT=6000,
-ERROR_MESSAGE_RR_ACTIVITY_NOT_UNIQUE,
-ERROR_MESSAGE_RR_CHECKPOINT_OUTSIDE_WINDOW,
-ERROR_MESSAGE_RR_ACTIVITY_NO_LONGER_EXISTS,
-ERROR_MESSAGE_RR_ACTIVITY_NO_LONGER_RECOGNIZED,
-ERROR_MESSAGE_RR_ACTIVITY_NO_DOCKET,
-ERROR_MESSAGE_RR_ACTIVITY_CORRUPT_DOCKET,
-ERROR_MESSAGE_RR_FILE_WAITING_RESTART,
-ERROR_MESSAGE_RR_BAD_RECOVERY_POINT,
-ERROR_MESSAGE_RR_NON_EXISTENT_RECOVERY_POINT,
-ERROR_MESSAGE_RR_RECOVERY_MODE_NOT_AVAILABLE,
-ERROR_MESSAGE_RR_RECOVERY_MODE_INCONSISTENT,
-ERROR_MESSAGE_RR_RECOVERY_MODE_REDUCE,
-ERROR_MESSAGE_RR_ACCESS_CONTROL_NOT_A,
-ERROR_MESSAGE_RR_ACCESS_CONTROL_NOT_S,
-ERROR_MESSAGE_RR_ACCESS_CONTROL_I,
-ERROR_MESSAGE_RR_CONTENTS_TYPE_I,
-ERROR_MESSAGE_RR_CONTENTS_TYPE_S
-};
-
-
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* ./packet-ftam.h */
+/* ../../tools/asn2eth.py -X -b -e -p ftam -c ftam.cnf -s packet-ftam-template ISO8571-FTAM.asn */
+/* Input file: packet-ftam-template.h */
+/* packet-ftam.h
+ * Routine to dissect OSI ISO 8571 FTAM Protocol packets
+ * based on the ASN.1 specification from http://www.itu.int/ITU-T/asn1/database/iso/8571-4/1988/
+ *
+ * also based on original handwritten dissector by
+ * Yuriy Sidelnikov <YSidelnikov@hotmail.com>
+ *
+ * Anders Broman and Ronnie Sahlberg 2005
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_FTAM_H
+#define PACKET_FTAM_H
+
+/*#include "packet-ftam-exp.h"*/
+
+#endif /* PACKET_FTAM_H */