diff options
Diffstat (limited to 'epan/dissectors/packet-gsm_map.c')
-rw-r--r-- | epan/dissectors/packet-gsm_map.c | 32880 |
1 files changed, 32880 insertions, 0 deletions
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c new file mode 100644 index 00000000..ba60c453 --- /dev/null +++ b/epan/dissectors/packet-gsm_map.c @@ -0,0 +1,32880 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-gsm_map.c */ +/* asn2wrs.py -b -L -c ./gsm_map.cnf -s ./packet-gsm_map-template -D . -O ../.. ../ros/Remote-Operations-Information-Objects.asn MobileDomainDefinitions.asn MAP-ApplicationContexts.asn MAP-SS-Code.asn MAP-BS-Code.asn MAP-TS-Code.asn MAP-ExtensionDataTypes.asn MAP-CommonDataTypes.asn MAP-SS-DataTypes.asn MAP-ER-DataTypes.asn MAP-SM-DataTypes.asn MAP-OM-DataTypes.asn MAP-MS-DataTypes.asn MAP-CH-DataTypes.asn MAP-LCS-DataTypes.asn MAP-GR-DataTypes.asn MAP-DialogueInformation.asn MAP-LocationServiceOperations.asn MAP-Group-Call-Operations.asn MAP-ShortMessageServiceOperations.asn MAP-SupplementaryServiceOperations.asn MAP-CallHandlingOperations.asn MAP-OperationAndMaintenanceOperations.asn MAP-MobileServiceOperations.asn MAP-Errors.asn MAP-Protocol.asn GSMMAP.asn SS-DataTypes.asn SS-Operations.asn Ericsson.asn Nokia.asn */ + +/* XXX see bug 1852: + * + * packet-gsm_map.c: There are 1174 display filter fields registered. Most are + * prefixed appropriately as "gsm_map", but many others are prefixed as + * "gsm_old", or even "gad", "gsm_ss", or with no prefix at all. I don't know + * if the ones with "gsm_old" are simply obsolete display filter fields or if + * they should be prefixed as "gsm_map.old." or what. Similar uncertainties + * for the others. Someone more knowledgeable than I am with respect to this + * dissector should provide a patch for it. + */ + +/* packet-gsm_map-template.c + * Routines for GSM MobileApplication packet dissection + * including GSM SS. + * Copyright 2004 - 2010 , Anders Broman <anders.broman [AT] ericsson.com> + * Based on the dissector by: + * Felix Fei <felix.fei [AT] utstar.com> + * and Michael Lum <mlum [AT] telostech.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * References GSM MAP: + * ETSI TS 129 002 + * Updated to ETSI TS 129 002 V7.5.0 (3GPP TS 29.002 V7.5.0 (2006-09) Release 7) + * Updated to ETSI TS 129 002 V8.4.0 (3GPP TS 29.002 V8.1.0 (2007-06) Release 8) + * References GSM SS + * References: 3GPP TS 24.080 + */ + +#include "config.h" + +#include <stdlib.h> + +#include <epan/packet.h> +#include <epan/prefs.h> +#include <epan/stat_tap_ui.h> +#include <epan/tap.h> +#include <epan/oids.h> +#include <epan/expert.h> +#include <epan/proto_data.h> +#include <epan/conversation.h> +#include <wsutil/strtoi.h> + +#include <epan/asn1.h> +#include "packet-ber.h" +#include "packet-per.h" +#include "packet-q931.h" +#include "packet-gsm_map.h" +#include "packet-gsm_a_common.h" +#include "packet-tcap.h" +#include "packet-e164.h" +#include "packet-e212.h" +#include "packet-smpp.h" +#include "packet-gsm_sms.h" +#include "packet-ranap.h" +#include "packet-isup.h" + +#define PNAME "GSM Mobile Application" +#define PSNAME "GSM_MAP" +#define PFNAME "gsm_map" + +void proto_register_gsm_map(void); +void proto_reg_handoff_gsm_map(void); + +/* Initialize the protocol and registered fields */ +static int proto_gsm_map = -1; +static int proto_gsm_map_dialogue = -1; +static int proto_gsm_map_ms = -1; + +static int hf_gsm_map_old_Component_PDU = -1; +static int hf_gsm_map_getPassword = -1; +static int hf_gsm_map_currentPassword = -1; +static int hf_gsm_map_extension = -1; +static int hf_gsm_map_nature_of_number = -1; +static int hf_gsm_map_number_plan = -1; +static int hf_gsm_map_address_digits = -1; +static int hf_gsm_map_TBCD_digits = -1; +static int hf_gsm_map_Ss_Status_unused = -1; +static int hf_gsm_map_Ss_Status_q_bit = -1; +static int hf_gsm_map_Ss_Status_p_bit = -1; +static int hf_gsm_map_Ss_Status_r_bit = -1; +static int hf_gsm_map_Ss_Status_a_bit = -1; +static int hf_gsm_map_notification_to_forwarding_party = -1; +static int hf_gsm_map_redirecting_presentation = -1; +static int hf_gsm_map_notification_to_calling_party = -1; +static int hf_gsm_map_forwarding_reason = -1; +static int hf_gsm_map_pdp_type_org = -1; +static int hf_gsm_map_etsi_pdp_type_number = -1; +static int hf_gsm_map_ietf_pdp_type_number = -1; +static int hf_gsm_map_ext_qos_subscribed_pri = -1; + +static int hf_gsm_map_qos_traffic_cls = -1; +static int hf_gsm_map_qos_del_order = -1; +static int hf_gsm_map_qos_del_of_err_sdu = -1; +static int hf_gsm_map_qos_ber = -1; +static int hf_gsm_map_qos_sdu_err_rat = -1; +static int hf_gsm_map_qos_traff_hdl_pri = -1; +static int hf_gsm_map_qos_max_sdu = -1; +static int hf_gsm_map_max_brate_ulink = -1; +static int hf_gsm_map_max_brate_dlink = -1; +static int hf_gsm_map_qos_transfer_delay = -1; +static int hf_gsm_map_guaranteed_max_brate_ulink = -1; +static int hf_gsm_map_guaranteed_max_brate_dlink = -1; +static int hf_gsm_map_GSNAddress_IPv4 = -1; +static int hf_gsm_map_GSNAddress_IPv6 = -1; +static int hf_gsm_map_ranap_service_Handover = -1; +static int hf_gsm_map_IntegrityProtectionInformation = -1; +static int hf_gsm_map_EncryptionInformation = -1; +static int hf_gsm_map_ss_SS_UserData = -1; +static int hf_gsm_map_cbs_coding_grp = -1; +static int hf_gsm_map_cbs_coding_grp0_lang = -1; +static int hf_gsm_map_cbs_coding_grp1_lang = -1; +static int hf_gsm_map_cbs_coding_grp2_lang = -1; +static int hf_gsm_map_cbs_coding_grp3_lang = -1; +static int hf_gsm_map_cbs_coding_grp4_7_comp = -1; +static int hf_gsm_map_cbs_coding_grp4_7_class_ind = -1; +static int hf_gsm_map_cbs_coding_grp4_7_char_set = -1; +static int hf_gsm_map_cbs_coding_grp4_7_class = -1; +static int hf_gsm_map_cbs_coding_grp15_mess_code = -1; +static int hf_gsm_map_cbs_coding_grp15_class = -1; +static int hf_gsm_map_ie_tag = -1; +static int hf_gsm_map_len = -1; +static int hf_gsm_map_disc_par = -1; +static int hf_gsm_map_dlci = -1; +static int hf_gsm_apn_str = -1; +static int hf_gsm_map_ericsson_locationInformation_rat = -1; +static int hf_gsm_map_ericsson_locationInformation_lac = -1; +static int hf_gsm_map_ericsson_locationInformation_ci = -1; +static int hf_gsm_map_ericsson_locationInformation_sac = -1; +static int hf_gsm_map_ussd_string = -1; +static int hf_gsm_map_spare_bits = -1; +static int hf_gsm_map_qos_signalling_ind = -1; +static int hf_gsm_map_qos_source_stat_desc = - 1; +static int hf_gsm_map_qos_max_bitrate_upl_ext = -1; +static int hf_gsm_map_qos_max_bitrate_downl_ext = -1; +static int hf_gsm_map_qos_guar_bitrate_upl_ext = -1; +static int hf_gsm_map_qos_guar_bitrate_downl_ext = -1; +/* +static int hf_gsm_map_qos_max_bitrate_upl_ext2 = -1; +static int hf_gsm_map_qos_max_bitrate_downl_ext2 = -1; +static int hf_gsm_map_qos_guar_bitrate_upl_ext2 = -1; +static int hf_gsm_map_qos_guar_bitrate_downl_ext2 = -1; +*/ +static int hf_gsm_map_earp_pci = -1; +static int hf_gsm_map_earp_pl = -1; +static int hf_gsm_map_earp_pvi = -1; + + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + +static int hf_gsm_map_privateExtensionList = -1; /* PrivateExtensionList */ +static int hf_gsm_map_pcs_Extensions = -1; /* PCS_Extensions */ +static int hf_gsm_map_slr_Arg_PCS_Extensions = -1; /* SLR_Arg_PCS_Extensions */ +static int hf_gsm_map_PrivateExtensionList_item = -1; /* PrivateExtension */ +static int hf_gsm_map_extId = -1; /* T_extId */ +static int hf_gsm_map_extType = -1; /* T_extType */ +static int hf_gsm_map_na_ESRK_Request = -1; /* NULL */ + +/* --- Module MAP-CommonDataTypes --- --- --- */ + +static int hf_gsm_map_gsm_map_ISDN_AddressString_PDU = -1; /* ISDN_AddressString */ +static int hf_gsm_map_protocolId = -1; /* ProtocolId */ +static int hf_gsm_map_signalInfo = -1; /* SignalInfo */ +static int hf_gsm_map_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_ext_ProtocolId = -1; /* Ext_ProtocolId */ +static int hf_gsm_map_accessNetworkProtocolId = -1; /* AccessNetworkProtocolId */ +static int hf_gsm_map_signalInfo_01 = -1; /* LongSignalInfo */ +static int hf_gsm_map_imsi = -1; /* IMSI */ +static int hf_gsm_map_imsi_WithLMSI = -1; /* IMSI_WithLMSI */ +static int hf_gsm_map_lmsi = -1; /* LMSI */ +static int hf_gsm_map_tmsi = -1; /* TMSI */ +static int hf_gsm_map_HLR_List_item = -1; /* HLR_Id */ +static int hf_gsm_map_naea_PreferredCIC = -1; /* NAEA_CIC */ +static int hf_gsm_map_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_externalAddress = -1; /* ISDN_AddressString */ +static int hf_gsm_map_diameter_Name = -1; /* DiameterIdentity */ +static int hf_gsm_map_diameter_Realm = -1; /* DiameterIdentity */ +static int hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength = -1; /* CellGlobalIdOrServiceAreaIdFixedLength */ +static int hf_gsm_map_laiFixedLength = -1; /* LAIFixedLength */ +static int hf_gsm_map_bearerService = -1; /* BearerServiceCode */ +static int hf_gsm_map_teleservice = -1; /* TeleserviceCode */ +static int hf_gsm_map_ext_BearerService = -1; /* Ext_BearerServiceCode */ +static int hf_gsm_map_ext_Teleservice = -1; /* Ext_TeleserviceCode */ +static int hf_gsm_map_maximumentitledPriority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_defaultPriority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_ss_Code = -1; /* SS_Code */ +static int hf_gsm_map_ss_Status = -1; /* Ext_SS_Status */ +static int hf_gsm_map_nbrSB = -1; /* MaxMC_Bearers */ +static int hf_gsm_map_nbrUser = -1; /* MC_Bearers */ + +/* --- Module MAP-SS-DataTypes --- --- --- */ + +static int hf_gsm_map_ss_ss_Code = -1; /* SS_Code */ +static int hf_gsm_map_ss_basicService = -1; /* BasicServiceCode */ +static int hf_gsm_map_ss_forwardedToNumber = -1; /* AddressString */ +static int hf_gsm_map_ss_forwardedToSubaddress = -1; /* ISDN_SubaddressString */ +static int hf_gsm_map_ss_noReplyConditionTime = -1; /* NoReplyConditionTime */ +static int hf_gsm_map_ss_defaultPriority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_ss_nbrUser = -1; /* MC_Bearers */ +static int hf_gsm_map_ss_longFTN_Supported = -1; /* NULL */ +static int hf_gsm_map_ss_forwardingInfo = -1; /* ForwardingInfo */ +static int hf_gsm_map_ss_callBarringInfo = -1; /* CallBarringInfo */ +static int hf_gsm_map_ss_ss_Data = -1; /* SS_Data */ +static int hf_gsm_map_ss_forwardingFeatureList = -1; /* ForwardingFeatureList */ +static int hf_gsm_map_ss_ForwardingFeatureList_item = -1; /* ForwardingFeature */ +static int hf_gsm_map_ss_ss_Status = -1; /* SS_Status */ +static int hf_gsm_map_ss_forwardedToNumber_01 = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ss_forwardingOptions = -1; /* ForwardingOptions */ +static int hf_gsm_map_ss_longForwardedToNumber = -1; /* FTN_AddressString */ +static int hf_gsm_map_ss_callBarringFeatureList = -1; /* CallBarringFeatureList */ +static int hf_gsm_map_ss_CallBarringFeatureList_item = -1; /* CallBarringFeature */ +static int hf_gsm_map_ss_ss_SubscriptionOption = -1; /* SS_SubscriptionOption */ +static int hf_gsm_map_ss_basicServiceGroupList = -1; /* BasicServiceGroupList */ +static int hf_gsm_map_ss_cliRestrictionOption = -1; /* CliRestrictionOption */ +static int hf_gsm_map_ss_overrideCategory = -1; /* OverrideCategory */ +static int hf_gsm_map_ss_maximumEntitledPriority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_ss_ccbs_FeatureList = -1; /* CCBS_FeatureList */ +static int hf_gsm_map_ss_nbrSB = -1; /* MaxMC_Bearers */ +static int hf_gsm_map_ss_nbrSN = -1; /* MC_Bearers */ +static int hf_gsm_map_ss_CCBS_FeatureList_item = -1; /* CCBS_Feature */ +static int hf_gsm_map_ss_ccbs_Index = -1; /* CCBS_Index */ +static int hf_gsm_map_ss_b_subscriberNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ss_b_subscriberSubaddress = -1; /* ISDN_SubaddressString */ +static int hf_gsm_map_ss_basicServiceGroup = -1; /* BasicServiceCode */ +static int hf_gsm_map_ss_genericServiceInfo = -1; /* GenericServiceInfo */ +static int hf_gsm_map_ss_ussd_DataCodingScheme = -1; /* USSD_DataCodingScheme */ +static int hf_gsm_map_ss_ussd_String = -1; /* USSD_String */ +static int hf_gsm_map_ss_alertingPattern = -1; /* AlertingPattern */ +static int hf_gsm_map_ss_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ss_SS_List_item = -1; /* SS_Code */ +static int hf_gsm_map_ss_BasicServiceGroupList_item = -1; /* BasicServiceCode */ +static int hf_gsm_map_ss_imsi = -1; /* IMSI */ +static int hf_gsm_map_ss_ss_Event = -1; /* SS_Code */ +static int hf_gsm_map_ss_ss_EventSpecification = -1; /* SS_EventSpecification */ +static int hf_gsm_map_ss_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_ss_ccbs_RequestState = -1; /* CCBS_RequestState */ +static int hf_gsm_map_ss_SS_EventSpecification_item = -1; /* AddressString */ +static int hf_gsm_map_ss_ccbs_Data = -1; /* CCBS_Data */ +static int hf_gsm_map_ss_ccbs_Feature = -1; /* CCBS_Feature */ +static int hf_gsm_map_ss_translatedB_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ss_serviceIndicator = -1; /* ServiceIndicator */ +static int hf_gsm_map_ss_callInfo = -1; /* ExternalSignalInfo */ +static int hf_gsm_map_ss_networkSignalInfo = -1; /* ExternalSignalInfo */ +/* named bits */ +static int hf_gsm_map_ss_ServiceIndicator_clir_invoked = -1; +static int hf_gsm_map_ss_ServiceIndicator_camel_invoked = -1; + +/* --- Module MAP-ER-DataTypes --- --- --- */ + +static int hf_gsm_map_er_roamingNotAllowedCause = -1; /* RoamingNotAllowedCause */ +static int hf_gsm_map_er_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_er_additionalRoamingNotAllowedCause = -1; /* AdditionalRoamingNotAllowedCause */ +static int hf_gsm_map_er_callBarringCause = -1; /* CallBarringCause */ +static int hf_gsm_map_er_extensibleCallBarredParam = -1; /* ExtensibleCallBarredParam */ +static int hf_gsm_map_er_unauthorisedMessageOriginator = -1; /* NULL */ +static int hf_gsm_map_er_anonymousCallRejection = -1; /* NULL */ +static int hf_gsm_map_er_cug_RejectCause = -1; /* CUG_RejectCause */ +static int hf_gsm_map_er_ss_Code = -1; /* SS_Code */ +static int hf_gsm_map_er_basicService = -1; /* BasicServiceCode */ +static int hf_gsm_map_er_ss_Status = -1; /* SS_Status */ +static int hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause = -1; /* SM_EnumeratedDeliveryFailureCause */ +static int hf_gsm_map_er_diagnosticInfo = -1; /* SignalInfo */ +static int hf_gsm_map_er_absentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_er_additionalAbsentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_er_imsi = -1; /* IMSI */ +static int hf_gsm_map_er_requestedRetransmissionTime = -1; /* Time */ +static int hf_gsm_map_er_userIdentifierAlert = -1; /* IMSI */ +static int hf_gsm_map_er_networkResource = -1; /* NetworkResource */ +static int hf_gsm_map_er_extensibleSystemFailureParam = -1; /* ExtensibleSystemFailureParam */ +static int hf_gsm_map_er_additionalNetworkResource = -1; /* AdditionalNetworkResource */ +static int hf_gsm_map_er_failureCauseParam = -1; /* FailureCauseParam */ +static int hf_gsm_map_er_unexpectedSubscriber = -1; /* NULL */ +static int hf_gsm_map_er_shapeOfLocationEstimateNotSupported = -1; /* NULL */ +static int hf_gsm_map_er_neededLcsCapabilityNotSupportedInServingNode = -1; /* NULL */ +static int hf_gsm_map_er_unknownSubscriberDiagnostic = -1; /* UnknownSubscriberDiagnostic */ +static int hf_gsm_map_er_absentSubscriberReason = -1; /* AbsentSubscriberReason */ +static int hf_gsm_map_er_ccbs_Possible = -1; /* NULL */ +static int hf_gsm_map_er_ccbs_Busy = -1; /* NULL */ +static int hf_gsm_map_er_gprsConnectionSuspended = -1; /* NULL */ +static int hf_gsm_map_er_unauthorizedLCSClient_Diagnostic = -1; /* UnauthorizedLCSClient_Diagnostic */ +static int hf_gsm_map_er_positionMethodFailure_Diagnostic = -1; /* PositionMethodFailure_Diagnostic */ + +/* --- Module MAP-SM-DataTypes --- --- --- */ + +static int hf_gsm_map_sm_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_sm_RP_PRI = -1; /* BOOLEAN */ +static int hf_gsm_map_sm_serviceCentreAddress = -1; /* AddressString */ +static int hf_gsm_map_sm_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_sm_gprsSupportIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_sm_RP_MTI = -1; /* SM_RP_MTI */ +static int hf_gsm_map_sm_sm_RP_SMEA = -1; /* SM_RP_SMEA */ +static int hf_gsm_map_sm_sm_deliveryNotIntended = -1; /* SM_DeliveryNotIntended */ +static int hf_gsm_map_sm_ip_sm_gwGuidanceIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_imsi = -1; /* IMSI */ +static int hf_gsm_map_sm_t4_Trigger_Indicator = -1; /* NULL */ +static int hf_gsm_map_sm_singleAttemptDelivery = -1; /* NULL */ +static int hf_gsm_map_sm_correlationID = -1; /* CorrelationID */ +static int hf_gsm_map_sm_smsf_supportIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_locationInfoWithLMSI = -1; /* LocationInfoWithLMSI */ +static int hf_gsm_map_sm_ip_sm_gwGuidance = -1; /* IP_SM_GW_Guidance */ +static int hf_gsm_map_sm_minimumDeliveryTimeValue = -1; /* SM_DeliveryTimerValue */ +static int hf_gsm_map_sm_recommendedDeliveryTimeValue = -1; /* SM_DeliveryTimerValue */ +static int hf_gsm_map_sm_networkNode_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_lmsi = -1; /* LMSI */ +static int hf_gsm_map_sm_gprsNodeIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_additional_Number = -1; /* Additional_Number */ +static int hf_gsm_map_sm_networkNodeDiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_additionalNetworkNodeDiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_thirdNumber = -1; /* Additional_Number */ +static int hf_gsm_map_sm_thirdNetworkNodeDiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_imsNodeIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_smsf_3gpp_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_smsf_3gpp_DiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_smsf_non_3gpp_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_smsf_non_3gpp_DiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_smsf_3gpp_address_indicator = -1; /* NULL */ +static int hf_gsm_map_sm_smsf_non_3gpp_address_indicator = -1; /* NULL */ +static int hf_gsm_map_sm_msc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_sgsn_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_sm_RP_DA = -1; /* SM_RP_DA */ +static int hf_gsm_map_sm_sm_RP_OA = -1; /* SM_RP_OA */ +static int hf_gsm_map_sm_sm_RP_UI = -1; /* SignalInfo */ +static int hf_gsm_map_sm_sm_DeliveryOutcome = -1; /* SM_DeliveryOutcome */ +static int hf_gsm_map_sm_moreMessagesToSend = -1; /* NULL */ +static int hf_gsm_map_sm_smDeliveryTimer = -1; /* SM_DeliveryTimerValue */ +static int hf_gsm_map_sm_smDeliveryStartTime = -1; /* Time */ +static int hf_gsm_map_sm_smsOverIP_OnlyIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_maximumRetransmissionTime = -1; /* Time */ +static int hf_gsm_map_sm_smsGmscAddress = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_smsGmscDiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_hlr_id = -1; /* HLR_Id */ +static int hf_gsm_map_sm_sip_uri_A = -1; /* SIP_URI */ +static int hf_gsm_map_sm_sip_uri_B = -1; /* SIP_URI */ +static int hf_gsm_map_sm_imsi_01 = -1; /* T_imsi */ +static int hf_gsm_map_sm_lmsi_01 = -1; /* T_lmsi */ +static int hf_gsm_map_sm_serviceCentreAddressDA = -1; /* T_serviceCentreAddressDA */ +static int hf_gsm_map_sm_noSM_RP_DA = -1; /* T_noSM_RP_DA */ +static int hf_gsm_map_sm_msisdn_01 = -1; /* T_msisdn */ +static int hf_gsm_map_sm_serviceCentreAddressOA = -1; /* T_serviceCentreAddressOA */ +static int hf_gsm_map_sm_noSM_RP_OA = -1; /* T_noSM_RP_OA */ +static int hf_gsm_map_sm_absentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_deliveryOutcomeIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_additionalSM_DeliveryOutcome = -1; /* SM_DeliveryOutcome */ +static int hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_ip_sm_gw_Indicator = -1; /* NULL */ +static int hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome = -1; /* SM_DeliveryOutcome */ +static int hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_smsf_3gpp_deliveryOutcomeIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_smsf_3gpp_deliveryOutcome = -1; /* SM_DeliveryOutcome */ +static int hf_gsm_map_sm_smsf_3gpp_absentSubscriberDiagSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_smsf_non_3gpp_deliveryOutcomeIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_smsf_non_3gpp_deliveryOutcome = -1; /* SM_DeliveryOutcome */ +static int hf_gsm_map_sm_smsf_non_3gpp_absentSubscriberDiagSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_storedMSISDN = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_maximumUeAvailabilityTime = -1; /* Time */ +static int hf_gsm_map_sm_smsGmscAlertEvent = -1; /* SmsGmsc_Alert_Event */ +static int hf_gsm_map_sm_newSGSNNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_newSGSNDiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_newMMENumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_newMMEDiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_sm_newMSCNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_mw_Status = -1; /* MW_Status */ +static int hf_gsm_map_sm_smsf3gppAbsentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_smsfNon3gppAbsentSubscriberDiagnosticSM = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_sm_alertReason = -1; /* AlertReason */ +static int hf_gsm_map_sm_alertReasonIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_additionalAlertReasonIndicator = -1; /* NULL */ +static int hf_gsm_map_sm_asciCallReference = -1; /* ASCI_CallReference */ +static int hf_gsm_map_sm_dispatcherList = -1; /* DispatcherList */ +static int hf_gsm_map_sm_ongoingCall = -1; /* NULL */ +static int hf_gsm_map_sm_additionalDispatcherList = -1; /* AdditionalDispatcherList */ +static int hf_gsm_map_sm_DispatcherList_item = -1; /* ISDN_AddressString */ +static int hf_gsm_map_sm_AdditionalDispatcherList_item = -1; /* ISDN_AddressString */ +/* named bits */ +static int hf_gsm_map_sm_MW_Status_sc_AddressNotIncluded = -1; +static int hf_gsm_map_sm_MW_Status_mnrf_Set = -1; +static int hf_gsm_map_sm_MW_Status_mcef_Set = -1; +static int hf_gsm_map_sm_MW_Status_mnrg_Set = -1; +static int hf_gsm_map_sm_MW_Status_mnr5g_Set = -1; +static int hf_gsm_map_sm_MW_Status_mnr5gn3g_Set = -1; + +/* --- Module MAP-OM-DataTypes --- --- --- */ + +static int hf_gsm_map_om_imsi = -1; /* IMSI */ +static int hf_gsm_map_om_traceReference = -1; /* TraceReference */ +static int hf_gsm_map_om_traceType = -1; /* TraceType */ +static int hf_gsm_map_om_omc_Id = -1; /* AddressString */ +static int hf_gsm_map_om_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_om_traceReference2 = -1; /* TraceReference2 */ +static int hf_gsm_map_om_traceDepthList = -1; /* TraceDepthList */ +static int hf_gsm_map_om_traceNE_TypeList = -1; /* TraceNE_TypeList */ +static int hf_gsm_map_om_traceInterfaceList = -1; /* TraceInterfaceList */ +static int hf_gsm_map_om_traceEventList = -1; /* TraceEventList */ +static int hf_gsm_map_om_traceCollectionEntity = -1; /* GSN_Address */ +static int hf_gsm_map_om_mdt_Configuration = -1; /* MDT_Configuration */ +static int hf_gsm_map_om_jobType = -1; /* JobType */ +static int hf_gsm_map_om_areaScope = -1; /* AreaScope */ +static int hf_gsm_map_om_listOfMeasurements = -1; /* ListOfMeasurements */ +static int hf_gsm_map_om_reportingTrigger = -1; /* ReportingTrigger */ +static int hf_gsm_map_om_reportInterval = -1; /* ReportInterval */ +static int hf_gsm_map_om_reportAmount = -1; /* ReportAmount */ +static int hf_gsm_map_om_eventThresholdRSRP = -1; /* EventThresholdRSRP */ +static int hf_gsm_map_om_eventThresholdRSRQ = -1; /* EventThresholdRSRQ */ +static int hf_gsm_map_om_loggingInterval = -1; /* LoggingInterval */ +static int hf_gsm_map_om_loggingDuration = -1; /* LoggingDuration */ +static int hf_gsm_map_om_measurementPeriodUMTS = -1; /* PeriodUMTS */ +static int hf_gsm_map_om_measurementPeriodLTE = -1; /* PeriodLTE */ +static int hf_gsm_map_om_collectionPeriodRRM_UMTS = -1; /* PeriodUMTS */ +static int hf_gsm_map_om_collectionPeriodRRM_LTE = -1; /* PeriodLTE */ +static int hf_gsm_map_om_positioningMethod = -1; /* PositioningMethod */ +static int hf_gsm_map_om_measurementQuantity = -1; /* MeasurementQuantity */ +static int hf_gsm_map_om_eventThreshold1F = -1; /* EventThreshold1F */ +static int hf_gsm_map_om_eventThreshold1I = -1; /* EventThreshold1I */ +static int hf_gsm_map_om_mdt_Allowed_PLMN_List = -1; /* MDT_Allowed_PLMNId_List */ +static int hf_gsm_map_om_MDT_Allowed_PLMNId_List_item = -1; /* PLMN_Id */ +static int hf_gsm_map_om_cgi_List = -1; /* CGI_List */ +static int hf_gsm_map_om_e_utran_cgi_List = -1; /* E_UTRAN_CGI_List */ +static int hf_gsm_map_om_routingAreaId_List = -1; /* RoutingAreaId_List */ +static int hf_gsm_map_om_locationAreaId_List = -1; /* LocationAreaId_List */ +static int hf_gsm_map_om_trackingAreaId_List = -1; /* TrackingAreaId_List */ +static int hf_gsm_map_om_CGI_List_item = -1; /* GlobalCellId */ +static int hf_gsm_map_om_E_UTRAN_CGI_List_item = -1; /* E_UTRAN_CGI */ +static int hf_gsm_map_om_RoutingAreaId_List_item = -1; /* RAIdentity */ +static int hf_gsm_map_om_LocationAreaId_List_item = -1; /* LAIFixedLength */ +static int hf_gsm_map_om_TrackingAreaId_List_item = -1; /* TA_Id */ +static int hf_gsm_map_om_msc_s_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_mgw_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_sgsn_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_ggsn_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_rnc_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_bmsc_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_mme_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_sgw_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_pgw_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_eNB_TraceDepth = -1; /* TraceDepth */ +static int hf_gsm_map_om_msc_s_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_mgw_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_sgsn_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_ggsn_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_rnc_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_bmsc_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_mme_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_sgw_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_pgw_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_eNB_TraceDepthExtension = -1; /* TraceDepthExtension */ +static int hf_gsm_map_om_msc_s_List = -1; /* MSC_S_InterfaceList */ +static int hf_gsm_map_om_mgw_List = -1; /* MGW_InterfaceList */ +static int hf_gsm_map_om_sgsn_List = -1; /* SGSN_InterfaceList */ +static int hf_gsm_map_om_ggsn_List = -1; /* GGSN_InterfaceList */ +static int hf_gsm_map_om_rnc_List = -1; /* RNC_InterfaceList */ +static int hf_gsm_map_om_bmsc_List = -1; /* BMSC_InterfaceList */ +static int hf_gsm_map_om_mme_List = -1; /* MME_InterfaceList */ +static int hf_gsm_map_om_sgw_List = -1; /* SGW_InterfaceList */ +static int hf_gsm_map_om_pgw_List = -1; /* PGW_InterfaceList */ +static int hf_gsm_map_om_eNB_List = -1; /* ENB_InterfaceList */ +static int hf_gsm_map_om_msc_s_List_01 = -1; /* MSC_S_EventList */ +static int hf_gsm_map_om_mgw_List_01 = -1; /* MGW_EventList */ +static int hf_gsm_map_om_sgsn_List_01 = -1; /* SGSN_EventList */ +static int hf_gsm_map_om_ggsn_List_01 = -1; /* GGSN_EventList */ +static int hf_gsm_map_om_bmsc_List_01 = -1; /* BMSC_EventList */ +static int hf_gsm_map_om_mme_List_01 = -1; /* MME_EventList */ +static int hf_gsm_map_om_sgw_List_01 = -1; /* SGW_EventList */ +static int hf_gsm_map_om_pgw_List_01 = -1; /* PGW_EventList */ +static int hf_gsm_map_om_traceRecordingSessionReference = -1; /* TraceRecordingSessionReference */ +static int hf_gsm_map_om_rnc_InterfaceList = -1; /* RNC_InterfaceList */ +static int hf_gsm_map_om_msc_s_InterfaceList = -1; /* MSC_S_InterfaceList */ +static int hf_gsm_map_om_msc_s_EventList = -1; /* MSC_S_EventList */ +static int hf_gsm_map_om_mgw_InterfaceList = -1; /* MGW_InterfaceList */ +static int hf_gsm_map_om_mgw_EventList = -1; /* MGW_EventList */ +static int hf_gsm_map_om_traceSupportIndicator = -1; /* NULL */ +/* named bits */ +static int hf_gsm_map_om_TraceNE_TypeList_msc_s = -1; +static int hf_gsm_map_om_TraceNE_TypeList_mgw = -1; +static int hf_gsm_map_om_TraceNE_TypeList_sgsn = -1; +static int hf_gsm_map_om_TraceNE_TypeList_ggsn = -1; +static int hf_gsm_map_om_TraceNE_TypeList_rnc = -1; +static int hf_gsm_map_om_TraceNE_TypeList_bm_sc = -1; +static int hf_gsm_map_om_TraceNE_TypeList_mme = -1; +static int hf_gsm_map_om_TraceNE_TypeList_sgw = -1; +static int hf_gsm_map_om_TraceNE_TypeList_pgw = -1; +static int hf_gsm_map_om_TraceNE_TypeList_eNB = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_a = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_iu = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_mc = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_map_g = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_map_b = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_map_e = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_map_f = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_cap = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_map_d = -1; +static int hf_gsm_map_om_MSC_S_InterfaceList_map_c = -1; +static int hf_gsm_map_om_MGW_InterfaceList_mc = -1; +static int hf_gsm_map_om_MGW_InterfaceList_nb_up = -1; +static int hf_gsm_map_om_MGW_InterfaceList_iu_up = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_gb = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_iu = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_gn = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_map_gr = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_map_gd = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_map_gf = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_gs = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_ge = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_s3 = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_s4 = -1; +static int hf_gsm_map_om_SGSN_InterfaceList_s6d = -1; +static int hf_gsm_map_om_GGSN_InterfaceList_gn = -1; +static int hf_gsm_map_om_GGSN_InterfaceList_gi = -1; +static int hf_gsm_map_om_GGSN_InterfaceList_gmb = -1; +static int hf_gsm_map_om_RNC_InterfaceList_iu = -1; +static int hf_gsm_map_om_RNC_InterfaceList_iur = -1; +static int hf_gsm_map_om_RNC_InterfaceList_iub = -1; +static int hf_gsm_map_om_RNC_InterfaceList_uu = -1; +static int hf_gsm_map_om_BMSC_InterfaceList_gmb = -1; +static int hf_gsm_map_om_MME_InterfaceList_s1_mme = -1; +static int hf_gsm_map_om_MME_InterfaceList_s3 = -1; +static int hf_gsm_map_om_MME_InterfaceList_s6a = -1; +static int hf_gsm_map_om_MME_InterfaceList_s10 = -1; +static int hf_gsm_map_om_MME_InterfaceList_s11 = -1; +static int hf_gsm_map_om_SGW_InterfaceList_s4 = -1; +static int hf_gsm_map_om_SGW_InterfaceList_s5 = -1; +static int hf_gsm_map_om_SGW_InterfaceList_s8b = -1; +static int hf_gsm_map_om_SGW_InterfaceList_s11 = -1; +static int hf_gsm_map_om_SGW_InterfaceList_gxc = -1; +static int hf_gsm_map_om_PGW_InterfaceList_s2a = -1; +static int hf_gsm_map_om_PGW_InterfaceList_s2b = -1; +static int hf_gsm_map_om_PGW_InterfaceList_s2c = -1; +static int hf_gsm_map_om_PGW_InterfaceList_s5 = -1; +static int hf_gsm_map_om_PGW_InterfaceList_s6b = -1; +static int hf_gsm_map_om_PGW_InterfaceList_gx = -1; +static int hf_gsm_map_om_PGW_InterfaceList_s8b = -1; +static int hf_gsm_map_om_PGW_InterfaceList_sgi = -1; +static int hf_gsm_map_om_ENB_InterfaceList_s1_mme = -1; +static int hf_gsm_map_om_ENB_InterfaceList_x2 = -1; +static int hf_gsm_map_om_ENB_InterfaceList_uu = -1; +static int hf_gsm_map_om_MSC_S_EventList_mo_mtCall = -1; +static int hf_gsm_map_om_MSC_S_EventList_mo_mt_sms = -1; +static int hf_gsm_map_om_MSC_S_EventList_lu_imsiAttach_imsiDetach = -1; +static int hf_gsm_map_om_MSC_S_EventList_handovers = -1; +static int hf_gsm_map_om_MSC_S_EventList_ss = -1; +static int hf_gsm_map_om_MGW_EventList_context = -1; +static int hf_gsm_map_om_SGSN_EventList_pdpContext = -1; +static int hf_gsm_map_om_SGSN_EventList_mo_mt_sms = -1; +static int hf_gsm_map_om_SGSN_EventList_rau_gprsAttach_gprsDetach = -1; +static int hf_gsm_map_om_SGSN_EventList_mbmsContext = -1; +static int hf_gsm_map_om_GGSN_EventList_pdpContext = -1; +static int hf_gsm_map_om_GGSN_EventList_mbmsContext = -1; +static int hf_gsm_map_om_BMSC_EventList_mbmsMulticastServiceActivation = -1; +static int hf_gsm_map_om_MME_EventList_ue_initiatedPDNconectivityRequest = -1; +static int hf_gsm_map_om_MME_EventList_serviceRequestts = -1; +static int hf_gsm_map_om_MME_EventList_initialAttachTrackingAreaUpdateDetach = -1; +static int hf_gsm_map_om_MME_EventList_ue_initiatedPDNdisconnection = -1; +static int hf_gsm_map_om_MME_EventList_bearerActivationModificationDeletion = -1; +static int hf_gsm_map_om_MME_EventList_handover = -1; +static int hf_gsm_map_om_SGW_EventList_pdn_connectionCreation = -1; +static int hf_gsm_map_om_SGW_EventList_pdn_connectionTermination = -1; +static int hf_gsm_map_om_SGW_EventList_bearerActivationModificationDeletion = -1; +static int hf_gsm_map_om_PGW_EventList_pdn_connectionCreation = -1; +static int hf_gsm_map_om_PGW_EventList_pdn_connectionTermination = -1; +static int hf_gsm_map_om_PGW_EventList_bearerActivationModificationDeletion = -1; + +/* --- Module MAP-MS-DataTypes --- --- --- */ + +static int hf_gsm_map_ms_gsm_map_ms_SendAuthenticationInfoArg_PDU = -1; /* SendAuthenticationInfoArg */ +static int hf_gsm_map_ms_gsm_map_ms_SendAuthenticationInfoRes_PDU = -1; /* SendAuthenticationInfoRes */ +static int hf_gsm_map_ms_imsi = -1; /* IMSI */ +static int hf_gsm_map_ms_msc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_vlr_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_lmsi = -1; /* LMSI */ +static int hf_gsm_map_ms_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_ms_vlr_Capability = -1; /* VLR_Capability */ +static int hf_gsm_map_ms_informPreviousNetworkEntity = -1; /* NULL */ +static int hf_gsm_map_ms_cs_LCS_NotSupportedByUE = -1; /* NULL */ +static int hf_gsm_map_ms_v_gmlc_Address = -1; /* GSN_Address */ +static int hf_gsm_map_ms_add_info = -1; /* ADD_Info */ +static int hf_gsm_map_ms_pagingArea = -1; /* PagingArea */ +static int hf_gsm_map_ms_skipSubscriberDataUpdate = -1; /* NULL */ +static int hf_gsm_map_ms_restorationIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_eplmn_List = -1; /* EPLMN_List */ +static int hf_gsm_map_ms_mme_DiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_ms_supportedCamelPhases = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ms_solsaSupportIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_istSupportIndicator = -1; /* IST_SupportIndicator */ +static int hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity = -1; /* SuperChargerInfo */ +static int hf_gsm_map_ms_longFTN_Supported = -1; /* NULL */ +static int hf_gsm_map_ms_supportedLCS_CapabilitySets = -1; /* SupportedLCS_CapabilitySets */ +static int hf_gsm_map_ms_offeredCamel4CSIs = -1; /* OfferedCamel4CSIs */ +static int hf_gsm_map_ms_supportedRAT_TypesIndicator = -1; /* SupportedRAT_Types */ +static int hf_gsm_map_ms_longGroupID_Supported = -1; /* NULL */ +static int hf_gsm_map_ms_mtRoamingForwardingSupported = -1; /* NULL */ +static int hf_gsm_map_ms_msisdn_lessOperation_Supported = -1; /* NULL */ +static int hf_gsm_map_ms_reset_ids_Supported = -1; /* NULL */ +static int hf_gsm_map_ms_sendSubscriberData = -1; /* NULL */ +static int hf_gsm_map_ms_subscriberDataStored = -1; /* AgeIndicator */ +static int hf_gsm_map_ms_hlr_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_add_Capability = -1; /* NULL */ +static int hf_gsm_map_ms_pagingArea_Capability = -1; /* NULL */ +static int hf_gsm_map_ms_imeisv = -1; /* IMEI */ +static int hf_gsm_map_ms_PagingArea_item = -1; /* LocationArea */ +static int hf_gsm_map_ms_laiFixedLength = -1; /* LAIFixedLength */ +static int hf_gsm_map_ms_lac = -1; /* LAC */ +static int hf_gsm_map_ms_identity = -1; /* Identity */ +static int hf_gsm_map_ms_cancellationType = -1; /* CancellationType */ +static int hf_gsm_map_ms_typeOfUpdate = -1; /* TypeOfUpdate */ +static int hf_gsm_map_ms_mtrf_SupportedAndAuthorized = -1; /* NULL */ +static int hf_gsm_map_ms_mtrf_SupportedAndNotAuthorized = -1; /* NULL */ +static int hf_gsm_map_ms_newMSC_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_newVLR_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_new_lmsi = -1; /* LMSI */ +static int hf_gsm_map_ms_reattach_Required = -1; /* NULL */ +static int hf_gsm_map_ms_sgsn_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_locationInformation = -1; /* LocationInformation */ +static int hf_gsm_map_ms_locationInformationGPRS = -1; /* LocationInformationGPRS */ +static int hf_gsm_map_ms_locationInformationEPS = -1; /* LocationInformationEPS */ +static int hf_gsm_map_ms_freezeTMSI = -1; /* NULL */ +static int hf_gsm_map_ms_freezeP_TMSI = -1; /* NULL */ +static int hf_gsm_map_ms_freezeM_TMSI = -1; /* NULL */ +static int hf_gsm_map_ms_tmsi = -1; /* TMSI */ +static int hf_gsm_map_ms_numberOfRequestedVectors = -1; /* NumberOfRequestedVectors */ +static int hf_gsm_map_ms_segmentationProhibited = -1; /* NULL */ +static int hf_gsm_map_ms_previous_LAI = -1; /* LAIFixedLength */ +static int hf_gsm_map_ms_hopCounter = -1; /* HopCounter */ +static int hf_gsm_map_ms_authenticationSetList = -1; /* AuthenticationSetList */ +static int hf_gsm_map_ms_currentSecurityContext = -1; /* CurrentSecurityContext */ +static int hf_gsm_map_ms_lastUsedLtePLMN_Id = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_mtCallPendingFlag = -1; /* NULL */ +static int hf_gsm_map_ms_tripletList = -1; /* TripletList */ +static int hf_gsm_map_ms_quintupletList = -1; /* QuintupletList */ +static int hf_gsm_map_ms_TripletList_item = -1; /* AuthenticationTriplet */ +static int hf_gsm_map_ms_QuintupletList_item = -1; /* AuthenticationQuintuplet */ +static int hf_gsm_map_ms_rand = -1; /* RAND */ +static int hf_gsm_map_ms_sres = -1; /* SRES */ +static int hf_gsm_map_ms_kc = -1; /* Kc */ +static int hf_gsm_map_ms_xres = -1; /* XRES */ +static int hf_gsm_map_ms_ck = -1; /* CK */ +static int hf_gsm_map_ms_ik = -1; /* IK */ +static int hf_gsm_map_ms_autn = -1; /* AUTN */ +static int hf_gsm_map_ms_gsm_SecurityContextData = -1; /* GSM_SecurityContextData */ +static int hf_gsm_map_ms_umts_SecurityContextData = -1; /* UMTS_SecurityContextData */ +static int hf_gsm_map_ms_cksn = -1; /* Cksn */ +static int hf_gsm_map_ms_ksi = -1; /* KSI */ +static int hf_gsm_map_ms_failureCause = -1; /* FailureCause */ +static int hf_gsm_map_ms_re_attempt = -1; /* BOOLEAN */ +static int hf_gsm_map_ms_accessType = -1; /* AccessType */ +static int hf_gsm_map_ms_sgsn_Address = -1; /* GSN_Address */ +static int hf_gsm_map_ms_sgsn_Capability = -1; /* SGSN_Capability */ +static int hf_gsm_map_ms_ps_LCS_NotSupportedByUE = -1; /* NULL */ +static int hf_gsm_map_ms_eps_info = -1; /* EPS_Info */ +static int hf_gsm_map_ms_servingNodeTypeIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_usedRAT_Type = -1; /* Used_RAT_Type */ +static int hf_gsm_map_ms_gprsSubscriptionDataNotNeeded = -1; /* NULL */ +static int hf_gsm_map_ms_nodeTypeIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_areaRestricted = -1; /* NULL */ +static int hf_gsm_map_ms_ue_reachableIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_epsSubscriptionDataNotNeeded = -1; /* NULL */ +static int hf_gsm_map_ms_ue_srvcc_Capability = -1; /* UE_SRVCC_Capability */ +static int hf_gsm_map_ms_mmeNumberforMTSMS = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_smsRegisterRequest = -1; /* SMSRegisterRequest */ +static int hf_gsm_map_ms_sms_Only = -1; /* NULL */ +static int hf_gsm_map_ms_removalofMMERegistrationforSMS = -1; /* NULL */ +static int hf_gsm_map_ms_sgsn_Name = -1; /* DiameterIdentity */ +static int hf_gsm_map_ms_sgsn_Realm = -1; /* DiameterIdentity */ +static int hf_gsm_map_ms_lgd_supportIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_adjacentPLMN_List = -1; /* AdjacentPLMN_List */ +static int hf_gsm_map_ms_pdn_gw_update = -1; /* PDN_GW_Update */ +static int hf_gsm_map_ms_isr_Information = -1; /* ISR_Information */ +static int hf_gsm_map_ms_apn = -1; /* APN */ +static int hf_gsm_map_ms_pdn_gw_Identity = -1; /* PDN_GW_Identity */ +static int hf_gsm_map_ms_contextId = -1; /* ContextId */ +static int hf_gsm_map_ms_gprsEnhancementsSupportIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_smsCallBarringSupportIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_supportedFeatures = -1; /* SupportedFeatures */ +static int hf_gsm_map_ms_t_adsDataRetrieval = -1; /* NULL */ +static int hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions = -1; /* BOOLEAN */ +static int hf_gsm_map_ms_cancellationTypeInitialAttach = -1; /* NULL */ +static int hf_gsm_map_ms_updateofHomogeneousSupportOfIMSVoiceOverPSSessions = -1; /* NULL */ +static int hf_gsm_map_ms_ext_SupportedFeatures = -1; /* Ext_SupportedFeatures */ +static int hf_gsm_map_ms_sgsn_mmeSeparationSupported = -1; /* NULL */ +static int hf_gsm_map_ms_mmeRegisteredforSMS = -1; /* NULL */ +static int hf_gsm_map_ms_EPLMN_List_item = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_AdjacentPLMN_List_item = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_an_APDU = -1; /* AccessNetworkSignalInfo */ +static int hf_gsm_map_ms_integrityProtectionInfo = -1; /* IntegrityProtectionInformation */ +static int hf_gsm_map_ms_encryptionInfo = -1; /* EncryptionInformation */ +static int hf_gsm_map_ms_keyStatus = -1; /* KeyStatus */ +static int hf_gsm_map_ms_allowedGSM_Algorithms = -1; /* AllowedGSM_Algorithms */ +static int hf_gsm_map_ms_allowedUMTS_Algorithms = -1; /* AllowedUMTS_Algorithms */ +static int hf_gsm_map_ms_radioResourceInformation = -1; /* RadioResourceInformation */ +static int hf_gsm_map_ms_radioResourceList = -1; /* RadioResourceList */ +static int hf_gsm_map_ms_bssmap_ServiceHandover = -1; /* BSSMAP_ServiceHandover */ +static int hf_gsm_map_ms_ranap_ServiceHandover = -1; /* RANAP_ServiceHandover */ +static int hf_gsm_map_ms_bssmap_ServiceHandoverList = -1; /* BSSMAP_ServiceHandoverList */ +static int hf_gsm_map_ms_currentlyUsedCodec = -1; /* Codec */ +static int hf_gsm_map_ms_iuSupportedCodecsList = -1; /* SupportedCodecsList */ +static int hf_gsm_map_ms_rab_ConfigurationIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_iuSelectedCodec = -1; /* Codec */ +static int hf_gsm_map_ms_alternativeChannelType = -1; /* RadioResourceInformation */ +static int hf_gsm_map_ms_tracePropagationList = -1; /* TracePropagationList */ +static int hf_gsm_map_ms_aoipSupportedCodecsListAnchor = -1; /* AoIPCodecsList */ +static int hf_gsm_map_ms_aoipSelectedCodecTarget = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_uesbi_Iu = -1; /* UESBI_Iu */ +static int hf_gsm_map_ms_integrityProtectionAlgorithms = -1; /* PermittedIntegrityProtectionAlgorithms */ +static int hf_gsm_map_ms_encryptionAlgorithms = -1; /* PermittedEncryptionAlgorithms */ +static int hf_gsm_map_ms_targetCellId = -1; /* GlobalCellId */ +static int hf_gsm_map_ms_ho_NumberNotRequired = -1; /* NULL */ +static int hf_gsm_map_ms_targetRNCId = -1; /* RNCId */ +static int hf_gsm_map_ms_multipleBearerRequested = -1; /* NULL */ +static int hf_gsm_map_ms_rab_Id = -1; /* RAB_Id */ +static int hf_gsm_map_ms_asciCallReference = -1; /* ASCI_CallReference */ +static int hf_gsm_map_ms_geran_classmark = -1; /* GERAN_Classmark */ +static int hf_gsm_map_ms_iuCurrentlyUsedCodec = -1; /* Codec */ +static int hf_gsm_map_ms_regionalSubscriptionData = -1; /* ZoneCodeList */ +static int hf_gsm_map_ms_lclsGlobalCallReference = -1; /* LCLS_GlobalCallReference */ +static int hf_gsm_map_ms_lcls_Negotiation = -1; /* LCLS_Negotiation */ +static int hf_gsm_map_ms_lcls_Configuration_Preference = -1; /* LCLS_ConfigurationPreference */ +static int hf_gsm_map_ms_csg_SubscriptionDataList = -1; /* CSG_SubscriptionDataList */ +static int hf_gsm_map_ms_BSSMAP_ServiceHandoverList_item = -1; /* BSSMAP_ServiceHandoverInfo */ +static int hf_gsm_map_ms_RadioResourceList_item = -1; /* RadioResource */ +static int hf_gsm_map_ms_handoverNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_relocationNumberList = -1; /* RelocationNumberList */ +static int hf_gsm_map_ms_multicallBearerInfo = -1; /* MulticallBearerInfo */ +static int hf_gsm_map_ms_multipleBearerNotSupported = -1; /* NULL */ +static int hf_gsm_map_ms_selectedUMTS_Algorithms = -1; /* SelectedUMTS_Algorithms */ +static int hf_gsm_map_ms_chosenRadioResourceInformation = -1; /* ChosenRadioResourceInformation */ +static int hf_gsm_map_ms_iuAvailableCodecsList = -1; /* CodecList */ +static int hf_gsm_map_ms_aoipAvailableCodecsListMap = -1; /* AoIPCodecsList */ +static int hf_gsm_map_ms_integrityProtectionAlgorithm = -1; /* ChosenIntegrityProtectionAlgorithm */ +static int hf_gsm_map_ms_encryptionAlgorithm = -1; /* ChosenEncryptionAlgorithm */ +static int hf_gsm_map_ms_chosenChannelInfo = -1; /* ChosenChannelInfo */ +static int hf_gsm_map_ms_chosenSpeechVersion = -1; /* ChosenSpeechVersion */ +static int hf_gsm_map_ms_targetMSC_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_selectedRab_Id = -1; /* RAB_Id */ +static int hf_gsm_map_ms_selectedGSM_Algorithm = -1; /* SelectedGSM_Algorithm */ +static int hf_gsm_map_ms_iUSelectedCodec = -1; /* Codec */ +static int hf_gsm_map_ms_codec1 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec2 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec3 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec4 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec5 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec6 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec7 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_codec8 = -1; /* AoIPCodec */ +static int hf_gsm_map_ms_utranCodecList = -1; /* CodecList */ +static int hf_gsm_map_ms_geranCodecList = -1; /* CodecList */ +static int hf_gsm_map_ms_codec1_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec2_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec3_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec4_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec5_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec6_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec7_01 = -1; /* Codec */ +static int hf_gsm_map_ms_codec8_01 = -1; /* Codec */ +static int hf_gsm_map_ms_RelocationNumberList_item = -1; /* RelocationNumber */ +static int hf_gsm_map_ms_immediateResponsePreferred = -1; /* NULL */ +static int hf_gsm_map_ms_re_synchronisationInfo = -1; /* Re_synchronisationInfo */ +static int hf_gsm_map_ms_requestingNodeType = -1; /* RequestingNodeType */ +static int hf_gsm_map_ms_requestingPLMN_Id = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_numberOfRequestedAdditional_Vectors = -1; /* NumberOfRequestedVectors */ +static int hf_gsm_map_ms_additionalVectorsAreForEPS = -1; /* NULL */ +static int hf_gsm_map_ms_ueUsageTypeRequestIndication = -1; /* NULL */ +static int hf_gsm_map_ms_auts = -1; /* AUTS */ +static int hf_gsm_map_ms_eps_AuthenticationSetList = -1; /* EPS_AuthenticationSetList */ +static int hf_gsm_map_ms_ueUsageType = -1; /* UE_UsageType */ +static int hf_gsm_map_ms_EPS_AuthenticationSetList_item = -1; /* EPC_AV */ +static int hf_gsm_map_ms_kasme = -1; /* KASME */ +static int hf_gsm_map_ms_imei = -1; /* IMEI */ +static int hf_gsm_map_ms_requestedEquipmentInfo = -1; /* RequestedEquipmentInfo */ +static int hf_gsm_map_ms_equipmentStatus = -1; /* EquipmentStatus */ +static int hf_gsm_map_ms_bmuef = -1; /* UESBI_Iu */ +static int hf_gsm_map_ms_uesbi_IuA = -1; /* UESBI_IuA */ +static int hf_gsm_map_ms_uesbi_IuB = -1; /* UESBI_IuB */ +static int hf_gsm_map_ms_EDRX_Cycle_Length_List_item = -1; /* EDRX_Cycle_Length */ +static int hf_gsm_map_ms_rat_Type = -1; /* Used_RAT_Type */ +static int hf_gsm_map_ms_eDRX_Cycle_Length_Value = -1; /* EDRX_Cycle_Length_Value */ +static int hf_gsm_map_ms_Reset_Id_List_item = -1; /* Reset_Id */ +static int hf_gsm_map_ms_IMSI_GroupIdList_item = -1; /* IMSI_GroupId */ +static int hf_gsm_map_ms_group_Service_Id = -1; /* Group_Service_ID */ +static int hf_gsm_map_ms_plmnId = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_local_Group_ID = -1; /* Local_GroupID */ +static int hf_gsm_map_ms_CSG_SubscriptionDataList_item = -1; /* CSG_SubscriptionData */ +static int hf_gsm_map_ms_csg_Id = -1; /* CSG_Id */ +static int hf_gsm_map_ms_expirationDate = -1; /* Time */ +static int hf_gsm_map_ms_lipa_AllowedAPNList = -1; /* LIPA_AllowedAPNList */ +static int hf_gsm_map_ms_plmn_Id = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_VPLMN_CSG_SubscriptionDataList_item = -1; /* CSG_SubscriptionData */ +static int hf_gsm_map_ms_LIPA_AllowedAPNList_item = -1; /* APN */ +static int hf_gsm_map_ms_apn_oi_Replacement = -1; /* APN_OI_Replacement */ +static int hf_gsm_map_ms_rfsp_id = -1; /* RFSP_ID */ +static int hf_gsm_map_ms_ambr = -1; /* AMBR */ +static int hf_gsm_map_ms_apn_ConfigurationProfile = -1; /* APN_ConfigurationProfile */ +static int hf_gsm_map_ms_stn_sr = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_mps_CSPriority = -1; /* NULL */ +static int hf_gsm_map_ms_mps_EPSPriority = -1; /* NULL */ +static int hf_gsm_map_ms_subscribed_vsrvcc = -1; /* NULL */ +static int hf_gsm_map_ms_defaultContext = -1; /* ContextId */ +static int hf_gsm_map_ms_completeDataListIncluded = -1; /* NULL */ +static int hf_gsm_map_ms_epsDataList = -1; /* EPS_DataList */ +static int hf_gsm_map_ms_additionalDefaultContext = -1; /* ContextId */ +static int hf_gsm_map_ms_EPS_DataList_item = -1; /* APN_Configuration */ +static int hf_gsm_map_ms_pdn_Type = -1; /* PDN_Type */ +static int hf_gsm_map_ms_servedPartyIP_IPv4_Address = -1; /* PDP_Address */ +static int hf_gsm_map_ms_eps_qos_Subscribed = -1; /* EPS_QoS_Subscribed */ +static int hf_gsm_map_ms_pdn_gw_AllocationType = -1; /* PDN_GW_AllocationType */ +static int hf_gsm_map_ms_vplmnAddressAllowed = -1; /* NULL */ +static int hf_gsm_map_ms_chargingCharacteristics = -1; /* ChargingCharacteristics */ +static int hf_gsm_map_ms_specificAPNInfoList = -1; /* SpecificAPNInfoList */ +static int hf_gsm_map_ms_servedPartyIP_IPv6_Address = -1; /* PDP_Address */ +static int hf_gsm_map_ms_sipto_Permission = -1; /* SIPTO_Permission */ +static int hf_gsm_map_ms_lipa_Permission = -1; /* LIPA_Permission */ +static int hf_gsm_map_ms_restoration_Priority = -1; /* Restoration_Priority */ +static int hf_gsm_map_ms_sipto_local_network_Permission = -1; /* SIPTO_Local_Network_Permission */ +static int hf_gsm_map_ms_wlan_offloadability = -1; /* WLAN_Offloadability */ +static int hf_gsm_map_ms_non_IP_PDN_Type_Indicator = -1; /* NULL */ +static int hf_gsm_map_ms_nIDD_Mechanism = -1; /* NIDD_Mechanism */ +static int hf_gsm_map_ms_sCEF_ID = -1; /* FQDN */ +static int hf_gsm_map_ms_pdn_ConnectionContinuity = -1; /* PDN_ConnectionContinuity */ +static int hf_gsm_map_ms_qos_Class_Identifier = -1; /* QoS_Class_Identifier */ +static int hf_gsm_map_ms_allocation_Retention_Priority = -1; /* Allocation_Retention_Priority */ +static int hf_gsm_map_ms_max_RequestedBandwidth_UL = -1; /* Bandwidth */ +static int hf_gsm_map_ms_max_RequestedBandwidth_DL = -1; /* Bandwidth */ +static int hf_gsm_map_ms_extended_Max_RequestedBandwidth_UL = -1; /* BandwidthExt */ +static int hf_gsm_map_ms_extended_Max_RequestedBandwidth_DL = -1; /* BandwidthExt */ +static int hf_gsm_map_ms_SpecificAPNInfoList_item = -1; /* SpecificAPNInfo */ +static int hf_gsm_map_ms_priority_level = -1; /* INTEGER */ +static int hf_gsm_map_ms_pre_emption_capability = -1; /* BOOLEAN */ +static int hf_gsm_map_ms_pre_emption_vulnerability = -1; /* BOOLEAN */ +static int hf_gsm_map_ms_pdn_gw_ipv4_Address = -1; /* PDP_Address */ +static int hf_gsm_map_ms_pdn_gw_ipv6_Address = -1; /* PDP_Address */ +static int hf_gsm_map_ms_pdn_gw_name = -1; /* FQDN */ +static int hf_gsm_map_ms_wlan_offloadability_EUTRAN = -1; /* WLAN_Offloadability_Indication */ +static int hf_gsm_map_ms_wlan_offloadability_UTRAN = -1; /* WLAN_Offloadability_Indication */ +static int hf_gsm_map_ms_AdjacentAccessRestrictionDataList_item = -1; /* AdjacentAccessRestrictionData */ +static int hf_gsm_map_ms_accessRestrictionData = -1; /* AccessRestrictionData */ +static int hf_gsm_map_ms_ext_AccessRestrictionData = -1; /* Ext_AccessRestrictionData */ +static int hf_gsm_map_ms_gmlc_List = -1; /* GMLC_List */ +static int hf_gsm_map_ms_lcs_PrivacyExceptionList = -1; /* LCS_PrivacyExceptionList */ +static int hf_gsm_map_ms_molr_List = -1; /* MOLR_List */ +static int hf_gsm_map_ms_add_lcs_PrivacyExceptionList = -1; /* LCS_PrivacyExceptionList */ +static int hf_gsm_map_ms_GMLC_List_item = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_GPRSDataList_item = -1; /* PDP_Context */ +static int hf_gsm_map_ms_pdp_ContextId = -1; /* ContextId */ +static int hf_gsm_map_ms_pdp_Type = -1; /* PDP_Type */ +static int hf_gsm_map_ms_pdp_Address = -1; /* PDP_Address */ +static int hf_gsm_map_ms_qos_Subscribed = -1; /* QoS_Subscribed */ +static int hf_gsm_map_ms_ext_QoS_Subscribed = -1; /* Ext_QoS_Subscribed */ +static int hf_gsm_map_ms_pdp_ChargingCharacteristics = -1; /* ChargingCharacteristics */ +static int hf_gsm_map_ms_ext2_QoS_Subscribed = -1; /* Ext2_QoS_Subscribed */ +static int hf_gsm_map_ms_ext3_QoS_Subscribed = -1; /* Ext3_QoS_Subscribed */ +static int hf_gsm_map_ms_ext4_QoS_Subscribed = -1; /* Ext4_QoS_Subscribed */ +static int hf_gsm_map_ms_ext_pdp_Type = -1; /* Ext_PDP_Type */ +static int hf_gsm_map_ms_ext_pdp_Address = -1; /* PDP_Address */ +static int hf_gsm_map_ms_gprsDataList = -1; /* GPRSDataList */ +static int hf_gsm_map_ms_gprs_CSI = -1; /* GPRS_CSI */ +static int hf_gsm_map_ms_mo_sms_CSI = -1; /* SMS_CSI */ +static int hf_gsm_map_ms_mt_sms_CSI = -1; /* SMS_CSI */ +static int hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList = -1; /* MT_smsCAMELTDP_CriteriaList */ +static int hf_gsm_map_ms_mg_csi = -1; /* MG_CSI */ +static int hf_gsm_map_ms_gprs_CamelTDPDataList = -1; /* GPRS_CamelTDPDataList */ +static int hf_gsm_map_ms_camelCapabilityHandling = -1; /* CamelCapabilityHandling */ +static int hf_gsm_map_ms_notificationToCSE = -1; /* NULL */ +static int hf_gsm_map_ms_csi_Active = -1; /* NULL */ +static int hf_gsm_map_ms_GPRS_CamelTDPDataList_item = -1; /* GPRS_CamelTDPData */ +static int hf_gsm_map_ms_gprs_TriggerDetectionPoint = -1; /* GPRS_TriggerDetectionPoint */ +static int hf_gsm_map_ms_serviceKey = -1; /* ServiceKey */ +static int hf_gsm_map_ms_gsmSCF_Address = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_defaultSessionHandling = -1; /* DefaultGPRS_Handling */ +static int hf_gsm_map_ms_LSADataList_item = -1; /* LSAData */ +static int hf_gsm_map_ms_lsaIdentity = -1; /* LSAIdentity */ +static int hf_gsm_map_ms_lsaAttributes = -1; /* LSAAttributes */ +static int hf_gsm_map_ms_lsaActiveModeIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_lsaOnlyAccessIndicator = -1; /* LSAOnlyAccessIndicator */ +static int hf_gsm_map_ms_lsaDataList = -1; /* LSADataList */ +static int hf_gsm_map_ms_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_category = -1; /* Category */ +static int hf_gsm_map_ms_subscriberStatus = -1; /* SubscriberStatus */ +static int hf_gsm_map_ms_bearerServiceList = -1; /* BearerServiceList */ +static int hf_gsm_map_ms_teleserviceList = -1; /* TeleserviceList */ +static int hf_gsm_map_ms_provisionedSS = -1; /* Ext_SS_InfoList */ +static int hf_gsm_map_ms_odb_Data = -1; /* ODB_Data */ +static int hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature = -1; /* NULL */ +static int hf_gsm_map_ms_vbsSubscriptionData = -1; /* VBSDataList */ +static int hf_gsm_map_ms_vgcsSubscriptionData = -1; /* VGCSDataList */ +static int hf_gsm_map_ms_vlrCamelSubscriptionInfo = -1; /* VlrCamelSubscriptionInfo */ +static int hf_gsm_map_ms_BearerServiceList_item = -1; /* Ext_BearerServiceCode */ +static int hf_gsm_map_ms_TeleserviceList_item = -1; /* Ext_TeleserviceCode */ +static int hf_gsm_map_ms_odb_GeneralData = -1; /* ODB_GeneralData */ +static int hf_gsm_map_ms_odb_HPLMN_Data = -1; /* ODB_HPLMN_Data */ +static int hf_gsm_map_ms_Ext_SS_InfoList_item = -1; /* Ext_SS_Info */ +static int hf_gsm_map_ms_forwardingInfo = -1; /* Ext_ForwInfo */ +static int hf_gsm_map_ms_callBarringInfo = -1; /* Ext_CallBarInfo */ +static int hf_gsm_map_ms_cug_Info = -1; /* CUG_Info */ +static int hf_gsm_map_ms_ss_Data = -1; /* Ext_SS_Data */ +static int hf_gsm_map_ms_emlpp_Info = -1; /* EMLPP_Info */ +static int hf_gsm_map_ms_ss_Code = -1; /* SS_Code */ +static int hf_gsm_map_ms_forwardingFeatureList = -1; /* Ext_ForwFeatureList */ +static int hf_gsm_map_ms_Ext_ForwFeatureList_item = -1; /* Ext_ForwFeature */ +static int hf_gsm_map_ms_basicService = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ms_ss_Status = -1; /* Ext_SS_Status */ +static int hf_gsm_map_ms_forwardedToNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_forwardedToSubaddress = -1; /* ISDN_SubaddressString */ +static int hf_gsm_map_ms_forwardingOptions = -1; /* T_forwardingOptions */ +static int hf_gsm_map_ms_noReplyConditionTime = -1; /* Ext_NoRepCondTime */ +static int hf_gsm_map_ms_longForwardedToNumber = -1; /* FTN_AddressString */ +static int hf_gsm_map_ms_callBarringFeatureList = -1; /* Ext_CallBarFeatureList */ +static int hf_gsm_map_ms_Ext_CallBarFeatureList_item = -1; /* Ext_CallBarringFeature */ +static int hf_gsm_map_ms_cug_SubscriptionList = -1; /* CUG_SubscriptionList */ +static int hf_gsm_map_ms_cug_FeatureList = -1; /* CUG_FeatureList */ +static int hf_gsm_map_ms_CUG_SubscriptionList_item = -1; /* CUG_Subscription */ +static int hf_gsm_map_ms_cug_Index = -1; /* CUG_Index */ +static int hf_gsm_map_ms_cug_Interlock = -1; /* CUG_Interlock */ +static int hf_gsm_map_ms_intraCUG_Options = -1; /* IntraCUG_Options */ +static int hf_gsm_map_ms_basicServiceGroupList = -1; /* Ext_BasicServiceGroupList */ +static int hf_gsm_map_ms_CUG_FeatureList_item = -1; /* CUG_Feature */ +static int hf_gsm_map_ms_Ext_BasicServiceGroupList_item = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ms_preferentialCUG_Indicator = -1; /* CUG_Index */ +static int hf_gsm_map_ms_interCUG_Restrictions = -1; /* InterCUG_Restrictions */ +static int hf_gsm_map_ms_ss_SubscriptionOption = -1; /* SS_SubscriptionOption */ +static int hf_gsm_map_ms_LCS_PrivacyExceptionList_item = -1; /* LCS_PrivacyClass */ +static int hf_gsm_map_ms_notificationToMSUser = -1; /* NotificationToMSUser */ +static int hf_gsm_map_ms_externalClientList = -1; /* ExternalClientList */ +static int hf_gsm_map_ms_plmnClientList = -1; /* PLMNClientList */ +static int hf_gsm_map_ms_ext_externalClientList = -1; /* Ext_ExternalClientList */ +static int hf_gsm_map_ms_serviceTypeList = -1; /* ServiceTypeList */ +static int hf_gsm_map_ms_ExternalClientList_item = -1; /* ExternalClient */ +static int hf_gsm_map_ms_PLMNClientList_item = -1; /* LCSClientInternalID */ +static int hf_gsm_map_ms_Ext_ExternalClientList_item = -1; /* ExternalClient */ +static int hf_gsm_map_ms_clientIdentity = -1; /* LCSClientExternalID */ +static int hf_gsm_map_ms_gmlc_Restriction = -1; /* GMLC_Restriction */ +static int hf_gsm_map_ms_ServiceTypeList_item = -1; /* ServiceType */ +static int hf_gsm_map_ms_serviceTypeIdentity = -1; /* LCSServiceTypeID */ +static int hf_gsm_map_ms_MOLR_List_item = -1; /* MOLR_Class */ +static int hf_gsm_map_ms_ZoneCodeList_item = -1; /* ZoneCode */ +static int hf_gsm_map_ms_ss_List = -1; /* SS_List */ +static int hf_gsm_map_ms_regionalSubscriptionResponse = -1; /* RegionalSubscriptionResponse */ +static int hf_gsm_map_ms_basicServiceList = -1; /* BasicServiceList */ +static int hf_gsm_map_ms_regionalSubscriptionIdentifier = -1; /* ZoneCode */ +static int hf_gsm_map_ms_vbsGroupIndication = -1; /* NULL */ +static int hf_gsm_map_ms_vgcsGroupIndication = -1; /* NULL */ +static int hf_gsm_map_ms_camelSubscriptionInfoWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_gprsSubscriptionDataWithdraw = -1; /* GPRSSubscriptionDataWithdraw */ +static int hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1; /* NULL */ +static int hf_gsm_map_ms_lsaInformationWithdraw = -1; /* LSAInformationWithdraw */ +static int hf_gsm_map_ms_gmlc_ListWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_istInformationWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_specificCSI_Withdraw = -1; /* SpecificCSI_Withdraw */ +static int hf_gsm_map_ms_chargingCharacteristicsWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_stn_srWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_epsSubscriptionDataWithdraw = -1; /* EPS_SubscriptionDataWithdraw */ +static int hf_gsm_map_ms_apn_oi_replacementWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_csg_SubscriptionDeleted = -1; /* NULL */ +static int hf_gsm_map_ms_subscribedPeriodicTAU_RAU_TimerWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_subscribedPeriodicLAU_TimerWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_subscribed_vsrvccWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_vplmn_Csg_SubscriptionDeleted = -1; /* NULL */ +static int hf_gsm_map_ms_additionalMSISDN_Withdraw = -1; /* NULL */ +static int hf_gsm_map_ms_cs_to_ps_SRVCC_Withdraw = -1; /* NULL */ +static int hf_gsm_map_ms_imsiGroupIdList_Withdraw = -1; /* NULL */ +static int hf_gsm_map_ms_userPlaneIntegrityProtectionWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_dl_Buffering_Suggested_Packet_Count_Withdraw = -1; /* NULL */ +static int hf_gsm_map_ms_ue_UsageTypeWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_reset_idsWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_iab_OperationWithdraw = -1; /* NULL */ +static int hf_gsm_map_ms_allGPRSData = -1; /* NULL */ +static int hf_gsm_map_ms_contextIdList = -1; /* ContextIdList */ +static int hf_gsm_map_ms_allEPS_Data = -1; /* NULL */ +static int hf_gsm_map_ms_ContextIdList_item = -1; /* ContextId */ +static int hf_gsm_map_ms_allLSAData = -1; /* NULL */ +static int hf_gsm_map_ms_lsaIdentityList = -1; /* LSAIdentityList */ +static int hf_gsm_map_ms_LSAIdentityList_item = -1; /* LSAIdentity */ +static int hf_gsm_map_ms_BasicServiceList_item = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ms_o_CSI = -1; /* O_CSI */ +static int hf_gsm_map_ms_ss_CSI = -1; /* SS_CSI */ +static int hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList = -1; /* O_BcsmCamelTDPCriteriaList */ +static int hf_gsm_map_ms_tif_CSI = -1; /* NULL */ +static int hf_gsm_map_ms_m_CSI = -1; /* M_CSI */ +static int hf_gsm_map_ms_vt_CSI = -1; /* T_CSI */ +static int hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList = -1; /* T_BCSM_CAMEL_TDP_CriteriaList */ +static int hf_gsm_map_ms_d_CSI = -1; /* D_CSI */ +static int hf_gsm_map_ms_MT_smsCAMELTDP_CriteriaList_item = -1; /* MT_smsCAMELTDP_Criteria */ +static int hf_gsm_map_ms_sms_TriggerDetectionPoint = -1; /* SMS_TriggerDetectionPoint */ +static int hf_gsm_map_ms_tpdu_TypeCriterion = -1; /* TPDU_TypeCriterion */ +static int hf_gsm_map_ms_TPDU_TypeCriterion_item = -1; /* MT_SMS_TPDU_Type */ +static int hf_gsm_map_ms_dp_AnalysedInfoCriteriaList = -1; /* DP_AnalysedInfoCriteriaList */ +static int hf_gsm_map_ms_DP_AnalysedInfoCriteriaList_item = -1; /* DP_AnalysedInfoCriterium */ +static int hf_gsm_map_ms_dialledNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_defaultCallHandling = -1; /* DefaultCallHandling */ +static int hf_gsm_map_ms_ss_CamelData = -1; /* SS_CamelData */ +static int hf_gsm_map_ms_ss_EventList = -1; /* SS_EventList */ +static int hf_gsm_map_ms_SS_EventList_item = -1; /* SS_Code */ +static int hf_gsm_map_ms_o_BcsmCamelTDPDataList = -1; /* O_BcsmCamelTDPDataList */ +static int hf_gsm_map_ms_csiActive = -1; /* NULL */ +static int hf_gsm_map_ms_O_BcsmCamelTDPDataList_item = -1; /* O_BcsmCamelTDPData */ +static int hf_gsm_map_ms_o_BcsmTriggerDetectionPoint = -1; /* O_BcsmTriggerDetectionPoint */ +static int hf_gsm_map_ms_O_BcsmCamelTDPCriteriaList_item = -1; /* O_BcsmCamelTDP_Criteria */ +static int hf_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_item = -1; /* T_BCSM_CAMEL_TDP_Criteria */ +static int hf_gsm_map_ms_destinationNumberCriteria = -1; /* DestinationNumberCriteria */ +static int hf_gsm_map_ms_basicServiceCriteria = -1; /* BasicServiceCriteria */ +static int hf_gsm_map_ms_callTypeCriteria = -1; /* CallTypeCriteria */ +static int hf_gsm_map_ms_o_CauseValueCriteria = -1; /* O_CauseValueCriteria */ +static int hf_gsm_map_ms_t_BCSM_TriggerDetectionPoint = -1; /* T_BcsmTriggerDetectionPoint */ +static int hf_gsm_map_ms_t_CauseValueCriteria = -1; /* T_CauseValueCriteria */ +static int hf_gsm_map_ms_matchType = -1; /* MatchType */ +static int hf_gsm_map_ms_destinationNumberList = -1; /* DestinationNumberList */ +static int hf_gsm_map_ms_destinationNumberLengthList = -1; /* DestinationNumberLengthList */ +static int hf_gsm_map_ms_DestinationNumberList_item = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_DestinationNumberLengthList_item = -1; /* INTEGER_1_maxNumOfISDN_AddressDigits */ +static int hf_gsm_map_ms_BasicServiceCriteria_item = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ms_O_CauseValueCriteria_item = -1; /* CauseValue */ +static int hf_gsm_map_ms_T_CauseValueCriteria_item = -1; /* CauseValue */ +static int hf_gsm_map_ms_sms_CAMEL_TDP_DataList = -1; /* SMS_CAMEL_TDP_DataList */ +static int hf_gsm_map_ms_SMS_CAMEL_TDP_DataList_item = -1; /* SMS_CAMEL_TDP_Data */ +static int hf_gsm_map_ms_defaultSMS_Handling = -1; /* DefaultSMS_Handling */ +static int hf_gsm_map_ms_mobilityTriggers = -1; /* MobilityTriggers */ +static int hf_gsm_map_ms_MobilityTriggers_item = -1; /* MM_Code */ +static int hf_gsm_map_ms_t_BcsmCamelTDPDataList = -1; /* T_BcsmCamelTDPDataList */ +static int hf_gsm_map_ms_T_BcsmCamelTDPDataList_item = -1; /* T_BcsmCamelTDPData */ +static int hf_gsm_map_ms_t_BcsmTriggerDetectionPoint = -1; /* T_BcsmTriggerDetectionPoint */ +static int hf_gsm_map_ms_ggsn_Address = -1; /* GSN_Address */ +static int hf_gsm_map_ms_ggsn_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_mobileNotReachableReason = -1; /* AbsentSubscriberDiagnosticSM */ +static int hf_gsm_map_ms_sendingNodenumber = -1; /* SendingNode_Number */ +static int hf_gsm_map_ms_hlr_List = -1; /* HLR_List */ +static int hf_gsm_map_ms_reset_Id_List = -1; /* Reset_Id_List */ +static int hf_gsm_map_ms_subscriptionData = -1; /* InsertSubscriberDataArg */ +static int hf_gsm_map_ms_subscriptionDataDeletion = -1; /* DeleteSubscriberDataArg */ +static int hf_gsm_map_ms_css_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_msNotReachable = -1; /* NULL */ +static int hf_gsm_map_ms_VBSDataList_item = -1; /* VoiceBroadcastData */ +static int hf_gsm_map_ms_VGCSDataList_item = -1; /* VoiceGroupCallData */ +static int hf_gsm_map_ms_groupId = -1; /* GroupId */ +static int hf_gsm_map_ms_additionalSubscriptions = -1; /* AdditionalSubscriptions */ +static int hf_gsm_map_ms_additionalInfo = -1; /* AdditionalInfo */ +static int hf_gsm_map_ms_longGroupId = -1; /* Long_GroupId */ +static int hf_gsm_map_ms_groupid = -1; /* GroupId */ +static int hf_gsm_map_ms_broadcastInitEntitlement = -1; /* NULL */ +static int hf_gsm_map_ms_requestedInfo = -1; /* RequestedInfo */ +static int hf_gsm_map_ms_callPriority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_ms_subscriberInfo = -1; /* SubscriberInfo */ +static int hf_gsm_map_ms_subscriberState = -1; /* SubscriberState */ +static int hf_gsm_map_ms_ps_SubscriberState = -1; /* PS_SubscriberState */ +static int hf_gsm_map_ms_ms_Classmark2 = -1; /* MS_Classmark2 */ +static int hf_gsm_map_ms_gprs_MS_Class = -1; /* GPRSMSClass */ +static int hf_gsm_map_ms_mnpInfoRes = -1; /* MNPInfoRes */ +static int hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication = -1; /* IMS_VoiceOverPS_SessionsInd */ +static int hf_gsm_map_ms_lastUE_ActivityTime = -1; /* Time */ +static int hf_gsm_map_ms_lastRAT_Type = -1; /* Used_RAT_Type */ +static int hf_gsm_map_ms_eps_SubscriberState = -1; /* PS_SubscriberState */ +static int hf_gsm_map_ms_timeZone = -1; /* TimeZone */ +static int hf_gsm_map_ms_daylightSavingTime = -1; /* DaylightSavingTime */ +static int hf_gsm_map_ms_locationInformation5GS = -1; /* LocationInformation5GS */ +static int hf_gsm_map_ms_routeingNumber = -1; /* RouteingNumber */ +static int hf_gsm_map_ms_numberPortabilityStatus = -1; /* NumberPortabilityStatus */ +static int hf_gsm_map_ms_mSNetworkCapability = -1; /* MSNetworkCapability */ +static int hf_gsm_map_ms_mSRadioAccessCapability = -1; /* MSRadioAccessCapability */ +static int hf_gsm_map_ms_locationInformation_01 = -1; /* NULL */ +static int hf_gsm_map_ms_subscriberState_01 = -1; /* NULL */ +static int hf_gsm_map_ms_currentLocation = -1; /* NULL */ +static int hf_gsm_map_ms_requestedDomain = -1; /* DomainType */ +static int hf_gsm_map_ms_imei_01 = -1; /* NULL */ +static int hf_gsm_map_ms_ms_classmark = -1; /* NULL */ +static int hf_gsm_map_ms_mnpRequestedInfo = -1; /* NULL */ +static int hf_gsm_map_ms_locationInformationEPS_Supported = -1; /* NULL */ +static int hf_gsm_map_ms_t_adsData = -1; /* NULL */ +static int hf_gsm_map_ms_requestedNodes = -1; /* RequestedNodes */ +static int hf_gsm_map_ms_servingNodeIndication = -1; /* NULL */ +static int hf_gsm_map_ms_localTimeZoneRequest = -1; /* NULL */ +static int hf_gsm_map_ms_ageOfLocationInformation = -1; /* AgeOfLocationInformation */ +static int hf_gsm_map_ms_geographicalInformation = -1; /* GeographicalInformation */ +static int hf_gsm_map_ms_vlr_number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_locationNumber = -1; /* LocationNumber */ +static int hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI = -1; /* CellGlobalIdOrServiceAreaIdOrLAI */ +static int hf_gsm_map_ms_selectedLSA_Id = -1; /* LSAIdentity */ +static int hf_gsm_map_ms_geodeticInformation = -1; /* GeodeticInformation */ +static int hf_gsm_map_ms_currentLocationRetrieved = -1; /* NULL */ +static int hf_gsm_map_ms_sai_Present = -1; /* NULL */ +static int hf_gsm_map_ms_userCSGInformation = -1; /* UserCSGInformation */ +static int hf_gsm_map_ms_e_utranCellGlobalIdentity = -1; /* E_UTRAN_CGI */ +static int hf_gsm_map_ms_trackingAreaIdentity = -1; /* TA_Id */ +static int hf_gsm_map_ms_mme_Name = -1; /* DiameterIdentity */ +static int hf_gsm_map_ms_routeingAreaIdentity = -1; /* RAIdentity */ +static int hf_gsm_map_ms_selectedLSAIdentity = -1; /* LSAIdentity */ +static int hf_gsm_map_ms_nrCellGlobalIdentity = -1; /* NR_CGI */ +static int hf_gsm_map_ms_amf_address = -1; /* FQDN */ +static int hf_gsm_map_ms_vplmnId = -1; /* PLMN_Id */ +static int hf_gsm_map_ms_localtimeZone = -1; /* TimeZone */ +static int hf_gsm_map_ms_nrTrackingAreaIdentity = -1; /* NR_TA_Id */ +static int hf_gsm_map_ms_accessMode = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_map_ms_cmi = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_map_ms_assumedIdle = -1; /* NULL */ +static int hf_gsm_map_ms_camelBusy = -1; /* NULL */ +static int hf_gsm_map_ms_netDetNotReachable = -1; /* NotReachableReason */ +static int hf_gsm_map_ms_notProvidedFromVLR = -1; /* NULL */ +static int hf_gsm_map_ms_notProvidedFromSGSNorMME = -1; /* NULL */ +static int hf_gsm_map_ms_ps_Detached = -1; /* NULL */ +static int hf_gsm_map_ms_ps_AttachedNotReachableForPaging = -1; /* NULL */ +static int hf_gsm_map_ms_ps_AttachedReachableForPaging = -1; /* NULL */ +static int hf_gsm_map_ms_ps_PDP_ActiveNotReachableForPaging = -1; /* PDP_ContextInfoList */ +static int hf_gsm_map_ms_ps_PDP_ActiveReachableForPaging = -1; /* PDP_ContextInfoList */ +static int hf_gsm_map_ms_PDP_ContextInfoList_item = -1; /* PDP_ContextInfo */ +static int hf_gsm_map_ms_pdp_ContextIdentifier = -1; /* ContextId */ +static int hf_gsm_map_ms_pdp_ContextActive = -1; /* NULL */ +static int hf_gsm_map_ms_apn_Subscribed = -1; /* APN */ +static int hf_gsm_map_ms_apn_InUse = -1; /* APN */ +static int hf_gsm_map_ms_nsapi = -1; /* NSAPI */ +static int hf_gsm_map_ms_transactionId = -1; /* TransactionId */ +static int hf_gsm_map_ms_teid_ForGnAndGp = -1; /* TEID */ +static int hf_gsm_map_ms_teid_ForIu = -1; /* TEID */ +static int hf_gsm_map_ms_qos_Subscribed_01 = -1; /* Ext_QoS_Subscribed */ +static int hf_gsm_map_ms_qos_Requested = -1; /* Ext_QoS_Subscribed */ +static int hf_gsm_map_ms_qos_Negotiated = -1; /* Ext_QoS_Subscribed */ +static int hf_gsm_map_ms_chargingId = -1; /* GPRSChargingID */ +static int hf_gsm_map_ms_rnc_Address = -1; /* GSN_Address */ +static int hf_gsm_map_ms_qos2_Subscribed = -1; /* Ext2_QoS_Subscribed */ +static int hf_gsm_map_ms_qos2_Requested = -1; /* Ext2_QoS_Subscribed */ +static int hf_gsm_map_ms_qos2_Negotiated = -1; /* Ext2_QoS_Subscribed */ +static int hf_gsm_map_ms_qos3_Subscribed = -1; /* Ext3_QoS_Subscribed */ +static int hf_gsm_map_ms_qos3_Requested = -1; /* Ext3_QoS_Subscribed */ +static int hf_gsm_map_ms_qos3_Negotiated = -1; /* Ext3_QoS_Subscribed */ +static int hf_gsm_map_ms_qos4_Subscribed = -1; /* Ext4_QoS_Subscribed */ +static int hf_gsm_map_ms_qos4_Requested = -1; /* Ext4_QoS_Subscribed */ +static int hf_gsm_map_ms_qos4_Negotiated = -1; /* Ext4_QoS_Subscribed */ +static int hf_gsm_map_ms_subscriberIdentity = -1; /* SubscriberIdentity */ +static int hf_gsm_map_ms_requestedSubscriptionInfo = -1; /* RequestedSubscriptionInfo */ +static int hf_gsm_map_ms_callForwardingData = -1; /* CallForwardingData */ +static int hf_gsm_map_ms_callBarringData = -1; /* CallBarringData */ +static int hf_gsm_map_ms_odb_Info = -1; /* ODB_Info */ +static int hf_gsm_map_ms_camel_SubscriptionInfo = -1; /* CAMEL_SubscriptionInfo */ +static int hf_gsm_map_ms_supportedVLR_CAMEL_Phases = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ms_supportedSGSN_CAMEL_Phases = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ms_offeredCamel4CSIsInVLR = -1; /* OfferedCamel4CSIs */ +static int hf_gsm_map_ms_offeredCamel4CSIsInSGSN = -1; /* OfferedCamel4CSIs */ +static int hf_gsm_map_ms_msisdn_BS_List = -1; /* MSISDN_BS_List */ +static int hf_gsm_map_ms_cw_Data = -1; /* CallWaitingData */ +static int hf_gsm_map_ms_ch_Data = -1; /* CallHoldData */ +static int hf_gsm_map_ms_clip_Data = -1; /* ClipData */ +static int hf_gsm_map_ms_clir_Data = -1; /* ClirData */ +static int hf_gsm_map_ms_ect_data = -1; /* EctData */ +static int hf_gsm_map_ms_cwFeatureList = -1; /* Ext_CwFeatureList */ +static int hf_gsm_map_ms_Ext_CwFeatureList_item = -1; /* Ext_CwFeature */ +static int hf_gsm_map_ms_overrideCategory = -1; /* OverrideCategory */ +static int hf_gsm_map_ms_cliRestrictionOption = -1; /* CliRestrictionOption */ +static int hf_gsm_map_ms_requestedSS_Info = -1; /* SS_ForBS_Code */ +static int hf_gsm_map_ms_odb = -1; /* NULL */ +static int hf_gsm_map_ms_requestedCAMEL_SubscriptionInfo = -1; /* RequestedCAMEL_SubscriptionInfo */ +static int hf_gsm_map_ms_supportedVLR_CAMEL_Phases_01 = -1; /* NULL */ +static int hf_gsm_map_ms_supportedSGSN_CAMEL_Phases_01 = -1; /* NULL */ +static int hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo = -1; /* AdditionalRequestedCAMEL_SubscriptionInfo */ +static int hf_gsm_map_ms_msisdn_BS_List_01 = -1; /* NULL */ +static int hf_gsm_map_ms_csg_SubscriptionDataRequested = -1; /* NULL */ +static int hf_gsm_map_ms_cw_Info = -1; /* NULL */ +static int hf_gsm_map_ms_clip_Info = -1; /* NULL */ +static int hf_gsm_map_ms_clir_Info = -1; /* NULL */ +static int hf_gsm_map_ms_hold_Info = -1; /* NULL */ +static int hf_gsm_map_ms_ect_Info = -1; /* NULL */ +static int hf_gsm_map_ms_MSISDN_BS_List_item = -1; /* MSISDN_BS */ +static int hf_gsm_map_ms_password = -1; /* Password */ +static int hf_gsm_map_ms_wrongPasswordAttemptsCounter = -1; /* WrongPasswordAttemptsCounter */ +static int hf_gsm_map_ms_t_CSI = -1; /* T_CSI */ +static int hf_gsm_map_ms_vt_BCSM_CAMEL_TDP_CriteriaList = -1; /* T_BCSM_CAMEL_TDP_CriteriaList */ +static int hf_gsm_map_ms_tif_CSI_NotificationToCSE = -1; /* NULL */ +static int hf_gsm_map_ms_specificCSIDeletedList = -1; /* SpecificCSI_Withdraw */ +static int hf_gsm_map_ms_o_IM_CSI = -1; /* O_CSI */ +static int hf_gsm_map_ms_o_IM_BcsmCamelTDP_CriteriaList = -1; /* O_BcsmCamelTDPCriteriaList */ +static int hf_gsm_map_ms_d_IM_CSI = -1; /* D_CSI */ +static int hf_gsm_map_ms_vt_IM_CSI = -1; /* T_CSI */ +static int hf_gsm_map_ms_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1; /* T_BCSM_CAMEL_TDP_CriteriaList */ +static int hf_gsm_map_ms_modificationRequestFor_CF_Info = -1; /* ModificationRequestFor_CF_Info */ +static int hf_gsm_map_ms_modificationRequestFor_CB_Info = -1; /* ModificationRequestFor_CB_Info */ +static int hf_gsm_map_ms_modificationRequestFor_CSI = -1; /* ModificationRequestFor_CSI */ +static int hf_gsm_map_ms_modificationRequestFor_ODB_data = -1; /* ModificationRequestFor_ODB_data */ +static int hf_gsm_map_ms_modificationRequestFor_IP_SM_GW_Data = -1; /* ModificationRequestFor_IP_SM_GW_Data */ +static int hf_gsm_map_ms_activationRequestForUE_reachability = -1; /* RequestedServingNode */ +static int hf_gsm_map_ms_modificationRequestFor_CSG = -1; /* ModificationRequestFor_CSG */ +static int hf_gsm_map_ms_modificationRequestFor_CW_Data = -1; /* ModificationRequestFor_CW_Info */ +static int hf_gsm_map_ms_modificationRequestFor_CLIP_Data = -1; /* ModificationRequestFor_CLIP_Info */ +static int hf_gsm_map_ms_modificationRequestFor_CLIR_Data = -1; /* ModificationRequestFor_CLIR_Info */ +static int hf_gsm_map_ms_modificationRequestFor_HOLD_Data = -1; /* ModificationRequestFor_CH_Info */ +static int hf_gsm_map_ms_modificationRequestFor_ECT_Data = -1; /* ModificationRequestFor_ECT_Info */ +static int hf_gsm_map_ms_modifyNotificationToCSE = -1; /* ModificationInstruction */ +static int hf_gsm_map_ms_ss_InfoFor_CSE = -1; /* Ext_SS_InfoFor_CSE */ +static int hf_gsm_map_ms_serviceCentreAddress = -1; /* AddressString */ +static int hf_gsm_map_ms_forwardedToNumber_01 = -1; /* AddressString */ +static int hf_gsm_map_ms_odb_data = -1; /* ODB_Data */ +static int hf_gsm_map_ms_requestedCamel_SubscriptionInfo = -1; /* RequestedCAMEL_SubscriptionInfo */ +static int hf_gsm_map_ms_modifyCSI_State = -1; /* ModificationInstruction */ +static int hf_gsm_map_ms_modifyRegistrationStatus = -1; /* ModificationInstruction */ +static int hf_gsm_map_ms_ip_sm_gw_DiameterAddress = -1; /* NetworkNodeDiameterAddress */ +static int hf_gsm_map_ms_forwardingInfoFor_CSE = -1; /* Ext_ForwardingInfoFor_CSE */ +static int hf_gsm_map_ms_callBarringInfoFor_CSE = -1; /* Ext_CallBarringInfoFor_CSE */ +static int hf_gsm_map_ms_allInformationSent = -1; /* NULL */ +static int hf_gsm_map_ms_ue_reachable = -1; /* ServingNode */ +static int hf_gsm_map_ms_eventMet = -1; /* MM_Code */ +static int hf_gsm_map_ms_supportedCAMELPhases = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ms_offeredCamel4Functionalities = -1; /* OfferedCamel4Functionalities */ +static int hf_gsm_map_ms_temporaryEmptySubscriptiondataIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_naea_PreferredCI = -1; /* NAEA_PreferredCI */ +static int hf_gsm_map_ms_gprsSubscriptionData = -1; /* GPRSSubscriptionData */ +static int hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsupportedFeature = -1; /* NULL */ +static int hf_gsm_map_ms_networkAccessMode = -1; /* NetworkAccessMode */ +static int hf_gsm_map_ms_lsaInformation = -1; /* LSAInformation */ +static int hf_gsm_map_ms_lmu_Indicator = -1; /* NULL */ +static int hf_gsm_map_ms_lcsInformation = -1; /* LCSInformation */ +static int hf_gsm_map_ms_istAlertTimer = -1; /* IST_AlertTimerValue */ +static int hf_gsm_map_ms_superChargerSupportedInHLR = -1; /* AgeIndicator */ +static int hf_gsm_map_ms_mc_SS_Info = -1; /* MC_SS_Info */ +static int hf_gsm_map_ms_cs_AllocationRetentionPriority = -1; /* CS_AllocationRetentionPriority */ +static int hf_gsm_map_ms_sgsn_CAMEL_SubscriptionInfo = -1; /* SGSN_CAMEL_SubscriptionInfo */ +static int hf_gsm_map_ms_ics_Indicator = -1; /* BOOLEAN */ +static int hf_gsm_map_ms_eps_SubscriptionData = -1; /* EPS_SubscriptionData */ +static int hf_gsm_map_ms_ue_ReachabilityRequestIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_subscribedPeriodicRAUTAUtimer = -1; /* SubscribedPeriodicRAUTAUtimer */ +static int hf_gsm_map_ms_vplmnLIPAAllowed = -1; /* NULL */ +static int hf_gsm_map_ms_mdtUserConsent = -1; /* BOOLEAN */ +static int hf_gsm_map_ms_subscribedPeriodicLAUtimer = -1; /* SubscribedPeriodicLAUtimer */ +static int hf_gsm_map_ms_vplmn_Csg_SubscriptionDataList = -1; /* VPLMN_CSG_SubscriptionDataList */ +static int hf_gsm_map_ms_additionalMSISDN = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ms_psAndSMS_OnlyServiceProvision = -1; /* NULL */ +static int hf_gsm_map_ms_smsInSGSNAllowed = -1; /* NULL */ +static int hf_gsm_map_ms_cs_to_ps_SRVCC_Allowed_Indicator = -1; /* NULL */ +static int hf_gsm_map_ms_pcscf_Restoration_Request = -1; /* NULL */ +static int hf_gsm_map_ms_adjacentAccessRestrictionDataList = -1; /* AdjacentAccessRestrictionDataList */ +static int hf_gsm_map_ms_imsi_Group_Id_List = -1; /* IMSI_GroupIdList */ +static int hf_gsm_map_ms_userPlaneIntegrityProtectionIndicator = -1; /* NULL */ +static int hf_gsm_map_ms_dl_Buffering_Suggested_Packet_Count = -1; /* DL_Buffering_Suggested_Packet_Count */ +static int hf_gsm_map_ms_eDRX_Cycle_Length_List = -1; /* EDRX_Cycle_Length_List */ +static int hf_gsm_map_ms_iab_Operation_Allowed_Indicator = -1; /* NULL */ +/* named bits */ +static int hf_gsm_map_ms_SupportedRAT_Types_utran = -1; +static int hf_gsm_map_ms_SupportedRAT_Types_geran = -1; +static int hf_gsm_map_ms_SupportedRAT_Types_gan = -1; +static int hf_gsm_map_ms_SupportedRAT_Types_i_hspa_evolution = -1; +static int hf_gsm_map_ms_SupportedRAT_Types_e_utran = -1; +static int hf_gsm_map_ms_SupportedRAT_Types_nb_iot = -1; +static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet1 = -1; +static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet2 = -1; +static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet3 = -1; +static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet4 = -1; +static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet5 = -1; +static int hf_gsm_map_ms_ISR_Information_updateLocation = -1; +static int hf_gsm_map_ms_ISR_Information_cancelSGSN = -1; +static int hf_gsm_map_ms_ISR_Information_initialAttachIndicator = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_apn = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_HPLMN_APN = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_VPLMN_APN = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_og = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_international_og = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_int_og_not_to_HPLMN_country = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_not_to_HPLMN_country = -1; +static int hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_and_internat_og_not_to_HPLMN_country = -1; +static int hf_gsm_map_ms_SupportedFeatures_regSub = -1; +static int hf_gsm_map_ms_SupportedFeatures_trace = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_all_PrivExcep = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_universal = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionRelated = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionUnrelated = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_PLMN_operator = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_ServiceType = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_all_MOLR_SS = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_basicSelfLocation = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_autonomousSelfLocation = -1; +static int hf_gsm_map_ms_SupportedFeatures_lcs_transferToThirdParty = -1; +static int hf_gsm_map_ms_SupportedFeatures_sm_mo_pp = -1; +static int hf_gsm_map_ms_SupportedFeatures_barring_OutgoingCalls = -1; +static int hf_gsm_map_ms_SupportedFeatures_baoc = -1; +static int hf_gsm_map_ms_SupportedFeatures_boic = -1; +static int hf_gsm_map_ms_SupportedFeatures_boicExHC = -1; +static int hf_gsm_map_ms_SupportedFeatures_localTimeZoneRetrieval = -1; +static int hf_gsm_map_ms_SupportedFeatures_additionalMsisdn = -1; +static int hf_gsm_map_ms_SupportedFeatures_smsInMME = -1; +static int hf_gsm_map_ms_SupportedFeatures_smsInSGSN = -1; +static int hf_gsm_map_ms_SupportedFeatures_ue_Reachability_Notification = -1; +static int hf_gsm_map_ms_SupportedFeatures_state_Location_Information_Retrieval = -1; +static int hf_gsm_map_ms_SupportedFeatures_partialPurge = -1; +static int hf_gsm_map_ms_SupportedFeatures_gddInSGSN = -1; +static int hf_gsm_map_ms_SupportedFeatures_sgsnCAMELCapability = -1; +static int hf_gsm_map_ms_SupportedFeatures_pcscf_Restoration = -1; +static int hf_gsm_map_ms_SupportedFeatures_dedicatedCoreNetworks = -1; +static int hf_gsm_map_ms_SupportedFeatures_non_IP_PDN_Type_APNs = -1; +static int hf_gsm_map_ms_SupportedFeatures_non_IP_PDP_Type_APNs = -1; +static int hf_gsm_map_ms_SupportedFeatures_nrAsSecondaryRAT = -1; +static int hf_gsm_map_ms_Ext_SupportedFeatures_unlicensedSpectrumAsSecondaryRAT = -1; +static int hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_not_allowed_bit = -1; +static int hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_spare_bit = -1; +static int hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_sending_indicator = -1; +static int hf_gsm_map_ms_LCLS_ConfigurationPreference_backward_data_sending_indicator = -1; +static int hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_reception_indicator = -1; +static int hf_gsm_map_ms_LCLS_ConfigurationPreference_backward_data_reception_indicator = -1; +static int hf_gsm_map_ms_RequestedEquipmentInfo_equipmentStatus = -1; +static int hf_gsm_map_ms_RequestedEquipmentInfo_bmuef = -1; +static int hf_gsm_map_ms_AccessRestrictionData_utranNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_geranNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_ganNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_i_hspa_evolutionNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_wb_e_utranNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_ho_toNon3GPP_AccessNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_nb_iotNotAllowed = -1; +static int hf_gsm_map_ms_AccessRestrictionData_enhancedCoverageNotAllowed = -1; +static int hf_gsm_map_ms_Ext_AccessRestrictionData_nrAsSecondaryRATNotAllowed = -1; +static int hf_gsm_map_ms_Ext_AccessRestrictionData_unlicensedSpectrumAsSecondaryRATNotAllowed = -1; +static int hf_gsm_map_ms_ODB_GeneralData_allOG_CallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_premiumRateInformationOGCallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_premiumRateEntertainementOGCallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_ss_AccessBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_allECT_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_chargeableECT_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_internationalECT_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_interzonalECT_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_doublyChargeableECT_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_multipleECT_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_allPacketOrientedServicesBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_allIC_CallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_CountryBarred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_registrationAllCF_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_registrationCFNotToHPLMN_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCF_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred = -1; +static int hf_gsm_map_ms_ODB_GeneralData_registrationInternationalCF_Barred = -1; +static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType1 = -1; +static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType2 = -1; +static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType3 = -1; +static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType4 = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_o_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_ss_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_tif_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_d_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_vt_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_mo_sms_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_m_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_gprs_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_t_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_mt_sms_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_mg_csi = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_o_IM_CSI = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_d_IM_CSI = -1; +static int hf_gsm_map_ms_SpecificCSI_Withdraw_vt_IM_CSI = -1; +static int hf_gsm_map_ms_SupportedCamelPhases_phase1 = -1; +static int hf_gsm_map_ms_SupportedCamelPhases_phase2 = -1; +static int hf_gsm_map_ms_SupportedCamelPhases_phase3 = -1; +static int hf_gsm_map_ms_SupportedCamelPhases_phase4 = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_o_csi = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_d_csi = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_vt_csi = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_t_csi = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_mt_sms_csi = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_mg_csi = -1; +static int hf_gsm_map_ms_OfferedCamel4CSIs_psi_enhancements = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_initiateCallAttempt = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_splitLeg = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_moveLeg = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_disconnectLeg = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_entityReleased = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_dfc_WithArgument = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_playTone = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_dtmf_MidCall = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_chargingIndicator = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_alertingDP = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_locationAtAlerting = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_changeOfPositionDP = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_or_Interactions = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_warningToneEnhancements = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_cf_Enhancements = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_subscribedEnhancedDialledServices = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_serviceChangeDP = -1; +static int hf_gsm_map_ms_OfferedCamel4Functionalities_collectInformation = -1; +static int hf_gsm_map_ms_AdditionalSubscriptions_privilegedUplinkRequest = -1; +static int hf_gsm_map_ms_AdditionalSubscriptions_emergencyUplinkRequest = -1; +static int hf_gsm_map_ms_AdditionalSubscriptions_emergencyReset = -1; +static int hf_gsm_map_ms_RequestedNodes_mme = -1; +static int hf_gsm_map_ms_RequestedNodes_sgsn = -1; +static int hf_gsm_map_ms_RequestedServingNode_mmeAndSgsn = -1; +static int hf_gsm_map_ms_ServingNode_mme = -1; +static int hf_gsm_map_ms_ServingNode_sgsn = -1; + +/* --- Module MAP-CH-DataTypes --- --- --- */ + +static int hf_gsm_map_ch_cug_Interlock = -1; /* CUG_Interlock */ +static int hf_gsm_map_ch_cug_OutgoingAccess = -1; /* NULL */ +static int hf_gsm_map_ch_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_ch_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_cug_CheckInfo = -1; /* CUG_CheckInfo */ +static int hf_gsm_map_ch_numberOfForwarding = -1; /* NumberOfForwarding */ +static int hf_gsm_map_ch_interrogationType = -1; /* InterrogationType */ +static int hf_gsm_map_ch_or_Interrogation = -1; /* NULL */ +static int hf_gsm_map_ch_or_Capability = -1; /* OR_Phase */ +static int hf_gsm_map_ch_gmsc_OrGsmSCF_Address = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_callReferenceNumber = -1; /* CallReferenceNumber */ +static int hf_gsm_map_ch_forwardingReason = -1; /* ForwardingReason */ +static int hf_gsm_map_ch_basicServiceGroup = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ch_networkSignalInfo = -1; /* ExternalSignalInfo */ +static int hf_gsm_map_ch_camelInfo = -1; /* CamelInfo */ +static int hf_gsm_map_ch_suppressionOfAnnouncement = -1; /* SuppressionOfAnnouncement */ +static int hf_gsm_map_ch_alertingPattern = -1; /* AlertingPattern */ +static int hf_gsm_map_ch_ccbs_Call = -1; /* NULL */ +static int hf_gsm_map_ch_supportedCCBS_Phase = -1; /* SupportedCCBS_Phase */ +static int hf_gsm_map_ch_additionalSignalInfo = -1; /* Ext_ExternalSignalInfo */ +static int hf_gsm_map_ch_istSupportIndicator = -1; /* IST_SupportIndicator */ +static int hf_gsm_map_ch_pre_pagingSupported = -1; /* NULL */ +static int hf_gsm_map_ch_callDiversionTreatmentIndicator = -1; /* CallDiversionTreatmentIndicator */ +static int hf_gsm_map_ch_longFTN_Supported = -1; /* NULL */ +static int hf_gsm_map_ch_suppress_VT_CSI = -1; /* NULL */ +static int hf_gsm_map_ch_suppressIncomingCallBarring = -1; /* NULL */ +static int hf_gsm_map_ch_gsmSCF_InitiatedCall = -1; /* NULL */ +static int hf_gsm_map_ch_basicServiceGroup2 = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ch_networkSignalInfo2 = -1; /* ExternalSignalInfo */ +static int hf_gsm_map_ch_suppressMTSS = -1; /* SuppressMTSS */ +static int hf_gsm_map_ch_mtRoamingRetrySupported = -1; /* NULL */ +static int hf_gsm_map_ch_callPriority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_ch_imsi = -1; /* IMSI */ +static int hf_gsm_map_ch_extendedRoutingInfo = -1; /* ExtendedRoutingInfo */ +static int hf_gsm_map_ch_cugSubscriptionFlag = -1; /* NULL */ +static int hf_gsm_map_ch_subscriberInfo = -1; /* SubscriberInfo */ +static int hf_gsm_map_ch_ss_List = -1; /* SS_List */ +static int hf_gsm_map_ch_basicService = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ch_forwardingInterrogationRequired = -1; /* NULL */ +static int hf_gsm_map_ch_vmsc_Address = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_naea_PreferredCI = -1; /* NAEA_PreferredCI */ +static int hf_gsm_map_ch_ccbs_Indicators = -1; /* CCBS_Indicators */ +static int hf_gsm_map_ch_numberPortabilityStatus = -1; /* NumberPortabilityStatus */ +static int hf_gsm_map_ch_istAlertTimer = -1; /* IST_AlertTimerValue */ +static int hf_gsm_map_ch_supportedCamelPhasesInVMSC = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ch_offeredCamel4CSIsInVMSC = -1; /* OfferedCamel4CSIs */ +static int hf_gsm_map_ch_routingInfo2 = -1; /* RoutingInfo */ +static int hf_gsm_map_ch_ss_List2 = -1; /* SS_List */ +static int hf_gsm_map_ch_basicService2 = -1; /* Ext_BasicServiceCode */ +static int hf_gsm_map_ch_allowedServices = -1; /* AllowedServices */ +static int hf_gsm_map_ch_unavailabilityCause = -1; /* UnavailabilityCause */ +static int hf_gsm_map_ch_releaseResourcesSupported = -1; /* NULL */ +static int hf_gsm_map_ch_gsm_BearerCapability = -1; /* ExternalSignalInfo */ +static int hf_gsm_map_ch_ccbs_Possible = -1; /* NULL */ +static int hf_gsm_map_ch_keepCCBS_CallIndicator = -1; /* NULL */ +static int hf_gsm_map_ch_roamingNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_forwardingData = -1; /* ForwardingData */ +static int hf_gsm_map_ch_forwardedToNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_forwardedToSubaddress = -1; /* ISDN_SubaddressString */ +static int hf_gsm_map_ch_forwardingOptions = -1; /* ForwardingOptions */ +static int hf_gsm_map_ch_longForwardedToNumber = -1; /* FTN_AddressString */ +static int hf_gsm_map_ch_msc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_lmsi = -1; /* LMSI */ +static int hf_gsm_map_ch_gmsc_Address = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_supportedCamelPhasesInInterrogatingNode = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ch_orNotSupportedInGMSC = -1; /* NULL */ +static int hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode = -1; /* OfferedCamel4CSIs */ +static int hf_gsm_map_ch_pagingArea = -1; /* PagingArea */ +static int hf_gsm_map_ch_mtrf_Indicator = -1; /* NULL */ +static int hf_gsm_map_ch_oldMSC_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_lastUsedLtePLMN_Id = -1; /* PLMN_Id */ +static int hf_gsm_map_ch_o_CSI = -1; /* O_CSI */ +static int hf_gsm_map_ch_uu_Data = -1; /* UU_Data */ +static int hf_gsm_map_ch_allInformationSent = -1; /* NULL */ +static int hf_gsm_map_ch_d_csi = -1; /* D_CSI */ +static int hf_gsm_map_ch_o_BcsmCamelTDPCriteriaList = -1; /* O_BcsmCamelTDPCriteriaList */ +static int hf_gsm_map_ch_mtRoamingRetry = -1; /* NULL */ +static int hf_gsm_map_ch_uuIndicator = -1; /* UUIndicator */ +static int hf_gsm_map_ch_uui = -1; /* UUI */ +static int hf_gsm_map_ch_uusCFInteraction = -1; /* NULL */ +static int hf_gsm_map_ch_supportedCamelPhases = -1; /* SupportedCamelPhases */ +static int hf_gsm_map_ch_suppress_T_CSI = -1; /* NULL */ +static int hf_gsm_map_ch_offeredCamel4CSIs = -1; /* OfferedCamel4CSIs */ +static int hf_gsm_map_ch_routingInfo = -1; /* RoutingInfo */ +static int hf_gsm_map_ch_camelRoutingInfo = -1; /* CamelRoutingInfo */ +static int hf_gsm_map_ch_gmscCamelSubscriptionInfo = -1; /* GmscCamelSubscriptionInfo */ +static int hf_gsm_map_ch_t_CSI = -1; /* T_CSI */ +static int hf_gsm_map_ch_o_BcsmCamelTDP_CriteriaList = -1; /* O_BcsmCamelTDPCriteriaList */ +static int hf_gsm_map_ch_t_BCSM_CAMEL_TDP_CriteriaList = -1; /* T_BCSM_CAMEL_TDP_CriteriaList */ +static int hf_gsm_map_ch_ccbs_Monitoring = -1; /* ReportingState */ +static int hf_gsm_map_ch_ccbs_SubscriberStatus = -1; /* CCBS_SubscriberStatus */ +static int hf_gsm_map_ch_eventReportData = -1; /* EventReportData */ +static int hf_gsm_map_ch_callReportdata = -1; /* CallReportData */ +static int hf_gsm_map_ch_monitoringMode = -1; /* MonitoringMode */ +static int hf_gsm_map_ch_callOutcome = -1; /* CallOutcome */ +static int hf_gsm_map_ch_callInfo = -1; /* ExternalSignalInfo */ +static int hf_gsm_map_ch_ccbs_Feature = -1; /* CCBS_Feature */ +static int hf_gsm_map_ch_translatedB_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ch_replaceB_Number = -1; /* NULL */ +static int hf_gsm_map_ch_ruf_Outcome = -1; /* RUF_Outcome */ +static int hf_gsm_map_ch_istInformationWithdraw = -1; /* NULL */ +static int hf_gsm_map_ch_callTerminationIndicator = -1; /* CallTerminationIndicator */ +static int hf_gsm_map_ch_msrn = -1; /* ISDN_AddressString */ +/* named bits */ +static int hf_gsm_map_ch_SuppressMTSS_suppressCUG = -1; +static int hf_gsm_map_ch_SuppressMTSS_suppressCCBS = -1; +static int hf_gsm_map_ch_AllowedServices_firstServiceAllowed = -1; +static int hf_gsm_map_ch_AllowedServices_secondServiceAllowed = -1; + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + +static int hf_gsm_map_lcs_gsm_map_lcs_LCS_ClientID_PDU = -1; /* LCS_ClientID */ +static int hf_gsm_map_lcs_mlcNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_targetMS = -1; /* SubscriberIdentity */ +static int hf_gsm_map_lcs_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_lcs_lcsLocationInfo = -1; /* LCSLocationInfo */ +static int hf_gsm_map_lcs_v_gmlc_Address = -1; /* GSN_Address */ +static int hf_gsm_map_lcs_h_gmlc_Address = -1; /* GSN_Address */ +static int hf_gsm_map_lcs_ppr_Address = -1; /* GSN_Address */ +static int hf_gsm_map_lcs_additional_v_gmlc_Address = -1; /* GSN_Address */ +static int hf_gsm_map_lcs_networkNode_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_lmsi = -1; /* LMSI */ +static int hf_gsm_map_lcs_gprsNodeIndicator = -1; /* NULL */ +static int hf_gsm_map_lcs_additional_Number = -1; /* Additional_Number */ +static int hf_gsm_map_lcs_supportedLCS_CapabilitySets = -1; /* SupportedLCS_CapabilitySets */ +static int hf_gsm_map_lcs_additional_LCS_CapabilitySets = -1; /* SupportedLCS_CapabilitySets */ +static int hf_gsm_map_lcs_mme_Name = -1; /* DiameterIdentity */ +static int hf_gsm_map_lcs_aaa_Server_Name = -1; /* DiameterIdentity */ +static int hf_gsm_map_lcs_sgsn_Name = -1; /* DiameterIdentity */ +static int hf_gsm_map_lcs_sgsn_Realm = -1; /* DiameterIdentity */ +static int hf_gsm_map_lcs_locationType = -1; /* LocationType */ +static int hf_gsm_map_lcs_mlc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_lcs_ClientID = -1; /* LCS_ClientID */ +static int hf_gsm_map_lcs_privacyOverride = -1; /* NULL */ +static int hf_gsm_map_lcs_imsi = -1; /* IMSI */ +static int hf_gsm_map_lcs_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_imei = -1; /* IMEI */ +static int hf_gsm_map_lcs_lcs_Priority = -1; /* LCS_Priority */ +static int hf_gsm_map_lcs_lcs_QoS = -1; /* LCS_QoS */ +static int hf_gsm_map_lcs_supportedGADShapes = -1; /* SupportedGADShapes */ +static int hf_gsm_map_lcs_lcs_ReferenceNumber = -1; /* LCS_ReferenceNumber */ +static int hf_gsm_map_lcs_lcsServiceTypeID = -1; /* LCSServiceTypeID */ +static int hf_gsm_map_lcs_lcsCodeword = -1; /* LCSCodeword */ +static int hf_gsm_map_lcs_lcs_PrivacyCheck = -1; /* LCS_PrivacyCheck */ +static int hf_gsm_map_lcs_areaEventInfo = -1; /* AreaEventInfo */ +static int hf_gsm_map_lcs_mo_lrShortCircuitIndicator = -1; /* NULL */ +static int hf_gsm_map_lcs_periodicLDRInfo = -1; /* PeriodicLDRInfo */ +static int hf_gsm_map_lcs_reportingPLMNList = -1; /* ReportingPLMNList */ +static int hf_gsm_map_lcs_locationEstimateType = -1; /* LocationEstimateType */ +static int hf_gsm_map_lcs_deferredLocationEventType = -1; /* DeferredLocationEventType */ +static int hf_gsm_map_lcs_lcsClientType = -1; /* LCSClientType */ +static int hf_gsm_map_lcs_lcsClientExternalID = -1; /* LCSClientExternalID */ +static int hf_gsm_map_lcs_lcsClientDialedByMS = -1; /* AddressString */ +static int hf_gsm_map_lcs_lcsClientInternalID = -1; /* LCSClientInternalID */ +static int hf_gsm_map_lcs_lcsClientName = -1; /* LCSClientName */ +static int hf_gsm_map_lcs_lcsAPN = -1; /* APN */ +static int hf_gsm_map_lcs_lcsRequestorID = -1; /* LCSRequestorID */ +static int hf_gsm_map_lcs_dataCodingScheme = -1; /* USSD_DataCodingScheme */ +static int hf_gsm_map_lcs_nameString = -1; /* NameString */ +static int hf_gsm_map_lcs_lcs_FormatIndicator = -1; /* LCS_FormatIndicator */ +static int hf_gsm_map_lcs_requestorIDString = -1; /* RequestorIDString */ +static int hf_gsm_map_lcs_horizontal_accuracy = -1; /* Horizontal_Accuracy */ +static int hf_gsm_map_lcs_verticalCoordinateRequest = -1; /* NULL */ +static int hf_gsm_map_lcs_vertical_accuracy = -1; /* Vertical_Accuracy */ +static int hf_gsm_map_lcs_responseTime = -1; /* ResponseTime */ +static int hf_gsm_map_lcs_velocityRequest = -1; /* NULL */ +static int hf_gsm_map_lcs_responseTimeCategory = -1; /* ResponseTimeCategory */ +static int hf_gsm_map_lcs_lcsCodewordString = -1; /* LCSCodewordString */ +static int hf_gsm_map_lcs_callSessionUnrelated = -1; /* PrivacyCheckRelatedAction */ +static int hf_gsm_map_lcs_callSessionRelated = -1; /* PrivacyCheckRelatedAction */ +static int hf_gsm_map_lcs_areaDefinition = -1; /* AreaDefinition */ +static int hf_gsm_map_lcs_occurrenceInfo = -1; /* OccurrenceInfo */ +static int hf_gsm_map_lcs_intervalTime = -1; /* IntervalTime */ +static int hf_gsm_map_lcs_areaList = -1; /* AreaList */ +static int hf_gsm_map_lcs_AreaList_item = -1; /* Area */ +static int hf_gsm_map_lcs_areaType = -1; /* AreaType */ +static int hf_gsm_map_lcs_areaIdentification = -1; /* AreaIdentification */ +static int hf_gsm_map_lcs_reportingAmount = -1; /* ReportingAmount */ +static int hf_gsm_map_lcs_reportingInterval = -1; /* ReportingInterval */ +static int hf_gsm_map_lcs_plmn_ListPrioritized = -1; /* NULL */ +static int hf_gsm_map_lcs_plmn_List = -1; /* PLMNList */ +static int hf_gsm_map_lcs_PLMNList_item = -1; /* ReportingPLMN */ +static int hf_gsm_map_lcs_plmn_Id = -1; /* PLMN_Id */ +static int hf_gsm_map_lcs_ran_Technology = -1; /* RAN_Technology */ +static int hf_gsm_map_lcs_ran_PeriodicLocationSupport = -1; /* NULL */ +static int hf_gsm_map_lcs_locationEstimate = -1; /* Ext_GeographicalInformation */ +static int hf_gsm_map_lcs_ageOfLocationEstimate = -1; /* AgeOfLocationInformation */ +static int hf_gsm_map_lcs_add_LocationEstimate = -1; /* Add_GeographicalInformation */ +static int hf_gsm_map_lcs_deferredmt_lrResponseIndicator = -1; /* NULL */ +static int hf_gsm_map_lcs_geranPositioningData = -1; /* PositioningDataInformation */ +static int hf_gsm_map_lcs_utranPositioningData = -1; /* UtranPositioningDataInfo */ +static int hf_gsm_map_lcs_cellIdOrSai = -1; /* CellGlobalIdOrServiceAreaIdOrLAI */ +static int hf_gsm_map_lcs_sai_Present = -1; /* NULL */ +static int hf_gsm_map_lcs_accuracyFulfilmentIndicator = -1; /* AccuracyFulfilmentIndicator */ +static int hf_gsm_map_lcs_velocityEstimate = -1; /* VelocityEstimate */ +static int hf_gsm_map_lcs_geranGANSSpositioningData = -1; /* GeranGANSSpositioningData */ +static int hf_gsm_map_lcs_utranGANSSpositioningData = -1; /* UtranGANSSpositioningData */ +static int hf_gsm_map_lcs_targetServingNodeForHandover = -1; /* ServingNodeAddress */ +static int hf_gsm_map_lcs_utranAdditionalPositioningData = -1; /* UtranAdditionalPositioningData */ +static int hf_gsm_map_lcs_utranBaroPressureMeas = -1; /* UtranBaroPressureMeas */ +static int hf_gsm_map_lcs_utranCivicAddress = -1; /* UtranCivicAddress */ +static int hf_gsm_map_lcs_lcs_Event = -1; /* LCS_Event */ +static int hf_gsm_map_lcs_na_ESRD = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_na_ESRK = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_slr_ArgExtensionContainer = -1; /* SLR_ArgExtensionContainer */ +static int hf_gsm_map_lcs_deferredmt_lrData = -1; /* Deferredmt_lrData */ +static int hf_gsm_map_lcs_pseudonymIndicator = -1; /* NULL */ +static int hf_gsm_map_lcs_sequenceNumber = -1; /* SequenceNumber */ +static int hf_gsm_map_lcs_terminationCause = -1; /* TerminationCause */ +static int hf_gsm_map_lcs_msc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_sgsn_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_map_lcs_mme_Number = -1; /* DiameterIdentity */ +/* named bits */ +static int hf_gsm_map_lcs_DeferredLocationEventType_msAvailable = -1; +static int hf_gsm_map_lcs_DeferredLocationEventType_enteringIntoArea = -1; +static int hf_gsm_map_lcs_DeferredLocationEventType_leavingFromArea = -1; +static int hf_gsm_map_lcs_DeferredLocationEventType_beingInsideArea = -1; +static int hf_gsm_map_lcs_DeferredLocationEventType_periodicLDR = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPoint = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_polygon = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitude = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid = -1; +static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidArc = -1; + +/* --- Module MAP-GR-DataTypes --- --- --- */ + +static int hf_gsm_map_gr_teleservice = -1; /* Ext_TeleserviceCode */ +static int hf_gsm_map_gr_asciCallReference = -1; /* ASCI_CallReference */ +static int hf_gsm_map_gr_codec_Info = -1; /* CODEC_Info */ +static int hf_gsm_map_gr_cipheringAlgorithm = -1; /* CipheringAlgorithm */ +static int hf_gsm_map_gr_groupKeyNumber_Vk_Id = -1; /* GroupKeyNumber */ +static int hf_gsm_map_gr_groupKey = -1; /* Kc */ +static int hf_gsm_map_gr_priority = -1; /* EMLPP_Priority */ +static int hf_gsm_map_gr_uplinkFree = -1; /* NULL */ +static int hf_gsm_map_gr_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_gr_vstk = -1; /* VSTK */ +static int hf_gsm_map_gr_vstk_rand = -1; /* VSTK_RAND */ +static int hf_gsm_map_gr_talkerChannelParameter = -1; /* NULL */ +static int hf_gsm_map_gr_uplinkReplyIndicator = -1; /* NULL */ +static int hf_gsm_map_gr_groupCallNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_map_gr_imsi = -1; /* IMSI */ +static int hf_gsm_map_gr_talkerPriority = -1; /* TalkerPriority */ +static int hf_gsm_map_gr_additionalInfo = -1; /* AdditionalInfo */ +static int hf_gsm_map_gr_uplinkRequestAck = -1; /* NULL */ +static int hf_gsm_map_gr_uplinkReleaseIndication = -1; /* NULL */ +static int hf_gsm_map_gr_uplinkRejectCommand = -1; /* NULL */ +static int hf_gsm_map_gr_uplinkSeizedCommand = -1; /* NULL */ +static int hf_gsm_map_gr_uplinkReleaseCommand = -1; /* NULL */ +static int hf_gsm_map_gr_stateAttributes = -1; /* StateAttributes */ +static int hf_gsm_map_gr_emergencyModeResetCommandFlag = -1; /* NULL */ +static int hf_gsm_map_gr_sm_RP_UI = -1; /* SignalInfo */ +static int hf_gsm_map_gr_an_APDU = -1; /* AccessNetworkSignalInfo */ +static int hf_gsm_map_gr_uplinkRequest = -1; /* NULL */ +static int hf_gsm_map_gr_releaseGroupCall = -1; /* NULL */ +static int hf_gsm_map_gr_downlinkAttached = -1; /* NULL */ +static int hf_gsm_map_gr_uplinkAttached = -1; /* NULL */ +static int hf_gsm_map_gr_dualCommunication = -1; /* NULL */ +static int hf_gsm_map_gr_callOriginator = -1; /* NULL */ +static int hf_gsm_map_gr_requestedInfo = -1; /* RequestedInfo */ +static int hf_gsm_map_gr_groupId = -1; /* Long_GroupId */ +static int hf_gsm_map_gr_cellId = -1; /* GlobalCellId */ +static int hf_gsm_map_gr_tmsi = -1; /* TMSI */ +static int hf_gsm_map_gr_cksn = -1; /* Cksn */ +static int hf_gsm_map_gr_anchorMSC_Address = -1; /* ISDN_AddressString */ +static int hf_gsm_map_gr_additionalSubscriptions = -1; /* AdditionalSubscriptions */ +static int hf_gsm_map_gr_kc = -1; /* Kc */ + +/* --- Module MAP-DialogueInformation --- --- --- */ + +static int hf_gsm_map_dialogue_gsm_map_dialogue_MAP_DialoguePDU_PDU = -1; /* MAP_DialoguePDU */ +static int hf_gsm_map_dialogue_map_open = -1; /* MAP_OpenInfo */ +static int hf_gsm_map_dialogue_map_accept = -1; /* MAP_AcceptInfo */ +static int hf_gsm_map_dialogue_map_close = -1; /* MAP_CloseInfo */ +static int hf_gsm_map_dialogue_map_refuse = -1; /* MAP_RefuseInfo */ +static int hf_gsm_map_dialogue_map_userAbort = -1; /* MAP_UserAbortInfo */ +static int hf_gsm_map_dialogue_map_providerAbort = -1; /* MAP_ProviderAbortInfo */ +static int hf_gsm_map_dialogue_destinationReference = -1; /* AddressString */ +static int hf_gsm_map_dialogue_originationReference = -1; /* AddressString */ +static int hf_gsm_map_dialogue_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_dialogue_reason = -1; /* Reason */ +static int hf_gsm_map_dialogue_alternativeApplicationContext = -1; /* OBJECT_IDENTIFIER */ +static int hf_gsm_map_dialogue_map_UserAbortChoice = -1; /* MAP_UserAbortChoice */ +static int hf_gsm_map_dialogue_userSpecificReason = -1; /* NULL */ +static int hf_gsm_map_dialogue_userResourceLimitation = -1; /* NULL */ +static int hf_gsm_map_dialogue_resourceUnavailable = -1; /* ResourceUnavailableReason */ +static int hf_gsm_map_dialogue_applicationProcedureCancellation = -1; /* ProcedureCancellationReason */ +static int hf_gsm_map_dialogue_map_ProviderAbortReason = -1; /* MAP_ProviderAbortReason */ + +/* --- Module DummyMAP --- --- --- */ + +static int hf_gsm_old_invoke = -1; /* Invoke */ +static int hf_gsm_old_returnResultLast = -1; /* ReturnResult */ +static int hf_gsm_old_returnError = -1; /* ReturnError */ +static int hf_gsm_old_reject = -1; /* Reject */ +static int hf_gsm_old_returnResultNotLast = -1; /* ReturnResult */ +static int hf_gsm_old_invokeID = -1; /* InvokeIdType */ +static int hf_gsm_old_linkedID = -1; /* InvokeIdType */ +static int hf_gsm_old_opCode = -1; /* MAP_OPERATION */ +static int hf_gsm_old_invokeparameter = -1; /* InvokeParameter */ +static int hf_gsm_old_resultretres = -1; /* T_resultretres */ +static int hf_gsm_old_returnparameter = -1; /* ReturnResultParameter */ +static int hf_gsm_old_errorCode = -1; /* MAP_ERROR */ +static int hf_gsm_old_parameter = -1; /* ReturnErrorParameter */ +static int hf_gsm_old_invokeIDRej = -1; /* T_invokeIDRej */ +static int hf_gsm_old_derivable = -1; /* InvokeIdType */ +static int hf_gsm_old_not_derivable = -1; /* NULL */ +static int hf_gsm_old_problem = -1; /* T_problem */ +static int hf_gsm_old_generalProblem = -1; /* GeneralProblem */ +static int hf_gsm_old_invokeProblem = -1; /* InvokeProblem */ +static int hf_gsm_old_returnResultProblem = -1; /* ReturnResultProblem */ +static int hf_gsm_old_returnErrorProblem = -1; /* ReturnErrorProblem */ +static int hf_gsm_old_localValue = -1; /* OperationLocalvalue */ +static int hf_gsm_old_globalValue = -1; /* OBJECT_IDENTIFIER */ +static int hf_gsm_old_localValue_01 = -1; /* LocalErrorcode */ +static int hf_gsm_old_protocolId = -1; /* ProtocolId */ +static int hf_gsm_old_signalInfo = -1; /* SignalInfo */ +static int hf_gsm_old_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_old_gsm_BearerCapability = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_isdn_BearerCapability = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_call_Direction = -1; /* CallDirection */ +static int hf_gsm_old_b_Subscriber_Address = -1; /* ISDN_AddressString */ +static int hf_gsm_old_chosenChannel = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_lowerLayerCompatibility = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_highLayerCompatibility = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_sIWFSNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_old_imsi = -1; /* IMSI */ +static int hf_gsm_old_vlr_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_old_targetCellId = -1; /* GlobalCellId */ +static int hf_gsm_old_ho_NumberNotRequired = -1; /* NULL */ +static int hf_gsm_old_bss_APDU = -1; /* Bss_APDU */ +static int hf_gsm_old_handoverNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_old_SendAuthenticationInfoResOld_item = -1; /* SendAuthenticationInfoResOld_item */ +static int hf_gsm_old_rand = -1; /* RAND */ +static int hf_gsm_old_sres = -1; /* SRES */ +static int hf_gsm_old_kc = -1; /* Kc */ +static int hf_gsm_old_tripletList = -1; /* TripletListold */ +static int hf_gsm_old_TripletListold_item = -1; /* AuthenticationTriplet_v2 */ +static int hf_gsm_old_channelType = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_securityHeader = -1; /* SecurityHeader */ +static int hf_gsm_old_protectedPayload = -1; /* ProtectedPayload */ +static int hf_gsm_old_securityParametersIndex = -1; /* SecurityParametersIndex */ +static int hf_gsm_old_originalComponentIdentifier = -1; /* OriginalComponentIdentifier */ +static int hf_gsm_old_initialisationVector = -1; /* InitialisationVector */ +static int hf_gsm_old_operationCode = -1; /* OperationCode */ +static int hf_gsm_old_errorCode_01 = -1; /* ErrorCode */ +static int hf_gsm_old_userInfo = -1; /* NULL */ +static int hf_gsm_old_localValue_02 = -1; /* INTEGER */ +static int hf_gsm_old_msisdn = -1; /* ISDN_AddressString */ +static int hf_gsm_old_category = -1; /* Category */ +static int hf_gsm_old_basicService = -1; /* BasicServiceCode */ +static int hf_gsm_old_operatorSS_Code = -1; /* T_operatorSS_Code */ +static int hf_gsm_old_operatorSS_Code_item = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_old_sm_RP_DA = -1; /* SM_RP_DAold */ +static int hf_gsm_old_sm_RP_OA = -1; /* SM_RP_OAold */ +static int hf_gsm_old_sm_RP_UI = -1; /* SignalInfo */ +static int hf_gsm_old_moreMessagesToSend = -1; /* NULL */ +static int hf_gsm_old_imsi_01 = -1; /* T_imsi */ +static int hf_gsm_old_lmsi = -1; /* T_lmsi */ +static int hf_gsm_old_serviceCentreAddressDA = -1; /* T_serviceCentreAddressDA */ +static int hf_gsm_old_noSM_RP_DA = -1; /* T_noSM_RP_DA */ +static int hf_gsm_old_msisdn_01 = -1; /* T_msisdn */ +static int hf_gsm_old_serviceCentreAddressOA = -1; /* T_serviceCentreAddressOA */ +static int hf_gsm_old_noSM_RP_OA = -1; /* T_noSM_RP_OA */ +static int hf_gsm_old_cug_CheckInfo = -1; /* CUG_CheckInfo */ +static int hf_gsm_old_numberOfForwarding = -1; /* NumberOfForwarding */ +static int hf_gsm_old_networkSignalInfo = -1; /* ExternalSignalInfo */ +static int hf_gsm_old_routingInfo = -1; /* RoutingInfo */ +static int hf_gsm_old_originatingEntityNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_old_msisdn_02 = -1; /* AddressString */ +static int hf_gsm_old_sm_RP_PRI = -1; /* BOOLEAN */ +static int hf_gsm_old_serviceCentreAddress = -1; /* AddressString */ +static int hf_gsm_old_cug_Interlock = -1; /* CUG_Interlock */ +static int hf_gsm_old_teleserviceCode = -1; /* TeleserviceCode */ +static int hf_gsm_old_locationInfoWithLMSI = -1; /* LocationInfoWithLMSIv2 */ +static int hf_gsm_old_mwd_Set = -1; /* BOOLEAN */ +static int hf_gsm_old_locationInfo = -1; /* LocationInfo */ +static int hf_gsm_old_lmsi_01 = -1; /* LMSI */ +static int hf_gsm_old_roamingNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_old_msc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_old_subscriberId = -1; /* SubscriberId */ +static int hf_gsm_old_requestParameterList = -1; /* RequestParameterList */ +static int hf_gsm_old_RequestParameterList_item = -1; /* RequestParameter */ +static int hf_gsm_old_authenticationSet = -1; /* AuthenticationSetListOld */ +static int hf_gsm_old_subscriberData = -1; /* SubscriberData */ +static int hf_gsm_old_ki = -1; /* Ki */ +static int hf_gsm_old_tripletList_01 = -1; /* TripletList */ +static int hf_gsm_old_quintupletList = -1; /* QuintupletList */ +static int hf_gsm_old_SentParameterList_item = -1; /* SentParameter */ +static int hf_gsm_old_networkResource = -1; /* NetworkResource */ +static int hf_gsm_old_hlr_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_old_hlr_List = -1; /* HLR_List */ + +/* --- Module SS-DataTypes --- --- --- */ + +static int hf_gsm_ss_ss_Code = -1; /* SS_Code */ +static int hf_gsm_ss_ss_Status = -1; /* SS_Status */ +static int hf_gsm_ss_ss_Notification = -1; /* SS_Notification */ +static int hf_gsm_ss_callIsWaiting_Indicator = -1; /* NULL */ +static int hf_gsm_ss_callOnHold_Indicator = -1; /* CallOnHold_Indicator */ +static int hf_gsm_ss_mpty_Indicator = -1; /* NULL */ +static int hf_gsm_ss_cug_Index = -1; /* CUG_Index */ +static int hf_gsm_ss_clirSuppressionRejected = -1; /* NULL */ +static int hf_gsm_ss_ect_Indicator = -1; /* ECT_Indicator */ +static int hf_gsm_ss_nameIndicator = -1; /* NameIndicator */ +static int hf_gsm_ss_ccbs_Feature = -1; /* CCBS_Feature */ +static int hf_gsm_ss_alertingPattern = -1; /* AlertingPattern */ +static int hf_gsm_ss_multicall_Indicator = -1; /* Multicall_Indicator */ +static int hf_gsm_ss_chargingInformation = -1; /* ChargingInformation */ +static int hf_gsm_ss_e1 = -1; /* E1 */ +static int hf_gsm_ss_e2 = -1; /* E2 */ +static int hf_gsm_ss_e3 = -1; /* E3 */ +static int hf_gsm_ss_e4 = -1; /* E4 */ +static int hf_gsm_ss_e5 = -1; /* E5 */ +static int hf_gsm_ss_e6 = -1; /* E6 */ +static int hf_gsm_ss_e7 = -1; /* E7 */ +static int hf_gsm_ss_suppressPrefCUG = -1; /* NULL */ +static int hf_gsm_ss_suppressOA = -1; /* NULL */ +static int hf_gsm_ss_ect_CallState = -1; /* ECT_CallState */ +static int hf_gsm_ss_rdn = -1; /* RDN */ +static int hf_gsm_ss_callingName = -1; /* Name */ +static int hf_gsm_ss_namePresentationAllowed = -1; /* NameSet */ +static int hf_gsm_ss_presentationRestricted = -1; /* NULL */ +static int hf_gsm_ss_nameUnavailable = -1; /* NULL */ +static int hf_gsm_ss_namePresentationRestricted = -1; /* NameSet */ +static int hf_gsm_ss_dataCodingScheme = -1; /* USSD_DataCodingScheme */ +static int hf_gsm_ss_lengthInCharacters = -1; /* INTEGER */ +static int hf_gsm_ss_nameString = -1; /* USSD_String */ +static int hf_gsm_ss_presentationAllowedAddress = -1; /* RemotePartyNumber */ +static int hf_gsm_ss_numberNotAvailableDueToInterworking = -1; /* NULL */ +static int hf_gsm_ss_presentationRestrictedAddress = -1; /* RemotePartyNumber */ +static int hf_gsm_ss_partyNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_ss_partyNumberSubaddress = -1; /* ISDN_SubaddressString */ +static int hf_gsm_ss_deflectedToNumber = -1; /* AddressString */ +static int hf_gsm_ss_deflectedToSubaddress = -1; /* ISDN_SubaddressString */ +static int hf_gsm_ss_uUS_Service = -1; /* UUS_Service */ +static int hf_gsm_ss_uUS_Required = -1; /* BOOLEAN */ +static int hf_gsm_ss_notificationType = -1; /* NotificationToMSUser */ +static int hf_gsm_ss_locationType = -1; /* LocationType */ +static int hf_gsm_ss_lcsClientExternalID = -1; /* LCSClientExternalID */ +static int hf_gsm_ss_lcsClientName = -1; /* LCSClientName */ +static int hf_gsm_ss_lcsRequestorID = -1; /* LCSRequestorID */ +static int hf_gsm_ss_lcsCodeword = -1; /* LCSCodeword */ +static int hf_gsm_ss_lcsServiceTypeID = -1; /* LCSServiceTypeID */ +static int hf_gsm_ss_deferredLocationExt = -1; /* DeferredLocationExt */ +static int hf_gsm_ss_verificationResponse = -1; /* VerificationResponse */ +static int hf_gsm_ss_molr_Type = -1; /* MOLR_Type */ +static int hf_gsm_ss_locationMethod = -1; /* LocationMethod */ +static int hf_gsm_ss_lcs_QoS = -1; /* LCS_QoS */ +static int hf_gsm_ss_mlc_Number = -1; /* ISDN_AddressString */ +static int hf_gsm_ss_gpsAssistanceData = -1; /* GPSAssistanceData */ +static int hf_gsm_ss_supportedGADShapes = -1; /* SupportedGADShapes */ +static int hf_gsm_ss_ageOfLocationInfo = -1; /* AgeOfLocationInformation */ +static int hf_gsm_ss_pseudonymIndicator = -1; /* NULL */ +static int hf_gsm_ss_h_gmlc_address = -1; /* GSN_Address */ +static int hf_gsm_ss_locationEstimate = -1; /* Ext_GeographicalInformation */ +static int hf_gsm_ss_velocityEstimate = -1; /* VelocityEstimate */ +static int hf_gsm_ss_referenceNumber = -1; /* LCS_ReferenceNumber */ +static int hf_gsm_ss_periodicLDRInfo = -1; /* PeriodicLDRInfo */ +static int hf_gsm_ss_locationUpdateRequest = -1; /* NULL */ +static int hf_gsm_ss_sequenceNumber = -1; /* SequenceNumber */ +static int hf_gsm_ss_terminationCause = -1; /* TerminationCause */ +static int hf_gsm_ss_mo_lrShortCircuit = -1; /* NULL */ +static int hf_gsm_ss_ganssAssistanceData = -1; /* GANSSAssistanceData */ +static int hf_gsm_ss_multiplePositioningProtocolPDUs = -1; /* MultiplePositioningProtocolPDUs */ +static int hf_gsm_ss_locationInfo = -1; /* Location_Info */ +static int hf_gsm_ss_MultiplePositioningProtocolPDUs_item = -1; /* PositioningProtocolPDU */ +static int hf_gsm_ss_decipheringKeys = -1; /* DecipheringKeys */ +static int hf_gsm_ss_add_LocationEstimate = -1; /* Add_GeographicalInformation */ +static int hf_gsm_ss_reportingPLMNList = -1; /* ReportingPLMNList */ +static int hf_gsm_ss_deferredLocationEventType = -1; /* DeferredLocationEventType */ +static int hf_gsm_ss_areaEventInfo = -1; /* AreaEventInfo */ +static int hf_gsm_ss_qoS = -1; /* LCS_QoS */ +static int hf_gsm_ss_periodicLocation = -1; /* PeriodicLocation */ +static int hf_gsm_ss_areaEventReporting = -1; /* AreaEventReporting */ +static int hf_gsm_ss_motionEventReporting = -1; /* MotionEventReporting */ +static int hf_gsm_ss_areaList = -1; /* AreaList */ +static int hf_gsm_ss_occurrenceInfo = -1; /* OccurrenceInfo */ +static int hf_gsm_ss_intervalTime = -1; /* IntervalTime */ +static int hf_gsm_ss_maximumInterval = -1; /* MaximumInterval */ +static int hf_gsm_ss_samplingInterval = -1; /* SamplingInterval */ +static int hf_gsm_ss_duration = -1; /* Duration */ +static int hf_gsm_ss_AreaList_item = -1; /* Area */ +static int hf_gsm_ss_areaType = -1; /* AreaType */ +static int hf_gsm_ss_areaIdentification = -1; /* AreaIdentification */ +static int hf_gsm_ss_linearDistance = -1; /* LinearDistance */ +/* named bits */ +static int hf_gsm_ss_DeferredLocationExt_motionEvent = -1; +static int hf_gsm_ss_Location_Info_locationEstimate = -1; + +/* --- Module EricssonMAP --- --- --- */ + +static int hf_gsm_map_ericsson_imei = -1; /* IMEI */ +static int hf_gsm_map_ericsson_requestedEquipmentInfo = -1; /* RequestedEquipmentInfo */ +static int hf_gsm_map_ericsson_imsi = -1; /* IMSI */ +static int hf_gsm_map_ericsson_locationInformation = -1; /* T_locationInformation */ +static int hf_gsm_map_ericsson_extensionContainer = -1; /* ExtensionContainer */ +static int hf_gsm_map_ericsson_isdArgType = -1; /* IsdArgType */ +static int hf_gsm_map_ericsson_isdResType = -1; /* IsdResType */ +static int hf_gsm_map_ericsson_dsdArgType = -1; /* DsdArgType */ +static int hf_gsm_map_ericsson_sriArgType = -1; /* SRIArgType */ +static int hf_gsm_map_ericsson_sriResType = -1; /* SRIResType */ +static int hf_gsm_map_ericsson_prnArgType = -1; /* PrnArgType */ +static int hf_gsm_map_ericsson_ulArgType = -1; /* UlArgType */ +static int hf_gsm_map_ericsson_rdArgType = -1; /* RdArgType */ +static int hf_gsm_map_ericsson_saiArgType = -1; /* SaiArgType */ +static int hf_gsm_map_ericsson_saiResType = -1; /* SaiResType */ +static int hf_gsm_map_ericsson_atiArgType = -1; /* AtiArgType */ +static int hf_gsm_map_ericsson_atiResType = -1; /* AtiResType */ +static int hf_gsm_map_ericsson_extAtiArgType = -1; /* ExtAtiArgType */ +static int hf_gsm_map_ericsson_IsdArgType_item = -1; /* IsdArgData */ +static int hf_gsm_map_ericsson_privateFeatureCode = -1; /* PrivateFeatureCode */ +static int hf_gsm_map_ericsson_privateFeatureData = -1; /* PrivateFeatureData */ +static int hf_gsm_map_ericsson_subscriptionTypeInfo = -1; /* SubscriptionTypeInfo */ +static int hf_gsm_map_ericsson_oickInfo = -1; /* OickInfo */ +static int hf_gsm_map_ericsson_ss_Status = -1; /* Ext_SS_Status */ +static int hf_gsm_map_ericsson_inCategoryKey = -1; /* INCategoryKey */ +static int hf_gsm_map_ericsson_subscriptionType = -1; /* SubscriptionType */ +static int hf_gsm_map_ericsson_IsdResType_item = -1; /* IsdResData */ +static int hf_gsm_map_ericsson_supportedPrivateFeature = -1; /* PrivateFeatureCode */ +static int hf_gsm_map_ericsson_DsdArgType_item = -1; /* DsdArgData */ +static int hf_gsm_map_ericsson_privateFeatureWithdraw = -1; /* PrivateFeatureCode */ +static int hf_gsm_map_ericsson_SRIArgType_item = -1; /* SriArgData */ +static int hf_gsm_map_ericsson_extraNetworkInfo = -1; /* ExtraSignalInfo */ +static int hf_gsm_map_ericsson_SRIResType_item = -1; /* SriResData */ +static int hf_gsm_map_ericsson_PrnArgType_item = -1; /* PrnArgData */ +static int hf_gsm_map_ericsson_UlArgType_item = -1; /* UlArgData */ +static int hf_gsm_map_ericsson_privateFeatureUlArgData = -1; /* PrivateFeatureUlArgData */ +static int hf_gsm_map_ericsson_adc = -1; /* IMEI */ +static int hf_gsm_map_ericsson_protocolId = -1; /* ExtraProtocolId */ +static int hf_gsm_map_ericsson_signalInfo = -1; /* SignalInfo */ +static int hf_gsm_map_ericsson_msisdn = -1; /* NULL */ +static int hf_gsm_map_ericsson_noAuthenVectorsRequested = -1; /* NULL */ +static int hf_gsm_map_ericsson_msIsdn = -1; /* ISDN_AddressString */ +static int hf_gsm_map_ericsson_requestedInfoType = -1; /* RequestedInfoType */ +static int hf_gsm_map_ericsson_toBeDecided = -1; /* NULL */ +static int hf_gsm_map_ericsson_toBeDecidedOne = -1; /* NULL */ +static int hf_gsm_map_ericsson_sgsnNumber = -1; /* NULL */ +static int hf_gsm_map_ericsson_ExtAtiArgType_item = -1; /* AtiArgData */ + +/* --- Module NokiaMAP-Extensions --- --- --- */ + +static int hf_NokiaMAP_Extensions_alsLineIndicator = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_routingCategory = -1; /* RoutingCategory */ +static int hf_NokiaMAP_Extensions_serviceList = -1; /* MAPserviceList */ +static int hf_NokiaMAP_Extensions_serv_info_list = -1; /* ServiceListWithInfo */ +static int hf_NokiaMAP_Extensions_extRoutingCategory = -1; /* ExtRoutingCategory */ +static int hf_NokiaMAP_Extensions_ownMSISDN = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_mwd_Set = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_ChargingAreaList_item = -1; /* ChargingArea */ +static int hf_NokiaMAP_Extensions_chargingAreaList = -1; /* ChargingAreaList */ +static int hf_NokiaMAP_Extensions_inTriggerKey = -1; /* InTriggerKey */ +static int hf_NokiaMAP_Extensions_pnpIndex = -1; /* PnpIndex */ +static int hf_NokiaMAP_Extensions_callRedirectionIndex = -1; /* CallRedirectionIndex */ +static int hf_NokiaMAP_Extensions_regionalChargingData = -1; /* RegionalChargingData */ +static int hf_NokiaMAP_Extensions_callForwardingOverride = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_in_Capability = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_callingCategory = -1; /* CallingCategory */ +static int hf_NokiaMAP_Extensions_internalServiceIndicator = -1; /* InternalServiceIndicator */ +static int hf_NokiaMAP_Extensions_srbtSupportIndicator = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_gmscSupportIndicator = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_protocolId = -1; /* ExtraProtocolId */ +static int hf_NokiaMAP_Extensions_signalInfo = -1; /* SignalInfo */ +static int hf_NokiaMAP_Extensions_cug_Interlock = -1; /* CUG_Interlock */ +static int hf_NokiaMAP_Extensions_cug_OutgoingAccess = -1; /* BOOLEAN */ +static int hf_NokiaMAP_Extensions_cug_CallInfo = -1; /* CUG_CallInfo */ +static int hf_NokiaMAP_Extensions_vlrNumber = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_activeSs = -1; /* ActiveSS_List */ +static int hf_NokiaMAP_Extensions_traceReference = -1; /* TraceReference */ +static int hf_NokiaMAP_Extensions_traceType = -1; /* TraceType */ +static int hf_NokiaMAP_Extensions_omc_Id = -1; /* AddressString */ +static int hf_NokiaMAP_Extensions_hotBilling = -1; /* BOOLEAN */ +static int hf_NokiaMAP_Extensions_cfoIsDone = -1; /* BOOLEAN */ +static int hf_NokiaMAP_Extensions_cfInCug = -1; /* BOOLEAN */ +static int hf_NokiaMAP_Extensions_basicService = -1; /* BasicServiceCode */ +static int hf_NokiaMAP_Extensions_category = -1; /* Category */ +static int hf_NokiaMAP_Extensions_nokia_CUG = -1; /* Nokia_CUG_Data */ +static int hf_NokiaMAP_Extensions_noBarrings = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_odb_Data = -1; /* ODB_Data */ +static int hf_NokiaMAP_Extensions_fraudData = -1; /* FraudData */ +static int hf_NokiaMAP_Extensions_leaId = -1; /* LeaId */ +static int hf_NokiaMAP_Extensions_olcmInfoTable = -1; /* OlcmInfoTable */ +static int hf_NokiaMAP_Extensions_commonMSISDN = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_rgData = -1; /* RgData */ +static int hf_NokiaMAP_Extensions_olcmTraceReference = -1; /* OlcmTraceReference */ +static int hf_NokiaMAP_Extensions_noAnswerTimer = -1; /* NoAnswerTimer */ +static int hf_NokiaMAP_Extensions_memberList = -1; /* MemberList */ +static int hf_NokiaMAP_Extensions_alertingMethod = -1; /* AlertingMethod */ +static int hf_NokiaMAP_Extensions_userType = -1; /* UserType */ +static int hf_NokiaMAP_Extensions_divertedToNbr = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_memberOfSuppression = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_ringbacktone = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_MemberList_item = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_termination = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_NokiaMAP_Extensions_OlcmInfoTable_item = -1; /* OlcmInfo */ +static int hf_NokiaMAP_Extensions_olcmActive = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_moc = -1; /* FraudData */ +static int hf_NokiaMAP_Extensions_cf = -1; /* FraudData */ +static int hf_NokiaMAP_Extensions_ct = -1; /* FraudData */ +static int hf_NokiaMAP_Extensions_time = -1; /* TimeLimit */ +static int hf_NokiaMAP_Extensions_timeAction = -1; /* ActionType */ +static int hf_NokiaMAP_Extensions_maxCount = -1; /* FraudMaxCount */ +static int hf_NokiaMAP_Extensions_maxCountAction = -1; /* ActionType */ +static int hf_NokiaMAP_Extensions_serviceCode = -1; /* MAPserviceCode */ +static int hf_NokiaMAP_Extensions_versionInfo = -1; /* VersionInfo */ +static int hf_NokiaMAP_Extensions_in_key = -1; /* INKey */ +static int hf_NokiaMAP_Extensions_fraudInfo = -1; /* FraudInfo */ +static int hf_NokiaMAP_Extensions_ServiceListWithInfo_item = -1; /* ServiceWithInfo */ +static int hf_NokiaMAP_Extensions_mobile_IN_key = -1; /* MKey */ +static int hf_NokiaMAP_Extensions_sms_IN_key = -1; /* SMSKey */ +static int hf_NokiaMAP_Extensions_mKeyVer = -1; /* MKeyVer */ +static int hf_NokiaMAP_Extensions_mmScfAddress = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_mmTdpName = -1; /* MmTdpName */ +static int hf_NokiaMAP_Extensions_serviceKey = -1; /* ServiceKey */ +static int hf_NokiaMAP_Extensions_locupType = -1; /* LocupType */ +static int hf_NokiaMAP_Extensions_mmSCPAddress = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_smsTdpName = -1; /* SmsTdpName */ +static int hf_NokiaMAP_Extensions_mmsFlag = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_map_Opt = -1; /* MapOptFields */ +static int hf_NokiaMAP_Extensions_codec_List = -1; /* CodecListExt */ +static int hf_NokiaMAP_Extensions_selected_Codec = -1; /* SelectedCodec */ +static int hf_NokiaMAP_Extensions_uma_access = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_uma_ip_address = -1; /* OCTET_STRING_SIZE_5_17 */ +static int hf_NokiaMAP_Extensions_uma_ip_port_nb = -1; /* IPPortNb */ +static int hf_NokiaMAP_Extensions_CodecListExt_item = -1; /* CodecExt */ +static int hf_NokiaMAP_Extensions_codec = -1; /* CodecExt */ +static int hf_NokiaMAP_Extensions_modes = -1; /* Modes */ +static int hf_NokiaMAP_Extensions_imsi = -1; /* IMSI */ +static int hf_NokiaMAP_Extensions_cfuSMSCounter = -1; /* CfuSMSCounter */ +static int hf_NokiaMAP_Extensions_cfusmcfo = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_memberInterrogate = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_locationAreaCode = -1; /* LocationAreaCode */ +static int hf_NokiaMAP_Extensions_cellId = -1; /* CellGlobalIdOrServiceAreaIdFixedLength */ +static int hf_NokiaMAP_Extensions_lai = -1; /* LAIFixedLength */ +static int hf_NokiaMAP_Extensions_sendImmResp = -1; /* NULL */ +static int hf_NokiaMAP_Extensions_rejectCause = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_NokiaMAP_Extensions_senderMSISDN = -1; /* ISDN_AddressString */ +static int hf_NokiaMAP_Extensions_access = -1; /* Access */ +static int hf_NokiaMAP_Extensions_version = -1; /* Version */ +static int hf_NokiaMAP_Extensions_AccessSubscriptionListExt_item = -1; /* Access */ +/* named bits */ +static int hf_NokiaMAP_Extensions_AllowedServiceData_amr_wb_allowed = -1; + +/* Initialize the subtree pointers */ +static gint ett_gsm_map = -1; +static gint ett_gsm_map_InvokeId = -1; +static gint ett_gsm_map_InvokePDU = -1; +static gint ett_gsm_map_ReturnResultPDU = -1; +static gint ett_gsm_map_ReturnErrorPDU = -1; +static gint ett_gsm_map_ReturnResult_result = -1; +static gint ett_gsm_map_ReturnError_result = -1; +static gint ett_gsm_map_GSMMAPPDU = -1; +static gint ett_gsm_map_ext_qos_subscribed = -1; +static gint ett_gsm_map_pdptypenumber = -1; +static gint ett_gsm_map_RAIdentity = -1; +static gint ett_gsm_map_LAIFixedLength = -1; +static gint ett_gsm_map_isdn_address_string = -1; +static gint ett_gsm_map_geo_desc = -1; +static gint ett_gsm_map_LongSignalInfo = -1; +static gint ett_gsm_map_RadioResourceInformation =-1; +static gint ett_gsm_map_MSNetworkCapability =-1; +static gint ett_gsm_map_MSRadioAccessCapability = -1; +static gint ett_gsm_map_externalsignalinfo = -1; +static gint ett_gsm_map_cbs_data_coding = -1; +static gint ett_gsm_map_GlobalCellId = -1; +static gint ett_gsm_map_GeographicalInformation = -1; +static gint ett_gsm_map_apn_str = -1; +static gint ett_gsm_map_LocationNumber = -1; +static gint ett_gsm_map_ericsson_locationInformation = -1; +static gint ett_gsm_map_extension_data = -1; +static gint ett_gsm_map_tbcd_digits = -1; +static gint ett_gsm_map_ussd_string = -1; +static gint ett_gsm_map_ext2_qos_subscribed = -1; +static gint ett_gsm_map_ext3_qos_subscribed = -1; +static gint ett_gsm_map_e_utranCellGlobalIdentity = -1; +static gint ett_gsm_map_TA_id = -1; +static gint ett_gsm_map_GeodeticInformation = -1; + + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + +static gint ett_gsm_map_ExtensionContainer = -1; +static gint ett_gsm_map_SLR_ArgExtensionContainer = -1; +static gint ett_gsm_map_PrivateExtensionList = -1; +static gint ett_gsm_map_PrivateExtension = -1; +static gint ett_gsm_map_PCS_Extensions = -1; +static gint ett_gsm_map_SLR_Arg_PCS_Extensions = -1; + +/* --- Module MAP-CommonDataTypes --- --- --- */ + +static gint ett_gsm_map_ExternalSignalInfo = -1; +static gint ett_gsm_map_Ext_ExternalSignalInfo = -1; +static gint ett_gsm_map_AccessNetworkSignalInfo = -1; +static gint ett_gsm_map_Identity = -1; +static gint ett_gsm_map_IMSI_WithLMSI = -1; +static gint ett_gsm_map_SubscriberId = -1; +static gint ett_gsm_map_HLR_List = -1; +static gint ett_gsm_map_NAEA_PreferredCI = -1; +static gint ett_gsm_map_SubscriberIdentity = -1; +static gint ett_gsm_map_LCSClientExternalID = -1; +static gint ett_gsm_map_NetworkNodeDiameterAddress = -1; +static gint ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI = -1; +static gint ett_gsm_map_BasicServiceCode = -1; +static gint ett_gsm_map_Ext_BasicServiceCode = -1; +static gint ett_gsm_map_EMLPP_Info = -1; +static gint ett_gsm_map_MC_SS_Info = -1; + +/* --- Module MAP-SS-DataTypes --- --- --- */ + +static gint ett_gsm_map_ss_RegisterSS_Arg = -1; +static gint ett_gsm_map_ss_SS_Info = -1; +static gint ett_gsm_map_ss_ForwardingInfo = -1; +static gint ett_gsm_map_ss_ForwardingFeatureList = -1; +static gint ett_gsm_map_ss_ForwardingFeature = -1; +static gint ett_gsm_map_ss_CallBarringInfo = -1; +static gint ett_gsm_map_ss_CallBarringFeatureList = -1; +static gint ett_gsm_map_ss_CallBarringFeature = -1; +static gint ett_gsm_map_ss_SS_Data = -1; +static gint ett_gsm_map_ss_SS_SubscriptionOption = -1; +static gint ett_gsm_map_ss_SS_ForBS_Code = -1; +static gint ett_gsm_map_ss_GenericServiceInfo = -1; +static gint ett_gsm_map_ss_CCBS_FeatureList = -1; +static gint ett_gsm_map_ss_CCBS_Feature = -1; +static gint ett_gsm_map_ss_InterrogateSS_Res = -1; +static gint ett_gsm_map_ss_USSD_Arg = -1; +static gint ett_gsm_map_ss_USSD_Res = -1; +static gint ett_gsm_map_ss_SS_List = -1; +static gint ett_gsm_map_ss_BasicServiceGroupList = -1; +static gint ett_gsm_map_ss_SS_InvocationNotificationArg = -1; +static gint ett_gsm_map_ss_SS_InvocationNotificationRes = -1; +static gint ett_gsm_map_ss_SS_EventSpecification = -1; +static gint ett_gsm_map_ss_RegisterCC_EntryArg = -1; +static gint ett_gsm_map_ss_CCBS_Data = -1; +static gint ett_gsm_map_ss_ServiceIndicator = -1; +static gint ett_gsm_map_ss_RegisterCC_EntryRes = -1; +static gint ett_gsm_map_ss_EraseCC_EntryArg = -1; +static gint ett_gsm_map_ss_EraseCC_EntryRes = -1; + +/* --- Module MAP-ER-DataTypes --- --- --- */ + +static gint ett_gsm_map_er_RoamingNotAllowedParam = -1; +static gint ett_gsm_map_er_CallBarredParam = -1; +static gint ett_gsm_map_er_ExtensibleCallBarredParam = -1; +static gint ett_gsm_map_er_CUG_RejectParam = -1; +static gint ett_gsm_map_er_SS_IncompatibilityCause = -1; +static gint ett_gsm_map_er_SM_DeliveryFailureCause = -1; +static gint ett_gsm_map_er_AbsentSubscriberSM_Param = -1; +static gint ett_gsm_map_er_SystemFailureParam = -1; +static gint ett_gsm_map_er_ExtensibleSystemFailureParam = -1; +static gint ett_gsm_map_er_DataMissingParam = -1; +static gint ett_gsm_map_er_UnexpectedDataParam = -1; +static gint ett_gsm_map_er_FacilityNotSupParam = -1; +static gint ett_gsm_map_er_OR_NotAllowedParam = -1; +static gint ett_gsm_map_er_UnknownSubscriberParam = -1; +static gint ett_gsm_map_er_NumberChangedParam = -1; +static gint ett_gsm_map_er_UnidentifiedSubParam = -1; +static gint ett_gsm_map_er_IllegalSubscriberParam = -1; +static gint ett_gsm_map_er_IllegalEquipmentParam = -1; +static gint ett_gsm_map_er_BearerServNotProvParam = -1; +static gint ett_gsm_map_er_TeleservNotProvParam = -1; +static gint ett_gsm_map_er_TracingBufferFullParam = -1; +static gint ett_gsm_map_er_NoRoamingNbParam = -1; +static gint ett_gsm_map_er_AbsentSubscriberParam = -1; +static gint ett_gsm_map_er_BusySubscriberParam = -1; +static gint ett_gsm_map_er_NoSubscriberReplyParam = -1; +static gint ett_gsm_map_er_ForwardingViolationParam = -1; +static gint ett_gsm_map_er_ForwardingFailedParam = -1; +static gint ett_gsm_map_er_ATI_NotAllowedParam = -1; +static gint ett_gsm_map_er_ATSI_NotAllowedParam = -1; +static gint ett_gsm_map_er_ATM_NotAllowedParam = -1; +static gint ett_gsm_map_er_IllegalSS_OperationParam = -1; +static gint ett_gsm_map_er_SS_NotAvailableParam = -1; +static gint ett_gsm_map_er_SS_SubscriptionViolationParam = -1; +static gint ett_gsm_map_er_InformationNotAvailableParam = -1; +static gint ett_gsm_map_er_SubBusyForMT_SMS_Param = -1; +static gint ett_gsm_map_er_MessageWaitListFullParam = -1; +static gint ett_gsm_map_er_ResourceLimitationParam = -1; +static gint ett_gsm_map_er_NoGroupCallNbParam = -1; +static gint ett_gsm_map_er_IncompatibleTerminalParam = -1; +static gint ett_gsm_map_er_ShortTermDenialParam = -1; +static gint ett_gsm_map_er_LongTermDenialParam = -1; +static gint ett_gsm_map_er_UnauthorizedRequestingNetwork_Param = -1; +static gint ett_gsm_map_er_UnauthorizedLCSClient_Param = -1; +static gint ett_gsm_map_er_PositionMethodFailure_Param = -1; +static gint ett_gsm_map_er_UnknownOrUnreachableLCSClient_Param = -1; +static gint ett_gsm_map_er_MM_EventNotSupported_Param = -1; +static gint ett_gsm_map_er_TargetCellOutsideGCA_Param = -1; +static gint ett_gsm_map_er_OngoingGroupCallParam = -1; + +/* --- Module MAP-SM-DataTypes --- --- --- */ + +static gint ett_gsm_map_sm_RoutingInfoForSM_Arg = -1; +static gint ett_gsm_map_sm_RoutingInfoForSM_Res = -1; +static gint ett_gsm_map_sm_IP_SM_GW_Guidance = -1; +static gint ett_gsm_map_sm_LocationInfoWithLMSI = -1; +static gint ett_gsm_map_sm_Additional_Number = -1; +static gint ett_gsm_map_sm_MO_ForwardSM_Arg = -1; +static gint ett_gsm_map_sm_MO_ForwardSM_Res = -1; +static gint ett_gsm_map_sm_MT_ForwardSM_Arg = -1; +static gint ett_gsm_map_sm_CorrelationID = -1; +static gint ett_gsm_map_sm_MT_ForwardSM_Res = -1; +static gint ett_gsm_map_sm_SM_RP_DA = -1; +static gint ett_gsm_map_sm_SM_RP_OA = -1; +static gint ett_gsm_map_sm_ReportSM_DeliveryStatusArg = -1; +static gint ett_gsm_map_sm_ReportSM_DeliveryStatusRes = -1; +static gint ett_gsm_map_sm_AlertServiceCentreArg = -1; +static gint ett_gsm_map_sm_InformServiceCentreArg = -1; +static gint ett_gsm_map_sm_MW_Status = -1; +static gint ett_gsm_map_sm_ReadyForSM_Arg = -1; +static gint ett_gsm_map_sm_ReadyForSM_Res = -1; +static gint ett_gsm_map_sm_MT_ForwardSM_VGCS_Arg = -1; +static gint ett_gsm_map_sm_MT_ForwardSM_VGCS_Res = -1; +static gint ett_gsm_map_sm_DispatcherList = -1; +static gint ett_gsm_map_sm_AdditionalDispatcherList = -1; + +/* --- Module MAP-OM-DataTypes --- --- --- */ + +static gint ett_gsm_map_om_ActivateTraceModeArg = -1; +static gint ett_gsm_map_om_MDT_Configuration = -1; +static gint ett_gsm_map_om_MDT_Allowed_PLMNId_List = -1; +static gint ett_gsm_map_om_AreaScope = -1; +static gint ett_gsm_map_om_CGI_List = -1; +static gint ett_gsm_map_om_E_UTRAN_CGI_List = -1; +static gint ett_gsm_map_om_RoutingAreaId_List = -1; +static gint ett_gsm_map_om_LocationAreaId_List = -1; +static gint ett_gsm_map_om_TrackingAreaId_List = -1; +static gint ett_gsm_map_om_TraceDepthList = -1; +static gint ett_gsm_map_om_TraceNE_TypeList = -1; +static gint ett_gsm_map_om_TraceInterfaceList = -1; +static gint ett_gsm_map_om_MSC_S_InterfaceList = -1; +static gint ett_gsm_map_om_MGW_InterfaceList = -1; +static gint ett_gsm_map_om_SGSN_InterfaceList = -1; +static gint ett_gsm_map_om_GGSN_InterfaceList = -1; +static gint ett_gsm_map_om_RNC_InterfaceList = -1; +static gint ett_gsm_map_om_BMSC_InterfaceList = -1; +static gint ett_gsm_map_om_MME_InterfaceList = -1; +static gint ett_gsm_map_om_SGW_InterfaceList = -1; +static gint ett_gsm_map_om_PGW_InterfaceList = -1; +static gint ett_gsm_map_om_ENB_InterfaceList = -1; +static gint ett_gsm_map_om_TraceEventList = -1; +static gint ett_gsm_map_om_MSC_S_EventList = -1; +static gint ett_gsm_map_om_MGW_EventList = -1; +static gint ett_gsm_map_om_SGSN_EventList = -1; +static gint ett_gsm_map_om_GGSN_EventList = -1; +static gint ett_gsm_map_om_BMSC_EventList = -1; +static gint ett_gsm_map_om_MME_EventList = -1; +static gint ett_gsm_map_om_SGW_EventList = -1; +static gint ett_gsm_map_om_PGW_EventList = -1; +static gint ett_gsm_map_om_TracePropagationList = -1; +static gint ett_gsm_map_om_ActivateTraceModeRes = -1; +static gint ett_gsm_map_om_DeactivateTraceModeArg = -1; +static gint ett_gsm_map_om_DeactivateTraceModeRes = -1; + +/* --- Module MAP-MS-DataTypes --- --- --- */ + +static gint ett_gsm_map_ms_UpdateLocationArg = -1; +static gint ett_gsm_map_ms_VLR_Capability = -1; +static gint ett_gsm_map_ms_SupportedRAT_Types = -1; +static gint ett_gsm_map_ms_SuperChargerInfo = -1; +static gint ett_gsm_map_ms_SupportedLCS_CapabilitySets = -1; +static gint ett_gsm_map_ms_UpdateLocationRes = -1; +static gint ett_gsm_map_ms_ADD_Info = -1; +static gint ett_gsm_map_ms_PagingArea = -1; +static gint ett_gsm_map_ms_LocationArea = -1; +static gint ett_gsm_map_ms_CancelLocationArg_U = -1; +static gint ett_gsm_map_ms_CancelLocationRes = -1; +static gint ett_gsm_map_ms_PurgeMS_Arg_U = -1; +static gint ett_gsm_map_ms_PurgeMS_Res = -1; +static gint ett_gsm_map_ms_SendIdentificationArg = -1; +static gint ett_gsm_map_ms_SendIdentificationRes_U = -1; +static gint ett_gsm_map_ms_AuthenticationSetList = -1; +static gint ett_gsm_map_ms_TripletList = -1; +static gint ett_gsm_map_ms_QuintupletList = -1; +static gint ett_gsm_map_ms_AuthenticationTriplet = -1; +static gint ett_gsm_map_ms_AuthenticationQuintuplet = -1; +static gint ett_gsm_map_ms_CurrentSecurityContext = -1; +static gint ett_gsm_map_ms_GSM_SecurityContextData = -1; +static gint ett_gsm_map_ms_UMTS_SecurityContextData = -1; +static gint ett_gsm_map_ms_AuthenticationFailureReportArg = -1; +static gint ett_gsm_map_ms_AuthenticationFailureReportRes = -1; +static gint ett_gsm_map_ms_UpdateGprsLocationArg = -1; +static gint ett_gsm_map_ms_EPS_Info = -1; +static gint ett_gsm_map_ms_PDN_GW_Update = -1; +static gint ett_gsm_map_ms_ISR_Information = -1; +static gint ett_gsm_map_ms_SGSN_Capability = -1; +static gint ett_gsm_map_ms_SupportedFeatures = -1; +static gint ett_gsm_map_ms_Ext_SupportedFeatures = -1; +static gint ett_gsm_map_ms_UpdateGprsLocationRes = -1; +static gint ett_gsm_map_ms_EPLMN_List = -1; +static gint ett_gsm_map_ms_AdjacentPLMN_List = -1; +static gint ett_gsm_map_ms_ForwardAccessSignalling_Arg_U = -1; +static gint ett_gsm_map_ms_AllowedUMTS_Algorithms = -1; +static gint ett_gsm_map_ms_PrepareHO_Arg_U = -1; +static gint ett_gsm_map_ms_LCLS_Negotiation = -1; +static gint ett_gsm_map_ms_LCLS_ConfigurationPreference = -1; +static gint ett_gsm_map_ms_BSSMAP_ServiceHandoverList = -1; +static gint ett_gsm_map_ms_BSSMAP_ServiceHandoverInfo = -1; +static gint ett_gsm_map_ms_RadioResourceList = -1; +static gint ett_gsm_map_ms_RadioResource = -1; +static gint ett_gsm_map_ms_PrepareHO_Res_U = -1; +static gint ett_gsm_map_ms_SelectedUMTS_Algorithms = -1; +static gint ett_gsm_map_ms_ChosenRadioResourceInformation = -1; +static gint ett_gsm_map_ms_PrepareSubsequentHO_Arg_U = -1; +static gint ett_gsm_map_ms_PrepareSubsequentHO_Res_U = -1; +static gint ett_gsm_map_ms_ProcessAccessSignalling_Arg_U = -1; +static gint ett_gsm_map_ms_AoIPCodecsList = -1; +static gint ett_gsm_map_ms_SupportedCodecsList = -1; +static gint ett_gsm_map_ms_CodecList = -1; +static gint ett_gsm_map_ms_SendEndSignal_Arg_U = -1; +static gint ett_gsm_map_ms_SendEndSignal_Res = -1; +static gint ett_gsm_map_ms_RelocationNumberList = -1; +static gint ett_gsm_map_ms_RelocationNumber = -1; +static gint ett_gsm_map_ms_SendAuthenticationInfoArg = -1; +static gint ett_gsm_map_ms_Re_synchronisationInfo = -1; +static gint ett_gsm_map_ms_SendAuthenticationInfoRes_U = -1; +static gint ett_gsm_map_ms_EPS_AuthenticationSetList = -1; +static gint ett_gsm_map_ms_EPC_AV = -1; +static gint ett_gsm_map_ms_CheckIMEI_Arg = -1; +static gint ett_gsm_map_ms_CheckIMEI_Res = -1; +static gint ett_gsm_map_ms_RequestedEquipmentInfo = -1; +static gint ett_gsm_map_ms_UESBI_Iu = -1; +static gint ett_gsm_map_ms_InsertSubscriberDataArg = -1; +static gint ett_gsm_map_ms_EDRX_Cycle_Length_List = -1; +static gint ett_gsm_map_ms_EDRX_Cycle_Length = -1; +static gint ett_gsm_map_ms_Reset_Id_List = -1; +static gint ett_gsm_map_ms_IMSI_GroupIdList = -1; +static gint ett_gsm_map_ms_IMSI_GroupId = -1; +static gint ett_gsm_map_ms_CSG_SubscriptionDataList = -1; +static gint ett_gsm_map_ms_CSG_SubscriptionData = -1; +static gint ett_gsm_map_ms_VPLMN_CSG_SubscriptionDataList = -1; +static gint ett_gsm_map_ms_LIPA_AllowedAPNList = -1; +static gint ett_gsm_map_ms_EPS_SubscriptionData = -1; +static gint ett_gsm_map_ms_APN_ConfigurationProfile = -1; +static gint ett_gsm_map_ms_EPS_DataList = -1; +static gint ett_gsm_map_ms_APN_Configuration = -1; +static gint ett_gsm_map_ms_EPS_QoS_Subscribed = -1; +static gint ett_gsm_map_ms_AMBR = -1; +static gint ett_gsm_map_ms_SpecificAPNInfoList = -1; +static gint ett_gsm_map_ms_SpecificAPNInfo = -1; +static gint ett_gsm_map_ms_Allocation_Retention_Priority = -1; +static gint ett_gsm_map_ms_PDN_GW_Identity = -1; +static gint ett_gsm_map_ms_WLAN_Offloadability = -1; +static gint ett_gsm_map_ms_AccessRestrictionData = -1; +static gint ett_gsm_map_ms_Ext_AccessRestrictionData = -1; +static gint ett_gsm_map_ms_AdjacentAccessRestrictionDataList = -1; +static gint ett_gsm_map_ms_AdjacentAccessRestrictionData = -1; +static gint ett_gsm_map_ms_LCSInformation = -1; +static gint ett_gsm_map_ms_GMLC_List = -1; +static gint ett_gsm_map_ms_GPRSDataList = -1; +static gint ett_gsm_map_ms_PDP_Context = -1; +static gint ett_gsm_map_ms_GPRSSubscriptionData = -1; +static gint ett_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo = -1; +static gint ett_gsm_map_ms_GPRS_CSI = -1; +static gint ett_gsm_map_ms_GPRS_CamelTDPDataList = -1; +static gint ett_gsm_map_ms_GPRS_CamelTDPData = -1; +static gint ett_gsm_map_ms_LSADataList = -1; +static gint ett_gsm_map_ms_LSAData = -1; +static gint ett_gsm_map_ms_LSAInformation = -1; +static gint ett_gsm_map_ms_SubscriberData = -1; +static gint ett_gsm_map_ms_BearerServiceList = -1; +static gint ett_gsm_map_ms_TeleserviceList = -1; +static gint ett_gsm_map_ms_ODB_Data = -1; +static gint ett_gsm_map_ms_ODB_GeneralData = -1; +static gint ett_gsm_map_ms_ODB_HPLMN_Data = -1; +static gint ett_gsm_map_ms_Ext_SS_InfoList = -1; +static gint ett_gsm_map_ms_Ext_SS_Info = -1; +static gint ett_gsm_map_ms_Ext_ForwInfo = -1; +static gint ett_gsm_map_ms_Ext_ForwFeatureList = -1; +static gint ett_gsm_map_ms_Ext_ForwFeature = -1; +static gint ett_gsm_map_ms_Ext_CallBarInfo = -1; +static gint ett_gsm_map_ms_Ext_CallBarFeatureList = -1; +static gint ett_gsm_map_ms_Ext_CallBarringFeature = -1; +static gint ett_gsm_map_ms_CUG_Info = -1; +static gint ett_gsm_map_ms_CUG_SubscriptionList = -1; +static gint ett_gsm_map_ms_CUG_Subscription = -1; +static gint ett_gsm_map_ms_CUG_FeatureList = -1; +static gint ett_gsm_map_ms_Ext_BasicServiceGroupList = -1; +static gint ett_gsm_map_ms_CUG_Feature = -1; +static gint ett_gsm_map_ms_Ext_SS_Data = -1; +static gint ett_gsm_map_ms_LCS_PrivacyExceptionList = -1; +static gint ett_gsm_map_ms_LCS_PrivacyClass = -1; +static gint ett_gsm_map_ms_ExternalClientList = -1; +static gint ett_gsm_map_ms_PLMNClientList = -1; +static gint ett_gsm_map_ms_Ext_ExternalClientList = -1; +static gint ett_gsm_map_ms_ExternalClient = -1; +static gint ett_gsm_map_ms_ServiceTypeList = -1; +static gint ett_gsm_map_ms_ServiceType = -1; +static gint ett_gsm_map_ms_MOLR_List = -1; +static gint ett_gsm_map_ms_MOLR_Class = -1; +static gint ett_gsm_map_ms_ZoneCodeList = -1; +static gint ett_gsm_map_ms_InsertSubscriberDataRes = -1; +static gint ett_gsm_map_ms_DeleteSubscriberDataArg = -1; +static gint ett_gsm_map_ms_SpecificCSI_Withdraw = -1; +static gint ett_gsm_map_ms_GPRSSubscriptionDataWithdraw = -1; +static gint ett_gsm_map_ms_EPS_SubscriptionDataWithdraw = -1; +static gint ett_gsm_map_ms_ContextIdList = -1; +static gint ett_gsm_map_ms_LSAInformationWithdraw = -1; +static gint ett_gsm_map_ms_LSAIdentityList = -1; +static gint ett_gsm_map_ms_BasicServiceList = -1; +static gint ett_gsm_map_ms_DeleteSubscriberDataRes = -1; +static gint ett_gsm_map_ms_VlrCamelSubscriptionInfo = -1; +static gint ett_gsm_map_ms_MT_smsCAMELTDP_CriteriaList = -1; +static gint ett_gsm_map_ms_MT_smsCAMELTDP_Criteria = -1; +static gint ett_gsm_map_ms_TPDU_TypeCriterion = -1; +static gint ett_gsm_map_ms_D_CSI = -1; +static gint ett_gsm_map_ms_DP_AnalysedInfoCriteriaList = -1; +static gint ett_gsm_map_ms_DP_AnalysedInfoCriterium = -1; +static gint ett_gsm_map_ms_SS_CSI = -1; +static gint ett_gsm_map_ms_SS_CamelData = -1; +static gint ett_gsm_map_ms_SS_EventList = -1; +static gint ett_gsm_map_ms_O_CSI = -1; +static gint ett_gsm_map_ms_O_BcsmCamelTDPDataList = -1; +static gint ett_gsm_map_ms_O_BcsmCamelTDPData = -1; +static gint ett_gsm_map_ms_O_BcsmCamelTDPCriteriaList = -1; +static gint ett_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList = -1; +static gint ett_gsm_map_ms_O_BcsmCamelTDP_Criteria = -1; +static gint ett_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria = -1; +static gint ett_gsm_map_ms_DestinationNumberCriteria = -1; +static gint ett_gsm_map_ms_DestinationNumberList = -1; +static gint ett_gsm_map_ms_DestinationNumberLengthList = -1; +static gint ett_gsm_map_ms_BasicServiceCriteria = -1; +static gint ett_gsm_map_ms_O_CauseValueCriteria = -1; +static gint ett_gsm_map_ms_T_CauseValueCriteria = -1; +static gint ett_gsm_map_ms_SupportedCamelPhases = -1; +static gint ett_gsm_map_ms_OfferedCamel4CSIs = -1; +static gint ett_gsm_map_ms_OfferedCamel4Functionalities = -1; +static gint ett_gsm_map_ms_SMS_CSI = -1; +static gint ett_gsm_map_ms_SMS_CAMEL_TDP_DataList = -1; +static gint ett_gsm_map_ms_SMS_CAMEL_TDP_Data = -1; +static gint ett_gsm_map_ms_M_CSI = -1; +static gint ett_gsm_map_ms_MG_CSI = -1; +static gint ett_gsm_map_ms_MobilityTriggers = -1; +static gint ett_gsm_map_ms_T_CSI = -1; +static gint ett_gsm_map_ms_T_BcsmCamelTDPDataList = -1; +static gint ett_gsm_map_ms_T_BcsmCamelTDPData = -1; +static gint ett_gsm_map_ms_SendRoutingInfoForGprsArg = -1; +static gint ett_gsm_map_ms_SendRoutingInfoForGprsRes = -1; +static gint ett_gsm_map_ms_FailureReportArg = -1; +static gint ett_gsm_map_ms_FailureReportRes = -1; +static gint ett_gsm_map_ms_NoteMsPresentForGprsArg = -1; +static gint ett_gsm_map_ms_NoteMsPresentForGprsRes = -1; +static gint ett_gsm_map_ms_ResetArg = -1; +static gint ett_gsm_map_ms_SendingNode_Number = -1; +static gint ett_gsm_map_ms_RestoreDataArg = -1; +static gint ett_gsm_map_ms_RestoreDataRes = -1; +static gint ett_gsm_map_ms_VBSDataList = -1; +static gint ett_gsm_map_ms_VGCSDataList = -1; +static gint ett_gsm_map_ms_VoiceGroupCallData = -1; +static gint ett_gsm_map_ms_AdditionalSubscriptions = -1; +static gint ett_gsm_map_ms_VoiceBroadcastData = -1; +static gint ett_gsm_map_ms_ProvideSubscriberInfoArg = -1; +static gint ett_gsm_map_ms_ProvideSubscriberInfoRes = -1; +static gint ett_gsm_map_ms_SubscriberInfo = -1; +static gint ett_gsm_map_ms_MNPInfoRes = -1; +static gint ett_gsm_map_ms_GPRSMSClass = -1; +static gint ett_gsm_map_ms_RequestedInfo = -1; +static gint ett_gsm_map_ms_RequestedNodes = -1; +static gint ett_gsm_map_ms_LocationInformation = -1; +static gint ett_gsm_map_ms_LocationInformationEPS = -1; +static gint ett_gsm_map_ms_LocationInformationGPRS = -1; +static gint ett_gsm_map_ms_LocationInformation5GS = -1; +static gint ett_gsm_map_ms_UserCSGInformation = -1; +static gint ett_gsm_map_ms_SubscriberState = -1; +static gint ett_gsm_map_ms_PS_SubscriberState = -1; +static gint ett_gsm_map_ms_PDP_ContextInfoList = -1; +static gint ett_gsm_map_ms_PDP_ContextInfo = -1; +static gint ett_gsm_map_ms_AnyTimeInterrogationArg = -1; +static gint ett_gsm_map_ms_AnyTimeInterrogationRes = -1; +static gint ett_gsm_map_ms_AnyTimeSubscriptionInterrogationArg = -1; +static gint ett_gsm_map_ms_AnyTimeSubscriptionInterrogationRes = -1; +static gint ett_gsm_map_ms_CallWaitingData = -1; +static gint ett_gsm_map_ms_Ext_CwFeatureList = -1; +static gint ett_gsm_map_ms_Ext_CwFeature = -1; +static gint ett_gsm_map_ms_ClipData = -1; +static gint ett_gsm_map_ms_ClirData = -1; +static gint ett_gsm_map_ms_CallHoldData = -1; +static gint ett_gsm_map_ms_EctData = -1; +static gint ett_gsm_map_ms_RequestedSubscriptionInfo = -1; +static gint ett_gsm_map_ms_MSISDN_BS_List = -1; +static gint ett_gsm_map_ms_MSISDN_BS = -1; +static gint ett_gsm_map_ms_CallForwardingData = -1; +static gint ett_gsm_map_ms_CallBarringData = -1; +static gint ett_gsm_map_ms_ODB_Info = -1; +static gint ett_gsm_map_ms_CAMEL_SubscriptionInfo = -1; +static gint ett_gsm_map_ms_AnyTimeModificationArg = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CW_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CH_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_ECT_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CLIR_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CLIP_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CSG = -1; +static gint ett_gsm_map_ms_RequestedServingNode = -1; +static gint ett_gsm_map_ms_ServingNode = -1; +static gint ett_gsm_map_ms_AnyTimeModificationRes = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CF_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CB_Info = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_ODB_data = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_CSI = -1; +static gint ett_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data = -1; +static gint ett_gsm_map_ms_NoteSubscriberDataModifiedArg = -1; +static gint ett_gsm_map_ms_NoteSubscriberDataModifiedRes = -1; +static gint ett_gsm_map_ms_NoteMM_EventArg = -1; +static gint ett_gsm_map_ms_NoteMM_EventRes = -1; +static gint ett_gsm_map_ms_Ext_SS_InfoFor_CSE = -1; +static gint ett_gsm_map_ms_Ext_ForwardingInfoFor_CSE = -1; +static gint ett_gsm_map_ms_Ext_CallBarringInfoFor_CSE = -1; +static gint ett_gsm_map_ms_UpdateVcsgLocationArg = -1; +static gint ett_gsm_map_ms_UpdateVcsgLocationRes = -1; +static gint ett_gsm_map_ms_CancelVcsgLocationArg = -1; +static gint ett_gsm_map_ms_CancelVcsgLocationRes = -1; + +/* --- Module MAP-CH-DataTypes --- --- --- */ + +static gint ett_gsm_map_ch_CUG_CheckInfo = -1; +static gint ett_gsm_map_ch_SendRoutingInfoArg = -1; +static gint ett_gsm_map_ch_SuppressMTSS = -1; +static gint ett_gsm_map_ch_SendRoutingInfoRes_U = -1; +static gint ett_gsm_map_ch_AllowedServices = -1; +static gint ett_gsm_map_ch_CCBS_Indicators = -1; +static gint ett_gsm_map_ch_RoutingInfo = -1; +static gint ett_gsm_map_ch_ForwardingData = -1; +static gint ett_gsm_map_ch_ProvideRoamingNumberArg = -1; +static gint ett_gsm_map_ch_ProvideRoamingNumberRes = -1; +static gint ett_gsm_map_ch_ResumeCallHandlingArg = -1; +static gint ett_gsm_map_ch_UU_Data = -1; +static gint ett_gsm_map_ch_ResumeCallHandlingRes = -1; +static gint ett_gsm_map_ch_CamelInfo = -1; +static gint ett_gsm_map_ch_ExtendedRoutingInfo = -1; +static gint ett_gsm_map_ch_CamelRoutingInfo = -1; +static gint ett_gsm_map_ch_GmscCamelSubscriptionInfo = -1; +static gint ett_gsm_map_ch_SetReportingStateArg = -1; +static gint ett_gsm_map_ch_SetReportingStateRes = -1; +static gint ett_gsm_map_ch_StatusReportArg = -1; +static gint ett_gsm_map_ch_EventReportData = -1; +static gint ett_gsm_map_ch_CallReportData = -1; +static gint ett_gsm_map_ch_StatusReportRes = -1; +static gint ett_gsm_map_ch_RemoteUserFreeArg = -1; +static gint ett_gsm_map_ch_RemoteUserFreeRes = -1; +static gint ett_gsm_map_ch_IST_AlertArg = -1; +static gint ett_gsm_map_ch_IST_AlertRes = -1; +static gint ett_gsm_map_ch_IST_CommandArg = -1; +static gint ett_gsm_map_ch_IST_CommandRes = -1; +static gint ett_gsm_map_ch_ReleaseResourcesArg = -1; +static gint ett_gsm_map_ch_ReleaseResourcesRes = -1; + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + +static gint ett_gsm_map_lcs_RoutingInfoForLCS_Arg = -1; +static gint ett_gsm_map_lcs_RoutingInfoForLCS_Res = -1; +static gint ett_gsm_map_lcs_LCSLocationInfo = -1; +static gint ett_gsm_map_lcs_ProvideSubscriberLocation_Arg = -1; +static gint ett_gsm_map_lcs_LocationType = -1; +static gint ett_gsm_map_lcs_DeferredLocationEventType = -1; +static gint ett_gsm_map_lcs_LCS_ClientID = -1; +static gint ett_gsm_map_lcs_LCSClientName = -1; +static gint ett_gsm_map_lcs_LCSRequestorID = -1; +static gint ett_gsm_map_lcs_LCS_QoS = -1; +static gint ett_gsm_map_lcs_ResponseTime = -1; +static gint ett_gsm_map_lcs_SupportedGADShapes = -1; +static gint ett_gsm_map_lcs_LCSCodeword = -1; +static gint ett_gsm_map_lcs_LCS_PrivacyCheck = -1; +static gint ett_gsm_map_lcs_AreaEventInfo = -1; +static gint ett_gsm_map_lcs_AreaDefinition = -1; +static gint ett_gsm_map_lcs_AreaList = -1; +static gint ett_gsm_map_lcs_Area = -1; +static gint ett_gsm_map_lcs_PeriodicLDRInfo = -1; +static gint ett_gsm_map_lcs_ReportingPLMNList = -1; +static gint ett_gsm_map_lcs_PLMNList = -1; +static gint ett_gsm_map_lcs_ReportingPLMN = -1; +static gint ett_gsm_map_lcs_ProvideSubscriberLocation_Res = -1; +static gint ett_gsm_map_lcs_SubscriberLocationReport_Arg = -1; +static gint ett_gsm_map_lcs_Deferredmt_lrData = -1; +static gint ett_gsm_map_lcs_ServingNodeAddress = -1; +static gint ett_gsm_map_lcs_SubscriberLocationReport_Res = -1; + +/* --- Module MAP-GR-DataTypes --- --- --- */ + +static gint ett_gsm_map_gr_PrepareGroupCallArg = -1; +static gint ett_gsm_map_gr_PrepareGroupCallRes = -1; +static gint ett_gsm_map_gr_SendGroupCallEndSignalArg = -1; +static gint ett_gsm_map_gr_SendGroupCallEndSignalRes = -1; +static gint ett_gsm_map_gr_ForwardGroupCallSignallingArg = -1; +static gint ett_gsm_map_gr_ProcessGroupCallSignallingArg = -1; +static gint ett_gsm_map_gr_StateAttributes = -1; +static gint ett_gsm_map_gr_SendGroupCallInfoArg = -1; +static gint ett_gsm_map_gr_SendGroupCallInfoRes = -1; + +/* --- Module MAP-DialogueInformation --- --- --- */ + +static gint ett_gsm_map_dialogue_MAP_DialoguePDU = -1; +static gint ett_gsm_map_dialogue_MAP_OpenInfo = -1; +static gint ett_gsm_map_dialogue_MAP_AcceptInfo = -1; +static gint ett_gsm_map_dialogue_MAP_CloseInfo = -1; +static gint ett_gsm_map_dialogue_MAP_RefuseInfo = -1; +static gint ett_gsm_map_dialogue_MAP_UserAbortInfo = -1; +static gint ett_gsm_map_dialogue_MAP_UserAbortChoice = -1; +static gint ett_gsm_map_dialogue_MAP_ProviderAbortInfo = -1; + +/* --- Module MAP-LocationServiceOperations --- --- --- */ + + +/* --- Module MAP-Group-Call-Operations --- --- --- */ + + +/* --- Module MAP-ShortMessageServiceOperations --- --- --- */ + + +/* --- Module MAP-SupplementaryServiceOperations --- --- --- */ + + +/* --- Module MAP-CallHandlingOperations --- --- --- */ + + +/* --- Module MAP-OperationAndMaintenanceOperations --- --- --- */ + + +/* --- Module MAP-MobileServiceOperations --- --- --- */ + + +/* --- Module MAP-Errors --- --- --- */ + + +/* --- Module MAP-Protocol --- --- --- */ + + +/* --- Module DummyMAP --- --- --- */ + +static gint ett_gsm_old_Component = -1; +static gint ett_gsm_old_Invoke = -1; +static gint ett_gsm_old_ReturnResult = -1; +static gint ett_gsm_old_T_resultretres = -1; +static gint ett_gsm_old_ReturnError = -1; +static gint ett_gsm_old_Reject = -1; +static gint ett_gsm_old_T_invokeIDRej = -1; +static gint ett_gsm_old_T_problem = -1; +static gint ett_gsm_old_MAP_OPERATION = -1; +static gint ett_gsm_old_MAP_ERROR = -1; +static gint ett_gsm_old_Bss_APDU = -1; +static gint ett_gsm_old_ProvideSIWFSNumberArg = -1; +static gint ett_gsm_old_ProvideSIWFSNumberRes = -1; +static gint ett_gsm_old_PurgeMSArgV2 = -1; +static gint ett_gsm_old_PrepareHO_ArgOld = -1; +static gint ett_gsm_old_PrepareHO_ResOld = -1; +static gint ett_gsm_old_SendAuthenticationInfoResOld = -1; +static gint ett_gsm_old_SendAuthenticationInfoResOld_item = -1; +static gint ett_gsm_old_SendIdentificationResV2 = -1; +static gint ett_gsm_old_TripletListold = -1; +static gint ett_gsm_old_AuthenticationTriplet_v2 = -1; +static gint ett_gsm_old_SIWFSSignallingModifyArg = -1; +static gint ett_gsm_old_SIWFSSignallingModifyRes = -1; +static gint ett_gsm_old_SecureTransportArg = -1; +static gint ett_gsm_old_SecureTransportErrorParam = -1; +static gint ett_gsm_old_SecureTransportRes = -1; +static gint ett_gsm_old_SecurityHeader = -1; +static gint ett_gsm_old_OriginalComponentIdentifier = -1; +static gint ett_gsm_old_OperationCode = -1; +static gint ett_gsm_old_ErrorCode = -1; +static gint ett_gsm_old_PlmnContainer_U = -1; +static gint ett_gsm_old_T_operatorSS_Code = -1; +static gint ett_gsm_old_ForwardSM_Arg = -1; +static gint ett_gsm_old_SM_RP_DAold = -1; +static gint ett_gsm_old_SM_RP_OAold = -1; +static gint ett_gsm_old_SendRoutingInfoArgV2 = -1; +static gint ett_gsm_old_SendRoutingInfoResV2 = -1; +static gint ett_gsm_old_BeginSubscriberActivityArg = -1; +static gint ett_gsm_old_RoutingInfoForSM_ArgV1 = -1; +static gint ett_gsm_old_RoutingInfoForSM_ResV2 = -1; +static gint ett_gsm_old_LocationInfoWithLMSIv2 = -1; +static gint ett_gsm_old_LocationInfo = -1; +static gint ett_gsm_old_SendParametersArg = -1; +static gint ett_gsm_old_RequestParameterList = -1; +static gint ett_gsm_old_SentParameter = -1; +static gint ett_gsm_old_AuthenticationSetListOld = -1; +static gint ett_gsm_old_SentParameterList = -1; +static gint ett_gsm_old_ResetArgV1 = -1; + +/* --- Module SS-DataTypes --- --- --- */ + +static gint ett_gsm_ss_NotifySS_Arg = -1; +static gint ett_gsm_ss_ForwardChargeAdviceArg = -1; +static gint ett_gsm_ss_ChargingInformation = -1; +static gint ett_gsm_ss_ForwardCUG_InfoArg = -1; +static gint ett_gsm_ss_ECT_Indicator = -1; +static gint ett_gsm_ss_NameIndicator = -1; +static gint ett_gsm_ss_Name = -1; +static gint ett_gsm_ss_NameSet = -1; +static gint ett_gsm_ss_RDN = -1; +static gint ett_gsm_ss_RemotePartyNumber = -1; +static gint ett_gsm_ss_AccessRegisterCCEntryArg = -1; +static gint ett_gsm_ss_CallDeflectionArg = -1; +static gint ett_gsm_ss_UserUserServiceArg = -1; +static gint ett_gsm_ss_LocationNotificationArg = -1; +static gint ett_gsm_ss_DeferredLocationExt = -1; +static gint ett_gsm_ss_LocationNotificationRes = -1; +static gint ett_gsm_ss_LCS_MOLRArg = -1; +static gint ett_gsm_ss_MultiplePositioningProtocolPDUs = -1; +static gint ett_gsm_ss_LCS_MOLRRes = -1; +static gint ett_gsm_ss_LCS_AreaEventRequestArg = -1; +static gint ett_gsm_ss_LCS_AreaEventReportArg = -1; +static gint ett_gsm_ss_LCS_AreaEventCancellationArg = -1; +static gint ett_gsm_ss_LCS_PeriodicLocationRequestArg = -1; +static gint ett_gsm_ss_LCS_PeriodicLocationRequestRes = -1; +static gint ett_gsm_ss_LCS_LocationUpdateArg = -1; +static gint ett_gsm_ss_LCS_LocationUpdateRes = -1; +static gint ett_gsm_ss_LCS_PeriodicLocationCancellationArg = -1; +static gint ett_gsm_ss_LCS_PeriodicTriggeredInvokeArg = -1; +static gint ett_gsm_ss_PeriodicLocation = -1; +static gint ett_gsm_ss_AreaEventReporting = -1; +static gint ett_gsm_ss_AreaList = -1; +static gint ett_gsm_ss_Area = -1; +static gint ett_gsm_ss_Location_Info = -1; +static gint ett_gsm_ss_MotionEventReporting = -1; +static gint ett_gsm_ss_LCS_PeriodicTriggeredInvokeRes = -1; + +/* --- Module SS-Operations --- --- --- */ + + +/* --- Module EricssonMAP --- --- --- */ + +static gint ett_gsm_map_ericsson_EnhancedCheckIMEI_Arg = -1; +static gint ett_gsm_map_ericsson_ExtensionType = -1; +static gint ett_gsm_map_ericsson_IsdArgType = -1; +static gint ett_gsm_map_ericsson_IsdArgData = -1; +static gint ett_gsm_map_ericsson_PrivateFeatureData = -1; +static gint ett_gsm_map_ericsson_OickInfo = -1; +static gint ett_gsm_map_ericsson_SubscriptionTypeInfo = -1; +static gint ett_gsm_map_ericsson_IsdResType = -1; +static gint ett_gsm_map_ericsson_IsdResData = -1; +static gint ett_gsm_map_ericsson_DsdArgType = -1; +static gint ett_gsm_map_ericsson_DsdArgData = -1; +static gint ett_gsm_map_ericsson_SRIArgType = -1; +static gint ett_gsm_map_ericsson_SriArgData = -1; +static gint ett_gsm_map_ericsson_SRIResType = -1; +static gint ett_gsm_map_ericsson_SriResData = -1; +static gint ett_gsm_map_ericsson_PrnArgType = -1; +static gint ett_gsm_map_ericsson_PrnArgData = -1; +static gint ett_gsm_map_ericsson_UlArgType = -1; +static gint ett_gsm_map_ericsson_UlArgData = -1; +static gint ett_gsm_map_ericsson_PrivateFeatureUlArgData = -1; +static gint ett_gsm_map_ericsson_ExtraSignalInfo_U = -1; +static gint ett_gsm_map_ericsson_SaiArgType = -1; +static gint ett_gsm_map_ericsson_SaiResType = -1; +static gint ett_gsm_map_ericsson_AtiArgType = -1; +static gint ett_gsm_map_ericsson_AtiResType = -1; +static gint ett_gsm_map_ericsson_RdArgType = -1; +static gint ett_gsm_map_ericsson_RequestedInfoType = -1; +static gint ett_gsm_map_ericsson_ExtAtiArgType = -1; +static gint ett_gsm_map_ericsson_AtiArgData = -1; + +/* --- Module NokiaMAP-Extensions --- --- --- */ + +static gint ett_NokiaMAP_Extensions_IsdArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_DsdArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_UlResExt_U = -1; +static gint ett_NokiaMAP_Extensions_ChargingAreaList = -1; +static gint ett_NokiaMAP_Extensions_RegionalChargingData = -1; +static gint ett_NokiaMAP_Extensions_SS_DataExtension_U = -1; +static gint ett_NokiaMAP_Extensions_SriExtension_U = -1; +static gint ett_NokiaMAP_Extensions_ExtraSignalInfo_U = -1; +static gint ett_NokiaMAP_Extensions_Nokia_CUG_Data = -1; +static gint ett_NokiaMAP_Extensions_SriResExtension_U = -1; +static gint ett_NokiaMAP_Extensions_RgData = -1; +static gint ett_NokiaMAP_Extensions_MemberList = -1; +static gint ett_NokiaMAP_Extensions_CanLocArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_ATMargExt_U = -1; +static gint ett_NokiaMAP_Extensions_OlcmInfoTable = -1; +static gint ett_NokiaMAP_Extensions_OlcmInfo = -1; +static gint ett_NokiaMAP_Extensions_ATMresExt_U = -1; +static gint ett_NokiaMAP_Extensions_DTMargExt_U = -1; +static gint ett_NokiaMAP_Extensions_FraudInfo = -1; +static gint ett_NokiaMAP_Extensions_FraudData = -1; +static gint ett_NokiaMAP_Extensions_ServiceWithInfo = -1; +static gint ett_NokiaMAP_Extensions_ServiceListWithInfo = -1; +static gint ett_NokiaMAP_Extensions_INKey = -1; +static gint ett_NokiaMAP_Extensions_MKey = -1; +static gint ett_NokiaMAP_Extensions_SMSKey = -1; +static gint ett_NokiaMAP_Extensions_HO_Ext_U = -1; +static gint ett_NokiaMAP_Extensions_CodecListExt = -1; +static gint ett_NokiaMAP_Extensions_SelectedCodec = -1; +static gint ett_NokiaMAP_Extensions_AbsentSubscriberExt_U = -1; +static gint ett_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U = -1; +static gint ett_NokiaMAP_Extensions_RoutingCategoryExt_U = -1; +static gint ett_NokiaMAP_Extensions_SriForSMArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_ReportSMDelStatArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_UdlArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_RoamNotAllowedExt_U = -1; +static gint ett_NokiaMAP_Extensions_AnyTimeModArgExt_U = -1; +static gint ett_NokiaMAP_Extensions_AccessTypeExt = -1; +static gint ett_NokiaMAP_Extensions_AccessSubscriptionListExt = -1; +static gint ett_NokiaMAP_Extensions_AllowedServiceData = -1; + +static expert_field ei_gsm_map_unknown_sequence3 = EI_INIT; +static expert_field ei_gsm_map_unknown_sequence = EI_INIT; +static expert_field ei_gsm_map_unknown_parameter = EI_INIT; +static expert_field ei_gsm_map_unknown_invokeData = EI_INIT; +static expert_field ei_gsm_map_undecoded = EI_INIT; + +static dissector_handle_t gsm_sms_handle; /* SMS TPDU */ +static dissector_handle_t ranap_handle; +static dissector_handle_t dtap_handle; +static dissector_handle_t map_handle; +static dissector_handle_t bssap_handle; +static dissector_table_t map_prop_arg_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_res_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_err_opcode_table; /* prorietary operation codes */ +/* Preferenc settings default */ +#define MAX_SSN 254 +static range_t *global_ssn_range; +#define APPLICATON_CONTEXT_FROM_TRACE 0 +static gint pref_application_context_version = APPLICATON_CONTEXT_FROM_TRACE; +static gboolean pref_ericsson_proprietary_ext = FALSE; + +/* Global variables */ +static guint32 opcode=0; +static guint32 errorCode; +static int application_context_version; +static guint ProtocolId; +static guint AccessNetworkProtocolId; +static int gsm_map_tap = -1; +static guint8 gsmmap_pdu_type = 0; +static guint8 gsm_map_pdu_size = 0; + +#define SMS_ENCODING_NOT_SET 0 +#define SMS_ENCODING_7BIT 1 +#define SMS_ENCODING_8BIT 2 +#define SMS_ENCODING_UCS2 3 +#define SMS_ENCODING_7BIT_LANG 4 +#define SMS_ENCODING_UCS2_LANG 5 + +static guint8 sms_encoding; + +/* Forward declarations */ +static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +const gchar* gsm_map_opr_code(guint32 val, proto_item *item); + +typedef struct { + struct tcap_private_t * tcap_private; + sccp_msg_info_t *sccp_msg_info; + tvbuff_t *signal_info_tvb; +} gsm_map_private_info_t; + +typedef struct { + wmem_tree_t *packets; +} gsm_map_conv_info_t; + +static gsm_map_packet_info_t *gsm_map_get_packet_info(asn1_ctx_t *actx, bool store_conv_info) +{ + gsm_map_packet_info_t *gsm_map_pi = (gsm_map_packet_info_t*)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_gsm_map, 0); + if (!gsm_map_pi) { + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + gsm_map_pi = wmem_new0(wmem_file_scope(), gsm_map_packet_info_t); + p_add_proto_data(wmem_file_scope(), actx->pinfo, proto_gsm_map, 0, gsm_map_pi); + if (gsm_map_priv && gsm_map_priv->tcap_private) { + gsm_map_pi->tcap_src_tid = gsm_map_priv->tcap_private->src_tid; + if (store_conv_info) { + conversation_t *conversation; + gsm_map_conv_info_t *gsm_map_info; + wmem_tree_key_t key[3]; + conversation = find_or_create_conversation(actx->pinfo); + gsm_map_info = (gsm_map_conv_info_t *)conversation_get_proto_data(conversation, proto_gsm_map); + if (!gsm_map_info) { + gsm_map_info = wmem_new(wmem_file_scope(), gsm_map_conv_info_t); + gsm_map_info->packets = wmem_tree_new(wmem_file_scope()); + conversation_add_proto_data(conversation, proto_gsm_map, gsm_map_info); + } + key[0].length = 1; + key[0].key = &gsm_map_priv->tcap_private->src_tid; + key[1].length = 1; + key[1].key = &actx->pinfo->num; + key[2].length = 0; + key[2].key = NULL; + wmem_tree_insert32_array(gsm_map_info->packets, key, (void *)gsm_map_pi); + } + } + } + return gsm_map_pi; +} + +static gsm_map_packet_info_t *gsm_map_get_matching_tcap_info(asn1_ctx_t *actx) +{ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + if (gsm_map_priv && gsm_map_priv->tcap_private) { + conversation_t *conversation; + gsm_map_conv_info_t *gsm_map_info; + wmem_tree_key_t key[3]; + gsm_map_packet_info_t *gsm_map_pi; + conversation = find_or_create_conversation(actx->pinfo); + gsm_map_info = (gsm_map_conv_info_t *)conversation_get_proto_data(conversation, proto_gsm_map); + if (!gsm_map_info) { + gsm_map_info = wmem_new(wmem_file_scope(), gsm_map_conv_info_t); + gsm_map_info->packets = wmem_tree_new(wmem_file_scope()); + conversation_add_proto_data(conversation, proto_gsm_map, gsm_map_info); + } + key[0].length = 1; + key[0].key = &gsm_map_priv->tcap_private->src_tid; + key[1].length = 1; + key[1].key = &actx->pinfo->num; + key[2].length = 0; + key[2].key = NULL; + gsm_map_pi = (gsm_map_packet_info_t*)wmem_tree_lookup32_array_le(gsm_map_info->packets, key); + if (gsm_map_pi && gsm_map_pi->tcap_src_tid == gsm_map_priv->tcap_private->src_tid) + return gsm_map_pi; + } + return NULL; +} + +/* Value strings */ + +const value_string gsm_map_PDP_Type_Organisation_vals[] = { + { 0, "ETSI" }, + { 1, "IETF" }, + { 0, NULL } +}; + +const value_string gsm_map_ietf_defined_pdp_vals[] = { + { 0x21, "IPv4 Address" }, + { 0x57, "IPv6 Address" }, + { 0, NULL } +}; + +const value_string gsm_map_etsi_defined_pdp_vals[] = { + { 1, "PPP" }, + { 0, NULL } +}; + +static const value_string gsm_map_tag_vals[] = { + { 0x4, "Bearer Capability" }, + { 0, NULL } +}; + +static const value_string gsm_map_disc_par_vals[] = { + { 0, "Not Transparent" }, + { 1, "Transparent" }, + { 0, NULL } +}; + +static const value_string gsm_map_ericsson_locationInformation_rat_vals[] = { + { 0x0, "GSM" }, + { 0x1, "UMTS" }, + { 0x2, "LTE" }, + { 0xf, "No information" }, + { 0, NULL } +}; + + +/* returns value in kb/s */ +static guint +gsm_map_calc_bitrate(guint8 value){ + + guint8 granularity; + guint returnvalue; + + if (value == 0xff) + return 0; + + granularity = value >> 6; + returnvalue = value & 0x7f; + switch (granularity){ + case 0: + break; + case 1: + returnvalue = ((returnvalue - 0x40) << 3)+64; + break; + case 2: + returnvalue = (returnvalue << 6)+576; + break; + case 3: + returnvalue = (returnvalue << 6)+576; + break; + } + return returnvalue; + +} + +static void +dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx){ + int offset = 0; + proto_tree *subtree; + guint8 octet; + guint16 value; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext_qos_subscribed); + /* OCTET 1: + Allocation/Retention Priority (This octet encodes each priority level defined in + 23.107 as the binary value of the priority level, declaration in 29.060) + Octets 2-9 are coded according to 3GPP TS 24.008[35] Quality of Service Octets + 6-13. + */ + /* Allocation/Retention Priority */ + proto_tree_add_item(subtree, hf_gsm_map_ext_qos_subscribed_pri, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Quality of Service Octets 6-13.( Octet 2 - 9 Here) */ + + /* Traffic class, octet 6 (see 3GPP TS 23.107) Bits 8 7 6 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_traffic_cls, tvb, offset, 1, ENC_BIG_ENDIAN); + /* Delivery order, octet 6 (see 3GPP TS 23.107) Bits 5 4 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_del_order, tvb, offset, 1, ENC_BIG_ENDIAN); + /* Delivery of erroneous SDUs, octet 6 (see 3GPP TS 23.107) Bits 3 2 1 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_del_of_err_sdu, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Maximum SDU size, octet 7 (see 3GPP TS 23.107) */ + octet = tvb_get_guint8(tvb,offset); + switch (octet){ + case 0: + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet, "Reserved"); + break; + case 0x93: + value = 1502; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + break; + case 0x98: + value = 1510; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + break; + case 0x99: + value = 1532; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + break; + default: + if (octet<0x97){ + value = octet * 10; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + }else{ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet, "0x%x not defined in TS 24.008", octet); + } + } + offset++; + + /* Maximum bit rate for uplink, octet 8 */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, octet, "Reserved" ); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + offset++; + /* Maximum bit rate for downlink, octet 9 (see 3GPP TS 23.107) */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, octet, "Reserved" ); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + offset++; + /* Residual Bit Error Rate (BER), octet 10 (see 3GPP TS 23.107) Bits 8 7 6 5 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_ber, tvb, offset, 1, ENC_BIG_ENDIAN); + /* SDU error ratio, octet 10 (see 3GPP TS 23.107) */ + proto_tree_add_item(subtree, hf_gsm_map_qos_sdu_err_rat, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Transfer delay, octet 11 (See 3GPP TS 23.107) Bits 8 7 6 5 4 3 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_transfer_delay, tvb, offset, 1, ENC_BIG_ENDIAN); + /* Traffic handling priority, octet 11 (see 3GPP TS 23.107) Bits 2 1 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_traff_hdl_pri, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Guaranteed bit rate for uplink, octet 12 (See 3GPP TS 23.107) + Coding is identical to that of Maximum bit rate for uplink. + */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, octet, "Subscribed guaranteed bit rate for uplink/reserved"); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + offset++; + + /* Guaranteed bit rate for downlink, octet 13(See 3GPP TS 23.107) + Coding is identical to that of Maximum bit rate for uplink. + */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, octet, "Subscribed guaranteed bit rate for downlink/reserved"); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + +} + +/* +Ext2-QoS-Subscribed ::= OCTET STRING (SIZE (1..3)) +-- Octets 1-3 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 14-16. +-- If Quality of Service information is structured with 14 octet length, then +-- Octet 1 is coded according to 3GPP TS 24.008 [35] Quality of Service Octet 14. + +*/ + +static const true_false_string gsm_map_qos_signalling_ind_value = { + "Optimised for signalling traffic", + "Not optimised for signalling traffic" +}; +#if 0 +/* Helper function returning the main bitrates in kbps */ +static guint32 +qos_calc_bitrate(guint8 oct) +{ + if (oct <= 0x3f) + return oct; + if (oct <= 0x7f) + return 64 + (oct - 0x40) * 8; + + return 576 + (oct - 0x80) * 64; +} +#endif +/* Helper function returning the extended bitrates in kbps */ +static guint32 +qos_calc_ext_bitrate(guint8 oct) +{ + if (oct <= 0x4a) + return 8600 + oct * 100; + if (oct <= 0xba) + return 16000 + (oct - 0x4a) * 1000; + + return 128000 + (oct - 0xba) * 2000; +} +#if 0 +static guint32 +qos_calc_ext2_bitrate(guint8 oct) +{ + if (oct <= 0x3d) + return (256 + oct * 4); + if (oct <= 0xa1) + return (500 + (oct - 0x3d) * 10); + if (oct <= 0xf6) + return (1500 + (oct - 0xa1) * 100); + + return 10000; +} +#endif +static void +dissect_gsm_map_ext2_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) { + + int offset = 0; + proto_tree *subtree; + const gchar *str; + guint8 oct, tmp_oct; + guint32 temp32; + int length = tvb_reported_length(tvb); + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext2_qos_subscribed); + + /* Ocet 14 */ + oct = tvb_get_guint8(tvb, offset); + proto_tree_add_bits_item(subtree, hf_gsm_map_spare_bits, tvb, (offset << 3), 3, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_qos_signalling_ind, tvb, offset, 1, ENC_BIG_ENDIAN); + + tmp_oct = oct & 7; + if (tmp_oct == 0x01) + str = "speech"; + else + str = "unknown"; + + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_source_stat_desc, tvb, + offset, 1, oct, "%s (%u)", str, tmp_oct); + + offset += 1; + if (length == offset) { + return; + } + + /* Octet 15 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Maximum bit rate for downlink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_bitrate_downl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + + offset += 1; + if (length == offset) { + return; + } + + /* Octet 16 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Guaranteed bit rate for downlink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_guar_bitrate_downl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + +} + +/* +Ext3-QoS-Subscribed ::= OCTET STRING (SIZE (1..2)) +-- Octets 1-2 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 17-18. + +*/ +static void +dissect_gsm_map_ext3_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) { + + int offset = 0; + proto_tree *subtree; + const gchar *str; + guint8 oct; + guint32 temp32; + int length = tvb_reported_length(tvb); + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext3_qos_subscribed); + + /* Maximum bit rate for uplink (extended) Octet 17 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Maximum bit rate for uplink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_bitrate_upl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + + offset += 1; + if (length == offset) { + return; + } + + /* Guaranteed bit rate for uplink (extended) Octet 18 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Guaranteed bit rate for uplink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_guar_bitrate_upl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + + return; +} + +static void +dissect_gsm_map_ext4_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) { + int offset = 0; + proto_tree *subtree; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext3_qos_subscribed); + + proto_tree_add_item(subtree, hf_gsm_map_earp_pvi, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_earp_pl, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_earp_pci, tvb, offset, 1, ENC_BIG_ENDIAN); + +} +#define ELLIPSOID_POINT 0 +#define ELLIPSOID_POINT_WITH_UNCERT_CIRC 1 +#define ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE 3 +#define POLYGON 5 +#define ELLIPSOID_POINT_WITH_ALT 8 +#define ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID 9 +#define ELLIPSOID_ARC 10 +/* +4 3 2 1 +0 0 0 0 Ellipsoid Point +0 0 0 1 Ellipsoid point with uncertainty Circle +0 0 1 1 Ellipsoid point with uncertainty Ellipse +0 1 0 1 Polygon +1 0 0 0 Ellipsoid point with altitude +1 0 0 1 Ellipsoid point with altitude and uncertainty Ellipsoid +1 0 1 0 Ellipsoid Arc +other values reserved for future use +*/ + +/* TS 23 032 Table 2a: Coding of Type of Shape */ +#if 0 +static const value_string type_of_shape_vals[] = { + { ELLIPSOID_POINT, "Ellipsoid Point"}, + { ELLIPSOID_POINT_WITH_UNCERT_CIRC, "Ellipsoid point with uncertainty Circle"}, + { ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE, "Ellipsoid point with uncertainty Ellipse"}, + { POLYGON, "Polygon"}, + { ELLIPSOID_POINT_WITH_ALT, "Ellipsoid point with altitude"}, + { ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID, "Ellipsoid point with altitude and uncertainty Ellipsoid"}, + { ELLIPSOID_ARC, "Ellipsoid Arc"}, + { 0, NULL } +}; + +/* 3GPP TS 23.032 7.3.1 */ +static const value_string sign_of_latitude_vals[] = { + { 0, "North"}, + { 1, "South"}, + { 0, NULL } +}; + +static const value_string dir_of_alt_vals[] = { + { 0, "Altitude expresses height"}, + { 1, "Altitude expresses depth"}, + { 0, NULL } +}; +#endif + +static const value_string gsm_map_cbs_data_coding_scheme_coding_grp_vals[] = { + { 0, "Coding Group 0(Language using the GSM 7 bit default alphabet)" }, + { 1, "Coding Group 1" }, + { 2, "Coding Group 2" }, + { 3, "Coding Group 3" }, + { 4, "General Data Coding indication" }, + { 5, "General Data Coding indication" }, + { 6, "General Data Coding indication" }, + { 7, "General Data Coding indication" }, + { 8, "Reserved" }, + { 9, "Message with User Data Header (UDH) structure" }, + { 10,"Reserved" }, + { 11,"Reserved" }, + { 12,"Reserved" }, + { 13,"Reserved" }, + { 14,"Defined by the WAP Forum" }, + { 15,"Data coding / message handling" }, + { 0, NULL} +}; +static value_string_ext gsm_map_cbs_data_coding_scheme_coding_grp_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_data_coding_scheme_coding_grp_vals); + +/* Coding group 0 + * Bits 3..0 indicate the language: + */ +static const value_string gsm_map_cbs_coding_grp0_lang_vals[] = { + { 0, "German"}, + { 1, "English"}, + { 2, "Italian"}, + { 3, "French"}, + { 4, "Spanish"}, + { 5, "Dutch"}, + { 6, "Swedish"}, + { 7, "Danish"}, + { 8, "Portuguese"}, + { 9, "Finnish"}, + { 10, "Norwegian"}, + { 11, "Greek"}, + { 12, "Turkish"}, + { 13, "Hungarian"}, + { 14, "Polish"}, + { 15, "Language unspecified"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp0_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp0_lang_vals); + +static const value_string gsm_map_cbs_coding_grp1_lang_vals[] = { + { 0, "GSM 7 bit default alphabet; message preceded by language indication"}, + { 1, "UCS2; message preceded by language indication"}, + { 2, "Reserved"}, + { 3, "Reserved"}, + { 4, "Reserved"}, + { 5, "Reserved"}, + { 6, "Reserved"}, + { 7, "Reserved"}, + { 8, "Reserved"}, + { 9, "Reserved"}, + { 10, "Reserved"}, + { 11, "Reserved"}, + { 12, "Reserved"}, + { 13, "Reserved"}, + { 14, "Reserved"}, + { 15, "Reserved"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp1_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp1_lang_vals); + +static const value_string gsm_map_cbs_coding_grp2_lang_vals[] = { + { 0, "Czech"}, + { 1, "Hebrew"}, + { 2, "Arabic"}, + { 3, "Russian"}, + { 4, "Icelandic"}, + { 5, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 6, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 7, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 8, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 9, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 10, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 11, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 12, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 13, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 14, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 15, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp2_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp2_lang_vals); + +static const value_string gsm_map_cbs_coding_grp3_lang_vals[] = { + { 0, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 1, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 2, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 3, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 4, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 5, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 6, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 7, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 8, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 9, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 10, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 11, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 12, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 13, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 14, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 15, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp3_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp3_lang_vals); + +static const true_false_string gsm_map_cbs_coding_grp4_7_comp_vals = { + "The text is compressed using the compression algorithm defined in 3GPP TS 23.042", + "The text is uncompressed" +}; + +static const true_false_string gsm_map_cbs_coding_grp4_7_class_ind_vals = { + "Bits 1 to 0 have a message class meaning", + "Bits 1 to 0 are reserved and have no message class meaning" +}; + +/* Bits 3 and 2 indicate the character set being used, as follows: */ + +static const value_string gsm_map_cbs_coding_grp4_7_char_set_vals[] = { + { 0, "GSM 7 bit default alphabet"}, + { 1, "8 bit data"}, + { 2, "UCS2 (16 bit)"}, + { 3, "Reserved"}, + { 0, NULL } +}; + +static const value_string gsm_map_cbs_coding_grp4_7_class_vals[] = { + { 0, "Class 0"}, + { 1, "Class 1 Default meaning: ME-specific"}, + { 2, "Class 2 (U)SIM specific message"}, + { 3, "Class 3 Default meaning: TE-specific (see 3GPP TS 27.005"}, + { 0, NULL } +}; + +static const value_string gsm_map_cbs_coding_grp15_mess_code_vals[] = { + { 0, "GSM 7 bit default alphabet"}, + { 1, "8 bit data"}, + { 0, NULL } +}; + +static const value_string gsm_map_cbs_coding_grp15_class_vals[] = { + { 0, "GSM 7 bit default alphabet"}, + { 1, "8 bit data"}, + { 0, NULL } +}; + + +/* 3GPP TS 23.038 version 7.0.0 Release 7 */ +guint8 +dissect_cbs_data_coding_scheme(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint16 offset) +{ + guint8 octet; + guint8 coding_grp; + guint8 character_set; + + octet = tvb_get_guint8(tvb,offset); + coding_grp = octet >>4; + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp, tvb, offset, 1, ENC_BIG_ENDIAN); + + sms_encoding = SMS_ENCODING_NOT_SET; + switch (coding_grp){ + case 0: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp0_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + sms_encoding = SMS_ENCODING_7BIT; + break; + case 1: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp1_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + if ((octet & 0x0f)== 0){ + sms_encoding = SMS_ENCODING_7BIT_LANG; + }else{ + sms_encoding = SMS_ENCODING_UCS2_LANG; + } + break; + case 2: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp2_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + sms_encoding = SMS_ENCODING_7BIT; + break; + case 3: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp3_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + sms_encoding = SMS_ENCODING_7BIT; + break; + /* Coding_grp 01xx */ + case 4: + /* FALLTHRU */ + case 5: + /* FALLTHRU */ + case 6: + /* FALLTHRU */ + case 7: + /* FALLTHRU */ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_comp, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class_ind, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_char_set, tvb, offset, 1, ENC_BIG_ENDIAN); + if ((octet & 0x10)== 0x10){ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class, tvb, offset, 1, ENC_BIG_ENDIAN); + } + /* Bits 3 and 2 indicate the character set being used, */ + character_set = (octet&0x0c)>>2; + switch (character_set){ + case 0: + /* GSM 7 bit default alphabet */ + sms_encoding = SMS_ENCODING_7BIT; + break; + case 1: + /* 8 bit data */ + sms_encoding = SMS_ENCODING_8BIT; + break; + case 2: + /* UCS2 (16 bit) */ + sms_encoding = SMS_ENCODING_UCS2; + break; + case 3: + /* Reserved */ + sms_encoding = SMS_ENCODING_NOT_SET; + break; + default: + break; + } + break; + case 8: + /* Reserved coding groups */ + break; + case 9: + /* Message with User Data Header (UDH) structure:*/ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_char_set, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class, tvb, offset, 1, ENC_BIG_ENDIAN); + character_set = (octet&0x0c)>>2; + switch (character_set){ + case 0: + /* GSM 7 bit default alphabet */ + sms_encoding = SMS_ENCODING_7BIT; + break; + case 1: + /* 8 bit data */ + sms_encoding = SMS_ENCODING_8BIT; + break; + case 2: + /* UCS2 (16 bit) */ + sms_encoding = SMS_ENCODING_UCS2; + break; + case 3: + /* Reserved */ + sms_encoding = SMS_ENCODING_NOT_SET; + break; + default: + break; + } + break; + case 10: + /* FALLTHRU */ + case 11: + /* FALLTHRU */ + case 12: + /* FALLTHRU */ + case 13: + /* FALLTHRU */ + /* 1010..1101 Reserved coding groups */ + break; + case 14: + /* Defined by the WAP Forum + * "Wireless Datagram Protocol Specification", Wireless Application Protocol Forum Ltd. + */ + break; + case 15: + /* Data coding / message handling */ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp15_mess_code, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp15_class, tvb, offset, 1, ENC_BIG_ENDIAN); + character_set = (octet&0x04)>>2; + if (character_set == 0){ + sms_encoding = SMS_ENCODING_7BIT; + }else{ + sms_encoding = SMS_ENCODING_8BIT; + } + break; + default: + break; + } + + return sms_encoding; +} +void +dissect_gsm_map_msisdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + guint8 octet; + guint8 na; + guint8 np; + + proto_tree_add_item(tree, hf_gsm_map_extension, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_nature_of_number, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_number_plan, tvb, 0,1,ENC_BIG_ENDIAN); + + if(tvb_reported_length(tvb)==1) + return; + + octet = tvb_get_guint8(tvb,0); + /* nature of address indicator */ + na = (octet & 0x70)>>4; + /* numbering plan indicator */ + np = octet & 0x0f; + switch(np){ + case 1: + /* ISDN/Telephony Numbering Plan (Rec ITU-T E.164) */ + switch(na){ + case 1: + /* international number */ + dissect_e164_msisdn(tvb, tree, 1, tvb_reported_length(tvb)-1, E164_ENC_BCD); + break; + default: + proto_tree_add_item(tree, hf_gsm_map_address_digits, tvb, 1, -1, ENC_BCD_DIGITS_0_9); + break; + } + break; + case 6: + /* land mobile numbering plan (ITU-T Rec E.212) */ + dissect_e212_imsi(tvb, pinfo, tree, 1, tvb_reported_length(tvb)-1, FALSE); + break; + default: + proto_tree_add_item(tree, hf_gsm_map_address_digits, tvb, 1, -1, ENC_BCD_DIGITS_0_9); + break; + } + +} + + +/* --- Module MAP-SS-Code --- --- --- */ + + + +int +dissect_gsm_map_SS_Code(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +/* --- Module MAP-BS-Code --- --- --- */ + + + +static int +dissect_gsm_map_BearerServiceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_Ext_BearerServiceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +/* --- Module MAP-TS-Code --- --- --- */ + + + +static int +dissect_gsm_map_TeleserviceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_Ext_TeleserviceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + + + +static int +dissect_gsm_map_T_extId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.direct_reference); + + actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE; + + + return offset; +} + + + +static int +dissect_gsm_map_T_extType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + proto_tree *ext_tree; + ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gsm_map_extension_data, NULL, "Extension Data"); + if (actx->external.direct_ref_present){ + offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, ext_tree, NULL); + }else{ + call_data_dissector(tvb, actx->pinfo, ext_tree); + offset = tvb_reported_length_remaining(tvb,offset); + } + + + return offset; +} + + +static const ber_sequence_t gsm_map_PrivateExtension_sequence[] = { + { &hf_gsm_map_extId , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_map_T_extId }, + { &hf_gsm_map_extType , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_T_extType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_PrivateExtension(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension); + + return offset; +} + + +static const ber_sequence_t gsm_map_PrivateExtensionList_sequence_of[1] = { + { &hf_gsm_map_PrivateExtensionList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_PrivateExtension }, +}; + +static int +dissect_gsm_map_PrivateExtensionList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList); + + return offset; +} + + +static const ber_sequence_t gsm_map_PCS_Extensions_sequence[] = { + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_PCS_Extensions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_PCS_Extensions_sequence, hf_index, ett_gsm_map_PCS_Extensions); + + return offset; +} + + +static const ber_sequence_t gsm_map_ExtensionContainer_sequence[] = { + { &hf_gsm_map_privateExtensionList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PrivateExtensionList }, + { &hf_gsm_map_pcs_Extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PCS_Extensions }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ExtensionContainer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer); + + return offset; +} + + + +static int +dissect_gsm_map_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_SLR_Arg_PCS_Extensions_sequence[] = { + { &hf_gsm_map_na_ESRK_Request, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_SLR_Arg_PCS_Extensions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_SLR_Arg_PCS_Extensions_sequence, hf_index, ett_gsm_map_SLR_Arg_PCS_Extensions); + + return offset; +} + + +static const ber_sequence_t gsm_map_SLR_ArgExtensionContainer_sequence[] = { + { &hf_gsm_map_privateExtensionList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PrivateExtensionList }, + { &hf_gsm_map_slr_Arg_PCS_Extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SLR_Arg_PCS_Extensions }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_SLR_ArgExtensionContainer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_SLR_ArgExtensionContainer_sequence, hf_index, ett_gsm_map_SLR_ArgExtensionContainer); + + return offset; +} + + +/* --- Module MAP-CommonDataTypes --- --- --- */ + + + +int +dissect_gsm_map_TBCD_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + if(tvb_reported_length(parameter_tvb)==0) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_tbcd_digits); + proto_tree_add_item(subtree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, ENC_KEYPAD_ABC_TBCD); + + + return offset; +} + + + +static int +dissect_gsm_map_DiameterIdentity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_AddressString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_isdn_address_string); + dissect_gsm_map_msisdn(parameter_tvb, actx->pinfo , subtree); + if (!PINFO_FD_VISITED(actx->pinfo)) + actx->private_data = tvb_bytes_to_str(wmem_file_scope(), parameter_tvb, 0, tvb_captured_length(parameter_tvb)); + + + return offset; +} + + + +int +dissect_gsm_map_ISDN_AddressString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_FTN_AddressString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +int +dissect_gsm_map_ISDN_SubaddressString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ProtocolId_vals[] = { + { 1, "gsm-0408" }, + { 2, "gsm-0806" }, + { 3, "gsm-BSSMAP" }, + { 4, "ets-300102-1" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ProtocolId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + &ProtocolId); + + return offset; +} + + + +static int +dissect_gsm_map_SignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (gsm_map_priv) + gsm_map_priv->signal_info_tvb = parameter_tvb; + + + + return offset; +} + + +static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = { + { &hf_gsm_map_protocolId , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ProtocolId }, + { &hf_gsm_map_signalInfo , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ExternalSignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +/* +-- Information about the internal structure is given in +-- clause 7.6.9. +7.6.9.4 External Signal Information +This parameter contains concatenated information elements (including tag and length) which are defined by a common +protocol version, preceded by the associated protocol ID. It is used to transport information of the indicated protocol via +MAP interfaces +*/ + guint8 octet; + guint8 length; + tvbuff_t *next_tvb; + proto_tree *subtree; + gsm_map_private_info_t *gsm_map_priv; + + ProtocolId = 0xffffffff; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_ExternalSignalInfo); + + gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo); + switch (ProtocolId){ + case 1: + /* gsm-0408 */ + /* As per comment abowe Individual IE:(s) will be found here in TLV format + * Unfortunatly a branch for each IE must be made to call the apropriate + * function + */ + /* Get tag */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + proto_tree_add_item(subtree, hf_gsm_map_ie_tag, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + /* get length */ + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + /* Branch on tag */ + switch(octet){ + case 4: + /* Dissect the data part */ + de_bearer_cap(gsm_map_priv->signal_info_tvb, subtree, actx->pinfo, 2, length, NULL, 0); + /* TODO: There may be more than one IE */ + break; + default: + proto_tree_add_expert(subtree, actx->pinfo, &ei_gsm_map_undecoded, gsm_map_priv->signal_info_tvb, 0, length); + break; + }/* switch(octet) */ + break; + case 2: + /* gsm-0806 */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + /* Discrimination parameter */ + proto_tree_add_item(subtree, hf_gsm_map_disc_par, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ + /* Strip off discrimination and length */ + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + }else if(octet==1){ + proto_tree_add_item(subtree, hf_gsm_map_dlci, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 3); + call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); + } + break; + case 3: + /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + } + break; + /* ets-300102-1 (~Q.931 ) */ + case 4: + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + if ( octet == 4 ) + dissect_q931_bearer_capability_ie(gsm_map_priv->signal_info_tvb, 2, length, subtree); + break; + default: + break; + }/*switch (ProtocolId)*/ + + + return offset; +} + + +static const value_string gsm_map_Ext_ProtocolId_vals[] = { + { 1, "ets-300356" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_Ext_ProtocolId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_Ext_ExternalSignalInfo_sequence[] = { + { &hf_gsm_map_ext_ProtocolId, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_ProtocolId }, + { &hf_gsm_map_signalInfo , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_Ext_ExternalSignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_Ext_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_Ext_ExternalSignalInfo); + + return offset; +} + + +static const value_string gsm_map_AccessNetworkProtocolId_vals[] = { + { 1, "ts3G-48006" }, + { 2, "ts3G-25413" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_AccessNetworkProtocolId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + &AccessNetworkProtocolId); + + return offset; +} + + + +static int +dissect_gsm_map_LongSignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + guint8 octet; + tvbuff_t *next_tvb; + proto_tree *subtree; + gsm_map_private_info_t *gsm_map_priv; + sccp_msg_info_t *sccp_msg_info; + + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + sccp_msg_info = gsm_map_priv ? gsm_map_priv->sccp_msg_info : NULL; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LongSignalInfo); + + switch (AccessNetworkProtocolId){ + /* ts3G-48006 */ + case 1: + octet = tvb_get_guint8(parameter_tvb,0); + /* Discrimination parameter */ + proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ + /* Strip off discrimination and length */ + proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(parameter_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, sccp_msg_info); + }else if(octet==1){ + proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(parameter_tvb, 3); + call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); + } + break; + /* ts3G-25413 */ + case 2: + call_dissector(ranap_handle, parameter_tvb, actx->pinfo, tree); + break; + default: + break; + + } + + return offset; +} + + +static const ber_sequence_t gsm_map_AccessNetworkSignalInfo_sequence[] = { + { &hf_gsm_map_accessNetworkProtocolId, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkProtocolId }, + { &hf_gsm_map_signalInfo_01, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LongSignalInfo }, + { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_AccessNetworkSignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_AccessNetworkSignalInfo_sequence, hf_index, ett_gsm_map_AccessNetworkSignalInfo); + + return offset; +} + + + +int +dissect_gsm_map_AlertingPattern(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_GSN_Address(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + guint8 octet; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_pdptypenumber); + + octet = tvb_get_guint8(parameter_tvb,0); + switch(octet){ + case 0x04: /* IPv4 */ + proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, 4, ENC_BIG_ENDIAN); + break; + case 0x50: /* IPv6 */ + proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv6, parameter_tvb, 1, 16, ENC_NA); + break; + default: + break; + } + + + return offset; +} + + + +static int +dissect_gsm_map_Time(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_IMSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + const char *imsi_str; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); + + if (!parameter_tvb) + return offset; + if(tvb_reported_length(parameter_tvb)==0) + return offset; + + /* Hide the octet string default printout */ + proto_item_set_hidden(actx->created_item); + imsi_str = dissect_e212_imsi(parameter_tvb, actx->pinfo, tree, + 0, tvb_reported_length(parameter_tvb), FALSE); + if (!PINFO_FD_VISITED(actx->pinfo)) + actx->private_data = wmem_strdup(wmem_file_scope(), imsi_str); + + + return offset; +} + + + +static int +dissect_gsm_map_LMSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (parameter_tvb && !PINFO_FD_VISITED(actx->pinfo)) { + actx->private_data = tvb_bytes_to_str(wmem_file_scope(), parameter_tvb, 0, tvb_captured_length(parameter_tvb)); + } + + + return offset; +} + + +static const ber_sequence_t gsm_map_IMSI_WithLMSI_sequence[] = { + { &hf_gsm_map_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_lmsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_IMSI_WithLMSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_IMSI_WithLMSI_sequence, hf_index, ett_gsm_map_IMSI_WithLMSI); + + return offset; +} + + +static const value_string gsm_map_Identity_vals[] = { + { 0, "imsi" }, + { 1, "imsi-WithLMSI" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_Identity_choice[] = { + { 0, &hf_gsm_map_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { 1, &hf_gsm_map_imsi_WithLMSI, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI_WithLMSI }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_Identity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_Identity_choice, hf_index, ett_gsm_map_Identity, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ASCI_CallReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_TMSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_SubscriberId_vals[] = { + { 0, "imsi" }, + { 1, "tmsi" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_SubscriberId_choice[] = { + { 0, &hf_gsm_map_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { 1, &hf_gsm_map_tmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_TMSI }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_SubscriberId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_SubscriberId_choice, hf_index, ett_gsm_map_SubscriberId, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_IMEI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_HLR_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_HLR_List_sequence_of[1] = { + { &hf_gsm_map_HLR_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_HLR_Id }, +}; + +static int +dissect_gsm_map_HLR_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_HLR_List_sequence_of, hf_index, ett_gsm_map_HLR_List); + + return offset; +} + + + +int +dissect_gsm_map_GlobalCellId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GlobalCellId); + be_cell_id_aux(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length_remaining(tvb,0), NULL, 0, 0); + + + return offset; +} + + +const value_string gsm_map_NetworkResource_vals[] = { + { 0, "plmn" }, + { 1, "hlr" }, + { 2, "vlr" }, + { 3, "pvlr" }, + { 4, "controllingMSC" }, + { 5, "vmsc" }, + { 6, "eir" }, + { 7, "rss" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_NetworkResource(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_AdditionalNetworkResource_vals[] = { + { 0, "sgsn" }, + { 1, "ggsn" }, + { 2, "gmlc" }, + { 3, "gsmSCF" }, + { 4, "nplr" }, + { 5, "auc" }, + { 6, "ue" }, + { 7, "mme" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_AdditionalNetworkResource(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_NAEA_CIC(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_NAEA_PreferredCI_sequence[] = { + { &hf_gsm_map_naea_PreferredCIC, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_NAEA_CIC }, + { &hf_gsm_map_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_NAEA_PreferredCI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_NAEA_PreferredCI_sequence, hf_index, ett_gsm_map_NAEA_PreferredCI); + + return offset; +} + + +static const value_string gsm_map_SubscriberIdentity_vals[] = { + { 0, "imsi" }, + { 1, "msisdn" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_SubscriberIdentity_choice[] = { + { 0, &hf_gsm_map_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { 1, &hf_gsm_map_msisdn , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_SubscriberIdentity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_SubscriberIdentity_choice, hf_index, ett_gsm_map_SubscriberIdentity, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_LCSClientExternalID_sequence[] = { + { &hf_gsm_map_externalAddress, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_LCSClientExternalID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_LCSClientExternalID_sequence, hf_index, ett_gsm_map_LCSClientExternalID); + + return offset; +} + + +const value_string gsm_map_LCSClientInternalID_vals[] = { + { 0, "broadcastService" }, + { 1, "o-andM-HPLMN" }, + { 2, "o-andM-VPLMN" }, + { 3, "anonymousLocation" }, + { 4, "targetMSsubscribedService" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_LCSClientInternalID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +const value_string gsm_map_LCSServiceTypeID_vals[] = { + { 0, "emergencyServices" }, + { 1, "emergencyAlertServices" }, + { 2, "personTracking" }, + { 3, "fleetManagement" }, + { 4, "assetManagement" }, + { 5, "trafficCongestionReporting" }, + { 6, "roadsideAssistance" }, + { 7, "routingToNearestCommercialEnterprise" }, + { 8, "navigation" }, + { 9, "citySightseeing" }, + { 10, "localizedAdvertising" }, + { 11, "mobileYellowPages" }, + { 12, "trafficAndPublicTransportationInfo" }, + { 13, "weather" }, + { 14, "assetAndServiceFinding" }, + { 15, "gaming" }, + { 16, "findYourFriend" }, + { 17, "dating" }, + { 18, "chatting" }, + { 19, "routeFinding" }, + { 20, "whereAmI" }, + { 64, "serv64" }, + { 65, "serv65" }, + { 66, "serv66" }, + { 67, "serv67" }, + { 68, "serv68" }, + { 69, "serv69" }, + { 70, "serv70" }, + { 71, "serv71" }, + { 72, "serv72" }, + { 73, "serv73" }, + { 74, "serv74" }, + { 75, "serv75" }, + { 76, "serv76" }, + { 77, "serv77" }, + { 78, "serv78" }, + { 79, "serv79" }, + { 80, "serv80" }, + { 81, "serv81" }, + { 82, "serv82" }, + { 83, "serv83" }, + { 84, "serv84" }, + { 85, "serv85" }, + { 86, "serv86" }, + { 87, "serv87" }, + { 88, "serv88" }, + { 89, "serv89" }, + { 90, "serv90" }, + { 91, "serv91" }, + { 92, "serv92" }, + { 93, "serv93" }, + { 94, "serv94" }, + { 95, "serv95" }, + { 96, "serv96" }, + { 97, "serv97" }, + { 98, "serv98" }, + { 99, "serv99" }, + { 100, "serv100" }, + { 101, "serv101" }, + { 102, "serv102" }, + { 103, "serv103" }, + { 104, "serv104" }, + { 105, "serv105" }, + { 106, "serv106" }, + { 107, "serv107" }, + { 108, "serv108" }, + { 109, "serv109" }, + { 110, "serv110" }, + { 111, "serv111" }, + { 112, "serv112" }, + { 113, "serv113" }, + { 114, "serv114" }, + { 115, "serv115" }, + { 116, "serv116" }, + { 117, "serv117" }, + { 118, "serv118" }, + { 119, "serv119" }, + { 120, "serv120" }, + { 121, "serv121" }, + { 122, "serv122" }, + { 123, "serv123" }, + { 124, "serv124" }, + { 125, "serv125" }, + { 126, "serv126" }, + { 127, "serv127" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_LCSServiceTypeID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_PLMN_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_E_UTRAN_CGI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_e_utranCellGlobalIdentity); + de_sgsap_ecgi(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length(tvb), NULL, 0); + + + return offset; +} + + + +static int +dissect_gsm_map_NR_CGI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_TA_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_TA_id); + de_emm_trac_area_id(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length(tvb), NULL, 0); + + + return offset; +} + + + +static int +dissect_gsm_map_NR_TA_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_RAIdentity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RAIdentity); + de_gmm_rai(parameter_tvb, subtree, actx->pinfo, 0, 3, NULL,0); + + + return offset; +} + + +static const ber_sequence_t gsm_map_NetworkNodeDiameterAddress_sequence[] = { + { &hf_gsm_map_diameter_Name, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_diameter_Realm, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_NetworkNodeDiameterAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_NetworkNodeDiameterAddress_sequence, hf_index, ett_gsm_map_NetworkNodeDiameterAddress); + + return offset; +} + + + +int +dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_LAIFixedLength(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LAIFixedLength); + dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_LAI, TRUE); + + + return offset; +} + + +const value_string gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals[] = { + { 0, "cellGlobalIdOrServiceAreaIdFixedLength" }, + { 1, "laiFixedLength" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_choice[] = { + { 0, &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength }, + { 1, &hf_gsm_map_laiFixedLength, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_choice, hf_index, ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI, + NULL); + + return offset; +} + + +const value_string gsm_map_BasicServiceCode_vals[] = { + { 2, "bearerService" }, + { 3, "teleservice" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_BasicServiceCode_choice[] = { + { 2, &hf_gsm_map_bearerService, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_BearerServiceCode }, + { 3, &hf_gsm_map_teleservice , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_TeleserviceCode }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_BasicServiceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_BasicServiceCode_choice, hf_index, ett_gsm_map_BasicServiceCode, + NULL); + + return offset; +} + + +const value_string gsm_map_Ext_BasicServiceCode_vals[] = { + { 2, "ext-BearerService" }, + { 3, "ext-Teleservice" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_Ext_BasicServiceCode_choice[] = { + { 2, &hf_gsm_map_ext_BearerService, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BearerServiceCode }, + { 3, &hf_gsm_map_ext_Teleservice, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_TeleserviceCode }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_Ext_BasicServiceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_Ext_BasicServiceCode_choice, hf_index, ett_gsm_map_Ext_BasicServiceCode, + NULL); + + return offset; +} + + +static const value_string gsm_map_EMLPP_Priority_vals[] = { + { 6, "priorityLevelA" }, + { 5, "priorityLevelB" }, + { 0, "priorityLevel0" }, + { 1, "priorityLevel1" }, + { 2, "priorityLevel2" }, + { 3, "priorityLevel3" }, + { 4, "priorityLevel4" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_EMLPP_Priority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_EMLPP_Info_sequence[] = { + { &hf_gsm_map_maximumentitledPriority, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_defaultPriority, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_EMLPP_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_EMLPP_Info_sequence, hf_index, ett_gsm_map_EMLPP_Info); + + return offset; +} + + + +static int +dissect_gsm_map_Ext_SS_Status(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* Note Ext-SS-Status can have more than one byte */ + + tvbuff_t *parameter_tvb; + guint8 octet; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + octet = tvb_get_guint8(parameter_tvb,0); + + proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet); + if ((octet & 0x01)== 1) + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet); + + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet); + + + return offset; +} + + + +static int +dissect_gsm_map_MaxMC_Bearers(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_MC_Bearers(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_MC_SS_Info_sequence[] = { + { &hf_gsm_map_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_Status , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_nbrSB , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_MaxMC_Bearers }, + { &hf_gsm_map_nbrUser , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers }, + { &hf_gsm_map_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_MC_SS_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_MC_SS_Info_sequence, hf_index, ett_gsm_map_MC_SS_Info); + + return offset; +} + + + +int +dissect_gsm_map_AgeOfLocationInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + +/*--- PDUs ---*/ + +int dissect_gsm_map_ISDN_AddressString_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_gsm_map_ISDN_AddressString_PDU); + return offset; +} + + +/* --- Module MAP-SS-DataTypes --- --- --- */ + + + +static int +dissect_gsm_map_ss_NoReplyConditionTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ss_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_RegisterSS_Arg_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_gsm_map_ss_forwardedToNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_ss_forwardedToSubaddress, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { &hf_gsm_map_ss_noReplyConditionTime, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NoReplyConditionTime }, + { &hf_gsm_map_ss_defaultPriority, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_ss_nbrUser , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers }, + { &hf_gsm_map_ss_longFTN_Supported, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_RegisterSS_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_RegisterSS_Arg_sequence, hf_index, ett_gsm_map_ss_RegisterSS_Arg); + + return offset; +} + + + +int +dissect_gsm_map_ss_SS_Status(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + guint8 octet; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + octet = tvb_get_guint8(parameter_tvb,0); + + proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet); + if ((octet & 0x01)== 1) + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet); + + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet); + + + return offset; +} + + + +int +dissect_gsm_map_ss_ForwardingOptions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + + proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN); + return offset; +} + + +static const ber_sequence_t gsm_map_ss_ForwardingFeature_sequence[] = { + { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { &hf_gsm_map_ss_forwardedToNumber_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ss_forwardedToSubaddress, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { &hf_gsm_map_ss_forwardingOptions, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingOptions }, + { &hf_gsm_map_ss_noReplyConditionTime, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NoReplyConditionTime }, + { &hf_gsm_map_ss_longForwardedToNumber, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_FTN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_ForwardingFeature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_ForwardingFeature_sequence, hf_index, ett_gsm_map_ss_ForwardingFeature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_ForwardingFeatureList_sequence_of[1] = { + { &hf_gsm_map_ss_ForwardingFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_ForwardingFeature }, +}; + +static int +dissect_gsm_map_ss_ForwardingFeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_ss_ForwardingFeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_ForwardingInfo_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_forwardingFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_ForwardingFeatureList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_ForwardingInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_ForwardingInfo_sequence, hf_index, ett_gsm_map_ss_ForwardingInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_CallBarringFeature_sequence[] = { + { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_CallBarringFeature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_CallBarringFeature_sequence, hf_index, ett_gsm_map_ss_CallBarringFeature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_CallBarringFeatureList_sequence_of[1] = { + { &hf_gsm_map_ss_CallBarringFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CallBarringFeature }, +}; + +static int +dissect_gsm_map_ss_CallBarringFeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_CallBarringFeatureList_sequence_of, hf_index, ett_gsm_map_ss_CallBarringFeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_CallBarringInfo_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_callBarringFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CallBarringFeatureList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_CallBarringInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_CallBarringInfo_sequence, hf_index, ett_gsm_map_ss_CallBarringInfo); + + return offset; +} + + +static const value_string gsm_map_ss_CliRestrictionOption_vals[] = { + { 0, "permanent" }, + { 1, "temporaryDefaultRestricted" }, + { 2, "temporaryDefaultAllowed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ss_CliRestrictionOption(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ss_OverrideCategory_vals[] = { + { 0, "overrideEnabled" }, + { 1, "overrideDisabled" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ss_OverrideCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ss_SS_SubscriptionOption_vals[] = { + { 2, "cliRestrictionOption" }, + { 1, "overrideCategory" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ss_SS_SubscriptionOption_choice[] = { + { 2, &hf_gsm_map_ss_cliRestrictionOption, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CliRestrictionOption }, + { 1, &hf_gsm_map_ss_overrideCategory, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_OverrideCategory }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_SS_SubscriptionOption(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ss_SS_SubscriptionOption_choice, hf_index, ett_gsm_map_ss_SS_SubscriptionOption, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_BasicServiceGroupList_sequence_of[1] = { + { &hf_gsm_map_ss_BasicServiceGroupList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, +}; + +static int +dissect_gsm_map_ss_BasicServiceGroupList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_ss_BasicServiceGroupList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_SS_Data_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { &hf_gsm_map_ss_ss_SubscriptionOption, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ss_SS_SubscriptionOption }, + { &hf_gsm_map_ss_basicServiceGroupList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_BasicServiceGroupList }, + { &hf_gsm_map_ss_defaultPriority, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_ss_nbrUser , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_SS_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_SS_Data_sequence, hf_index, ett_gsm_map_ss_SS_Data); + + return offset; +} + + +const value_string gsm_map_ss_SS_Info_vals[] = { + { 0, "forwardingInfo" }, + { 1, "callBarringInfo" }, + { 3, "ss-Data" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ss_SS_Info_choice[] = { + { 0, &hf_gsm_map_ss_forwardingInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingInfo }, + { 1, &hf_gsm_map_ss_callBarringInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CallBarringInfo }, + { 3, &hf_gsm_map_ss_ss_Data , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Data }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_SS_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ss_SS_Info_choice, hf_index, ett_gsm_map_ss_SS_Info, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_SS_ForBS_Code_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_gsm_map_ss_longFTN_Supported, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_SS_ForBS_Code(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_SS_ForBS_Code_sequence, hf_index, ett_gsm_map_ss_SS_ForBS_Code); + + return offset; +} + + + +static int +dissect_gsm_map_ss_CCBS_Index(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_CCBS_Feature_sequence[] = { + { &hf_gsm_map_ss_ccbs_Index, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Index }, + { &hf_gsm_map_ss_b_subscriberNumber, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ss_b_subscriberSubaddress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { &hf_gsm_map_ss_basicServiceGroup, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_BasicServiceCode }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_CCBS_Feature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_CCBS_Feature_sequence, hf_index, ett_gsm_map_ss_CCBS_Feature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_CCBS_FeatureList_sequence_of[1] = { + { &hf_gsm_map_ss_CCBS_FeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CCBS_Feature }, +}; + +static int +dissect_gsm_map_ss_CCBS_FeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_CCBS_FeatureList_sequence_of, hf_index, ett_gsm_map_ss_CCBS_FeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_GenericServiceInfo_sequence[] = { + { &hf_gsm_map_ss_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_SS_Status }, + { &hf_gsm_map_ss_cliRestrictionOption, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CliRestrictionOption }, + { &hf_gsm_map_ss_maximumEntitledPriority, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_ss_defaultPriority, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_ss_ccbs_FeatureList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_FeatureList }, + { &hf_gsm_map_ss_nbrSB , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MaxMC_Bearers }, + { &hf_gsm_map_ss_nbrUser , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers }, + { &hf_gsm_map_ss_nbrSN , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_GenericServiceInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_GenericServiceInfo_sequence, hf_index, ett_gsm_map_ss_GenericServiceInfo); + + return offset; +} + + +const value_string gsm_map_ss_InterrogateSS_Res_vals[] = { + { 0, "ss-Status" }, + { 2, "basicServiceGroupList" }, + { 3, "forwardingFeatureList" }, + { 4, "genericServiceInfo" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ss_InterrogateSS_Res_choice[] = { + { 0, &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { 2, &hf_gsm_map_ss_basicServiceGroupList, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_BasicServiceGroupList }, + { 3, &hf_gsm_map_ss_forwardingFeatureList, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingFeatureList }, + { 4, &hf_gsm_map_ss_genericServiceInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_GenericServiceInfo }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_InterrogateSS_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ss_InterrogateSS_Res_choice, hf_index, ett_gsm_map_ss_InterrogateSS_Res, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ss_USSD_DataCodingScheme(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /*The structure of the USSD-DataCodingScheme is defined by + * the Cell Broadcast Data Coding Scheme as described in + * TS 3GPP TS 23.038 + * TODO: Should dissect_cbs_data_coding_scheme return encoding type? - like 7bit Alphabet + */ + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_cbs_data_coding); + dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0); + + + return offset; +} + + + +int +dissect_gsm_map_ss_USSD_String(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + guint length; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + length = tvb_ensure_captured_length_remaining(parameter_tvb,0); + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ussd_string); + switch(sms_encoding){ + case SMS_ENCODING_7BIT: + case SMS_ENCODING_7BIT_LANG: + proto_tree_add_item(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, ENC_3GPP_TS_23_038_7BITS|ENC_NA); + break; + case SMS_ENCODING_8BIT: + /* XXX - ASCII, or some extended ASCII? */ + proto_tree_add_item(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, ENC_ASCII); + break; + case SMS_ENCODING_UCS2: + case SMS_ENCODING_UCS2_LANG: + proto_tree_add_item(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, ENC_UCS_2|ENC_BIG_ENDIAN); + break; + default: + break; + } + + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_USSD_Arg_sequence[] = { + { &hf_gsm_map_ss_ussd_DataCodingScheme, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_DataCodingScheme }, + { &hf_gsm_map_ss_ussd_String, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_String }, + { &hf_gsm_map_ss_alertingPattern, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_AlertingPattern }, + { &hf_gsm_map_ss_msisdn , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_USSD_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_USSD_Arg_sequence, hf_index, ett_gsm_map_ss_USSD_Arg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_USSD_Res_sequence[] = { + { &hf_gsm_map_ss_ussd_DataCodingScheme, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_DataCodingScheme }, + { &hf_gsm_map_ss_ussd_String, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_String }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_USSD_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_USSD_Res_sequence, hf_index, ett_gsm_map_ss_USSD_Res); + + return offset; +} + + + +static int +dissect_gsm_map_ss_Password(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_SS_List_sequence_of[1] = { + { &hf_gsm_map_ss_SS_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, +}; + +static int +dissect_gsm_map_ss_SS_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_SS_List_sequence_of, hf_index, ett_gsm_map_ss_SS_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_SS_EventSpecification_sequence_of[1] = { + { &hf_gsm_map_ss_SS_EventSpecification_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString }, +}; + +static int +dissect_gsm_map_ss_SS_EventSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_SS_EventSpecification_sequence_of, hf_index, ett_gsm_map_ss_SS_EventSpecification); + + return offset; +} + + +static const value_string gsm_map_ss_CCBS_RequestState_vals[] = { + { 0, "request" }, + { 1, "recall" }, + { 2, "active" }, + { 3, "completed" }, + { 4, "suspended" }, + { 5, "frozen" }, + { 6, "deleted" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ss_CCBS_RequestState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_SS_InvocationNotificationArg_sequence[] = { + { &hf_gsm_map_ss_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ss_msisdn , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ss_ss_Event , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_ss_EventSpecification, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_EventSpecification }, + { &hf_gsm_map_ss_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ss_b_subscriberNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ss_ccbs_RequestState, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_RequestState }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_SS_InvocationNotificationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_SS_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_ss_SS_InvocationNotificationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_SS_InvocationNotificationRes_sequence[] = { + { &hf_gsm_map_ss_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_SS_InvocationNotificationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_SS_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_ss_SS_InvocationNotificationRes); + + return offset; +} + + +static int * const gsm_map_ss_ServiceIndicator_bits[] = { + &hf_gsm_map_ss_ServiceIndicator_clir_invoked, + &hf_gsm_map_ss_ServiceIndicator_camel_invoked, + NULL +}; + +static int +dissect_gsm_map_ss_ServiceIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_ServiceIndicator_bits, 2, hf_index, ett_gsm_map_ss_ServiceIndicator, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_CCBS_Data_sequence[] = { + { &hf_gsm_map_ss_ccbs_Feature, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature }, + { &hf_gsm_map_ss_translatedB_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ss_serviceIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ServiceIndicator }, + { &hf_gsm_map_ss_callInfo , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_map_ss_networkSignalInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_CCBS_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_CCBS_Data_sequence, hf_index, ett_gsm_map_ss_CCBS_Data); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_RegisterCC_EntryArg_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_ccbs_Data, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Data }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ss_RegisterCC_EntryArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_ss_RegisterCC_EntryArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_RegisterCC_EntryRes_sequence[] = { + { &hf_gsm_map_ss_ccbs_Feature, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_RegisterCC_EntryRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_ss_RegisterCC_EntryRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_EraseCC_EntryArg_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_ccbs_Index, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Index }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_EraseCC_EntryArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_ss_EraseCC_EntryArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ss_EraseCC_EntryRes_sequence[] = { + { &hf_gsm_map_ss_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ss_EraseCC_EntryRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ss_EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_ss_EraseCC_EntryRes); + + return offset; +} + + +/* --- Module MAP-ER-DataTypes --- --- --- */ + + +static const value_string gsm_map_er_RoamingNotAllowedCause_vals[] = { + { 0, "plmnRoamingNotAllowed" }, + { 3, "operatorDeterminedBarring" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_RoamingNotAllowedCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_er_AdditionalRoamingNotAllowedCause_vals[] = { + { 0, "supportedRAT-TypesNotAllowed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_AdditionalRoamingNotAllowedCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_RoamingNotAllowedParam_sequence[] = { + { &hf_gsm_map_er_roamingNotAllowedCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_RoamingNotAllowedCause }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_additionalRoamingNotAllowedCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AdditionalRoamingNotAllowedCause }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_RoamingNotAllowedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_er_RoamingNotAllowedParam); + + return offset; +} + + +static const value_string gsm_map_er_CallBarringCause_vals[] = { + { 0, "barringServiceActive" }, + { 1, "operatorBarring" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_CallBarringCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_er_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ExtensibleCallBarredParam_sequence[] = { + { &hf_gsm_map_er_callBarringCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_CallBarringCause }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_unauthorisedMessageOriginator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { &hf_gsm_map_er_anonymousCallRejection, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ExtensibleCallBarredParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ExtensibleCallBarredParam_sequence, hf_index, ett_gsm_map_er_ExtensibleCallBarredParam); + + return offset; +} + + +static const ber_choice_t gsm_map_er_CallBarredParam_choice[] = { + { 0, &hf_gsm_map_er_callBarringCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_CallBarringCause }, + { 1, &hf_gsm_map_er_extensibleCallBarredParam, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_ExtensibleCallBarredParam }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_CallBarredParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_er_CallBarredParam_choice, hf_index, ett_gsm_map_er_CallBarredParam, + NULL); + + return offset; +} + + +static const value_string gsm_map_er_CUG_RejectCause_vals[] = { + { 0, "incomingCallsBarredWithinCUG" }, + { 1, "subscriberNotMemberOfCUG" }, + { 5, "requestedBasicServiceViolatesCUG-Constraints" }, + { 7, "calledPartySS-InteractionViolation" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_CUG_RejectCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_CUG_RejectParam_sequence[] = { + { &hf_gsm_map_er_cug_RejectCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_CUG_RejectCause }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_CUG_RejectParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_CUG_RejectParam_sequence, hf_index, ett_gsm_map_er_CUG_RejectParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_SS_IncompatibilityCause_sequence[] = { + { &hf_gsm_map_er_ss_Code , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_er_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_gsm_map_er_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_SS_IncompatibilityCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_SS_IncompatibilityCause_sequence, hf_index, ett_gsm_map_er_SS_IncompatibilityCause); + + return offset; +} + + + +static int +dissect_gsm_map_er_PW_RegistrationFailureCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_er_SM_EnumeratedDeliveryFailureCause_vals[] = { + { 0, "memoryCapacityExceeded" }, + { 1, "equipmentProtocolError" }, + { 2, "equipmentNotSM-Equipped" }, + { 3, "unknownServiceCentre" }, + { 4, "sc-Congestion" }, + { 5, "invalidSME-Address" }, + { 6, "subscriberNotSC-Subscriber" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_SM_EnumeratedDeliveryFailureCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_SM_DeliveryFailureCause_sequence[] = { + { &hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_SM_EnumeratedDeliveryFailureCause }, + { &hf_gsm_map_er_diagnosticInfo, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_SM_DeliveryFailureCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + guint8 oct; + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_er_SM_DeliveryFailureCause); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + /* Detailed diagnostic information contains either a SMS-SUBMIT-REPORT or a SMS-DELIVERY-REPORT */ + oct = tvb_get_guint8(gsm_map_priv->signal_info_tvb, 0); + actx->pinfo->p2p_dir = ((oct & 0x03) == 0) ? P2P_DIR_RECV : P2P_DIR_SENT; + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + + +static int +dissect_gsm_map_er_AbsentSubscriberDiagnosticSM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_AbsentSubscriberSM_Param_sequence[] = { + { &hf_gsm_map_er_absentSubscriberDiagnosticSM, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_additionalAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_er_imsi , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_er_requestedRetransmissionTime, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Time }, + { &hf_gsm_map_er_userIdentifierAlert, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_AbsentSubscriberSM_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_er_AbsentSubscriberSM_Param); + + return offset; +} + + +static const value_string gsm_map_er_FailureCauseParam_vals[] = { + { 0, "limitReachedOnNumberOfConcurrentLocationRequests" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_FailureCauseParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ExtensibleSystemFailureParam_sequence[] = { + { &hf_gsm_map_er_networkResource, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_NetworkResource }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_additionalNetworkResource, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AdditionalNetworkResource }, + { &hf_gsm_map_er_failureCauseParam, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_FailureCauseParam }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ExtensibleSystemFailureParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ExtensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_er_ExtensibleSystemFailureParam); + + return offset; +} + + +static const ber_choice_t gsm_map_er_SystemFailureParam_choice[] = { + { 0, &hf_gsm_map_er_networkResource, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_NetworkResource }, + { 1, &hf_gsm_map_er_extensibleSystemFailureParam, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_ExtensibleSystemFailureParam }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_SystemFailureParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_er_SystemFailureParam_choice, hf_index, ett_gsm_map_er_SystemFailureParam, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_DataMissingParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_DataMissingParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_DataMissingParam_sequence, hf_index, ett_gsm_map_er_DataMissingParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_UnexpectedDataParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_unexpectedSubscriber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_UnexpectedDataParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_UnexpectedDataParam_sequence, hf_index, ett_gsm_map_er_UnexpectedDataParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_FacilityNotSupParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_shapeOfLocationEstimateNotSupported, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { &hf_gsm_map_er_neededLcsCapabilityNotSupportedInServingNode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_FacilityNotSupParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_FacilityNotSupParam_sequence, hf_index, ett_gsm_map_er_FacilityNotSupParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_OR_NotAllowedParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_OR_NotAllowedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_OR_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_OR_NotAllowedParam); + + return offset; +} + + +static const value_string gsm_map_er_UnknownSubscriberDiagnostic_vals[] = { + { 0, "imsiUnknown" }, + { 1, "gprs-eps-SubscriptionUnknown" }, + { 2, "npdbMismatch" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_UnknownSubscriberDiagnostic(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_UnknownSubscriberParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_unknownSubscriberDiagnostic, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_UnknownSubscriberDiagnostic }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_UnknownSubscriberParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_er_UnknownSubscriberParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_NumberChangedParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_NumberChangedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_NumberChangedParam_sequence, hf_index, ett_gsm_map_er_NumberChangedParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_UnidentifiedSubParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_UnidentifiedSubParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_er_UnidentifiedSubParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_IllegalSubscriberParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_IllegalSubscriberParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_er_IllegalSubscriberParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_IllegalEquipmentParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_IllegalEquipmentParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_er_IllegalEquipmentParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_BearerServNotProvParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_BearerServNotProvParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_BearerServNotProvParam_sequence, hf_index, ett_gsm_map_er_BearerServNotProvParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_TeleservNotProvParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_TeleservNotProvParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_TeleservNotProvParam_sequence, hf_index, ett_gsm_map_er_TeleservNotProvParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_TracingBufferFullParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_TracingBufferFullParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_TracingBufferFullParam_sequence, hf_index, ett_gsm_map_er_TracingBufferFullParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_NoRoamingNbParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_NoRoamingNbParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_NoRoamingNbParam_sequence, hf_index, ett_gsm_map_er_NoRoamingNbParam); + + return offset; +} + + +static const value_string gsm_map_er_AbsentSubscriberReason_vals[] = { + { 0, "imsiDetach" }, + { 1, "restrictedArea" }, + { 2, "noPageResponse" }, + { 3, "purgedMS" }, + { 4, "mtRoamingRetry" }, + { 5, "busySubscriber" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_er_AbsentSubscriberReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_AbsentSubscriberParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_absentSubscriberReason, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberReason }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_AbsentSubscriberParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_er_AbsentSubscriberParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_BusySubscriberParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_ccbs_Possible, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { &hf_gsm_map_er_ccbs_Busy, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_BusySubscriberParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_BusySubscriberParam_sequence, hf_index, ett_gsm_map_er_BusySubscriberParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_NoSubscriberReplyParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_NoSubscriberReplyParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_er_NoSubscriberReplyParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ForwardingViolationParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ForwardingViolationParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ForwardingViolationParam_sequence, hf_index, ett_gsm_map_er_ForwardingViolationParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ForwardingFailedParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ForwardingFailedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ForwardingFailedParam_sequence, hf_index, ett_gsm_map_er_ForwardingFailedParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ATI_NotAllowedParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ATI_NotAllowedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ATI_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_ATI_NotAllowedParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ATSI_NotAllowedParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ATSI_NotAllowedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ATSI_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_ATSI_NotAllowedParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ATM_NotAllowedParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ATM_NotAllowedParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ATM_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_ATM_NotAllowedParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_IllegalSS_OperationParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_IllegalSS_OperationParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_IllegalSS_OperationParam_sequence, hf_index, ett_gsm_map_er_IllegalSS_OperationParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_SS_NotAvailableParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_SS_NotAvailableParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_SS_NotAvailableParam_sequence, hf_index, ett_gsm_map_er_SS_NotAvailableParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_SS_SubscriptionViolationParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_SS_SubscriptionViolationParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_SS_SubscriptionViolationParam_sequence, hf_index, ett_gsm_map_er_SS_SubscriptionViolationParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_InformationNotAvailableParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_InformationNotAvailableParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_InformationNotAvailableParam_sequence, hf_index, ett_gsm_map_er_InformationNotAvailableParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_SubBusyForMT_SMS_Param_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_er_gprsConnectionSuspended, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_SubBusyForMT_SMS_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_er_SubBusyForMT_SMS_Param); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_MessageWaitListFullParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_MessageWaitListFullParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_er_MessageWaitListFullParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ResourceLimitationParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ResourceLimitationParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ResourceLimitationParam_sequence, hf_index, ett_gsm_map_er_ResourceLimitationParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_NoGroupCallNbParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_NoGroupCallNbParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_er_NoGroupCallNbParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_IncompatibleTerminalParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_IncompatibleTerminalParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_er_IncompatibleTerminalParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_ShortTermDenialParam_sequence[] = { + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_ShortTermDenialParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_ShortTermDenialParam_sequence, hf_index, ett_gsm_map_er_ShortTermDenialParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_LongTermDenialParam_sequence[] = { + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_LongTermDenialParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_LongTermDenialParam_sequence, hf_index, ett_gsm_map_er_LongTermDenialParam); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_UnauthorizedRequestingNetwork_Param_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_UnauthorizedRequestingNetwork_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_er_UnauthorizedRequestingNetwork_Param); + + return offset; +} + + +const value_string gsm_map_er_UnauthorizedLCSClient_Diagnostic_vals[] = { + { 0, "noAdditionalInformation" }, + { 1, "clientNotInMSPrivacyExceptionList" }, + { 2, "callToClientNotSetup" }, + { 3, "privacyOverrideNotApplicable" }, + { 4, "disallowedByLocalRegulatoryRequirements" }, + { 5, "unauthorizedPrivacyClass" }, + { 6, "unauthorizedCallSessionUnrelatedExternalClient" }, + { 7, "unauthorizedCallSessionRelatedExternalClient" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_UnauthorizedLCSClient_Param_sequence[] = { + { &hf_gsm_map_er_unauthorizedLCSClient_Diagnostic, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_UnauthorizedLCSClient_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_er_UnauthorizedLCSClient_Param); + + return offset; +} + + +const value_string gsm_map_er_PositionMethodFailure_Diagnostic_vals[] = { + { 0, "congestion" }, + { 1, "insufficientResources" }, + { 2, "insufficientMeasurementData" }, + { 3, "inconsistentMeasurementData" }, + { 4, "locationProcedureNotCompleted" }, + { 5, "locationProcedureNotSupportedByTargetMS" }, + { 6, "qoSNotAttainable" }, + { 7, "positionMethodNotAvailableInNetwork" }, + { 8, "positionMethodNotAvailableInLocationArea" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_er_PositionMethodFailure_Diagnostic(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_PositionMethodFailure_Param_sequence[] = { + { &hf_gsm_map_er_positionMethodFailure_Diagnostic, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_PositionMethodFailure_Diagnostic }, + { &hf_gsm_map_er_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_PositionMethodFailure_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_er_PositionMethodFailure_Param); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_UnknownOrUnreachableLCSClient_Param_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_UnknownOrUnreachableLCSClient_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_er_UnknownOrUnreachableLCSClient_Param); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_MM_EventNotSupported_Param_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_MM_EventNotSupported_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_MM_EventNotSupported_Param_sequence, hf_index, ett_gsm_map_er_MM_EventNotSupported_Param); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_TargetCellOutsideGCA_Param_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_TargetCellOutsideGCA_Param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_TargetCellOutsideGCA_Param_sequence, hf_index, ett_gsm_map_er_TargetCellOutsideGCA_Param); + + return offset; +} + + +static const ber_sequence_t gsm_map_er_OngoingGroupCallParam_sequence[] = { + { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_er_OngoingGroupCallParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_er_OngoingGroupCallParam_sequence, hf_index, ett_gsm_map_er_OngoingGroupCallParam); + + return offset; +} + + +/* --- Module MAP-SM-DataTypes --- --- --- */ + + + +static int +dissect_gsm_map_sm_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + + +static int +dissect_gsm_map_sm_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_sm_SM_RP_MTI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_sm_SM_RP_SMEA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *payload_tvb; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + &payload_tvb); + + if (payload_tvb) { + guint32 tvb_offset = 0; + proto_item_set_hidden(actx->created_item); + dis_field_addr(payload_tvb, actx->pinfo, tree, &tvb_offset, "SM-RP-SMEA"); + } + + + + return offset; +} + + +static const value_string gsm_map_sm_SM_DeliveryNotIntended_vals[] = { + { 0, "onlyIMSI-requested" }, + { 1, "onlyMCC-MNC-requested" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_sm_SM_DeliveryNotIntended(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_sm_SIP_URI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_CorrelationID_sequence[] = { + { &hf_gsm_map_sm_hlr_id , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_HLR_Id }, + { &hf_gsm_map_sm_sip_uri_A, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SIP_URI }, + { &hf_gsm_map_sm_sip_uri_B, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SIP_URI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_CorrelationID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_CorrelationID_sequence, hf_index, ett_gsm_map_sm_CorrelationID); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_RoutingInfoForSM_Arg_sequence[] = { + { &hf_gsm_map_sm_msisdn , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_sm_RP_PRI, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_BOOLEAN }, + { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_gprsSupportIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_sm_RP_MTI, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_RP_MTI }, + { &hf_gsm_map_sm_sm_RP_SMEA, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_RP_SMEA }, + { &hf_gsm_map_sm_sm_deliveryNotIntended, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryNotIntended }, + { &hf_gsm_map_sm_ip_sm_gwGuidanceIndicator, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_imsi , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_sm_t4_Trigger_Indicator, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_singleAttemptDelivery, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID }, + { &hf_gsm_map_sm_smsf_supportIndicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_RoutingInfoForSM_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_RoutingInfoForSM_Arg_sequence, hf_index, ett_gsm_map_sm_RoutingInfoForSM_Arg); + + return offset; +} + + +static const value_string gsm_map_sm_Additional_Number_vals[] = { + { 0, "msc-Number" }, + { 1, "sgsn-Number" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_sm_Additional_Number_choice[] = { + { 0, &hf_gsm_map_sm_msc_Number, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 1, &hf_gsm_map_sm_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_Additional_Number(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_sm_Additional_Number_choice, hf_index, ett_gsm_map_sm_Additional_Number, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_LocationInfoWithLMSI_sequence[] = { + { &hf_gsm_map_sm_networkNode_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_lmsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_gprsNodeIndicator, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_additional_Number, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_Additional_Number }, + { &hf_gsm_map_sm_networkNodeDiameterAddress, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_additionalNetworkNodeDiameterAddress, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_thirdNumber, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_Additional_Number }, + { &hf_gsm_map_sm_thirdNetworkNodeDiameterAddress, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_imsNodeIndicator, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_smsf_3gpp_Number, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_smsf_3gpp_DiameterAddress, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_smsf_non_3gpp_Number, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_smsf_non_3gpp_DiameterAddress, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_smsf_3gpp_address_indicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_smsf_non_3gpp_address_indicator, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_LocationInfoWithLMSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_LocationInfoWithLMSI_sequence, hf_index, ett_gsm_map_sm_LocationInfoWithLMSI); + + return offset; +} + + + +static int +dissect_gsm_map_sm_SM_DeliveryTimerValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_IP_SM_GW_Guidance_sequence[] = { + { &hf_gsm_map_sm_minimumDeliveryTimeValue, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_SM_DeliveryTimerValue }, + { &hf_gsm_map_sm_recommendedDeliveryTimeValue, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_SM_DeliveryTimerValue }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_IP_SM_GW_Guidance(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_IP_SM_GW_Guidance_sequence, hf_index, ett_gsm_map_sm_IP_SM_GW_Guidance); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_RoutingInfoForSM_Res_sequence[] = { + { &hf_gsm_map_sm_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_sm_locationInfoWithLMSI, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_LocationInfoWithLMSI }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_ip_sm_gwGuidance, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_IP_SM_GW_Guidance }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_RoutingInfoForSM_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_RoutingInfoForSM_Res_sequence, hf_index, ett_gsm_map_sm_RoutingInfoForSM_Res); + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_imsi(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_IMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_lmsi(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_LMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_serviceCentreAddressDA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_RECV; + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_noSM_RP_DA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_da_id = prev_packet_info->sm_rp_da_id; + gsm_map_pi->sm_rp_da_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_da_str); + } + } + + + return offset; +} + + +const value_string gsm_map_sm_SM_RP_DA_vals[] = { + { 0, "imsi" }, + { 1, "lmsi" }, + { 4, "serviceCentreAddressDA" }, + { 5, "noSM-RP-DA" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_sm_SM_RP_DA_choice[] = { + { 0, &hf_gsm_map_sm_imsi_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_imsi }, + { 1, &hf_gsm_map_sm_lmsi_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_lmsi }, + { 4, &hf_gsm_map_sm_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_serviceCentreAddressDA }, + { 5, &hf_gsm_map_sm_noSM_RP_DA, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_noSM_RP_DA }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_sm_SM_RP_DA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_sm_SM_RP_DA_choice, hf_index, ett_gsm_map_sm_SM_RP_DA, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_msisdn(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_MSISDN; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_serviceCentreAddressOA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_noSM_RP_OA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_oa_id = prev_packet_info->sm_rp_oa_id; + gsm_map_pi->sm_rp_oa_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_oa_str); + } + } + + + return offset; +} + + +const value_string gsm_map_sm_SM_RP_OA_vals[] = { + { 2, "msisdn" }, + { 4, "serviceCentreAddressOA" }, + { 5, "noSM-RP-OA" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_sm_SM_RP_OA_choice[] = { + { 2, &hf_gsm_map_sm_msisdn_01, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_msisdn }, + { 4, &hf_gsm_map_sm_serviceCentreAddressOA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_serviceCentreAddressOA }, + { 5, &hf_gsm_map_sm_noSM_RP_OA, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_noSM_RP_OA }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_sm_SM_RP_OA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_sm_SM_RP_OA_choice, hf_index, ett_gsm_map_sm_SM_RP_OA, + NULL); + + return offset; +} + + +static const value_string gsm_map_sm_SM_DeliveryOutcome_vals[] = { + { 0, "memoryCapacityExceeded" }, + { 1, "absentSubscriber" }, + { 2, "successfulTransfer" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_sm_SM_DeliveryOutcome(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = { + { &hf_gsm_map_sm_sm_RP_DA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_DA }, + { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA }, + { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID }, + { &hf_gsm_map_sm_sm_DeliveryOutcome, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_MO_ForwardSM_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MO_ForwardSM_Arg_sequence, hf_index, ett_gsm_map_sm_MO_ForwardSM_Arg); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Res_sequence[] = { + { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_MO_ForwardSM_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MO_ForwardSM_Res_sequence, hf_index, ett_gsm_map_sm_MO_ForwardSM_Res); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = { + { &hf_gsm_map_sm_sm_RP_DA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_DA }, + { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA }, + { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_sm_moreMessagesToSend, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_smDeliveryTimer, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_SM_DeliveryTimerValue }, + { &hf_gsm_map_sm_smDeliveryStartTime, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Time }, + { &hf_gsm_map_sm_smsOverIP_OnlyIndicator, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID }, + { &hf_gsm_map_sm_maximumRetransmissionTime, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Time }, + { &hf_gsm_map_sm_smsGmscAddress, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_smsGmscDiameterAddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_MT_ForwardSM_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MT_ForwardSM_Arg_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_Arg); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Res_sequence[] = { + { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_MT_ForwardSM_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MT_ForwardSM_Res_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_Res); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_ReportSM_DeliveryStatusArg_sequence[] = { + { &hf_gsm_map_sm_msisdn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_sm_sm_DeliveryOutcome, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_SM_DeliveryOutcome }, + { &hf_gsm_map_sm_absentSubscriberDiagnosticSM, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_gprsSupportIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_deliveryOutcomeIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_additionalSM_DeliveryOutcome, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome }, + { &hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_ip_sm_gw_Indicator, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome }, + { &hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_imsi , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_sm_singleAttemptDelivery, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID }, + { &hf_gsm_map_sm_smsf_3gpp_deliveryOutcomeIndicator, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_smsf_3gpp_deliveryOutcome, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome }, + { &hf_gsm_map_sm_smsf_3gpp_absentSubscriberDiagSM, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_smsf_non_3gpp_deliveryOutcomeIndicator, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_smsf_non_3gpp_deliveryOutcome, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome }, + { &hf_gsm_map_sm_smsf_non_3gpp_absentSubscriberDiagSM, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_ReportSM_DeliveryStatusArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_sm_ReportSM_DeliveryStatusArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_ReportSM_DeliveryStatusRes_sequence[] = { + { &hf_gsm_map_sm_storedMSISDN, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_ReportSM_DeliveryStatusRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_sm_ReportSM_DeliveryStatusRes); + + return offset; +} + + +static const value_string gsm_map_sm_SmsGmsc_Alert_Event_vals[] = { + { 0, "msAvailableForMtSms" }, + { 1, "msUnderNewServingNode" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_sm_SmsGmsc_Alert_Event(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_AlertServiceCentreArg_sequence[] = { + { &hf_gsm_map_sm_msisdn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_sm_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_sm_correlationID, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_CorrelationID }, + { &hf_gsm_map_sm_maximumUeAvailabilityTime, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Time }, + { &hf_gsm_map_sm_smsGmscAlertEvent, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SmsGmsc_Alert_Event }, + { &hf_gsm_map_sm_smsGmscDiameterAddress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_newSGSNNumber, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_newSGSNDiameterAddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_newMMENumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_newMMEDiameterAddress, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { &hf_gsm_map_sm_newMSCNumber, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_AlertServiceCentreArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_sm_AlertServiceCentreArg); + + return offset; +} + + +static int * const gsm_map_sm_MW_Status_bits[] = { + &hf_gsm_map_sm_MW_Status_sc_AddressNotIncluded, + &hf_gsm_map_sm_MW_Status_mnrf_Set, + &hf_gsm_map_sm_MW_Status_mcef_Set, + &hf_gsm_map_sm_MW_Status_mnrg_Set, + &hf_gsm_map_sm_MW_Status_mnr5g_Set, + &hf_gsm_map_sm_MW_Status_mnr5gn3g_Set, + NULL +}; + +static int +dissect_gsm_map_sm_MW_Status(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MW_Status_bits, 6, hf_index, ett_gsm_map_sm_MW_Status, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_InformServiceCentreArg_sequence[] = { + { &hf_gsm_map_sm_storedMSISDN, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_sm_mw_Status, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_MW_Status }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_absentSubscriberDiagnosticSM, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_smsf3gppAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_sm_smsfNon3gppAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_InformServiceCentreArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_InformServiceCentreArg_sequence, hf_index, ett_gsm_map_sm_InformServiceCentreArg); + + return offset; +} + + +static const value_string gsm_map_sm_AlertReason_vals[] = { + { 0, "ms-Present" }, + { 1, "memoryAvailable" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_sm_AlertReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_ReadyForSM_Arg_sequence[] = { + { &hf_gsm_map_sm_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_sm_alertReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_AlertReason }, + { &hf_gsm_map_sm_alertReasonIndicator, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_additionalAlertReasonIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_maximumUeAvailabilityTime, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Time }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_ReadyForSM_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_sm_ReadyForSM_Arg); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_ReadyForSM_Res_sequence[] = { + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_ReadyForSM_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_ReadyForSM_Res_sequence, hf_index, ett_gsm_map_sm_ReadyForSM_Res); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence[] = { + { &hf_gsm_map_sm_asciCallReference, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ASCI_CallReference }, + { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA }, + { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_VGCS_Arg); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_DispatcherList_sequence_of[1] = { + { &hf_gsm_map_sm_DispatcherList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, +}; + +static int +dissect_gsm_map_sm_DispatcherList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_DispatcherList_sequence_of, hf_index, ett_gsm_map_sm_DispatcherList); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_AdditionalDispatcherList_sequence_of[1] = { + { &hf_gsm_map_sm_AdditionalDispatcherList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, +}; + +static int +dissect_gsm_map_sm_AdditionalDispatcherList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_AdditionalDispatcherList_sequence_of, hf_index, ett_gsm_map_sm_AdditionalDispatcherList); + + return offset; +} + + +static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence[] = { + { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_sm_dispatcherList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_DispatcherList }, + { &hf_gsm_map_sm_ongoingCall, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_NULL }, + { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_sm_additionalDispatcherList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_AdditionalDispatcherList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_VGCS_Res); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +/* --- Module MAP-OM-DataTypes --- --- --- */ + + + +static int +dissect_gsm_map_om_TraceReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_TraceType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_TraceReference2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_TraceDepth_vals[] = { + { 0, "minimum" }, + { 1, "medium" }, + { 2, "maximum" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_TraceDepth(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_TraceDepthExtension_vals[] = { + { 0, "minimumWithoutVendorSpecificExtension" }, + { 1, "mediumWithoutVendorSpecificExtension" }, + { 2, "maximumWithoutVendorSpecificExtension" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_TraceDepthExtension(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_TraceDepthList_sequence[] = { + { &hf_gsm_map_om_msc_s_TraceDepth, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_mgw_TraceDepth, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_sgsn_TraceDepth, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_ggsn_TraceDepth, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_rnc_TraceDepth, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_bmsc_TraceDepth, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_mme_TraceDepth, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_sgw_TraceDepth, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_pgw_TraceDepth, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_eNB_TraceDepth, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_msc_s_TraceDepthExtension, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_mgw_TraceDepthExtension, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_sgsn_TraceDepthExtension, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_ggsn_TraceDepthExtension, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_rnc_TraceDepthExtension, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_bmsc_TraceDepthExtension, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_mme_TraceDepthExtension, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_sgw_TraceDepthExtension, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_pgw_TraceDepthExtension, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_eNB_TraceDepthExtension, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_TraceDepthList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_TraceDepthList_sequence, hf_index, ett_gsm_map_om_TraceDepthList); + + return offset; +} + + +static int * const gsm_map_om_TraceNE_TypeList_bits[] = { + &hf_gsm_map_om_TraceNE_TypeList_msc_s, + &hf_gsm_map_om_TraceNE_TypeList_mgw, + &hf_gsm_map_om_TraceNE_TypeList_sgsn, + &hf_gsm_map_om_TraceNE_TypeList_ggsn, + &hf_gsm_map_om_TraceNE_TypeList_rnc, + &hf_gsm_map_om_TraceNE_TypeList_bm_sc, + &hf_gsm_map_om_TraceNE_TypeList_mme, + &hf_gsm_map_om_TraceNE_TypeList_sgw, + &hf_gsm_map_om_TraceNE_TypeList_pgw, + &hf_gsm_map_om_TraceNE_TypeList_eNB, + NULL +}; + +static int +dissect_gsm_map_om_TraceNE_TypeList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_TraceNE_TypeList_bits, 10, hf_index, ett_gsm_map_om_TraceNE_TypeList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_MSC_S_InterfaceList_bits[] = { + &hf_gsm_map_om_MSC_S_InterfaceList_a, + &hf_gsm_map_om_MSC_S_InterfaceList_iu, + &hf_gsm_map_om_MSC_S_InterfaceList_mc, + &hf_gsm_map_om_MSC_S_InterfaceList_map_g, + &hf_gsm_map_om_MSC_S_InterfaceList_map_b, + &hf_gsm_map_om_MSC_S_InterfaceList_map_e, + &hf_gsm_map_om_MSC_S_InterfaceList_map_f, + &hf_gsm_map_om_MSC_S_InterfaceList_cap, + &hf_gsm_map_om_MSC_S_InterfaceList_map_d, + &hf_gsm_map_om_MSC_S_InterfaceList_map_c, + NULL +}; + +static int +dissect_gsm_map_om_MSC_S_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MSC_S_InterfaceList_bits, 10, hf_index, ett_gsm_map_om_MSC_S_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_MGW_InterfaceList_bits[] = { + &hf_gsm_map_om_MGW_InterfaceList_mc, + &hf_gsm_map_om_MGW_InterfaceList_nb_up, + &hf_gsm_map_om_MGW_InterfaceList_iu_up, + NULL +}; + +static int +dissect_gsm_map_om_MGW_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MGW_InterfaceList_bits, 3, hf_index, ett_gsm_map_om_MGW_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_SGSN_InterfaceList_bits[] = { + &hf_gsm_map_om_SGSN_InterfaceList_gb, + &hf_gsm_map_om_SGSN_InterfaceList_iu, + &hf_gsm_map_om_SGSN_InterfaceList_gn, + &hf_gsm_map_om_SGSN_InterfaceList_map_gr, + &hf_gsm_map_om_SGSN_InterfaceList_map_gd, + &hf_gsm_map_om_SGSN_InterfaceList_map_gf, + &hf_gsm_map_om_SGSN_InterfaceList_gs, + &hf_gsm_map_om_SGSN_InterfaceList_ge, + &hf_gsm_map_om_SGSN_InterfaceList_s3, + &hf_gsm_map_om_SGSN_InterfaceList_s4, + &hf_gsm_map_om_SGSN_InterfaceList_s6d, + NULL +}; + +static int +dissect_gsm_map_om_SGSN_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_SGSN_InterfaceList_bits, 11, hf_index, ett_gsm_map_om_SGSN_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_GGSN_InterfaceList_bits[] = { + &hf_gsm_map_om_GGSN_InterfaceList_gn, + &hf_gsm_map_om_GGSN_InterfaceList_gi, + &hf_gsm_map_om_GGSN_InterfaceList_gmb, + NULL +}; + +static int +dissect_gsm_map_om_GGSN_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_GGSN_InterfaceList_bits, 3, hf_index, ett_gsm_map_om_GGSN_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_RNC_InterfaceList_bits[] = { + &hf_gsm_map_om_RNC_InterfaceList_iu, + &hf_gsm_map_om_RNC_InterfaceList_iur, + &hf_gsm_map_om_RNC_InterfaceList_iub, + &hf_gsm_map_om_RNC_InterfaceList_uu, + NULL +}; + +static int +dissect_gsm_map_om_RNC_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_RNC_InterfaceList_bits, 4, hf_index, ett_gsm_map_om_RNC_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_BMSC_InterfaceList_bits[] = { + &hf_gsm_map_om_BMSC_InterfaceList_gmb, + NULL +}; + +static int +dissect_gsm_map_om_BMSC_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_BMSC_InterfaceList_bits, 1, hf_index, ett_gsm_map_om_BMSC_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_MME_InterfaceList_bits[] = { + &hf_gsm_map_om_MME_InterfaceList_s1_mme, + &hf_gsm_map_om_MME_InterfaceList_s3, + &hf_gsm_map_om_MME_InterfaceList_s6a, + &hf_gsm_map_om_MME_InterfaceList_s10, + &hf_gsm_map_om_MME_InterfaceList_s11, + NULL +}; + +static int +dissect_gsm_map_om_MME_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MME_InterfaceList_bits, 5, hf_index, ett_gsm_map_om_MME_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_SGW_InterfaceList_bits[] = { + &hf_gsm_map_om_SGW_InterfaceList_s4, + &hf_gsm_map_om_SGW_InterfaceList_s5, + &hf_gsm_map_om_SGW_InterfaceList_s8b, + &hf_gsm_map_om_SGW_InterfaceList_s11, + &hf_gsm_map_om_SGW_InterfaceList_gxc, + NULL +}; + +static int +dissect_gsm_map_om_SGW_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_SGW_InterfaceList_bits, 5, hf_index, ett_gsm_map_om_SGW_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_PGW_InterfaceList_bits[] = { + &hf_gsm_map_om_PGW_InterfaceList_s2a, + &hf_gsm_map_om_PGW_InterfaceList_s2b, + &hf_gsm_map_om_PGW_InterfaceList_s2c, + &hf_gsm_map_om_PGW_InterfaceList_s5, + &hf_gsm_map_om_PGW_InterfaceList_s6b, + &hf_gsm_map_om_PGW_InterfaceList_gx, + &hf_gsm_map_om_PGW_InterfaceList_s8b, + &hf_gsm_map_om_PGW_InterfaceList_sgi, + NULL +}; + +static int +dissect_gsm_map_om_PGW_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_PGW_InterfaceList_bits, 8, hf_index, ett_gsm_map_om_PGW_InterfaceList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_ENB_InterfaceList_bits[] = { + &hf_gsm_map_om_ENB_InterfaceList_s1_mme, + &hf_gsm_map_om_ENB_InterfaceList_x2, + &hf_gsm_map_om_ENB_InterfaceList_uu, + NULL +}; + +static int +dissect_gsm_map_om_ENB_InterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_ENB_InterfaceList_bits, 3, hf_index, ett_gsm_map_om_ENB_InterfaceList, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_TraceInterfaceList_sequence[] = { + { &hf_gsm_map_om_msc_s_List, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_InterfaceList }, + { &hf_gsm_map_om_mgw_List , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_InterfaceList }, + { &hf_gsm_map_om_sgsn_List, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGSN_InterfaceList }, + { &hf_gsm_map_om_ggsn_List, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_GGSN_InterfaceList }, + { &hf_gsm_map_om_rnc_List , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_RNC_InterfaceList }, + { &hf_gsm_map_om_bmsc_List, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_BMSC_InterfaceList }, + { &hf_gsm_map_om_mme_List , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MME_InterfaceList }, + { &hf_gsm_map_om_sgw_List , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGW_InterfaceList }, + { &hf_gsm_map_om_pgw_List , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PGW_InterfaceList }, + { &hf_gsm_map_om_eNB_List , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_ENB_InterfaceList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_TraceInterfaceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_TraceInterfaceList_sequence, hf_index, ett_gsm_map_om_TraceInterfaceList); + + return offset; +} + + +static int * const gsm_map_om_MSC_S_EventList_bits[] = { + &hf_gsm_map_om_MSC_S_EventList_mo_mtCall, + &hf_gsm_map_om_MSC_S_EventList_mo_mt_sms, + &hf_gsm_map_om_MSC_S_EventList_lu_imsiAttach_imsiDetach, + &hf_gsm_map_om_MSC_S_EventList_handovers, + &hf_gsm_map_om_MSC_S_EventList_ss, + NULL +}; + +static int +dissect_gsm_map_om_MSC_S_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MSC_S_EventList_bits, 5, hf_index, ett_gsm_map_om_MSC_S_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_MGW_EventList_bits[] = { + &hf_gsm_map_om_MGW_EventList_context, + NULL +}; + +static int +dissect_gsm_map_om_MGW_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MGW_EventList_bits, 1, hf_index, ett_gsm_map_om_MGW_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_SGSN_EventList_bits[] = { + &hf_gsm_map_om_SGSN_EventList_pdpContext, + &hf_gsm_map_om_SGSN_EventList_mo_mt_sms, + &hf_gsm_map_om_SGSN_EventList_rau_gprsAttach_gprsDetach, + &hf_gsm_map_om_SGSN_EventList_mbmsContext, + NULL +}; + +static int +dissect_gsm_map_om_SGSN_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_SGSN_EventList_bits, 4, hf_index, ett_gsm_map_om_SGSN_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_GGSN_EventList_bits[] = { + &hf_gsm_map_om_GGSN_EventList_pdpContext, + &hf_gsm_map_om_GGSN_EventList_mbmsContext, + NULL +}; + +static int +dissect_gsm_map_om_GGSN_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_GGSN_EventList_bits, 2, hf_index, ett_gsm_map_om_GGSN_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_BMSC_EventList_bits[] = { + &hf_gsm_map_om_BMSC_EventList_mbmsMulticastServiceActivation, + NULL +}; + +static int +dissect_gsm_map_om_BMSC_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_BMSC_EventList_bits, 1, hf_index, ett_gsm_map_om_BMSC_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_MME_EventList_bits[] = { + &hf_gsm_map_om_MME_EventList_ue_initiatedPDNconectivityRequest, + &hf_gsm_map_om_MME_EventList_serviceRequestts, + &hf_gsm_map_om_MME_EventList_initialAttachTrackingAreaUpdateDetach, + &hf_gsm_map_om_MME_EventList_ue_initiatedPDNdisconnection, + &hf_gsm_map_om_MME_EventList_bearerActivationModificationDeletion, + &hf_gsm_map_om_MME_EventList_handover, + NULL +}; + +static int +dissect_gsm_map_om_MME_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MME_EventList_bits, 6, hf_index, ett_gsm_map_om_MME_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_SGW_EventList_bits[] = { + &hf_gsm_map_om_SGW_EventList_pdn_connectionCreation, + &hf_gsm_map_om_SGW_EventList_pdn_connectionTermination, + &hf_gsm_map_om_SGW_EventList_bearerActivationModificationDeletion, + NULL +}; + +static int +dissect_gsm_map_om_SGW_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_SGW_EventList_bits, 3, hf_index, ett_gsm_map_om_SGW_EventList, + NULL); + + return offset; +} + + +static int * const gsm_map_om_PGW_EventList_bits[] = { + &hf_gsm_map_om_PGW_EventList_pdn_connectionCreation, + &hf_gsm_map_om_PGW_EventList_pdn_connectionTermination, + &hf_gsm_map_om_PGW_EventList_bearerActivationModificationDeletion, + NULL +}; + +static int +dissect_gsm_map_om_PGW_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_PGW_EventList_bits, 3, hf_index, ett_gsm_map_om_PGW_EventList, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_TraceEventList_sequence[] = { + { &hf_gsm_map_om_msc_s_List_01, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_EventList }, + { &hf_gsm_map_om_mgw_List_01, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_EventList }, + { &hf_gsm_map_om_sgsn_List_01, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGSN_EventList }, + { &hf_gsm_map_om_ggsn_List_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_GGSN_EventList }, + { &hf_gsm_map_om_bmsc_List_01, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_BMSC_EventList }, + { &hf_gsm_map_om_mme_List_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MME_EventList }, + { &hf_gsm_map_om_sgw_List_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGW_EventList }, + { &hf_gsm_map_om_pgw_List_01, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PGW_EventList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_TraceEventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_TraceEventList_sequence, hf_index, ett_gsm_map_om_TraceEventList); + + return offset; +} + + +static const value_string gsm_map_om_JobType_vals[] = { + { 0, "immediate-MDT-only" }, + { 1, "logged-MDT-only" }, + { 2, "trace-only" }, + { 3, "immediate-MDT-and-trace" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_JobType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_CGI_List_sequence_of[1] = { + { &hf_gsm_map_om_CGI_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_GlobalCellId }, +}; + +static int +dissect_gsm_map_om_CGI_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_CGI_List_sequence_of, hf_index, ett_gsm_map_om_CGI_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_E_UTRAN_CGI_List_sequence_of[1] = { + { &hf_gsm_map_om_E_UTRAN_CGI_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_E_UTRAN_CGI }, +}; + +static int +dissect_gsm_map_om_E_UTRAN_CGI_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_E_UTRAN_CGI_List_sequence_of, hf_index, ett_gsm_map_om_E_UTRAN_CGI_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_RoutingAreaId_List_sequence_of[1] = { + { &hf_gsm_map_om_RoutingAreaId_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_RAIdentity }, +}; + +static int +dissect_gsm_map_om_RoutingAreaId_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_RoutingAreaId_List_sequence_of, hf_index, ett_gsm_map_om_RoutingAreaId_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_LocationAreaId_List_sequence_of[1] = { + { &hf_gsm_map_om_LocationAreaId_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LAIFixedLength }, +}; + +static int +dissect_gsm_map_om_LocationAreaId_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_LocationAreaId_List_sequence_of, hf_index, ett_gsm_map_om_LocationAreaId_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_TrackingAreaId_List_sequence_of[1] = { + { &hf_gsm_map_om_TrackingAreaId_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_TA_Id }, +}; + +static int +dissect_gsm_map_om_TrackingAreaId_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_TrackingAreaId_List_sequence_of, hf_index, ett_gsm_map_om_TrackingAreaId_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_AreaScope_sequence[] = { + { &hf_gsm_map_om_cgi_List , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_CGI_List }, + { &hf_gsm_map_om_e_utran_cgi_List, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_E_UTRAN_CGI_List }, + { &hf_gsm_map_om_routingAreaId_List, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_RoutingAreaId_List }, + { &hf_gsm_map_om_locationAreaId_List, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_LocationAreaId_List }, + { &hf_gsm_map_om_trackingAreaId_List, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TrackingAreaId_List }, + { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_AreaScope(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_AreaScope_sequence, hf_index, ett_gsm_map_om_AreaScope); + + return offset; +} + + + +static int +dissect_gsm_map_om_ListOfMeasurements(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_ReportingTrigger(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_ReportInterval_vals[] = { + { 0, "umts250ms" }, + { 1, "umts500ms" }, + { 2, "umts1000ms" }, + { 3, "umts2000ms" }, + { 4, "umts3000ms" }, + { 5, "umts4000ms" }, + { 6, "umts6000ms" }, + { 7, "umts8000ms" }, + { 8, "umts12000ms" }, + { 9, "umts16000ms" }, + { 10, "umts20000ms" }, + { 11, "umts24000ms" }, + { 12, "umts28000ms" }, + { 13, "umts32000ms" }, + { 14, "umts64000ms" }, + { 15, "lte120ms" }, + { 16, "lte240ms" }, + { 17, "lte480ms" }, + { 18, "lte640ms" }, + { 19, "lte1024ms" }, + { 20, "lte2048ms" }, + { 21, "lte5120ms" }, + { 22, "lte10240ms" }, + { 23, "lte1min" }, + { 24, "lte6min" }, + { 25, "lte12min" }, + { 26, "lte30min" }, + { 27, "lte60min" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_ReportInterval(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_ReportAmount_vals[] = { + { 0, "d1" }, + { 1, "d2" }, + { 2, "d4" }, + { 3, "d8" }, + { 4, "d16" }, + { 5, "d32" }, + { 6, "d64" }, + { 7, "infinity" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_ReportAmount(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_EventThresholdRSRP(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_EventThresholdRSRQ(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_LoggingInterval_vals[] = { + { 0, "d1dot28" }, + { 1, "d2dot56" }, + { 2, "d5dot12" }, + { 3, "d10dot24" }, + { 4, "d20dot48" }, + { 5, "d30dot72" }, + { 6, "d40dot96" }, + { 7, "d61dot44" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_LoggingInterval(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_LoggingDuration_vals[] = { + { 0, "d600sec" }, + { 1, "d1200sec" }, + { 2, "d2400sec" }, + { 3, "d3600sec" }, + { 4, "d5400sec" }, + { 5, "d7200sec" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_LoggingDuration(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_PeriodUMTS_vals[] = { + { 0, "d250ms" }, + { 1, "d500ms" }, + { 2, "d1000ms" }, + { 3, "d2000ms" }, + { 4, "d3000ms" }, + { 5, "d4000ms" }, + { 6, "d6000ms" }, + { 7, "d8000ms" }, + { 8, "d12000ms" }, + { 9, "d16000ms" }, + { 10, "d20000ms" }, + { 11, "d24000ms" }, + { 12, "d28000ms" }, + { 13, "d32000ms" }, + { 14, "d64000ms" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_PeriodUMTS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_om_PeriodLTE_vals[] = { + { 0, "d1024ms" }, + { 1, "d1280ms" }, + { 2, "d2048ms" }, + { 3, "d2560ms" }, + { 4, "d5120ms" }, + { 5, "d10240ms" }, + { 6, "d1min" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_om_PeriodLTE(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_PositioningMethod(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_MeasurementQuantity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_EventThreshold1F(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_om_EventThreshold1I(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_MDT_Allowed_PLMNId_List_sequence_of[1] = { + { &hf_gsm_map_om_MDT_Allowed_PLMNId_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_PLMN_Id }, +}; + +static int +dissect_gsm_map_om_MDT_Allowed_PLMNId_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MDT_Allowed_PLMNId_List_sequence_of, hf_index, ett_gsm_map_om_MDT_Allowed_PLMNId_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_MDT_Configuration_sequence[] = { + { &hf_gsm_map_om_jobType , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_JobType }, + { &hf_gsm_map_om_areaScope, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_AreaScope }, + { &hf_gsm_map_om_listOfMeasurements, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_ListOfMeasurements }, + { &hf_gsm_map_om_reportingTrigger, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_ReportingTrigger }, + { &hf_gsm_map_om_reportInterval, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_ReportInterval }, + { &hf_gsm_map_om_reportAmount, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_ReportAmount }, + { &hf_gsm_map_om_eventThresholdRSRP, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_EventThresholdRSRP }, + { &hf_gsm_map_om_eventThresholdRSRQ, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_EventThresholdRSRQ }, + { &hf_gsm_map_om_loggingInterval, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_LoggingInterval }, + { &hf_gsm_map_om_loggingDuration, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_LoggingDuration }, + { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_om_measurementPeriodUMTS, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodUMTS }, + { &hf_gsm_map_om_measurementPeriodLTE, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodLTE }, + { &hf_gsm_map_om_collectionPeriodRRM_UMTS, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodUMTS }, + { &hf_gsm_map_om_collectionPeriodRRM_LTE, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodLTE }, + { &hf_gsm_map_om_positioningMethod, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PositioningMethod }, + { &hf_gsm_map_om_measurementQuantity, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MeasurementQuantity }, + { &hf_gsm_map_om_eventThreshold1F, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_EventThreshold1F }, + { &hf_gsm_map_om_eventThreshold1I, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_EventThreshold1I }, + { &hf_gsm_map_om_mdt_Allowed_PLMN_List, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MDT_Allowed_PLMNId_List }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_MDT_Configuration(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_MDT_Configuration_sequence, hf_index, ett_gsm_map_om_MDT_Configuration); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_ActivateTraceModeArg_sequence[] = { + { &hf_gsm_map_om_imsi , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_om_traceReference, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference }, + { &hf_gsm_map_om_traceType, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType }, + { &hf_gsm_map_om_omc_Id , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_om_traceReference2, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference2 }, + { &hf_gsm_map_om_traceDepthList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthList }, + { &hf_gsm_map_om_traceNE_TypeList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceNE_TypeList }, + { &hf_gsm_map_om_traceInterfaceList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceInterfaceList }, + { &hf_gsm_map_om_traceEventList, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceEventList }, + { &hf_gsm_map_om_traceCollectionEntity, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_om_mdt_Configuration, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MDT_Configuration }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_ActivateTraceModeArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_om_ActivateTraceModeArg); + + return offset; +} + + + +static int +dissect_gsm_map_om_TraceRecordingSessionReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_TracePropagationList_sequence[] = { + { &hf_gsm_map_om_traceReference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference }, + { &hf_gsm_map_om_traceType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType }, + { &hf_gsm_map_om_traceReference2, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference2 }, + { &hf_gsm_map_om_traceRecordingSessionReference, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceRecordingSessionReference }, + { &hf_gsm_map_om_rnc_TraceDepth, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_rnc_InterfaceList, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_RNC_InterfaceList }, + { &hf_gsm_map_om_msc_s_TraceDepth, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_msc_s_InterfaceList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_InterfaceList }, + { &hf_gsm_map_om_msc_s_EventList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_EventList }, + { &hf_gsm_map_om_mgw_TraceDepth, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth }, + { &hf_gsm_map_om_mgw_InterfaceList, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_InterfaceList }, + { &hf_gsm_map_om_mgw_EventList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_EventList }, + { &hf_gsm_map_om_rnc_TraceDepthExtension, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_msc_s_TraceDepthExtension, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { &hf_gsm_map_om_mgw_TraceDepthExtension, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthExtension }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_TracePropagationList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_TracePropagationList_sequence, hf_index, ett_gsm_map_om_TracePropagationList); + + return offset; +} + + + +static int +dissect_gsm_map_om_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_ActivateTraceModeRes_sequence[] = { + { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_om_traceSupportIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_ActivateTraceModeRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_om_ActivateTraceModeRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_DeactivateTraceModeArg_sequence[] = { + { &hf_gsm_map_om_imsi , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_om_traceReference, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference }, + { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_om_traceReference2, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference2 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_DeactivateTraceModeArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_om_DeactivateTraceModeArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_om_DeactivateTraceModeRes_sequence[] = { + { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_om_DeactivateTraceModeRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_om_DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_om_DeactivateTraceModeRes); + + return offset; +} + + +/* --- Module MAP-MS-DataTypes --- --- --- */ + + +static int * const gsm_map_ms_SupportedCamelPhases_bits[] = { + &hf_gsm_map_ms_SupportedCamelPhases_phase1, + &hf_gsm_map_ms_SupportedCamelPhases_phase2, + &hf_gsm_map_ms_SupportedCamelPhases_phase3, + &hf_gsm_map_ms_SupportedCamelPhases_phase4, + NULL +}; + +int +dissect_gsm_map_ms_SupportedCamelPhases(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SupportedCamelPhases_bits, 4, hf_index, ett_gsm_map_ms_SupportedCamelPhases, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const value_string gsm_map_ms_IST_SupportIndicator_vals[] = { + { 0, "basicISTSupported" }, + { 1, "istCommandSupported" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_IST_SupportIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_AgeIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_SuperChargerInfo_vals[] = { + { 0, "sendSubscriberData" }, + { 1, "subscriberDataStored" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_SuperChargerInfo_choice[] = { + { 0, &hf_gsm_map_ms_sendSubscriberData, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 1, &hf_gsm_map_ms_subscriberDataStored, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AgeIndicator }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SuperChargerInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_SuperChargerInfo_choice, hf_index, ett_gsm_map_ms_SuperChargerInfo, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_SupportedLCS_CapabilitySets_bits[] = { + &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet1, + &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet2, + &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet3, + &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet4, + &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet5, + NULL +}; + +static int +dissect_gsm_map_ms_SupportedLCS_CapabilitySets(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SupportedLCS_CapabilitySets_bits, 5, hf_index, ett_gsm_map_ms_SupportedLCS_CapabilitySets, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_OfferedCamel4CSIs_bits[] = { + &hf_gsm_map_ms_OfferedCamel4CSIs_o_csi, + &hf_gsm_map_ms_OfferedCamel4CSIs_d_csi, + &hf_gsm_map_ms_OfferedCamel4CSIs_vt_csi, + &hf_gsm_map_ms_OfferedCamel4CSIs_t_csi, + &hf_gsm_map_ms_OfferedCamel4CSIs_mt_sms_csi, + &hf_gsm_map_ms_OfferedCamel4CSIs_mg_csi, + &hf_gsm_map_ms_OfferedCamel4CSIs_psi_enhancements, + NULL +}; + +static int +dissect_gsm_map_ms_OfferedCamel4CSIs(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_OfferedCamel4CSIs_bits, 7, hf_index, ett_gsm_map_ms_OfferedCamel4CSIs, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_SupportedRAT_Types_bits[] = { + &hf_gsm_map_ms_SupportedRAT_Types_utran, + &hf_gsm_map_ms_SupportedRAT_Types_geran, + &hf_gsm_map_ms_SupportedRAT_Types_gan, + &hf_gsm_map_ms_SupportedRAT_Types_i_hspa_evolution, + &hf_gsm_map_ms_SupportedRAT_Types_e_utran, + &hf_gsm_map_ms_SupportedRAT_Types_nb_iot, + NULL +}; + +static int +dissect_gsm_map_ms_SupportedRAT_Types(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SupportedRAT_Types_bits, 6, hf_index, ett_gsm_map_ms_SupportedRAT_Types, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VLR_Capability_sequence[] = { + { &hf_gsm_map_ms_supportedCamelPhases, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_solsaSupportIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_istSupportIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_SupportIndicator }, + { &hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SuperChargerInfo }, + { &hf_gsm_map_ms_longFTN_Supported, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_supportedLCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets }, + { &hf_gsm_map_ms_offeredCamel4CSIs, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ms_supportedRAT_TypesIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedRAT_Types }, + { &hf_gsm_map_ms_longGroupID_Supported, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_mtRoamingForwardingSupported, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_msisdn_lessOperation_Supported, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_reset_ids_Supported, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_VLR_Capability(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VLR_Capability_sequence, hf_index, ett_gsm_map_ms_VLR_Capability); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ADD_Info_sequence[] = { + { &hf_gsm_map_ms_imeisv , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_ms_skipSubscriberDataUpdate, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ADD_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ADD_Info_sequence, hf_index, ett_gsm_map_ms_ADD_Info); + + return offset; +} + + + +static int +dissect_gsm_map_ms_LAC(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb = NULL; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, -1, + ¶meter_tvb); + + if (parameter_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + } + + + return offset; +} + + +static const value_string gsm_map_ms_LocationArea_vals[] = { + { 0, "laiFixedLength" }, + { 1, "lac" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_LocationArea_choice[] = { + { 0, &hf_gsm_map_ms_laiFixedLength, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength }, + { 1, &hf_gsm_map_ms_lac , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LAC }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LocationArea(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_LocationArea_choice, hf_index, ett_gsm_map_ms_LocationArea, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PagingArea_sequence_of[1] = { + { &hf_gsm_map_ms_PagingArea_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_LocationArea }, +}; + +static int +dissect_gsm_map_ms_PagingArea(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PagingArea_sequence_of, hf_index, ett_gsm_map_ms_PagingArea); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EPLMN_List_sequence_of[1] = { + { &hf_gsm_map_ms_EPLMN_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_PLMN_Id }, +}; + +static int +dissect_gsm_map_ms_EPLMN_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EPLMN_List_sequence_of, hf_index, ett_gsm_map_ms_EPLMN_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UpdateLocationArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_msc_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_vlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_lmsi , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_vlr_Capability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VLR_Capability }, + { &hf_gsm_map_ms_informPreviousNetworkEntity, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_cs_LCS_NotSupportedByUE, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_v_gmlc_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_add_info , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ADD_Info }, + { &hf_gsm_map_ms_pagingArea, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PagingArea }, + { &hf_gsm_map_ms_skipSubscriberDataUpdate, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_restorationIndicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_eplmn_List, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPLMN_List }, + { &hf_gsm_map_ms_mme_DiameterAddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UpdateLocationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UpdateLocationArg_sequence, hf_index, ett_gsm_map_ms_UpdateLocationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UpdateLocationRes_sequence[] = { + { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_add_Capability, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_pagingArea_Capability, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UpdateLocationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UpdateLocationRes_sequence, hf_index, ett_gsm_map_ms_UpdateLocationRes); + + return offset; +} + + +static const value_string gsm_map_ms_CancellationType_vals[] = { + { 0, "updateProcedure" }, + { 1, "subscriptionWithdraw" }, + { 2, "initialAttachProcedure" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_CancellationType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_TypeOfUpdate_vals[] = { + { 0, "sgsn-change" }, + { 1, "mme-change" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_TypeOfUpdate(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CancelLocationArg_U_sequence[] = { + { &hf_gsm_map_ms_identity , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Identity }, + { &hf_gsm_map_ms_cancellationType, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CancellationType }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_typeOfUpdate, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TypeOfUpdate }, + { &hf_gsm_map_ms_mtrf_SupportedAndAuthorized, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_mtrf_SupportedAndNotAuthorized, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_newMSC_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_newVLR_Number, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_new_lmsi , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_ms_reattach_Required, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CancelLocationArg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CancelLocationArg_U_sequence, hf_index, ett_gsm_map_ms_CancelLocationArg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_CancelLocationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_CancelLocationArg_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CancelLocationRes_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CancelLocationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CancelLocationRes_sequence, hf_index, ett_gsm_map_ms_CancelLocationRes); + + return offset; +} + + + +int +dissect_gsm_map_ms_GeographicalInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeographicalInformation); + dissect_geographical_description(parameter_tvb, actx->pinfo, subtree); + + + return offset; +} + + + +static int +dissect_gsm_map_ms_LocationNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LocationNumber); + dissect_isup_location_number_parameter(parameter_tvb, actx->pinfo, subtree, NULL); + + + return offset; +} + + + +int +dissect_gsm_map_ms_LSAIdentity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_GeodeticInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeodeticInformation); + dissect_isup_calling_geodetic_location_parameter(parameter_tvb, actx->pinfo, subtree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LocationInformationEPS_sequence[] = { + { &hf_gsm_map_ms_e_utranCellGlobalIdentity, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_E_UTRAN_CGI }, + { &hf_gsm_map_ms_trackingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TA_Id }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation }, + { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation }, + { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_map_ms_mme_Name , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LocationInformationEPS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LocationInformationEPS_sequence, hf_index, ett_gsm_map_ms_LocationInformationEPS); + + return offset; +} + + + +static int +dissect_gsm_map_ms_CSG_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, 0, hf_index, -1, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_OCTET_STRING_SIZE_1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UserCSGInformation_sequence[] = { + { &hf_gsm_map_ms_csg_Id , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_Id }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_accessMode, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 }, + { &hf_gsm_map_ms_cmi , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UserCSGInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UserCSGInformation_sequence, hf_index, ett_gsm_map_ms_UserCSGInformation); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LocationInformation_sequence[] = { + { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation }, + { &hf_gsm_map_ms_vlr_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_locationNumber, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationNumber }, + { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_selectedLSA_Id, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity }, + { &hf_gsm_map_ms_msc_Number, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation }, + { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS }, + { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ms_LocationInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LocationInformation_sequence, hf_index, ett_gsm_map_ms_LocationInformation); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LocationInformationGPRS_sequence[] = { + { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI }, + { &hf_gsm_map_ms_routeingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_RAIdentity }, + { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation }, + { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_selectedLSAIdentity, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation }, + { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LocationInformationGPRS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LocationInformationGPRS_sequence, hf_index, ett_gsm_map_ms_LocationInformationGPRS); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PurgeMS_Arg_U_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_vlr_Number, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_locationInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation }, + { &hf_gsm_map_ms_locationInformationGPRS, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationGPRS }, + { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PurgeMS_Arg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PurgeMS_Arg_U_sequence, hf_index, ett_gsm_map_ms_PurgeMS_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PurgeMS_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PurgeMS_Arg_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PurgeMS_Res_sequence[] = { + { &hf_gsm_map_ms_freezeTMSI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_freezeP_TMSI, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_freezeM_TMSI, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PurgeMS_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PurgeMS_Res_sequence, hf_index, ett_gsm_map_ms_PurgeMS_Res); + + return offset; +} + + + +static int +dissect_gsm_map_ms_NumberOfRequestedVectors(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_HopCounter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendIdentificationArg_sequence[] = { + { &hf_gsm_map_ms_tmsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_TMSI }, + { &hf_gsm_map_ms_numberOfRequestedVectors, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NumberOfRequestedVectors }, + { &hf_gsm_map_ms_segmentationProhibited, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_msc_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_previous_LAI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength }, + { &hf_gsm_map_ms_hopCounter, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_HopCounter }, + { &hf_gsm_map_ms_mtRoamingForwardingSupported, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_newVLR_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_new_lmsi , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendIdentificationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendIdentificationArg_sequence, hf_index, ett_gsm_map_ms_SendIdentificationArg); + + return offset; +} + + + +static int +dissect_gsm_map_ms_RAND(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SRES(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Kc(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AuthenticationTriplet_sequence[] = { + { &hf_gsm_map_ms_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND }, + { &hf_gsm_map_ms_sres , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SRES }, + { &hf_gsm_map_ms_kc , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Kc }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AuthenticationTriplet(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AuthenticationTriplet_sequence, hf_index, ett_gsm_map_ms_AuthenticationTriplet); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_TripletList_sequence_of[1] = { + { &hf_gsm_map_ms_TripletList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AuthenticationTriplet }, +}; + +static int +dissect_gsm_map_ms_TripletList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_TripletList_sequence_of, hf_index, ett_gsm_map_ms_TripletList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_XRES(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_CK(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_IK(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_AUTN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AuthenticationQuintuplet_sequence[] = { + { &hf_gsm_map_ms_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND }, + { &hf_gsm_map_ms_xres , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_XRES }, + { &hf_gsm_map_ms_ck , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CK }, + { &hf_gsm_map_ms_ik , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IK }, + { &hf_gsm_map_ms_autn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AUTN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AuthenticationQuintuplet(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AuthenticationQuintuplet_sequence, hf_index, ett_gsm_map_ms_AuthenticationQuintuplet); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_QuintupletList_sequence_of[1] = { + { &hf_gsm_map_ms_QuintupletList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AuthenticationQuintuplet }, +}; + +static int +dissect_gsm_map_ms_QuintupletList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_QuintupletList_sequence_of, hf_index, ett_gsm_map_ms_QuintupletList); + + return offset; +} + + +static const value_string gsm_map_ms_AuthenticationSetList_vals[] = { + { 0, "tripletList" }, + { 1, "quintupletList" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_AuthenticationSetList_choice[] = { + { 0, &hf_gsm_map_ms_tripletList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TripletList }, + { 1, &hf_gsm_map_ms_quintupletList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QuintupletList }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AuthenticationSetList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_AuthenticationSetList_choice, hf_index, ett_gsm_map_ms_AuthenticationSetList, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Cksn(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GSM_SecurityContextData_sequence[] = { + { &hf_gsm_map_ms_kc , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Kc }, + { &hf_gsm_map_ms_cksn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Cksn }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_GSM_SecurityContextData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GSM_SecurityContextData_sequence, hf_index, ett_gsm_map_ms_GSM_SecurityContextData); + + return offset; +} + + + +static int +dissect_gsm_map_ms_KSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UMTS_SecurityContextData_sequence[] = { + { &hf_gsm_map_ms_ck , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CK }, + { &hf_gsm_map_ms_ik , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IK }, + { &hf_gsm_map_ms_ksi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_KSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UMTS_SecurityContextData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UMTS_SecurityContextData_sequence, hf_index, ett_gsm_map_ms_UMTS_SecurityContextData); + + return offset; +} + + +static const value_string gsm_map_ms_CurrentSecurityContext_vals[] = { + { 0, "gsm-SecurityContextData" }, + { 1, "umts-SecurityContextData" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_CurrentSecurityContext_choice[] = { + { 0, &hf_gsm_map_ms_gsm_SecurityContextData, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GSM_SecurityContextData }, + { 1, &hf_gsm_map_ms_umts_SecurityContextData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UMTS_SecurityContextData }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CurrentSecurityContext(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_CurrentSecurityContext_choice, hf_index, ett_gsm_map_ms_CurrentSecurityContext, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendIdentificationRes_U_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_authenticationSetList, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_AuthenticationSetList }, + { &hf_gsm_map_ms_currentSecurityContext, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_CurrentSecurityContext }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_lastUsedLtePLMN_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { &hf_gsm_map_ms_mtCallPendingFlag, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendIdentificationRes_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendIdentificationRes_U_sequence, hf_index, ett_gsm_map_ms_SendIdentificationRes_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SendIdentificationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_SendIdentificationRes_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_AUTS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_FailureCause_vals[] = { + { 0, "wrongUserResponse" }, + { 1, "wrongNetworkSignature" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_FailureCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const value_string gsm_map_ms_AccessType_vals[] = { + { 0, "call" }, + { 1, "emergencyCall" }, + { 2, "locationUpdating" }, + { 3, "supplementaryService" }, + { 4, "shortMessage" }, + { 5, "gprsAttach" }, + { 6, "routingAreaUpdating" }, + { 7, "serviceRequest" }, + { 8, "pdpContextActivation" }, + { 9, "pdpContextDeactivation" }, + { 10, "gprsDetach" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_AccessType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AuthenticationFailureReportArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_failureCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_FailureCause }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_re_attempt, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_BOOLEAN }, + { &hf_gsm_map_ms_accessType, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AccessType }, + { &hf_gsm_map_ms_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND }, + { &hf_gsm_map_ms_vlr_Number, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AuthenticationFailureReportArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AuthenticationFailureReportArg_sequence, hf_index, ett_gsm_map_ms_AuthenticationFailureReportArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AuthenticationFailureReportRes_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AuthenticationFailureReportRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AuthenticationFailureReportRes_sequence, hf_index, ett_gsm_map_ms_AuthenticationFailureReportRes); + + return offset; +} + + +static int * const gsm_map_ms_SupportedFeatures_bits[] = { + &hf_gsm_map_ms_SupportedFeatures_odb_all_apn, + &hf_gsm_map_ms_SupportedFeatures_odb_HPLMN_APN, + &hf_gsm_map_ms_SupportedFeatures_odb_VPLMN_APN, + &hf_gsm_map_ms_SupportedFeatures_odb_all_og, + &hf_gsm_map_ms_SupportedFeatures_odb_all_international_og, + &hf_gsm_map_ms_SupportedFeatures_odb_all_int_og_not_to_HPLMN_country, + &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og, + &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_not_to_HPLMN_country, + &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_and_internat_og_not_to_HPLMN_country, + &hf_gsm_map_ms_SupportedFeatures_regSub, + &hf_gsm_map_ms_SupportedFeatures_trace, + &hf_gsm_map_ms_SupportedFeatures_lcs_all_PrivExcep, + &hf_gsm_map_ms_SupportedFeatures_lcs_universal, + &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionRelated, + &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionUnrelated, + &hf_gsm_map_ms_SupportedFeatures_lcs_PLMN_operator, + &hf_gsm_map_ms_SupportedFeatures_lcs_ServiceType, + &hf_gsm_map_ms_SupportedFeatures_lcs_all_MOLR_SS, + &hf_gsm_map_ms_SupportedFeatures_lcs_basicSelfLocation, + &hf_gsm_map_ms_SupportedFeatures_lcs_autonomousSelfLocation, + &hf_gsm_map_ms_SupportedFeatures_lcs_transferToThirdParty, + &hf_gsm_map_ms_SupportedFeatures_sm_mo_pp, + &hf_gsm_map_ms_SupportedFeatures_barring_OutgoingCalls, + &hf_gsm_map_ms_SupportedFeatures_baoc, + &hf_gsm_map_ms_SupportedFeatures_boic, + &hf_gsm_map_ms_SupportedFeatures_boicExHC, + &hf_gsm_map_ms_SupportedFeatures_localTimeZoneRetrieval, + &hf_gsm_map_ms_SupportedFeatures_additionalMsisdn, + &hf_gsm_map_ms_SupportedFeatures_smsInMME, + &hf_gsm_map_ms_SupportedFeatures_smsInSGSN, + &hf_gsm_map_ms_SupportedFeatures_ue_Reachability_Notification, + &hf_gsm_map_ms_SupportedFeatures_state_Location_Information_Retrieval, + &hf_gsm_map_ms_SupportedFeatures_partialPurge, + &hf_gsm_map_ms_SupportedFeatures_gddInSGSN, + &hf_gsm_map_ms_SupportedFeatures_sgsnCAMELCapability, + &hf_gsm_map_ms_SupportedFeatures_pcscf_Restoration, + &hf_gsm_map_ms_SupportedFeatures_dedicatedCoreNetworks, + &hf_gsm_map_ms_SupportedFeatures_non_IP_PDN_Type_APNs, + &hf_gsm_map_ms_SupportedFeatures_non_IP_PDP_Type_APNs, + &hf_gsm_map_ms_SupportedFeatures_nrAsSecondaryRAT, + NULL +}; + +static int +dissect_gsm_map_ms_SupportedFeatures(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SupportedFeatures_bits, 40, hf_index, ett_gsm_map_ms_SupportedFeatures, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_Ext_SupportedFeatures_bits[] = { + &hf_gsm_map_ms_Ext_SupportedFeatures_unlicensedSpectrumAsSecondaryRAT, + NULL +}; + +static int +dissect_gsm_map_ms_Ext_SupportedFeatures(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_SupportedFeatures_bits, 1, hf_index, ett_gsm_map_ms_Ext_SupportedFeatures, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SGSN_Capability_sequence[] = { + { &hf_gsm_map_ms_solsaSupportIndicator, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SuperChargerInfo }, + { &hf_gsm_map_ms_gprsEnhancementsSupportIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_supportedCamelPhases, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ms_supportedLCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets }, + { &hf_gsm_map_ms_offeredCamel4CSIs, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ms_smsCallBarringSupportIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_supportedRAT_TypesIndicator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedRAT_Types }, + { &hf_gsm_map_ms_supportedFeatures, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedFeatures }, + { &hf_gsm_map_ms_t_adsDataRetrieval, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN }, + { &hf_gsm_map_ms_cancellationTypeInitialAttach, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_msisdn_lessOperation_Supported, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_updateofHomogeneousSupportOfIMSVoiceOverPSSessions, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_reset_ids_Supported, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ext_SupportedFeatures, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SupportedFeatures }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SGSN_Capability(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SGSN_Capability_sequence, hf_index, ett_gsm_map_ms_SGSN_Capability); + + return offset; +} + + + +static int +dissect_gsm_map_ms_APN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + const guint8 *apn_str = NULL; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_apn_str); + proto_tree_add_item_ret_string(subtree, hf_gsm_apn_str, parameter_tvb, 0, -1, ENC_APN_STR | ENC_NA, actx->pinfo->pool, &apn_str); + proto_item_append_text(actx->created_item, " - %s", apn_str); + + + + return offset; +} + + + +static int +dissect_gsm_map_ms_PDP_Address(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_FQDN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PDN_GW_Identity_sequence[] = { + { &hf_gsm_map_ms_pdn_gw_ipv4_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_pdn_gw_ipv6_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_pdn_gw_name, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_FQDN }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PDN_GW_Identity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PDN_GW_Identity_sequence, hf_index, ett_gsm_map_ms_PDN_GW_Identity); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ContextId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PDN_GW_Update_sequence[] = { + { &hf_gsm_map_ms_apn , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_ms_pdn_gw_Identity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Identity }, + { &hf_gsm_map_ms_contextId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PDN_GW_Update(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PDN_GW_Update_sequence, hf_index, ett_gsm_map_ms_PDN_GW_Update); + + return offset; +} + + +static int * const gsm_map_ms_ISR_Information_bits[] = { + &hf_gsm_map_ms_ISR_Information_updateLocation, + &hf_gsm_map_ms_ISR_Information_cancelSGSN, + &hf_gsm_map_ms_ISR_Information_initialAttachIndicator, + NULL +}; + +static int +dissect_gsm_map_ms_ISR_Information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ISR_Information_bits, 3, hf_index, ett_gsm_map_ms_ISR_Information, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_EPS_Info_vals[] = { + { 0, "pdn-gw-update" }, + { 1, "isr-Information" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_EPS_Info_choice[] = { + { 0, &hf_gsm_map_ms_pdn_gw_update, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Update }, + { 1, &hf_gsm_map_ms_isr_Information, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ISR_Information }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EPS_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_EPS_Info_choice, hf_index, ett_gsm_map_ms_EPS_Info, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_Used_RAT_Type_vals[] = { + { 0, "utran" }, + { 1, "geran" }, + { 2, "gan" }, + { 3, "i-hspa-evolution" }, + { 4, "e-utran" }, + { 5, "nb-iot" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_Used_RAT_Type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_UE_SRVCC_Capability_vals[] = { + { 0, "ue-srvcc-not-supported" }, + { 1, "ue-srvcc-supported" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_UE_SRVCC_Capability(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_SMSRegisterRequest_vals[] = { + { 0, "sms-registration-required" }, + { 1, "sms-registration-not-preferred" }, + { 2, "no-preference" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_SMSRegisterRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AdjacentPLMN_List_sequence_of[1] = { + { &hf_gsm_map_ms_AdjacentPLMN_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_PLMN_Id }, +}; + +static int +dissect_gsm_map_ms_AdjacentPLMN_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AdjacentPLMN_List_sequence_of, hf_index, ett_gsm_map_ms_AdjacentPLMN_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UpdateGprsLocationArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_sgsn_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_sgsn_Capability, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SGSN_Capability }, + { &hf_gsm_map_ms_informPreviousNetworkEntity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ps_LCS_NotSupportedByUE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_v_gmlc_Address, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_add_info , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ADD_Info }, + { &hf_gsm_map_ms_eps_info , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_EPS_Info }, + { &hf_gsm_map_ms_servingNodeTypeIndicator, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_skipSubscriberDataUpdate, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_usedRAT_Type, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Used_RAT_Type }, + { &hf_gsm_map_ms_gprsSubscriptionDataNotNeeded, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_nodeTypeIndicator, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_areaRestricted, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ue_reachableIndicator, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_epsSubscriptionDataNotNeeded, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ue_srvcc_Capability, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UE_SRVCC_Capability }, + { &hf_gsm_map_ms_eplmn_List, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPLMN_List }, + { &hf_gsm_map_ms_mmeNumberforMTSMS, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_smsRegisterRequest, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMSRegisterRequest }, + { &hf_gsm_map_ms_sms_Only , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_removalofMMERegistrationforSMS, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_sgsn_Name, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_ms_sgsn_Realm, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_ms_lgd_supportIndicator, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_adjacentPLMN_List, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdjacentPLMN_List }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UpdateGprsLocationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_ms_UpdateGprsLocationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UpdateGprsLocationRes_sequence[] = { + { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_add_Capability, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_sgsn_mmeSeparationSupported, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_mmeRegisteredforSMS, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UpdateGprsLocationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_ms_UpdateGprsLocationRes); + + return offset; +} + + + +static int +dissect_gsm_map_ms_IntegrityProtectionInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + asn1_ctx_t asn1_ctx; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo); + dissect_ranap_IntegrityProtectionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_IntegrityProtectionInformation); + + + return offset; +} + + + +static int +dissect_gsm_map_ms_EncryptionInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + asn1_ctx_t asn1_ctx; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo); + dissect_ranap_EncryptionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_EncryptionInformation); + + + return offset; +} + + +static const value_string gsm_map_ms_KeyStatus_vals[] = { + { 0, "old" }, + { 1, "new" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_KeyStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_AllowedGSM_Algorithms(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PermittedIntegrityProtectionAlgorithms(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PermittedEncryptionAlgorithms(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AllowedUMTS_Algorithms_sequence[] = { + { &hf_gsm_map_ms_integrityProtectionAlgorithms, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PermittedIntegrityProtectionAlgorithms }, + { &hf_gsm_map_ms_encryptionAlgorithms, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PermittedEncryptionAlgorithms }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AllowedUMTS_Algorithms(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AllowedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_ms_AllowedUMTS_Algorithms); + + return offset; +} + + + +static int +dissect_gsm_map_ms_RadioResourceInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RadioResourceInformation); + be_chan_type(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length_remaining(tvb,0), NULL, 0); + + + return offset; +} + + + +static int +dissect_gsm_map_ms_RAB_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RadioResource_sequence[] = { + { &hf_gsm_map_ms_radioResourceInformation, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RadioResourceInformation }, + { &hf_gsm_map_ms_rab_Id , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAB_Id }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_RadioResource(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RadioResource_sequence, hf_index, ett_gsm_map_ms_RadioResource); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RadioResourceList_sequence_of[1] = { + { &hf_gsm_map_ms_RadioResourceList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RadioResource }, +}; + +static int +dissect_gsm_map_ms_RadioResourceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RadioResourceList_sequence_of, hf_index, ett_gsm_map_ms_RadioResourceList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_BSSMAP_ServiceHandover(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_RANAP_ServiceHandover(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + asn1_ctx_t asn1_ctx; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo); + dissect_ranap_Service_Handover(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_ranap_service_Handover); + + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_BSSMAP_ServiceHandoverInfo_sequence[] = { + { &hf_gsm_map_ms_bssmap_ServiceHandover, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandover }, + { &hf_gsm_map_ms_rab_Id , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAB_Id }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_BSSMAP_ServiceHandoverInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_BSSMAP_ServiceHandoverInfo_sequence, hf_index, ett_gsm_map_ms_BSSMAP_ServiceHandoverInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_BSSMAP_ServiceHandoverList_sequence_of[1] = { + { &hf_gsm_map_ms_BSSMAP_ServiceHandoverList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandoverInfo }, +}; + +static int +dissect_gsm_map_ms_BSSMAP_ServiceHandoverList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_BSSMAP_ServiceHandoverList_sequence_of, hf_index, ett_gsm_map_ms_BSSMAP_ServiceHandoverList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Codec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CodecList_sequence[] = { + { &hf_gsm_map_ms_codec1_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec2_01, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec3_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec4_01, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec5_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec6_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec7_01, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_codec8_01, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CodecList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CodecList_sequence, hf_index, ett_gsm_map_ms_CodecList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SupportedCodecsList_sequence[] = { + { &hf_gsm_map_ms_utranCodecList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList }, + { &hf_gsm_map_ms_geranCodecList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SupportedCodecsList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SupportedCodecsList_sequence, hf_index, ett_gsm_map_ms_SupportedCodecsList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_AoIPCodec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AoIPCodecsList_sequence[] = { + { &hf_gsm_map_ms_codec1 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec2 , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec3 , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec4 , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec5 , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec6 , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec7 , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_codec8 , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AoIPCodecsList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AoIPCodecsList_sequence, hf_index, ett_gsm_map_ms_AoIPCodecsList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_UESBI_IuA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, 0, hf_index, -1, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_UESBI_IuB(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, 0, hf_index, -1, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UESBI_Iu_sequence[] = { + { &hf_gsm_map_ms_uesbi_IuA, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_IuA }, + { &hf_gsm_map_ms_uesbi_IuB, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_IuB }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UESBI_Iu(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UESBI_Iu_sequence, hf_index, ett_gsm_map_ms_UESBI_Iu); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ForwardAccessSignalling_Arg_U_sequence[] = { + { &hf_gsm_map_ms_an_APDU , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_integrityProtectionInfo, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IntegrityProtectionInformation }, + { &hf_gsm_map_ms_encryptionInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EncryptionInformation }, + { &hf_gsm_map_ms_keyStatus, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_KeyStatus }, + { &hf_gsm_map_ms_allowedGSM_Algorithms, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedGSM_Algorithms }, + { &hf_gsm_map_ms_allowedUMTS_Algorithms, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedUMTS_Algorithms }, + { &hf_gsm_map_ms_radioResourceInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_radioResourceList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceList }, + { &hf_gsm_map_ms_bssmap_ServiceHandover, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandover }, + { &hf_gsm_map_ms_ranap_ServiceHandover, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RANAP_ServiceHandover }, + { &hf_gsm_map_ms_bssmap_ServiceHandoverList, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandoverList }, + { &hf_gsm_map_ms_currentlyUsedCodec, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_iuSupportedCodecsList, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCodecsList }, + { &hf_gsm_map_ms_rab_ConfigurationIndicator, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_iuSelectedCodec, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_alternativeChannelType, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation }, + { &hf_gsm_map_ms_tracePropagationList, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TracePropagationList }, + { &hf_gsm_map_ms_aoipSupportedCodecsListAnchor, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList }, + { &hf_gsm_map_ms_aoipSelectedCodecTarget, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_uesbi_Iu , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_Iu }, + { &hf_gsm_map_ms_imeisv , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ForwardAccessSignalling_Arg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ForwardAccessSignalling_Arg_U_sequence, hf_index, ett_gsm_map_ms_ForwardAccessSignalling_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ForwardAccessSignalling_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_ForwardAccessSignalling_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_RNCId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_GERAN_Classmark(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ZoneCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ZoneCodeList_sequence_of[1] = { + { &hf_gsm_map_ms_ZoneCodeList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ZoneCode }, +}; + +static int +dissect_gsm_map_ms_ZoneCodeList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ZoneCodeList_sequence_of, hf_index, ett_gsm_map_ms_ZoneCodeList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_LCLS_GlobalCallReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_LCLS_Negotiation_bits[] = { + &hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_not_allowed_bit, + &hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_spare_bit, + NULL +}; + +static int +dissect_gsm_map_ms_LCLS_Negotiation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LCLS_Negotiation_bits, 2, hf_index, ett_gsm_map_ms_LCLS_Negotiation, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_LCLS_ConfigurationPreference_bits[] = { + &hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_sending_indicator, + &hf_gsm_map_ms_LCLS_ConfigurationPreference_backward_data_sending_indicator, + &hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_reception_indicator, + &hf_gsm_map_ms_LCLS_ConfigurationPreference_backward_data_reception_indicator, + NULL +}; + +static int +dissect_gsm_map_ms_LCLS_ConfigurationPreference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LCLS_ConfigurationPreference_bits, 4, hf_index, ett_gsm_map_ms_LCLS_ConfigurationPreference, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LIPA_AllowedAPNList_sequence_of[1] = { + { &hf_gsm_map_ms_LIPA_AllowedAPNList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_APN }, +}; + +static int +dissect_gsm_map_ms_LIPA_AllowedAPNList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LIPA_AllowedAPNList_sequence_of, hf_index, ett_gsm_map_ms_LIPA_AllowedAPNList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CSG_SubscriptionData_sequence[] = { + { &hf_gsm_map_ms_csg_Id , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CSG_Id }, + { &hf_gsm_map_ms_expirationDate, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Time }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_lipa_AllowedAPNList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LIPA_AllowedAPNList }, + { &hf_gsm_map_ms_plmn_Id , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CSG_SubscriptionData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CSG_SubscriptionData_sequence, hf_index, ett_gsm_map_ms_CSG_SubscriptionData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CSG_SubscriptionDataList_sequence_of[1] = { + { &hf_gsm_map_ms_CSG_SubscriptionDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CSG_SubscriptionData }, +}; + +static int +dissect_gsm_map_ms_CSG_SubscriptionDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CSG_SubscriptionDataList_sequence_of, hf_index, ett_gsm_map_ms_CSG_SubscriptionDataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PrepareHO_Arg_U_sequence[] = { + { &hf_gsm_map_ms_targetCellId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GlobalCellId }, + { &hf_gsm_map_ms_ho_NumberNotRequired, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_targetRNCId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RNCId }, + { &hf_gsm_map_ms_an_APDU , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_multipleBearerRequested, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_integrityProtectionInfo, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IntegrityProtectionInformation }, + { &hf_gsm_map_ms_encryptionInfo, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EncryptionInformation }, + { &hf_gsm_map_ms_radioResourceInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation }, + { &hf_gsm_map_ms_allowedGSM_Algorithms, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedGSM_Algorithms }, + { &hf_gsm_map_ms_allowedUMTS_Algorithms, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedUMTS_Algorithms }, + { &hf_gsm_map_ms_radioResourceList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_rab_Id , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAB_Id }, + { &hf_gsm_map_ms_bssmap_ServiceHandover, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandover }, + { &hf_gsm_map_ms_ranap_ServiceHandover, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RANAP_ServiceHandover }, + { &hf_gsm_map_ms_bssmap_ServiceHandoverList, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandoverList }, + { &hf_gsm_map_ms_asciCallReference, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ASCI_CallReference }, + { &hf_gsm_map_ms_geran_classmark, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GERAN_Classmark }, + { &hf_gsm_map_ms_iuCurrentlyUsedCodec, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_iuSupportedCodecsList, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCodecsList }, + { &hf_gsm_map_ms_rab_ConfigurationIndicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_uesbi_Iu , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_Iu }, + { &hf_gsm_map_ms_imeisv , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_ms_alternativeChannelType, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation }, + { &hf_gsm_map_ms_tracePropagationList, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TracePropagationList }, + { &hf_gsm_map_ms_aoipSupportedCodecsListAnchor, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList }, + { &hf_gsm_map_ms_regionalSubscriptionData, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCodeList }, + { &hf_gsm_map_ms_lclsGlobalCallReference, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCLS_GlobalCallReference }, + { &hf_gsm_map_ms_lcls_Negotiation, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCLS_Negotiation }, + { &hf_gsm_map_ms_lcls_Configuration_Preference, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCLS_ConfigurationPreference }, + { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PrepareHO_Arg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PrepareHO_Arg_U_sequence, hf_index, ett_gsm_map_ms_PrepareHO_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PrepareHO_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareHO_Arg_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RelocationNumber_sequence[] = { + { &hf_gsm_map_ms_handoverNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_rab_Id , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAB_Id }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_RelocationNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RelocationNumber_sequence, hf_index, ett_gsm_map_ms_RelocationNumber); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RelocationNumberList_sequence_of[1] = { + { &hf_gsm_map_ms_RelocationNumberList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RelocationNumber }, +}; + +static int +dissect_gsm_map_ms_RelocationNumberList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RelocationNumberList_sequence_of, hf_index, ett_gsm_map_ms_RelocationNumberList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_MulticallBearerInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ChosenIntegrityProtectionAlgorithm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ChosenEncryptionAlgorithm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SelectedUMTS_Algorithms_sequence[] = { + { &hf_gsm_map_ms_integrityProtectionAlgorithm, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenIntegrityProtectionAlgorithm }, + { &hf_gsm_map_ms_encryptionAlgorithm, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenEncryptionAlgorithm }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SelectedUMTS_Algorithms(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SelectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_ms_SelectedUMTS_Algorithms); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ChosenChannelInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ChosenSpeechVersion(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ChosenRadioResourceInformation_sequence[] = { + { &hf_gsm_map_ms_chosenChannelInfo, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenChannelInfo }, + { &hf_gsm_map_ms_chosenSpeechVersion, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenSpeechVersion }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ChosenRadioResourceInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ChosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_ms_ChosenRadioResourceInformation); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PrepareHO_Res_U_sequence[] = { + { &hf_gsm_map_ms_handoverNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_relocationNumberList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RelocationNumberList }, + { &hf_gsm_map_ms_an_APDU , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_multicallBearerInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MulticallBearerInfo }, + { &hf_gsm_map_ms_multipleBearerNotSupported, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_selectedUMTS_Algorithms, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SelectedUMTS_Algorithms }, + { &hf_gsm_map_ms_chosenRadioResourceInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenRadioResourceInformation }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_iuSelectedCodec, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_iuAvailableCodecsList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList }, + { &hf_gsm_map_ms_aoipSelectedCodecTarget, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_aoipAvailableCodecsListMap, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PrepareHO_Res_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PrepareHO_Res_U_sequence, hf_index, ett_gsm_map_ms_PrepareHO_Res_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PrepareHO_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareHO_Res_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PrepareSubsequentHO_Arg_U_sequence[] = { + { &hf_gsm_map_ms_targetCellId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GlobalCellId }, + { &hf_gsm_map_ms_targetMSC_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_targetRNCId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RNCId }, + { &hf_gsm_map_ms_an_APDU , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_selectedRab_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAB_Id }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_geran_classmark, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GERAN_Classmark }, + { &hf_gsm_map_ms_rab_ConfigurationIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PrepareSubsequentHO_Arg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PrepareSubsequentHO_Arg_U_sequence, hf_index, ett_gsm_map_ms_PrepareSubsequentHO_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PrepareSubsequentHO_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Arg_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PrepareSubsequentHO_Res_U_sequence[] = { + { &hf_gsm_map_ms_an_APDU , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PrepareSubsequentHO_Res_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PrepareSubsequentHO_Res_U_sequence, hf_index, ett_gsm_map_ms_PrepareSubsequentHO_Res_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PrepareSubsequentHO_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Res_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SelectedGSM_Algorithm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ProcessAccessSignalling_Arg_U_sequence[] = { + { &hf_gsm_map_ms_an_APDU , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_selectedUMTS_Algorithms, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SelectedUMTS_Algorithms }, + { &hf_gsm_map_ms_selectedGSM_Algorithm, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SelectedGSM_Algorithm }, + { &hf_gsm_map_ms_chosenRadioResourceInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenRadioResourceInformation }, + { &hf_gsm_map_ms_selectedRab_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAB_Id }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_iUSelectedCodec, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec }, + { &hf_gsm_map_ms_iuAvailableCodecsList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList }, + { &hf_gsm_map_ms_aoipSelectedCodecTarget, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec }, + { &hf_gsm_map_ms_aoipAvailableCodecsListMap, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ProcessAccessSignalling_Arg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ProcessAccessSignalling_Arg_U_sequence, hf_index, ett_gsm_map_ms_ProcessAccessSignalling_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_ProcessAccessSignalling_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_ProcessAccessSignalling_Arg_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendEndSignal_Arg_U_sequence[] = { + { &hf_gsm_map_ms_an_APDU , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendEndSignal_Arg_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendEndSignal_Arg_U_sequence, hf_index, ett_gsm_map_ms_SendEndSignal_Arg_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SendEndSignal_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_SendEndSignal_Arg_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendEndSignal_Res_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendEndSignal_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendEndSignal_Res_sequence, hf_index, ett_gsm_map_ms_SendEndSignal_Res); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Re_synchronisationInfo_sequence[] = { + { &hf_gsm_map_ms_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND }, + { &hf_gsm_map_ms_auts , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AUTS }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Re_synchronisationInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Re_synchronisationInfo_sequence, hf_index, ett_gsm_map_ms_Re_synchronisationInfo); + + return offset; +} + + +static const value_string gsm_map_ms_RequestingNodeType_vals[] = { + { 0, "vlr" }, + { 1, "sgsn" }, + { 2, "s-cscf" }, + { 3, "bsf" }, + { 4, "gan-aaa-server" }, + { 5, "wlan-aaa-server" }, + { 16, "mme" }, + { 17, "mme-sgsn" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_RequestingNodeType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendAuthenticationInfoArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_numberOfRequestedVectors, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NumberOfRequestedVectors }, + { &hf_gsm_map_ms_segmentationProhibited, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_immediateResponsePreferred, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_re_synchronisationInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Re_synchronisationInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_requestingNodeType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestingNodeType }, + { &hf_gsm_map_ms_requestingPLMN_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { &hf_gsm_map_ms_numberOfRequestedAdditional_Vectors, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NumberOfRequestedVectors }, + { &hf_gsm_map_ms_additionalVectorsAreForEPS, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ueUsageTypeRequestIndication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendAuthenticationInfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendAuthenticationInfoArg_sequence, hf_index, ett_gsm_map_ms_SendAuthenticationInfoArg); + + return offset; +} + + + +static int +dissect_gsm_map_ms_KASME(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EPC_AV_sequence[] = { + { &hf_gsm_map_ms_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND }, + { &hf_gsm_map_ms_xres , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_XRES }, + { &hf_gsm_map_ms_autn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AUTN }, + { &hf_gsm_map_ms_kasme , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_KASME }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EPC_AV(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EPC_AV_sequence, hf_index, ett_gsm_map_ms_EPC_AV); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EPS_AuthenticationSetList_sequence_of[1] = { + { &hf_gsm_map_ms_EPS_AuthenticationSetList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_EPC_AV }, +}; + +static int +dissect_gsm_map_ms_EPS_AuthenticationSetList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EPS_AuthenticationSetList_sequence_of, hf_index, ett_gsm_map_ms_EPS_AuthenticationSetList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_UE_UsageType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendAuthenticationInfoRes_U_sequence[] = { + { &hf_gsm_map_ms_authenticationSetList, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_AuthenticationSetList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_eps_AuthenticationSetList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_AuthenticationSetList }, + { &hf_gsm_map_ms_ueUsageType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UE_UsageType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendAuthenticationInfoRes_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendAuthenticationInfoRes_U_sequence, hf_index, ett_gsm_map_ms_SendAuthenticationInfoRes_U); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SendAuthenticationInfoRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_SendAuthenticationInfoRes_U); + + return offset; +} + + +static int * const gsm_map_ms_RequestedEquipmentInfo_bits[] = { + &hf_gsm_map_ms_RequestedEquipmentInfo_equipmentStatus, + &hf_gsm_map_ms_RequestedEquipmentInfo_bmuef, + NULL +}; + +static int +dissect_gsm_map_ms_RequestedEquipmentInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RequestedEquipmentInfo_bits, 2, hf_index, ett_gsm_map_ms_RequestedEquipmentInfo, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CheckIMEI_Arg_sequence[] = { + { &hf_gsm_map_ms_imei , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_ms_requestedEquipmentInfo, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RequestedEquipmentInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CheckIMEI_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CheckIMEI_Arg_sequence, hf_index, ett_gsm_map_ms_CheckIMEI_Arg); + + return offset; +} + + +static const value_string gsm_map_ms_EquipmentStatus_vals[] = { + { 0, "permittedListed" }, + { 1, "prohibitedListed" }, + { 2, "trackingListed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_EquipmentStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CheckIMEI_Res_sequence[] = { + { &hf_gsm_map_ms_equipmentStatus, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_EquipmentStatus }, + { &hf_gsm_map_ms_bmuef , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_UESBI_Iu }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CheckIMEI_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CheckIMEI_Res_sequence, hf_index, ett_gsm_map_ms_CheckIMEI_Res); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Category(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_SubscriberStatus_vals[] = { + { 0, "serviceGranted" }, + { 1, "operatorDeterminedBarring" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_SubscriberStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_BearerServiceList_sequence_of[1] = { + { &hf_gsm_map_ms_BearerServiceList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BearerServiceCode }, +}; + +static int +dissect_gsm_map_ms_BearerServiceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_BearerServiceList_sequence_of, hf_index, ett_gsm_map_ms_BearerServiceList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_TeleserviceList_sequence_of[1] = { + { &hf_gsm_map_ms_TeleserviceList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_TeleserviceCode }, +}; + +static int +dissect_gsm_map_ms_TeleserviceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_TeleserviceList_sequence_of, hf_index, ett_gsm_map_ms_TeleserviceList); + + return offset; +} + + + +int +dissect_gsm_map_ms_Ext_ForwOptions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_T_forwardingOptions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_ms_Ext_ForwOptions(implicit_tag, tvb, offset, actx, tree, hf_index); + + + proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN); + + + return offset; +} + + + +int +dissect_gsm_map_ms_Ext_NoRepCondTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_ForwFeature_sequence[] = { + { &hf_gsm_map_ms_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_forwardedToNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_forwardedToSubaddress, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { &hf_gsm_map_ms_forwardingOptions, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_forwardingOptions }, + { &hf_gsm_map_ms_noReplyConditionTime, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_NoRepCondTime }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_longForwardedToNumber, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_FTN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_ForwFeature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_ForwFeature_sequence, hf_index, ett_gsm_map_ms_Ext_ForwFeature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_ForwFeatureList_sequence_of[1] = { + { &hf_gsm_map_ms_Ext_ForwFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_ForwFeature }, +}; + +static int +dissect_gsm_map_ms_Ext_ForwFeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_ForwFeatureList_sequence_of, hf_index, ett_gsm_map_ms_Ext_ForwFeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_ForwInfo_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_forwardingFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_ForwFeatureList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_ForwInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_ForwInfo_sequence, hf_index, ett_gsm_map_ms_Ext_ForwInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_CallBarringFeature_sequence[] = { + { &hf_gsm_map_ms_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_CallBarringFeature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_CallBarringFeature_sequence, hf_index, ett_gsm_map_ms_Ext_CallBarringFeature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_CallBarFeatureList_sequence_of[1] = { + { &hf_gsm_map_ms_Ext_CallBarFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CallBarringFeature }, +}; + +static int +dissect_gsm_map_ms_Ext_CallBarFeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_CallBarFeatureList_sequence_of, hf_index, ett_gsm_map_ms_Ext_CallBarFeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_CallBarInfo_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_callBarringFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CallBarFeatureList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_CallBarInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_CallBarInfo_sequence, hf_index, ett_gsm_map_ms_Ext_CallBarInfo); + + return offset; +} + + + +int +dissect_gsm_map_ms_CUG_Index(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ms_CUG_Interlock(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_IntraCUG_Options_vals[] = { + { 0, "noCUG-Restrictions" }, + { 1, "cugIC-CallBarred" }, + { 2, "cugOG-CallBarred" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_IntraCUG_Options(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_BasicServiceGroupList_sequence_of[1] = { + { &hf_gsm_map_ms_Ext_BasicServiceGroupList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode }, +}; + +static int +dissect_gsm_map_ms_Ext_BasicServiceGroupList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_ms_Ext_BasicServiceGroupList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CUG_Subscription_sequence[] = { + { &hf_gsm_map_ms_cug_Index, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Index }, + { &hf_gsm_map_ms_cug_Interlock, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Interlock }, + { &hf_gsm_map_ms_intraCUG_Options, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IntraCUG_Options }, + { &hf_gsm_map_ms_basicServiceGroupList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_BasicServiceGroupList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CUG_Subscription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CUG_Subscription_sequence, hf_index, ett_gsm_map_ms_CUG_Subscription); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CUG_SubscriptionList_sequence_of[1] = { + { &hf_gsm_map_ms_CUG_SubscriptionList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Subscription }, +}; + +static int +dissect_gsm_map_ms_CUG_SubscriptionList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CUG_SubscriptionList_sequence_of, hf_index, ett_gsm_map_ms_CUG_SubscriptionList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_InterCUG_Restrictions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CUG_Feature_sequence[] = { + { &hf_gsm_map_ms_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_preferentialCUG_Indicator, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Index }, + { &hf_gsm_map_ms_interCUG_Restrictions, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_InterCUG_Restrictions }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CUG_Feature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CUG_Feature_sequence, hf_index, ett_gsm_map_ms_CUG_Feature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CUG_FeatureList_sequence_of[1] = { + { &hf_gsm_map_ms_CUG_FeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Feature }, +}; + +static int +dissect_gsm_map_ms_CUG_FeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CUG_FeatureList_sequence_of, hf_index, ett_gsm_map_ms_CUG_FeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CUG_Info_sequence[] = { + { &hf_gsm_map_ms_cug_SubscriptionList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_SubscriptionList }, + { &hf_gsm_map_ms_cug_FeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_FeatureList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ms_CUG_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CUG_Info_sequence, hf_index, ett_gsm_map_ms_CUG_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_SS_Data_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_ss_SubscriptionOption, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_SS_SubscriptionOption }, + { &hf_gsm_map_ms_basicServiceGroupList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_BasicServiceGroupList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_SS_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_SS_Data_sequence, hf_index, ett_gsm_map_ms_Ext_SS_Data); + + return offset; +} + + +static const value_string gsm_map_ms_Ext_SS_Info_vals[] = { + { 0, "forwardingInfo" }, + { 1, "callBarringInfo" }, + { 2, "cug-Info" }, + { 3, "ss-Data" }, + { 4, "emlpp-Info" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_Ext_SS_Info_choice[] = { + { 0, &hf_gsm_map_ms_forwardingInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwInfo }, + { 1, &hf_gsm_map_ms_callBarringInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarInfo }, + { 2, &hf_gsm_map_ms_cug_Info , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Info }, + { 3, &hf_gsm_map_ms_ss_Data , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SS_Data }, + { 4, &hf_gsm_map_ms_emlpp_Info, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Info }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_SS_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_Ext_SS_Info_choice, hf_index, ett_gsm_map_ms_Ext_SS_Info, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_SS_InfoList_sequence_of[1] = { + { &hf_gsm_map_ms_Ext_SS_InfoList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_Ext_SS_Info }, +}; + +static int +dissect_gsm_map_ms_Ext_SS_InfoList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_SS_InfoList_sequence_of, hf_index, ett_gsm_map_ms_Ext_SS_InfoList); + + return offset; +} + + +static int * const gsm_map_ms_ODB_GeneralData_bits[] = { + &hf_gsm_map_ms_ODB_GeneralData_allOG_CallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred, + &hf_gsm_map_ms_ODB_GeneralData_premiumRateInformationOGCallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_premiumRateEntertainementOGCallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_ss_AccessBarred, + &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred, + &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred, + &hf_gsm_map_ms_ODB_GeneralData_allECT_Barred, + &hf_gsm_map_ms_ODB_GeneralData_chargeableECT_Barred, + &hf_gsm_map_ms_ODB_GeneralData_internationalECT_Barred, + &hf_gsm_map_ms_ODB_GeneralData_interzonalECT_Barred, + &hf_gsm_map_ms_ODB_GeneralData_doublyChargeableECT_Barred, + &hf_gsm_map_ms_ODB_GeneralData_multipleECT_Barred, + &hf_gsm_map_ms_ODB_GeneralData_allPacketOrientedServicesBarred, + &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred, + &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred, + &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_allIC_CallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, + &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_Barred, + &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_CountryBarred, + &hf_gsm_map_ms_ODB_GeneralData_registrationAllCF_Barred, + &hf_gsm_map_ms_ODB_GeneralData_registrationCFNotToHPLMN_Barred, + &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCF_Barred, + &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, + &hf_gsm_map_ms_ODB_GeneralData_registrationInternationalCF_Barred, + NULL +}; + +static int +dissect_gsm_map_ms_ODB_GeneralData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ODB_GeneralData_bits, 29, hf_index, ett_gsm_map_ms_ODB_GeneralData, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_ODB_HPLMN_Data_bits[] = { + &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType1, + &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType2, + &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType3, + &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType4, + NULL +}; + +static int +dissect_gsm_map_ms_ODB_HPLMN_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ODB_HPLMN_Data_bits, 4, hf_index, ett_gsm_map_ms_ODB_HPLMN_Data, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ODB_Data_sequence[] = { + { &hf_gsm_map_ms_odb_GeneralData, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ODB_GeneralData }, + { &hf_gsm_map_ms_odb_HPLMN_Data, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ODB_HPLMN_Data }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ODB_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ODB_Data_sequence, hf_index, ett_gsm_map_ms_ODB_Data); + + return offset; +} + + + +static int +dissect_gsm_map_ms_GroupId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Long_GroupId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VoiceBroadcastData_sequence[] = { + { &hf_gsm_map_ms_groupid , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_GroupId }, + { &hf_gsm_map_ms_broadcastInitEntitlement, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_longGroupId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Long_GroupId }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_VoiceBroadcastData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VoiceBroadcastData_sequence, hf_index, ett_gsm_map_ms_VoiceBroadcastData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VBSDataList_sequence_of[1] = { + { &hf_gsm_map_ms_VBSDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_VoiceBroadcastData }, +}; + +static int +dissect_gsm_map_ms_VBSDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VBSDataList_sequence_of, hf_index, ett_gsm_map_ms_VBSDataList); + + return offset; +} + + +static int * const gsm_map_ms_AdditionalSubscriptions_bits[] = { + &hf_gsm_map_ms_AdditionalSubscriptions_privilegedUplinkRequest, + &hf_gsm_map_ms_AdditionalSubscriptions_emergencyUplinkRequest, + &hf_gsm_map_ms_AdditionalSubscriptions_emergencyReset, + NULL +}; + +static int +dissect_gsm_map_ms_AdditionalSubscriptions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AdditionalSubscriptions_bits, 3, hf_index, ett_gsm_map_ms_AdditionalSubscriptions, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_AdditionalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, 0, hf_index, -1, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VoiceGroupCallData_sequence[] = { + { &hf_gsm_map_ms_groupId , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_GroupId }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_additionalSubscriptions, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AdditionalSubscriptions }, + { &hf_gsm_map_ms_additionalInfo, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo }, + { &hf_gsm_map_ms_longGroupId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Long_GroupId }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_VoiceGroupCallData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VoiceGroupCallData_sequence, hf_index, ett_gsm_map_ms_VoiceGroupCallData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VGCSDataList_sequence_of[1] = { + { &hf_gsm_map_ms_VGCSDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_VoiceGroupCallData }, +}; + +static int +dissect_gsm_map_ms_VGCSDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VGCSDataList_sequence_of, hf_index, ett_gsm_map_ms_VGCSDataList); + + return offset; +} + + +static const value_string gsm_map_ms_O_BcsmTriggerDetectionPoint_vals[] = { + { 2, "collectedInfo" }, + { 4, "routeSelectFailure" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_O_BcsmTriggerDetectionPoint(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ms_ServiceKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_DefaultCallHandling_vals[] = { + { 0, "continueCall" }, + { 1, "releaseCall" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_DefaultCallHandling(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDPData_sequence[] = { + { &hf_gsm_map_ms_o_BcsmTriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmTriggerDetectionPoint }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_defaultCallHandling, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultCallHandling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_O_BcsmCamelTDPData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_O_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_ms_O_BcsmCamelTDPData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDPDataList_sequence_of[1] = { + { &hf_gsm_map_ms_O_BcsmCamelTDPDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmCamelTDPData }, +}; + +static int +dissect_gsm_map_ms_O_BcsmCamelTDPDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_O_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_ms_O_BcsmCamelTDPDataList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_CamelCapabilityHandling(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_O_CSI_sequence[] = { + { &hf_gsm_map_ms_o_BcsmCamelTDPDataList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmCamelTDPDataList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csiActive, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ms_O_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_O_CSI_sequence, hf_index, ett_gsm_map_ms_O_CSI); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SS_EventList_sequence_of[1] = { + { &hf_gsm_map_ms_SS_EventList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, +}; + +static int +dissect_gsm_map_ms_SS_EventList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SS_EventList_sequence_of, hf_index, ett_gsm_map_ms_SS_EventList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SS_CamelData_sequence[] = { + { &hf_gsm_map_ms_ss_EventList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SS_EventList }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SS_CamelData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SS_CamelData_sequence, hf_index, ett_gsm_map_ms_SS_CamelData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SS_CSI_sequence[] = { + { &hf_gsm_map_ms_ss_CamelData, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SS_CamelData }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SS_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SS_CSI_sequence, hf_index, ett_gsm_map_ms_SS_CSI); + + return offset; +} + + +static const value_string gsm_map_ms_MatchType_vals[] = { + { 0, "inhibiting" }, + { 1, "enabling" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_MatchType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DestinationNumberList_sequence_of[1] = { + { &hf_gsm_map_ms_DestinationNumberList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, +}; + +static int +dissect_gsm_map_ms_DestinationNumberList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DestinationNumberList_sequence_of, hf_index, ett_gsm_map_ms_DestinationNumberList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_INTEGER_1_maxNumOfISDN_AddressDigits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DestinationNumberLengthList_sequence_of[1] = { + { &hf_gsm_map_ms_DestinationNumberLengthList_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_INTEGER_1_maxNumOfISDN_AddressDigits }, +}; + +static int +dissect_gsm_map_ms_DestinationNumberLengthList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DestinationNumberLengthList_sequence_of, hf_index, ett_gsm_map_ms_DestinationNumberLengthList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DestinationNumberCriteria_sequence[] = { + { &hf_gsm_map_ms_matchType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MatchType }, + { &hf_gsm_map_ms_destinationNumberList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DestinationNumberList }, + { &hf_gsm_map_ms_destinationNumberLengthList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DestinationNumberLengthList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_DestinationNumberCriteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_ms_DestinationNumberCriteria); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_BasicServiceCriteria_sequence_of[1] = { + { &hf_gsm_map_ms_BasicServiceCriteria_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode }, +}; + +static int +dissect_gsm_map_ms_BasicServiceCriteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_BasicServiceCriteria_sequence_of, hf_index, ett_gsm_map_ms_BasicServiceCriteria); + + return offset; +} + + +static const value_string gsm_map_ms_CallTypeCriteria_vals[] = { + { 0, "forwarded" }, + { 1, "notForwarded" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_CallTypeCriteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_CauseValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_O_CauseValueCriteria_sequence_of[1] = { + { &hf_gsm_map_ms_O_CauseValueCriteria_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CauseValue }, +}; + +static int +dissect_gsm_map_ms_O_CauseValueCriteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_O_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_ms_O_CauseValueCriteria); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDP_Criteria_sequence[] = { + { &hf_gsm_map_ms_o_BcsmTriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmTriggerDetectionPoint }, + { &hf_gsm_map_ms_destinationNumberCriteria, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DestinationNumberCriteria }, + { &hf_gsm_map_ms_basicServiceCriteria, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceCriteria }, + { &hf_gsm_map_ms_callTypeCriteria, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallTypeCriteria }, + { &hf_gsm_map_ms_o_CauseValueCriteria, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CauseValueCriteria }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_O_BcsmCamelTDP_Criteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_O_BcsmCamelTDP_Criteria_sequence, hf_index, ett_gsm_map_ms_O_BcsmCamelTDP_Criteria); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDPCriteriaList_sequence_of[1] = { + { &hf_gsm_map_ms_O_BcsmCamelTDPCriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmCamelTDP_Criteria }, +}; + +int +dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_O_BcsmCamelTDPCriteriaList_sequence_of, hf_index, ett_gsm_map_ms_O_BcsmCamelTDPCriteriaList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_MM_Code(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MobilityTriggers_sequence_of[1] = { + { &hf_gsm_map_ms_MobilityTriggers_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MM_Code }, +}; + +static int +dissect_gsm_map_ms_MobilityTriggers(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MobilityTriggers_sequence_of, hf_index, ett_gsm_map_ms_MobilityTriggers); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_M_CSI_sequence[] = { + { &hf_gsm_map_ms_mobilityTriggers, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MobilityTriggers }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_M_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_M_CSI_sequence, hf_index, ett_gsm_map_ms_M_CSI); + + return offset; +} + + +static const value_string gsm_map_ms_SMS_TriggerDetectionPoint_vals[] = { + { 1, "sms-CollectedInfo" }, + { 2, "sms-DeliveryRequest" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_SMS_TriggerDetectionPoint(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +const value_string gsm_map_ms_DefaultSMS_Handling_vals[] = { + { 0, "continueTransaction" }, + { 1, "releaseTransaction" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_ms_DefaultSMS_Handling(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SMS_CAMEL_TDP_Data_sequence[] = { + { &hf_gsm_map_ms_sms_TriggerDetectionPoint, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_TriggerDetectionPoint }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_defaultSMS_Handling, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultSMS_Handling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SMS_CAMEL_TDP_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SMS_CAMEL_TDP_Data_sequence, hf_index, ett_gsm_map_ms_SMS_CAMEL_TDP_Data); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SMS_CAMEL_TDP_DataList_sequence_of[1] = { + { &hf_gsm_map_ms_SMS_CAMEL_TDP_DataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SMS_CAMEL_TDP_Data }, +}; + +static int +dissect_gsm_map_ms_SMS_CAMEL_TDP_DataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SMS_CAMEL_TDP_DataList_sequence_of, hf_index, ett_gsm_map_ms_SMS_CAMEL_TDP_DataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SMS_CSI_sequence[] = { + { &hf_gsm_map_ms_sms_CAMEL_TDP_DataList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CAMEL_TDP_DataList }, + { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SMS_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SMS_CSI_sequence, hf_index, ett_gsm_map_ms_SMS_CSI); + + return offset; +} + + +static const value_string gsm_map_ms_T_BcsmTriggerDetectionPoint_vals[] = { + { 12, "termAttemptAuthorized" }, + { 13, "tBusy" }, + { 14, "tNoAnswer" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_T_BcsmTriggerDetectionPoint(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_T_BcsmCamelTDPData_sequence[] = { + { &hf_gsm_map_ms_t_BcsmTriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmTriggerDetectionPoint }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_defaultCallHandling, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultCallHandling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_T_BcsmCamelTDPData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_T_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_ms_T_BcsmCamelTDPData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_T_BcsmCamelTDPDataList_sequence_of[1] = { + { &hf_gsm_map_ms_T_BcsmCamelTDPDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmCamelTDPData }, +}; + +static int +dissect_gsm_map_ms_T_BcsmCamelTDPDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_T_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_ms_T_BcsmCamelTDPDataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_T_CSI_sequence[] = { + { &hf_gsm_map_ms_t_BcsmCamelTDPDataList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmCamelTDPDataList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_T_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_T_CSI_sequence, hf_index, ett_gsm_map_ms_T_CSI); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_T_CauseValueCriteria_sequence_of[1] = { + { &hf_gsm_map_ms_T_CauseValueCriteria_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CauseValue }, +}; + +static int +dissect_gsm_map_ms_T_CauseValueCriteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_T_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_ms_T_CauseValueCriteria); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria_sequence[] = { + { &hf_gsm_map_ms_t_BCSM_TriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmTriggerDetectionPoint }, + { &hf_gsm_map_ms_basicServiceCriteria, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceCriteria }, + { &hf_gsm_map_ms_t_CauseValueCriteria, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CauseValueCriteria }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria_sequence, hf_index, ett_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = { + { &hf_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria }, +}; + +static int +dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DP_AnalysedInfoCriterium_sequence[] = { + { &hf_gsm_map_ms_dialledNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_defaultCallHandling, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_DefaultCallHandling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_DP_AnalysedInfoCriterium(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DP_AnalysedInfoCriterium_sequence, hf_index, ett_gsm_map_ms_DP_AnalysedInfoCriterium); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DP_AnalysedInfoCriteriaList_sequence_of[1] = { + { &hf_gsm_map_ms_DP_AnalysedInfoCriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_DP_AnalysedInfoCriterium }, +}; + +static int +dissect_gsm_map_ms_DP_AnalysedInfoCriteriaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DP_AnalysedInfoCriteriaList_sequence_of, hf_index, ett_gsm_map_ms_DP_AnalysedInfoCriteriaList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_D_CSI_sequence[] = { + { &hf_gsm_map_ms_dp_AnalysedInfoCriteriaList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DP_AnalysedInfoCriteriaList }, + { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ms_D_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_D_CSI_sequence, hf_index, ett_gsm_map_ms_D_CSI); + + return offset; +} + + +static const value_string gsm_map_ms_MT_SMS_TPDU_Type_vals[] = { + { 0, "sms-DELIVER" }, + { 1, "sms-SUBMIT-REPORT" }, + { 2, "sms-STATUS-REPORT" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_MT_SMS_TPDU_Type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_TPDU_TypeCriterion_sequence_of[1] = { + { &hf_gsm_map_ms_TPDU_TypeCriterion_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MT_SMS_TPDU_Type }, +}; + +static int +dissect_gsm_map_ms_TPDU_TypeCriterion(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_TPDU_TypeCriterion_sequence_of, hf_index, ett_gsm_map_ms_TPDU_TypeCriterion); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MT_smsCAMELTDP_Criteria_sequence[] = { + { &hf_gsm_map_ms_sms_TriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SMS_TriggerDetectionPoint }, + { &hf_gsm_map_ms_tpdu_TypeCriterion, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TPDU_TypeCriterion }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_MT_smsCAMELTDP_Criteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MT_smsCAMELTDP_Criteria_sequence, hf_index, ett_gsm_map_ms_MT_smsCAMELTDP_Criteria); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MT_smsCAMELTDP_CriteriaList_sequence_of[1] = { + { &hf_gsm_map_ms_MT_smsCAMELTDP_CriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_Criteria }, +}; + +static int +dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MT_smsCAMELTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_ms_MT_smsCAMELTDP_CriteriaList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VlrCamelSubscriptionInfo_sequence[] = { + { &hf_gsm_map_ms_o_CSI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_ss_CSI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SS_CSI }, + { &hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList }, + { &hf_gsm_map_ms_tif_CSI , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_m_CSI , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_M_CSI }, + { &hf_gsm_map_ms_mo_sms_CSI, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI }, + { &hf_gsm_map_ms_vt_CSI , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI }, + { &hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList }, + { &hf_gsm_map_ms_d_CSI , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI }, + { &hf_gsm_map_ms_mt_sms_CSI, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI }, + { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_VlrCamelSubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_VlrCamelSubscriptionInfo); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PDP_Type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + guint8 pdp_type_org; + tvbuff_t *parameter_tvb; + + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + pdp_type_org = tvb_get_guint8(parameter_tvb,1); + switch (pdp_type_org){ + case 0: /* ETSI */ + proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + break; + case 1: /* IETF */ + proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + break; + default: + break; + } + + + return offset; +} + + + +int +dissect_gsm_map_ms_QoS_Subscribed(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + + tvbuff_t *parameter_tvb; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + de_sm_qos(parameter_tvb, tree, actx->pinfo, 0, 3, NULL,0); + + + return offset; +} + + + +int +dissect_gsm_map_ms_Ext_QoS_Subscribed(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext_qos_subscribed(tvb, actx->pinfo, tree, actx); + + + return offset; +} + + + +static int +dissect_gsm_map_ms_ChargingCharacteristics(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ms_Ext2_QoS_Subscribed(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext2_qos_subscribed(tvb, actx->pinfo, tree, actx); + + + return offset; +} + + + +int +dissect_gsm_map_ms_Ext3_QoS_Subscribed(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext3_qos_subscribed(tvb, actx->pinfo, tree, actx); + + + return offset; +} + + + +static int +dissect_gsm_map_ms_Ext4_QoS_Subscribed(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + + tvbuff_t *parameter_tvb; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext4_qos_subscribed(tvb, actx->pinfo, tree, actx); + + + return offset; +} + + + +static int +dissect_gsm_map_ms_APN_OI_Replacement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Ext_PDP_Type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Bandwidth(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_BandwidthExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AMBR_sequence[] = { + { &hf_gsm_map_ms_max_RequestedBandwidth_UL, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Bandwidth }, + { &hf_gsm_map_ms_max_RequestedBandwidth_DL, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Bandwidth }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_extended_Max_RequestedBandwidth_UL, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BandwidthExt }, + { &hf_gsm_map_ms_extended_Max_RequestedBandwidth_DL, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BandwidthExt }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AMBR(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AMBR_sequence, hf_index, ett_gsm_map_ms_AMBR); + + return offset; +} + + +static const value_string gsm_map_ms_SIPTO_Permission_vals[] = { + { 0, "siptoAboveRanAllowed" }, + { 1, "siptoAboveRanNotAllowed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_SIPTO_Permission(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_LIPA_Permission_vals[] = { + { 0, "lipaProhibited" }, + { 1, "lipaOnly" }, + { 2, "lipaConditional" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_LIPA_Permission(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Restoration_Priority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_SIPTO_Local_Network_Permission_vals[] = { + { 0, "siptoAtLocalNetworkAllowed" }, + { 1, "siptoAtLocalNetworkNotAllowed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_SIPTO_Local_Network_Permission(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_NIDD_Mechanism_vals[] = { + { 0, "sGi-based-data-delivery" }, + { 1, "sCEF-based-data-delivery" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_NIDD_Mechanism(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PDP_Context_sequence[] = { + { &hf_gsm_map_ms_pdp_ContextId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextId }, + { &hf_gsm_map_ms_pdp_Type , BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Type }, + { &hf_gsm_map_ms_pdp_Address, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_qos_Subscribed, BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QoS_Subscribed }, + { &hf_gsm_map_ms_vplmnAddressAllowed, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_apn , BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_ext_QoS_Subscribed, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed }, + { &hf_gsm_map_ms_pdp_ChargingCharacteristics, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics }, + { &hf_gsm_map_ms_ext2_QoS_Subscribed, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed }, + { &hf_gsm_map_ms_ext3_QoS_Subscribed, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed }, + { &hf_gsm_map_ms_ext4_QoS_Subscribed, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed }, + { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement }, + { &hf_gsm_map_ms_ext_pdp_Type, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_PDP_Type }, + { &hf_gsm_map_ms_ext_pdp_Address, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_ambr , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AMBR }, + { &hf_gsm_map_ms_sipto_Permission, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Permission }, + { &hf_gsm_map_ms_lipa_Permission, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LIPA_Permission }, + { &hf_gsm_map_ms_restoration_Priority, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Restoration_Priority }, + { &hf_gsm_map_ms_sipto_local_network_Permission, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Local_Network_Permission }, + { &hf_gsm_map_ms_nIDD_Mechanism, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NIDD_Mechanism }, + { &hf_gsm_map_ms_sCEF_ID , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_FQDN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PDP_Context(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PDP_Context_sequence, hf_index, ett_gsm_map_ms_PDP_Context); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GPRSDataList_sequence_of[1] = { + { &hf_gsm_map_ms_GPRSDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_PDP_Context }, +}; + +static int +dissect_gsm_map_ms_GPRSDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GPRSDataList_sequence_of, hf_index, ett_gsm_map_ms_GPRSDataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GPRSSubscriptionData_sequence[] = { + { &hf_gsm_map_ms_completeDataListIncluded, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_gprsDataList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSDataList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_GPRSSubscriptionData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GPRSSubscriptionData_sequence, hf_index, ett_gsm_map_ms_GPRSSubscriptionData); + + return offset; +} + + +static const value_string gsm_map_ms_NetworkAccessMode_vals[] = { + { 0, "packetAndCircuit" }, + { 1, "onlyCircuit" }, + { 2, "onlyPacket" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_NetworkAccessMode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_LSAOnlyAccessIndicator_vals[] = { + { 0, "accessOutsideLSAsAllowed" }, + { 1, "accessOutsideLSAsRestricted" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_LSAOnlyAccessIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_LSAAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LSAData_sequence[] = { + { &hf_gsm_map_ms_lsaIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity }, + { &hf_gsm_map_ms_lsaAttributes, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAAttributes }, + { &hf_gsm_map_ms_lsaActiveModeIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LSAData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LSAData_sequence, hf_index, ett_gsm_map_ms_LSAData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LSADataList_sequence_of[1] = { + { &hf_gsm_map_ms_LSADataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LSAData }, +}; + +static int +dissect_gsm_map_ms_LSADataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LSADataList_sequence_of, hf_index, ett_gsm_map_ms_LSADataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LSAInformation_sequence[] = { + { &hf_gsm_map_ms_completeDataListIncluded, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_lsaOnlyAccessIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAOnlyAccessIndicator }, + { &hf_gsm_map_ms_lsaDataList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSADataList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LSAInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LSAInformation_sequence, hf_index, ett_gsm_map_ms_LSAInformation); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GMLC_List_sequence_of[1] = { + { &hf_gsm_map_ms_GMLC_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, +}; + +static int +dissect_gsm_map_ms_GMLC_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GMLC_List_sequence_of, hf_index, ett_gsm_map_ms_GMLC_List); + + return offset; +} + + +const value_string gsm_map_ms_NotificationToMSUser_vals[] = { + { 0, "notifyLocationAllowed" }, + { 1, "notifyAndVerify-LocationAllowedIfNoResponse" }, + { 2, "notifyAndVerify-LocationNotAllowedIfNoResponse" }, + { 3, "locationNotAllowed" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_ms_NotificationToMSUser(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_GMLC_Restriction_vals[] = { + { 0, "gmlc-List" }, + { 1, "home-Country" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_GMLC_Restriction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ExternalClient_sequence[] = { + { &hf_gsm_map_ms_clientIdentity, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LCSClientExternalID }, + { &hf_gsm_map_ms_gmlc_Restriction, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GMLC_Restriction }, + { &hf_gsm_map_ms_notificationToMSUser, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ExternalClient(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ExternalClient_sequence, hf_index, ett_gsm_map_ms_ExternalClient); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ExternalClientList_sequence_of[1] = { + { &hf_gsm_map_ms_ExternalClientList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ExternalClient }, +}; + +static int +dissect_gsm_map_ms_ExternalClientList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ExternalClientList_sequence_of, hf_index, ett_gsm_map_ms_ExternalClientList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PLMNClientList_sequence_of[1] = { + { &hf_gsm_map_ms_PLMNClientList_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LCSClientInternalID }, +}; + +static int +dissect_gsm_map_ms_PLMNClientList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PLMNClientList_sequence_of, hf_index, ett_gsm_map_ms_PLMNClientList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_ExternalClientList_sequence_of[1] = { + { &hf_gsm_map_ms_Ext_ExternalClientList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ExternalClient }, +}; + +static int +dissect_gsm_map_ms_Ext_ExternalClientList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_ExternalClientList_sequence_of, hf_index, ett_gsm_map_ms_Ext_ExternalClientList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ServiceType_sequence[] = { + { &hf_gsm_map_ms_serviceTypeIdentity, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LCSServiceTypeID }, + { &hf_gsm_map_ms_gmlc_Restriction, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GMLC_Restriction }, + { &hf_gsm_map_ms_notificationToMSUser, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ServiceType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ServiceType_sequence, hf_index, ett_gsm_map_ms_ServiceType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ServiceTypeList_sequence_of[1] = { + { &hf_gsm_map_ms_ServiceTypeList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceType }, +}; + +static int +dissect_gsm_map_ms_ServiceTypeList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ServiceTypeList_sequence_of, hf_index, ett_gsm_map_ms_ServiceTypeList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LCS_PrivacyClass_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_notificationToMSUser, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser }, + { &hf_gsm_map_ms_externalClientList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ExternalClientList }, + { &hf_gsm_map_ms_plmnClientList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PLMNClientList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_ext_externalClientList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ExternalClientList }, + { &hf_gsm_map_ms_serviceTypeList, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceTypeList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LCS_PrivacyClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LCS_PrivacyClass_sequence, hf_index, ett_gsm_map_ms_LCS_PrivacyClass); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LCS_PrivacyExceptionList_sequence_of[1] = { + { &hf_gsm_map_ms_LCS_PrivacyExceptionList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LCS_PrivacyClass }, +}; + +static int +dissect_gsm_map_ms_LCS_PrivacyExceptionList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LCS_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_ms_LCS_PrivacyExceptionList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MOLR_Class_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_MOLR_Class(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MOLR_Class_sequence, hf_index, ett_gsm_map_ms_MOLR_Class); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MOLR_List_sequence_of[1] = { + { &hf_gsm_map_ms_MOLR_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MOLR_Class }, +}; + +static int +dissect_gsm_map_ms_MOLR_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MOLR_List_sequence_of, hf_index, ett_gsm_map_ms_MOLR_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LCSInformation_sequence[] = { + { &hf_gsm_map_ms_gmlc_List, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GMLC_List }, + { &hf_gsm_map_ms_lcs_PrivacyExceptionList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCS_PrivacyExceptionList }, + { &hf_gsm_map_ms_molr_List, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MOLR_List }, + { &hf_gsm_map_ms_add_lcs_PrivacyExceptionList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCS_PrivacyExceptionList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LCSInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LCSInformation_sequence, hf_index, ett_gsm_map_ms_LCSInformation); + + return offset; +} + + + +static int +dissect_gsm_map_ms_IST_AlertTimerValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_CS_AllocationRetentionPriority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_GPRS_TriggerDetectionPoint_vals[] = { + { 1, "attach" }, + { 2, "attachChangeOfPosition" }, + { 11, "pdp-ContextEstablishment" }, + { 12, "pdp-ContextEstablishmentAcknowledgement" }, + { 14, "pdp-ContextChangeOfPosition" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_GPRS_TriggerDetectionPoint(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +const value_string gsm_map_ms_DefaultGPRS_Handling_vals[] = { + { 0, "continueTransaction" }, + { 1, "releaseTransaction" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_ms_DefaultGPRS_Handling(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GPRS_CamelTDPData_sequence[] = { + { &hf_gsm_map_ms_gprs_TriggerDetectionPoint, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_TriggerDetectionPoint }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_defaultSessionHandling, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultGPRS_Handling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_GPRS_CamelTDPData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GPRS_CamelTDPData_sequence, hf_index, ett_gsm_map_ms_GPRS_CamelTDPData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GPRS_CamelTDPDataList_sequence_of[1] = { + { &hf_gsm_map_ms_GPRS_CamelTDPDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_GPRS_CamelTDPData }, +}; + +static int +dissect_gsm_map_ms_GPRS_CamelTDPDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GPRS_CamelTDPDataList_sequence_of, hf_index, ett_gsm_map_ms_GPRS_CamelTDPDataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GPRS_CSI_sequence[] = { + { &hf_gsm_map_ms_gprs_CamelTDPDataList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_CamelTDPDataList }, + { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_GPRS_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GPRS_CSI_sequence, hf_index, ett_gsm_map_ms_GPRS_CSI); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MG_CSI_sequence[] = { + { &hf_gsm_map_ms_mobilityTriggers, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MobilityTriggers }, + { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_MG_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MG_CSI_sequence, hf_index, ett_gsm_map_ms_MG_CSI); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SGSN_CAMEL_SubscriptionInfo_sequence[] = { + { &hf_gsm_map_ms_gprs_CSI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_CSI }, + { &hf_gsm_map_ms_mo_sms_CSI, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_mt_sms_CSI, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI }, + { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList }, + { &hf_gsm_map_ms_mg_csi , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MG_CSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SGSN_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo); + + return offset; +} + + +static int * const gsm_map_ms_AccessRestrictionData_bits[] = { + &hf_gsm_map_ms_AccessRestrictionData_utranNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_geranNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_ganNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_i_hspa_evolutionNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_wb_e_utranNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_ho_toNon3GPP_AccessNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_nb_iotNotAllowed, + &hf_gsm_map_ms_AccessRestrictionData_enhancedCoverageNotAllowed, + NULL +}; + +static int +dissect_gsm_map_ms_AccessRestrictionData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AccessRestrictionData_bits, 8, hf_index, ett_gsm_map_ms_AccessRestrictionData, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_RFSP_ID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_PDN_Type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_QoS_Class_Identifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Allocation_Retention_Priority_sequence[] = { + { &hf_gsm_map_ms_priority_level, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_INTEGER }, + { &hf_gsm_map_ms_pre_emption_capability, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN }, + { &hf_gsm_map_ms_pre_emption_vulnerability, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Allocation_Retention_Priority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Allocation_Retention_Priority_sequence, hf_index, ett_gsm_map_ms_Allocation_Retention_Priority); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EPS_QoS_Subscribed_sequence[] = { + { &hf_gsm_map_ms_qos_Class_Identifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QoS_Class_Identifier }, + { &hf_gsm_map_ms_allocation_Retention_Priority, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Allocation_Retention_Priority }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EPS_QoS_Subscribed(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EPS_QoS_Subscribed_sequence, hf_index, ett_gsm_map_ms_EPS_QoS_Subscribed); + + return offset; +} + + +static const value_string gsm_map_ms_PDN_GW_AllocationType_vals[] = { + { 0, "static" }, + { 1, "dynamic" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_PDN_GW_AllocationType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SpecificAPNInfo_sequence[] = { + { &hf_gsm_map_ms_apn , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_ms_pdn_gw_Identity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Identity }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SpecificAPNInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SpecificAPNInfo_sequence, hf_index, ett_gsm_map_ms_SpecificAPNInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SpecificAPNInfoList_sequence_of[1] = { + { &hf_gsm_map_ms_SpecificAPNInfoList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SpecificAPNInfo }, +}; + +static int +dissect_gsm_map_ms_SpecificAPNInfoList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SpecificAPNInfoList_sequence_of, hf_index, ett_gsm_map_ms_SpecificAPNInfoList); + + return offset; +} + + +static const value_string gsm_map_ms_WLAN_Offloadability_Indication_vals[] = { + { 0, "notAllowed" }, + { 1, "allowed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_WLAN_Offloadability_Indication(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_WLAN_Offloadability_sequence[] = { + { &hf_gsm_map_ms_wlan_offloadability_EUTRAN, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WLAN_Offloadability_Indication }, + { &hf_gsm_map_ms_wlan_offloadability_UTRAN, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WLAN_Offloadability_Indication }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_WLAN_Offloadability(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_WLAN_Offloadability_sequence, hf_index, ett_gsm_map_ms_WLAN_Offloadability); + + return offset; +} + + +static const value_string gsm_map_ms_PDN_ConnectionContinuity_vals[] = { + { 0, "maintainPDN-Connection" }, + { 1, "disconnectPDN-ConnectionWithReactivationRequest" }, + { 2, "disconnectPDN-ConnectionWithoutReactivationRequest" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_PDN_ConnectionContinuity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_APN_Configuration_sequence[] = { + { &hf_gsm_map_ms_contextId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId }, + { &hf_gsm_map_ms_pdn_Type , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_Type }, + { &hf_gsm_map_ms_servedPartyIP_IPv4_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_apn , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_ms_eps_qos_Subscribed, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_QoS_Subscribed }, + { &hf_gsm_map_ms_pdn_gw_Identity, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Identity }, + { &hf_gsm_map_ms_pdn_gw_AllocationType, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_AllocationType }, + { &hf_gsm_map_ms_vplmnAddressAllowed, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_chargingCharacteristics, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics }, + { &hf_gsm_map_ms_ambr , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AMBR }, + { &hf_gsm_map_ms_specificAPNInfoList, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SpecificAPNInfoList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_servedPartyIP_IPv6_Address, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement }, + { &hf_gsm_map_ms_sipto_Permission, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Permission }, + { &hf_gsm_map_ms_lipa_Permission, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LIPA_Permission }, + { &hf_gsm_map_ms_restoration_Priority, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Restoration_Priority }, + { &hf_gsm_map_ms_sipto_local_network_Permission, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Local_Network_Permission }, + { &hf_gsm_map_ms_wlan_offloadability, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WLAN_Offloadability }, + { &hf_gsm_map_ms_non_IP_PDN_Type_Indicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_nIDD_Mechanism, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NIDD_Mechanism }, + { &hf_gsm_map_ms_sCEF_ID , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_FQDN }, + { &hf_gsm_map_ms_pdn_ConnectionContinuity, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_ConnectionContinuity }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_APN_Configuration(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_APN_Configuration_sequence, hf_index, ett_gsm_map_ms_APN_Configuration); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EPS_DataList_sequence_of[1] = { + { &hf_gsm_map_ms_EPS_DataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_APN_Configuration }, +}; + +static int +dissect_gsm_map_ms_EPS_DataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EPS_DataList_sequence_of, hf_index, ett_gsm_map_ms_EPS_DataList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_APN_ConfigurationProfile_sequence[] = { + { &hf_gsm_map_ms_defaultContext, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextId }, + { &hf_gsm_map_ms_completeDataListIncluded, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_epsDataList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_DataList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_additionalDefaultContext, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_APN_ConfigurationProfile(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_APN_ConfigurationProfile_sequence, hf_index, ett_gsm_map_ms_APN_ConfigurationProfile); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EPS_SubscriptionData_sequence[] = { + { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement }, + { &hf_gsm_map_ms_rfsp_id , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RFSP_ID }, + { &hf_gsm_map_ms_ambr , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AMBR }, + { &hf_gsm_map_ms_apn_ConfigurationProfile, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_ConfigurationProfile }, + { &hf_gsm_map_ms_stn_sr , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_mps_CSPriority, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_mps_EPSPriority, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_subscribed_vsrvcc, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EPS_SubscriptionData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EPS_SubscriptionData_sequence, hf_index, ett_gsm_map_ms_EPS_SubscriptionData); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SubscribedPeriodicRAUTAUtimer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_SubscribedPeriodicLAUtimer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_VPLMN_CSG_SubscriptionDataList_sequence_of[1] = { + { &hf_gsm_map_ms_VPLMN_CSG_SubscriptionDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CSG_SubscriptionData }, +}; + +static int +dissect_gsm_map_ms_VPLMN_CSG_SubscriptionDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_VPLMN_CSG_SubscriptionDataList_sequence_of, hf_index, ett_gsm_map_ms_VPLMN_CSG_SubscriptionDataList); + + return offset; +} + + +static int * const gsm_map_ms_Ext_AccessRestrictionData_bits[] = { + &hf_gsm_map_ms_Ext_AccessRestrictionData_nrAsSecondaryRATNotAllowed, + &hf_gsm_map_ms_Ext_AccessRestrictionData_unlicensedSpectrumAsSecondaryRATNotAllowed, + NULL +}; + +static int +dissect_gsm_map_ms_Ext_AccessRestrictionData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_AccessRestrictionData_bits, 2, hf_index, ett_gsm_map_ms_Ext_AccessRestrictionData, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AdjacentAccessRestrictionData_sequence[] = { + { &hf_gsm_map_ms_plmnId , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { &hf_gsm_map_ms_accessRestrictionData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AccessRestrictionData }, + { &hf_gsm_map_ms_ext_AccessRestrictionData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_AccessRestrictionData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AdjacentAccessRestrictionData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AdjacentAccessRestrictionData_sequence, hf_index, ett_gsm_map_ms_AdjacentAccessRestrictionData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AdjacentAccessRestrictionDataList_sequence_of[1] = { + { &hf_gsm_map_ms_AdjacentAccessRestrictionDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AdjacentAccessRestrictionData }, +}; + +static int +dissect_gsm_map_ms_AdjacentAccessRestrictionDataList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AdjacentAccessRestrictionDataList_sequence_of, hf_index, ett_gsm_map_ms_AdjacentAccessRestrictionDataList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Group_Service_ID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Local_GroupID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_IMSI_GroupId_sequence[] = { + { &hf_gsm_map_ms_group_Service_Id, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Group_Service_ID }, + { &hf_gsm_map_ms_plmnId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { &hf_gsm_map_ms_local_Group_ID, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Local_GroupID }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_IMSI_GroupId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_IMSI_GroupId_sequence, hf_index, ett_gsm_map_ms_IMSI_GroupId); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_IMSI_GroupIdList_sequence_of[1] = { + { &hf_gsm_map_ms_IMSI_GroupIdList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IMSI_GroupId }, +}; + +static int +dissect_gsm_map_ms_IMSI_GroupIdList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_IMSI_GroupIdList_sequence_of, hf_index, ett_gsm_map_ms_IMSI_GroupIdList); + + return offset; +} + + + +static int +dissect_gsm_map_ms_DL_Buffering_Suggested_Packet_Count(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_Reset_Id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Reset_Id_List_sequence_of[1] = { + { &hf_gsm_map_ms_Reset_Id_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Reset_Id }, +}; + +static int +dissect_gsm_map_ms_Reset_Id_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Reset_Id_List_sequence_of, hf_index, ett_gsm_map_ms_Reset_Id_List); + + return offset; +} + + + +static int +dissect_gsm_map_ms_EDRX_Cycle_Length_Value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EDRX_Cycle_Length_sequence[] = { + { &hf_gsm_map_ms_rat_Type , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Used_RAT_Type }, + { &hf_gsm_map_ms_eDRX_Cycle_Length_Value, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EDRX_Cycle_Length_Value }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EDRX_Cycle_Length(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EDRX_Cycle_Length_sequence, hf_index, ett_gsm_map_ms_EDRX_Cycle_Length); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EDRX_Cycle_Length_List_sequence_of[1] = { + { &hf_gsm_map_ms_EDRX_Cycle_Length_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_EDRX_Cycle_Length }, +}; + +static int +dissect_gsm_map_ms_EDRX_Cycle_Length_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EDRX_Cycle_Length_List_sequence_of, hf_index, ett_gsm_map_ms_EDRX_Cycle_Length_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_InsertSubscriberDataArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_msisdn , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_category , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Category }, + { &hf_gsm_map_ms_subscriberStatus, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberStatus }, + { &hf_gsm_map_ms_bearerServiceList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BearerServiceList }, + { &hf_gsm_map_ms_teleserviceList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TeleserviceList }, + { &hf_gsm_map_ms_provisionedSS, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SS_InfoList }, + { &hf_gsm_map_ms_odb_Data , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data }, + { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_regionalSubscriptionData, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCodeList }, + { &hf_gsm_map_ms_vbsSubscriptionData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VBSDataList }, + { &hf_gsm_map_ms_vgcsSubscriptionData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VGCSDataList }, + { &hf_gsm_map_ms_vlrCamelSubscriptionInfo, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VlrCamelSubscriptionInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_naea_PreferredCI, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NAEA_PreferredCI }, + { &hf_gsm_map_ms_gprsSubscriptionData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSSubscriptionData }, + { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsupportedFeature, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_networkAccessMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NetworkAccessMode }, + { &hf_gsm_map_ms_lsaInformation, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAInformation }, + { &hf_gsm_map_ms_lmu_Indicator, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_lcsInformation, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCSInformation }, + { &hf_gsm_map_ms_istAlertTimer, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_AlertTimerValue }, + { &hf_gsm_map_ms_superChargerSupportedInHLR, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AgeIndicator }, + { &hf_gsm_map_ms_mc_SS_Info, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_SS_Info }, + { &hf_gsm_map_ms_cs_AllocationRetentionPriority, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CS_AllocationRetentionPriority }, + { &hf_gsm_map_ms_sgsn_CAMEL_SubscriptionInfo, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_chargingCharacteristics, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics }, + { &hf_gsm_map_ms_accessRestrictionData, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AccessRestrictionData }, + { &hf_gsm_map_ms_ics_Indicator, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN }, + { &hf_gsm_map_ms_eps_SubscriptionData, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_SubscriptionData }, + { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList }, + { &hf_gsm_map_ms_ue_ReachabilityRequestIndicator, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_mme_Name , BER_CLASS_CON, 35, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_ms_subscribedPeriodicRAUTAUtimer, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscribedPeriodicRAUTAUtimer }, + { &hf_gsm_map_ms_vplmnLIPAAllowed, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_mdtUserConsent, BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN }, + { &hf_gsm_map_ms_subscribedPeriodicLAUtimer, BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscribedPeriodicLAUtimer }, + { &hf_gsm_map_ms_vplmn_Csg_SubscriptionDataList, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VPLMN_CSG_SubscriptionDataList }, + { &hf_gsm_map_ms_additionalMSISDN, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_psAndSMS_OnlyServiceProvision, BER_CLASS_CON, 42, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_smsInSGSNAllowed, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_cs_to_ps_SRVCC_Allowed_Indicator, BER_CLASS_CON, 44, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_pcscf_Restoration_Request, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_adjacentAccessRestrictionDataList, BER_CLASS_CON, 46, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdjacentAccessRestrictionDataList }, + { &hf_gsm_map_ms_imsi_Group_Id_List, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IMSI_GroupIdList }, + { &hf_gsm_map_ms_ueUsageType, BER_CLASS_CON, 48, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UE_UsageType }, + { &hf_gsm_map_ms_userPlaneIntegrityProtectionIndicator, BER_CLASS_CON, 49, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_dl_Buffering_Suggested_Packet_Count, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DL_Buffering_Suggested_Packet_Count }, + { &hf_gsm_map_ms_reset_Id_List, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Reset_Id_List }, + { &hf_gsm_map_ms_eDRX_Cycle_Length_List, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EDRX_Cycle_Length_List }, + { &hf_gsm_map_ms_ext_AccessRestrictionData, BER_CLASS_CON, 53, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_AccessRestrictionData }, + { &hf_gsm_map_ms_iab_Operation_Allowed_Indicator, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_InsertSubscriberDataArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_ms_InsertSubscriberDataArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SubscriberData_sequence[] = { + { &hf_gsm_map_ms_msisdn , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_category , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Category }, + { &hf_gsm_map_ms_subscriberStatus, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberStatus }, + { &hf_gsm_map_ms_bearerServiceList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BearerServiceList }, + { &hf_gsm_map_ms_teleserviceList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TeleserviceList }, + { &hf_gsm_map_ms_provisionedSS, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SS_InfoList }, + { &hf_gsm_map_ms_odb_Data , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data }, + { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_regionalSubscriptionData, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCodeList }, + { &hf_gsm_map_ms_vbsSubscriptionData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VBSDataList }, + { &hf_gsm_map_ms_vgcsSubscriptionData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VGCSDataList }, + { &hf_gsm_map_ms_vlrCamelSubscriptionInfo, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VlrCamelSubscriptionInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SubscriberData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SubscriberData_sequence, hf_index, ett_gsm_map_ms_SubscriberData); + + return offset; +} + + +static const value_string gsm_map_ms_RegionalSubscriptionResponse_vals[] = { + { 0, "networkNode-AreaRestricted" }, + { 1, "tooManyZoneCodes" }, + { 2, "zoneCodesConflict" }, + { 3, "regionalSubscNotSupported" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_RegionalSubscriptionResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_InsertSubscriberDataRes_sequence[] = { + { &hf_gsm_map_ms_teleserviceList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TeleserviceList }, + { &hf_gsm_map_ms_bearerServiceList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BearerServiceList }, + { &hf_gsm_map_ms_ss_List , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List }, + { &hf_gsm_map_ms_odb_GeneralData, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_GeneralData }, + { &hf_gsm_map_ms_regionalSubscriptionResponse, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RegionalSubscriptionResponse }, + { &hf_gsm_map_ms_supportedCamelPhases, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_offeredCamel4CSIs, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ms_supportedFeatures, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedFeatures }, + { &hf_gsm_map_ms_ext_SupportedFeatures, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SupportedFeatures }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_InsertSubscriberDataRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_ms_InsertSubscriberDataRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_BasicServiceList_sequence_of[1] = { + { &hf_gsm_map_ms_BasicServiceList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode }, +}; + +static int +dissect_gsm_map_ms_BasicServiceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_BasicServiceList_sequence_of, hf_index, ett_gsm_map_ms_BasicServiceList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ContextIdList_sequence_of[1] = { + { &hf_gsm_map_ms_ContextIdList_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextId }, +}; + +static int +dissect_gsm_map_ms_ContextIdList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ContextIdList_sequence_of, hf_index, ett_gsm_map_ms_ContextIdList); + + return offset; +} + + +static const value_string gsm_map_ms_GPRSSubscriptionDataWithdraw_vals[] = { + { 0, "allGPRSData" }, + { 1, "contextIdList" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_GPRSSubscriptionDataWithdraw_choice[] = { + { 0, &hf_gsm_map_ms_allGPRSData, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { 1, &hf_gsm_map_ms_contextIdList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextIdList }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_GPRSSubscriptionDataWithdraw(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_GPRSSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_ms_GPRSSubscriptionDataWithdraw, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LSAIdentityList_sequence_of[1] = { + { &hf_gsm_map_ms_LSAIdentityList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LSAIdentity }, +}; + +static int +dissect_gsm_map_ms_LSAIdentityList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LSAIdentityList_sequence_of, hf_index, ett_gsm_map_ms_LSAIdentityList); + + return offset; +} + + +static const value_string gsm_map_ms_LSAInformationWithdraw_vals[] = { + { 0, "allLSAData" }, + { 1, "lsaIdentityList" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_LSAInformationWithdraw_choice[] = { + { 0, &hf_gsm_map_ms_allLSAData, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { 1, &hf_gsm_map_ms_lsaIdentityList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LSAIdentityList }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LSAInformationWithdraw(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_LSAInformationWithdraw_choice, hf_index, ett_gsm_map_ms_LSAInformationWithdraw, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_SpecificCSI_Withdraw_bits[] = { + &hf_gsm_map_ms_SpecificCSI_Withdraw_o_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_ss_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_tif_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_d_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_mo_sms_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_m_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_gprs_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_t_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_mt_sms_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_mg_csi, + &hf_gsm_map_ms_SpecificCSI_Withdraw_o_IM_CSI, + &hf_gsm_map_ms_SpecificCSI_Withdraw_d_IM_CSI, + &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_IM_CSI, + NULL +}; + +static int +dissect_gsm_map_ms_SpecificCSI_Withdraw(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SpecificCSI_Withdraw_bits, 14, hf_index, ett_gsm_map_ms_SpecificCSI_Withdraw, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_EPS_SubscriptionDataWithdraw_vals[] = { + { 0, "allEPS-Data" }, + { 1, "contextIdList" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_EPS_SubscriptionDataWithdraw_choice[] = { + { 0, &hf_gsm_map_ms_allEPS_Data, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { 1, &hf_gsm_map_ms_contextIdList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextIdList }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EPS_SubscriptionDataWithdraw(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_EPS_SubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_ms_EPS_SubscriptionDataWithdraw, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DeleteSubscriberDataArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_basicServiceList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceList }, + { &hf_gsm_map_ms_ss_List , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List }, + { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_regionalSubscriptionIdentifier, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCode }, + { &hf_gsm_map_ms_vbsGroupIndication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_vgcsGroupIndication, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_camelSubscriptionInfoWithdraw, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_gprsSubscriptionDataWithdraw, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_GPRSSubscriptionDataWithdraw }, + { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsuppportedFeature, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_lsaInformationWithdraw, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_LSAInformationWithdraw }, + { &hf_gsm_map_ms_gmlc_ListWithdraw, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_istInformationWithdraw, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_specificCSI_Withdraw, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SpecificCSI_Withdraw }, + { &hf_gsm_map_ms_chargingCharacteristicsWithdraw, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_stn_srWithdraw, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_epsSubscriptionDataWithdraw, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_EPS_SubscriptionDataWithdraw }, + { &hf_gsm_map_ms_apn_oi_replacementWithdraw, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csg_SubscriptionDeleted, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_subscribedPeriodicTAU_RAU_TimerWithdraw, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_subscribedPeriodicLAU_TimerWithdraw, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_subscribed_vsrvccWithdraw, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_vplmn_Csg_SubscriptionDeleted, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_additionalMSISDN_Withdraw, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_cs_to_ps_SRVCC_Withdraw, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_imsiGroupIdList_Withdraw, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_userPlaneIntegrityProtectionWithdraw, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_dl_Buffering_Suggested_Packet_Count_Withdraw, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ue_UsageTypeWithdraw, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_reset_idsWithdraw, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_iab_OperationWithdraw, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_DeleteSubscriberDataArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_ms_DeleteSubscriberDataArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_DeleteSubscriberDataRes_sequence[] = { + { &hf_gsm_map_ms_regionalSubscriptionResponse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RegionalSubscriptionResponse }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_DeleteSubscriberDataRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_ms_DeleteSubscriberDataRes); + + return offset; +} + + +static int * const gsm_map_ms_OfferedCamel4Functionalities_bits[] = { + &hf_gsm_map_ms_OfferedCamel4Functionalities_initiateCallAttempt, + &hf_gsm_map_ms_OfferedCamel4Functionalities_splitLeg, + &hf_gsm_map_ms_OfferedCamel4Functionalities_moveLeg, + &hf_gsm_map_ms_OfferedCamel4Functionalities_disconnectLeg, + &hf_gsm_map_ms_OfferedCamel4Functionalities_entityReleased, + &hf_gsm_map_ms_OfferedCamel4Functionalities_dfc_WithArgument, + &hf_gsm_map_ms_OfferedCamel4Functionalities_playTone, + &hf_gsm_map_ms_OfferedCamel4Functionalities_dtmf_MidCall, + &hf_gsm_map_ms_OfferedCamel4Functionalities_chargingIndicator, + &hf_gsm_map_ms_OfferedCamel4Functionalities_alertingDP, + &hf_gsm_map_ms_OfferedCamel4Functionalities_locationAtAlerting, + &hf_gsm_map_ms_OfferedCamel4Functionalities_changeOfPositionDP, + &hf_gsm_map_ms_OfferedCamel4Functionalities_or_Interactions, + &hf_gsm_map_ms_OfferedCamel4Functionalities_warningToneEnhancements, + &hf_gsm_map_ms_OfferedCamel4Functionalities_cf_Enhancements, + &hf_gsm_map_ms_OfferedCamel4Functionalities_subscribedEnhancedDialledServices, + &hf_gsm_map_ms_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices, + &hf_gsm_map_ms_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP, + &hf_gsm_map_ms_OfferedCamel4Functionalities_serviceChangeDP, + &hf_gsm_map_ms_OfferedCamel4Functionalities_collectInformation, + NULL +}; + +int +dissect_gsm_map_ms_OfferedCamel4Functionalities(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_OfferedCamel4Functionalities_bits, 20, hf_index, ett_gsm_map_ms_OfferedCamel4Functionalities, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendRoutingInfoForGprsArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_ggsn_Number, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendRoutingInfoForGprsArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_ms_SendRoutingInfoForGprsArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SendRoutingInfoForGprsRes_sequence[] = { + { &hf_gsm_map_ms_sgsn_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_mobileNotReachableReason, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendRoutingInfoForGprsRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_ms_SendRoutingInfoForGprsRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_FailureReportArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_ggsn_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_FailureReportArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_FailureReportArg_sequence, hf_index, ett_gsm_map_ms_FailureReportArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_FailureReportRes_sequence[] = { + { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_FailureReportRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_FailureReportRes_sequence, hf_index, ett_gsm_map_ms_FailureReportRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_NoteMsPresentForGprsArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_sgsn_Address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_NoteMsPresentForGprsArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_ms_NoteMsPresentForGprsArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_NoteMsPresentForGprsRes_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_NoteMsPresentForGprsRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_ms_NoteMsPresentForGprsRes); + + return offset; +} + + +static const value_string gsm_map_ms_SendingNode_Number_vals[] = { + { 0, "hlr-Number" }, + { 1, "css-Number" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_SendingNode_Number_choice[] = { + { 0, &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { 1, &hf_gsm_map_ms_css_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SendingNode_Number(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_SendingNode_Number_choice, hf_index, ett_gsm_map_ms_SendingNode_Number, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ResetArg_sequence[] = { + { &hf_gsm_map_ms_sendingNodenumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SendingNode_Number }, + { &hf_gsm_map_ms_hlr_List , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_HLR_List }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_reset_Id_List, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Reset_Id_List }, + { &hf_gsm_map_ms_subscriptionData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_InsertSubscriberDataArg }, + { &hf_gsm_map_ms_subscriptionDataDeletion, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DeleteSubscriberDataArg }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ResetArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ResetArg_sequence, hf_index, ett_gsm_map_ms_ResetArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RestoreDataArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_lmsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_vlr_Capability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VLR_Capability }, + { &hf_gsm_map_ms_restorationIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_RestoreDataArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RestoreDataArg_sequence, hf_index, ett_gsm_map_ms_RestoreDataArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RestoreDataRes_sequence[] = { + { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_msNotReachable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_RestoreDataRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RestoreDataRes_sequence, hf_index, ett_gsm_map_ms_RestoreDataRes); + + return offset; +} + + +static const value_string gsm_map_ms_DomainType_vals[] = { + { 0, "cs-Domain" }, + { 1, "ps-Domain" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_DomainType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static int * const gsm_map_ms_RequestedNodes_bits[] = { + &hf_gsm_map_ms_RequestedNodes_mme, + &hf_gsm_map_ms_RequestedNodes_sgsn, + NULL +}; + +static int +dissect_gsm_map_ms_RequestedNodes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RequestedNodes_bits, 2, hf_index, ett_gsm_map_ms_RequestedNodes, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RequestedInfo_sequence[] = { + { &hf_gsm_map_ms_locationInformation_01, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_subscriberState_01, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_currentLocation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_requestedDomain, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DomainType }, + { &hf_gsm_map_ms_imei_01 , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ms_classmark, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_mnpRequestedInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_locationInformationEPS_Supported, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_t_adsData, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_requestedNodes, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedNodes }, + { &hf_gsm_map_ms_servingNodeIndication, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_localTimeZoneRequest, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_RequestedInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RequestedInfo_sequence, hf_index, ett_gsm_map_ms_RequestedInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ProvideSubscriberInfoArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_lmsi , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_ms_requestedInfo, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_callPriority, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ProvideSubscriberInfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ms_ProvideSubscriberInfoArg); + + return offset; +} + + +static const value_string gsm_map_ms_NotReachableReason_vals[] = { + { 0, "msPurged" }, + { 1, "imsiDetached" }, + { 2, "restrictedArea" }, + { 3, "notRegistered" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_NotReachableReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +const value_string gsm_map_ms_SubscriberState_vals[] = { + { 0, "assumedIdle" }, + { 1, "camelBusy" }, + { 2, "netDetNotReachable" }, + { 3, "notProvidedFromVLR" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_SubscriberState_choice[] = { + { 0, &hf_gsm_map_ms_assumedIdle, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 1, &hf_gsm_map_ms_camelBusy, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 2, &hf_gsm_map_ms_netDetNotReachable, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NotReachableReason }, + { 3, &hf_gsm_map_ms_notProvidedFromVLR, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ms_SubscriberState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_SubscriberState_choice, hf_index, ett_gsm_map_ms_SubscriberState, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_NSAPI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_TransactionId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_TEID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ms_GPRSChargingID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PDP_ContextInfo_sequence[] = { + { &hf_gsm_map_ms_pdp_ContextIdentifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId }, + { &hf_gsm_map_ms_pdp_ContextActive, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_pdp_Type , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Type }, + { &hf_gsm_map_ms_pdp_Address, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { &hf_gsm_map_ms_apn_Subscribed, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_ms_apn_InUse, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_ms_nsapi , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NSAPI }, + { &hf_gsm_map_ms_transactionId, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TransactionId }, + { &hf_gsm_map_ms_teid_ForGnAndGp, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TEID }, + { &hf_gsm_map_ms_teid_ForIu, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TEID }, + { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_qos_Subscribed_01, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed }, + { &hf_gsm_map_ms_qos_Requested, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed }, + { &hf_gsm_map_ms_qos_Negotiated, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed }, + { &hf_gsm_map_ms_chargingId, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSChargingID }, + { &hf_gsm_map_ms_chargingCharacteristics, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics }, + { &hf_gsm_map_ms_rnc_Address, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_qos2_Subscribed, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed }, + { &hf_gsm_map_ms_qos2_Requested, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed }, + { &hf_gsm_map_ms_qos2_Negotiated, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed }, + { &hf_gsm_map_ms_qos3_Subscribed, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed }, + { &hf_gsm_map_ms_qos3_Requested, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed }, + { &hf_gsm_map_ms_qos3_Negotiated, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed }, + { &hf_gsm_map_ms_qos4_Subscribed, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed }, + { &hf_gsm_map_ms_qos4_Requested, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed }, + { &hf_gsm_map_ms_qos4_Negotiated, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed }, + { &hf_gsm_map_ms_ext_pdp_Type, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_PDP_Type }, + { &hf_gsm_map_ms_ext_pdp_Address, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PDP_ContextInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PDP_ContextInfo_sequence, hf_index, ett_gsm_map_ms_PDP_ContextInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_PDP_ContextInfoList_sequence_of[1] = { + { &hf_gsm_map_ms_PDP_ContextInfoList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_PDP_ContextInfo }, +}; + +static int +dissect_gsm_map_ms_PDP_ContextInfoList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_PDP_ContextInfoList_sequence_of, hf_index, ett_gsm_map_ms_PDP_ContextInfoList); + + return offset; +} + + +static const value_string gsm_map_ms_PS_SubscriberState_vals[] = { + { 0, "notProvidedFromSGSNorMME" }, + { 1, "ps-Detached" }, + { 2, "ps-AttachedNotReachableForPaging" }, + { 3, "ps-AttachedReachableForPaging" }, + { 4, "ps-PDP-ActiveNotReachableForPaging" }, + { 5, "ps-PDP-ActiveReachableForPaging" }, + { 6, "netDetNotReachable" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_PS_SubscriberState_choice[] = { + { 0, &hf_gsm_map_ms_notProvidedFromSGSNorMME, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 1, &hf_gsm_map_ms_ps_Detached, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 2, &hf_gsm_map_ms_ps_AttachedNotReachableForPaging, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 3, &hf_gsm_map_ms_ps_AttachedReachableForPaging, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { 4, &hf_gsm_map_ms_ps_PDP_ActiveNotReachableForPaging, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_ContextInfoList }, + { 5, &hf_gsm_map_ms_ps_PDP_ActiveReachableForPaging, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_ContextInfoList }, + { 6, &hf_gsm_map_ms_netDetNotReachable, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NotReachableReason }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_PS_SubscriberState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_PS_SubscriberState_choice, hf_index, ett_gsm_map_ms_PS_SubscriberState, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ms_MS_Classmark2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_MSNetworkCapability(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_MSRadioAccessCapability(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_GPRSMSClass_sequence[] = { + { &hf_gsm_map_ms_mSNetworkCapability, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MSNetworkCapability }, + { &hf_gsm_map_ms_mSRadioAccessCapability, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MSRadioAccessCapability }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ms_GPRSMSClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_GPRSMSClass_sequence, hf_index, ett_gsm_map_ms_GPRSMSClass); + + return offset; +} + + + +static int +dissect_gsm_map_ms_RouteingNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const value_string gsm_map_ms_NumberPortabilityStatus_vals[] = { + { 0, "notKnownToBePorted" }, + { 1, "ownNumberPortedOut" }, + { 2, "foreignNumberPortedToForeignNetwork" }, + { 4, "ownNumberNotPortedOut" }, + { 5, "foreignNumberPortedIn" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_NumberPortabilityStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MNPInfoRes_sequence[] = { + { &hf_gsm_map_ms_routeingNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RouteingNumber }, + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_msisdn , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_numberPortabilityStatus, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NumberPortabilityStatus }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_MNPInfoRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MNPInfoRes_sequence, hf_index, ett_gsm_map_ms_MNPInfoRes); + + return offset; +} + + +static const value_string gsm_map_ms_IMS_VoiceOverPS_SessionsInd_vals[] = { + { 0, "imsVoiceOverPS-SessionsNotSupported" }, + { 1, "imsVoiceOverPS-SessionsSupported" }, + { 2, "unknown" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_IMS_VoiceOverPS_SessionsInd(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ms_TimeZone(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_DaylightSavingTime_vals[] = { + { 0, "noAdjustment" }, + { 1, "plusOneHourAdjustment" }, + { 2, "plusTwoHoursAdjustment" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_DaylightSavingTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_LocationInformation5GS_sequence[] = { + { &hf_gsm_map_ms_nrCellGlobalIdentity, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NR_CGI }, + { &hf_gsm_map_ms_e_utranCellGlobalIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_E_UTRAN_CGI }, + { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation }, + { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation }, + { &hf_gsm_map_ms_amf_address, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_FQDN }, + { &hf_gsm_map_ms_trackingAreaIdentity, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TA_Id }, + { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_map_ms_vplmnId , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { &hf_gsm_map_ms_localtimeZone, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TimeZone }, + { &hf_gsm_map_ms_rat_Type , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Used_RAT_Type }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_nrTrackingAreaIdentity, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NR_TA_Id }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_LocationInformation5GS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_LocationInformation5GS_sequence, hf_index, ett_gsm_map_ms_LocationInformation5GS); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_SubscriberInfo_sequence[] = { + { &hf_gsm_map_ms_locationInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation }, + { &hf_gsm_map_ms_subscriberState, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SubscriberState }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_locationInformationGPRS, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationGPRS }, + { &hf_gsm_map_ms_ps_SubscriberState, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_PS_SubscriberState }, + { &hf_gsm_map_ms_imei , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_ms_ms_Classmark2, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MS_Classmark2 }, + { &hf_gsm_map_ms_gprs_MS_Class, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSMSClass }, + { &hf_gsm_map_ms_mnpInfoRes, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MNPInfoRes }, + { &hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IMS_VoiceOverPS_SessionsInd }, + { &hf_gsm_map_ms_lastUE_ActivityTime, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Time }, + { &hf_gsm_map_ms_lastRAT_Type, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Used_RAT_Type }, + { &hf_gsm_map_ms_eps_SubscriberState, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_PS_SubscriberState }, + { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS }, + { &hf_gsm_map_ms_timeZone , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TimeZone }, + { &hf_gsm_map_ms_daylightSavingTime, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DaylightSavingTime }, + { &hf_gsm_map_ms_locationInformation5GS, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation5GS }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_SubscriberInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_SubscriberInfo_sequence, hf_index, ett_gsm_map_ms_SubscriberInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ProvideSubscriberInfoRes_sequence[] = { + { &hf_gsm_map_ms_subscriberInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SubscriberInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ProvideSubscriberInfoRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ms_ProvideSubscriberInfoRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AnyTimeInterrogationArg_sequence[] = { + { &hf_gsm_map_ms_subscriberIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity }, + { &hf_gsm_map_ms_requestedInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedInfo }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AnyTimeInterrogationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_ms_AnyTimeInterrogationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AnyTimeInterrogationRes_sequence[] = { + { &hf_gsm_map_ms_subscriberInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SubscriberInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AnyTimeInterrogationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_ms_AnyTimeInterrogationRes); + + return offset; +} + + +static const value_string gsm_map_ms_RequestedCAMEL_SubscriptionInfo_vals[] = { + { 0, "o-CSI" }, + { 1, "t-CSI" }, + { 2, "vt-CSI" }, + { 3, "tif-CSI" }, + { 4, "gprs-CSI" }, + { 5, "mo-sms-CSI" }, + { 6, "ss-CSI" }, + { 7, "m-CSI" }, + { 8, "d-csi" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_RequestedCAMEL_SubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo_vals[] = { + { 0, "mt-sms-CSI" }, + { 1, "mg-csi" }, + { 2, "o-IM-CSI" }, + { 3, "d-IM-CSI" }, + { 4, "vt-IM-CSI" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_RequestedSubscriptionInfo_sequence[] = { + { &hf_gsm_map_ms_requestedSS_Info, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_ForBS_Code }, + { &hf_gsm_map_ms_odb , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_requestedCAMEL_SubscriptionInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedCAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases_01, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_msisdn_BS_List_01, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_csg_SubscriptionDataRequested, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_cw_Info , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_clip_Info, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_clir_Info, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_hold_Info, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_ect_Info , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_RequestedSubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RequestedSubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_RequestedSubscriptionInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AnyTimeSubscriptionInterrogationArg_sequence[] = { + { &hf_gsm_map_ms_subscriberIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity }, + { &hf_gsm_map_ms_requestedSubscriptionInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedSubscriptionInfo }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_longFTN_Supported, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AnyTimeSubscriptionInterrogationArg_sequence, hf_index, ett_gsm_map_ms_AnyTimeSubscriptionInterrogationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CallForwardingData_sequence[] = { + { &hf_gsm_map_ms_forwardingFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_ForwFeatureList }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CallForwardingData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CallForwardingData_sequence, hf_index, ett_gsm_map_ms_CallForwardingData); + + return offset; +} + + + +static int +dissect_gsm_map_ms_WrongPasswordAttemptsCounter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CallBarringData_sequence[] = { + { &hf_gsm_map_ms_callBarringFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CallBarFeatureList }, + { &hf_gsm_map_ms_password , BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_Password }, + { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_WrongPasswordAttemptsCounter }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CallBarringData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CallBarringData_sequence, hf_index, ett_gsm_map_ms_CallBarringData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ODB_Info_sequence[] = { + { &hf_gsm_map_ms_odb_Data , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ODB_Data }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ODB_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ODB_Info_sequence, hf_index, ett_gsm_map_ms_ODB_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CAMEL_SubscriptionInfo_sequence[] = { + { &hf_gsm_map_ms_o_CSI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI }, + { &hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList }, + { &hf_gsm_map_ms_d_CSI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI }, + { &hf_gsm_map_ms_t_CSI , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI }, + { &hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList }, + { &hf_gsm_map_ms_vt_CSI , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI }, + { &hf_gsm_map_ms_vt_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList }, + { &hf_gsm_map_ms_tif_CSI , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_tif_CSI_NotificationToCSE, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_gprs_CSI , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_CSI }, + { &hf_gsm_map_ms_mo_sms_CSI, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI }, + { &hf_gsm_map_ms_ss_CSI , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SS_CSI }, + { &hf_gsm_map_ms_m_CSI , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_M_CSI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_specificCSIDeletedList, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SpecificCSI_Withdraw }, + { &hf_gsm_map_ms_mt_sms_CSI, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI }, + { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList }, + { &hf_gsm_map_ms_mg_csi , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MG_CSI }, + { &hf_gsm_map_ms_o_IM_CSI , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI }, + { &hf_gsm_map_ms_o_IM_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList }, + { &hf_gsm_map_ms_d_IM_CSI , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI }, + { &hf_gsm_map_ms_vt_IM_CSI, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI }, + { &hf_gsm_map_ms_vt_IM_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CAMEL_SubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_CAMEL_SubscriptionInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MSISDN_BS_sequence[] = { + { &hf_gsm_map_ms_msisdn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_basicServiceList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceList }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_MSISDN_BS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MSISDN_BS_sequence, hf_index, ett_gsm_map_ms_MSISDN_BS); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_MSISDN_BS_List_sequence_of[1] = { + { &hf_gsm_map_ms_MSISDN_BS_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MSISDN_BS }, +}; + +static int +dissect_gsm_map_ms_MSISDN_BS_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_MSISDN_BS_List_sequence_of, hf_index, ett_gsm_map_ms_MSISDN_BS_List); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_CwFeature_sequence[] = { + { &hf_gsm_map_ms_basicService, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_CwFeature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_CwFeature_sequence, hf_index, ett_gsm_map_ms_Ext_CwFeature); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_CwFeatureList_sequence_of[1] = { + { &hf_gsm_map_ms_Ext_CwFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CwFeature }, +}; + +static int +dissect_gsm_map_ms_Ext_CwFeatureList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_CwFeatureList_sequence_of, hf_index, ett_gsm_map_ms_Ext_CwFeatureList); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CallWaitingData_sequence[] = { + { &hf_gsm_map_ms_cwFeatureList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CwFeatureList }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CallWaitingData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CallWaitingData_sequence, hf_index, ett_gsm_map_ms_CallWaitingData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CallHoldData_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CallHoldData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CallHoldData_sequence, hf_index, ett_gsm_map_ms_CallHoldData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ClipData_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_overrideCategory, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_OverrideCategory }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ClipData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ClipData_sequence, hf_index, ett_gsm_map_ms_ClipData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ClirData_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_cliRestrictionOption, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CliRestrictionOption }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ClirData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ClirData_sequence, hf_index, ett_gsm_map_ms_ClirData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_EctData_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_EctData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_EctData_sequence, hf_index, ett_gsm_map_ms_EctData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AnyTimeSubscriptionInterrogationRes_sequence[] = { + { &hf_gsm_map_ms_callForwardingData, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallForwardingData }, + { &hf_gsm_map_ms_callBarringData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallBarringData }, + { &hf_gsm_map_ms_odb_Info , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Info }, + { &hf_gsm_map_ms_camel_SubscriptionInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_offeredCamel4CSIsInVLR, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ms_offeredCamel4CSIsInSGSN, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ms_msisdn_BS_List, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MSISDN_BS_List }, + { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList }, + { &hf_gsm_map_ms_cw_Data , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallWaitingData }, + { &hf_gsm_map_ms_ch_Data , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallHoldData }, + { &hf_gsm_map_ms_clip_Data, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ClipData }, + { &hf_gsm_map_ms_clir_Data, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ClirData }, + { &hf_gsm_map_ms_ect_data , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EctData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AnyTimeSubscriptionInterrogationRes_sequence, hf_index, ett_gsm_map_ms_AnyTimeSubscriptionInterrogationRes); + + return offset; +} + + +static const value_string gsm_map_ms_ModificationInstruction_vals[] = { + { 0, "deactivate" }, + { 1, "activate" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ms_ModificationInstruction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CF_Info_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_basicService, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_forwardedToNumber_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_ms_forwardedToSubaddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { &hf_gsm_map_ms_noReplyConditionTime, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_NoRepCondTime }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CF_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CF_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CF_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CB_Info_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_basicService, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_password , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_Password }, + { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WrongPasswordAttemptsCounter }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CB_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CB_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CB_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CSI_sequence[] = { + { &hf_gsm_map_ms_requestedCamel_SubscriptionInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedCAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_modifyCSI_State, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CSI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CSI_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CSI); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_ODB_data_sequence[] = { + { &hf_gsm_map_ms_odb_data , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_ODB_data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_ODB_data_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_ODB_data); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data_sequence[] = { + { &hf_gsm_map_ms_modifyRegistrationStatus, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_ip_sm_gw_DiameterAddress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NetworkNodeDiameterAddress }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data); + + return offset; +} + + +static int * const gsm_map_ms_RequestedServingNode_bits[] = { + &hf_gsm_map_ms_RequestedServingNode_mmeAndSgsn, + NULL +}; + +static int +dissect_gsm_map_ms_RequestedServingNode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_RequestedServingNode_bits, 1, hf_index, ett_gsm_map_ms_RequestedServingNode, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CSG_sequence[] = { + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CSG(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CSG_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CSG); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CW_Info_sequence[] = { + { &hf_gsm_map_ms_basicService, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CW_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CW_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CW_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CLIP_Info_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_overrideCategory, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_OverrideCategory }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CLIP_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CLIP_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CLIP_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CLIR_Info_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_cliRestrictionOption, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CliRestrictionOption }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CLIR_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CLIR_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CLIR_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CH_Info_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_CH_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_CH_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CH_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_ModificationRequestFor_ECT_Info_sequence[] = { + { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_ModificationRequestFor_ECT_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ModificationRequestFor_ECT_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_ECT_Info); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AnyTimeModificationArg_sequence[] = { + { &hf_gsm_map_ms_subscriberIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity }, + { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_modificationRequestFor_CF_Info, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CF_Info }, + { &hf_gsm_map_ms_modificationRequestFor_CB_Info, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CB_Info }, + { &hf_gsm_map_ms_modificationRequestFor_CSI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CSI }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_longFTN_Supported, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_modificationRequestFor_ODB_data, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_ODB_data }, + { &hf_gsm_map_ms_modificationRequestFor_IP_SM_GW_Data, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data }, + { &hf_gsm_map_ms_activationRequestForUE_reachability, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedServingNode }, + { &hf_gsm_map_ms_modificationRequestFor_CSG, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CSG }, + { &hf_gsm_map_ms_modificationRequestFor_CW_Data, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CW_Info }, + { &hf_gsm_map_ms_modificationRequestFor_CLIP_Data, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CLIP_Info }, + { &hf_gsm_map_ms_modificationRequestFor_CLIR_Data, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CLIR_Info }, + { &hf_gsm_map_ms_modificationRequestFor_HOLD_Data, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CH_Info }, + { &hf_gsm_map_ms_modificationRequestFor_ECT_Data, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_ECT_Info }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AnyTimeModificationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AnyTimeModificationArg_sequence, hf_index, ett_gsm_map_ms_AnyTimeModificationArg); + + return offset; +} + + +static int * const gsm_map_ms_ServingNode_bits[] = { + &hf_gsm_map_ms_ServingNode_mme, + &hf_gsm_map_ms_ServingNode_sgsn, + NULL +}; + +static int +dissect_gsm_map_ms_ServingNode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_ServingNode_bits, 2, hf_index, ett_gsm_map_ms_ServingNode, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_ForwardingInfoFor_CSE_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_forwardingFeatureList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwFeatureList }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_ForwardingInfoFor_CSE(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_ForwardingInfoFor_CSE_sequence, hf_index, ett_gsm_map_ms_Ext_ForwardingInfoFor_CSE); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_Ext_CallBarringInfoFor_CSE_sequence[] = { + { &hf_gsm_map_ms_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_map_ms_callBarringFeatureList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarFeatureList }, + { &hf_gsm_map_ms_password , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_Password }, + { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WrongPasswordAttemptsCounter }, + { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_CallBarringInfoFor_CSE(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_Ext_CallBarringInfoFor_CSE_sequence, hf_index, ett_gsm_map_ms_Ext_CallBarringInfoFor_CSE); + + return offset; +} + + +static const value_string gsm_map_ms_Ext_SS_InfoFor_CSE_vals[] = { + { 0, "forwardingInfoFor-CSE" }, + { 1, "callBarringInfoFor-CSE" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ms_Ext_SS_InfoFor_CSE_choice[] = { + { 0, &hf_gsm_map_ms_forwardingInfoFor_CSE, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwardingInfoFor_CSE }, + { 1, &hf_gsm_map_ms_callBarringInfoFor_CSE, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarringInfoFor_CSE }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_Ext_SS_InfoFor_CSE(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ms_Ext_SS_InfoFor_CSE_choice, hf_index, ett_gsm_map_ms_Ext_SS_InfoFor_CSE, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_AnyTimeModificationRes_sequence[] = { + { &hf_gsm_map_ms_ss_InfoFor_CSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_Ext_SS_InfoFor_CSE }, + { &hf_gsm_map_ms_camel_SubscriptionInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_odb_Info , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Info }, + { &hf_gsm_map_ms_cw_Data , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallWaitingData }, + { &hf_gsm_map_ms_ch_Data , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallHoldData }, + { &hf_gsm_map_ms_clip_Data, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ClipData }, + { &hf_gsm_map_ms_clir_Data, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ClirData }, + { &hf_gsm_map_ms_ect_data , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EctData }, + { &hf_gsm_map_ms_serviceCentreAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_AnyTimeModificationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_AnyTimeModificationRes_sequence, hf_index, ett_gsm_map_ms_AnyTimeModificationRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_NoteSubscriberDataModifiedArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_msisdn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_forwardingInfoFor_CSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwardingInfoFor_CSE }, + { &hf_gsm_map_ms_callBarringInfoFor_CSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarringInfoFor_CSE }, + { &hf_gsm_map_ms_odb_Info , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Info }, + { &hf_gsm_map_ms_camel_SubscriptionInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CAMEL_SubscriptionInfo }, + { &hf_gsm_map_ms_allInformationSent, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_ue_reachable, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServingNode }, + { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList }, + { &hf_gsm_map_ms_cw_Data , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallWaitingData }, + { &hf_gsm_map_ms_ch_Data , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallHoldData }, + { &hf_gsm_map_ms_clip_Data, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ClipData }, + { &hf_gsm_map_ms_clir_Data, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ClirData }, + { &hf_gsm_map_ms_ect_data , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EctData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_NoteSubscriberDataModifiedArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_NoteSubscriberDataModifiedArg_sequence, hf_index, ett_gsm_map_ms_NoteSubscriberDataModifiedArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_NoteSubscriberDataModifiedRes_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_NoteSubscriberDataModifiedRes_sequence, hf_index, ett_gsm_map_ms_NoteSubscriberDataModifiedRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_NoteMM_EventArg_sequence[] = { + { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey }, + { &hf_gsm_map_ms_eventMet , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MM_Code }, + { &hf_gsm_map_ms_imsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_msisdn , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_locationInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation }, + { &hf_gsm_map_ms_supportedCAMELPhases, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ms_locationInformationGPRS, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationGPRS }, + { &hf_gsm_map_ms_offeredCamel4Functionalities, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4Functionalities }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_NoteMM_EventArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_NoteMM_EventArg_sequence, hf_index, ett_gsm_map_ms_NoteMM_EventArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_NoteMM_EventRes_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_NoteMM_EventRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_NoteMM_EventRes_sequence, hf_index, ett_gsm_map_ms_NoteMM_EventRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UpdateVcsgLocationArg_sequence[] = { + { &hf_gsm_map_ms_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ms_msisdn , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_vlr_Number, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UpdateVcsgLocationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UpdateVcsgLocationArg_sequence, hf_index, ett_gsm_map_ms_UpdateVcsgLocationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_UpdateVcsgLocationRes_sequence[] = { + { &hf_gsm_map_ms_temporaryEmptySubscriptiondataIndicator, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_UpdateVcsgLocationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_UpdateVcsgLocationRes_sequence, hf_index, ett_gsm_map_ms_UpdateVcsgLocationRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CancelVcsgLocationArg_sequence[] = { + { &hf_gsm_map_ms_identity , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Identity }, + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CancelVcsgLocationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CancelVcsgLocationArg_sequence, hf_index, ett_gsm_map_ms_CancelVcsgLocationArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ms_CancelVcsgLocationRes_sequence[] = { + { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ms_CancelVcsgLocationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ms_CancelVcsgLocationRes_sequence, hf_index, ett_gsm_map_ms_CancelVcsgLocationRes); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_gsm_map_ms_SendAuthenticationInfoArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gsm_map_ms_SendAuthenticationInfoArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_ms_gsm_map_ms_SendAuthenticationInfoArg_PDU); + return offset; +} +static int dissect_gsm_map_ms_SendAuthenticationInfoRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gsm_map_ms_SendAuthenticationInfoRes(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_ms_gsm_map_ms_SendAuthenticationInfoRes_PDU); + return offset; +} + + +/* --- Module MAP-CH-DataTypes --- --- --- */ + + + +static int +dissect_gsm_map_ch_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_CUG_CheckInfo_sequence[] = { + { &hf_gsm_map_ch_cug_Interlock, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Interlock }, + { &hf_gsm_map_ch_cug_OutgoingAccess, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ch_CUG_CheckInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_CUG_CheckInfo_sequence, hf_index, ett_gsm_map_ch_CUG_CheckInfo); + + return offset; +} + + + +static int +dissect_gsm_map_ch_NumberOfForwarding(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ch_InterrogationType_vals[] = { + { 0, "basicCall" }, + { 1, "forwarding" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_InterrogationType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ch_OR_Phase(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_ch_CallReferenceNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ch_ForwardingReason_vals[] = { + { 0, "notReachable" }, + { 1, "busy" }, + { 2, "noReply" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_ForwardingReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_CamelInfo_sequence[] = { + { &hf_gsm_map_ch_supportedCamelPhases, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ch_suppress_T_CSI, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_offeredCamel4CSIs, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_CamelInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_CamelInfo_sequence, hf_index, ett_gsm_map_ch_CamelInfo); + + return offset; +} + + + +int +dissect_gsm_map_ch_SuppressionOfAnnouncement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_ch_SupportedCCBS_Phase(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ch_CallDiversionTreatmentIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static int * const gsm_map_ch_SuppressMTSS_bits[] = { + &hf_gsm_map_ch_SuppressMTSS_suppressCUG, + &hf_gsm_map_ch_SuppressMTSS_suppressCCBS, + NULL +}; + +static int +dissect_gsm_map_ch_SuppressMTSS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_SuppressMTSS_bits, 2, hf_index, ett_gsm_map_ch_SuppressMTSS, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_SendRoutingInfoArg_sequence[] = { + { &hf_gsm_map_ch_msisdn , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_cug_CheckInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo }, + { &hf_gsm_map_ch_numberOfForwarding, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NumberOfForwarding }, + { &hf_gsm_map_ch_interrogationType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_InterrogationType }, + { &hf_gsm_map_ch_or_Interrogation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_or_Capability, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_OR_Phase }, + { &hf_gsm_map_ch_gmsc_OrGsmSCF_Address, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_callReferenceNumber, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber }, + { &hf_gsm_map_ch_forwardingReason, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_ForwardingReason }, + { &hf_gsm_map_ch_basicServiceGroup, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ch_networkSignalInfo, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_map_ch_camelInfo, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CamelInfo }, + { &hf_gsm_map_ch_suppressionOfAnnouncement, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SuppressionOfAnnouncement }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_alertingPattern, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern }, + { &hf_gsm_map_ch_ccbs_Call, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_supportedCCBS_Phase, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SupportedCCBS_Phase }, + { &hf_gsm_map_ch_additionalSignalInfo, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_ExternalSignalInfo }, + { &hf_gsm_map_ch_istSupportIndicator, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_SupportIndicator }, + { &hf_gsm_map_ch_pre_pagingSupported, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_callDiversionTreatmentIndicator, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallDiversionTreatmentIndicator }, + { &hf_gsm_map_ch_longFTN_Supported, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_suppress_VT_CSI, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_suppressIncomingCallBarring, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_gsmSCF_InitiatedCall, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_basicServiceGroup2, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ch_networkSignalInfo2, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_map_ch_suppressMTSS, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SuppressMTSS }, + { &hf_gsm_map_ch_mtRoamingRetrySupported, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_callPriority, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_SendRoutingInfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_ch_SendRoutingInfoArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ForwardingData_sequence[] = { + { &hf_gsm_map_ch_forwardedToNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_forwardedToSubaddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { &hf_gsm_map_ch_forwardingOptions, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingOptions }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_longForwardedToNumber, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_FTN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ForwardingData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ForwardingData_sequence, hf_index, ett_gsm_map_ch_ForwardingData); + + return offset; +} + + +static const value_string gsm_map_ch_RoutingInfo_vals[] = { + { 0, "roamingNumber" }, + { 1, "forwardingData" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ch_RoutingInfo_choice[] = { + { 0, &hf_gsm_map_ch_roamingNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { 1, &hf_gsm_map_ch_forwardingData, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_ForwardingData }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_RoutingInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ch_RoutingInfo_choice, hf_index, ett_gsm_map_ch_RoutingInfo, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_GmscCamelSubscriptionInfo_sequence[] = { + { &hf_gsm_map_ch_t_CSI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI }, + { &hf_gsm_map_ch_o_CSI , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_o_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList }, + { &hf_gsm_map_ch_t_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList }, + { &hf_gsm_map_ch_d_csi , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_GmscCamelSubscriptionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_GmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_ch_GmscCamelSubscriptionInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_CamelRoutingInfo_sequence[] = { + { &hf_gsm_map_ch_forwardingData, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_ForwardingData }, + { &hf_gsm_map_ch_gmscCamelSubscriptionInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_GmscCamelSubscriptionInfo }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_CamelRoutingInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_CamelRoutingInfo_sequence, hf_index, ett_gsm_map_ch_CamelRoutingInfo); + + return offset; +} + + +static const value_string gsm_map_ch_ExtendedRoutingInfo_vals[] = { + { 0, "routingInfo" }, + { 1, "camelRoutingInfo" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ch_ExtendedRoutingInfo_choice[] = { + { 0, &hf_gsm_map_ch_routingInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_RoutingInfo }, + { 1, &hf_gsm_map_ch_camelRoutingInfo, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CamelRoutingInfo }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ExtendedRoutingInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ch_ExtendedRoutingInfo_choice, hf_index, ett_gsm_map_ch_ExtendedRoutingInfo, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_CCBS_Indicators_sequence[] = { + { &hf_gsm_map_ch_ccbs_Possible, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_keepCCBS_CallIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_CCBS_Indicators(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_CCBS_Indicators_sequence, hf_index, ett_gsm_map_ch_CCBS_Indicators); + + return offset; +} + + +static int * const gsm_map_ch_AllowedServices_bits[] = { + &hf_gsm_map_ch_AllowedServices_firstServiceAllowed, + &hf_gsm_map_ch_AllowedServices_secondServiceAllowed, + NULL +}; + +static int +dissect_gsm_map_ch_AllowedServices(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_AllowedServices_bits, 2, hf_index, ett_gsm_map_ch_AllowedServices, + NULL); + + return offset; +} + + +static const value_string gsm_map_ch_UnavailabilityCause_vals[] = { + { 1, "bearerServiceNotProvisioned" }, + { 2, "teleserviceNotProvisioned" }, + { 3, "absentSubscriber" }, + { 4, "busySubscriber" }, + { 5, "callBarred" }, + { 6, "cug-Reject" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_UnavailabilityCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_SendRoutingInfoRes_U_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_extendedRoutingInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ch_ExtendedRoutingInfo }, + { &hf_gsm_map_ch_cug_CheckInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo }, + { &hf_gsm_map_ch_cugSubscriptionFlag, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_subscriberInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberInfo }, + { &hf_gsm_map_ch_ss_List , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List }, + { &hf_gsm_map_ch_basicService, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ch_forwardingInterrogationRequired, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_vmsc_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_naea_PreferredCI, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NAEA_PreferredCI }, + { &hf_gsm_map_ch_ccbs_Indicators, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CCBS_Indicators }, + { &hf_gsm_map_ch_msisdn , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_numberPortabilityStatus, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NumberPortabilityStatus }, + { &hf_gsm_map_ch_istAlertTimer, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_AlertTimerValue }, + { &hf_gsm_map_ch_supportedCamelPhasesInVMSC, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ch_offeredCamel4CSIsInVMSC, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ch_routingInfo2, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ch_RoutingInfo }, + { &hf_gsm_map_ch_ss_List2 , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List }, + { &hf_gsm_map_ch_basicService2, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ch_allowedServices, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_AllowedServices }, + { &hf_gsm_map_ch_unavailabilityCause, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UnavailabilityCause }, + { &hf_gsm_map_ch_releaseResourcesSupported, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_gsm_BearerCapability, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_SendRoutingInfoRes_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_SendRoutingInfoRes_U_sequence, hf_index, ett_gsm_map_ch_SendRoutingInfoRes_U); + + return offset; +} + + + +static int +dissect_gsm_map_ch_SendRoutingInfoRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ch_SendRoutingInfoRes_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ProvideRoamingNumberArg_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_msc_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_msisdn , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_lmsi , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_ch_gsm_BearerCapability, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_map_ch_networkSignalInfo, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_map_ch_suppressionOfAnnouncement, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SuppressionOfAnnouncement }, + { &hf_gsm_map_ch_gmsc_Address, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_callReferenceNumber, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber }, + { &hf_gsm_map_ch_or_Interrogation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_alertingPattern, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern }, + { &hf_gsm_map_ch_ccbs_Call, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_supportedCamelPhasesInInterrogatingNode, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases }, + { &hf_gsm_map_ch_additionalSignalInfo, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_ExternalSignalInfo }, + { &hf_gsm_map_ch_orNotSupportedInGMSC, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_pre_pagingSupported, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_longFTN_Supported, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_suppress_VT_CSI, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs }, + { &hf_gsm_map_ch_mtRoamingRetrySupported, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_pagingArea, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PagingArea }, + { &hf_gsm_map_ch_callPriority, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_ch_mtrf_Indicator, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_oldMSC_Number, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_lastUsedLtePLMN_Id, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ProvideRoamingNumberArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ch_ProvideRoamingNumberArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ProvideRoamingNumberRes_sequence[] = { + { &hf_gsm_map_ch_roamingNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_releaseResourcesSupported, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_vmsc_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ProvideRoamingNumberRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ch_ProvideRoamingNumberRes); + + return offset; +} + + + +static int +dissect_gsm_map_ch_UUIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ch_UUI(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_UU_Data_sequence[] = { + { &hf_gsm_map_ch_uuIndicator, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UUIndicator }, + { &hf_gsm_map_ch_uui , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UUI }, + { &hf_gsm_map_ch_uusCFInteraction, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_ch_UU_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_UU_Data_sequence, hf_index, ett_gsm_map_ch_UU_Data); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ResumeCallHandlingArg_sequence[] = { + { &hf_gsm_map_ch_callReferenceNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber }, + { &hf_gsm_map_ch_basicServiceGroup, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ch_forwardingData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_ForwardingData }, + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_cug_CheckInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo }, + { &hf_gsm_map_ch_o_CSI , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_ch_ccbs_Possible, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_msisdn , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_uu_Data , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UU_Data }, + { &hf_gsm_map_ch_allInformationSent, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_d_csi , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI }, + { &hf_gsm_map_ch_o_BcsmCamelTDPCriteriaList, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList }, + { &hf_gsm_map_ch_basicServiceGroup2, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode }, + { &hf_gsm_map_ch_mtRoamingRetry, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ResumeCallHandlingArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ch_ResumeCallHandlingArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ResumeCallHandlingRes_sequence[] = { + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ResumeCallHandlingRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ch_ResumeCallHandlingRes); + + return offset; +} + + +static const value_string gsm_map_ch_ReportingState_vals[] = { + { 0, "stopMonitoring" }, + { 1, "startMonitoring" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_ReportingState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_SetReportingStateArg_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_lmsi , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_ch_ccbs_Monitoring, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_ReportingState }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_SetReportingStateArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_SetReportingStateArg_sequence, hf_index, ett_gsm_map_ch_SetReportingStateArg); + + return offset; +} + + +static const value_string gsm_map_ch_CCBS_SubscriberStatus_vals[] = { + { 0, "ccbsNotIdle" }, + { 1, "ccbsIdle" }, + { 2, "ccbsNotReachable" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_CCBS_SubscriberStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_SetReportingStateRes_sequence[] = { + { &hf_gsm_map_ch_ccbs_SubscriberStatus, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CCBS_SubscriberStatus }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_SetReportingStateRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_SetReportingStateRes_sequence, hf_index, ett_gsm_map_ch_SetReportingStateRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_EventReportData_sequence[] = { + { &hf_gsm_map_ch_ccbs_SubscriberStatus, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CCBS_SubscriberStatus }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_EventReportData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_EventReportData_sequence, hf_index, ett_gsm_map_ch_EventReportData); + + return offset; +} + + +static const value_string gsm_map_ch_MonitoringMode_vals[] = { + { 0, "a-side" }, + { 1, "b-side" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_MonitoringMode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_ch_CallOutcome_vals[] = { + { 0, "success" }, + { 1, "failure" }, + { 2, "busy" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_CallOutcome(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_CallReportData_sequence[] = { + { &hf_gsm_map_ch_monitoringMode, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_MonitoringMode }, + { &hf_gsm_map_ch_callOutcome, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallOutcome }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_CallReportData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_CallReportData_sequence, hf_index, ett_gsm_map_ch_CallReportData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_StatusReportArg_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_eventReportData, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_EventReportData }, + { &hf_gsm_map_ch_callReportdata, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReportData }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_StatusReportArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_StatusReportArg_sequence, hf_index, ett_gsm_map_ch_StatusReportArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_StatusReportRes_sequence[] = { + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_StatusReportRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_StatusReportRes_sequence, hf_index, ett_gsm_map_ch_StatusReportRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_RemoteUserFreeArg_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_callInfo , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_map_ch_ccbs_Feature, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature }, + { &hf_gsm_map_ch_translatedB_Number, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_replaceB_Number, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_alertingPattern, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_RemoteUserFreeArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_ch_RemoteUserFreeArg); + + return offset; +} + + +static const value_string gsm_map_ch_RUF_Outcome_vals[] = { + { 0, "accepted" }, + { 1, "rejected" }, + { 2, "noResponseFromFreeMS" }, + { 3, "noResponseFromBusyMS" }, + { 4, "udubFromFreeMS" }, + { 5, "udubFromBusyMS" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_RUF_Outcome(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_RemoteUserFreeRes_sequence[] = { + { &hf_gsm_map_ch_ruf_Outcome, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_RUF_Outcome }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_RemoteUserFreeRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_ch_RemoteUserFreeRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_IST_AlertArg_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_IST_AlertArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_IST_AlertArg_sequence, hf_index, ett_gsm_map_ch_IST_AlertArg); + + return offset; +} + + +static const value_string gsm_map_ch_CallTerminationIndicator_vals[] = { + { 0, "terminateCallActivityReferred" }, + { 1, "terminateAllCallActivities" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ch_CallTerminationIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_IST_AlertRes_sequence[] = { + { &hf_gsm_map_ch_istAlertTimer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_AlertTimerValue }, + { &hf_gsm_map_ch_istInformationWithdraw, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL }, + { &hf_gsm_map_ch_callTerminationIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallTerminationIndicator }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_IST_AlertRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_IST_AlertRes_sequence, hf_index, ett_gsm_map_ch_IST_AlertRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_IST_CommandArg_sequence[] = { + { &hf_gsm_map_ch_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_IST_CommandArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_IST_CommandArg_sequence, hf_index, ett_gsm_map_ch_IST_CommandArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_IST_CommandRes_sequence[] = { + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_IST_CommandRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_IST_CommandRes_sequence, hf_index, ett_gsm_map_ch_IST_CommandRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ReleaseResourcesArg_sequence[] = { + { &hf_gsm_map_ch_msrn , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ReleaseResourcesArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ReleaseResourcesArg_sequence, hf_index, ett_gsm_map_ch_ReleaseResourcesArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_ch_ReleaseResourcesRes_sequence[] = { + { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ch_ReleaseResourcesRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ch_ReleaseResourcesRes_sequence, hf_index, ett_gsm_map_ch_ReleaseResourcesRes); + + return offset; +} + + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + + +static const ber_sequence_t gsm_map_lcs_RoutingInfoForLCS_Arg_sequence[] = { + { &hf_gsm_map_lcs_mlcNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_targetMS, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity }, + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_RoutingInfoForLCS_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_lcs_RoutingInfoForLCS_Arg); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCSLocationInfo_sequence[] = { + { &hf_gsm_map_lcs_networkNode_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_lmsi , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_lcs_gprsNodeIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_additional_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_Additional_Number }, + { &hf_gsm_map_lcs_supportedLCS_CapabilitySets, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets }, + { &hf_gsm_map_lcs_additional_LCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets }, + { &hf_gsm_map_lcs_mme_Name, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_lcs_aaa_Server_Name, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_lcs_sgsn_Name, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { &hf_gsm_map_lcs_sgsn_Realm, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_LCSLocationInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCSLocationInfo_sequence, hf_index, ett_gsm_map_lcs_LCSLocationInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_RoutingInfoForLCS_Res_sequence[] = { + { &hf_gsm_map_lcs_targetMS, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity }, + { &hf_gsm_map_lcs_lcsLocationInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSLocationInfo }, + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_lcs_v_gmlc_Address, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_lcs_ppr_Address, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_lcs_additional_v_gmlc_Address, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_RoutingInfoForLCS_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_lcs_RoutingInfoForLCS_Res); + + return offset; +} + + +static const value_string gsm_map_lcs_LocationEstimateType_vals[] = { + { 0, "currentLocation" }, + { 1, "currentOrLastKnownLocation" }, + { 2, "initialLocation" }, + { 3, "activateDeferredLocation" }, + { 4, "cancelDeferredLocation" }, + { 5, "notificationVerificationOnly" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_LocationEstimateType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static int * const gsm_map_lcs_DeferredLocationEventType_bits[] = { + &hf_gsm_map_lcs_DeferredLocationEventType_msAvailable, + &hf_gsm_map_lcs_DeferredLocationEventType_enteringIntoArea, + &hf_gsm_map_lcs_DeferredLocationEventType_leavingFromArea, + &hf_gsm_map_lcs_DeferredLocationEventType_beingInsideArea, + &hf_gsm_map_lcs_DeferredLocationEventType_periodicLDR, + NULL +}; + +int +dissect_gsm_map_lcs_DeferredLocationEventType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_DeferredLocationEventType_bits, 5, hf_index, ett_gsm_map_lcs_DeferredLocationEventType, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LocationType_sequence[] = { + { &hf_gsm_map_lcs_locationEstimateType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationEstimateType }, + { &hf_gsm_map_lcs_deferredLocationEventType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_DeferredLocationEventType }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_LocationType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LocationType_sequence, hf_index, ett_gsm_map_lcs_LocationType); + + return offset; +} + + +const value_string gsm_map_lcs_LCSClientType_vals[] = { + { 0, "emergencyServices" }, + { 1, "valueAddedServices" }, + { 2, "plmnOperatorServices" }, + { 3, "lawfulInterceptServices" }, + { 0, NULL } +}; + + +int +dissect_gsm_map_lcs_LCSClientType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_NameString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_ss_USSD_String(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const value_string gsm_map_lcs_LCS_FormatIndicator_vals[] = { + { 0, "logicalName" }, + { 1, "e-mailAddress" }, + { 2, "msisdn" }, + { 3, "url" }, + { 4, "sipUrl" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_LCS_FormatIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCSClientName_sequence[] = { + { &hf_gsm_map_lcs_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme }, + { &hf_gsm_map_lcs_nameString, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NameString }, + { &hf_gsm_map_lcs_lcs_FormatIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_FormatIndicator }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_LCSClientName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCSClientName_sequence, hf_index, ett_gsm_map_lcs_LCSClientName); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_RequestorIDString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_ss_USSD_String(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCSRequestorID_sequence[] = { + { &hf_gsm_map_lcs_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme }, + { &hf_gsm_map_lcs_requestorIDString, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_RequestorIDString }, + { &hf_gsm_map_lcs_lcs_FormatIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_FormatIndicator }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_LCSRequestorID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCSRequestorID_sequence, hf_index, ett_gsm_map_lcs_LCSRequestorID); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCS_ClientID_sequence[] = { + { &hf_gsm_map_lcs_lcsClientType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType }, + { &hf_gsm_map_lcs_lcsClientExternalID, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID }, + { &hf_gsm_map_lcs_lcsClientDialedByMS, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_lcs_lcsClientInternalID, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientInternalID }, + { &hf_gsm_map_lcs_lcsClientName, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientName }, + { &hf_gsm_map_lcs_lcsAPN , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN }, + { &hf_gsm_map_lcs_lcsRequestorID, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSRequestorID }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_LCS_ClientID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCS_ClientID_sequence, hf_index, ett_gsm_map_lcs_LCS_ClientID); + + return offset; +} + + + +int +dissect_gsm_map_lcs_LCS_Priority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_Horizontal_Accuracy(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_Vertical_Accuracy(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_lcs_ResponseTimeCategory_vals[] = { + { 0, "lowdelay" }, + { 1, "delaytolerant" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_ResponseTimeCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_ResponseTime_sequence[] = { + { &hf_gsm_map_lcs_responseTimeCategory, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ResponseTimeCategory }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_ResponseTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_ResponseTime_sequence, hf_index, ett_gsm_map_lcs_ResponseTime); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCS_QoS_sequence[] = { + { &hf_gsm_map_lcs_horizontal_accuracy, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Horizontal_Accuracy }, + { &hf_gsm_map_lcs_verticalCoordinateRequest, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_vertical_accuracy, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Vertical_Accuracy }, + { &hf_gsm_map_lcs_responseTime, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ResponseTime }, + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_lcs_velocityRequest, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_LCS_QoS(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCS_QoS_sequence, hf_index, ett_gsm_map_lcs_LCS_QoS); + + return offset; +} + + +static int * const gsm_map_lcs_SupportedGADShapes_bits[] = { + &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPoint, + &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, + &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse, + &hf_gsm_map_lcs_SupportedGADShapes_polygon, + &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitude, + &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid, + &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidArc, + NULL +}; + +int +dissect_gsm_map_lcs_SupportedGADShapes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_SupportedGADShapes_bits, 7, hf_index, ett_gsm_map_lcs_SupportedGADShapes, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_lcs_LCS_ReferenceNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_LCSCodewordString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_ss_USSD_String(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCSCodeword_sequence[] = { + { &hf_gsm_map_lcs_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme }, + { &hf_gsm_map_lcs_lcsCodewordString, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSCodewordString }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_LCSCodeword(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCSCodeword_sequence, hf_index, ett_gsm_map_lcs_LCSCodeword); + + return offset; +} + + +static const value_string gsm_map_lcs_PrivacyCheckRelatedAction_vals[] = { + { 0, "allowedWithoutNotification" }, + { 1, "allowedWithNotification" }, + { 2, "allowedIfNoResponse" }, + { 3, "restrictedIfNoResponse" }, + { 4, "notAllowed" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_PrivacyCheckRelatedAction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_LCS_PrivacyCheck_sequence[] = { + { &hf_gsm_map_lcs_callSessionUnrelated, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PrivacyCheckRelatedAction }, + { &hf_gsm_map_lcs_callSessionRelated, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PrivacyCheckRelatedAction }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_LCS_PrivacyCheck(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_LCS_PrivacyCheck_sequence, hf_index, ett_gsm_map_lcs_LCS_PrivacyCheck); + + return offset; +} + + +static const value_string gsm_map_lcs_AreaType_vals[] = { + { 0, "countryCode" }, + { 1, "plmnId" }, + { 2, "locationAreaId" }, + { 3, "routingAreaId" }, + { 4, "cellGlobalId" }, + { 5, "utranCellId" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_AreaType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_AreaIdentification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_Area_sequence[] = { + { &hf_gsm_map_lcs_areaType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaType }, + { &hf_gsm_map_lcs_areaIdentification, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaIdentification }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_Area(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_Area_sequence, hf_index, ett_gsm_map_lcs_Area); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_AreaList_sequence_of[1] = { + { &hf_gsm_map_lcs_AreaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_Area }, +}; + +static int +dissect_gsm_map_lcs_AreaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_AreaList_sequence_of, hf_index, ett_gsm_map_lcs_AreaList); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_AreaDefinition_sequence[] = { + { &hf_gsm_map_lcs_areaList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_AreaDefinition(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_AreaDefinition_sequence, hf_index, ett_gsm_map_lcs_AreaDefinition); + + return offset; +} + + +static const value_string gsm_map_lcs_OccurrenceInfo_vals[] = { + { 0, "oneTimeEvent" }, + { 1, "multipleTimeEvent" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_OccurrenceInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_IntervalTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_AreaEventInfo_sequence[] = { + { &hf_gsm_map_lcs_areaDefinition, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaDefinition }, + { &hf_gsm_map_lcs_occurrenceInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_OccurrenceInfo }, + { &hf_gsm_map_lcs_intervalTime, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_IntervalTime }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_map_lcs_AreaEventInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_AreaEventInfo_sequence, hf_index, ett_gsm_map_lcs_AreaEventInfo); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_ReportingAmount(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_ReportingInterval(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_PeriodicLDRInfo_sequence[] = { + { &hf_gsm_map_lcs_reportingAmount, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ReportingAmount }, + { &hf_gsm_map_lcs_reportingInterval, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ReportingInterval }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_PeriodicLDRInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_PeriodicLDRInfo_sequence, hf_index, ett_gsm_map_lcs_PeriodicLDRInfo); + + return offset; +} + + +static const value_string gsm_map_lcs_RAN_Technology_vals[] = { + { 0, "gsm" }, + { 1, "umts" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_RAN_Technology(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_ReportingPLMN_sequence[] = { + { &hf_gsm_map_lcs_plmn_Id , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id }, + { &hf_gsm_map_lcs_ran_Technology, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_RAN_Technology }, + { &hf_gsm_map_lcs_ran_PeriodicLocationSupport, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_ReportingPLMN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_ReportingPLMN_sequence, hf_index, ett_gsm_map_lcs_ReportingPLMN); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_PLMNList_sequence_of[1] = { + { &hf_gsm_map_lcs_PLMNList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ReportingPLMN }, +}; + +static int +dissect_gsm_map_lcs_PLMNList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_PLMNList_sequence_of, hf_index, ett_gsm_map_lcs_PLMNList); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_ReportingPLMNList_sequence[] = { + { &hf_gsm_map_lcs_plmn_ListPrioritized, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_plmn_List, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PLMNList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_ReportingPLMNList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_ReportingPLMNList_sequence, hf_index, ett_gsm_map_lcs_ReportingPLMNList); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_ProvideSubscriberLocation_Arg_sequence[] = { + { &hf_gsm_map_lcs_locationType, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LocationType }, + { &hf_gsm_map_lcs_mlc_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_lcs_ClientID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ClientID }, + { &hf_gsm_map_lcs_privacyOverride, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_imsi , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_lcs_msisdn , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_lmsi , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, + { &hf_gsm_map_lcs_imei , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_lcs_lcs_Priority, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority }, + { &hf_gsm_map_lcs_lcs_QoS , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS }, + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_lcs_supportedGADShapes, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SupportedGADShapes }, + { &hf_gsm_map_lcs_lcs_ReferenceNumber, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_map_lcs_lcsServiceTypeID, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID }, + { &hf_gsm_map_lcs_lcsCodeword, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSCodeword }, + { &hf_gsm_map_lcs_lcs_PrivacyCheck, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_PrivacyCheck }, + { &hf_gsm_map_lcs_areaEventInfo, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaEventInfo }, + { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_periodicLDRInfo, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo }, + { &hf_gsm_map_lcs_reportingPLMNList, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_lcs_ProvideSubscriberLocation_Arg); + + return offset; +} + + + +int +dissect_gsm_map_lcs_Ext_GeographicalInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeographicalInformation); + dissect_geographical_description(parameter_tvb, actx->pinfo, subtree); + + + + return offset; +} + + + +int +dissect_gsm_map_lcs_Add_GeographicalInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_PositioningDataInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_UtranPositioningDataInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_lcs_AccuracyFulfilmentIndicator_vals[] = { + { 0, "requestedAccuracyFulfilled" }, + { 1, "requestedAccuracyNotFulfilled" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_AccuracyFulfilmentIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_map_lcs_VelocityEstimate(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_GeranGANSSpositioningData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_UtranGANSSpositioningData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_lcs_ServingNodeAddress_vals[] = { + { 0, "msc-Number" }, + { 1, "sgsn-Number" }, + { 2, "mme-Number" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_lcs_ServingNodeAddress_choice[] = { + { 0, &hf_gsm_map_lcs_msc_Number, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 1, &hf_gsm_map_lcs_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 2, &hf_gsm_map_lcs_mme_Number, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_ServingNodeAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_lcs_ServingNodeAddress_choice, hf_index, ett_gsm_map_lcs_ServingNodeAddress, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_UtranAdditionalPositioningData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_UtranBaroPressureMeas(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_UtranCivicAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_ProvideSubscriberLocation_Res_sequence[] = { + { &hf_gsm_map_lcs_locationEstimate, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation }, + { &hf_gsm_map_lcs_ageOfLocationEstimate, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_lcs_add_LocationEstimate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation }, + { &hf_gsm_map_lcs_deferredmt_lrResponseIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_geranPositioningData, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PositioningDataInformation }, + { &hf_gsm_map_lcs_utranPositioningData, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranPositioningDataInfo }, + { &hf_gsm_map_lcs_cellIdOrSai, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI }, + { &hf_gsm_map_lcs_sai_Present, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_accuracyFulfilmentIndicator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AccuracyFulfilmentIndicator }, + { &hf_gsm_map_lcs_velocityEstimate, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate }, + { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_geranGANSSpositioningData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_GeranGANSSpositioningData }, + { &hf_gsm_map_lcs_utranGANSSpositioningData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranGANSSpositioningData }, + { &hf_gsm_map_lcs_targetServingNodeForHandover, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_lcs_ServingNodeAddress }, + { &hf_gsm_map_lcs_utranAdditionalPositioningData, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranAdditionalPositioningData }, + { &hf_gsm_map_lcs_utranBaroPressureMeas, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranBaroPressureMeas }, + { &hf_gsm_map_lcs_utranCivicAddress, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranCivicAddress }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_ProvideSubscriberLocation_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_lcs_ProvideSubscriberLocation_Res); + + return offset; +} + + +static const value_string gsm_map_lcs_LCS_Event_vals[] = { + { 0, "emergencyCallOrigination" }, + { 1, "emergencyCallRelease" }, + { 2, "mo-lr" }, + { 3, "deferredmt-lrResponse" }, + { 4, "deferredmo-lrTTTPInitiation" }, + { 5, "emergencyCallHandover" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_LCS_Event(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_lcs_TerminationCause_vals[] = { + { 0, "normal" }, + { 1, "errorundefined" }, + { 2, "internalTimeout" }, + { 3, "congestion" }, + { 4, "mt-lrRestart" }, + { 5, "privacyViolation" }, + { 6, "shapeOfLocationEstimateNotSupported" }, + { 7, "subscriberTermination" }, + { 8, "uETermination" }, + { 9, "networkTermination" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_lcs_TerminationCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_Deferredmt_lrData_sequence[] = { + { &hf_gsm_map_lcs_deferredLocationEventType, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_DeferredLocationEventType }, + { &hf_gsm_map_lcs_terminationCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_TerminationCause }, + { &hf_gsm_map_lcs_lcsLocationInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSLocationInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_Deferredmt_lrData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_Deferredmt_lrData_sequence, hf_index, ett_gsm_map_lcs_Deferredmt_lrData); + + return offset; +} + + + +static int +dissect_gsm_map_lcs_SequenceNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_SubscriberLocationReport_Arg_sequence[] = { + { &hf_gsm_map_lcs_lcs_Event, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LCS_Event }, + { &hf_gsm_map_lcs_lcs_ClientID, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LCS_ClientID }, + { &hf_gsm_map_lcs_lcsLocationInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LCSLocationInfo }, + { &hf_gsm_map_lcs_msisdn , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_imsi , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_lcs_imei , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_lcs_na_ESRD , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_na_ESRK , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_locationEstimate, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation }, + { &hf_gsm_map_lcs_ageOfLocationEstimate, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_map_lcs_slr_ArgExtensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SLR_ArgExtensionContainer }, + { &hf_gsm_map_lcs_add_LocationEstimate, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation }, + { &hf_gsm_map_lcs_deferredmt_lrData, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Deferredmt_lrData }, + { &hf_gsm_map_lcs_lcs_ReferenceNumber, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_map_lcs_geranPositioningData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PositioningDataInformation }, + { &hf_gsm_map_lcs_utranPositioningData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranPositioningDataInfo }, + { &hf_gsm_map_lcs_cellIdOrSai, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI }, + { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_lcs_lcsServiceTypeID, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID }, + { &hf_gsm_map_lcs_sai_Present, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_pseudonymIndicator, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_accuracyFulfilmentIndicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AccuracyFulfilmentIndicator }, + { &hf_gsm_map_lcs_velocityEstimate, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate }, + { &hf_gsm_map_lcs_sequenceNumber, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SequenceNumber }, + { &hf_gsm_map_lcs_periodicLDRInfo, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo }, + { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_geranGANSSpositioningData, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_GeranGANSSpositioningData }, + { &hf_gsm_map_lcs_utranGANSSpositioningData, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranGANSSpositioningData }, + { &hf_gsm_map_lcs_targetServingNodeForHandover, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_lcs_ServingNodeAddress }, + { &hf_gsm_map_lcs_utranAdditionalPositioningData, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranAdditionalPositioningData }, + { &hf_gsm_map_lcs_utranBaroPressureMeas, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranBaroPressureMeas }, + { &hf_gsm_map_lcs_utranCivicAddress, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranCivicAddress }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_SubscriberLocationReport_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_lcs_SubscriberLocationReport_Arg); + + return offset; +} + + +static const ber_sequence_t gsm_map_lcs_SubscriberLocationReport_Res_sequence[] = { + { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_lcs_na_ESRK , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_na_ESRD , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL }, + { &hf_gsm_map_lcs_reportingPLMNList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList }, + { &hf_gsm_map_lcs_lcs_ReferenceNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_lcs_SubscriberLocationReport_Res(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_lcs_SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_lcs_SubscriberLocationReport_Res); + + return offset; +} + +/*--- PDUs ---*/ + +int dissect_gsm_map_lcs_LCS_ClientID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gsm_map_lcs_LCS_ClientID(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_lcs_gsm_map_lcs_LCS_ClientID_PDU); + return offset; +} + + +/* --- Module MAP-GR-DataTypes --- --- --- */ + + + +static int +dissect_gsm_map_gr_CODEC_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_gr_CipheringAlgorithm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_gr_GroupKeyNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_gr_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + + +static int +dissect_gsm_map_gr_VSTK(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_gr_VSTK_RAND(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_PrepareGroupCallArg_sequence[] = { + { &hf_gsm_map_gr_teleservice, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_TeleserviceCode }, + { &hf_gsm_map_gr_asciCallReference, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ASCI_CallReference }, + { &hf_gsm_map_gr_codec_Info, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_gr_CODEC_Info }, + { &hf_gsm_map_gr_cipheringAlgorithm, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_gr_CipheringAlgorithm }, + { &hf_gsm_map_gr_groupKeyNumber_Vk_Id, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_GroupKeyNumber }, + { &hf_gsm_map_gr_groupKey , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Kc }, + { &hf_gsm_map_gr_priority , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority }, + { &hf_gsm_map_gr_uplinkFree, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_gr_vstk , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_VSTK }, + { &hf_gsm_map_gr_vstk_rand, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_VSTK_RAND }, + { &hf_gsm_map_gr_talkerChannelParameter, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkReplyIndicator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_PrepareGroupCallArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_gr_PrepareGroupCallArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_PrepareGroupCallRes_sequence[] = { + { &hf_gsm_map_gr_groupCallNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_PrepareGroupCallRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_gr_PrepareGroupCallRes); + + return offset; +} + + +static const value_string gsm_map_gr_TalkerPriority_vals[] = { + { 0, "normal" }, + { 1, "privileged" }, + { 2, "emergency" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_gr_TalkerPriority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_SendGroupCallEndSignalArg_sequence[] = { + { &hf_gsm_map_gr_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority }, + { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_SendGroupCallEndSignalArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_gr_SendGroupCallEndSignalArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_SendGroupCallEndSignalRes_sequence[] = { + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_SendGroupCallEndSignalRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_gr_SendGroupCallEndSignalRes); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_StateAttributes_sequence[] = { + { &hf_gsm_map_gr_downlinkAttached, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkAttached, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_dualCommunication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_callOriginator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_StateAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_StateAttributes_sequence, hf_index, ett_gsm_map_gr_StateAttributes); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_ForwardGroupCallSignallingArg_sequence[] = { + { &hf_gsm_map_gr_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_gr_uplinkRequestAck, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkReleaseIndication, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkRejectCommand, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkSeizedCommand, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkReleaseCommand, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_gr_stateAttributes, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_StateAttributes }, + { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority }, + { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo }, + { &hf_gsm_map_gr_emergencyModeResetCommandFlag, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_sm_RP_UI , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_map_gr_an_APDU , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_ForwardGroupCallSignallingArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_gr_ForwardGroupCallSignallingArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_ProcessGroupCallSignallingArg_sequence[] = { + { &hf_gsm_map_gr_uplinkRequest, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_uplinkReleaseIndication, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_releaseGroupCall, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority }, + { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo }, + { &hf_gsm_map_gr_emergencyModeResetCommandFlag, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL }, + { &hf_gsm_map_gr_an_APDU , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_ProcessGroupCallSignallingArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_gr_ProcessGroupCallSignallingArg); + + return offset; +} + + +static const value_string gsm_map_gr_RequestedInfo_vals[] = { + { 0, "anchorMSC-AddressAndASCI-CallReference" }, + { 1, "imsiAndAdditionalInfoAndAdditionalSubscription" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_gr_RequestedInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_SendGroupCallInfoArg_sequence[] = { + { &hf_gsm_map_gr_requestedInfo, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_gr_RequestedInfo }, + { &hf_gsm_map_gr_groupId , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Long_GroupId }, + { &hf_gsm_map_gr_teleservice, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_TeleserviceCode }, + { &hf_gsm_map_gr_cellId , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GlobalCellId }, + { &hf_gsm_map_gr_imsi , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_gr_tmsi , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TMSI }, + { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo }, + { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority }, + { &hf_gsm_map_gr_cksn , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Cksn }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_SendGroupCallInfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_SendGroupCallInfoArg_sequence, hf_index, ett_gsm_map_gr_SendGroupCallInfoArg); + + return offset; +} + + +static const ber_sequence_t gsm_map_gr_SendGroupCallInfoRes_sequence[] = { + { &hf_gsm_map_gr_anchorMSC_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_map_gr_asciCallReference, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ASCI_CallReference }, + { &hf_gsm_map_gr_imsi , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo }, + { &hf_gsm_map_gr_additionalSubscriptions, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalSubscriptions }, + { &hf_gsm_map_gr_kc , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Kc }, + { &hf_gsm_map_gr_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_gr_SendGroupCallInfoRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_gr_SendGroupCallInfoRes_sequence, hf_index, ett_gsm_map_gr_SendGroupCallInfoRes); + + return offset; +} + + +/* --- Module MAP-DialogueInformation --- --- --- */ + + +static const ber_sequence_t gsm_map_dialogue_MAP_OpenInfo_sequence[] = { + { &hf_gsm_map_dialogue_destinationReference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_dialogue_originationReference, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_OpenInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_dialogue_MAP_OpenInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_OpenInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_dialogue_MAP_AcceptInfo_sequence[] = { + { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_AcceptInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_dialogue_MAP_AcceptInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_AcceptInfo); + + return offset; +} + + +static const ber_sequence_t gsm_map_dialogue_MAP_CloseInfo_sequence[] = { + { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_CloseInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_dialogue_MAP_CloseInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_CloseInfo); + + return offset; +} + + +static const value_string gsm_map_dialogue_Reason_vals[] = { + { 0, "noReasonGiven" }, + { 1, "invalidDestinationReference" }, + { 2, "invalidOriginatingReference" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_dialogue_Reason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_dialogue_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_dialogue_MAP_RefuseInfo_sequence[] = { + { &hf_gsm_map_dialogue_reason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_dialogue_Reason }, + { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { &hf_gsm_map_dialogue_alternativeApplicationContext, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_dialogue_OBJECT_IDENTIFIER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_RefuseInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_dialogue_MAP_RefuseInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_RefuseInfo); + + return offset; +} + + + +static int +dissect_gsm_map_dialogue_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const value_string gsm_map_dialogue_ResourceUnavailableReason_vals[] = { + { 0, "shortTermResourceLimitation" }, + { 1, "longTermResourceLimitation" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_dialogue_ResourceUnavailableReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_dialogue_ProcedureCancellationReason_vals[] = { + { 0, "handoverCancellation" }, + { 1, "radioChannelRelease" }, + { 2, "networkPathRelease" }, + { 3, "callRelease" }, + { 4, "associatedProcedureFailure" }, + { 5, "tandemDialogueRelease" }, + { 6, "remoteOperationsFailure" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_dialogue_ProcedureCancellationReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_map_dialogue_MAP_UserAbortChoice_vals[] = { + { 0, "userSpecificReason" }, + { 1, "userResourceLimitation" }, + { 2, "resourceUnavailable" }, + { 3, "applicationProcedureCancellation" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_dialogue_MAP_UserAbortChoice_choice[] = { + { 0, &hf_gsm_map_dialogue_userSpecificReason, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_NULL }, + { 1, &hf_gsm_map_dialogue_userResourceLimitation, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_NULL }, + { 2, &hf_gsm_map_dialogue_resourceUnavailable, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_ResourceUnavailableReason }, + { 3, &hf_gsm_map_dialogue_applicationProcedureCancellation, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_ProcedureCancellationReason }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_UserAbortChoice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_dialogue_MAP_UserAbortChoice_choice, hf_index, ett_gsm_map_dialogue_MAP_UserAbortChoice, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_dialogue_MAP_UserAbortInfo_sequence[] = { + { &hf_gsm_map_dialogue_map_UserAbortChoice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_dialogue_MAP_UserAbortChoice }, + { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_UserAbortInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_dialogue_MAP_UserAbortInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_UserAbortInfo); + + return offset; +} + + +static const value_string gsm_map_dialogue_MAP_ProviderAbortReason_vals[] = { + { 0, "abnormalDialogue" }, + { 1, "invalidPDU" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_dialogue_MAP_ProviderAbortReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_dialogue_MAP_ProviderAbortInfo_sequence[] = { + { &hf_gsm_map_dialogue_map_ProviderAbortReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_dialogue_MAP_ProviderAbortReason }, + { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_ProviderAbortInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_dialogue_MAP_ProviderAbortInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_ProviderAbortInfo); + + return offset; +} + + +static const value_string gsm_map_dialogue_MAP_DialoguePDU_vals[] = { + { 0, "map-open" }, + { 1, "map-accept" }, + { 2, "map-close" }, + { 3, "map-refuse" }, + { 4, "map-userAbort" }, + { 5, "map-providerAbort" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_dialogue_MAP_DialoguePDU_choice[] = { + { 0, &hf_gsm_map_dialogue_map_open, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_OpenInfo }, + { 1, &hf_gsm_map_dialogue_map_accept, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_AcceptInfo }, + { 2, &hf_gsm_map_dialogue_map_close, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_CloseInfo }, + { 3, &hf_gsm_map_dialogue_map_refuse, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_RefuseInfo }, + { 4, &hf_gsm_map_dialogue_map_userAbort, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_UserAbortInfo }, + { 5, &hf_gsm_map_dialogue_map_providerAbort, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_ProviderAbortInfo }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_dialogue_MAP_DialoguePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_dialogue_MAP_DialoguePDU_choice, hf_index, ett_gsm_map_dialogue_MAP_DialoguePDU, + NULL); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_gsm_map_dialogue_MAP_DialoguePDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gsm_map_dialogue_MAP_DialoguePDU(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_dialogue_gsm_map_dialogue_MAP_DialoguePDU_PDU); + return offset; +} + + +/* --- Module MAP-LocationServiceOperations --- --- --- */ + + +/* --- Module MAP-Group-Call-Operations --- --- --- */ + + +/* --- Module MAP-ShortMessageServiceOperations --- --- --- */ + + +/* --- Module MAP-SupplementaryServiceOperations --- --- --- */ + + +/* --- Module MAP-CallHandlingOperations --- --- --- */ + + +/* --- Module MAP-OperationAndMaintenanceOperations --- --- --- */ + + +/* --- Module MAP-MobileServiceOperations --- --- --- */ + + +/* --- Module MAP-Errors --- --- --- */ + + +/* --- Module MAP-Protocol --- --- --- */ + + +/* --- Module DummyMAP --- --- --- */ + + + +static int +dissect_gsm_old_InvokeIdType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { + { 2, "updateLocation" }, + { 3, "cancelLocation" }, + { 4, "provideRoamingNumber" }, + { 5, "noteSubscriberDataModified" }, + { 6, "resumeCallHandling" }, + { 7, "insertSubscriberData" }, + { 8, "deleteSubscriberData" }, + { 9, "sendParameters" }, + { 10, "registerSS" }, + { 11, "eraseSS" }, + { 12, "activateSS" }, + { 13, "deactivateSS" }, + { 14, "interrogateSS" }, + { 15, "authenticationFailureReport" }, + { 16, "notifySS" }, + { 17, "registerPassword" }, + { 18, "getPassword" }, + { 19, "processUnstructuredSS-Data" }, + { 20, "releaseResources" }, + { 21, "mt-ForwardSM-VGCS" }, + { 22, "sendRoutingInfo" }, + { 23, "updateGprsLocation" }, + { 24, "sendRoutingInfoForGprs" }, + { 25, "failureReport" }, + { 26, "noteMsPresentForGprs" }, + { 27, "unAllocated" }, + { 28, "performHandover" }, + { 29, "sendEndSignal" }, + { 30, "performSubsequentHandover" }, + { 31, "provideSIWFSNumber" }, + { 32, "sIWFSSignallingModify" }, + { 33, "processAccessSignalling" }, + { 34, "forwardAccessSignalling" }, + { 35, "noteInternalHandover" }, + { 36, "cancelVcsgLocation" }, + { 37, "reset" }, + { 38, "forwardCheckSS" }, + { 39, "prepareGroupCall" }, + { 40, "sendGroupCallEndSignal" }, + { 41, "processGroupCallSignalling" }, + { 42, "forwardGroupCallSignalling" }, + { 43, "checkIMEI" }, + { 44, "mt-forwardSM" }, + { 45, "sendRoutingInfoForSM" }, + { 46, "mo-forwardSM" }, + { 47, "reportSM-DeliveryStatus" }, + { 48, "noteSubscriberPresent" }, + { 49, "alertServiceCentreWithoutResult" }, + { 50, "activateTraceMode" }, + { 51, "deactivateTraceMode" }, + { 52, "traceSubscriberActivity" }, + { 53, "updateVcsgLocation" }, + { 54, "beginSubscriberActivity" }, + { 55, "sendIdentification" }, + { 56, "sendAuthenticationInfo" }, + { 57, "restoreData" }, + { 58, "sendIMSI" }, + { 59, "processUnstructuredSS-Request" }, + { 60, "unstructuredSS-Request" }, + { 61, "unstructuredSS-Notify" }, + { 62, "anyTimeSubscriptionInterrogation" }, + { 63, "informServiceCentre" }, + { 64, "alertServiceCentre" }, + { 65, "anyTimeModification" }, + { 66, "readyForSM" }, + { 67, "purgeMS" }, + { 68, "prepareHandover" }, + { 69, "prepareSubsequentHandover" }, + { 70, "provideSubscriberInfo" }, + { 71, "anyTimeInterrogation" }, + { 72, "ss-InvocationNotification" }, + { 73, "setReportingState" }, + { 74, "statusReport" }, + { 75, "remoteUserFree" }, + { 76, "registerCC-Entry" }, + { 77, "eraseCC-Entry" }, + { 78, "secureTransportClass1" }, + { 79, "secureTransportClass2" }, + { 80, "secureTransportClass3" }, + { 81, "secureTransportClass4" }, + { 82, "unAllocated" }, + { 83, "provideSubscriberLocation" }, + { 84, "sendGroupCallInfo" }, + { 85, "sendRoutingInfoForLCS" }, + { 86, "subscriberLocationReport" }, + { 87, "ist-Alert" }, + { 88, "ist-Command" }, + { 89, "noteMM-Event" }, + { 90, "unAllocated" }, + { 91, "unAllocated" }, + { 92, "unAllocated" }, + { 93, "unAllocated" }, + { 94, "unAllocated" }, + { 95, "unAllocated" }, + { 96, "unAllocated" }, + { 97, "unAllocated" }, + { 98, "unAllocated" }, + { 99, "unAllocated" }, + { 100, "unAllocated" }, + { 101, "unAllocated" }, + { 102, "unAllocated" }, + { 103, "unAllocated" }, + { 104, "unAllocated" }, + { 105, "unAllocated" }, + { 106, "unAllocated" }, + { 107, "unAllocated" }, + { 108, "unAllocated" }, + { 109, "lcs-PeriodicLocationCancellation" }, + { 110, "lcs-LocationUpdate" }, + { 111, "lcs-PeriodicLocationRequest" }, + { 112, "lcs-AreaEventCancellation" }, + { 113, "lcs-AreaEventReport" }, + { 114, "lcs-AreaEventRequest" }, + { 115, "lcs-MOLR" }, + { 116, "lcs-LocationNotification" }, + { 117, "callDeflection" }, + { 118, "userUserService" }, + { 119, "accessRegisterCCEntry" }, + { 120, "forwardCUG-Info" }, + { 121, "splitMPTY" }, + { 122, "retrieveMPTY" }, + { 123, "holdMPTY" }, + { 124, "buildMPTY" }, + { 125, "forwardChargeAdvice" }, + { 126, "explicitCT" }, + { 0, NULL } +}; + +static value_string_ext gsm_old_GSMMAPOperationLocalvalue_vals_ext = VALUE_STRING_EXT_INIT(gsm_old_GSMMAPOperationLocalvalue_vals); + + +static int +dissect_gsm_old_GSMMAPOperationLocalvalue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + const char *opcode_string; + + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + &opcode); + + /* Retrieve opcode string and eventually update item value */ + opcode_string = gsm_map_opr_code(opcode, actx->created_item); + col_append_str(actx->pinfo->cinfo, COL_INFO, opcode_string); + col_append_str(actx->pinfo->cinfo, COL_INFO, " "); + + + return offset; +} + + + +static int +dissect_gsm_old_OperationLocalvalue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_old_GSMMAPOperationLocalvalue(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + + +static int +dissect_gsm_old_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const value_string gsm_old_MAP_OPERATION_vals[] = { + { 0, "localValue" }, + { 1, "globalValue" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_MAP_OPERATION_choice[] = { + { 0, &hf_gsm_old_localValue , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OperationLocalvalue }, + { 1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_MAP_OPERATION(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_MAP_OPERATION_choice, hf_index, ett_gsm_old_MAP_OPERATION, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_InvokeParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_invokeData(tree, tvb, offset, actx); + + + return offset; +} + + +static const ber_sequence_t gsm_old_Invoke_sequence[] = { + { &hf_gsm_old_invokeID , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType }, + { &hf_gsm_old_linkedID , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_InvokeIdType }, + { &hf_gsm_old_opCode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_MAP_OPERATION }, + { &hf_gsm_old_invokeparameter, BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeParameter }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_Invoke(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_Invoke_sequence, hf_index, ett_gsm_old_Invoke); + + return offset; +} + + + +static int +dissect_gsm_old_ReturnResultParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_returnResultData(tree, tvb, offset, actx); + + + return offset; +} + + +static const ber_sequence_t gsm_old_T_resultretres_sequence[] = { + { &hf_gsm_old_opCode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_MAP_OPERATION }, + { &hf_gsm_old_returnparameter, BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ReturnResultParameter }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_T_resultretres(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_T_resultretres_sequence, hf_index, ett_gsm_old_T_resultretres); + + return offset; +} + + +static const ber_sequence_t gsm_old_ReturnResult_sequence[] = { + { &hf_gsm_old_invokeID , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType }, + { &hf_gsm_old_resultretres, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_T_resultretres }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ReturnResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_ReturnResult_sequence, hf_index, ett_gsm_old_ReturnResult); + + return offset; +} + + +const value_string gsm_old_GSMMAPLocalErrorcode_vals[] = { + { 1, "unknownSubscriber" }, + { 2, "unknownBaseStation" }, + { 3, "unknownMSC" }, + { 4, "secureTransportError" }, + { 5, "unidentifiedSubscriber" }, + { 6, "absentSubscriberSM" }, + { 7, "unknownEquipment" }, + { 8, "roamingNotAllowed" }, + { 9, "illegalSubscriber" }, + { 10, "bearerServiceNotProvisioned" }, + { 11, "teleserviceNotProvisioned" }, + { 12, "illegalEquipment" }, + { 13, "callBarred" }, + { 14, "forwardingViolation" }, + { 15, "cug-Reject" }, + { 16, "illegalSS-Operation" }, + { 17, "ss-ErrorStatus" }, + { 18, "ss-NotAvailable" }, + { 19, "ss-SubscriptionViolation" }, + { 20, "ss-Incompatibility" }, + { 21, "facilityNotSupported" }, + { 22, "ongoingGroupCall" }, + { 23, "invalidTargetBaseStation" }, + { 24, "noRadioResourceAvailable" }, + { 25, "noHandoverNumberAvailable" }, + { 26, "subsequentHandoverFailure" }, + { 27, "absentSubscriber" }, + { 28, "incompatibleTerminal" }, + { 29, "shortTermDenial" }, + { 30, "longTermDenial" }, + { 31, "subscriberBusyForMT-SMS" }, + { 32, "sm-DeliveryFailure" }, + { 33, "messageWaitingListFull" }, + { 34, "systemFailure" }, + { 35, "dataMissing" }, + { 36, "unexpectedDataValue" }, + { 37, "pw-RegistrationFailure" }, + { 38, "negativePW-Check" }, + { 39, "noRoamingNumberAvailable" }, + { 40, "tracingBufferFull" }, + { 42, "targetCellOutsideGroupCallArea" }, + { 43, "numberOfPW-AttemptsViolation" }, + { 44, "numberChanged" }, + { 45, "busySubscriber" }, + { 46, "noSubscriberReply" }, + { 47, "forwardingFailed" }, + { 48, "or-NotAllowed" }, + { 49, "ati-NotAllowed" }, + { 50, "noGroupCallNumberAvailable" }, + { 51, "resourceLimitation" }, + { 52, "unauthorizedRequestingNetwork" }, + { 53, "unauthorizedLCSClient" }, + { 54, "positionMethodFailure" }, + { 58, "unknownOrUnreachableLCSClient" }, + { 59, "mm-EventNotSupported" }, + { 60, "atsi-NotAllowed" }, + { 61, "atm-NotAllowed" }, + { 62, "informationNotAvailable" }, + { 71, "unknownAlphabet" }, + { 72, "ussd-Busy" }, + { 0, NULL } +}; + + +int +dissect_gsm_old_GSMMAPLocalErrorcode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + &errorCode); + + return offset; +} + + + +static int +dissect_gsm_old_LocalErrorcode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_old_GSMMAPLocalErrorcode(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const value_string gsm_old_MAP_ERROR_vals[] = { + { 0, "localValue" }, + { 1, "globalValue" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_MAP_ERROR_choice[] = { + { 0, &hf_gsm_old_localValue_01, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_LocalErrorcode }, + { 1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_MAP_ERROR(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_MAP_ERROR_choice, hf_index, ett_gsm_old_MAP_ERROR, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_ReturnErrorParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_returnErrorData(tree, tvb, offset, actx); + + + return offset; +} + + +static const ber_sequence_t gsm_old_ReturnError_sequence[] = { + { &hf_gsm_old_invokeID , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType }, + { &hf_gsm_old_errorCode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_MAP_ERROR }, + { &hf_gsm_old_parameter , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ReturnErrorParameter }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ReturnError(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_ReturnError_sequence, hf_index, ett_gsm_old_ReturnError); + + return offset; +} + + + +static int +dissect_gsm_old_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const value_string gsm_old_T_invokeIDRej_vals[] = { + { 0, "derivable" }, + { 1, "not-derivable" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_T_invokeIDRej_choice[] = { + { 0, &hf_gsm_old_derivable , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType }, + { 1, &hf_gsm_old_not_derivable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_old_NULL }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_T_invokeIDRej(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_T_invokeIDRej_choice, hf_index, ett_gsm_old_T_invokeIDRej, + NULL); + + return offset; +} + + +static const value_string gsm_old_GeneralProblem_vals[] = { + { 0, "unrecognizedComponent" }, + { 1, "mistypedComponent" }, + { 2, "badlyStructuredComponent" }, + { 0, NULL } +}; + + +static int +dissect_gsm_old_GeneralProblem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_InvokeProblem_vals[] = { + { 0, "duplicateInvokeID" }, + { 1, "unrecognizedOperation" }, + { 2, "mistypedParameter" }, + { 3, "resourceLimitation" }, + { 4, "initiatingRelease" }, + { 5, "unrecognizedLinkedID" }, + { 6, "linkedResponseUnexpected" }, + { 7, "unexpectedLinkedOperation" }, + { 0, NULL } +}; + + +static int +dissect_gsm_old_InvokeProblem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_ReturnResultProblem_vals[] = { + { 0, "unrecognizedInvokeID" }, + { 1, "returnResultUnexpected" }, + { 2, "mistypedParameter" }, + { 0, NULL } +}; + + +static int +dissect_gsm_old_ReturnResultProblem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_ReturnErrorProblem_vals[] = { + { 0, "unrecognizedInvokeID" }, + { 1, "returnErrorUnexpected" }, + { 2, "unrecognizedError" }, + { 3, "unexpectedError" }, + { 4, "mistypedParameter" }, + { 0, NULL } +}; + + +static int +dissect_gsm_old_ReturnErrorProblem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_T_problem_vals[] = { + { 0, "generalProblem" }, + { 1, "invokeProblem" }, + { 2, "returnResultProblem" }, + { 3, "returnErrorProblem" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_T_problem_choice[] = { + { 0, &hf_gsm_old_generalProblem, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_GeneralProblem }, + { 1, &hf_gsm_old_invokeProblem, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_InvokeProblem }, + { 2, &hf_gsm_old_returnResultProblem, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnResultProblem }, + { 3, &hf_gsm_old_returnErrorProblem, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnErrorProblem }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_T_problem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_T_problem_choice, hf_index, ett_gsm_old_T_problem, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_Reject_sequence[] = { + { &hf_gsm_old_invokeIDRej , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_T_invokeIDRej }, + { &hf_gsm_old_problem , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_T_problem }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_Reject(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_Reject_sequence, hf_index, ett_gsm_old_Reject); + + return offset; +} + + +static const value_string gsm_old_Component_vals[] = { + { 1, "invoke" }, + { 2, "returnResultLast" }, + { 3, "returnError" }, + { 4, "reject" }, + { 7, "returnResultNotLast" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_Component_choice[] = { + { 1, &hf_gsm_old_invoke , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_Invoke }, + { 2, &hf_gsm_old_returnResultLast, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnResult }, + { 3, &hf_gsm_old_returnError , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnError }, + { 4, &hf_gsm_old_reject , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_Reject }, + { 7, &hf_gsm_old_returnResultNotLast, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnResult }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_Component(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_Component_choice, hf_index, ett_gsm_old_Component, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = { + { &hf_gsm_old_protocolId , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ProtocolId }, + { &hf_gsm_old_signalInfo , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_old_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_Bss_APDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + guint8 octet; + guint8 length; + tvbuff_t *next_tvb; + proto_tree *subtree; +/* +ETS 300 599: December 2000 (GSM 09.02 version 4.19.1) +5.6.9.1 BSS-apdu +This parameter includes one or two concatenated complete 08.06 messages, as described in GSM 03.09 +and GSM 09.10. The Protocol ID indicates that the message or messages are according to GSM 08.06. +For the coding of the messages see GSM 08.06 and GSM 08.08. +*/ + ProtocolId = 0xffffffff; + gsm_map_private_info_t *gsm_map_priv; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_Bss_APDU_sequence, hf_index, ett_gsm_old_Bss_APDU); + + gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo); + switch (ProtocolId){ + case 1: + /* gsm-0408 */ + /* As per comment abowe Individual IE:(s) will be found here in TLV format + * Unfortunatly a branch for each IE must be made to call the apropriate + * function + */ + /* Get tag */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + proto_tree_add_item(subtree, hf_gsm_map_ie_tag, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + /* get length */ + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + /* Branch on tag */ + switch(octet){ + case 4: + /* Dissect the data part */ + de_bearer_cap(gsm_map_priv->signal_info_tvb, subtree, actx->pinfo, 2, length, NULL, 0); + /* TODO: There may be more than one IE */ + break; + default: + proto_tree_add_expert(subtree, actx->pinfo, &ei_gsm_map_undecoded, gsm_map_priv->signal_info_tvb, 0, length); + break; + }/* switch(octet) */ + break; + case 2: + /* gsm-0806 */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + /* Discrimination parameter */ + proto_tree_add_item(subtree, hf_gsm_map_disc_par, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ + /* Strip off discrimination and length */ + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + }else if(octet==1){ + proto_tree_add_item(subtree, hf_gsm_map_dlci, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 3); + call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); + } + break; + case 3: + /* gsm-BSSMAP -- Value 3 is reserved and must not be used*/ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + } + break; + /* ets-300102-1 (~Q.931 ) */ + case 4: + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + if ( octet == 4 ) + dissect_q931_bearer_capability_ie(gsm_map_priv->signal_info_tvb, 2, length, subtree); + break; + default: + break; + }/*switch (ProtocolId)*/ + + + return offset; +} + + + +static int +dissect_gsm_old_CallDirection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_ProvideSIWFSNumberArg_sequence[] = { + { &hf_gsm_old_gsm_BearerCapability, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_isdn_BearerCapability, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_call_Direction, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_CallDirection }, + { &hf_gsm_old_b_Subscriber_Address, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_chosenChannel, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_lowerLayerCompatibility, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_highLayerCompatibility, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ProvideSIWFSNumberArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_old_ProvideSIWFSNumberArg); + + return offset; +} + + +static const ber_sequence_t gsm_old_ProvideSIWFSNumberRes_sequence[] = { + { &hf_gsm_old_sIWFSNumber , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ProvideSIWFSNumberRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_old_ProvideSIWFSNumberRes); + + return offset; +} + + +static const ber_sequence_t gsm_old_PurgeMSArgV2_sequence[] = { + { &hf_gsm_old_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_old_vlr_Number , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_PurgeMSArgV2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_PurgeMSArgV2_sequence, hf_index, ett_gsm_old_PurgeMSArgV2); + + return offset; +} + + +static const ber_sequence_t gsm_old_PrepareHO_ArgOld_sequence[] = { + { &hf_gsm_old_targetCellId, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_GlobalCellId }, + { &hf_gsm_old_ho_NumberNotRequired, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_NULL }, + { &hf_gsm_old_bss_APDU , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_Bss_APDU }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_PrepareHO_ArgOld(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_PrepareHO_ArgOld_sequence, hf_index, ett_gsm_old_PrepareHO_ArgOld); + + return offset; +} + + +static const ber_sequence_t gsm_old_PrepareHO_ResOld_sequence[] = { + { &hf_gsm_old_handoverNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_bss_APDU , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_Bss_APDU }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_PrepareHO_ResOld(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_PrepareHO_ResOld_sequence, hf_index, ett_gsm_old_PrepareHO_ResOld); + + return offset; +} + + + +static int +dissect_gsm_old_RAND(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_SRES(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_Kc(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_SendAuthenticationInfoResOld_item_sequence[] = { + { &hf_gsm_old_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_RAND }, + { &hf_gsm_old_sres , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SRES }, + { &hf_gsm_old_kc , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_Kc }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SendAuthenticationInfoResOld_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SendAuthenticationInfoResOld_item_sequence, hf_index, ett_gsm_old_SendAuthenticationInfoResOld_item); + + return offset; +} + + +static const ber_sequence_t gsm_old_SendAuthenticationInfoResOld_sequence_of[1] = { + { &hf_gsm_old_SendAuthenticationInfoResOld_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SendAuthenticationInfoResOld_item }, +}; + +static int +dissect_gsm_old_SendAuthenticationInfoResOld(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_old_SendAuthenticationInfoResOld_sequence_of, hf_index, ett_gsm_old_SendAuthenticationInfoResOld); + + return offset; +} + + +static const ber_sequence_t gsm_old_AuthenticationTriplet_v2_sequence[] = { + { &hf_gsm_old_rand , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_RAND }, + { &hf_gsm_old_sres , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SRES }, + { &hf_gsm_old_kc , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_Kc }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_AuthenticationTriplet_v2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_AuthenticationTriplet_v2_sequence, hf_index, ett_gsm_old_AuthenticationTriplet_v2); + + return offset; +} + + +static const ber_sequence_t gsm_old_TripletListold_sequence_of[1] = { + { &hf_gsm_old_TripletListold_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_AuthenticationTriplet_v2 }, +}; + +static int +dissect_gsm_old_TripletListold(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_old_TripletListold_sequence_of, hf_index, ett_gsm_old_TripletListold); + + return offset; +} + + +static const ber_sequence_t gsm_old_SendIdentificationResV2_sequence[] = { + { &hf_gsm_old_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_old_tripletList , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_TripletListold }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SendIdentificationResV2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SendIdentificationResV2_sequence, hf_index, ett_gsm_old_SendIdentificationResV2); + + return offset; +} + + +static const ber_sequence_t gsm_old_SIWFSSignallingModifyArg_sequence[] = { + { &hf_gsm_old_channelType , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_chosenChannel, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SIWFSSignallingModifyArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_old_SIWFSSignallingModifyArg); + + return offset; +} + + +static const ber_sequence_t gsm_old_SIWFSSignallingModifyRes_sequence[] = { + { &hf_gsm_old_channelType , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SIWFSSignallingModifyRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_old_SIWFSSignallingModifyRes); + + return offset; +} + + + +int +dissect_gsm_old_NewPassword(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +const value_string gsm_old_GetPasswordArg_vals[] = { + { 0, "enterPW" }, + { 1, "enterNewPW" }, + { 2, "enterNewPW-Again" }, + { 0, NULL } +}; + + +int +dissect_gsm_old_GetPasswordArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_gsm_old_CurrentPassword(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_SecurityParametersIndex(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_OperationCode_vals[] = { + { 0, "localValue" }, + { 1, "globalValue" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_OperationCode_choice[] = { + { 0, &hf_gsm_old_localValue_02, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_INTEGER }, + { 1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_OperationCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_OperationCode_choice, hf_index, ett_gsm_old_OperationCode, + NULL); + + return offset; +} + + +static const value_string gsm_old_ErrorCode_vals[] = { + { 0, "localValue" }, + { 1, "globalValue" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_ErrorCode_choice[] = { + { 0, &hf_gsm_old_localValue_02, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_INTEGER }, + { 1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ErrorCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_ErrorCode_choice, hf_index, ett_gsm_old_ErrorCode, + NULL); + + return offset; +} + + +static const value_string gsm_old_OriginalComponentIdentifier_vals[] = { + { 0, "operationCode" }, + { 1, "errorCode" }, + { 2, "userInfo" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_OriginalComponentIdentifier_choice[] = { + { 0, &hf_gsm_old_operationCode, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_OperationCode }, + { 1, &hf_gsm_old_errorCode_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_ErrorCode }, + { 2, &hf_gsm_old_userInfo , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_NULL }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_OriginalComponentIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_OriginalComponentIdentifier_choice, hf_index, ett_gsm_old_OriginalComponentIdentifier, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_InitialisationVector(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_SecurityHeader_sequence[] = { + { &hf_gsm_old_securityParametersIndex, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityParametersIndex }, + { &hf_gsm_old_originalComponentIdentifier, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_OriginalComponentIdentifier }, + { &hf_gsm_old_initialisationVector, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_InitialisationVector }, + { NULL, 0, 0, 0, NULL } +}; + +int +dissect_gsm_old_SecurityHeader(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SecurityHeader_sequence, hf_index, ett_gsm_old_SecurityHeader); + + return offset; +} + + + +int +dissect_gsm_old_ProtectedPayload(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_SecureTransportArg_sequence[] = { + { &hf_gsm_old_securityHeader, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityHeader }, + { &hf_gsm_old_protectedPayload, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ProtectedPayload }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SecureTransportArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SecureTransportArg_sequence, hf_index, ett_gsm_old_SecureTransportArg); + + return offset; +} + + +static const ber_sequence_t gsm_old_SecureTransportErrorParam_sequence[] = { + { &hf_gsm_old_securityHeader, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityHeader }, + { &hf_gsm_old_protectedPayload, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ProtectedPayload }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SecureTransportErrorParam(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SecureTransportErrorParam_sequence, hf_index, ett_gsm_old_SecureTransportErrorParam); + + return offset; +} + + +static const ber_sequence_t gsm_old_SecureTransportRes_sequence[] = { + { &hf_gsm_old_securityHeader, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityHeader }, + { &hf_gsm_old_protectedPayload, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ProtectedPayload }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SecureTransportRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SecureTransportRes_sequence, hf_index, ett_gsm_old_SecureTransportRes); + + return offset; +} + + + +static int +dissect_gsm_old_Category(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_OCTET_STRING_SIZE_1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_T_operatorSS_Code_sequence_of[1] = { + { &hf_gsm_old_operatorSS_Code_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OCTET_STRING_SIZE_1 }, +}; + +static int +dissect_gsm_old_T_operatorSS_Code(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_old_T_operatorSS_Code_sequence_of, hf_index, ett_gsm_old_T_operatorSS_Code); + + return offset; +} + + +static const ber_sequence_t gsm_old_PlmnContainer_U_sequence[] = { + { &hf_gsm_old_msisdn , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_category , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_Category }, + { &hf_gsm_old_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_gsm_old_operatorSS_Code, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_T_operatorSS_Code }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_PlmnContainer_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_PlmnContainer_U_sequence, hf_index, ett_gsm_old_PlmnContainer_U); + + return offset; +} + + + +static int +dissect_gsm_old_PlmnContainer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 2, TRUE, dissect_gsm_old_PlmnContainer_U); + + return offset; +} + + + +static int +dissect_gsm_old_T_imsi(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_IMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_old_T_lmsi(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_LMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_old_T_serviceCentreAddressDA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_RECV; + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_old_T_noSM_RP_DA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_da_id = prev_packet_info->sm_rp_da_id; + gsm_map_pi->sm_rp_da_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_da_str); + } + } + + + return offset; +} + + +static const value_string gsm_old_SM_RP_DAold_vals[] = { + { 0, "imsi" }, + { 1, "lmsi" }, + { 4, "serviceCentreAddressDA" }, + { 5, "noSM-RP-DA" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_SM_RP_DAold_choice[] = { + { 0, &hf_gsm_old_imsi_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_imsi }, + { 1, &hf_gsm_old_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_lmsi }, + { 4, &hf_gsm_old_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_serviceCentreAddressDA }, + { 5, &hf_gsm_old_noSM_RP_DA , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_noSM_RP_DA }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SM_RP_DAold(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_SM_RP_DAold_choice, hf_index, ett_gsm_old_SM_RP_DAold, + NULL); + + return offset; +} + + + +static int +dissect_gsm_old_T_msisdn(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_RECV; + offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_MSISDN; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_old_T_serviceCentreAddressOA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + + + return offset; +} + + + +static int +dissect_gsm_old_T_noSM_RP_OA(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_oa_id = prev_packet_info->sm_rp_oa_id; + gsm_map_pi->sm_rp_oa_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_oa_str); + } + } + + + return offset; +} + + +static const value_string gsm_old_SM_RP_OAold_vals[] = { + { 2, "msisdn" }, + { 4, "serviceCentreAddressOA" }, + { 5, "noSM-RP-OA" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_SM_RP_OAold_choice[] = { + { 2, &hf_gsm_old_msisdn_01 , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_msisdn }, + { 4, &hf_gsm_old_serviceCentreAddressOA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_serviceCentreAddressOA }, + { 5, &hf_gsm_old_noSM_RP_OA , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_noSM_RP_OA }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SM_RP_OAold(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_SM_RP_OAold_choice, hf_index, ett_gsm_old_SM_RP_OAold, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_ForwardSM_Arg_sequence[] = { + { &hf_gsm_old_sm_RP_DA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_SM_RP_DAold }, + { &hf_gsm_old_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_SM_RP_OAold }, + { &hf_gsm_old_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { &hf_gsm_old_moreMessagesToSend, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ForwardSM_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_ForwardSM_Arg_sequence, hf_index, ett_gsm_old_ForwardSM_Arg); + + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + if (gsmmap_pdu_type == 1) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } else { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + + + return offset; +} + + +static const ber_sequence_t gsm_old_SendRoutingInfoArgV2_sequence[] = { + { &hf_gsm_old_msisdn , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_cug_CheckInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo }, + { &hf_gsm_old_numberOfForwarding, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NumberOfForwarding }, + { &hf_gsm_old_networkSignalInfo, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SendRoutingInfoArgV2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SendRoutingInfoArgV2_sequence, hf_index, ett_gsm_old_SendRoutingInfoArgV2); + + return offset; +} + + +static const ber_sequence_t gsm_old_SendRoutingInfoResV2_sequence[] = { + { &hf_gsm_old_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_old_routingInfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_RoutingInfo }, + { &hf_gsm_old_cug_CheckInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_CUG_CheckInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SendRoutingInfoResV2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SendRoutingInfoResV2_sequence, hf_index, ett_gsm_old_SendRoutingInfoResV2); + + return offset; +} + + +static const ber_sequence_t gsm_old_BeginSubscriberActivityArg_sequence[] = { + { &hf_gsm_old_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_old_originatingEntityNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_msisdn_02 , BER_CLASS_PRI, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_BeginSubscriberActivityArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_BeginSubscriberActivityArg_sequence, hf_index, ett_gsm_old_BeginSubscriberActivityArg); + + return offset; +} + + + +static int +dissect_gsm_old_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_RoutingInfoForSM_ArgV1_sequence[] = { + { &hf_gsm_old_msisdn , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_sm_RP_PRI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_BOOLEAN }, + { &hf_gsm_old_serviceCentreAddress, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_old_cug_Interlock, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Interlock }, + { &hf_gsm_old_teleserviceCode, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TeleserviceCode }, + { &hf_gsm_old_imsi , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_RoutingInfoForSM_ArgV1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_RoutingInfoForSM_ArgV1_sequence, hf_index, ett_gsm_old_RoutingInfoForSM_ArgV1); + + return offset; +} + + +static const value_string gsm_old_LocationInfo_vals[] = { + { 0, "roamingNumber" }, + { 1, "msc-Number" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_LocationInfo_choice[] = { + { 0, &hf_gsm_old_roamingNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 1, &hf_gsm_old_msc_Number , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_LocationInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_LocationInfo_choice, hf_index, ett_gsm_old_LocationInfo, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_LocationInfoWithLMSIv2_sequence[] = { + { &hf_gsm_old_locationInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_LocationInfo }, + { &hf_gsm_old_lmsi_01 , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_LocationInfoWithLMSIv2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_LocationInfoWithLMSIv2_sequence, hf_index, ett_gsm_old_LocationInfoWithLMSIv2); + + return offset; +} + + +static const ber_sequence_t gsm_old_RoutingInfoForSM_ResV2_sequence[] = { + { &hf_gsm_old_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_old_locationInfoWithLMSI, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_LocationInfoWithLMSIv2 }, + { &hf_gsm_old_mwd_Set , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_BOOLEAN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_RoutingInfoForSM_ResV2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_RoutingInfoForSM_ResV2_sequence, hf_index, ett_gsm_old_RoutingInfoForSM_ResV2); + + return offset; +} + + + +static int +dissect_gsm_old_Ki(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_old_RequestParameter_vals[] = { + { 0, "requestIMSI" }, + { 1, "requestAuthenticationSet" }, + { 2, "requestSubscriberData" }, + { 4, "requestKi" }, + { 0, NULL } +}; + + +static int +dissect_gsm_old_RequestParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_RequestParameterList_sequence_of[1] = { + { &hf_gsm_old_RequestParameterList_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_old_RequestParameter }, +}; + +static int +dissect_gsm_old_RequestParameterList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_old_RequestParameterList_sequence_of, hf_index, ett_gsm_old_RequestParameterList); + + return offset; +} + + +static const ber_sequence_t gsm_old_SendParametersArg_sequence[] = { + { &hf_gsm_old_subscriberId, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SubscriberId }, + { &hf_gsm_old_requestParameterList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_RequestParameterList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SendParametersArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_SendParametersArg_sequence, hf_index, ett_gsm_old_SendParametersArg); + + return offset; +} + + +static const value_string gsm_old_AuthenticationSetListOld_vals[] = { + { 0, "tripletList" }, + { 1, "quintupletList" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_AuthenticationSetListOld_choice[] = { + { 0, &hf_gsm_old_tripletList_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TripletList }, + { 1, &hf_gsm_old_quintupletList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QuintupletList }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_AuthenticationSetListOld(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_AuthenticationSetListOld_choice, hf_index, ett_gsm_old_AuthenticationSetListOld, + NULL); + + return offset; +} + + +static const value_string gsm_old_SentParameter_vals[] = { + { 0, "imsi" }, + { 1, "authenticationSet" }, + { 2, "subscriberData" }, + { 4, "ki" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_old_SentParameter_choice[] = { + { 0, &hf_gsm_old_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { 1, &hf_gsm_old_authenticationSet, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_AuthenticationSetListOld }, + { 2, &hf_gsm_old_subscriberData, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberData }, + { 4, &hf_gsm_old_ki , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_Ki }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_SentParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_old_SentParameter_choice, hf_index, ett_gsm_old_SentParameter, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_old_SentParameterList_sequence_of[1] = { + { &hf_gsm_old_SentParameterList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_SentParameter }, +}; + +static int +dissect_gsm_old_SentParameterList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_old_SentParameterList_sequence_of, hf_index, ett_gsm_old_SentParameterList); + + return offset; +} + + +static const ber_sequence_t gsm_old_ResetArgV1_sequence[] = { + { &hf_gsm_old_networkResource, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_NetworkResource }, + { &hf_gsm_old_hlr_Number , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_old_hlr_List , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_HLR_List }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_old_ResetArgV1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_old_ResetArgV1_sequence, hf_index, ett_gsm_old_ResetArgV1); + + return offset; +} + + +/* --- Module SS-DataTypes --- --- --- */ + + + +static int +dissect_gsm_ss_SS_UserData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_SS_Notification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const value_string gsm_ss_CallOnHold_Indicator_vals[] = { + { 0, "callRetrieved" }, + { 1, "callOnHold" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_CallOnHold_Indicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_ss_ECT_CallState_vals[] = { + { 0, "alerting" }, + { 1, "active" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_ECT_CallState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_RemotePartyNumber_sequence[] = { + { &hf_gsm_ss_partyNumber , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_ss_partyNumberSubaddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_RemotePartyNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_RemotePartyNumber_sequence, hf_index, ett_gsm_ss_RemotePartyNumber); + + return offset; +} + + +static const value_string gsm_ss_RDN_vals[] = { + { 0, "presentationAllowedAddress" }, + { 1, "presentationRestricted" }, + { 2, "numberNotAvailableDueToInterworking" }, + { 3, "presentationRestrictedAddress" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_ss_RDN_choice[] = { + { 0, &hf_gsm_ss_presentationAllowedAddress, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_RemotePartyNumber }, + { 1, &hf_gsm_ss_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { 2, &hf_gsm_ss_numberNotAvailableDueToInterworking, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { 3, &hf_gsm_ss_presentationRestrictedAddress, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_ss_RemotePartyNumber }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_RDN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_ss_RDN_choice, hf_index, ett_gsm_ss_RDN, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_ECT_Indicator_sequence[] = { + { &hf_gsm_ss_ect_CallState, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_ECT_CallState }, + { &hf_gsm_ss_rdn , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_ss_RDN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_ECT_Indicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_ECT_Indicator_sequence, hf_index, ett_gsm_ss_ECT_Indicator); + + return offset; +} + + + +static int +dissect_gsm_ss_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_NameSet_sequence[] = { + { &hf_gsm_ss_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme }, + { &hf_gsm_ss_lengthInCharacters, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_INTEGER }, + { &hf_gsm_ss_nameString , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_String }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_NameSet(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_NameSet_sequence, hf_index, ett_gsm_ss_NameSet); + + return offset; +} + + +static const value_string gsm_ss_Name_vals[] = { + { 0, "namePresentationAllowed" }, + { 1, "presentationRestricted" }, + { 2, "nameUnavailable" }, + { 3, "namePresentationRestricted" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_ss_Name_choice[] = { + { 0, &hf_gsm_ss_namePresentationAllowed, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NameSet }, + { 1, &hf_gsm_ss_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { 2, &hf_gsm_ss_nameUnavailable, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { 3, &hf_gsm_ss_namePresentationRestricted, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NameSet }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_Name(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_ss_Name_choice, hf_index, ett_gsm_ss_Name, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_NameIndicator_sequence[] = { + { &hf_gsm_ss_callingName , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_ss_Name }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_NameIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_NameIndicator_sequence, hf_index, ett_gsm_ss_NameIndicator); + + return offset; +} + + +static const value_string gsm_ss_Multicall_Indicator_vals[] = { + { 0, "nbr-SNexceeded" }, + { 1, "nbr-Userexceeded" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_Multicall_Indicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_NotifySS_Arg_sequence[] = { + { &hf_gsm_ss_ss_Code , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_ss_ss_Status , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status }, + { &hf_gsm_ss_ss_Notification, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_SS_Notification }, + { &hf_gsm_ss_callIsWaiting_Indicator, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_callOnHold_Indicator, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_CallOnHold_Indicator }, + { &hf_gsm_ss_mpty_Indicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_cug_Index , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Index }, + { &hf_gsm_ss_clirSuppressionRejected, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_ect_Indicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_ECT_Indicator }, + { &hf_gsm_ss_nameIndicator, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NameIndicator }, + { &hf_gsm_ss_ccbs_Feature , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature }, + { &hf_gsm_ss_alertingPattern, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern }, + { &hf_gsm_ss_multicall_Indicator, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Multicall_Indicator }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_NotifySS_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_NotifySS_Arg_sequence, hf_index, ett_gsm_ss_NotifySS_Arg); + + return offset; +} + + + +static int +dissect_gsm_ss_E1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_E2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_E3(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_E4(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_E5(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_E6(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_E7(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_ChargingInformation_sequence[] = { + { &hf_gsm_ss_e1 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E1 }, + { &hf_gsm_ss_e2 , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E2 }, + { &hf_gsm_ss_e3 , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E3 }, + { &hf_gsm_ss_e4 , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E4 }, + { &hf_gsm_ss_e5 , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E5 }, + { &hf_gsm_ss_e6 , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E6 }, + { &hf_gsm_ss_e7 , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E7 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_ChargingInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_ChargingInformation_sequence, hf_index, ett_gsm_ss_ChargingInformation); + + return offset; +} + + +static const ber_sequence_t gsm_ss_ForwardChargeAdviceArg_sequence[] = { + { &hf_gsm_ss_ss_Code , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code }, + { &hf_gsm_ss_chargingInformation, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_ChargingInformation }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_ForwardChargeAdviceArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_ForwardChargeAdviceArg_sequence, hf_index, ett_gsm_ss_ForwardChargeAdviceArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_ForwardCUG_InfoArg_sequence[] = { + { &hf_gsm_ss_cug_Index , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Index }, + { &hf_gsm_ss_suppressPrefCUG, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_suppressOA , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_ForwardCUG_InfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_ForwardCUG_InfoArg_sequence, hf_index, ett_gsm_ss_ForwardCUG_InfoArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_AccessRegisterCCEntryArg_sequence[] = { + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_AccessRegisterCCEntryArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_AccessRegisterCCEntryArg_sequence, hf_index, ett_gsm_ss_AccessRegisterCCEntryArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_CallDeflectionArg_sequence[] = { + { &hf_gsm_ss_deflectedToNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gsm_ss_deflectedToSubaddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_CallDeflectionArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_CallDeflectionArg_sequence, hf_index, ett_gsm_ss_CallDeflectionArg); + + return offset; +} + + +static const value_string gsm_ss_UUS_Service_vals[] = { + { 1, "uUS1" }, + { 2, "uUS2" }, + { 3, "uUS3" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_UUS_Service(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_UserUserServiceArg_sequence[] = { + { &hf_gsm_ss_uUS_Service , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_UUS_Service }, + { &hf_gsm_ss_uUS_Required , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_BOOLEAN }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_UserUserServiceArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_UserUserServiceArg_sequence, hf_index, ett_gsm_ss_UserUserServiceArg); + + return offset; +} + + +static int * const gsm_ss_DeferredLocationExt_bits[] = { + &hf_gsm_ss_DeferredLocationExt_motionEvent, + NULL +}; + +static int +dissect_gsm_ss_DeferredLocationExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_ss_DeferredLocationExt_bits, 1, hf_index, ett_gsm_ss_DeferredLocationExt, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LocationNotificationArg_sequence[] = { + { &hf_gsm_ss_notificationType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser }, + { &hf_gsm_ss_locationType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationType }, + { &hf_gsm_ss_lcsClientExternalID, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID }, + { &hf_gsm_ss_lcsClientName, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientName }, + { &hf_gsm_ss_lcsRequestorID, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSRequestorID }, + { &hf_gsm_ss_lcsCodeword , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSCodeword }, + { &hf_gsm_ss_lcsServiceTypeID, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID }, + { &hf_gsm_ss_deferredLocationExt, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_DeferredLocationExt }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LocationNotificationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LocationNotificationArg_sequence, hf_index, ett_gsm_ss_LocationNotificationArg); + + return offset; +} + + +static const value_string gsm_ss_VerificationResponse_vals[] = { + { 0, "permissionDenied" }, + { 1, "permissionGranted" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_VerificationResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LocationNotificationRes_sequence[] = { + { &hf_gsm_ss_verificationResponse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_VerificationResponse }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LocationNotificationRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LocationNotificationRes_sequence, hf_index, ett_gsm_ss_LocationNotificationRes); + + return offset; +} + + +static const value_string gsm_ss_MOLR_Type_vals[] = { + { 0, "locationEstimate" }, + { 1, "assistanceData" }, + { 2, "deCipheringKeys" }, + { 3, "deferredMo-lrTTTPInitiation" }, + { 4, "deferredMo-lrSelfLocationInitiation" }, + { 5, "deferredMt-lrOrmo-lrTTTPLocationEstimate" }, + { 6, "deferredMt-lrOrmo-lrCancellation" }, + { 7, "periodicEvent" }, + { 8, "enteringAreaEvent" }, + { 9, "leavingAreaEvent" }, + { 10, "beingInsideAreaEvent" }, + { 11, "motionEvent" }, + { 12, "maximumIntervalExpirationEvent" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_MOLR_Type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +const value_string gsm_ss_LocationMethod_vals[] = { + { 0, "msBasedEOTD" }, + { 1, "msAssistedEOTD" }, + { 2, "assistedGPS" }, + { 3, "msBasedOTDOA" }, + { 4, "assistedGANSS" }, + { 5, "assistedGPSandGANSS" }, + { 0, NULL } +}; + + +int +dissect_gsm_ss_LocationMethod(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_GPSAssistanceData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gsm_ss_TerminationCause_vals[] = { + { 0, "subscriberTermination" }, + { 1, "uETermination" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_TerminationCause(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_GANSSAssistanceData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_PositioningProtocolPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_MultiplePositioningProtocolPDUs_sequence_of[1] = { + { &hf_gsm_ss_MultiplePositioningProtocolPDUs_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_ss_PositioningProtocolPDU }, +}; + +static int +dissect_gsm_ss_MultiplePositioningProtocolPDUs(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_ss_MultiplePositioningProtocolPDUs_sequence_of, hf_index, ett_gsm_ss_MultiplePositioningProtocolPDUs); + + return offset; +} + + +static int * const gsm_ss_Location_Info_bits[] = { + &hf_gsm_ss_Location_Info_locationEstimate, + NULL +}; + +static int +dissect_gsm_ss_Location_Info(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + gsm_ss_Location_Info_bits, 1, hf_index, ett_gsm_ss_Location_Info, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_MOLRArg_sequence[] = { + { &hf_gsm_ss_molr_Type , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_MOLR_Type }, + { &hf_gsm_ss_locationMethod, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_LocationMethod }, + { &hf_gsm_ss_lcs_QoS , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS }, + { &hf_gsm_ss_lcsClientExternalID, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID }, + { &hf_gsm_ss_mlc_Number , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_ss_gpsAssistanceData, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_GPSAssistanceData }, + { &hf_gsm_ss_supportedGADShapes, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SupportedGADShapes }, + { &hf_gsm_ss_lcsServiceTypeID, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID }, + { &hf_gsm_ss_ageOfLocationInfo, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation }, + { &hf_gsm_ss_locationType , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationType }, + { &hf_gsm_ss_pseudonymIndicator, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_ss_locationEstimate, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation }, + { &hf_gsm_ss_velocityEstimate, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate }, + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_periodicLDRInfo, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo }, + { &hf_gsm_ss_locationUpdateRequest, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_sequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SequenceNumber }, + { &hf_gsm_ss_terminationCause, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_TerminationCause }, + { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_ganssAssistanceData, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_GANSSAssistanceData }, + { &hf_gsm_ss_multiplePositioningProtocolPDUs, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_MultiplePositioningProtocolPDUs }, + { &hf_gsm_ss_locationInfo , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Location_Info }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_MOLRArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_MOLRArg_sequence, hf_index, ett_gsm_ss_LCS_MOLRArg); + + return offset; +} + + + +static int +dissect_gsm_ss_DecipheringKeys(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_MOLRRes_sequence[] = { + { &hf_gsm_ss_locationEstimate, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation }, + { &hf_gsm_ss_decipheringKeys, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_DecipheringKeys }, + { &hf_gsm_ss_add_LocationEstimate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation }, + { &hf_gsm_ss_velocityEstimate, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate }, + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_reportingPLMNList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_MOLRRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_MOLRRes_sequence, hf_index, ett_gsm_ss_LCS_MOLRRes); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_AreaEventRequestArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_ss_deferredLocationEventType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_DeferredLocationEventType }, + { &hf_gsm_ss_areaEventInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaEventInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_AreaEventRequestArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_AreaEventRequestArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventRequestArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_AreaEventReportArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_AreaEventReportArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_AreaEventReportArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventReportArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_AreaEventCancellationArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_AreaEventCancellationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_AreaEventCancellationArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventCancellationArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_PeriodicLocationRequestArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_periodicLDRInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo }, + { &hf_gsm_ss_lcsClientExternalID, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID }, + { &hf_gsm_ss_qoS , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { &hf_gsm_ss_reportingPLMNList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_PeriodicLocationRequestArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_PeriodicLocationRequestArg_sequence, hf_index, ett_gsm_ss_LCS_PeriodicLocationRequestArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_PeriodicLocationRequestRes_sequence[] = { + { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_PeriodicLocationRequestRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_PeriodicLocationRequestRes_sequence, hf_index, ett_gsm_ss_LCS_PeriodicLocationRequestRes); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_LocationUpdateArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_add_LocationEstimate, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation }, + { &hf_gsm_ss_velocityEstimate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate }, + { &hf_gsm_ss_sequenceNumber, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SequenceNumber }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_LocationUpdateArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_LocationUpdateArg_sequence, hf_index, ett_gsm_ss_LCS_LocationUpdateArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_LocationUpdateRes_sequence[] = { + { &hf_gsm_ss_terminationCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_TerminationCause }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_LocationUpdateRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_LocationUpdateRes_sequence, hf_index, ett_gsm_ss_LCS_LocationUpdateRes); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_PeriodicLocationCancellationArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_PeriodicLocationCancellationArg_sequence, hf_index, ett_gsm_ss_LCS_PeriodicLocationCancellationArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_PeriodicLocation_sequence[] = { + { &hf_gsm_ss_periodicLDRInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_PeriodicLocation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_PeriodicLocation_sequence, hf_index, ett_gsm_ss_PeriodicLocation); + + return offset; +} + + +static const value_string gsm_ss_AreaType_vals[] = { + { 0, "trackingArea" }, + { 1, "ecgi" }, + { 0, NULL } +}; + + +static int +dissect_gsm_ss_AreaType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_AreaIdentification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_Area_sequence[] = { + { &hf_gsm_ss_areaType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_AreaType }, + { &hf_gsm_ss_areaIdentification, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_AreaIdentification }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_Area(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_Area_sequence, hf_index, ett_gsm_ss_Area); + + return offset; +} + + +static const ber_sequence_t gsm_ss_AreaList_sequence_of[1] = { + { &hf_gsm_ss_AreaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_ss_Area }, +}; + +static int +dissect_gsm_ss_AreaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_ss_AreaList_sequence_of, hf_index, ett_gsm_ss_AreaList); + + return offset; +} + + + +static int +dissect_gsm_ss_MaximumInterval(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_SamplingInterval(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_ss_Duration(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_AreaEventReporting_sequence[] = { + { &hf_gsm_ss_deferredLocationEventType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_DeferredLocationEventType }, + { &hf_gsm_ss_areaList , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_AreaList }, + { &hf_gsm_ss_occurrenceInfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_OccurrenceInfo }, + { &hf_gsm_ss_intervalTime , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_IntervalTime }, + { &hf_gsm_ss_maximumInterval, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_MaximumInterval }, + { &hf_gsm_ss_samplingInterval, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_SamplingInterval }, + { &hf_gsm_ss_duration , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Duration }, + { &hf_gsm_ss_locationInfo , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Location_Info }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_AreaEventReporting(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_AreaEventReporting_sequence, hf_index, ett_gsm_ss_AreaEventReporting); + + return offset; +} + + + +static int +dissect_gsm_ss_LinearDistance(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_ss_MotionEventReporting_sequence[] = { + { &hf_gsm_ss_linearDistance, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_LinearDistance }, + { &hf_gsm_ss_occurrenceInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_OccurrenceInfo }, + { &hf_gsm_ss_intervalTime , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_IntervalTime }, + { &hf_gsm_ss_maximumInterval, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_MaximumInterval }, + { &hf_gsm_ss_samplingInterval, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_SamplingInterval }, + { &hf_gsm_ss_duration , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Duration }, + { &hf_gsm_ss_locationInfo , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Location_Info }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_MotionEventReporting(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_MotionEventReporting_sequence, hf_index, ett_gsm_ss_MotionEventReporting); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_PeriodicTriggeredInvokeArg_sequence[] = { + { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber }, + { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address }, + { &hf_gsm_ss_qoS , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS }, + { &hf_gsm_ss_reportingPLMNList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList }, + { &hf_gsm_ss_periodicLocation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_PeriodicLocation }, + { &hf_gsm_ss_areaEventReporting, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_AreaEventReporting }, + { &hf_gsm_ss_motionEventReporting, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_MotionEventReporting }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_PeriodicTriggeredInvokeArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_PeriodicTriggeredInvokeArg_sequence, hf_index, ett_gsm_ss_LCS_PeriodicTriggeredInvokeArg); + + return offset; +} + + +static const ber_sequence_t gsm_ss_LCS_PeriodicTriggeredInvokeRes_sequence[] = { + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_LCS_PeriodicTriggeredInvokeRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_LCS_PeriodicTriggeredInvokeRes_sequence, hf_index, ett_gsm_ss_LCS_PeriodicTriggeredInvokeRes); + + return offset; +} + + +/* --- Module SS-Operations --- --- --- */ + + +/* --- Module EricssonMAP --- --- --- */ + + + +static int +dissect_gsm_map_ericsson_T_locationInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + tvbuff_t *parameter_tvb; + proto_tree *subtree; + guint8 rat; + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (parameter_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ericsson_locationInformation); + rat = tvb_get_guint8(parameter_tvb, 0); + proto_tree_add_uint(subtree, hf_gsm_map_ericsson_locationInformation_rat, parameter_tvb, 0, 1, rat); + switch (rat) { + case 0: + /* GSM */ + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_lac, parameter_tvb, 1, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_ci, parameter_tvb, 3, 2, ENC_BIG_ENDIAN); + break; + case 1: + /* UMTS */ + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_lac, parameter_tvb, 1, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_sac, parameter_tvb, 3, 2, ENC_BIG_ENDIAN); + break; + default: + break; + } + } + + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_EnhancedCheckIMEI_Arg_sequence[] = { + { &hf_gsm_map_ericsson_imei, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMEI }, + { &hf_gsm_map_ericsson_requestedEquipmentInfo, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RequestedEquipmentInfo }, + { &hf_gsm_map_ericsson_imsi, BER_CLASS_PRI, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_map_ericsson_locationInformation, BER_CLASS_PRI, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_T_locationInformation }, + { &hf_gsm_map_ericsson_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_EnhancedCheckIMEI_Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_EnhancedCheckIMEI_Arg_sequence, hf_index, ett_gsm_map_ericsson_EnhancedCheckIMEI_Arg); + + return offset; +} + + + +static int +dissect_gsm_map_ericsson_PrivateFeatureCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gsm_map_ericsson_SubscriptionType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SubscriptionTypeInfo_sequence[] = { + { &hf_gsm_map_ericsson_subscriptionType, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_SubscriptionType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_SubscriptionTypeInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SubscriptionTypeInfo_sequence, hf_index, ett_gsm_map_ericsson_SubscriptionTypeInfo); + + return offset; +} + + + +static int +dissect_gsm_map_ericsson_INCategoryKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_OickInfo_sequence[] = { + { &hf_gsm_map_ericsson_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_SS_Status }, + { &hf_gsm_map_ericsson_inCategoryKey, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_INCategoryKey }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_OickInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_OickInfo_sequence, hf_index, ett_gsm_map_ericsson_OickInfo); + + return offset; +} + + +static const value_string gsm_map_ericsson_PrivateFeatureData_vals[] = { + { 3, "subscriptionTypeInfo" }, + { 7, "oickInfo" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ericsson_PrivateFeatureData_choice[] = { + { 3, &hf_gsm_map_ericsson_subscriptionTypeInfo, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_SubscriptionTypeInfo }, + { 7, &hf_gsm_map_ericsson_oickInfo, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_OickInfo }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_PrivateFeatureData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ericsson_PrivateFeatureData_choice, hf_index, ett_gsm_map_ericsson_PrivateFeatureData, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_IsdArgData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureCode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { &hf_gsm_map_ericsson_privateFeatureData, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ericsson_PrivateFeatureData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_IsdArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_IsdArgData_sequence, hf_index, ett_gsm_map_ericsson_IsdArgData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_IsdArgType_sequence_of[1] = { + { &hf_gsm_map_ericsson_IsdArgType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_IsdArgData }, +}; + +static int +dissect_gsm_map_ericsson_IsdArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_IsdArgType_sequence_of, hf_index, ett_gsm_map_ericsson_IsdArgType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_IsdResData_sequence[] = { + { &hf_gsm_map_ericsson_supportedPrivateFeature, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_IsdResData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_IsdResData_sequence, hf_index, ett_gsm_map_ericsson_IsdResData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_IsdResType_sequence_of[1] = { + { &hf_gsm_map_ericsson_IsdResType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_IsdResData }, +}; + +static int +dissect_gsm_map_ericsson_IsdResType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_IsdResType_sequence_of, hf_index, ett_gsm_map_ericsson_IsdResType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_DsdArgData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureWithdraw, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_DsdArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_DsdArgData_sequence, hf_index, ett_gsm_map_ericsson_DsdArgData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_DsdArgType_sequence_of[1] = { + { &hf_gsm_map_ericsson_DsdArgType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_DsdArgData }, +}; + +static int +dissect_gsm_map_ericsson_DsdArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_DsdArgType_sequence_of, hf_index, ett_gsm_map_ericsson_DsdArgType); + + return offset; +} + + +static const value_string gsm_map_ericsson_ExtraProtocolId_vals[] = { + { 1, "q763" }, + { 0, NULL } +}; + + +static int +dissect_gsm_map_ericsson_ExtraProtocolId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_ExtraSignalInfo_U_sequence[] = { + { &hf_gsm_map_ericsson_protocolId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_ExtraProtocolId }, + { &hf_gsm_map_ericsson_signalInfo, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_ExtraSignalInfo_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_ExtraSignalInfo_U_sequence, hf_index, ett_gsm_map_ericsson_ExtraSignalInfo_U); + + return offset; +} + + + +static int +dissect_gsm_map_ericsson_ExtraSignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 1, TRUE, dissect_gsm_map_ericsson_ExtraSignalInfo_U); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SriArgData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureCode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { &hf_gsm_map_ericsson_extraNetworkInfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_ExtraSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_SriArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SriArgData_sequence, hf_index, ett_gsm_map_ericsson_SriArgData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SRIArgType_sequence_of[1] = { + { &hf_gsm_map_ericsson_SRIArgType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_SriArgData }, +}; + +static int +dissect_gsm_map_ericsson_SRIArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SRIArgType_sequence_of, hf_index, ett_gsm_map_ericsson_SRIArgType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SriResData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureCode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { &hf_gsm_map_ericsson_inCategoryKey, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_INCategoryKey }, + { &hf_gsm_map_ericsson_subscriptionType, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_SubscriptionType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_SriResData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SriResData_sequence, hf_index, ett_gsm_map_ericsson_SriResData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SRIResType_sequence_of[1] = { + { &hf_gsm_map_ericsson_SRIResType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_SriResData }, +}; + +static int +dissect_gsm_map_ericsson_SRIResType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SRIResType_sequence_of, hf_index, ett_gsm_map_ericsson_SRIResType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_PrnArgData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureCode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { &hf_gsm_map_ericsson_extraNetworkInfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_ExtraSignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_PrnArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_PrnArgData_sequence, hf_index, ett_gsm_map_ericsson_PrnArgData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_PrnArgType_sequence_of[1] = { + { &hf_gsm_map_ericsson_PrnArgType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_PrnArgData }, +}; + +static int +dissect_gsm_map_ericsson_PrnArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_PrnArgType_sequence_of, hf_index, ett_gsm_map_ericsson_PrnArgType); + + return offset; +} + + +static const value_string gsm_map_ericsson_PrivateFeatureUlArgData_vals[] = { + { 3, "adc" }, + { 0, NULL } +}; + +static const ber_choice_t gsm_map_ericsson_PrivateFeatureUlArgData_choice[] = { + { 3, &hf_gsm_map_ericsson_adc, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_PrivateFeatureUlArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ericsson_PrivateFeatureUlArgData_choice, hf_index, ett_gsm_map_ericsson_PrivateFeatureUlArgData, + NULL); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_UlArgData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureCode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { &hf_gsm_map_ericsson_privateFeatureUlArgData, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ericsson_PrivateFeatureUlArgData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_UlArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_UlArgData_sequence, hf_index, ett_gsm_map_ericsson_UlArgData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_UlArgType_sequence_of[1] = { + { &hf_gsm_map_ericsson_UlArgType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_UlArgData }, +}; + +static int +dissect_gsm_map_ericsson_UlArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_UlArgType_sequence_of, hf_index, ett_gsm_map_ericsson_UlArgType); + + return offset; +} + + + +static int +dissect_gsm_map_ericsson_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_RdArgType_sequence[] = { + { &hf_gsm_map_ericsson_toBeDecidedOne, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_RdArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_RdArgType_sequence, hf_index, ett_gsm_map_ericsson_RdArgType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SaiArgType_sequence[] = { + { &hf_gsm_map_ericsson_msisdn, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_NULL }, + { &hf_gsm_map_ericsson_noAuthenVectorsRequested, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_SaiArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SaiArgType_sequence, hf_index, ett_gsm_map_ericsson_SaiArgType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_SaiResType_sequence[] = { + { &hf_gsm_map_ericsson_msIsdn, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_SaiResType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_SaiResType_sequence, hf_index, ett_gsm_map_ericsson_SaiResType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_RequestedInfoType_sequence[] = { + { &hf_gsm_map_ericsson_sgsnNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_RequestedInfoType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_RequestedInfoType_sequence, hf_index, ett_gsm_map_ericsson_RequestedInfoType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_AtiArgType_sequence[] = { + { &hf_gsm_map_ericsson_requestedInfoType, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_RequestedInfoType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_AtiArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_AtiArgType_sequence, hf_index, ett_gsm_map_ericsson_AtiArgType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_AtiResType_sequence[] = { + { &hf_gsm_map_ericsson_toBeDecided, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_AtiResType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_AtiResType_sequence, hf_index, ett_gsm_map_ericsson_AtiResType); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_AtiArgData_sequence[] = { + { &hf_gsm_map_ericsson_privateFeatureCode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrivateFeatureCode }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_AtiArgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_AtiArgData_sequence, hf_index, ett_gsm_map_ericsson_AtiArgData); + + return offset; +} + + +static const ber_sequence_t gsm_map_ericsson_ExtAtiArgType_sequence_of[1] = { + { &hf_gsm_map_ericsson_ExtAtiArgType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ericsson_AtiArgData }, +}; + +static int +dissect_gsm_map_ericsson_ExtAtiArgType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + gsm_map_ericsson_ExtAtiArgType_sequence_of, hf_index, ett_gsm_map_ericsson_ExtAtiArgType); + + return offset; +} + + +static const ber_choice_t gsm_map_ericsson_ExtensionType_choice[] = { + { 1, &hf_gsm_map_ericsson_isdArgType, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_IsdArgType }, + { 2, &hf_gsm_map_ericsson_isdResType, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_IsdResType }, + { 3, &hf_gsm_map_ericsson_dsdArgType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_DsdArgType }, + { 4, &hf_gsm_map_ericsson_sriArgType, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_SRIArgType }, + { 5, &hf_gsm_map_ericsson_sriResType, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_SRIResType }, + { 6, &hf_gsm_map_ericsson_prnArgType, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_PrnArgType }, + { 7, &hf_gsm_map_ericsson_ulArgType, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_UlArgType }, + { 8, &hf_gsm_map_ericsson_rdArgType, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_RdArgType }, + { 9, &hf_gsm_map_ericsson_saiArgType, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_SaiArgType }, + { 10, &hf_gsm_map_ericsson_saiResType, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_SaiResType }, + { 11, &hf_gsm_map_ericsson_atiArgType, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_AtiArgType }, + { 12, &hf_gsm_map_ericsson_atiResType, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_AtiResType }, + { 13, &hf_gsm_map_ericsson_extAtiArgType, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gsm_map_ericsson_ExtAtiArgType }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_ericsson_ExtensionType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + gsm_map_ericsson_ExtensionType_choice, hf_index, ett_gsm_map_ericsson_ExtensionType, + NULL); + + return offset; +} + + +/* --- Module NokiaMAP-Extensions --- --- --- */ + + + +static int +dissect_NokiaMAP_Extensions_RoutingCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ActiveSS_List(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ExtRoutingCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_MAPserviceList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_MAPserviceCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_VersionInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_MKeyVer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_MmTdpName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +int +dissect_NokiaMAP_Extensions_ServiceKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_LocupType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_MKey_sequence[] = { + { &hf_NokiaMAP_Extensions_mKeyVer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MKeyVer }, + { &hf_NokiaMAP_Extensions_mmScfAddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_NokiaMAP_Extensions_mmTdpName, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MmTdpName }, + { &hf_NokiaMAP_Extensions_serviceKey, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ServiceKey }, + { &hf_NokiaMAP_Extensions_locupType, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_LocupType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_MKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_MKey_sequence, hf_index, ett_NokiaMAP_Extensions_MKey); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_SmsTdpName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_SMSKey_sequence[] = { + { &hf_NokiaMAP_Extensions_mmSCPAddress, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_NokiaMAP_Extensions_smsTdpName, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_SmsTdpName }, + { &hf_NokiaMAP_Extensions_serviceKey, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ServiceKey }, + { &hf_NokiaMAP_Extensions_mmsFlag, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_SMSKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_SMSKey_sequence, hf_index, ett_NokiaMAP_Extensions_SMSKey); + + return offset; +} + + +static const value_string NokiaMAP_Extensions_INKey_vals[] = { + { 2, "mobile-IN-key" }, + { 3, "sms-IN-key" }, + { 0, NULL } +}; + +static const ber_choice_t NokiaMAP_Extensions_INKey_choice[] = { + { 2, &hf_NokiaMAP_Extensions_mobile_IN_key, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MKey }, + { 3, &hf_NokiaMAP_Extensions_sms_IN_key, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_SMSKey }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_INKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + NokiaMAP_Extensions_INKey_choice, hf_index, ett_NokiaMAP_Extensions_INKey, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_TimeLimit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ActionType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_FraudMaxCount(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_FraudData_sequence[] = { + { &hf_NokiaMAP_Extensions_time, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_TimeLimit }, + { &hf_NokiaMAP_Extensions_timeAction, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ActionType }, + { &hf_NokiaMAP_Extensions_maxCount, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_FraudMaxCount }, + { &hf_NokiaMAP_Extensions_maxCountAction, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ActionType }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_FraudData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_FraudData_sequence, hf_index, ett_NokiaMAP_Extensions_FraudData); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_FraudInfo_sequence[] = { + { &hf_NokiaMAP_Extensions_moc, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_FraudData }, + { &hf_NokiaMAP_Extensions_cf, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_FraudData }, + { &hf_NokiaMAP_Extensions_ct, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_FraudData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_FraudInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_FraudInfo_sequence, hf_index, ett_NokiaMAP_Extensions_FraudInfo); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ServiceWithInfo_sequence[] = { + { &hf_NokiaMAP_Extensions_serviceCode, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MAPserviceCode }, + { &hf_NokiaMAP_Extensions_versionInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_VersionInfo }, + { &hf_NokiaMAP_Extensions_in_key, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_NokiaMAP_Extensions_INKey }, + { &hf_NokiaMAP_Extensions_fraudInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_FraudInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_ServiceWithInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ServiceWithInfo_sequence, hf_index, ett_NokiaMAP_Extensions_ServiceWithInfo); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ServiceListWithInfo_sequence_of[1] = { + { &hf_NokiaMAP_Extensions_ServiceListWithInfo_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_ServiceWithInfo }, +}; + +static int +dissect_NokiaMAP_Extensions_ServiceListWithInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ServiceListWithInfo_sequence_of, hf_index, ett_NokiaMAP_Extensions_ServiceListWithInfo); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_IsdArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_alsLineIndicator, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_routingCategory, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_RoutingCategory }, + { &hf_NokiaMAP_Extensions_serviceList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MAPserviceList }, + { &hf_NokiaMAP_Extensions_serv_info_list, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ServiceListWithInfo }, + { &hf_NokiaMAP_Extensions_extRoutingCategory, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ExtRoutingCategory }, + { &hf_NokiaMAP_Extensions_ownMSISDN, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_IsdArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_IsdArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_IsdArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_IsdArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_IsdArgExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_DsdArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_alsLineIndicator, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_serviceList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MAPserviceList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_DsdArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_DsdArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_DsdArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_DsdArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_DsdArgExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_UlResExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_mwd_Set, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_UlResExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_UlResExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_UlResExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_UlResExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_UlResExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_InTriggerKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_PnpIndex(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_CallRedirectionIndex(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ChargingArea(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ChargingAreaList_sequence_of[1] = { + { &hf_NokiaMAP_Extensions_ChargingAreaList_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_ChargingArea }, +}; + +static int +dissect_NokiaMAP_Extensions_ChargingAreaList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ChargingAreaList_sequence_of, hf_index, ett_NokiaMAP_Extensions_ChargingAreaList); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_RegionalChargingData_sequence[] = { + { &hf_NokiaMAP_Extensions_chargingAreaList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ChargingAreaList }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_RegionalChargingData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_RegionalChargingData_sequence, hf_index, ett_NokiaMAP_Extensions_RegionalChargingData); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_SS_DataExtension_U_sequence[] = { + { &hf_NokiaMAP_Extensions_inTriggerKey, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_InTriggerKey }, + { &hf_NokiaMAP_Extensions_pnpIndex, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_PnpIndex }, + { &hf_NokiaMAP_Extensions_callRedirectionIndex, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CallRedirectionIndex }, + { &hf_NokiaMAP_Extensions_regionalChargingData, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_RegionalChargingData }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_SS_DataExtension_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_SS_DataExtension_U_sequence, hf_index, ett_NokiaMAP_Extensions_SS_DataExtension_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_SS_DataExtension(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_SS_DataExtension_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_CallingCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_InternalServiceIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_SriExtension_U_sequence[] = { + { &hf_NokiaMAP_Extensions_callForwardingOverride, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_in_Capability, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_callingCategory, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CallingCategory }, + { &hf_NokiaMAP_Extensions_internalServiceIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_InternalServiceIndicator }, + { &hf_NokiaMAP_Extensions_srbtSupportIndicator, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_gmscSupportIndicator, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_SriExtension_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_SriExtension_U_sequence, hf_index, ett_NokiaMAP_Extensions_SriExtension_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_SriExtension(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_SriExtension_U); + + return offset; +} + + +static const value_string NokiaMAP_Extensions_ExtraProtocolId_vals[] = { + { 1, "q763" }, + { 0, NULL } +}; + + +static int +dissect_NokiaMAP_Extensions_ExtraProtocolId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ExtraSignalInfo_U_sequence[] = { + { &hf_NokiaMAP_Extensions_protocolId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_ExtraProtocolId }, + { &hf_NokiaMAP_Extensions_signalInfo, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_ExtraSignalInfo_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ExtraSignalInfo_U_sequence, hf_index, ett_NokiaMAP_Extensions_ExtraSignalInfo_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ExtraSignalInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 1, TRUE, dissect_NokiaMAP_Extensions_ExtraSignalInfo_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_CUG_CallInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_Nokia_CUG_Data_sequence[] = { + { &hf_NokiaMAP_Extensions_cug_Interlock, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Interlock }, + { &hf_NokiaMAP_Extensions_cug_OutgoingAccess, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_BOOLEAN }, + { &hf_NokiaMAP_Extensions_cug_CallInfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CUG_CallInfo }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_Nokia_CUG_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_Nokia_CUG_Data_sequence, hf_index, ett_NokiaMAP_Extensions_Nokia_CUG_Data); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_LeaId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_OlcmTraceReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_OlcmInfo_sequence[] = { + { &hf_NokiaMAP_Extensions_traceReference, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference }, + { &hf_NokiaMAP_Extensions_traceType, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType }, + { &hf_NokiaMAP_Extensions_leaId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_LeaId }, + { &hf_NokiaMAP_Extensions_olcmTraceReference, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmTraceReference }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_OlcmInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_OlcmInfo_sequence, hf_index, ett_NokiaMAP_Extensions_OlcmInfo); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_OlcmInfoTable_sequence_of[1] = { + { &hf_NokiaMAP_Extensions_OlcmInfoTable_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_OlcmInfo }, +}; + +static int +dissect_NokiaMAP_Extensions_OlcmInfoTable(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_OlcmInfoTable_sequence_of, hf_index, ett_NokiaMAP_Extensions_OlcmInfoTable); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_NoAnswerTimer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_MemberList_sequence_of[1] = { + { &hf_NokiaMAP_Extensions_MemberList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, +}; + +static int +dissect_NokiaMAP_Extensions_MemberList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_MemberList_sequence_of, hf_index, ett_NokiaMAP_Extensions_MemberList); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_AlertingMethod(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_UserType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_RgData_sequence[] = { + { &hf_NokiaMAP_Extensions_noAnswerTimer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NoAnswerTimer }, + { &hf_NokiaMAP_Extensions_memberList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MemberList }, + { &hf_NokiaMAP_Extensions_alertingMethod, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_AlertingMethod }, + { &hf_NokiaMAP_Extensions_userType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_UserType }, + { &hf_NokiaMAP_Extensions_divertedToNbr, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_NokiaMAP_Extensions_memberOfSuppression, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_ringbacktone, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_RgData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_RgData_sequence, hf_index, ett_NokiaMAP_Extensions_RgData); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_SriResExtension_U_sequence[] = { + { &hf_NokiaMAP_Extensions_inTriggerKey, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_InTriggerKey }, + { &hf_NokiaMAP_Extensions_vlrNumber, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_NokiaMAP_Extensions_activeSs, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ActiveSS_List }, + { &hf_NokiaMAP_Extensions_traceReference, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference }, + { &hf_NokiaMAP_Extensions_traceType, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType }, + { &hf_NokiaMAP_Extensions_omc_Id, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_NokiaMAP_Extensions_hotBilling, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_BOOLEAN }, + { &hf_NokiaMAP_Extensions_cfoIsDone, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_BOOLEAN }, + { &hf_NokiaMAP_Extensions_cfInCug, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_BOOLEAN }, + { &hf_NokiaMAP_Extensions_basicService, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_BasicServiceCode }, + { &hf_NokiaMAP_Extensions_category, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Category }, + { &hf_NokiaMAP_Extensions_routingCategory, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_RoutingCategory }, + { &hf_NokiaMAP_Extensions_pnpIndex, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_PnpIndex }, + { &hf_NokiaMAP_Extensions_nokia_CUG, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_Nokia_CUG_Data }, + { &hf_NokiaMAP_Extensions_noBarrings, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_odb_Data, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data }, + { &hf_NokiaMAP_Extensions_fraudData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_FraudData }, + { &hf_NokiaMAP_Extensions_extRoutingCategory, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ExtRoutingCategory }, + { &hf_NokiaMAP_Extensions_leaId, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_LeaId }, + { &hf_NokiaMAP_Extensions_olcmInfoTable, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmInfoTable }, + { &hf_NokiaMAP_Extensions_callingCategory, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CallingCategory }, + { &hf_NokiaMAP_Extensions_commonMSISDN, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_NokiaMAP_Extensions_rgData, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_RgData }, + { &hf_NokiaMAP_Extensions_olcmTraceReference, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmTraceReference }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_SriResExtension_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_SriResExtension_U_sequence, hf_index, ett_NokiaMAP_Extensions_SriResExtension_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_SriResExtension(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_SriResExtension_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_OCTET_STRING_SIZE_1(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_CanLocArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_termination, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OCTET_STRING_SIZE_1 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_CanLocArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_CanLocArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_CanLocArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_CanLocArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_CanLocArgExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ATMargExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_traceReference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference }, + { &hf_NokiaMAP_Extensions_traceType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType }, + { &hf_NokiaMAP_Extensions_leaId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_LeaId }, + { &hf_NokiaMAP_Extensions_olcmInfoTable, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmInfoTable }, + { &hf_NokiaMAP_Extensions_olcmTraceReference, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmTraceReference }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_ATMargExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ATMargExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_ATMargExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ATMargExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_ATMargExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ATMresExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_olcmActive, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_ATMresExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ATMresExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_ATMresExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ATMresExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_ATMresExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_DTMargExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_traceType, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType }, + { &hf_NokiaMAP_Extensions_leaId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_LeaId }, + { &hf_NokiaMAP_Extensions_olcmTraceReference, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmTraceReference }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_DTMargExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_DTMargExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_DTMargExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_DTMargExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_DTMargExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_NumberPorted_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_NumberPorted(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 20, TRUE, dissect_NokiaMAP_Extensions_NumberPorted_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_MapOptFields(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_CodecExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_CodecListExt_sequence_of[1] = { + { &hf_NokiaMAP_Extensions_CodecListExt_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_CodecExt }, +}; + +static int +dissect_NokiaMAP_Extensions_CodecListExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_CodecListExt_sequence_of, hf_index, ett_NokiaMAP_Extensions_CodecListExt); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_Modes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_SelectedCodec_sequence[] = { + { &hf_NokiaMAP_Extensions_codec, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CodecExt }, + { &hf_NokiaMAP_Extensions_modes, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_Modes }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_SelectedCodec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_SelectedCodec_sequence, hf_index, ett_NokiaMAP_Extensions_SelectedCodec); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_OCTET_STRING_SIZE_5_17(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_IPPortNb(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_HO_Ext_U_sequence[] = { + { &hf_NokiaMAP_Extensions_map_Opt, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_MapOptFields }, + { &hf_NokiaMAP_Extensions_codec_List, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CodecListExt }, + { &hf_NokiaMAP_Extensions_selected_Codec, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_SelectedCodec }, + { &hf_NokiaMAP_Extensions_uma_access, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_uma_ip_address, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OCTET_STRING_SIZE_5_17 }, + { &hf_NokiaMAP_Extensions_uma_ip_port_nb, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_IPPortNb }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_HO_Ext_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_HO_Ext_U_sequence, hf_index, ett_NokiaMAP_Extensions_HO_Ext_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_HO_Ext(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_HO_Ext_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_AbsentSubscriberExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_olcmInfoTable, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmInfoTable }, + { &hf_NokiaMAP_Extensions_imsi, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_AbsentSubscriberExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_AbsentSubscriberExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_AbsentSubscriberExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_AbsentSubscriberExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_AbsentSubscriberExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ErrOlcmInfoTableExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_olcmInfoTable, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OlcmInfoTable }, + { &hf_NokiaMAP_Extensions_imsi, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ErrOlcmInfoTableExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ErrOlcmInfoTableExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_RoutingCategoryExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_routingCategory, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_RoutingCategory }, + { &hf_NokiaMAP_Extensions_extRoutingCategory, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_ExtRoutingCategory }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_RoutingCategoryExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_RoutingCategoryExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_RoutingCategoryExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_RoutingCategoryExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_RoutingCategoryExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_CfuSMSCounter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_SriForSMArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_cfuSMSCounter, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CfuSMSCounter }, + { &hf_NokiaMAP_Extensions_cfusmcfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { &hf_NokiaMAP_Extensions_memberInterrogate, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_SriForSMArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_SriForSMArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_SriForSMArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_SriForSMArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_SriForSMArgExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_ReportSMDelStatArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_cfuSMSCounter, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_CfuSMSCounter }, + { &hf_NokiaMAP_Extensions_cfusmcfo, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_ReportSMDelStatArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_ReportSMDelStatArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_ReportSMDelStatArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_ReportSMDelStatArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_ReportSMDelStatArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_LocationAreaCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_locationAreaCode, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_LocationAreaCode }, + { &hf_NokiaMAP_Extensions_cellId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_MO_ForwardSM_ArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_UdlArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_lai, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength }, + { &hf_NokiaMAP_Extensions_sendImmResp, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_NULL }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_UdlArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_UdlArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_UdlArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_UdlArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_UdlArgExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_RoamNotAllowedExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_rejectCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_NokiaMAP_Extensions_OCTET_STRING_SIZE_1 }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_RoamNotAllowedExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_RoamNotAllowedExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_RoamNotAllowedExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_RoamNotAllowedExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_RoamNotAllowedExt_U); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_AnyTimeModArgExt_U_sequence[] = { + { &hf_NokiaMAP_Extensions_senderMSISDN, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_AnyTimeModArgExt_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_AnyTimeModArgExt_U_sequence, hf_index, ett_NokiaMAP_Extensions_AnyTimeModArgExt_U); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_AnyTimeModArgExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, + hf_index, BER_CLASS_PRI, 0, TRUE, dissect_NokiaMAP_Extensions_AnyTimeModArgExt_U); + + return offset; +} + + +static const value_string NokiaMAP_Extensions_Access_vals[] = { + { 1, "gsm" }, + { 2, "geran" }, + { 3, "utran" }, + { 0, NULL } +}; + + +static int +dissect_NokiaMAP_Extensions_Access(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_NokiaMAP_Extensions_Version(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_AccessTypeExt_sequence[] = { + { &hf_NokiaMAP_Extensions_access, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_Access }, + { &hf_NokiaMAP_Extensions_version, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_Version }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_NokiaMAP_Extensions_AccessTypeExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_AccessTypeExt_sequence, hf_index, ett_NokiaMAP_Extensions_AccessTypeExt); + + return offset; +} + + +static const ber_sequence_t NokiaMAP_Extensions_AccessSubscriptionListExt_sequence_of[1] = { + { &hf_NokiaMAP_Extensions_AccessSubscriptionListExt_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_NokiaMAP_Extensions_Access }, +}; + +static int +dissect_NokiaMAP_Extensions_AccessSubscriptionListExt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_AccessSubscriptionListExt_sequence_of, hf_index, ett_NokiaMAP_Extensions_AccessSubscriptionListExt); + + return offset; +} + + +static int * const NokiaMAP_Extensions_AllowedServiceData_bits[] = { + &hf_NokiaMAP_Extensions_AllowedServiceData_amr_wb_allowed, + NULL +}; + +static int +dissect_NokiaMAP_Extensions_AllowedServiceData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NokiaMAP_Extensions_AllowedServiceData_bits, 1, hf_index, ett_NokiaMAP_Extensions_AllowedServiceData, + NULL); + + return offset; +} + + +/* Specific translation for MAP V3 */ +const value_string gsm_map_V1V2_opr_code_strings[] = { + { 44, "forwardSM" }, + { 45, "sendRoutingInfoForSM" }, + { 46, "forwardSM" }, + { 0, NULL } +}; +/* Generic translation for MAP operation */ +const value_string gsm_map_opr_code_strings[] = { + +/* --- Module Remote-Operations-Information-Objects --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MobileDomainDefinitions --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-ApplicationContexts --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-SS-Code --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-BS-Code --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-TS-Code --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-CommonDataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-SS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-ER-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-SM-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-OM-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-MS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-CH-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-GR-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-DialogueInformation --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-LocationServiceOperations --- --- --- */ + + { 85, "sendRoutingInfoForLCS" }, + { 83, "provideSubscriberLocation" }, + { 86, "subscriberLocationReport" }, + +/* --- Module MAP-Group-Call-Operations --- --- --- */ + + { 39, "prepareGroupCall" }, + { 40, "sendGroupCallEndSignal" }, + { 41, "processGroupCallSignalling" }, + { 42, "forwardGroupCallSignalling" }, + { 84, "sendGroupCallInfo" }, + +/* --- Module MAP-ShortMessageServiceOperations --- --- --- */ + + { 45, "sendRoutingInfoForSM" }, + { 46, "mo_ForwardSM" }, + { 44, "mt_ForwardSM" }, + { 47, "reportSM_DeliveryStatus" }, + { 64, "alertServiceCentre" }, + { 63, "informServiceCentre" }, + { 66, "readyForSM" }, + { 21, "mt_ForwardSM_VGCS" }, + +/* --- Module MAP-SupplementaryServiceOperations --- --- --- */ + + { 10, "registerSS" }, + { 11, "eraseSS" }, + { 12, "activateSS" }, + { 13, "deactivateSS" }, + { 14, "interrogateSS" }, + { 59, "processUnstructuredSS_Request" }, + { 60, "unstructuredSS_Request" }, + { 61, "unstructuredSS_Notify" }, + { 17, "registerPassword" }, + { 18, "getPassword" }, + { 72, "ss_InvocationNotification" }, + { 76, "registerCC_Entry" }, + { 77, "eraseCC_Entry" }, + +/* --- Module MAP-CallHandlingOperations --- --- --- */ + + { 22, "sendRoutingInfo" }, + { 4, "provideRoamingNumber" }, + { 6, "resumeCallHandling" }, + { 73, "setReportingState" }, + { 74, "statusReport" }, + { 75, "remoteUserFree" }, + { 87, "ist_Alert" }, + { 88, "ist_Command" }, + { 20, "releaseResources" }, + +/* --- Module MAP-OperationAndMaintenanceOperations --- --- --- */ + + { 50, "activateTraceMode" }, + { 51, "deactivateTraceMode" }, + { 58, "sendIMSI" }, + +/* --- Module MAP-MobileServiceOperations --- --- --- */ + + { 2, "updateLocation" }, + { 3, "cancelLocation" }, + { 67, "purgeMS" }, + { 55, "sendIdentification" }, + { 23, "updateGprsLocation" }, + { 70, "provideSubscriberInfo" }, + { 71, "anyTimeInterrogation" }, + { 62, "anyTimeSubscriptionInterrogation" }, + { 65, "anyTimeModification" }, + { 5, "noteSubscriberDataModified" }, + { 68, "prepareHandover" }, + { 29, "sendEndSignal" }, + { 33, "processAccessSignalling" }, + { 34, "forwardAccessSignalling" }, + { 69, "prepareSubsequentHandover" }, + { 56, "sendAuthenticationInfo" }, + { 15, "authenticationFailureReport" }, + { 43, "checkIMEI" }, + { 7, "insertSubscriberData" }, + { 8, "deleteSubscriberData" }, + { 37, "reset" }, + { 38, "forwardCheckSS_Indication" }, + { 57, "restoreData" }, + { 24, "sendRoutingInfoForGprs" }, + { 25, "failureReport" }, + { 26, "noteMsPresentForGprs" }, + { 89, "noteMM_Event" }, + { 53, "updateVcsgLocation" }, + { 36, "cancelVcsgLocation" }, + +/* --- Module MAP-Errors --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-Protocol --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module DummyMAP --- --- --- */ + + { 9, "sendParameters" }, + +/* --- Module SS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module SS-Operations --- --- --- */ + + { 19, "processUnstructuredSS_Data" }, + { 16, "notifySS" }, + { 125, "forwardChargeAdvice" }, + { 120, "forwardCUG_Info" }, + { 124, "buildMPTY" }, + { 123, "holdMPTY" }, + { 122, "retrieveMPTY" }, + { 121, "splitMPTY" }, + { 126, "explicitCT" }, + { 119, "accessRegisterCCEntry" }, + { 117, "callDeflection" }, + { 118, "userUserService" }, + { 116, "lcs_LocationNotification" }, + { 115, "lcs_MOLR" }, + { 114, "lcs_AreaEventRequest" }, + { 113, "lcs_AreaEventReport" }, + { 112, "lcs_AreaEventCancellation" }, + { 111, "lcs_PeriodicLocationRequest" }, + { 110, "lcs_LocationUpdate" }, + { 109, "lcs_PeriodicLocationCancellation" }, + { 108, "lcs_PeriodicTriggeredInvoke" }, + +/* --- Module EricssonMAP --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module NokiaMAP-Extensions --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + { 0, NULL } +}; + +#if 0 +static const value_string gsm_map_err_code_string_vals[] = { + +/* --- Module Remote-Operations-Information-Objects --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MobileDomainDefinitions --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-ApplicationContexts --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-SS-Code --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-BS-Code --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-TS-Code --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-CommonDataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-SS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-ER-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-SM-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-OM-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-MS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-CH-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-GR-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-DialogueInformation --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-LocationServiceOperations --- --- --- */ + + { 85, "sendRoutingInfoForLCS" }, + { 83, "provideSubscriberLocation" }, + { 86, "subscriberLocationReport" }, + +/* --- Module MAP-Group-Call-Operations --- --- --- */ + + { 39, "prepareGroupCall" }, + { 40, "sendGroupCallEndSignal" }, + { 41, "processGroupCallSignalling" }, + { 42, "forwardGroupCallSignalling" }, + { 84, "sendGroupCallInfo" }, + +/* --- Module MAP-ShortMessageServiceOperations --- --- --- */ + + { 45, "sendRoutingInfoForSM" }, + { 46, "mo_ForwardSM" }, + { 44, "mt_ForwardSM" }, + { 47, "reportSM_DeliveryStatus" }, + { 64, "alertServiceCentre" }, + { 63, "informServiceCentre" }, + { 66, "readyForSM" }, + { 21, "mt_ForwardSM_VGCS" }, + +/* --- Module MAP-SupplementaryServiceOperations --- --- --- */ + + { 10, "registerSS" }, + { 11, "eraseSS" }, + { 12, "activateSS" }, + { 13, "deactivateSS" }, + { 14, "interrogateSS" }, + { 59, "processUnstructuredSS_Request" }, + { 60, "unstructuredSS_Request" }, + { 61, "unstructuredSS_Notify" }, + { 17, "registerPassword" }, + { 18, "getPassword" }, + { 72, "ss_InvocationNotification" }, + { 76, "registerCC_Entry" }, + { 77, "eraseCC_Entry" }, + +/* --- Module MAP-CallHandlingOperations --- --- --- */ + + { 22, "sendRoutingInfo" }, + { 4, "provideRoamingNumber" }, + { 6, "resumeCallHandling" }, + { 73, "setReportingState" }, + { 74, "statusReport" }, + { 75, "remoteUserFree" }, + { 87, "ist_Alert" }, + { 88, "ist_Command" }, + { 20, "releaseResources" }, + +/* --- Module MAP-OperationAndMaintenanceOperations --- --- --- */ + + { 50, "activateTraceMode" }, + { 51, "deactivateTraceMode" }, + { 58, "sendIMSI" }, + +/* --- Module MAP-MobileServiceOperations --- --- --- */ + + { 2, "updateLocation" }, + { 3, "cancelLocation" }, + { 67, "purgeMS" }, + { 55, "sendIdentification" }, + { 23, "updateGprsLocation" }, + { 70, "provideSubscriberInfo" }, + { 71, "anyTimeInterrogation" }, + { 62, "anyTimeSubscriptionInterrogation" }, + { 65, "anyTimeModification" }, + { 5, "noteSubscriberDataModified" }, + { 68, "prepareHandover" }, + { 29, "sendEndSignal" }, + { 33, "processAccessSignalling" }, + { 34, "forwardAccessSignalling" }, + { 69, "prepareSubsequentHandover" }, + { 56, "sendAuthenticationInfo" }, + { 15, "authenticationFailureReport" }, + { 43, "checkIMEI" }, + { 7, "insertSubscriberData" }, + { 8, "deleteSubscriberData" }, + { 37, "reset" }, + { 38, "forwardCheckSS_Indication" }, + { 57, "restoreData" }, + { 24, "sendRoutingInfoForGprs" }, + { 25, "failureReport" }, + { 26, "noteMsPresentForGprs" }, + { 89, "noteMM_Event" }, + { 53, "updateVcsgLocation" }, + { 36, "cancelVcsgLocation" }, + +/* --- Module MAP-Errors --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module MAP-Protocol --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module DummyMAP --- --- --- */ + + { 9, "sendParameters" }, + +/* --- Module SS-DataTypes --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module SS-Operations --- --- --- */ + + { 19, "processUnstructuredSS_Data" }, + { 16, "notifySS" }, + { 125, "forwardChargeAdvice" }, + { 120, "forwardCUG_Info" }, + { 124, "buildMPTY" }, + { 123, "holdMPTY" }, + { 122, "retrieveMPTY" }, + { 121, "splitMPTY" }, + { 126, "explicitCT" }, + { 119, "accessRegisterCCEntry" }, + { 117, "callDeflection" }, + { 118, "userUserService" }, + { 116, "lcs_LocationNotification" }, + { 115, "lcs_MOLR" }, + { 114, "lcs_AreaEventRequest" }, + { 113, "lcs_AreaEventReport" }, + { 112, "lcs_AreaEventCancellation" }, + { 111, "lcs_PeriodicLocationRequest" }, + { 110, "lcs_LocationUpdate" }, + { 109, "lcs_PeriodicLocationCancellation" }, + { 108, "lcs_PeriodicTriggeredInvoke" }, + +/* --- Module EricssonMAP --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + +/* --- Module NokiaMAP-Extensions --- --- --- */ + +/* Unknown or empty loop list OPERATION */ + { 0, NULL } +}; +#endif + + +static const value_string gsm_map_nature_of_number_values[] = { + { 0x00, "unknown" }, + { 0x01, "International Number" }, + { 0x02, "National Significant Number" }, + { 0x03, "Network Specific Number" }, + { 0x04, "Subscriber Number" }, + { 0x05, "Reserved" }, + { 0x06, "Abbreviated Number" }, + { 0x07, "Reserved for extension" }, + { 0, NULL } +}; +static value_string_ext gsm_map_nature_of_number_values_ext = VALUE_STRING_EXT_INIT(gsm_map_nature_of_number_values); + +static const value_string gsm_map_number_plan_values[] = { + { 0x00, "unknown" }, + { 0x01, "ISDN/Telephony Numbering (Rec ITU-T E.164)" }, + { 0x02, "spare" }, + { 0x03, "Data Numbering (ITU-T Rec. X.121)" }, + { 0x04, "Telex Numbering (ITU-T Rec. F.69)" }, + { 0x05, "spare" }, + { 0x06, "Land Mobile Numbering (ITU-T Rec. E.212)" }, + { 0x07, "spare" }, + { 0x08, "National Numbering" }, + { 0x09, "Private Numbering" }, + { 0x0a, "spare" }, + { 0x0b, "spare" }, + { 0x0c, "spare" }, + { 0x0d, "spare" }, + { 0x0e, "spare" }, + { 0x0f, "Reserved for extension" }, + { 0, NULL } +}; +static value_string_ext gsm_map_number_plan_values_ext = VALUE_STRING_EXT_INIT(gsm_map_number_plan_values); + +static const true_false_string gsm_map_Ss_Status_q_bit_values = { + "Quiescent", + "Operative" +}; +static const true_false_string gsm_map_Ss_Status_p_values = { + "Provisioned", + "Not Provisioned" +}; +static const true_false_string gsm_map_Ss_Status_r_values = { + "Registered", + "Not Registered" +}; +static const true_false_string gsm_map_Ss_Status_a_values = { + "Active", + "not Active" +}; + +/* + * Translate the MAP operation code value to a text string + * Take into account the MAP version for ForwardSM + */ +const gchar* gsm_map_opr_code(guint32 val, proto_item *item) { + switch (val) { + case 44: /*mt-forwardSM*/ + /* FALLTHRU */ + case 46: /*mo-forwardSM*/ + if (application_context_version < 3) { + proto_item_set_text(item, "%s (%d)", val_to_str_const(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP opcode"), val); + return val_to_str_const(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP opcode"); + } + /* Else use the default map operation translation */ + /* FALLTHRU */ + default: + return val_to_str_ext_const(val, &gsm_old_GSMMAPOperationLocalvalue_vals_ext, "Unknown GSM-MAP opcode"); + break; + } +} + +/* Prototype for a decoding function */ +typedef int (* dissect_function_t)( bool, + tvbuff_t *, + int , + asn1_ctx_t *, + proto_tree *, + int); + +/* + * Dissect Multiple Choice Message + * This function is used to decode a message, when several encoding may be used. + * For exemple, in the last MAP version, the Cancel Location is defined like this: + * CancelLocationArg ::= [3] IMPLICIT SEQUENCE + * But in the previous MAP version, it was a CHOICE between a SEQUENCE and an IMSI + * As ASN1 encoders (or software) still uses the old encoding, this function allows + * the decoding of both versions. + * Moreover, some optimizations (or bad practice ?) in ASN1 encoder, removes the + * SEQUENCE tag, when only one parameter is present in the SEQUENCE. + * This explain why the function expects 3 parameters: + * - a [3] SEQUENCE corresponding the recent ASN1 MAP encoding + * - a SEQUENCE for old style + * - and a single parameter, for old version or optimizations + * + * The analyze of the first ASN1 tag, indicate what kind of decoding should be used, + * if the decoding function is provided (so not a NULL function) + */ +static int dissect_mc_message(tvbuff_t *tvb, + int offset, + asn1_ctx_t *actx, + proto_tree *tree, + bool implicit_param _U_, dissect_function_t parameter, int hf_index_param _U_, + bool implicit_seq _U_, dissect_function_t sequence, int hf_index_seq _U_, + bool implicit_seq3 _U_, dissect_function_t sequence3, int hf_index_seq3 _U_ ) +{ + guint8 octet; + gint8 bug_class; + bool bug_pc, bug_ind_field; + gint32 bug_tag; + guint32 bug_len; + + octet = tvb_get_guint8(tvb,0); + if ( (octet & 0xf) == 3) { + /* XXX asn2wrs 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, &bug_class, &bug_pc, &bug_tag); + offset = get_ber_length(tvb, offset, &bug_len, &bug_ind_field); + if (sequence3 != NULL) { + offset= (sequence3) (implicit_seq3, tvb, offset, actx, tree, hf_index_seq3); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_gsm_map_unknown_sequence3, tvb, offset, -1); + } + } else if (octet == 0x30) { + if (sequence != NULL) { + offset= (sequence) (implicit_seq, tvb, 0, actx, tree, hf_index_seq); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_gsm_map_unknown_sequence, tvb, offset, -1); + } + } else { + if (parameter != NULL) { + offset= (parameter) (implicit_param, tvb, offset, actx, tree, hf_index_param); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_gsm_map_unknown_parameter, tvb, offset, -1); + } + } + return offset; +} + +static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) { + + switch(opcode){ + case 2: /*updateLocation*/ + offset=dissect_gsm_map_ms_UpdateLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 3: /*cancelLocation*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_Identity, hf_gsm_map_ms_identity, + FALSE, dissect_gsm_map_Identity, hf_gsm_map_ms_identity, + TRUE , dissect_gsm_map_ms_CancelLocationArg, -1);/*undefined*/ + break; + case 4: /*provideRoamingNumber*/ + offset=dissect_gsm_map_ch_ProvideRoamingNumberArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 5: /*noteSubscriberDataModified*/ + offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 6: /*resumeCallHandling*/ + offset=dissect_gsm_map_ch_ResumeCallHandlingArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 7: /*insertSubscriberData*/ + offset=dissect_gsm_map_ms_InsertSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 8: /*deleteSubscriberData*/ + offset=dissect_gsm_map_ms_DeleteSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 9: /*sendParameters*/ + offset = dissect_gsm_old_SendParametersArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 10: /*registerSS*/ + offset=dissect_gsm_map_ss_RegisterSS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 11: /*eraseSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 12: /*activateSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 13: /*deactivateSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 14: /*interrogateSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 15: /*authenticationFailureReport*/ + offset=dissect_gsm_map_ms_AuthenticationFailureReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 16: /*SS-protocol notifySS*/ + offset=dissect_gsm_ss_NotifySS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 17: /*registerPassword*/ + offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_Code); + break; + case 18: /*getPassword*/ + offset=dissect_gsm_old_GetPasswordArg(FALSE, tvb, offset, actx, tree, hf_gsm_map_getPassword); + break; + case 19: /* SS-Protocol processUnstructuredSS-Data (19) */ + offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_SS_UserData); + break; + case 20: /*releaseResources*/ + offset=dissect_gsm_map_ch_ReleaseResourcesArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 21: /*mt-ForwardSM-VGCS*/ + offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 22: /*sendRoutingInfo*/ + if (application_context_version == 3){ + offset=dissect_gsm_map_ch_SendRoutingInfoArg(FALSE, tvb, offset, actx, tree, -1); + }else{ + offset = dissect_gsm_old_SendRoutingInfoArgV2(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 23: /*updateGprsLocation*/ + offset=dissect_gsm_map_ms_UpdateGprsLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 24: /*sendRoutingInfoForGprs*/ + offset=dissect_gsm_map_ms_SendRoutingInfoForGprsArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 25: /*failureReport*/ + offset=dissect_gsm_map_ms_FailureReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 26: /*noteMsPresentForGprs*/ + offset=dissect_gsm_map_ms_NoteMsPresentForGprsArg(FALSE, tvb, offset, actx, tree, -1); + break; + /* undefined 27 */ + /* reserved performHandover (28) */ + case 29: /*sendEndSignal*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_Bss_APDU, -1, + TRUE , dissect_gsm_map_ms_SendEndSignal_Arg, -1); + break; + /* reserved performSubsequentHandover (30) */ + case 31: /*provideSIWFSNumber*/ + offset=dissect_gsm_old_ProvideSIWFSNumberArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 32: /*sIWFSSignallingModify*/ + offset=dissect_gsm_old_SIWFSSignallingModifyArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 33: /*processAccessSignalling*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_Bss_APDU, -1, + TRUE , dissect_gsm_map_ms_ProcessAccessSignalling_Arg, -1); + break; + case 34: /*forwardAccessSignalling*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_Bss_APDU, -1, + TRUE , dissect_gsm_map_ms_ForwardAccessSignalling_Arg, -1); + break; + /* reserved noteInternalHandover (35) */ + case 36: /*cancelVcsgLocation*/ + offset=dissect_gsm_map_ms_CancelVcsgLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 37: /*reset*/ + if (application_context_version == 1) { + offset = dissect_gsm_old_ResetArgV1(FALSE, tvb, offset, actx, tree, -1); + } else { + offset = dissect_gsm_map_ms_ResetArg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 38: /*forwardCheckSS-Indication*/ + return offset; + break; + case 39: /*prepareGroupCall*/ + offset=dissect_gsm_map_gr_PrepareGroupCallArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 40: /*sendGroupCallEndSignal*/ + offset = dissect_gsm_map_gr_SendGroupCallEndSignalArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 41: /*processGroupCallSignalling*/ + offset = dissect_gsm_map_gr_ProcessGroupCallSignallingArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 42: /*forwardGroupCallSignalling*/ + offset=dissect_gsm_map_gr_ForwardGroupCallSignallingArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 43: /*checkIMEI*/ + if (pref_ericsson_proprietary_ext) { + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMEI, hf_gsm_map_ms_imei, + FALSE, dissect_gsm_map_ericsson_EnhancedCheckIMEI_Arg, -1, + TRUE , NULL, -1); /* no [3] SEQUENCE */ + } else { + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMEI, hf_gsm_map_ms_imei, + FALSE, dissect_gsm_map_ms_CheckIMEI_Arg, -1, + TRUE , NULL, -1); /* no [3] SEQUENCE */ + } + break; + case 44: /*mt-forwardSM(v3) or ForwardSM(v1/v2)*/ + if (application_context_version == 3) + offset=dissect_gsm_map_sm_MT_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + else { + offset=dissect_gsm_old_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 45: /*sendRoutingInfoForSM*/ + if (application_context_version < 2) { + offset=dissect_gsm_old_RoutingInfoForSM_ArgV1(FALSE, tvb, offset, actx, tree, -1); + } else { + offset=dissect_gsm_map_sm_RoutingInfoForSM_Arg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 46: /*mo-forwardSM(v3) or ForwardSM(v1/v2)*/ + if (application_context_version == 3) + offset=dissect_gsm_map_sm_MO_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + else { + offset=dissect_gsm_old_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 47: /*reportSM-DeliveryStatus*/ + offset=dissect_gsm_map_sm_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 48: /*noteSubscriberPresent*/ + offset = dissect_gsm_map_IMSI(FALSE, tvb, offset, actx, tree, hf_gsm_map_imsi); + break; + /* reserved alertServiceCentreWithoutResult (49) + * ETS 300 599: December 2000 (GSM 09.02 version 4.19.1) + * -- alertServiceCentreWithoutResult must not be used in + * -- version greater 1 + */ + case 49: + offset = dissect_gsm_map_sm_AlertServiceCentreArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 50: /*activateTraceMode*/ + offset=dissect_gsm_map_om_ActivateTraceModeArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 51: /*deactivateTraceMode*/ + offset=dissect_gsm_map_om_DeactivateTraceModeArg(FALSE, tvb, offset, actx, tree, -1); + break; + /* reserved traceSubscriberActivity (52) */ + + case 53: /* UpdateVcsgLocation 53 */ + offset=dissect_gsm_map_ms_UpdateVcsgLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 54: /*beginSubscriberActivity*/ + offset=dissect_gsm_old_BeginSubscriberActivityArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 55: /*sendIdentification*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_TMSI, hf_gsm_map_tmsi, + FALSE, dissect_gsm_map_ms_SendIdentificationArg, -1, + TRUE, NULL, -1); + break; + case 56: /*sendAuthenticationInfo*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_map_ms_SendAuthenticationInfoArg, -1, + TRUE, NULL, -1); + break; + case 57: /*restoreData*/ + offset=dissect_gsm_map_ms_RestoreDataArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 58: /*sendIMSI*/ + offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, actx, tree, hf_gsm_map_msisdn); + break; + case 59: /*processUnstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 60: /*unstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 61: /*unstructuredSS-Notify*/ + offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 62: /*AnyTimeSubscriptionInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 63: /*informServiceCentre*/ + offset=dissect_gsm_map_sm_InformServiceCentreArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 64: /*alertServiceCentre*/ + offset=dissect_gsm_map_sm_AlertServiceCentreArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 65: /*AnyTimeModification*/ + offset=dissect_gsm_map_ms_AnyTimeModificationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 66: /*readyForSM*/ + offset=dissect_gsm_map_sm_ReadyForSM_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 67: /*purgeMS*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_old_PurgeMSArgV2, -1, /*undefined*/ + TRUE , dissect_gsm_map_ms_PurgeMS_Arg, -1); + break; + case 68: /*prepareHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_PrepareHO_ArgOld, -1, + TRUE, dissect_gsm_map_ms_PrepareHO_Arg, -1); + break; + case 69: /*prepareSubsequentHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, NULL, -1, + TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Arg, -1); + break; + case 70: /*provideSubscriberInfo*/ + offset=dissect_gsm_map_ms_ProvideSubscriberInfoArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 71: /*anyTimeInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeInterrogationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 72: /*ss-InvocationNotificatio*/ + offset=dissect_gsm_map_ss_SS_InvocationNotificationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 73: /*setReportingState*/ + offset=dissect_gsm_map_ch_SetReportingStateArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 74: /*statusReport*/ + offset=dissect_gsm_map_ch_StatusReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 75: /*remoteUserFree*/ + offset=dissect_gsm_map_ch_RemoteUserFreeArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 76: /*registerCC-Entry*/ + offset=dissect_gsm_map_ss_RegisterCC_EntryArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 77: /*eraseCC-Entry*/ + offset=dissect_gsm_map_ss_EraseCC_EntryArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 78: /*secureTransportClass1*/ + case 79: /*secureTransportClass1*/ + case 80: /*secureTransportClass1*/ + case 81: /*secureTransportClass1*/ + offset=dissect_gsm_old_SecureTransportArg(FALSE, tvb, offset, actx, tree, -1); + break; + /* undefined 82 */ + case 83: /*provideSubscriberLocation*/ + offset=dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 84: /*sendGroupCallInfo*/ + offset=dissect_gsm_map_gr_SendGroupCallInfoArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 85: /*sendRoutingInfoForLCS*/ + offset=dissect_gsm_map_lcs_RoutingInfoForLCS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 86: /*subscriberLocationReport*/ + offset=dissect_gsm_map_lcs_SubscriberLocationReport_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 87: /*ist-Alert*/ + offset=dissect_gsm_map_ch_IST_AlertArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 88: /*ist-Command*/ + offset=dissect_gsm_map_ch_IST_CommandArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 89: /*noteMM-Event*/ + offset=dissect_gsm_map_ms_NoteMM_EventArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 108: /*SS-protocol lcs-PeriodicTriggeredInvoke*/ + offset = dissect_gsm_ss_LCS_PeriodicTriggeredInvokeArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 109: /*SS-protocol lcs-PeriodicLocationCancellation*/ + offset=dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 110: /*SS-protocol lcs-LocationUpdate*/ + offset=dissect_gsm_ss_LCS_LocationUpdateArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 111: /*SS-protocol lcs-PeriodicLocationRequest*/ + offset=dissect_gsm_ss_LCS_PeriodicLocationRequestArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 112: /*SS-protocol lcs-AreaEventCancellation*/ + offset=dissect_gsm_ss_LCS_AreaEventCancellationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 113: /*SS-protocol lcs-AreaEventReport*/ + offset=dissect_gsm_ss_LCS_AreaEventReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 114: /*SS-protocol lcs-AreaEventRequest*/ + offset=dissect_gsm_ss_LCS_AreaEventRequestArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 115: /*SS-protocol lcs-MOLR*/ + offset=dissect_gsm_ss_LCS_MOLRArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 116: /*SS-protocol lcs-LocationNotification*/ + offset=dissect_gsm_ss_LocationNotificationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 117: /*SS-protocol callDeflection*/ + offset=dissect_gsm_ss_CallDeflectionArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 118: /*SS-protocol userUserService*/ + offset=dissect_gsm_ss_UserUserServiceArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 119: /*SS-protocol accessRegisterCCEntry*/ + offset=dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 120: /*SS-protocol forwardCUG-Info*/ + application_context_version = 3; + offset=dissect_gsm_ss_ForwardCUG_InfoArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 121: /*SS-protocol splitMPTY no Argument*/ + break; + case 122: /*SS-protocol retrieveMPTY no Argument*/ + break; + case 123: /*SS-protocol holdMPTY no Argument*/ + break; + case 124: /*SS-protocol buildMPTY no Argument*/ + break; + case 125: /*SS-protocol forwardChargeAdvice*/ + offset=dissect_gsm_ss_ForwardChargeAdviceArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 126: /*SS-protocol explicitCT no Argument*/ + break; + default: + if(!dissector_try_uint_new(map_prop_arg_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree, TRUE, actx->subtree.top_tree)){ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, + tvb, offset, -1, "Unknown invokeData %d", opcode); + } + offset+= tvb_reported_length_remaining(tvb,offset); + break; + } + return offset; +} + + +static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) { + + switch(opcode){ + case 2: /*updateLocation*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_map_ms_UpdateLocationRes, -1, + TRUE , NULL, -1); + break; + case 3: /*cancelLocation*/ + offset=dissect_gsm_map_ms_CancelLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 4: /*provideRoamingNumber*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_msisdn, + FALSE, dissect_gsm_map_ch_ProvideRoamingNumberRes, -1, + TRUE , NULL, -1);/*undefined*/ + break; + case 5: /*noteSubscriberDataModified*/ + offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 6: /*resumeCallHandling*/ + offset=dissect_gsm_map_ch_ResumeCallHandlingRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 7: /*insertSubscriberData*/ + offset=dissect_gsm_map_ms_InsertSubscriberDataRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 8: /*deleteSubscriberData*/ + offset=dissect_gsm_map_ms_DeleteSubscriberDataRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 9: /*sendParameters*/ + offset = dissect_gsm_old_SentParameterList(FALSE, tvb, offset, actx, tree, -1); + break; + case 10: /*registerSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 11: /*eraseSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 12: /*activateSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 13: /*deactivateSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 14: /*interrogateSS*/ + offset=dissect_gsm_map_ss_InterrogateSS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 15: /*authenticationFailureReport*/ + offset=dissect_gsm_map_ms_AuthenticationFailureReportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 17: /*registerPassword*/ + /* change hf_gsm_map_ss_Code to something with password */ + offset=dissect_gsm_old_NewPassword(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_Code); + break; + case 18: /*getPassword*/ + offset=dissect_gsm_old_CurrentPassword(FALSE, tvb, offset, actx, tree, hf_gsm_map_currentPassword); + break; + case 19: /* SS-Protocol processUnstructuredSS-Data (19) */ + offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_SS_UserData); + break; + case 20: /*releaseResources*/ + offset=dissect_gsm_map_ch_ReleaseResourcesRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 21: /*mt-ForwardSM-VGCS*/ + offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 22: /*sendRoutingInfo*/ + if (application_context_version == 3){ + /* If the tag is missing use SendRoutingInfoRes_U */ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_map_ch_SendRoutingInfoRes_U, -1, + TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1); + }else{ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_old_SendRoutingInfoResV2, -1, + TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1); + } + break; + case 23: /*updateGprsLocation*/ + offset=dissect_gsm_map_ms_UpdateGprsLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 24: /*sendRoutingInfoForGprs*/ + offset=dissect_gsm_map_ms_SendRoutingInfoForGprsRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 25: /*failureReport*/ + offset=dissect_gsm_map_ms_FailureReportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 26: /*noteMsPresentForGprs*/ + offset=dissect_gsm_map_ms_NoteMsPresentForGprsRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 29: /*sendEndSignal*/ + /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain + * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) } + */ + offset=dissect_gsm_map_ms_SendEndSignal_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 31: /*provideSIWFSNumber*/ + offset=dissect_gsm_old_ProvideSIWFSNumberRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 32: /*provideSIWFSSignallingModify*/ + offset=dissect_gsm_old_SIWFSSignallingModifyRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 36: /*cancelVcsgLocation*/ + offset=dissect_gsm_map_ms_CancelVcsgLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 39: /*prepareGroupCall*/ + offset=dissect_gsm_map_gr_PrepareGroupCallRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 40: /*sendGroupCallEndSignal*/ + offset=dissect_gsm_map_gr_SendGroupCallEndSignalRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 43: /*checkIMEI*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_ms_EquipmentStatus, hf_gsm_map_ms_equipmentStatus, + FALSE, dissect_gsm_map_ms_CheckIMEI_Res, -1, + TRUE, NULL, -1); + break; + case 44: /*mt-forwardSM*/ + offset=dissect_gsm_map_sm_MT_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 45: /*sendRoutingInfoForSM*/ + if (application_context_version < 3) { + offset=dissect_gsm_old_RoutingInfoForSM_ResV2(FALSE, tvb, offset, actx, tree, -1); + } else { + offset=dissect_gsm_map_sm_RoutingInfoForSM_Res(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 46: /*mo-forwardSM*/ + offset=dissect_gsm_map_sm_MO_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 47: /*reportSM-DeliveryStatus*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_sm_storedMSISDN, + FALSE, dissect_gsm_map_sm_ReportSM_DeliveryStatusRes, -1, + FALSE, NULL, -1);/*undefined*/ + break; + case 48: /*noteSubscriberPresent*/ + break; + case 50: /*activateTraceMode*/ + offset=dissect_gsm_map_om_ActivateTraceModeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 51: /*deactivateTraceMode*/ + offset=dissect_gsm_map_om_DeactivateTraceModeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 53: /* UpdateVcsgLocation 53 */ + offset=dissect_gsm_map_ms_UpdateVcsgLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 55: /*sendIdentification */ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_old_SendIdentificationResV2, -1,/*undefined*/ + TRUE, dissect_gsm_map_ms_SendIdentificationRes, -1); + break; + case 56: /*sendAuthenticationInfo*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_SendAuthenticationInfoResOld, -1, + TRUE , dissect_gsm_map_ms_SendAuthenticationInfoRes, -1); + break; + case 57: /*restoreData*/ + offset=dissect_gsm_map_ms_RestoreDataRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 58: /*sendIMSI*/ + offset=dissect_gsm_map_IMSI(FALSE, tvb, offset, actx, tree, hf_gsm_map_ms_imsi); + break; + case 59: /*unstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 60: /*unstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 61: /*unstructuredSS-Notify*/ + /* TRUE ? */ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, tvb, offset, -1, "Unknown returnResultData blob"); + break; + case 62: /*AnyTimeSubscriptionInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 64: /*alertServiceCentre*/ + /* TRUE */ + break; + case 65: /*AnyTimeModification*/ + offset=dissect_gsm_map_ms_AnyTimeModificationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 66: /*readyForSM*/ + offset=dissect_gsm_map_sm_ReadyForSM_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 67: /*purgeMS*/ + offset=dissect_gsm_map_ms_PurgeMS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 68: /*prepareHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_PrepareHO_ResOld, -1, + TRUE , dissect_gsm_map_ms_PrepareHO_Res, -1); + break; + case 69: /*prepareSubsequentHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, NULL, -1, + TRUE , dissect_gsm_map_ms_PrepareSubsequentHO_Res, -1); + break; + case 70: /*provideSubscriberInfo*/ + offset=dissect_gsm_map_ms_ProvideSubscriberInfoRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 71: /*anyTimeInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeInterrogationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 72: /*ss-InvocationNotificatio*/ + offset=dissect_gsm_map_ss_SS_InvocationNotificationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 73: /*setReportingState*/ + offset=dissect_gsm_map_ch_SetReportingStateRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 74: /*statusReport*/ + offset=dissect_gsm_map_ch_StatusReportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 75: /*remoteUserFree*/ + offset=dissect_gsm_map_ch_RemoteUserFreeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 76: /*registerCC-Entry*/ + offset=dissect_gsm_map_ss_RegisterCC_EntryRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 77: /*eraseCC-Entry*/ + offset=dissect_gsm_map_ss_EraseCC_EntryRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 78: /*secureTransportClass1*/ + case 79: /*secureTransportClass2*/ + case 80: /*secureTransportClass3*/ + case 81: /*secureTransportClass4*/ + offset=dissect_gsm_old_SecureTransportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 83: /*provideSubscriberLocation*/ + offset=dissect_gsm_map_lcs_ProvideSubscriberLocation_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 84: /*sendGroupCallInfo*/ + offset=dissect_gsm_map_gr_SendGroupCallInfoRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 85: /*sendRoutingInfoForLCS*/ + offset=dissect_gsm_map_lcs_RoutingInfoForLCS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 86: /*subscriberLocationReport*/ + offset=dissect_gsm_map_lcs_SubscriberLocationReport_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 87: /*ist-Alert*/ + offset=dissect_gsm_map_ch_IST_AlertRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 88: /*ist-Command*/ + offset=dissect_gsm_map_ch_IST_CommandRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 89: /*noteMM-Event*/ + offset=dissect_gsm_map_ms_NoteMM_EventRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 108: /*SS-protocol LCS-PeriodicTriggeredInvokeRes*/ + offset = dissect_gsm_ss_LCS_PeriodicTriggeredInvokeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 109: /*SS-protocol lcs-PeriodicLocationCancellation*/ + /* No parameter */ + break; + case 110: /*SS-protocol lcs-LocationUpdate*/ + offset=dissect_gsm_ss_LCS_LocationUpdateRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 111: /*SS-protocol lcs-PeriodicLocationRequest*/ + offset=dissect_gsm_ss_LCS_PeriodicLocationRequestRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 112: /*SS-protocol lcs-AreaEventCancellation*/ + break; + case 113: /*SS-protocol lcs-AreaEventReport*/ + break; + case 114: /*SS-protocol lcs-AreaEventRequest No RESULT data*/ + break; + case 115: /*SS-protocol lcs-MOLR*/ + offset=dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 116: /*SS-protocol lcs-LocationNotification*/ + offset=dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 117: /*SS-protocol callDeflection no RESULT*/ + break; + case 118: /*SS-protocol userUserService no RESULT*/ + break; + case 119: /*SS-protocol accessRegisterCCEntry*/ + offset=dissect_gsm_map_ss_RegisterCC_EntryRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 120: /*SS-protocol forwardCUG-Info*/ + /* No RETURN RESULT*/ + break; + case 121: /*SS-protocol splitMPTY no RESULT*/ + break; + case 122: /*SS-protocol retrieveMPTY no RESULT*/ + break; + case 123: /*SS-protocol holdMPTY no RESULT*/ + break; + case 124: /*SS-protocol buildMPTY no RESULT*/ + break; + case 125: /*SS-protocol forwardChargeAdvice no RESULT*/ + break; + case 126: /*SS-protocol explicitCT no RESULT*/ + break; + + default: + if(!dissector_try_uint_new(map_prop_res_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree, TRUE, actx->subtree.top_tree)){ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, + tvb, offset, -1, "Unknown returnResultData %d", opcode); + } + offset+= tvb_reported_length_remaining(tvb,offset); + break; + } + return offset; +} + + + +static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) { + + switch(errorCode){ + case 1: /* UnknownSubscriberParam */ + offset=dissect_gsm_map_er_UnknownSubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 4: /* SecureTransportErrorParam */ + offset=dissect_gsm_old_SecureTransportErrorParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 5: /* UnidentifiedSubParam */ + offset=dissect_gsm_map_er_UnidentifiedSubParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 6: /* AbsentSubscriberSM-Param */ + offset=dissect_gsm_map_er_AbsentSubscriberSM_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 8: /* RoamingNotAllowedParam */ + offset=dissect_gsm_map_er_RoamingNotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 9: /* IllegalSubscriberParam */ + offset=dissect_gsm_map_er_IllegalSubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 10: /* BearerServNotProvParam */ + offset=dissect_gsm_map_er_BearerServNotProvParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 11: /* TeleservNotProvParam */ + offset=dissect_gsm_map_er_TeleservNotProvParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 12: /* IllegalEquipmentParam */ + offset=dissect_gsm_map_er_IllegalEquipmentParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 13: /* CallBarredParam */ + offset=dissect_gsm_map_er_CallBarredParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 14: /* ForwardingViolationParam */ + offset=dissect_gsm_map_er_ForwardingViolationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 15: /* CUG-RejectParam */ + offset=dissect_gsm_map_er_CUG_RejectParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 16: /* IllegalSS-OperationParam */ + offset=dissect_gsm_map_er_IllegalSS_OperationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 17: /* SS-ErrorStatus */ + offset=dissect_gsm_map_ss_SS_Status(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_ss_Status); + break; + case 18: /* SS-NotAvailableParam */ + offset=dissect_gsm_map_er_SS_NotAvailableParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 19: /* SS-SubscriptionViolationParam */ + offset=dissect_gsm_map_er_SS_SubscriptionViolationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 20: /* SS-IncompatibilityCause */ + offset=dissect_gsm_map_er_SS_IncompatibilityCause(FALSE, tvb, offset, actx, tree, -1); + break; + case 21: /* FacilityNotSupParam */ + offset=dissect_gsm_map_er_FacilityNotSupParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 22: /* OngoingGroupCallParam */ + offset=dissect_gsm_map_er_OngoingGroupCallParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 27: /* AbsentSubscriberParam */ + offset=dissect_gsm_map_er_AbsentSubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 28: /* IncompatibleTerminalParam */ + offset=dissect_gsm_map_er_IncompatibleTerminalParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 29: /* ShortTermDenialParam */ + offset=dissect_gsm_map_er_ShortTermDenialParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 30: /* LongTermDenialParam */ + offset=dissect_gsm_map_er_LongTermDenialParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 31: /* SubBusyForMT-SMS-Param */ + offset=dissect_gsm_map_er_SubBusyForMT_SMS_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 32: /* SM-DeliveryFailureCause */ + offset = dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_er_SM_EnumeratedDeliveryFailureCause, hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause, + FALSE, dissect_gsm_map_er_SM_DeliveryFailureCause, -1, + FALSE, NULL, -1); + + break; + case 33: /* MessageWaitListFullParam */ + offset=dissect_gsm_map_er_MessageWaitListFullParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 34: /* SystemFailureParam */ + offset=dissect_gsm_map_er_SystemFailureParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 35: /* DataMissingParam */ + offset=dissect_gsm_map_er_DataMissingParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 36: /* UnexpectedDataParam */ + offset=dissect_gsm_map_er_UnexpectedDataParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 37: /* PW-RegistrationFailureCause */ + offset=dissect_gsm_map_er_PW_RegistrationFailureCause(FALSE, tvb, offset, actx, tree, -1); + break; + case 39: /* NoRoamingNbParam */ + offset=dissect_gsm_map_er_NoRoamingNbParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 40: /* TracingBufferFullParam */ + offset=dissect_gsm_map_er_TracingBufferFullParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 42: /* TargetCellOutsideGCA-Param */ + offset=dissect_gsm_map_er_TargetCellOutsideGCA_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 44: /* NumberChangedParam */ + offset=dissect_gsm_map_er_NumberChangedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 45: /* BusySubscriberParam */ + offset=dissect_gsm_map_er_BusySubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 46: /* NoSubscriberReplyParam */ + offset=dissect_gsm_map_er_NoSubscriberReplyParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 47: /* ForwardingFailedParam */ + offset=dissect_gsm_map_er_ForwardingFailedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 48: /* OR-NotAllowedParam */ + offset=dissect_gsm_map_er_OR_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 49: /* ATI-NotAllowedParam */ + offset=dissect_gsm_map_er_ATI_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 50: /* NoGroupCallNbParam */ + offset=dissect_gsm_map_er_NoGroupCallNbParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 51: /* ResourceLimitationParam */ + offset=dissect_gsm_map_er_ResourceLimitationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 52: /* UnauthorizedRequestingNetwork-Param */ + offset=dissect_gsm_map_er_UnauthorizedRequestingNetwork_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 53: /* UnauthorizedLCSClient-Param */ + offset=dissect_gsm_map_er_UnauthorizedLCSClient_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 54: /* PositionMethodFailure-Param */ + offset=dissect_gsm_map_er_PositionMethodFailure_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 58: /* UnknownOrUnreachableLCSClient-Param */ + offset=dissect_gsm_map_er_UnknownOrUnreachableLCSClient_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 59: /* MM-EventNotSupported-Param */ + offset=dissect_gsm_map_er_MM_EventNotSupported_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 60: /* ATSI-NotAllowedParam */ + offset=dissect_gsm_map_er_ATSI_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 61: /* ATM-NotAllowedParam */ + offset=dissect_gsm_map_er_ATM_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 62: /* InformationNotAvailableParam */ + offset=dissect_gsm_map_er_InformationNotAvailableParam(FALSE, tvb, offset, actx, tree, -1); + break; + default: + if(!dissector_try_uint_new(map_prop_err_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree, TRUE, actx->subtree.top_tree)){ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, + tvb, offset, -1, "Unknown returnErrorData %d", opcode); + } + offset+= tvb_reported_length_remaining(tvb,offset); + break; + } + return offset; +} + +/* Private extension container for PLMN Data */ +static int dissect_gsm_mapext_PlmnContainer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_gsm_old_PlmnContainer_U, NULL, "MAP Ext. Plmn Container"); + + return dissect_gsm_old_PlmnContainer(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_gsm_map_ericsson_ext_ExtensionType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_gsm_map_ericsson_ExtensionType, NULL, "Ericsson Extension"); + return dissect_gsm_map_ericsson_ExtensionType(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_SriResExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SriResExtension_U, NULL, "Nokia Extension"); + return dissect_NokiaMAP_Extensions_SriResExtension(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_CanLocArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_CanLocArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_CanLocArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_ATMargExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ATMargExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ATMargExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_DTMargExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_DTMargExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_DTMargExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_NumberPorted(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + return dissect_NokiaMAP_Extensions_NumberPorted(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_ATMresExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ATMresExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ATMresExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_AbsentSubscriberExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + return dissect_NokiaMAP_Extensions_AbsentSubscriberExt(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_SriForSMArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SriForSMArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_SriForSMArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_ReportSMDelStatArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ReportSMDelStatArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ReportSMDelStatArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_UdlArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_UdlArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_UdlArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_RoamNotAllowedExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_RoamNotAllowedExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_RoamNotAllowedExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_MO_ForwardSM_ArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_MO_ForwardSM_ArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_ErrOlcmInfoTableExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ErrOlcmInfoTableExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_RoutingCategoryExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_RoutingCategoryExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_RoutingCategoryExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_AnyTimeModArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_AnyTimeModArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_AnyTimeModArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_AccessTypeExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + return dissect_NokiaMAP_Extensions_AccessTypeExt(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_AccessSubscriptionListExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + return dissect_NokiaMAP_Extensions_AccessSubscriptionListExt(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_AllowedServiceData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + return dissect_NokiaMAP_Extensions_AllowedServiceData(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_SriExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SriExtension_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_SriExtension(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ExtraSignalInfo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ExtraSignalInfo_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ExtraSignalInfo(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_SS_DataExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SS_DataExtension_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_SS_DataExtension(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_HOExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_HO_Ext_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_HO_Ext(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_UlResExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_UlResExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_UlResExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + + +static int dissect_NokiaMAP_ext_IsdArgExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_IsdArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_IsdArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_DsdArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_DsdArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_DsdArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int +dissect_gsm_map_GSMMAPPDU(bool implicit_tag _U_, tvbuff_t *tvb, int offset, + asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) { + + char *version_ptr; + + opcode = 0; + if (pref_application_context_version == APPLICATON_CONTEXT_FROM_TRACE) { + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + application_context_version = 0; + if (gsm_map_priv && gsm_map_priv->tcap_private != NULL){ + if (gsm_map_priv->tcap_private->acv==TRUE ){ + version_ptr = strrchr((const char*)gsm_map_priv->tcap_private->oid,'.'); + if (version_ptr){ + ws_strtoi32(version_ptr + 1, NULL, &application_context_version); + } + } + } + }else{ + application_context_version = pref_application_context_version; + } + + gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f; + /* Get the length and add 2 */ + gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2; + + col_set_str(actx->pinfo->cinfo, COL_INFO, val_to_str_const(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP Component")); + col_append_str(actx->pinfo->cinfo, COL_INFO, " "); + offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU); +/* + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU, NULL); +*/ + + return offset; +} + +static int +dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data) +{ + proto_item *item=NULL; + proto_tree *tree=NULL; + /* Used for gsm_map TAP */ + static gsm_map_tap_rec_t tap_rec; + gint op_idx; + asn1_ctx_t asn1_ctx; + gsm_map_private_info_t *gsm_map_priv; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP"); + + asn1_ctx.subtree.top_tree = parent_tree; + + gsm_map_priv = wmem_new0(pinfo->pool, gsm_map_private_info_t); + gsm_map_priv->tcap_private = (struct tcap_private_t *)data; + asn1_ctx.value_ptr = gsm_map_priv; + + /* create display subtree for the protocol */ + item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_gsm_map); + + dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, &asn1_ctx, tree, -1); + try_val_to_str_idx(opcode, gsm_map_opr_code_strings, &op_idx); + + if (op_idx != -1) { + tap_rec.invoke = (gsmmap_pdu_type == 1) ? TRUE : FALSE; + tap_rec.opcode = opcode; + tap_rec.size = gsm_map_pdu_size; + + tap_queue_packet(gsm_map_tap, pinfo, &tap_rec); + } + + return tvb_captured_length(tvb); +} + +static int +dissect_gsm_map_sccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data) +{ + proto_item *item=NULL; + proto_tree *tree=NULL; + /* Used for gsm_map TAP */ + static gsm_map_tap_rec_t tap_rec; + gint op_idx; + asn1_ctx_t asn1_ctx; + gsm_map_private_info_t *gsm_map_priv; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP"); + + asn1_ctx.subtree.top_tree = parent_tree; + + gsm_map_priv = wmem_new0(pinfo->pool, gsm_map_private_info_t); + gsm_map_priv->sccp_msg_info = (sccp_msg_info_t *)data; + asn1_ctx.value_ptr = gsm_map_priv; + + /* create display subtree for the protocol */ + item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_gsm_map); + + dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, &asn1_ctx, tree, -1); + try_val_to_str_idx(opcode, gsm_map_opr_code_strings, &op_idx); + + if (op_idx != -1) { + tap_rec.invoke = (gsmmap_pdu_type == 1) ? TRUE : FALSE; + tap_rec.opcode = opcode; + tap_rec.size = gsm_map_pdu_size; + + tap_queue_packet(gsm_map_tap, pinfo, &tap_rec); + } + + return tvb_captured_length(tvb); +} + +const value_string ssCode_vals[] = { + { 0x00, "allSS - all SS" }, + { 0x10 ,"allLineIdentificationSS - all line identification SS" }, + { 0x11 ,"clip - calling line identification presentation" }, + { 0x12 ,"clir - calling line identification restriction" }, + { 0x13 ,"colp - connected line identification presentation" }, + { 0x14 ,"colr - connected line identification restriction" }, + { 0x15 ,"mci - malicious call identification" }, + { 0x18 ,"allNameIdentificationSS - all name identification SS" }, + { 0x19 ,"cnap - calling name presentation" }, + { 0x20 ,"allForwardingSS - all forwarding SS" }, + { 0x21 ,"cfu - call forwarding unconditional" }, + { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" }, + { 0x29 ,"cfb - call forwarding busy" }, + { 0x2a ,"cfnry - call forwarding on no reply" }, + { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" }, + { 0x24 ,"cd - call deflection" }, + { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" }, + { 0x31 ,"ect - explicit call transfer" }, + { 0x32 ,"mah - mobile access hunting" }, + { 0x40 ,"allCallCompletionSS - all Call completion SS" }, + { 0x41 ,"cw - call waiting" }, + { 0x42 ,"hold - call hold" }, + { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" }, + { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" }, + { 0x45 ,"mc - multicall" }, + { 0x50 ,"allMultiPartySS - all multiparty SS" }, + { 0x51 ,"multiPTY - multiparty" }, + { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" }, + { 0x61 ,"cug - closed user group" }, + { 0x70 ,"allChargingSS - all charging SS" }, + { 0x71 ,"aoci - advice of charge information" }, + { 0x72 ,"aocc - advice of charge charging" }, + { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" }, + { 0x81 ,"uus1 - UUS1 user-to-user signalling" }, + { 0x82 ,"uus2 - UUS2 user-to-user signalling" }, + { 0x83 ,"uus3 - UUS3 user-to-user signalling" }, + { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" }, + { 0x91 ,"barringOfOutgoingCalls" }, + { 0x92 ,"baoc - barring of all outgoing calls" }, + { 0x93 ,"boic - barring of outgoing international calls" }, + { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" }, + { 0x99 ,"barringOfIncomingCalls" }, + { 0x9a ,"baic - barring of all incoming calls" }, + { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" }, + { 0xf0 ,"allPLMN-specificSS" }, + { 0xa0 ,"allCallPrioritySS - all call priority SS" }, + { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" }, + { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" }, + { 0xb1 ,"universal - allow location by any LCS client" }, + { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" }, + { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" }, + { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" }, + { 0xb5 ,"serviceType - allow location by LCS clients of a designated LCS service type" }, + { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" }, + { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" }, + { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" }, + { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" }, + + { 0xf1 ,"plmn-specificSS-1" }, + { 0xf2 ,"plmn-specificSS-2" }, + { 0xf3 ,"plmn-specificSS-3" }, + { 0xf4 ,"plmn-specificSS-4" }, + { 0xf5 ,"plmn-specificSS-5" }, + { 0xf6 ,"plmn-specificSS-6" }, + { 0xf7 ,"plmn-specificSS-7" }, + { 0xf8 ,"plmn-specificSS-8" }, + { 0xf9 ,"plmn-specificSS-9" }, + { 0xfa ,"plmn-specificSS-a" }, + { 0xfb ,"plmn-specificSS-b" }, + { 0xfc ,"plmn-specificSS-c" }, + { 0xfd ,"plmn-specificSS-d" }, + { 0xfe ,"plmn-specificSS-e" }, + { 0xff ,"plmn-specificSS-f" }, + { 0, NULL } +}; + +static const value_string Teleservice_vals[] = { + { 0x00, "allTeleservices" }, + { 0x10, "allSpeechTransmissionServices" }, + { 0x11, "telephony" }, + { 0x12, "emergencyCalls" }, + { 0x20, "allShortMessageServices" }, + { 0x21, "shortMessageMT-PP" }, + { 0x22, "shortMessageMO-PP" }, + { 0x60, "allFacsimileTransmissionServices" }, + { 0x61, "facsimileGroup3AndAlterSpeech" }, + { 0x62, "automaticFacsimileGroup3" }, + { 0x63, "facsimileGroup4" }, + + { 0x70, "allDataTeleservices" }, + { 0x80, "allTeleservices-ExceptSMS" }, + + { 0x90, "allVoiceGroupCallServices" }, + { 0x91, "voiceGroupCall" }, + { 0x92, "voiceBroadcastCall" }, + + { 0xd0, "allPLMN-specificTS" }, + { 0xd1, "plmn-specificTS-1" }, + { 0xd2, "plmn-specificTS-2" }, + { 0xd3, "plmn-specificTS-3" }, + { 0xd4, "plmn-specificTS-4" }, + { 0xd5, "plmn-specificTS-5" }, + { 0xd6, "plmn-specificTS-6" }, + { 0xd7, "plmn-specificTS-7" }, + { 0xd8, "plmn-specificTS-8" }, + { 0xd9, "plmn-specificTS-9" }, + { 0xda, "plmn-specificTS-A" }, + { 0xdb, "plmn-specificTS-B" }, + { 0xdc, "plmn-specificTS-C" }, + { 0xdd, "plmn-specificTS-D" }, + { 0xde, "plmn-specificTS-E" }, + { 0xdf, "plmn-specificTS-F" }, + { 0, NULL } +}; + +static const value_string Bearerservice_vals[] = { + { 0x00, "allBearerServices" }, + { 0x10, "allDataCDA-Services" }, + { 0x11, "dataCDA-300bps" }, + { 0x12, "dataCDA-1200bps" }, + { 0x13, "dataCDA-1200-75bps" }, + { 0x14, "dataCDA-2400bps" }, + { 0x15, "dataCDA-4800bps" }, + { 0x16, "dataCDA-9600bps" }, + { 0x17, "general-dataCDA" }, + + { 0x18, "allDataCDS-Services" }, + { 0x1A, "dataCDS-1200bps" }, + { 0x1C, "dataCDS-2400bps" }, + { 0x1D, "dataCDS-4800bps" }, + { 0x1E, "dataCDS-9600bps" }, + { 0x1F, "general-dataCDS" }, + + { 0x20, "allPadAccessCA-Services" }, + { 0x21, "padAccessCA-300bps" }, + { 0x22, "padAccessCA-1200bps" }, + { 0x23, "padAccessCA-1200-75bps" }, + { 0x24, "padAccessCA-2400bps" }, + { 0x25, "padAccessCA-4800bps" }, + { 0x26, "padAccessCA-9600bps" }, + { 0x27, "general-padAccessCA" }, + + { 0x28, "allDataPDS-Services" }, + { 0x2C, "dataPDS-2400bps" }, + { 0x2D, "dataPDS-4800bps" }, + { 0x2E, "dataPDS-9600bps" }, + { 0x2F, "general-dataPDS" }, + + { 0x30, "allAlternateSpeech-DataCDA" }, + { 0x38, "allAlternateSpeech-DataCDS" }, + { 0x40, "allSpeechFollowedByDataCDA" }, + { 0x48, "allSpeechFollowedByDataCDS" }, + + { 0x50, "allDataCircuitAsynchronous" }, + { 0x60, "allAsynchronousServices" }, + { 0x58, "allDataCircuitSynchronous" }, + { 0x68, "allSynchronousServices" }, + + { 0xD0, "allPLMN-specificBS" }, + { 0xD1, "plmn-specificBS-1" }, + { 0xD2, "plmn-specificBS-2" }, + { 0xD3, "plmn-specificBS-3" }, + { 0xD4, "plmn-specificBS-4" }, + { 0xD5, "plmn-specificBS-5" }, + { 0xD6, "plmn-specificBS-6" }, + { 0xD7, "plmn-specificBS-7" }, + { 0xD8, "plmn-specificBS-8" }, + { 0xD9, "plmn-specificBS-9" }, + { 0xDA, "plmn-specificBS-A" }, + { 0xDB, "plmn-specificBS-B" }, + { 0xDC, "plmn-specificBS-C" }, + { 0xDD, "plmn-specificBS-D" }, + { 0xDE, "plmn-specificBS-E" }, + { 0xDF, "plmn-specificBS-F" }, + + { 0, NULL } +}; + +/* ForwardingOptions + +-- bit 8: notification to forwarding party +-- 0 no notification +-- 1 notification +*/ +static const true_false_string notification_value = { + "Notification", + "No notification" +}; +/* +-- bit 7: redirecting presentation +-- 0 no presentation +-- 1 presentation +*/ +static const true_false_string redirecting_presentation_value = { + "Presentation", + "No presentation" +}; +/* +-- bit 6: notification to calling party +-- 0 no notification +-- 1 notification +*/ +/* +-- bit 5: 0 (unused) +-- bits 43: forwarding reason +-- 00 ms not reachable +-- 01 ms busy +-- 10 no reply +-- 11 unconditional when used in a SRI Result, +-- or call deflection when used in a RCH Argument +*/ +static const value_string forwarding_reason_values[] = { + { 0x0, "ms not reachable" }, + { 0x1, "ms busy" }, + { 0x2, "no reply" }, + { 0x3, "unconditional when used in a SRI Result or call deflection when used in a RCH Argument" }, + { 0, NULL } +}; +/* +-- bits 21: 00 (unused) +*/ + +static const value_string pdp_type_org_values[] = { + { 0x0, "ETSI" }, + { 0x1, "IETF" }, + { 0xf, "Empty PDP type" }, + { 0, NULL } +}; + +static const value_string etsi_pdp_type_number_values[] = { + { 0x0, "Reserved, used in earlier version of this protocol" }, + { 0x1, "PPP" }, + { 0, NULL } +}; + +static const value_string ietf_pdp_type_number_values[] = { + { 0x21, "IPv4 Address" }, + { 0x57, "IPv6 Address" }, + { 0, NULL } +}; + +/* +ChargingCharacteristics ::= OCTET STRING (SIZE (2)) +-- Octets are coded according to 3GPP TS 32.015. +-- From 3GPP TS 32.015. +-- +-- Descriptions for the bits of the flag set: +-- +-- Bit 1: H (Hot billing) := '00000001'B +-- Bit 2: F (Flat rate) := '00000010'B +-- Bit 3: P (Prepaid service) := '00000100'B +-- Bit 4: N (Normal billing) := '00001000'B +-- Bit 5: - (Reserved, set to 0) := '00010000'B +-- Bit 6: - (Reserved, set to 0) := '00100000'B +-- Bit 7: - (Reserved, set to 0) := '01000000'B +-- Bit 8: - (Reserved, set to 0) := '10000000'B +*/ +static const value_string chargingcharacteristics_values[] = { + { 0x1, "H (Hot billing)" }, + { 0x2, "F (Flat rate)" }, + { 0x4, "P (Prepaid service)" }, + { 0x8, "N (Normal billing)" }, + { 0, NULL } +}; + +/* TAP STAT INFO */ +typedef enum +{ + ID_COLUMN, + OP_CODE_COLUMN, + INVOKES_COLUMN, + NUM_BYTES_FWD_COLUMN, + AVG_BYTES_FWD_COLUMN, + RET_RES_COLUMN, + NUM_BYTES_REV_COLUMN, + AVG_BYTES_REV_COLUMN, + TOT_BYTES_COLUMN, + AVG_BYTES_COLUMN +} gsm_a_stat_columns; + +static stat_tap_table_item gsm_map_stat_fields[] = { + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "ID", "%d"}, + {TABLE_ITEM_STRING, TAP_ALIGN_LEFT, "Operation Code", "%-25s"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Invokes", "%d"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Num Bytes", "%d"}, + {TABLE_ITEM_FLOAT, TAP_ALIGN_RIGHT, "Avg Bytes", "%1.2f"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Return Result", "%d"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Num Bytes", "%d"}, + {TABLE_ITEM_FLOAT, TAP_ALIGN_RIGHT, "Avg Bytes", "%1.2f"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Total Bytes", "%d"}, + {TABLE_ITEM_FLOAT, TAP_ALIGN_RIGHT, "Avg Bytes", "%1.2f"}, +}; + +static void gsm_map_stat_init(stat_tap_table_ui* new_stat) +{ + const char *table_name = "GSM MAP Operation Statistics"; + int num_fields = sizeof(gsm_map_stat_fields)/sizeof(stat_tap_table_item); + stat_tap_table* table; + guint i; + stat_tap_table_item_type items[sizeof(gsm_map_stat_fields)/sizeof(stat_tap_table_item)]; + + memset(items, 0, sizeof(items)); + + items[ID_COLUMN].type = TABLE_ITEM_UINT; + items[OP_CODE_COLUMN].type = TABLE_ITEM_STRING; + items[INVOKES_COLUMN].type = TABLE_ITEM_UINT; + items[NUM_BYTES_FWD_COLUMN].type = TABLE_ITEM_UINT; + items[AVG_BYTES_FWD_COLUMN].type = TABLE_ITEM_FLOAT; + items[RET_RES_COLUMN].type = TABLE_ITEM_UINT; + items[NUM_BYTES_REV_COLUMN].type = TABLE_ITEM_UINT; + items[AVG_BYTES_REV_COLUMN].type = TABLE_ITEM_FLOAT; + items[TOT_BYTES_COLUMN].type = TABLE_ITEM_UINT; + items[AVG_BYTES_COLUMN].type = TABLE_ITEM_FLOAT; + + table = stat_tap_find_table(new_stat, table_name); + if (table) { + if (new_stat->stat_tap_reset_table_cb) { + new_stat->stat_tap_reset_table_cb(table); + } + return; + } + + table = stat_tap_init_table(table_name, num_fields, 0, NULL); + stat_tap_add_table(new_stat, table); + + /* Add a row for each value type */ + for (i = 0; i < GSM_MAP_MAX_NUM_OPR_CODES; i++) + { + const char *ocs = try_val_to_str(i, gsm_map_opr_code_strings); + char *col_str; + if (ocs) { + col_str = g_strdup(ocs); + } else { + col_str = ws_strdup_printf("Unknown op code %d", i); + } + + items[ID_COLUMN].value.uint_value = i; + items[OP_CODE_COLUMN].value.string_value = col_str; + stat_tap_init_table_row(table, i, num_fields, items); + } +} + +static tap_packet_status +gsm_map_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gmtr_ptr, tap_flags_t flags _U_) +{ + stat_data_t* stat_data = (stat_data_t*)tapdata; + const gsm_map_tap_rec_t *gmtr = (const gsm_map_tap_rec_t *)gmtr_ptr; + stat_tap_table* table; + stat_tap_table_item_type *invoke_data, *fwd_bytes_data, *result_data, *rev_bytes_data, *avg_data; + guint invokes, fwd_bytes, results, rev_bytes; + + table = g_array_index(stat_data->stat_tap_data->tables, stat_tap_table*, 0); + + invoke_data = stat_tap_get_field_data(table, gmtr->opcode, INVOKES_COLUMN); + fwd_bytes_data = stat_tap_get_field_data(table, gmtr->opcode, NUM_BYTES_FWD_COLUMN); + result_data = stat_tap_get_field_data(table, gmtr->opcode, RET_RES_COLUMN); + rev_bytes_data = stat_tap_get_field_data(table, gmtr->opcode, NUM_BYTES_REV_COLUMN); + + if (gmtr->invoke) + { + invoke_data->value.uint_value++; + stat_tap_set_field_data(table, gmtr->opcode, INVOKES_COLUMN, invoke_data); + + fwd_bytes_data->value.uint_value += gmtr->size; + stat_tap_set_field_data(table, gmtr->opcode, NUM_BYTES_FWD_COLUMN, fwd_bytes_data); + } + else + { + result_data->value.uint_value++; + stat_tap_set_field_data(table, gmtr->opcode, RET_RES_COLUMN, result_data); + + rev_bytes_data->value.uint_value += gmtr->size; + stat_tap_set_field_data(table, gmtr->opcode, NUM_BYTES_REV_COLUMN, rev_bytes_data); + } + + invokes = invoke_data->value.uint_value; + fwd_bytes = fwd_bytes_data->value.uint_value; + results = result_data->value.uint_value; + rev_bytes = rev_bytes_data->value.uint_value; + + if (gmtr->invoke) + { + avg_data = stat_tap_get_field_data(table, gmtr->opcode, AVG_BYTES_FWD_COLUMN); + avg_data->value.float_value += (float) fwd_bytes / invokes; + stat_tap_set_field_data(table, gmtr->opcode, AVG_BYTES_FWD_COLUMN, avg_data); + } + else + { + avg_data = stat_tap_get_field_data(table, gmtr->opcode, AVG_BYTES_REV_COLUMN); + avg_data->value.float_value += (float) rev_bytes / results; + stat_tap_set_field_data(table, gmtr->opcode, AVG_BYTES_REV_COLUMN, avg_data); + } + + avg_data = stat_tap_get_field_data(table, gmtr->opcode, AVG_BYTES_COLUMN); + avg_data->value.float_value += (float) (fwd_bytes + rev_bytes) / (invokes + results); + stat_tap_set_field_data(table, gmtr->opcode, AVG_BYTES_COLUMN, avg_data); + return TAP_PACKET_REDRAW; +} + +static void +gsm_map_stat_reset(stat_tap_table* table) +{ + guint element; + stat_tap_table_item_type* item_data; + + for (element = 0; element < table->num_elements; element++) + { + item_data = stat_tap_get_field_data(table, element, INVOKES_COLUMN); + item_data->value.uint_value = 0; + stat_tap_set_field_data(table, element, INVOKES_COLUMN, item_data); + } +} + +static void +gsm_map_stat_free_table_item(stat_tap_table* table _U_, guint row _U_, guint column, stat_tap_table_item_type* field_data) +{ + if (column != OP_CODE_COLUMN) return; + g_free((char*)field_data->value.string_value); +} + +/*--- proto_reg_handoff_gsm_map ---------------------------------------*/ +static void range_delete_callback(guint32 ssn, gpointer ptr _U_) +{ + if (ssn) { + delete_itu_tcap_subdissector(ssn, map_handle); + } +} + +static void range_add_callback(guint32 ssn, gpointer ptr _U_) +{ + if (ssn) { + add_itu_tcap_subdissector(ssn, map_handle); + } +} + +void proto_reg_handoff_gsm_map(void) { + + static gboolean map_prefs_initialized = FALSE; + static range_t *ssn_range; + + if (!map_prefs_initialized) { + map_prefs_initialized = TRUE; + ranap_handle = find_dissector_add_dependency("ranap", proto_gsm_map); + dtap_handle = find_dissector_add_dependency("gsm_a_dtap", proto_gsm_map); + gsm_sms_handle = find_dissector_add_dependency("gsm_sms", proto_gsm_map); + bssap_handle = find_dissector_add_dependency("gsm_a_bssmap", proto_gsm_map); + + oid_add_from_string("itu(0) administration(2) japan(440)","0.2.440" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.1.3", map_handle, proto_gsm_map,"networkLocUpContext-v3"); + register_ber_oid_dissector_handle("0.4.0.0.1.0.1.2", map_handle, proto_gsm_map,"networkLocUpContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.1.1", map_handle, proto_gsm_map,"networkLocUpContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.2.3", map_handle, proto_gsm_map,"locationCancellationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.2.2", map_handle, proto_gsm_map,"locationCancellationContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.2.1", map_handle, proto_gsm_map,"locationCancellationContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.3.3", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.3.2", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.3.1", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.4.3", map_handle, proto_gsm_map,"istAlertingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.5.3", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.5.2", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.5.1", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.6.4", map_handle, proto_gsm_map,"callControlTransferContext-v4" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.6.3", map_handle, proto_gsm_map,"callControlTransferContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.7.3", map_handle, proto_gsm_map,"reportingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.8.3", map_handle, proto_gsm_map,"callCompletionContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.9.3", map_handle, proto_gsm_map,"serviceTerminationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.10.2", map_handle, proto_gsm_map,"resetContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.10.1", map_handle, proto_gsm_map,"resetContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.11.3", map_handle, proto_gsm_map,"handoverControlContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.11.2", map_handle, proto_gsm_map,"handoverControlContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.11.1", map_handle, proto_gsm_map,"handoverControlContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.12.3", map_handle, proto_gsm_map,"sIWFSAllocationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.13.3", map_handle, proto_gsm_map,"equipmentMngtContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.13.2", map_handle, proto_gsm_map,"equipmentMngtContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.13.1", map_handle, proto_gsm_map,"equipmentMngtContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.14.3", map_handle, proto_gsm_map,"infoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.14.2", map_handle, proto_gsm_map,"infoRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.14.1", map_handle, proto_gsm_map,"infoRetrievalContext-v1" ); + /* fallback to infoRetrieval(14) version1(1) and not interVlrInfoRetrieval(15) version1(1) */ + /*register_ber_oid_dissector_handle("0.4.0.0.1.0.15.1", map_handle, proto_gsm_map,"map-ac interVlrInfoRetrieval(15) version1(1)" );*/ + register_ber_oid_dissector_handle("0.4.0.0.1.0.15.2", map_handle, proto_gsm_map,"interVlrInfoRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.15.3", map_handle, proto_gsm_map,"interVlrInfoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.16.3", map_handle, proto_gsm_map,"subscriberDataMngtContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.16.2", map_handle, proto_gsm_map,"subscriberDataMngtContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.16.1", map_handle, proto_gsm_map,"subscriberDataMngtContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.17.3", map_handle, proto_gsm_map,"tracingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.17.2", map_handle, proto_gsm_map,"tracingContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.17.1", map_handle, proto_gsm_map,"tracingContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.18.2", map_handle, proto_gsm_map,"networkFunctionalSsContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.18.1", map_handle, proto_gsm_map,"networkFunctionalSsContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.19.2", map_handle, proto_gsm_map,"networkUnstructuredSsContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.20.3", map_handle, proto_gsm_map,"shortMsgGatewayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.20.2", map_handle, proto_gsm_map,"shortMsgGatewayContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.20.1", map_handle, proto_gsm_map,"shortMsgGatewayContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.21.3", map_handle, proto_gsm_map,"shortMsgMO-RelayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.21.2", map_handle, proto_gsm_map,"shortMsgMO-RelayContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.21.1", map_handle, proto_gsm_map,"shortMsgRelayContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.22.3", map_handle, proto_gsm_map,"subscriberDataModificationNotificationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.23.2", map_handle, proto_gsm_map,"shortMsgAlertContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.23.1", map_handle, proto_gsm_map,"shortMsgAlertContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.24.3", map_handle, proto_gsm_map,"mwdMngtContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.24.2", map_handle, proto_gsm_map,"mwdMngtContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.24.1", map_handle, proto_gsm_map,"mwdMngtContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.25.3", map_handle, proto_gsm_map,"shortMsgMT-RelayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.25.2", map_handle, proto_gsm_map,"shortMsgMT-RelayContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.26.2", map_handle, proto_gsm_map,"imsiRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.27.2", map_handle, proto_gsm_map,"msPurgingContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.27.3", map_handle, proto_gsm_map,"msPurgingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.28.3", map_handle, proto_gsm_map,"subscriberInfoEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.29.3", map_handle, proto_gsm_map,"anyTimeInfoEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.31.3", map_handle, proto_gsm_map,"groupCallControlContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.32.3", map_handle, proto_gsm_map,"gprsLocationUpdateContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.33.4", map_handle, proto_gsm_map,"gprsLocationInfoRetrievalContext-v4" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.33.3", map_handle, proto_gsm_map,"gprsLocationInfoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.34.3", map_handle, proto_gsm_map,"failureReportContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.35.3", map_handle, proto_gsm_map,"gprsNotifyContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.36.3", map_handle, proto_gsm_map,"ss-InvocationNotificationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.37.3", map_handle, proto_gsm_map,"locationSvcGatewayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.38.3", map_handle, proto_gsm_map,"locationSvcEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.39.3", map_handle, proto_gsm_map,"authenticationFailureReportContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.40.3", map_handle, proto_gsm_map,"secureTransportHandlingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.41.3", map_handle, proto_gsm_map,"shortMsgMT-Relay-VGCS-Context-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.42.3", map_handle, proto_gsm_map,"mm-EventReportingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.43.3", map_handle, proto_gsm_map,"anyTimeInfoHandlingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.44.3", map_handle, proto_gsm_map,"resourceManagementContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.45.3", map_handle, proto_gsm_map,"groupCallInfoRetrievalContext-v3" ); + /* Private extension container */ + register_ber_oid_dissector("1.3.12.2.1006.53.2.1.3", dissect_gsm_mapext_PlmnContainer, proto_gsm_map,"alcatel-E10-MAP-extension-PlmnContainer" ); + register_ber_oid_dissector("0.34.0",dissect_NokiaMAP_ext_IsdArgExtension,proto_gsm_map,"Nokia ISD Extension"); + register_ber_oid_dissector("0.34.1",dissect_NokiaMAP_ext_DsdArgExt,proto_gsm_map,"Nokia Dsd Extension"); + register_ber_oid_dissector("0.34.2",dissect_NokiaMAP_ext_UlResExtension,proto_gsm_map,"Nokia Location Update Extension"); + register_ber_oid_dissector("0.34.4",dissect_NokiaMAP_ext_SS_DataExtension,proto_gsm_map,"Nokia SS Data Extension"); + register_ber_oid_dissector("0.34.5",dissect_NokiaMAP_ext_SriExtension,proto_gsm_map,"Nokia SRI Request Extension"); + register_ber_oid_dissector("0.34.6",dissect_NokiaMAP_ExtraSignalInfo,proto_gsm_map,"Nokia ExtraSignalInfo Extension"); + register_ber_oid_dissector("0.34.7",dissect_NokiaMAP_ext_SriResExtension,proto_gsm_map,"Nokia SRI Response Extension"); + register_ber_oid_dissector("0.34.10",dissect_NokiaMAP_ext_CanLocArgExt,proto_gsm_map,"Nokia Cancel Location Extension"); + register_ber_oid_dissector("0.34.11",dissect_NokiaMAP_ext_ATMargExt,proto_gsm_map,"Nokia ATM Extension"); + register_ber_oid_dissector("0.34.12",dissect_NokiaMAP_ext_DTMargExt,proto_gsm_map,"Nokia DTM Extension"); + register_ber_oid_dissector("0.34.13",dissect_NokiaMAP_ext_NumberPorted,proto_gsm_map,"Nokia NumberPorted Extension"); + register_ber_oid_dissector("0.34.15",dissect_NokiaMAP_ext_HOExtension,proto_gsm_map,"Nokia HandOver Extension"); + register_ber_oid_dissector("0.34.16",dissect_NokiaMAP_ext_ATMresExt,proto_gsm_map,"Nokia ATMres Extension"); + register_ber_oid_dissector("0.34.17",dissect_NokiaMAP_ext_AbsentSubscriberExt,proto_gsm_map,"Nokia AbsentSubscriber Extension"); + register_ber_oid_dissector("0.34.18",dissect_NokiaMAP_ext_SriForSMArgExt,proto_gsm_map,"Nokia SriForSM Extension"); + register_ber_oid_dissector("0.34.19",dissect_NokiaMAP_ext_ReportSMDelStatArgExt,proto_gsm_map,"Nokia ReportSMDelStatt Extension"); + register_ber_oid_dissector("0.34.20",dissect_NokiaMAP_ext_UdlArgExt,proto_gsm_map,"Nokia Udl Extension"); + register_ber_oid_dissector("0.34.21",dissect_NokiaMAP_ext_RoamNotAllowedExt,proto_gsm_map,"Nokia RoamNotAllowed Extension"); + register_ber_oid_dissector("0.34.22",dissect_NokiaMAP_ext_MO_ForwardSM_ArgExt,proto_gsm_map,"Nokia MO-ForwardSM Extension"); + register_ber_oid_dissector("0.34.23",dissect_NokiaMAP_ext_ErrOlcmInfoTableExt,proto_gsm_map,"Nokia ErrOlcmInfoTable Extension"); + register_ber_oid_dissector("0.34.25",dissect_NokiaMAP_ext_RoutingCategoryExt,proto_gsm_map,"Nokia Routing Category Extension"); + register_ber_oid_dissector("0.34.26",dissect_NokiaMAP_ext_AnyTimeModArgExt,proto_gsm_map,"Nokia AnyTimeMod Extension"); + + register_ber_oid_dissector("1.3.12.2.1107.3.66.1.1",dissect_NokiaMAP_ext_AccessTypeExt,proto_gsm_map,"Nokia AccessTypeExt Extension"); + register_ber_oid_dissector("1.3.12.2.1107.3.66.1.3",dissect_NokiaMAP_ext_AccessSubscriptionListExt,proto_gsm_map,"Nokia AccessSubscriptionListExt Extension"); + register_ber_oid_dissector("1.3.12.2.1107.3.66.1.6",dissect_NokiaMAP_ext_AllowedServiceData,proto_gsm_map,"Nokia AllowedServiceData Extension"); + + register_ber_oid_dissector("1.2.826.0.1249.58.1.0",dissect_gsm_map_ericsson_ext_ExtensionType,proto_gsm_map,"Ericsson ExtensionType Extension"); + } + else { + range_foreach(ssn_range, range_delete_callback, NULL); + wmem_free(wmem_epan_scope(), ssn_range); + } + + ssn_range = range_copy(wmem_epan_scope(), global_ssn_range); + range_foreach(ssn_range, range_add_callback, NULL); + +} + +/*--- proto_register_gsm_map -------------------------------------------*/ +void proto_register_gsm_map(void) { + module_t *gsm_map_module; + expert_module_t* expert_gsm_map; + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_gsm_map_old_Component_PDU, + { "Component", "gsm_map.old.Component", + FT_UINT32, BASE_DEC, VALS(gsm_old_Component_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_getPassword, + { "getPassword", "gsm_map.getPassword", + FT_UINT8, BASE_DEC, VALS(gsm_old_GetPasswordArg_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_currentPassword, + { "currentPassword", "gsm_map.currentPassword", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_extension, + { "Extension", "gsm_map.extension", + FT_BOOLEAN, 8, TFS(&tfs_no_extension_extension), 0x80, + NULL, HFILL }}, + { &hf_gsm_map_nature_of_number, + { "Nature of number", "gsm_map.nature_of_number", + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gsm_map_nature_of_number_values_ext, 0x70, + NULL, HFILL }}, + { &hf_gsm_map_number_plan, + { "Number plan", "gsm_map.number_plan", + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gsm_map_number_plan_values_ext, 0x0f, + NULL, HFILL }}, + { &hf_gsm_map_address_digits, + { "Address digits", "gsm_map.address.digits", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_TBCD_digits, + { "TBCD digits", "gsm_map.tbcd_digits", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_unused, + { "Unused", "gsm_map.unused", + FT_UINT8, BASE_HEX, NULL, 0xf0, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_q_bit, + { "Q bit", "gsm_map.ss_status_q_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_p_bit, + { "P bit", "gsm_map.ss_status_p_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_r_bit, + { "R bit", "gsm_map.ss_status_r_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_a_bit, + { "A bit", "gsm_map.ss_status_a_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01, + NULL, HFILL }}, + { &hf_gsm_map_notification_to_forwarding_party, + { "Notification to forwarding party", "gsm_map.notification_to_forwarding_party", + FT_BOOLEAN, 8, TFS(¬ification_value), 0x80, + NULL, HFILL }}, + { &hf_gsm_map_redirecting_presentation, + { "Redirecting presentation", "gsm_map.redirecting_presentation", + FT_BOOLEAN, 8, TFS(&redirecting_presentation_value), 0x40, + NULL, HFILL }}, + { &hf_gsm_map_notification_to_calling_party, + { "Notification to calling party", "gsm_map.notification_to_calling_party", + FT_BOOLEAN, 8, TFS(¬ification_value), 0x20, + NULL, HFILL }}, + { &hf_gsm_map_forwarding_reason, + { "Forwarding reason", "gsm_map.forwarding_reason", + FT_UINT8, BASE_HEX, VALS(forwarding_reason_values), 0x0c, + NULL, HFILL }}, + { &hf_gsm_map_pdp_type_org, + { "PDP Type Organization", "gsm_map.pdp_type_org", + FT_UINT8, BASE_HEX, VALS(pdp_type_org_values), 0x0f, + NULL, HFILL }}, + { &hf_gsm_map_etsi_pdp_type_number, + { "PDP Type Number", "gsm_map.pdp_type_number", + FT_UINT8, BASE_HEX, VALS(etsi_pdp_type_number_values), 0, + "ETSI PDP Type Number", HFILL }}, + { &hf_gsm_map_ietf_pdp_type_number, + { "PDP Type Number", "gsm_map.ietf_pdp_type_number", + FT_UINT8, BASE_HEX, VALS(ietf_pdp_type_number_values), 0, + "IETF PDP Type Number", HFILL }}, + { &hf_gsm_map_ext_qos_subscribed_pri, + { "Allocation/Retention priority", "gsm_map.ext_qos_subscribed_pri", + FT_UINT8, BASE_DEC, NULL, 0xff, + NULL, HFILL }}, + { &hf_gsm_map_qos_traffic_cls, + { "Traffic class", "gsm_map.qos.traffic_cls", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traffic_cls_vals), 0xe0, + NULL, HFILL }}, + { &hf_gsm_map_qos_del_order, + { "Delivery order", "gsm_map.qos.del_order", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traffic_cls_vals), 0x18, + NULL, HFILL }}, + { &hf_gsm_map_qos_del_of_err_sdu, + { "Delivery of erroneous SDUs", "gsm_map.qos.del_of_err_sdu", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_del_of_err_sdu_vals), 0x03, + NULL, HFILL }}, + { &hf_gsm_map_qos_ber, + { "Residual Bit Error Rate (BER)", "gsm_map.qos.ber", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_ber_vals), 0xf0, + NULL, HFILL }}, + { &hf_gsm_map_qos_sdu_err_rat, + { "SDU error ratio", "gsm_map.qos.sdu_err_rat", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_sdu_err_rat_vals), 0x0f, + NULL, HFILL }}, + { &hf_gsm_map_qos_traff_hdl_pri, + { "Traffic handling priority", "gsm_map.qos.traff_hdl_pri", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traff_hdl_pri_vals), 0x03, + NULL, HFILL }}, + + { &hf_gsm_map_qos_max_sdu, + { "Maximum SDU size", "gsm_map.qos.max_sdu", + FT_UINT32, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_gsm_map_max_brate_ulink, + { "Maximum bit rate for uplink in kbit/s", "gsm_map.qos.max_brate_ulink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Maximum bit rate for uplink", HFILL }}, + { &hf_gsm_map_max_brate_dlink, + { "Maximum bit rate for downlink in kbit/s", "gsm_map.qos.max_brate_dlink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Maximum bit rate for downlink", HFILL }}, + { &hf_gsm_map_qos_transfer_delay, + { "Transfer delay (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.transfer_delay", + FT_UINT8, BASE_DEC, NULL, 0xfc, + "Transfer delay", HFILL }}, + { &hf_gsm_map_guaranteed_max_brate_ulink, + { "Guaranteed bit rate for uplink in kbit/s", "gsm_map.qos.brate_ulink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Guaranteed bit rate for uplink", HFILL }}, + { &hf_gsm_map_guaranteed_max_brate_dlink, + { "Guaranteed bit rate for downlink in kbit/s", "gsm_map.qos.brate_dlink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Guaranteed bit rate for downlink", HFILL }}, + { &hf_gsm_map_GSNAddress_IPv4, + { "GSN-Address IPv4", "gsm_map.gsnaddress_ipv4", + FT_IPv4, BASE_NONE, NULL, 0, + "IPAddress IPv4", HFILL }}, + { &hf_gsm_map_GSNAddress_IPv6, + { "GSN Address IPv6", "gsm_map.gsnaddress_ipv6", + FT_IPv6, BASE_NONE, NULL, 0, + "IPAddress IPv6", HFILL }}, + { &hf_gsm_map_ranap_service_Handover, + { "service-Handover", "gsm_map.ranap.service_Handover", + FT_UINT32, BASE_DEC, VALS(ranap_Service_Handover_vals), 0, + "gsm_map.ranap.Service_Handover", HFILL }}, + { &hf_gsm_map_IntegrityProtectionInformation, + { "IntegrityProtectionInformation", "gsm_map.ranap.IntegrityProtectionInformation", + FT_NONE, BASE_NONE, NULL, 0, + "gsm_map.ranap.IntegrityProtectionInformation", HFILL }}, + { &hf_gsm_map_EncryptionInformation, + { "EncryptionInformation", "gsm_map.ranap.EncryptionInformation", + FT_NONE, BASE_NONE, NULL, 0, + "gsm_map.ranap.EncryptionInformation", HFILL }}, + { &hf_gsm_map_ss_SS_UserData, + { "SS-UserData", "gsm_ss.SS_UserData", + FT_STRING, BASE_NONE, NULL, 0, + "gsm_map.ss.SS_UserData", HFILL }}, + { &hf_gsm_map_cbs_coding_grp, + { "Coding Group","gsm_map.cbs.coding_grp", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_data_coding_scheme_coding_grp_vals_ext, 0xf0, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp0_lang, + { "Language","gsm_map.cbs.coding_grp0_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp0_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp1_lang, + { "Language","gsm_map.cbs.coding_grp1_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp1_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp2_lang, + { "Language","gsm_map.cbs.coding_grp2_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp2_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp3_lang, + { "Language","gsm_map.cbs.coding_grp3_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp3_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_comp, + { "Compressed indicator","gsm_map.cbs.coding_grp4_7_comp", + FT_BOOLEAN, 8, TFS(&gsm_map_cbs_coding_grp4_7_comp_vals), 0x20, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_class_ind, + { "Message Class present","gsm_map.cbs.coding_grp4_7_class_ind", + FT_BOOLEAN, 8, TFS(&gsm_map_cbs_coding_grp4_7_class_ind_vals), 0x10, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_char_set, + { "Character set being used","gsm_map.cbs.coding_grp4_7_char_set", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp4_7_char_set_vals), 0x0c, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_class, + { "Message Class","gsm_map.cbs.coding_grp4_7_class", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp4_7_class_vals), 0x03, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp15_mess_code, + { "Message coding","gsm_map.cbs.cbs_coding_grp15_mess_code", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp15_mess_code_vals), 0x04, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp15_class, + { "Message Class","gsm_map.cbs.gsm_map_cbs_coding_grp15_class", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp15_class_vals), 0x03, + NULL, HFILL } + }, + { &hf_gsm_map_ie_tag, + { "Tag", "gsm_map.ie_tag", + FT_UINT8, BASE_DEC, VALS(gsm_map_tag_vals), 0, + "GSM 04.08 tag", HFILL }}, + { &hf_gsm_map_len, + { "Length", "gsm_map.length", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_disc_par, + { "Discrimination parameter", "gsm_map.disc_par", + FT_UINT8, BASE_DEC, VALS(gsm_map_disc_par_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_dlci, + { "DLCI", "gsm_map.dlci", + FT_UINT8, BASE_DEC, NULL, 0, + "Data Link Connection Indicator", HFILL }}, + { &hf_gsm_apn_str, + { "APN", "gsm_map.apn_str", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_rat, + { "RAT", "gsm_map.ericsson.locationInformation.rat", + FT_UINT8, BASE_DEC, VALS(gsm_map_ericsson_locationInformation_rat_vals), 0, + "Radio Access Technology", HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_lac, + { "LAC", "gsm_map.ericsson.locationInformation.lac", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + "Location Area Code", HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_ci, + { "CI", "gsm_map.ericsson.locationInformation.ci", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + "Cell Identity", HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_sac, + { "SAC", "gsm_map.ericsson.locationInformation.sac", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + "Service Area Code", HFILL }}, + { &hf_gsm_map_ussd_string, + { "USSD String", "gsm_map.ussd_string", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_spare_bits, + { "Spare bit(s)", "gsm_map.spare_bits", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_signalling_ind, + { "Signalling indication", "gsm_map.qos.signalling_ind", + FT_BOOLEAN, 8, TFS(&gsm_map_qos_signalling_ind_value), 0x10, + NULL, HFILL } + }, + { &hf_gsm_map_qos_source_stat_desc, + { "Source statistics description", "gsm_map.qos.source_stat_desc", + FT_UINT8, BASE_DEC, NULL, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_qos_max_bitrate_upl_ext, + { "Maximum bitrate for uplink (extended)", "gsm_map.qos.max_bitrate_upl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_max_bitrate_downl_ext, + { "Maximum bitrate for downlink (extended)", "gsm_map.qos.max_bitrate_downl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_upl_ext, + { "Guaranteed bitrate for uplink (extended)", "gsm_map.qos.guar_bitrate_upl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_downl_ext, + { "Guaranteed bitrate for downlink (extended)", "gsm_map.qos.guar_bitrate_downl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, +/* + { &hf_gsm_map_qos_max_bitrate_upl_ext2, + { "Maximum bitrate for uplink (extended-2)", "gsm_map.qos.max_bitrate_upl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_max_bitrate_downl_ext2, + { "Maximum bitrate for downlink (extended-2)", "gsm_map.qos.max_bitrate_downl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_upl_ext2, + { "Guaranteed bitrate for uplink (extended-2)", "gsm_map.qos.guar_bitrate_upl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_downl_ext2, + { "Guaranteed bitrate for downlink (extended-2)", "gsm_map.qos.guar_bitrate_downl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + */ + { &hf_gsm_map_earp_pvi, + { "PVI Pre-emption Vulnerability", "gsm_map.EARP_pre_emption_par_vulnerability", + FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x01, + NULL, HFILL } + }, + { &hf_gsm_map_earp_pl, + { "PL Priority Level", "gsm_map.EARP_priority_level", + FT_UINT8, BASE_DEC, NULL, 0x3C, + NULL, HFILL } + }, + { &hf_gsm_map_earp_pci, + { "PCI Pre-emption Capability", "gsm_map.EARP_pre_emption_Capability", + FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x40, + NULL, HFILL } + }, + + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + + { &hf_gsm_map_privateExtensionList, + { "privateExtensionList", "gsm_map.privateExtensionList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_pcs_Extensions, + { "pcs-Extensions", "gsm_map.pcs_Extensions_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_slr_Arg_PCS_Extensions, + { "slr-Arg-PCS-Extensions", "gsm_map.slr_Arg_PCS_Extensions_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_PrivateExtensionList_item, + { "PrivateExtension", "gsm_map.PrivateExtension_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_extId, + { "extId", "gsm_map.extId", + FT_OID, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_extType, + { "extType", "gsm_map.extType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_na_ESRK_Request, + { "na-ESRK-Request", "gsm_map.na_ESRK_Request_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + +/* --- Module MAP-CommonDataTypes --- --- --- */ + + { &hf_gsm_map_gsm_map_ISDN_AddressString_PDU, + { "ISDN-AddressString", "gsm_map.ISDN_AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_protocolId, + { "protocolId", "gsm_map.protocolId", + FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_signalInfo, + { "signalInfo", "gsm_map.signalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_extensionContainer, + { "extensionContainer", "gsm_map.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ext_ProtocolId, + { "ext-ProtocolId", "gsm_map.ext_ProtocolId", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_ProtocolId_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_accessNetworkProtocolId, + { "accessNetworkProtocolId", "gsm_map.accessNetworkProtocolId", + FT_UINT32, BASE_DEC, VALS(gsm_map_AccessNetworkProtocolId_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_signalInfo_01, + { "signalInfo", "gsm_map.signalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "LongSignalInfo", HFILL }}, + { &hf_gsm_map_imsi, + { "imsi", "gsm_map.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_imsi_WithLMSI, + { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lmsi, + { "lmsi", "gsm_map.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_tmsi, + { "tmsi", "gsm_map.tmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_HLR_List_item, + { "HLR-Id", "gsm_map.HLR_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_naea_PreferredCIC, + { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC", + FT_BYTES, BASE_NONE, NULL, 0, + "NAEA_CIC", HFILL }}, + { &hf_gsm_map_msisdn, + { "msisdn", "gsm_map.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_externalAddress, + { "externalAddress", "gsm_map.externalAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_diameter_Name, + { "diameter-Name", "gsm_map.diameter_Name", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_diameter_Realm, + { "diameter-Realm", "gsm_map.diameter_Realm", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength, + { "cellGlobalIdOrServiceAreaIdFixedLength", "gsm_map.cellGlobalIdOrServiceAreaIdFixedLength", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_laiFixedLength, + { "laiFixedLength", "gsm_map.laiFixedLength", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_bearerService, + { "bearerService", "gsm_map.bearerService", + FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0, + "BearerServiceCode", HFILL }}, + { &hf_gsm_map_teleservice, + { "teleservice", "gsm_map.teleservice", + FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0, + "TeleserviceCode", HFILL }}, + { &hf_gsm_map_ext_BearerService, + { "ext-BearerService", "gsm_map.ext_BearerService", + FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0, + "Ext_BearerServiceCode", HFILL }}, + { &hf_gsm_map_ext_Teleservice, + { "ext-Teleservice", "gsm_map.ext_Teleservice", + FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0, + "Ext_TeleserviceCode", HFILL }}, + { &hf_gsm_map_maximumentitledPriority, + { "maximumentitledPriority", "gsm_map.maximumentitledPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_defaultPriority, + { "defaultPriority", "gsm_map.defaultPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_ss_Code, + { "ss-Code", "gsm_map.ss_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_Status, + { "ss-Status", "gsm_map.ss_Status", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_SS_Status", HFILL }}, + { &hf_gsm_map_nbrSB, + { "nbrSB", "gsm_map.nbrSB", + FT_UINT32, BASE_DEC, NULL, 0, + "MaxMC_Bearers", HFILL }}, + { &hf_gsm_map_nbrUser, + { "nbrUser", "gsm_map.nbrUser", + FT_UINT32, BASE_DEC, NULL, 0, + "MC_Bearers", HFILL }}, + +/* --- Module MAP-SS-DataTypes --- --- --- */ + + { &hf_gsm_map_ss_ss_Code, + { "ss-Code", "gsm_map.ss.ss_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_basicService, + { "basicService", "gsm_map.ss.basicService", + FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0, + "BasicServiceCode", HFILL }}, + { &hf_gsm_map_ss_forwardedToNumber, + { "forwardedToNumber", "gsm_map.ss.forwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_ss_forwardedToSubaddress, + { "forwardedToSubaddress", "gsm_map.ss.forwardedToSubaddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_SubaddressString", HFILL }}, + { &hf_gsm_map_ss_noReplyConditionTime, + { "noReplyConditionTime", "gsm_map.ss.noReplyConditionTime", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_defaultPriority, + { "defaultPriority", "gsm_map.ss.defaultPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_ss_nbrUser, + { "nbrUser", "gsm_map.ss.nbrUser", + FT_UINT32, BASE_DEC, NULL, 0, + "MC_Bearers", HFILL }}, + { &hf_gsm_map_ss_longFTN_Supported, + { "longFTN-Supported", "gsm_map.ss.longFTN_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_forwardingInfo, + { "forwardingInfo", "gsm_map.ss.forwardingInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_callBarringInfo, + { "callBarringInfo", "gsm_map.ss.callBarringInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ss_Data, + { "ss-Data", "gsm_map.ss.ss_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_forwardingFeatureList, + { "forwardingFeatureList", "gsm_map.ss.forwardingFeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ForwardingFeatureList_item, + { "ForwardingFeature", "gsm_map.ss.ForwardingFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ss_Status, + { "ss-Status", "gsm_map.ss.ss_Status", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_forwardedToNumber_01, + { "forwardedToNumber", "gsm_map.ss.forwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ss_forwardingOptions, + { "forwardingOptions", "gsm_map.ss.forwardingOptions", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_longForwardedToNumber, + { "longForwardedToNumber", "gsm_map.ss.longForwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "FTN_AddressString", HFILL }}, + { &hf_gsm_map_ss_callBarringFeatureList, + { "callBarringFeatureList", "gsm_map.ss.callBarringFeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_CallBarringFeatureList_item, + { "CallBarringFeature", "gsm_map.ss.CallBarringFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ss_SubscriptionOption, + { "ss-SubscriptionOption", "gsm_map.ss.ss_SubscriptionOption", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_SS_SubscriptionOption_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_basicServiceGroupList, + { "basicServiceGroupList", "gsm_map.ss.basicServiceGroupList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_cliRestrictionOption, + { "cliRestrictionOption", "gsm_map.ss.cliRestrictionOption", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_CliRestrictionOption_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_overrideCategory, + { "overrideCategory", "gsm_map.ss.overrideCategory", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_OverrideCategory_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_maximumEntitledPriority, + { "maximumEntitledPriority", "gsm_map.ss.maximumEntitledPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_ss_ccbs_FeatureList, + { "ccbs-FeatureList", "gsm_map.ss.ccbs_FeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_nbrSB, + { "nbrSB", "gsm_map.ss.nbrSB", + FT_UINT32, BASE_DEC, NULL, 0, + "MaxMC_Bearers", HFILL }}, + { &hf_gsm_map_ss_nbrSN, + { "nbrSN", "gsm_map.ss.nbrSN", + FT_UINT32, BASE_DEC, NULL, 0, + "MC_Bearers", HFILL }}, + { &hf_gsm_map_ss_CCBS_FeatureList_item, + { "CCBS-Feature", "gsm_map.ss.CCBS_Feature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ccbs_Index, + { "ccbs-Index", "gsm_map.ss.ccbs_Index", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_b_subscriberNumber, + { "b-subscriberNumber", "gsm_map.ss.b_subscriberNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ss_b_subscriberSubaddress, + { "b-subscriberSubaddress", "gsm_map.ss.b_subscriberSubaddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_SubaddressString", HFILL }}, + { &hf_gsm_map_ss_basicServiceGroup, + { "basicServiceGroup", "gsm_map.ss.basicServiceGroup", + FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0, + "BasicServiceCode", HFILL }}, + { &hf_gsm_map_ss_genericServiceInfo, + { "genericServiceInfo", "gsm_map.ss.genericServiceInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ussd_DataCodingScheme, + { "ussd-DataCodingScheme", "gsm_map.ss.ussd_DataCodingScheme", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ussd_String, + { "ussd-String", "gsm_map.ss.ussd_String", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_alertingPattern, + { "alertingPattern", "gsm_map.ss.alertingPattern", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_msisdn, + { "msisdn", "gsm_map.ss.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ss_SS_List_item, + { "SS-Code", "gsm_map.ss.SS_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_BasicServiceGroupList_item, + { "BasicServiceCode", "gsm_map.ss.BasicServiceCode", + FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_imsi, + { "imsi", "gsm_map.ss.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ss_Event, + { "ss-Event", "gsm_map.ss.ss_Event", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + "SS_Code", HFILL }}, + { &hf_gsm_map_ss_ss_EventSpecification, + { "ss-EventSpecification", "gsm_map.ss.ss_EventSpecification", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_extensionContainer, + { "extensionContainer", "gsm_map.ss.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ccbs_RequestState, + { "ccbs-RequestState", "gsm_map.ss.ccbs_RequestState", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_CCBS_RequestState_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_SS_EventSpecification_item, + { "AddressString", "gsm_map.ss.AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ccbs_Data, + { "ccbs-Data", "gsm_map.ss.ccbs_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_ccbs_Feature, + { "ccbs-Feature", "gsm_map.ss.ccbs_Feature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_translatedB_Number, + { "translatedB-Number", "gsm_map.ss.translatedB_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ss_serviceIndicator, + { "serviceIndicator", "gsm_map.ss.serviceIndicator", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ss_callInfo, + { "callInfo", "gsm_map.ss.callInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ss_networkSignalInfo, + { "networkSignalInfo", "gsm_map.ss.networkSignalInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ss_ServiceIndicator_clir_invoked, + { "clir-invoked", "gsm.map.ss.ServiceIndicator.clir.invoked", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ss_ServiceIndicator_camel_invoked, + { "camel-invoked", "gsm.map.ss.ServiceIndicator.camel.invoked", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + +/* --- Module MAP-ER-DataTypes --- --- --- */ + + { &hf_gsm_map_er_roamingNotAllowedCause, + { "roamingNotAllowedCause", "gsm_map.er.roamingNotAllowedCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_RoamingNotAllowedCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_extensionContainer, + { "extensionContainer", "gsm_map.er.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_additionalRoamingNotAllowedCause, + { "additionalRoamingNotAllowedCause", "gsm_map.er.additionalRoamingNotAllowedCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_AdditionalRoamingNotAllowedCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_callBarringCause, + { "callBarringCause", "gsm_map.er.callBarringCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_CallBarringCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_extensibleCallBarredParam, + { "extensibleCallBarredParam", "gsm_map.er.extensibleCallBarredParam_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_unauthorisedMessageOriginator, + { "unauthorisedMessageOriginator", "gsm_map.er.unauthorisedMessageOriginator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_anonymousCallRejection, + { "anonymousCallRejection", "gsm_map.er.anonymousCallRejection_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_cug_RejectCause, + { "cug-RejectCause", "gsm_map.er.cug_RejectCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_CUG_RejectCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_ss_Code, + { "ss-Code", "gsm_map.er.ss_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_basicService, + { "basicService", "gsm_map.er.basicService", + FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0, + "BasicServiceCode", HFILL }}, + { &hf_gsm_map_er_ss_Status, + { "ss-Status", "gsm_map.er.ss_Status", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause, + { "sm-EnumeratedDeliveryFailureCause", "gsm_map.er.sm_EnumeratedDeliveryFailureCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_SM_EnumeratedDeliveryFailureCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_diagnosticInfo, + { "diagnosticInfo", "gsm_map.er.diagnosticInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "SignalInfo", HFILL }}, + { &hf_gsm_map_er_absentSubscriberDiagnosticSM, + { "absentSubscriberDiagnosticSM", "gsm_map.er.absentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_additionalAbsentSubscriberDiagnosticSM, + { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.er.additionalAbsentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_er_imsi, + { "imsi", "gsm_map.er.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_requestedRetransmissionTime, + { "requestedRetransmissionTime", "gsm_map.er.requestedRetransmissionTime", + FT_BYTES, BASE_NONE, NULL, 0, + "Time", HFILL }}, + { &hf_gsm_map_er_userIdentifierAlert, + { "userIdentifierAlert", "gsm_map.er.userIdentifierAlert", + FT_BYTES, BASE_NONE, NULL, 0, + "IMSI", HFILL }}, + { &hf_gsm_map_er_networkResource, + { "networkResource", "gsm_map.er.networkResource", + FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_extensibleSystemFailureParam, + { "extensibleSystemFailureParam", "gsm_map.er.extensibleSystemFailureParam_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_additionalNetworkResource, + { "additionalNetworkResource", "gsm_map.er.additionalNetworkResource", + FT_UINT32, BASE_DEC, VALS(gsm_map_AdditionalNetworkResource_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_failureCauseParam, + { "failureCauseParam", "gsm_map.er.failureCauseParam", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_FailureCauseParam_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_unexpectedSubscriber, + { "unexpectedSubscriber", "gsm_map.er.unexpectedSubscriber_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_shapeOfLocationEstimateNotSupported, + { "shapeOfLocationEstimateNotSupported", "gsm_map.er.shapeOfLocationEstimateNotSupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_neededLcsCapabilityNotSupportedInServingNode, + { "neededLcsCapabilityNotSupportedInServingNode", "gsm_map.er.neededLcsCapabilityNotSupportedInServingNode_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_unknownSubscriberDiagnostic, + { "unknownSubscriberDiagnostic", "gsm_map.er.unknownSubscriberDiagnostic", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_UnknownSubscriberDiagnostic_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_absentSubscriberReason, + { "absentSubscriberReason", "gsm_map.er.absentSubscriberReason", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_AbsentSubscriberReason_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_ccbs_Possible, + { "ccbs-Possible", "gsm_map.er.ccbs_Possible_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_ccbs_Busy, + { "ccbs-Busy", "gsm_map.er.ccbs_Busy_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_gprsConnectionSuspended, + { "gprsConnectionSuspended", "gsm_map.er.gprsConnectionSuspended_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_er_unauthorizedLCSClient_Diagnostic, + { "unauthorizedLCSClient-Diagnostic", "gsm_map.er.unauthorizedLCSClient_Diagnostic", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_UnauthorizedLCSClient_Diagnostic_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_er_positionMethodFailure_Diagnostic, + { "positionMethodFailure-Diagnostic", "gsm_map.er.positionMethodFailure_Diagnostic", + FT_UINT32, BASE_DEC, VALS(gsm_map_er_PositionMethodFailure_Diagnostic_vals), 0, + NULL, HFILL }}, + +/* --- Module MAP-SM-DataTypes --- --- --- */ + + { &hf_gsm_map_sm_msisdn, + { "msisdn", "gsm_map.sm.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_sm_RP_PRI, + { "sm-RP-PRI", "gsm_map.sm.sm_RP_PRI", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_sm_serviceCentreAddress, + { "serviceCentreAddress", "gsm_map.sm.serviceCentreAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_sm_extensionContainer, + { "extensionContainer", "gsm_map.sm.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_gprsSupportIndicator, + { "gprsSupportIndicator", "gsm_map.sm.gprsSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_sm_RP_MTI, + { "sm-RP-MTI", "gsm_map.sm.sm_RP_MTI", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_sm_RP_SMEA, + { "sm-RP-SMEA", "gsm_map.sm.sm_RP_SMEA", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_sm_deliveryNotIntended, + { "sm-deliveryNotIntended", "gsm_map.sm.sm_deliveryNotIntended", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryNotIntended_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_ip_sm_gwGuidanceIndicator, + { "ip-sm-gwGuidanceIndicator", "gsm_map.sm.ip_sm_gwGuidanceIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_imsi, + { "imsi", "gsm_map.sm.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_t4_Trigger_Indicator, + { "t4-Trigger-Indicator", "gsm_map.sm.t4_Trigger_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_singleAttemptDelivery, + { "singleAttemptDelivery", "gsm_map.sm.singleAttemptDelivery_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_correlationID, + { "correlationID", "gsm_map.sm.correlationID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smsf_supportIndicator, + { "smsf-supportIndicator", "gsm_map.sm.smsf_supportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_locationInfoWithLMSI, + { "locationInfoWithLMSI", "gsm_map.sm.locationInfoWithLMSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_ip_sm_gwGuidance, + { "ip-sm-gwGuidance", "gsm_map.sm.ip_sm_gwGuidance_element", + FT_NONE, BASE_NONE, NULL, 0, + "IP_SM_GW_Guidance", HFILL }}, + { &hf_gsm_map_sm_minimumDeliveryTimeValue, + { "minimumDeliveryTimeValue", "gsm_map.sm.minimumDeliveryTimeValue", + FT_UINT32, BASE_DEC, NULL, 0, + "SM_DeliveryTimerValue", HFILL }}, + { &hf_gsm_map_sm_recommendedDeliveryTimeValue, + { "recommendedDeliveryTimeValue", "gsm_map.sm.recommendedDeliveryTimeValue", + FT_UINT32, BASE_DEC, NULL, 0, + "SM_DeliveryTimerValue", HFILL }}, + { &hf_gsm_map_sm_networkNode_Number, + { "networkNode-Number", "gsm_map.sm.networkNode_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_lmsi, + { "lmsi", "gsm_map.sm.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_gprsNodeIndicator, + { "gprsNodeIndicator", "gsm_map.sm.gprsNodeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_additional_Number, + { "additional-Number", "gsm_map.sm.additional_Number", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_Additional_Number_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_networkNodeDiameterAddress, + { "networkNodeDiameterAddress", "gsm_map.sm.networkNodeDiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_additionalNetworkNodeDiameterAddress, + { "additionalNetworkNodeDiameterAddress", "gsm_map.sm.additionalNetworkNodeDiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_thirdNumber, + { "thirdNumber", "gsm_map.sm.thirdNumber", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_Additional_Number_vals), 0, + "Additional_Number", HFILL }}, + { &hf_gsm_map_sm_thirdNetworkNodeDiameterAddress, + { "thirdNetworkNodeDiameterAddress", "gsm_map.sm.thirdNetworkNodeDiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_imsNodeIndicator, + { "imsNodeIndicator", "gsm_map.sm.imsNodeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smsf_3gpp_Number, + { "smsf-3gpp-Number", "gsm_map.sm.smsf_3gpp_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_smsf_3gpp_DiameterAddress, + { "smsf-3gpp-DiameterAddress", "gsm_map.sm.smsf_3gpp_DiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_smsf_non_3gpp_Number, + { "smsf-non-3gpp-Number", "gsm_map.sm.smsf_non_3gpp_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_smsf_non_3gpp_DiameterAddress, + { "smsf-non-3gpp-DiameterAddress", "gsm_map.sm.smsf_non_3gpp_DiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_smsf_3gpp_address_indicator, + { "smsf-3gpp-address-indicator", "gsm_map.sm.smsf_3gpp_address_indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smsf_non_3gpp_address_indicator, + { "smsf-non-3gpp-address-indicator", "gsm_map.sm.smsf_non_3gpp_address_indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_msc_Number, + { "msc-Number", "gsm_map.sm.msc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_sgsn_Number, + { "sgsn-Number", "gsm_map.sm.sgsn_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_sm_RP_DA, + { "sm-RP-DA", "gsm_map.sm.sm_RP_DA", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_RP_DA_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_sm_RP_OA, + { "sm-RP-OA", "gsm_map.sm.sm_RP_OA", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_RP_OA_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_sm_RP_UI, + { "sm-RP-UI", "gsm_map.sm.sm_RP_UI", + FT_BYTES, BASE_NONE, NULL, 0, + "SignalInfo", HFILL }}, + { &hf_gsm_map_sm_sm_DeliveryOutcome, + { "sm-DeliveryOutcome", "gsm_map.sm.sm_DeliveryOutcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_moreMessagesToSend, + { "moreMessagesToSend", "gsm_map.sm.moreMessagesToSend_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smDeliveryTimer, + { "smDeliveryTimer", "gsm_map.sm.smDeliveryTimer", + FT_UINT32, BASE_DEC, NULL, 0, + "SM_DeliveryTimerValue", HFILL }}, + { &hf_gsm_map_sm_smDeliveryStartTime, + { "smDeliveryStartTime", "gsm_map.sm.smDeliveryStartTime", + FT_BYTES, BASE_NONE, NULL, 0, + "Time", HFILL }}, + { &hf_gsm_map_sm_smsOverIP_OnlyIndicator, + { "smsOverIP-OnlyIndicator", "gsm_map.sm.smsOverIP_OnlyIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_maximumRetransmissionTime, + { "maximumRetransmissionTime", "gsm_map.sm.maximumRetransmissionTime", + FT_BYTES, BASE_NONE, NULL, 0, + "Time", HFILL }}, + { &hf_gsm_map_sm_smsGmscAddress, + { "smsGmscAddress", "gsm_map.sm.smsGmscAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_smsGmscDiameterAddress, + { "smsGmscDiameterAddress", "gsm_map.sm.smsGmscDiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_hlr_id, + { "hlr-id", "gsm_map.sm.hlr_id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_sip_uri_A, + { "sip-uri-A", "gsm_map.sm.sip_uri_A", + FT_BYTES, BASE_NONE, NULL, 0, + "SIP_URI", HFILL }}, + { &hf_gsm_map_sm_sip_uri_B, + { "sip-uri-B", "gsm_map.sm.sip_uri_B", + FT_BYTES, BASE_NONE, NULL, 0, + "SIP_URI", HFILL }}, + { &hf_gsm_map_sm_imsi_01, + { "imsi", "gsm_map.sm.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_lmsi_01, + { "lmsi", "gsm_map.sm.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_serviceCentreAddressDA, + { "serviceCentreAddressDA", "gsm_map.sm.serviceCentreAddressDA", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_noSM_RP_DA, + { "noSM-RP-DA", "gsm_map.sm.noSM_RP_DA_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_msisdn_01, + { "msisdn", "gsm_map.sm.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_serviceCentreAddressOA, + { "serviceCentreAddressOA", "gsm_map.sm.serviceCentreAddressOA", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_noSM_RP_OA, + { "noSM-RP-OA", "gsm_map.sm.noSM_RP_OA_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_absentSubscriberDiagnosticSM, + { "absentSubscriberDiagnosticSM", "gsm_map.sm.absentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_deliveryOutcomeIndicator, + { "deliveryOutcomeIndicator", "gsm_map.sm.deliveryOutcomeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_additionalSM_DeliveryOutcome, + { "additionalSM-DeliveryOutcome", "gsm_map.sm.additionalSM_DeliveryOutcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0, + "SM_DeliveryOutcome", HFILL }}, + { &hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM, + { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.sm.additionalAbsentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_sm_ip_sm_gw_Indicator, + { "ip-sm-gw-Indicator", "gsm_map.sm.ip_sm_gw_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome, + { "ip-sm-gw-sm-deliveryOutcome", "gsm_map.sm.ip_sm_gw_sm_deliveryOutcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0, + "SM_DeliveryOutcome", HFILL }}, + { &hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM, + { "ip-sm-gw-absentSubscriberDiagnosticSM", "gsm_map.sm.ip_sm_gw_absentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_sm_smsf_3gpp_deliveryOutcomeIndicator, + { "smsf-3gpp-deliveryOutcomeIndicator", "gsm_map.sm.smsf_3gpp_deliveryOutcomeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smsf_3gpp_deliveryOutcome, + { "smsf-3gpp-deliveryOutcome", "gsm_map.sm.smsf_3gpp_deliveryOutcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0, + "SM_DeliveryOutcome", HFILL }}, + { &hf_gsm_map_sm_smsf_3gpp_absentSubscriberDiagSM, + { "smsf-3gpp-absentSubscriberDiagSM", "gsm_map.sm.smsf_3gpp_absentSubscriberDiagSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_sm_smsf_non_3gpp_deliveryOutcomeIndicator, + { "smsf-non-3gpp-deliveryOutcomeIndicator", "gsm_map.sm.smsf_non_3gpp_deliveryOutcomeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smsf_non_3gpp_deliveryOutcome, + { "smsf-non-3gpp-deliveryOutcome", "gsm_map.sm.smsf_non_3gpp_deliveryOutcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0, + "SM_DeliveryOutcome", HFILL }}, + { &hf_gsm_map_sm_smsf_non_3gpp_absentSubscriberDiagSM, + { "smsf-non-3gpp-absentSubscriberDiagSM", "gsm_map.sm.smsf_non_3gpp_absentSubscriberDiagSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_sm_storedMSISDN, + { "storedMSISDN", "gsm_map.sm.storedMSISDN", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_maximumUeAvailabilityTime, + { "maximumUeAvailabilityTime", "gsm_map.sm.maximumUeAvailabilityTime", + FT_BYTES, BASE_NONE, NULL, 0, + "Time", HFILL }}, + { &hf_gsm_map_sm_smsGmscAlertEvent, + { "smsGmscAlertEvent", "gsm_map.sm.smsGmscAlertEvent", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SmsGmsc_Alert_Event_vals), 0, + "SmsGmsc_Alert_Event", HFILL }}, + { &hf_gsm_map_sm_newSGSNNumber, + { "newSGSNNumber", "gsm_map.sm.newSGSNNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_newSGSNDiameterAddress, + { "newSGSNDiameterAddress", "gsm_map.sm.newSGSNDiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_newMMENumber, + { "newMMENumber", "gsm_map.sm.newMMENumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_newMMEDiameterAddress, + { "newMMEDiameterAddress", "gsm_map.sm.newMMEDiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_sm_newMSCNumber, + { "newMSCNumber", "gsm_map.sm.newMSCNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_sm_mw_Status, + { "mw-Status", "gsm_map.sm.mw_Status", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_smsf3gppAbsentSubscriberDiagnosticSM, + { "smsf3gppAbsentSubscriberDiagnosticSM", "gsm_map.sm.smsf3gppAbsentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_sm_smsfNon3gppAbsentSubscriberDiagnosticSM, + { "smsfNon3gppAbsentSubscriberDiagnosticSM", "gsm_map.sm.smsfNon3gppAbsentSubscriberDiagnosticSM", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_sm_alertReason, + { "alertReason", "gsm_map.sm.alertReason", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_AlertReason_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_alertReasonIndicator, + { "alertReasonIndicator", "gsm_map.sm.alertReasonIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_additionalAlertReasonIndicator, + { "additionalAlertReasonIndicator", "gsm_map.sm.additionalAlertReasonIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_asciCallReference, + { "asciCallReference", "gsm_map.sm.asciCallReference", + FT_BYTES, BASE_NONE, NULL, 0, + "ASCI_CallReference", HFILL }}, + { &hf_gsm_map_sm_dispatcherList, + { "dispatcherList", "gsm_map.sm.dispatcherList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_ongoingCall, + { "ongoingCall", "gsm_map.sm.ongoingCall_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_additionalDispatcherList, + { "additionalDispatcherList", "gsm_map.sm.additionalDispatcherList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_DispatcherList_item, + { "ISDN-AddressString", "gsm_map.sm.ISDN_AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_AdditionalDispatcherList_item, + { "ISDN-AddressString", "gsm_map.sm.ISDN_AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_MW_Status_sc_AddressNotIncluded, + { "sc-AddressNotIncluded", "gsm.map.sm.MW.Status.sc.AddressNotIncluded", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_sm_MW_Status_mnrf_Set, + { "mnrf-Set", "gsm.map.sm.MW.Status.mnrf.Set", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_sm_MW_Status_mcef_Set, + { "mcef-Set", "gsm.map.sm.MW.Status.mcef.Set", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_sm_MW_Status_mnrg_Set, + { "mnrg-Set", "gsm.map.sm.MW.Status.mnrg.Set", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_sm_MW_Status_mnr5g_Set, + { "mnr5g-Set", "gsm.map.sm.MW.Status.mnr5g.Set", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_sm_MW_Status_mnr5gn3g_Set, + { "mnr5gn3g-Set", "gsm.map.sm.MW.Status.mnr5gn3g.Set", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + +/* --- Module MAP-OM-DataTypes --- --- --- */ + + { &hf_gsm_map_om_imsi, + { "imsi", "gsm_map.om.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceReference, + { "traceReference", "gsm_map.om.traceReference", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceType, + { "traceType", "gsm_map.om.traceType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_omc_Id, + { "omc-Id", "gsm_map.om.omc_Id", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_om_extensionContainer, + { "extensionContainer", "gsm_map.om.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceReference2, + { "traceReference2", "gsm_map.om.traceReference2", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceDepthList, + { "traceDepthList", "gsm_map.om.traceDepthList_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceNE_TypeList, + { "traceNE-TypeList", "gsm_map.om.traceNE_TypeList", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceInterfaceList, + { "traceInterfaceList", "gsm_map.om.traceInterfaceList_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceEventList, + { "traceEventList", "gsm_map.om.traceEventList_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceCollectionEntity, + { "traceCollectionEntity", "gsm_map.om.traceCollectionEntity", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_om_mdt_Configuration, + { "mdt-Configuration", "gsm_map.om.mdt_Configuration_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_jobType, + { "jobType", "gsm_map.om.jobType", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_JobType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_om_areaScope, + { "areaScope", "gsm_map.om.areaScope_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_listOfMeasurements, + { "listOfMeasurements", "gsm_map.om.listOfMeasurements", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_reportingTrigger, + { "reportingTrigger", "gsm_map.om.reportingTrigger", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_reportInterval, + { "reportInterval", "gsm_map.om.reportInterval", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_ReportInterval_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_om_reportAmount, + { "reportAmount", "gsm_map.om.reportAmount", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_ReportAmount_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_om_eventThresholdRSRP, + { "eventThresholdRSRP", "gsm_map.om.eventThresholdRSRP", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_eventThresholdRSRQ, + { "eventThresholdRSRQ", "gsm_map.om.eventThresholdRSRQ", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_loggingInterval, + { "loggingInterval", "gsm_map.om.loggingInterval", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_LoggingInterval_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_om_loggingDuration, + { "loggingDuration", "gsm_map.om.loggingDuration", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_LoggingDuration_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_om_measurementPeriodUMTS, + { "measurementPeriodUMTS", "gsm_map.om.measurementPeriodUMTS", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodUMTS_vals), 0, + "PeriodUMTS", HFILL }}, + { &hf_gsm_map_om_measurementPeriodLTE, + { "measurementPeriodLTE", "gsm_map.om.measurementPeriodLTE", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodLTE_vals), 0, + "PeriodLTE", HFILL }}, + { &hf_gsm_map_om_collectionPeriodRRM_UMTS, + { "collectionPeriodRRM-UMTS", "gsm_map.om.collectionPeriodRRM_UMTS", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodUMTS_vals), 0, + "PeriodUMTS", HFILL }}, + { &hf_gsm_map_om_collectionPeriodRRM_LTE, + { "collectionPeriodRRM-LTE", "gsm_map.om.collectionPeriodRRM_LTE", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodLTE_vals), 0, + "PeriodLTE", HFILL }}, + { &hf_gsm_map_om_positioningMethod, + { "positioningMethod", "gsm_map.om.positioningMethod", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_measurementQuantity, + { "measurementQuantity", "gsm_map.om.measurementQuantity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_eventThreshold1F, + { "eventThreshold1F", "gsm_map.om.eventThreshold1F", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_eventThreshold1I, + { "eventThreshold1I", "gsm_map.om.eventThreshold1I", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_mdt_Allowed_PLMN_List, + { "mdt-Allowed-PLMN-List", "gsm_map.om.mdt_Allowed_PLMN_List", + FT_UINT32, BASE_DEC, NULL, 0, + "MDT_Allowed_PLMNId_List", HFILL }}, + { &hf_gsm_map_om_MDT_Allowed_PLMNId_List_item, + { "PLMN-Id", "gsm_map.om.PLMN_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_cgi_List, + { "cgi-List", "gsm_map.om.cgi_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_e_utran_cgi_List, + { "e-utran-cgi-List", "gsm_map.om.e_utran_cgi_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_routingAreaId_List, + { "routingAreaId-List", "gsm_map.om.routingAreaId_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_locationAreaId_List, + { "locationAreaId-List", "gsm_map.om.locationAreaId_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_trackingAreaId_List, + { "trackingAreaId-List", "gsm_map.om.trackingAreaId_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_CGI_List_item, + { "GlobalCellId", "gsm_map.om.GlobalCellId", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_E_UTRAN_CGI_List_item, + { "E-UTRAN-CGI", "gsm_map.om.E_UTRAN_CGI", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_RoutingAreaId_List_item, + { "RAIdentity", "gsm_map.om.RAIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_LocationAreaId_List_item, + { "LAIFixedLength", "gsm_map.om.LAIFixedLength", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_TrackingAreaId_List_item, + { "TA-Id", "gsm_map.om.TA_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_msc_s_TraceDepth, + { "msc-s-TraceDepth", "gsm_map.om.msc_s_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_mgw_TraceDepth, + { "mgw-TraceDepth", "gsm_map.om.mgw_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_sgsn_TraceDepth, + { "sgsn-TraceDepth", "gsm_map.om.sgsn_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_ggsn_TraceDepth, + { "ggsn-TraceDepth", "gsm_map.om.ggsn_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_rnc_TraceDepth, + { "rnc-TraceDepth", "gsm_map.om.rnc_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_bmsc_TraceDepth, + { "bmsc-TraceDepth", "gsm_map.om.bmsc_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_mme_TraceDepth, + { "mme-TraceDepth", "gsm_map.om.mme_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_sgw_TraceDepth, + { "sgw-TraceDepth", "gsm_map.om.sgw_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_pgw_TraceDepth, + { "pgw-TraceDepth", "gsm_map.om.pgw_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_eNB_TraceDepth, + { "eNB-TraceDepth", "gsm_map.om.eNB_TraceDepth", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0, + "TraceDepth", HFILL }}, + { &hf_gsm_map_om_msc_s_TraceDepthExtension, + { "msc-s-TraceDepthExtension", "gsm_map.om.msc_s_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_mgw_TraceDepthExtension, + { "mgw-TraceDepthExtension", "gsm_map.om.mgw_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_sgsn_TraceDepthExtension, + { "sgsn-TraceDepthExtension", "gsm_map.om.sgsn_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_ggsn_TraceDepthExtension, + { "ggsn-TraceDepthExtension", "gsm_map.om.ggsn_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_rnc_TraceDepthExtension, + { "rnc-TraceDepthExtension", "gsm_map.om.rnc_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_bmsc_TraceDepthExtension, + { "bmsc-TraceDepthExtension", "gsm_map.om.bmsc_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_mme_TraceDepthExtension, + { "mme-TraceDepthExtension", "gsm_map.om.mme_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_sgw_TraceDepthExtension, + { "sgw-TraceDepthExtension", "gsm_map.om.sgw_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_pgw_TraceDepthExtension, + { "pgw-TraceDepthExtension", "gsm_map.om.pgw_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_eNB_TraceDepthExtension, + { "eNB-TraceDepthExtension", "gsm_map.om.eNB_TraceDepthExtension", + FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepthExtension_vals), 0, + "TraceDepthExtension", HFILL }}, + { &hf_gsm_map_om_msc_s_List, + { "msc-s-List", "gsm_map.om.msc_s_List", + FT_BYTES, BASE_NONE, NULL, 0, + "MSC_S_InterfaceList", HFILL }}, + { &hf_gsm_map_om_mgw_List, + { "mgw-List", "gsm_map.om.mgw_List", + FT_BYTES, BASE_NONE, NULL, 0, + "MGW_InterfaceList", HFILL }}, + { &hf_gsm_map_om_sgsn_List, + { "sgsn-List", "gsm_map.om.sgsn_List", + FT_BYTES, BASE_NONE, NULL, 0, + "SGSN_InterfaceList", HFILL }}, + { &hf_gsm_map_om_ggsn_List, + { "ggsn-List", "gsm_map.om.ggsn_List", + FT_BYTES, BASE_NONE, NULL, 0, + "GGSN_InterfaceList", HFILL }}, + { &hf_gsm_map_om_rnc_List, + { "rnc-List", "gsm_map.om.rnc_List", + FT_BYTES, BASE_NONE, NULL, 0, + "RNC_InterfaceList", HFILL }}, + { &hf_gsm_map_om_bmsc_List, + { "bmsc-List", "gsm_map.om.bmsc_List", + FT_BYTES, BASE_NONE, NULL, 0, + "BMSC_InterfaceList", HFILL }}, + { &hf_gsm_map_om_mme_List, + { "mme-List", "gsm_map.om.mme_List", + FT_BYTES, BASE_NONE, NULL, 0, + "MME_InterfaceList", HFILL }}, + { &hf_gsm_map_om_sgw_List, + { "sgw-List", "gsm_map.om.sgw_List", + FT_BYTES, BASE_NONE, NULL, 0, + "SGW_InterfaceList", HFILL }}, + { &hf_gsm_map_om_pgw_List, + { "pgw-List", "gsm_map.om.pgw_List", + FT_BYTES, BASE_NONE, NULL, 0, + "PGW_InterfaceList", HFILL }}, + { &hf_gsm_map_om_eNB_List, + { "eNB-List", "gsm_map.om.eNB_List", + FT_BYTES, BASE_NONE, NULL, 0, + "ENB_InterfaceList", HFILL }}, + { &hf_gsm_map_om_msc_s_List_01, + { "msc-s-List", "gsm_map.om.msc_s_List", + FT_BYTES, BASE_NONE, NULL, 0, + "MSC_S_EventList", HFILL }}, + { &hf_gsm_map_om_mgw_List_01, + { "mgw-List", "gsm_map.om.mgw_List", + FT_BYTES, BASE_NONE, NULL, 0, + "MGW_EventList", HFILL }}, + { &hf_gsm_map_om_sgsn_List_01, + { "sgsn-List", "gsm_map.om.sgsn_List", + FT_BYTES, BASE_NONE, NULL, 0, + "SGSN_EventList", HFILL }}, + { &hf_gsm_map_om_ggsn_List_01, + { "ggsn-List", "gsm_map.om.ggsn_List", + FT_BYTES, BASE_NONE, NULL, 0, + "GGSN_EventList", HFILL }}, + { &hf_gsm_map_om_bmsc_List_01, + { "bmsc-List", "gsm_map.om.bmsc_List", + FT_BYTES, BASE_NONE, NULL, 0, + "BMSC_EventList", HFILL }}, + { &hf_gsm_map_om_mme_List_01, + { "mme-List", "gsm_map.om.mme_List", + FT_BYTES, BASE_NONE, NULL, 0, + "MME_EventList", HFILL }}, + { &hf_gsm_map_om_sgw_List_01, + { "sgw-List", "gsm_map.om.sgw_List", + FT_BYTES, BASE_NONE, NULL, 0, + "SGW_EventList", HFILL }}, + { &hf_gsm_map_om_pgw_List_01, + { "pgw-List", "gsm_map.om.pgw_List", + FT_BYTES, BASE_NONE, NULL, 0, + "PGW_EventList", HFILL }}, + { &hf_gsm_map_om_traceRecordingSessionReference, + { "traceRecordingSessionReference", "gsm_map.om.traceRecordingSessionReference", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_rnc_InterfaceList, + { "rnc-InterfaceList", "gsm_map.om.rnc_InterfaceList", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_msc_s_InterfaceList, + { "msc-s-InterfaceList", "gsm_map.om.msc_s_InterfaceList", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_msc_s_EventList, + { "msc-s-EventList", "gsm_map.om.msc_s_EventList", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_mgw_InterfaceList, + { "mgw-InterfaceList", "gsm_map.om.mgw_InterfaceList", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_mgw_EventList, + { "mgw-EventList", "gsm_map.om.mgw_EventList", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_traceSupportIndicator, + { "traceSupportIndicator", "gsm_map.om.traceSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_msc_s, + { "msc-s", "gsm.map.om.TraceNE.TypeList.msc.s", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_mgw, + { "mgw", "gsm.map.om.TraceNE.TypeList.mgw", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_sgsn, + { "sgsn", "gsm.map.om.TraceNE.TypeList.sgsn", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_ggsn, + { "ggsn", "gsm.map.om.TraceNE.TypeList.ggsn", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_rnc, + { "rnc", "gsm.map.om.TraceNE.TypeList.rnc", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_bm_sc, + { "bm-sc", "gsm.map.om.TraceNE.TypeList.bm.sc", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_mme, + { "mme", "gsm.map.om.TraceNE.TypeList.mme", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_sgw, + { "sgw", "gsm.map.om.TraceNE.TypeList.sgw", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_pgw, + { "pgw", "gsm.map.om.TraceNE.TypeList.pgw", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_TraceNE_TypeList_eNB, + { "eNB", "gsm.map.om.TraceNE.TypeList.eNB", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_a, + { "a", "gsm.map.om.MSC.S.InterfaceList.a", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_iu, + { "iu", "gsm.map.om.MSC.S.InterfaceList.iu", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_mc, + { "mc", "gsm.map.om.MSC.S.InterfaceList.mc", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_map_g, + { "map-g", "gsm.map.om.MSC.S.InterfaceList.map.g", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_map_b, + { "map-b", "gsm.map.om.MSC.S.InterfaceList.map.b", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_map_e, + { "map-e", "gsm.map.om.MSC.S.InterfaceList.map.e", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_map_f, + { "map-f", "gsm.map.om.MSC.S.InterfaceList.map.f", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_cap, + { "cap", "gsm.map.om.MSC.S.InterfaceList.cap", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_map_d, + { "map-d", "gsm.map.om.MSC.S.InterfaceList.map.d", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_InterfaceList_map_c, + { "map-c", "gsm.map.om.MSC.S.InterfaceList.map.c", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MGW_InterfaceList_mc, + { "mc", "gsm.map.om.MGW.InterfaceList.mc", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MGW_InterfaceList_nb_up, + { "nb-up", "gsm.map.om.MGW.InterfaceList.nb.up", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MGW_InterfaceList_iu_up, + { "iu-up", "gsm.map.om.MGW.InterfaceList.iu.up", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_gb, + { "gb", "gsm.map.om.SGSN.InterfaceList.gb", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_iu, + { "iu", "gsm.map.om.SGSN.InterfaceList.iu", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_gn, + { "gn", "gsm.map.om.SGSN.InterfaceList.gn", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_map_gr, + { "map-gr", "gsm.map.om.SGSN.InterfaceList.map.gr", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_map_gd, + { "map-gd", "gsm.map.om.SGSN.InterfaceList.map.gd", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_map_gf, + { "map-gf", "gsm.map.om.SGSN.InterfaceList.map.gf", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_gs, + { "gs", "gsm.map.om.SGSN.InterfaceList.gs", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_ge, + { "ge", "gsm.map.om.SGSN.InterfaceList.ge", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_s3, + { "s3", "gsm.map.om.SGSN.InterfaceList.s3", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_s4, + { "s4", "gsm.map.om.SGSN.InterfaceList.s4", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_InterfaceList_s6d, + { "s6d", "gsm.map.om.SGSN.InterfaceList.s6d", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_GGSN_InterfaceList_gn, + { "gn", "gsm.map.om.GGSN.InterfaceList.gn", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_GGSN_InterfaceList_gi, + { "gi", "gsm.map.om.GGSN.InterfaceList.gi", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_GGSN_InterfaceList_gmb, + { "gmb", "gsm.map.om.GGSN.InterfaceList.gmb", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_RNC_InterfaceList_iu, + { "iu", "gsm.map.om.RNC.InterfaceList.iu", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_RNC_InterfaceList_iur, + { "iur", "gsm.map.om.RNC.InterfaceList.iur", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_RNC_InterfaceList_iub, + { "iub", "gsm.map.om.RNC.InterfaceList.iub", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_RNC_InterfaceList_uu, + { "uu", "gsm.map.om.RNC.InterfaceList.uu", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_BMSC_InterfaceList_gmb, + { "gmb", "gsm.map.om.BMSC.InterfaceList.gmb", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_InterfaceList_s1_mme, + { "s1-mme", "gsm.map.om.MME.InterfaceList.s1.mme", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_InterfaceList_s3, + { "s3", "gsm.map.om.MME.InterfaceList.s3", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_InterfaceList_s6a, + { "s6a", "gsm.map.om.MME.InterfaceList.s6a", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_InterfaceList_s10, + { "s10", "gsm.map.om.MME.InterfaceList.s10", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_InterfaceList_s11, + { "s11", "gsm.map.om.MME.InterfaceList.s11", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_InterfaceList_s4, + { "s4", "gsm.map.om.SGW.InterfaceList.s4", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_InterfaceList_s5, + { "s5", "gsm.map.om.SGW.InterfaceList.s5", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_InterfaceList_s8b, + { "s8b", "gsm.map.om.SGW.InterfaceList.s8b", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_InterfaceList_s11, + { "s11", "gsm.map.om.SGW.InterfaceList.s11", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_InterfaceList_gxc, + { "gxc", "gsm.map.om.SGW.InterfaceList.gxc", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_s2a, + { "s2a", "gsm.map.om.PGW.InterfaceList.s2a", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_s2b, + { "s2b", "gsm.map.om.PGW.InterfaceList.s2b", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_s2c, + { "s2c", "gsm.map.om.PGW.InterfaceList.s2c", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_s5, + { "s5", "gsm.map.om.PGW.InterfaceList.s5", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_s6b, + { "s6b", "gsm.map.om.PGW.InterfaceList.s6b", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_gx, + { "gx", "gsm.map.om.PGW.InterfaceList.gx", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_s8b, + { "s8b", "gsm.map.om.PGW.InterfaceList.s8b", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_InterfaceList_sgi, + { "sgi", "gsm.map.om.PGW.InterfaceList.sgi", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_om_ENB_InterfaceList_s1_mme, + { "s1-mme", "gsm.map.om.ENB.InterfaceList.s1.mme", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_ENB_InterfaceList_x2, + { "x2", "gsm.map.om.ENB.InterfaceList.x2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_ENB_InterfaceList_uu, + { "uu", "gsm.map.om.ENB.InterfaceList.uu", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_EventList_mo_mtCall, + { "mo-mtCall", "gsm.map.om.MSC.S.EventList.mo.mtCall", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_EventList_mo_mt_sms, + { "mo-mt-sms", "gsm.map.om.MSC.S.EventList.mo.mt.sms", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_EventList_lu_imsiAttach_imsiDetach, + { "lu-imsiAttach-imsiDetach", "gsm.map.om.MSC.S.EventList.lu.imsiAttach.imsiDetach", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_EventList_handovers, + { "handovers", "gsm.map.om.MSC.S.EventList.handovers", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_MSC_S_EventList_ss, + { "ss", "gsm.map.om.MSC.S.EventList.ss", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_MGW_EventList_context, + { "context", "gsm.map.om.MGW.EventList.context", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_EventList_pdpContext, + { "pdpContext", "gsm.map.om.SGSN.EventList.pdpContext", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_EventList_mo_mt_sms, + { "mo-mt-sms", "gsm.map.om.SGSN.EventList.mo.mt.sms", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_EventList_rau_gprsAttach_gprsDetach, + { "rau-gprsAttach-gprsDetach", "gsm.map.om.SGSN.EventList.rau.gprsAttach.gprsDetach", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_SGSN_EventList_mbmsContext, + { "mbmsContext", "gsm.map.om.SGSN.EventList.mbmsContext", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_GGSN_EventList_pdpContext, + { "pdpContext", "gsm.map.om.GGSN.EventList.pdpContext", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_GGSN_EventList_mbmsContext, + { "mbmsContext", "gsm.map.om.GGSN.EventList.mbmsContext", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_BMSC_EventList_mbmsMulticastServiceActivation, + { "mbmsMulticastServiceActivation", "gsm.map.om.BMSC.EventList.mbmsMulticastServiceActivation", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_EventList_ue_initiatedPDNconectivityRequest, + { "ue-initiatedPDNconectivityRequest", "gsm.map.om.MME.EventList.ue.initiatedPDNconectivityRequest", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_EventList_serviceRequestts, + { "serviceRequestts", "gsm.map.om.MME.EventList.serviceRequestts", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_EventList_initialAttachTrackingAreaUpdateDetach, + { "initialAttachTrackingAreaUpdateDetach", "gsm.map.om.MME.EventList.initialAttachTrackingAreaUpdateDetach", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_EventList_ue_initiatedPDNdisconnection, + { "ue-initiatedPDNdisconnection", "gsm.map.om.MME.EventList.ue.initiatedPDNdisconnection", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_EventList_bearerActivationModificationDeletion, + { "bearerActivationModificationDeletion", "gsm.map.om.MME.EventList.bearerActivationModificationDeletion", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_om_MME_EventList_handover, + { "handover", "gsm.map.om.MME.EventList.handover", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_EventList_pdn_connectionCreation, + { "pdn-connectionCreation", "gsm.map.om.SGW.EventList.pdn.connectionCreation", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_EventList_pdn_connectionTermination, + { "pdn-connectionTermination", "gsm.map.om.SGW.EventList.pdn.connectionTermination", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_SGW_EventList_bearerActivationModificationDeletion, + { "bearerActivationModificationDeletion", "gsm.map.om.SGW.EventList.bearerActivationModificationDeletion", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_EventList_pdn_connectionCreation, + { "pdn-connectionCreation", "gsm.map.om.PGW.EventList.pdn.connectionCreation", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_EventList_pdn_connectionTermination, + { "pdn-connectionTermination", "gsm.map.om.PGW.EventList.pdn.connectionTermination", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_om_PGW_EventList_bearerActivationModificationDeletion, + { "bearerActivationModificationDeletion", "gsm.map.om.PGW.EventList.bearerActivationModificationDeletion", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + +/* --- Module MAP-MS-DataTypes --- --- --- */ + + { &hf_gsm_map_ms_gsm_map_ms_SendAuthenticationInfoArg_PDU, + { "SendAuthenticationInfoArg", "gsm_map.ms.SendAuthenticationInfoArg_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gsm_map_ms_SendAuthenticationInfoRes_PDU, + { "SendAuthenticationInfoRes", "gsm_map.ms.SendAuthenticationInfoRes_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_imsi, + { "imsi", "gsm_map.ms.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_msc_Number, + { "msc-Number", "gsm_map.ms.msc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_vlr_Number, + { "vlr-Number", "gsm_map.ms.vlr_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_lmsi, + { "lmsi", "gsm_map.ms.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_extensionContainer, + { "extensionContainer", "gsm_map.ms.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vlr_Capability, + { "vlr-Capability", "gsm_map.ms.vlr_Capability_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_informPreviousNetworkEntity, + { "informPreviousNetworkEntity", "gsm_map.ms.informPreviousNetworkEntity_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cs_LCS_NotSupportedByUE, + { "cs-LCS-NotSupportedByUE", "gsm_map.ms.cs_LCS_NotSupportedByUE_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_v_gmlc_Address, + { "v-gmlc-Address", "gsm_map.ms.v_gmlc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_ms_add_info, + { "add-info", "gsm_map.ms.add_info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pagingArea, + { "pagingArea", "gsm_map.ms.pagingArea", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_skipSubscriberDataUpdate, + { "skipSubscriberDataUpdate", "gsm_map.ms.skipSubscriberDataUpdate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_restorationIndicator, + { "restorationIndicator", "gsm_map.ms.restorationIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_eplmn_List, + { "eplmn-List", "gsm_map.ms.eplmn_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mme_DiameterAddress, + { "mme-DiameterAddress", "gsm_map.ms.mme_DiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_ms_supportedCamelPhases, + { "supportedCamelPhases", "gsm_map.ms.supportedCamelPhases", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_solsaSupportIndicator, + { "solsaSupportIndicator", "gsm_map.ms.solsaSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_istSupportIndicator, + { "istSupportIndicator", "gsm_map.ms.istSupportIndicator", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IST_SupportIndicator_vals), 0, + "IST_SupportIndicator", HFILL }}, + { &hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity, + { "superChargerSupportedInServingNetworkEntity", "gsm_map.ms.superChargerSupportedInServingNetworkEntity", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SuperChargerInfo_vals), 0, + "SuperChargerInfo", HFILL }}, + { &hf_gsm_map_ms_longFTN_Supported, + { "longFTN-Supported", "gsm_map.ms.longFTN_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_supportedLCS_CapabilitySets, + { "supportedLCS-CapabilitySets", "gsm_map.ms.supportedLCS_CapabilitySets", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_offeredCamel4CSIs, + { "offeredCamel4CSIs", "gsm_map.ms.offeredCamel4CSIs", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_supportedRAT_TypesIndicator, + { "supportedRAT-TypesIndicator", "gsm_map.ms.supportedRAT_TypesIndicator", + FT_BYTES, BASE_NONE, NULL, 0, + "SupportedRAT_Types", HFILL }}, + { &hf_gsm_map_ms_longGroupID_Supported, + { "longGroupID-Supported", "gsm_map.ms.longGroupID_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mtRoamingForwardingSupported, + { "mtRoamingForwardingSupported", "gsm_map.ms.mtRoamingForwardingSupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_msisdn_lessOperation_Supported, + { "msisdn-lessOperation-Supported", "gsm_map.ms.msisdn_lessOperation_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_reset_ids_Supported, + { "reset-ids-Supported", "gsm_map.ms.reset_ids_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sendSubscriberData, + { "sendSubscriberData", "gsm_map.ms.sendSubscriberData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscriberDataStored, + { "subscriberDataStored", "gsm_map.ms.subscriberDataStored", + FT_BYTES, BASE_NONE, NULL, 0, + "AgeIndicator", HFILL }}, + { &hf_gsm_map_ms_hlr_Number, + { "hlr-Number", "gsm_map.ms.hlr_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_add_Capability, + { "add-Capability", "gsm_map.ms.add_Capability_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pagingArea_Capability, + { "pagingArea-Capability", "gsm_map.ms.pagingArea_Capability_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_imeisv, + { "imeisv", "gsm_map.ms.imeisv", + FT_BYTES, BASE_NONE, NULL, 0, + "IMEI", HFILL }}, + { &hf_gsm_map_ms_PagingArea_item, + { "LocationArea", "gsm_map.ms.LocationArea", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LocationArea_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_laiFixedLength, + { "laiFixedLength", "gsm_map.ms.laiFixedLength", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lac, + { "lac", "gsm_map.ms.lac", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_identity, + { "identity", "gsm_map.ms.identity", + FT_UINT32, BASE_DEC, VALS(gsm_map_Identity_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cancellationType, + { "cancellationType", "gsm_map.ms.cancellationType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CancellationType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_typeOfUpdate, + { "typeOfUpdate", "gsm_map.ms.typeOfUpdate", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_TypeOfUpdate_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mtrf_SupportedAndAuthorized, + { "mtrf-SupportedAndAuthorized", "gsm_map.ms.mtrf_SupportedAndAuthorized_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mtrf_SupportedAndNotAuthorized, + { "mtrf-SupportedAndNotAuthorized", "gsm_map.ms.mtrf_SupportedAndNotAuthorized_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_newMSC_Number, + { "newMSC-Number", "gsm_map.ms.newMSC_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_newVLR_Number, + { "newVLR-Number", "gsm_map.ms.newVLR_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_new_lmsi, + { "new-lmsi", "gsm_map.ms.new_lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + "LMSI", HFILL }}, + { &hf_gsm_map_ms_reattach_Required, + { "reattach-Required", "gsm_map.ms.reattach_Required_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sgsn_Number, + { "sgsn-Number", "gsm_map.ms.sgsn_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_locationInformation, + { "locationInformation", "gsm_map.ms.locationInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_locationInformationGPRS, + { "locationInformationGPRS", "gsm_map.ms.locationInformationGPRS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_locationInformationEPS, + { "locationInformationEPS", "gsm_map.ms.locationInformationEPS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_freezeTMSI, + { "freezeTMSI", "gsm_map.ms.freezeTMSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_freezeP_TMSI, + { "freezeP-TMSI", "gsm_map.ms.freezeP_TMSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_freezeM_TMSI, + { "freezeM-TMSI", "gsm_map.ms.freezeM_TMSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_tmsi, + { "tmsi", "gsm_map.ms.tmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_numberOfRequestedVectors, + { "numberOfRequestedVectors", "gsm_map.ms.numberOfRequestedVectors", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_segmentationProhibited, + { "segmentationProhibited", "gsm_map.ms.segmentationProhibited_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_previous_LAI, + { "previous-LAI", "gsm_map.ms.previous_LAI", + FT_BYTES, BASE_NONE, NULL, 0, + "LAIFixedLength", HFILL }}, + { &hf_gsm_map_ms_hopCounter, + { "hopCounter", "gsm_map.ms.hopCounter", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_authenticationSetList, + { "authenticationSetList", "gsm_map.ms.authenticationSetList", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_AuthenticationSetList_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_currentSecurityContext, + { "currentSecurityContext", "gsm_map.ms.currentSecurityContext", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CurrentSecurityContext_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lastUsedLtePLMN_Id, + { "lastUsedLtePLMN-Id", "gsm_map.ms.lastUsedLtePLMN_Id", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gsm_map_ms_mtCallPendingFlag, + { "mtCallPendingFlag", "gsm_map.ms.mtCallPendingFlag_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_tripletList, + { "tripletList", "gsm_map.ms.tripletList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_quintupletList, + { "quintupletList", "gsm_map.ms.quintupletList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_TripletList_item, + { "AuthenticationTriplet", "gsm_map.ms.AuthenticationTriplet_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_QuintupletList_item, + { "AuthenticationQuintuplet", "gsm_map.ms.AuthenticationQuintuplet_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_rand, + { "rand", "gsm_map.ms.rand", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sres, + { "sres", "gsm_map.ms.sres", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_kc, + { "kc", "gsm_map.ms.kc", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_xres, + { "xres", "gsm_map.ms.xres", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ck, + { "ck", "gsm_map.ms.ck", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ik, + { "ik", "gsm_map.ms.ik", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_autn, + { "autn", "gsm_map.ms.autn", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gsm_SecurityContextData, + { "gsm-SecurityContextData", "gsm_map.ms.gsm_SecurityContextData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_umts_SecurityContextData, + { "umts-SecurityContextData", "gsm_map.ms.umts_SecurityContextData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cksn, + { "cksn", "gsm_map.ms.cksn", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ksi, + { "ksi", "gsm_map.ms.ksi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_failureCause, + { "failureCause", "gsm_map.ms.failureCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_FailureCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_re_attempt, + { "re-attempt", "gsm_map.ms.re_attempt", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_ms_accessType, + { "accessType", "gsm_map.ms.accessType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_AccessType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sgsn_Address, + { "sgsn-Address", "gsm_map.ms.sgsn_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_ms_sgsn_Capability, + { "sgsn-Capability", "gsm_map.ms.sgsn_Capability_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ps_LCS_NotSupportedByUE, + { "ps-LCS-NotSupportedByUE", "gsm_map.ms.ps_LCS_NotSupportedByUE_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_eps_info, + { "eps-info", "gsm_map.ms.eps_info", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_EPS_Info_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_servingNodeTypeIndicator, + { "servingNodeTypeIndicator", "gsm_map.ms.servingNodeTypeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_usedRAT_Type, + { "usedRAT-Type", "gsm_map.ms.usedRAT_Type", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Used_RAT_Type_vals), 0, + "Used_RAT_Type", HFILL }}, + { &hf_gsm_map_ms_gprsSubscriptionDataNotNeeded, + { "gprsSubscriptionDataNotNeeded", "gsm_map.ms.gprsSubscriptionDataNotNeeded_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_nodeTypeIndicator, + { "nodeTypeIndicator", "gsm_map.ms.nodeTypeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_areaRestricted, + { "areaRestricted", "gsm_map.ms.areaRestricted_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ue_reachableIndicator, + { "ue-reachableIndicator", "gsm_map.ms.ue_reachableIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_epsSubscriptionDataNotNeeded, + { "epsSubscriptionDataNotNeeded", "gsm_map.ms.epsSubscriptionDataNotNeeded_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ue_srvcc_Capability, + { "ue-srvcc-Capability", "gsm_map.ms.ue_srvcc_Capability", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_UE_SRVCC_Capability_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mmeNumberforMTSMS, + { "mmeNumberforMTSMS", "gsm_map.ms.mmeNumberforMTSMS", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_smsRegisterRequest, + { "smsRegisterRequest", "gsm_map.ms.smsRegisterRequest", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SMSRegisterRequest_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sms_Only, + { "sms-Only", "gsm_map.ms.sms_Only_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_removalofMMERegistrationforSMS, + { "removalofMMERegistrationforSMS", "gsm_map.ms.removalofMMERegistrationforSMS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sgsn_Name, + { "sgsn-Name", "gsm_map.ms.sgsn_Name", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_ms_sgsn_Realm, + { "sgsn-Realm", "gsm_map.ms.sgsn_Realm", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_ms_lgd_supportIndicator, + { "lgd-supportIndicator", "gsm_map.ms.lgd_supportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_adjacentPLMN_List, + { "adjacentPLMN-List", "gsm_map.ms.adjacentPLMN_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdn_gw_update, + { "pdn-gw-update", "gsm_map.ms.pdn_gw_update_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_isr_Information, + { "isr-Information", "gsm_map.ms.isr_Information", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_apn, + { "apn", "gsm_map.ms.apn", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdn_gw_Identity, + { "pdn-gw-Identity", "gsm_map.ms.pdn_gw_Identity_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_contextId, + { "contextId", "gsm_map.ms.contextId", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprsEnhancementsSupportIndicator, + { "gprsEnhancementsSupportIndicator", "gsm_map.ms.gprsEnhancementsSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_smsCallBarringSupportIndicator, + { "smsCallBarringSupportIndicator", "gsm_map.ms.smsCallBarringSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_supportedFeatures, + { "supportedFeatures", "gsm_map.ms.supportedFeatures", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_t_adsDataRetrieval, + { "t-adsDataRetrieval", "gsm_map.ms.t_adsDataRetrieval_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions, + { "homogeneousSupportOfIMSVoiceOverPSSessions", "gsm_map.ms.homogeneousSupportOfIMSVoiceOverPSSessions", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_ms_cancellationTypeInitialAttach, + { "cancellationTypeInitialAttach", "gsm_map.ms.cancellationTypeInitialAttach_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_updateofHomogeneousSupportOfIMSVoiceOverPSSessions, + { "updateofHomogeneousSupportOfIMSVoiceOverPSSessions", "gsm_map.ms.updateofHomogeneousSupportOfIMSVoiceOverPSSessions_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext_SupportedFeatures, + { "ext-SupportedFeatures", "gsm_map.ms.ext_SupportedFeatures", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sgsn_mmeSeparationSupported, + { "sgsn-mmeSeparationSupported", "gsm_map.ms.sgsn_mmeSeparationSupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mmeRegisteredforSMS, + { "mmeRegisteredforSMS", "gsm_map.ms.mmeRegisteredforSMS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_EPLMN_List_item, + { "PLMN-Id", "gsm_map.ms.PLMN_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_AdjacentPLMN_List_item, + { "PLMN-Id", "gsm_map.ms.PLMN_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_an_APDU, + { "an-APDU", "gsm_map.ms.an_APDU_element", + FT_NONE, BASE_NONE, NULL, 0, + "AccessNetworkSignalInfo", HFILL }}, + { &hf_gsm_map_ms_integrityProtectionInfo, + { "integrityProtectionInfo", "gsm_map.ms.integrityProtectionInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "IntegrityProtectionInformation", HFILL }}, + { &hf_gsm_map_ms_encryptionInfo, + { "encryptionInfo", "gsm_map.ms.encryptionInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "EncryptionInformation", HFILL }}, + { &hf_gsm_map_ms_keyStatus, + { "keyStatus", "gsm_map.ms.keyStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_KeyStatus_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_allowedGSM_Algorithms, + { "allowedGSM-Algorithms", "gsm_map.ms.allowedGSM_Algorithms", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_allowedUMTS_Algorithms, + { "allowedUMTS-Algorithms", "gsm_map.ms.allowedUMTS_Algorithms_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_radioResourceInformation, + { "radioResourceInformation", "gsm_map.ms.radioResourceInformation", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_radioResourceList, + { "radioResourceList", "gsm_map.ms.radioResourceList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_bssmap_ServiceHandover, + { "bssmap-ServiceHandover", "gsm_map.ms.bssmap_ServiceHandover", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ranap_ServiceHandover, + { "ranap-ServiceHandover", "gsm_map.ms.ranap_ServiceHandover", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_bssmap_ServiceHandoverList, + { "bssmap-ServiceHandoverList", "gsm_map.ms.bssmap_ServiceHandoverList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_currentlyUsedCodec, + { "currentlyUsedCodec", "gsm_map.ms.currentlyUsedCodec", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_iuSupportedCodecsList, + { "iuSupportedCodecsList", "gsm_map.ms.iuSupportedCodecsList_element", + FT_NONE, BASE_NONE, NULL, 0, + "SupportedCodecsList", HFILL }}, + { &hf_gsm_map_ms_rab_ConfigurationIndicator, + { "rab-ConfigurationIndicator", "gsm_map.ms.rab_ConfigurationIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_iuSelectedCodec, + { "iuSelectedCodec", "gsm_map.ms.iuSelectedCodec", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_alternativeChannelType, + { "alternativeChannelType", "gsm_map.ms.alternativeChannelType", + FT_BYTES, BASE_NONE, NULL, 0, + "RadioResourceInformation", HFILL }}, + { &hf_gsm_map_ms_tracePropagationList, + { "tracePropagationList", "gsm_map.ms.tracePropagationList_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_aoipSupportedCodecsListAnchor, + { "aoipSupportedCodecsListAnchor", "gsm_map.ms.aoipSupportedCodecsListAnchor_element", + FT_NONE, BASE_NONE, NULL, 0, + "AoIPCodecsList", HFILL }}, + { &hf_gsm_map_ms_aoipSelectedCodecTarget, + { "aoipSelectedCodecTarget", "gsm_map.ms.aoipSelectedCodecTarget", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_uesbi_Iu, + { "uesbi-Iu", "gsm_map.ms.uesbi_Iu_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_integrityProtectionAlgorithms, + { "integrityProtectionAlgorithms", "gsm_map.ms.integrityProtectionAlgorithms", + FT_BYTES, BASE_NONE, NULL, 0, + "PermittedIntegrityProtectionAlgorithms", HFILL }}, + { &hf_gsm_map_ms_encryptionAlgorithms, + { "encryptionAlgorithms", "gsm_map.ms.encryptionAlgorithms", + FT_BYTES, BASE_NONE, NULL, 0, + "PermittedEncryptionAlgorithms", HFILL }}, + { &hf_gsm_map_ms_targetCellId, + { "targetCellId", "gsm_map.ms.targetCellId", + FT_BYTES, BASE_NONE, NULL, 0, + "GlobalCellId", HFILL }}, + { &hf_gsm_map_ms_ho_NumberNotRequired, + { "ho-NumberNotRequired", "gsm_map.ms.ho_NumberNotRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_targetRNCId, + { "targetRNCId", "gsm_map.ms.targetRNCId", + FT_BYTES, BASE_NONE, NULL, 0, + "RNCId", HFILL }}, + { &hf_gsm_map_ms_multipleBearerRequested, + { "multipleBearerRequested", "gsm_map.ms.multipleBearerRequested_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_rab_Id, + { "rab-Id", "gsm_map.ms.rab_Id", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_asciCallReference, + { "asciCallReference", "gsm_map.ms.asciCallReference", + FT_BYTES, BASE_NONE, NULL, 0, + "ASCI_CallReference", HFILL }}, + { &hf_gsm_map_ms_geran_classmark, + { "geran-classmark", "gsm_map.ms.geran_classmark", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_iuCurrentlyUsedCodec, + { "iuCurrentlyUsedCodec", "gsm_map.ms.iuCurrentlyUsedCodec", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_regionalSubscriptionData, + { "regionalSubscriptionData", "gsm_map.ms.regionalSubscriptionData", + FT_UINT32, BASE_DEC, NULL, 0, + "ZoneCodeList", HFILL }}, + { &hf_gsm_map_ms_lclsGlobalCallReference, + { "lclsGlobalCallReference", "gsm_map.ms.lclsGlobalCallReference", + FT_BYTES, BASE_NONE, NULL, 0, + "LCLS_GlobalCallReference", HFILL }}, + { &hf_gsm_map_ms_lcls_Negotiation, + { "lcls-Negotiation", "gsm_map.ms.lcls_Negotiation", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lcls_Configuration_Preference, + { "lcls-Configuration-Preference", "gsm_map.ms.lcls_Configuration_Preference", + FT_BYTES, BASE_NONE, NULL, 0, + "LCLS_ConfigurationPreference", HFILL }}, + { &hf_gsm_map_ms_csg_SubscriptionDataList, + { "csg-SubscriptionDataList", "gsm_map.ms.csg_SubscriptionDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_BSSMAP_ServiceHandoverList_item, + { "BSSMAP-ServiceHandoverInfo", "gsm_map.ms.BSSMAP_ServiceHandoverInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_RadioResourceList_item, + { "RadioResource", "gsm_map.ms.RadioResource_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_handoverNumber, + { "handoverNumber", "gsm_map.ms.handoverNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_relocationNumberList, + { "relocationNumberList", "gsm_map.ms.relocationNumberList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_multicallBearerInfo, + { "multicallBearerInfo", "gsm_map.ms.multicallBearerInfo", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_multipleBearerNotSupported, + { "multipleBearerNotSupported", "gsm_map.ms.multipleBearerNotSupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_selectedUMTS_Algorithms, + { "selectedUMTS-Algorithms", "gsm_map.ms.selectedUMTS_Algorithms_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_chosenRadioResourceInformation, + { "chosenRadioResourceInformation", "gsm_map.ms.chosenRadioResourceInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_iuAvailableCodecsList, + { "iuAvailableCodecsList", "gsm_map.ms.iuAvailableCodecsList_element", + FT_NONE, BASE_NONE, NULL, 0, + "CodecList", HFILL }}, + { &hf_gsm_map_ms_aoipAvailableCodecsListMap, + { "aoipAvailableCodecsListMap", "gsm_map.ms.aoipAvailableCodecsListMap_element", + FT_NONE, BASE_NONE, NULL, 0, + "AoIPCodecsList", HFILL }}, + { &hf_gsm_map_ms_integrityProtectionAlgorithm, + { "integrityProtectionAlgorithm", "gsm_map.ms.integrityProtectionAlgorithm", + FT_BYTES, BASE_NONE, NULL, 0, + "ChosenIntegrityProtectionAlgorithm", HFILL }}, + { &hf_gsm_map_ms_encryptionAlgorithm, + { "encryptionAlgorithm", "gsm_map.ms.encryptionAlgorithm", + FT_BYTES, BASE_NONE, NULL, 0, + "ChosenEncryptionAlgorithm", HFILL }}, + { &hf_gsm_map_ms_chosenChannelInfo, + { "chosenChannelInfo", "gsm_map.ms.chosenChannelInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_chosenSpeechVersion, + { "chosenSpeechVersion", "gsm_map.ms.chosenSpeechVersion", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_targetMSC_Number, + { "targetMSC-Number", "gsm_map.ms.targetMSC_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_selectedRab_Id, + { "selectedRab-Id", "gsm_map.ms.selectedRab_Id", + FT_UINT32, BASE_DEC, NULL, 0, + "RAB_Id", HFILL }}, + { &hf_gsm_map_ms_selectedGSM_Algorithm, + { "selectedGSM-Algorithm", "gsm_map.ms.selectedGSM_Algorithm", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_iUSelectedCodec, + { "iUSelectedCodec", "gsm_map.ms.iUSelectedCodec", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec1, + { "codec1", "gsm_map.ms.codec1", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec2, + { "codec2", "gsm_map.ms.codec2", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec3, + { "codec3", "gsm_map.ms.codec3", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec4, + { "codec4", "gsm_map.ms.codec4", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec5, + { "codec5", "gsm_map.ms.codec5", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec6, + { "codec6", "gsm_map.ms.codec6", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec7, + { "codec7", "gsm_map.ms.codec7", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_codec8, + { "codec8", "gsm_map.ms.codec8", + FT_BYTES, BASE_NONE, NULL, 0, + "AoIPCodec", HFILL }}, + { &hf_gsm_map_ms_utranCodecList, + { "utranCodecList", "gsm_map.ms.utranCodecList_element", + FT_NONE, BASE_NONE, NULL, 0, + "CodecList", HFILL }}, + { &hf_gsm_map_ms_geranCodecList, + { "geranCodecList", "gsm_map.ms.geranCodecList_element", + FT_NONE, BASE_NONE, NULL, 0, + "CodecList", HFILL }}, + { &hf_gsm_map_ms_codec1_01, + { "codec1", "gsm_map.ms.codec1", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec2_01, + { "codec2", "gsm_map.ms.codec2", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec3_01, + { "codec3", "gsm_map.ms.codec3", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec4_01, + { "codec4", "gsm_map.ms.codec4", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec5_01, + { "codec5", "gsm_map.ms.codec5", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec6_01, + { "codec6", "gsm_map.ms.codec6", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec7_01, + { "codec7", "gsm_map.ms.codec7", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_codec8_01, + { "codec8", "gsm_map.ms.codec8", + FT_BYTES, BASE_NONE, NULL, 0, + "Codec", HFILL }}, + { &hf_gsm_map_ms_RelocationNumberList_item, + { "RelocationNumber", "gsm_map.ms.RelocationNumber_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_immediateResponsePreferred, + { "immediateResponsePreferred", "gsm_map.ms.immediateResponsePreferred_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_re_synchronisationInfo, + { "re-synchronisationInfo", "gsm_map.ms.re_synchronisationInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestingNodeType, + { "requestingNodeType", "gsm_map.ms.requestingNodeType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RequestingNodeType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestingPLMN_Id, + { "requestingPLMN-Id", "gsm_map.ms.requestingPLMN_Id", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gsm_map_ms_numberOfRequestedAdditional_Vectors, + { "numberOfRequestedAdditional-Vectors", "gsm_map.ms.numberOfRequestedAdditional_Vectors", + FT_UINT32, BASE_DEC, NULL, 0, + "NumberOfRequestedVectors", HFILL }}, + { &hf_gsm_map_ms_additionalVectorsAreForEPS, + { "additionalVectorsAreForEPS", "gsm_map.ms.additionalVectorsAreForEPS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ueUsageTypeRequestIndication, + { "ueUsageTypeRequestIndication", "gsm_map.ms.ueUsageTypeRequestIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_auts, + { "auts", "gsm_map.ms.auts", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_eps_AuthenticationSetList, + { "eps-AuthenticationSetList", "gsm_map.ms.eps_AuthenticationSetList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ueUsageType, + { "ueUsageType", "gsm_map.ms.ueUsageType", + FT_BYTES, BASE_NONE, NULL, 0, + "UE_UsageType", HFILL }}, + { &hf_gsm_map_ms_EPS_AuthenticationSetList_item, + { "EPC-AV", "gsm_map.ms.EPC_AV_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_kasme, + { "kasme", "gsm_map.ms.kasme", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_imei, + { "imei", "gsm_map.ms.imei", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedEquipmentInfo, + { "requestedEquipmentInfo", "gsm_map.ms.requestedEquipmentInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_equipmentStatus, + { "equipmentStatus", "gsm_map.ms.equipmentStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_EquipmentStatus_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_bmuef, + { "bmuef", "gsm_map.ms.bmuef_element", + FT_NONE, BASE_NONE, NULL, 0, + "UESBI_Iu", HFILL }}, + { &hf_gsm_map_ms_uesbi_IuA, + { "uesbi-IuA", "gsm_map.ms.uesbi_IuA", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_uesbi_IuB, + { "uesbi-IuB", "gsm_map.ms.uesbi_IuB", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_EDRX_Cycle_Length_List_item, + { "EDRX-Cycle-Length", "gsm_map.ms.EDRX_Cycle_Length_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_rat_Type, + { "rat-Type", "gsm_map.ms.rat_Type", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Used_RAT_Type_vals), 0, + "Used_RAT_Type", HFILL }}, + { &hf_gsm_map_ms_eDRX_Cycle_Length_Value, + { "eDRX-Cycle-Length-Value", "gsm_map.ms.eDRX_Cycle_Length_Value", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_Reset_Id_List_item, + { "Reset-Id", "gsm_map.ms.Reset_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_IMSI_GroupIdList_item, + { "IMSI-GroupId", "gsm_map.ms.IMSI_GroupId_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_group_Service_Id, + { "group-Service-Id", "gsm_map.ms.group_Service_Id", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_plmnId, + { "plmnId", "gsm_map.ms.plmnId", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gsm_map_ms_local_Group_ID, + { "local-Group-ID", "gsm_map.ms.local_Group_ID", + FT_BYTES, BASE_NONE, NULL, 0, + "Local_GroupID", HFILL }}, + { &hf_gsm_map_ms_CSG_SubscriptionDataList_item, + { "CSG-SubscriptionData", "gsm_map.ms.CSG_SubscriptionData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_csg_Id, + { "csg-Id", "gsm_map.ms.csg_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_expirationDate, + { "expirationDate", "gsm_map.ms.expirationDate", + FT_BYTES, BASE_NONE, NULL, 0, + "Time", HFILL }}, + { &hf_gsm_map_ms_lipa_AllowedAPNList, + { "lipa-AllowedAPNList", "gsm_map.ms.lipa_AllowedAPNList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_plmn_Id, + { "plmn-Id", "gsm_map.ms.plmn_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_VPLMN_CSG_SubscriptionDataList_item, + { "CSG-SubscriptionData", "gsm_map.ms.CSG_SubscriptionData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_LIPA_AllowedAPNList_item, + { "APN", "gsm_map.ms.APN", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_apn_oi_Replacement, + { "apn-oi-Replacement", "gsm_map.ms.apn_oi_Replacement", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_rfsp_id, + { "rfsp-id", "gsm_map.ms.rfsp_id", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ambr, + { "ambr", "gsm_map.ms.ambr_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_apn_ConfigurationProfile, + { "apn-ConfigurationProfile", "gsm_map.ms.apn_ConfigurationProfile_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_stn_sr, + { "stn-sr", "gsm_map.ms.stn_sr", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_mps_CSPriority, + { "mps-CSPriority", "gsm_map.ms.mps_CSPriority_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mps_EPSPriority, + { "mps-EPSPriority", "gsm_map.ms.mps_EPSPriority_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscribed_vsrvcc, + { "subscribed-vsrvcc", "gsm_map.ms.subscribed_vsrvcc_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_defaultContext, + { "defaultContext", "gsm_map.ms.defaultContext", + FT_UINT32, BASE_DEC, NULL, 0, + "ContextId", HFILL }}, + { &hf_gsm_map_ms_completeDataListIncluded, + { "completeDataListIncluded", "gsm_map.ms.completeDataListIncluded_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_epsDataList, + { "epsDataList", "gsm_map.ms.epsDataList", + FT_UINT32, BASE_DEC, NULL, 0, + "EPS_DataList", HFILL }}, + { &hf_gsm_map_ms_additionalDefaultContext, + { "additionalDefaultContext", "gsm_map.ms.additionalDefaultContext", + FT_UINT32, BASE_DEC, NULL, 0, + "ContextId", HFILL }}, + { &hf_gsm_map_ms_EPS_DataList_item, + { "APN-Configuration", "gsm_map.ms.APN_Configuration_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdn_Type, + { "pdn-Type", "gsm_map.ms.pdn_Type", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_servedPartyIP_IPv4_Address, + { "servedPartyIP-IPv4-Address", "gsm_map.ms.servedPartyIP_IPv4_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "PDP_Address", HFILL }}, + { &hf_gsm_map_ms_eps_qos_Subscribed, + { "eps-qos-Subscribed", "gsm_map.ms.eps_qos_Subscribed_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdn_gw_AllocationType, + { "pdn-gw-AllocationType", "gsm_map.ms.pdn_gw_AllocationType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PDN_GW_AllocationType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vplmnAddressAllowed, + { "vplmnAddressAllowed", "gsm_map.ms.vplmnAddressAllowed_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_chargingCharacteristics, + { "chargingCharacteristics", "gsm_map.ms.chargingCharacteristics", + FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00, + NULL, HFILL }}, + { &hf_gsm_map_ms_specificAPNInfoList, + { "specificAPNInfoList", "gsm_map.ms.specificAPNInfoList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_servedPartyIP_IPv6_Address, + { "servedPartyIP-IPv6-Address", "gsm_map.ms.servedPartyIP_IPv6_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "PDP_Address", HFILL }}, + { &hf_gsm_map_ms_sipto_Permission, + { "sipto-Permission", "gsm_map.ms.sipto_Permission", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SIPTO_Permission_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lipa_Permission, + { "lipa-Permission", "gsm_map.ms.lipa_Permission", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LIPA_Permission_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_restoration_Priority, + { "restoration-Priority", "gsm_map.ms.restoration_Priority", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sipto_local_network_Permission, + { "sipto-local-network-Permission", "gsm_map.ms.sipto_local_network_Permission", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SIPTO_Local_Network_Permission_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_wlan_offloadability, + { "wlan-offloadability", "gsm_map.ms.wlan_offloadability_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_non_IP_PDN_Type_Indicator, + { "non-IP-PDN-Type-Indicator", "gsm_map.ms.non_IP_PDN_Type_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_nIDD_Mechanism, + { "nIDD-Mechanism", "gsm_map.ms.nIDD_Mechanism", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NIDD_Mechanism_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sCEF_ID, + { "sCEF-ID", "gsm_map.ms.sCEF_ID", + FT_BYTES, BASE_NONE, NULL, 0, + "FQDN", HFILL }}, + { &hf_gsm_map_ms_pdn_ConnectionContinuity, + { "pdn-ConnectionContinuity", "gsm_map.ms.pdn_ConnectionContinuity", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PDN_ConnectionContinuity_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_qos_Class_Identifier, + { "qos-Class-Identifier", "gsm_map.ms.qos_Class_Identifier", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_allocation_Retention_Priority, + { "allocation-Retention-Priority", "gsm_map.ms.allocation_Retention_Priority_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_max_RequestedBandwidth_UL, + { "max-RequestedBandwidth-UL", "gsm_map.ms.max_RequestedBandwidth_UL", + FT_INT32, BASE_DEC, NULL, 0, + "Bandwidth", HFILL }}, + { &hf_gsm_map_ms_max_RequestedBandwidth_DL, + { "max-RequestedBandwidth-DL", "gsm_map.ms.max_RequestedBandwidth_DL", + FT_INT32, BASE_DEC, NULL, 0, + "Bandwidth", HFILL }}, + { &hf_gsm_map_ms_extended_Max_RequestedBandwidth_UL, + { "extended-Max-RequestedBandwidth-UL", "gsm_map.ms.extended_Max_RequestedBandwidth_UL", + FT_INT32, BASE_DEC, NULL, 0, + "BandwidthExt", HFILL }}, + { &hf_gsm_map_ms_extended_Max_RequestedBandwidth_DL, + { "extended-Max-RequestedBandwidth-DL", "gsm_map.ms.extended_Max_RequestedBandwidth_DL", + FT_INT32, BASE_DEC, NULL, 0, + "BandwidthExt", HFILL }}, + { &hf_gsm_map_ms_SpecificAPNInfoList_item, + { "SpecificAPNInfo", "gsm_map.ms.SpecificAPNInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_priority_level, + { "priority-level", "gsm_map.ms.priority_level", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gsm_map_ms_pre_emption_capability, + { "pre-emption-capability", "gsm_map.ms.pre_emption_capability", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_ms_pre_emption_vulnerability, + { "pre-emption-vulnerability", "gsm_map.ms.pre_emption_vulnerability", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_ms_pdn_gw_ipv4_Address, + { "pdn-gw-ipv4-Address", "gsm_map.ms.pdn_gw_ipv4_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "PDP_Address", HFILL }}, + { &hf_gsm_map_ms_pdn_gw_ipv6_Address, + { "pdn-gw-ipv6-Address", "gsm_map.ms.pdn_gw_ipv6_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "PDP_Address", HFILL }}, + { &hf_gsm_map_ms_pdn_gw_name, + { "pdn-gw-name", "gsm_map.ms.pdn_gw_name", + FT_BYTES, BASE_NONE, NULL, 0, + "FQDN", HFILL }}, + { &hf_gsm_map_ms_wlan_offloadability_EUTRAN, + { "wlan-offloadability-EUTRAN", "gsm_map.ms.wlan_offloadability_EUTRAN", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_WLAN_Offloadability_Indication_vals), 0, + "WLAN_Offloadability_Indication", HFILL }}, + { &hf_gsm_map_ms_wlan_offloadability_UTRAN, + { "wlan-offloadability-UTRAN", "gsm_map.ms.wlan_offloadability_UTRAN", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_WLAN_Offloadability_Indication_vals), 0, + "WLAN_Offloadability_Indication", HFILL }}, + { &hf_gsm_map_ms_AdjacentAccessRestrictionDataList_item, + { "AdjacentAccessRestrictionData", "gsm_map.ms.AdjacentAccessRestrictionData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_accessRestrictionData, + { "accessRestrictionData", "gsm_map.ms.accessRestrictionData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext_AccessRestrictionData, + { "ext-AccessRestrictionData", "gsm_map.ms.ext_AccessRestrictionData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gmlc_List, + { "gmlc-List", "gsm_map.ms.gmlc_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lcs_PrivacyExceptionList, + { "lcs-PrivacyExceptionList", "gsm_map.ms.lcs_PrivacyExceptionList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_molr_List, + { "molr-List", "gsm_map.ms.molr_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_add_lcs_PrivacyExceptionList, + { "add-lcs-PrivacyExceptionList", "gsm_map.ms.add_lcs_PrivacyExceptionList", + FT_UINT32, BASE_DEC, NULL, 0, + "LCS_PrivacyExceptionList", HFILL }}, + { &hf_gsm_map_ms_GMLC_List_item, + { "ISDN-AddressString", "gsm_map.ms.ISDN_AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_GPRSDataList_item, + { "PDP-Context", "gsm_map.ms.PDP_Context_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdp_ContextId, + { "pdp-ContextId", "gsm_map.ms.pdp_ContextId", + FT_UINT32, BASE_DEC, NULL, 0, + "ContextId", HFILL }}, + { &hf_gsm_map_ms_pdp_Type, + { "pdp-Type", "gsm_map.ms.pdp_Type", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdp_Address, + { "pdp-Address", "gsm_map.ms.pdp_Address", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_qos_Subscribed, + { "qos-Subscribed", "gsm_map.ms.qos_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext_QoS_Subscribed, + { "ext-QoS-Subscribed", "gsm_map.ms.ext_QoS_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdp_ChargingCharacteristics, + { "pdp-ChargingCharacteristics", "gsm_map.ms.pdp_ChargingCharacteristics", + FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00, + "ChargingCharacteristics", HFILL }}, + { &hf_gsm_map_ms_ext2_QoS_Subscribed, + { "ext2-QoS-Subscribed", "gsm_map.ms.ext2_QoS_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext3_QoS_Subscribed, + { "ext3-QoS-Subscribed", "gsm_map.ms.ext3_QoS_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext4_QoS_Subscribed, + { "ext4-QoS-Subscribed", "gsm_map.ms.ext4_QoS_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext_pdp_Type, + { "ext-pdp-Type", "gsm_map.ms.ext_pdp_Type", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext_pdp_Address, + { "ext-pdp-Address", "gsm_map.ms.ext_pdp_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "PDP_Address", HFILL }}, + { &hf_gsm_map_ms_gprsDataList, + { "gprsDataList", "gsm_map.ms.gprsDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprs_CSI, + { "gprs-CSI", "gsm_map.ms.gprs_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mo_sms_CSI, + { "mo-sms-CSI", "gsm_map.ms.mo_sms_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "SMS_CSI", HFILL }}, + { &hf_gsm_map_ms_mt_sms_CSI, + { "mt-sms-CSI", "gsm_map.ms.mt_sms_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "SMS_CSI", HFILL }}, + { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, + { "mt-smsCAMELTDP-CriteriaList", "gsm_map.ms.mt_smsCAMELTDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mg_csi, + { "mg-csi", "gsm_map.ms.mg_csi_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprs_CamelTDPDataList, + { "gprs-CamelTDPDataList", "gsm_map.ms.gprs_CamelTDPDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_camelCapabilityHandling, + { "camelCapabilityHandling", "gsm_map.ms.camelCapabilityHandling", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_notificationToCSE, + { "notificationToCSE", "gsm_map.ms.notificationToCSE_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_csi_Active, + { "csi-Active", "gsm_map.ms.csi_Active_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_GPRS_CamelTDPDataList_item, + { "GPRS-CamelTDPData", "gsm_map.ms.GPRS_CamelTDPData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprs_TriggerDetectionPoint, + { "gprs-TriggerDetectionPoint", "gsm_map.ms.gprs_TriggerDetectionPoint", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_GPRS_TriggerDetectionPoint_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_serviceKey, + { "serviceKey", "gsm_map.ms.serviceKey", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gsmSCF_Address, + { "gsmSCF-Address", "gsm_map.ms.gsmSCF_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_defaultSessionHandling, + { "defaultSessionHandling", "gsm_map.ms.defaultSessionHandling", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultGPRS_Handling_vals), 0, + "DefaultGPRS_Handling", HFILL }}, + { &hf_gsm_map_ms_LSADataList_item, + { "LSAData", "gsm_map.ms.LSAData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaIdentity, + { "lsaIdentity", "gsm_map.ms.lsaIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaAttributes, + { "lsaAttributes", "gsm_map.ms.lsaAttributes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaActiveModeIndicator, + { "lsaActiveModeIndicator", "gsm_map.ms.lsaActiveModeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaOnlyAccessIndicator, + { "lsaOnlyAccessIndicator", "gsm_map.ms.lsaOnlyAccessIndicator", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LSAOnlyAccessIndicator_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaDataList, + { "lsaDataList", "gsm_map.ms.lsaDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_msisdn, + { "msisdn", "gsm_map.ms.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_category, + { "category", "gsm_map.ms.category", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscriberStatus, + { "subscriberStatus", "gsm_map.ms.subscriberStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SubscriberStatus_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_bearerServiceList, + { "bearerServiceList", "gsm_map.ms.bearerServiceList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_teleserviceList, + { "teleserviceList", "gsm_map.ms.teleserviceList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_provisionedSS, + { "provisionedSS", "gsm_map.ms.provisionedSS", + FT_UINT32, BASE_DEC, NULL, 0, + "Ext_SS_InfoList", HFILL }}, + { &hf_gsm_map_ms_odb_Data, + { "odb-Data", "gsm_map.ms.odb_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, + { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.ms.roamingRestrictionDueToUnsupportedFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vbsSubscriptionData, + { "vbsSubscriptionData", "gsm_map.ms.vbsSubscriptionData", + FT_UINT32, BASE_DEC, NULL, 0, + "VBSDataList", HFILL }}, + { &hf_gsm_map_ms_vgcsSubscriptionData, + { "vgcsSubscriptionData", "gsm_map.ms.vgcsSubscriptionData", + FT_UINT32, BASE_DEC, NULL, 0, + "VGCSDataList", HFILL }}, + { &hf_gsm_map_ms_vlrCamelSubscriptionInfo, + { "vlrCamelSubscriptionInfo", "gsm_map.ms.vlrCamelSubscriptionInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_BearerServiceList_item, + { "Ext-BearerServiceCode", "gsm_map.ms.Ext_BearerServiceCode", + FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_TeleserviceList_item, + { "Ext-TeleserviceCode", "gsm_map.ms.Ext_TeleserviceCode", + FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_odb_GeneralData, + { "odb-GeneralData", "gsm_map.ms.odb_GeneralData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_odb_HPLMN_Data, + { "odb-HPLMN-Data", "gsm_map.ms.odb_HPLMN_Data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_Ext_SS_InfoList_item, + { "Ext-SS-Info", "gsm_map.ms.Ext_SS_Info", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Ext_SS_Info_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_forwardingInfo, + { "forwardingInfo", "gsm_map.ms.forwardingInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "Ext_ForwInfo", HFILL }}, + { &hf_gsm_map_ms_callBarringInfo, + { "callBarringInfo", "gsm_map.ms.callBarringInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "Ext_CallBarInfo", HFILL }}, + { &hf_gsm_map_ms_cug_Info, + { "cug-Info", "gsm_map.ms.cug_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_Data, + { "ss-Data", "gsm_map.ms.ss_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "Ext_SS_Data", HFILL }}, + { &hf_gsm_map_ms_emlpp_Info, + { "emlpp-Info", "gsm_map.ms.emlpp_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_Code, + { "ss-Code", "gsm_map.ms.ss_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_forwardingFeatureList, + { "forwardingFeatureList", "gsm_map.ms.forwardingFeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + "Ext_ForwFeatureList", HFILL }}, + { &hf_gsm_map_ms_Ext_ForwFeatureList_item, + { "Ext-ForwFeature", "gsm_map.ms.Ext_ForwFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_basicService, + { "basicService", "gsm_map.ms.basicService", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + "Ext_BasicServiceCode", HFILL }}, + { &hf_gsm_map_ms_ss_Status, + { "ss-Status", "gsm_map.ms.ss_Status", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_SS_Status", HFILL }}, + { &hf_gsm_map_ms_forwardedToNumber, + { "forwardedToNumber", "gsm_map.ms.forwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_forwardedToSubaddress, + { "forwardedToSubaddress", "gsm_map.ms.forwardedToSubaddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_SubaddressString", HFILL }}, + { &hf_gsm_map_ms_forwardingOptions, + { "forwardingOptions", "gsm_map.ms.forwardingOptions", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_noReplyConditionTime, + { "noReplyConditionTime", "gsm_map.ms.noReplyConditionTime", + FT_UINT32, BASE_DEC, NULL, 0, + "Ext_NoRepCondTime", HFILL }}, + { &hf_gsm_map_ms_longForwardedToNumber, + { "longForwardedToNumber", "gsm_map.ms.longForwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "FTN_AddressString", HFILL }}, + { &hf_gsm_map_ms_callBarringFeatureList, + { "callBarringFeatureList", "gsm_map.ms.callBarringFeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + "Ext_CallBarFeatureList", HFILL }}, + { &hf_gsm_map_ms_Ext_CallBarFeatureList_item, + { "Ext-CallBarringFeature", "gsm_map.ms.Ext_CallBarringFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cug_SubscriptionList, + { "cug-SubscriptionList", "gsm_map.ms.cug_SubscriptionList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cug_FeatureList, + { "cug-FeatureList", "gsm_map.ms.cug_FeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_CUG_SubscriptionList_item, + { "CUG-Subscription", "gsm_map.ms.CUG_Subscription_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cug_Index, + { "cug-Index", "gsm_map.ms.cug_Index", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cug_Interlock, + { "cug-Interlock", "gsm_map.ms.cug_Interlock", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_intraCUG_Options, + { "intraCUG-Options", "gsm_map.ms.intraCUG_Options", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IntraCUG_Options_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_basicServiceGroupList, + { "basicServiceGroupList", "gsm_map.ms.basicServiceGroupList", + FT_UINT32, BASE_DEC, NULL, 0, + "Ext_BasicServiceGroupList", HFILL }}, + { &hf_gsm_map_ms_CUG_FeatureList_item, + { "CUG-Feature", "gsm_map.ms.CUG_Feature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_Ext_BasicServiceGroupList_item, + { "Ext-BasicServiceCode", "gsm_map.ms.Ext_BasicServiceCode", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_preferentialCUG_Indicator, + { "preferentialCUG-Indicator", "gsm_map.ms.preferentialCUG_Indicator", + FT_UINT32, BASE_DEC, NULL, 0, + "CUG_Index", HFILL }}, + { &hf_gsm_map_ms_interCUG_Restrictions, + { "interCUG-Restrictions", "gsm_map.ms.interCUG_Restrictions", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_SubscriptionOption, + { "ss-SubscriptionOption", "gsm_map.ms.ss_SubscriptionOption", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_SS_SubscriptionOption_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCS_PrivacyExceptionList_item, + { "LCS-PrivacyClass", "gsm_map.ms.LCS_PrivacyClass_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_notificationToMSUser, + { "notificationToMSUser", "gsm_map.ms.notificationToMSUser", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotificationToMSUser_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_externalClientList, + { "externalClientList", "gsm_map.ms.externalClientList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_plmnClientList, + { "plmnClientList", "gsm_map.ms.plmnClientList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ext_externalClientList, + { "ext-externalClientList", "gsm_map.ms.ext_externalClientList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_serviceTypeList, + { "serviceTypeList", "gsm_map.ms.serviceTypeList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ExternalClientList_item, + { "ExternalClient", "gsm_map.ms.ExternalClient_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_PLMNClientList_item, + { "LCSClientInternalID", "gsm_map.ms.LCSClientInternalID", + FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_Ext_ExternalClientList_item, + { "ExternalClient", "gsm_map.ms.ExternalClient_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_clientIdentity, + { "clientIdentity", "gsm_map.ms.clientIdentity_element", + FT_NONE, BASE_NONE, NULL, 0, + "LCSClientExternalID", HFILL }}, + { &hf_gsm_map_ms_gmlc_Restriction, + { "gmlc-Restriction", "gsm_map.ms.gmlc_Restriction", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_GMLC_Restriction_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ServiceTypeList_item, + { "ServiceType", "gsm_map.ms.ServiceType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_serviceTypeIdentity, + { "serviceTypeIdentity", "gsm_map.ms.serviceTypeIdentity", + FT_UINT32, BASE_DEC, VALS(gsm_map_LCSServiceTypeID_vals), 0, + "LCSServiceTypeID", HFILL }}, + { &hf_gsm_map_ms_MOLR_List_item, + { "MOLR-Class", "gsm_map.ms.MOLR_Class_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ZoneCodeList_item, + { "ZoneCode", "gsm_map.ms.ZoneCode", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_List, + { "ss-List", "gsm_map.ms.ss_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_regionalSubscriptionResponse, + { "regionalSubscriptionResponse", "gsm_map.ms.regionalSubscriptionResponse", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RegionalSubscriptionResponse_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_basicServiceList, + { "basicServiceList", "gsm_map.ms.basicServiceList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_regionalSubscriptionIdentifier, + { "regionalSubscriptionIdentifier", "gsm_map.ms.regionalSubscriptionIdentifier", + FT_BYTES, BASE_NONE, NULL, 0, + "ZoneCode", HFILL }}, + { &hf_gsm_map_ms_vbsGroupIndication, + { "vbsGroupIndication", "gsm_map.ms.vbsGroupIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vgcsGroupIndication, + { "vgcsGroupIndication", "gsm_map.ms.vgcsGroupIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_camelSubscriptionInfoWithdraw, + { "camelSubscriptionInfoWithdraw", "gsm_map.ms.camelSubscriptionInfoWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprsSubscriptionDataWithdraw, + { "gprsSubscriptionDataWithdraw", "gsm_map.ms.gprsSubscriptionDataWithdraw", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_GPRSSubscriptionDataWithdraw_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsuppportedFeature, + { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.ms.roamingRestrictedInSgsnDueToUnsuppportedFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaInformationWithdraw, + { "lsaInformationWithdraw", "gsm_map.ms.lsaInformationWithdraw", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LSAInformationWithdraw_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gmlc_ListWithdraw, + { "gmlc-ListWithdraw", "gsm_map.ms.gmlc_ListWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_istInformationWithdraw, + { "istInformationWithdraw", "gsm_map.ms.istInformationWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_specificCSI_Withdraw, + { "specificCSI-Withdraw", "gsm_map.ms.specificCSI_Withdraw", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_chargingCharacteristicsWithdraw, + { "chargingCharacteristicsWithdraw", "gsm_map.ms.chargingCharacteristicsWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_stn_srWithdraw, + { "stn-srWithdraw", "gsm_map.ms.stn_srWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_epsSubscriptionDataWithdraw, + { "epsSubscriptionDataWithdraw", "gsm_map.ms.epsSubscriptionDataWithdraw", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_EPS_SubscriptionDataWithdraw_vals), 0, + "EPS_SubscriptionDataWithdraw", HFILL }}, + { &hf_gsm_map_ms_apn_oi_replacementWithdraw, + { "apn-oi-replacementWithdraw", "gsm_map.ms.apn_oi_replacementWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_csg_SubscriptionDeleted, + { "csg-SubscriptionDeleted", "gsm_map.ms.csg_SubscriptionDeleted_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscribedPeriodicTAU_RAU_TimerWithdraw, + { "subscribedPeriodicTAU-RAU-TimerWithdraw", "gsm_map.ms.subscribedPeriodicTAU_RAU_TimerWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscribedPeriodicLAU_TimerWithdraw, + { "subscribedPeriodicLAU-TimerWithdraw", "gsm_map.ms.subscribedPeriodicLAU_TimerWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscribed_vsrvccWithdraw, + { "subscribed-vsrvccWithdraw", "gsm_map.ms.subscribed_vsrvccWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vplmn_Csg_SubscriptionDeleted, + { "vplmn-Csg-SubscriptionDeleted", "gsm_map.ms.vplmn_Csg_SubscriptionDeleted_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_additionalMSISDN_Withdraw, + { "additionalMSISDN-Withdraw", "gsm_map.ms.additionalMSISDN_Withdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cs_to_ps_SRVCC_Withdraw, + { "cs-to-ps-SRVCC-Withdraw", "gsm_map.ms.cs_to_ps_SRVCC_Withdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_imsiGroupIdList_Withdraw, + { "imsiGroupIdList-Withdraw", "gsm_map.ms.imsiGroupIdList_Withdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_userPlaneIntegrityProtectionWithdraw, + { "userPlaneIntegrityProtectionWithdraw", "gsm_map.ms.userPlaneIntegrityProtectionWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_dl_Buffering_Suggested_Packet_Count_Withdraw, + { "dl-Buffering-Suggested-Packet-Count-Withdraw", "gsm_map.ms.dl_Buffering_Suggested_Packet_Count_Withdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ue_UsageTypeWithdraw, + { "ue-UsageTypeWithdraw", "gsm_map.ms.ue_UsageTypeWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_reset_idsWithdraw, + { "reset-idsWithdraw", "gsm_map.ms.reset_idsWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_iab_OperationWithdraw, + { "iab-OperationWithdraw", "gsm_map.ms.iab_OperationWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_allGPRSData, + { "allGPRSData", "gsm_map.ms.allGPRSData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_contextIdList, + { "contextIdList", "gsm_map.ms.contextIdList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_allEPS_Data, + { "allEPS-Data", "gsm_map.ms.allEPS_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ContextIdList_item, + { "ContextId", "gsm_map.ms.ContextId", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_allLSAData, + { "allLSAData", "gsm_map.ms.allLSAData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaIdentityList, + { "lsaIdentityList", "gsm_map.ms.lsaIdentityList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_LSAIdentityList_item, + { "LSAIdentity", "gsm_map.ms.LSAIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_BasicServiceList_item, + { "Ext-BasicServiceCode", "gsm_map.ms.Ext_BasicServiceCode", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_o_CSI, + { "o-CSI", "gsm_map.ms.o_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_CSI, + { "ss-CSI", "gsm_map.ms.ss_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList, + { "o-BcsmCamelTDP-CriteriaList", "gsm_map.ms.o_BcsmCamelTDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + "O_BcsmCamelTDPCriteriaList", HFILL }}, + { &hf_gsm_map_ms_tif_CSI, + { "tif-CSI", "gsm_map.ms.tif_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_m_CSI, + { "m-CSI", "gsm_map.ms.m_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vt_CSI, + { "vt-CSI", "gsm_map.ms.vt_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "T_CSI", HFILL }}, + { &hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList, + { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ms.t_BCSM_CAMEL_TDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_d_CSI, + { "d-CSI", "gsm_map.ms.d_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_MT_smsCAMELTDP_CriteriaList_item, + { "MT-smsCAMELTDP-Criteria", "gsm_map.ms.MT_smsCAMELTDP_Criteria_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sms_TriggerDetectionPoint, + { "sms-TriggerDetectionPoint", "gsm_map.ms.sms_TriggerDetectionPoint", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SMS_TriggerDetectionPoint_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_tpdu_TypeCriterion, + { "tpdu-TypeCriterion", "gsm_map.ms.tpdu_TypeCriterion", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_TPDU_TypeCriterion_item, + { "MT-SMS-TPDU-Type", "gsm_map.ms.MT_SMS_TPDU_Type", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_MT_SMS_TPDU_Type_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_dp_AnalysedInfoCriteriaList, + { "dp-AnalysedInfoCriteriaList", "gsm_map.ms.dp_AnalysedInfoCriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_DP_AnalysedInfoCriteriaList_item, + { "DP-AnalysedInfoCriterium", "gsm_map.ms.DP_AnalysedInfoCriterium_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_dialledNumber, + { "dialledNumber", "gsm_map.ms.dialledNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_defaultCallHandling, + { "defaultCallHandling", "gsm_map.ms.defaultCallHandling", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultCallHandling_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_CamelData, + { "ss-CamelData", "gsm_map.ms.ss_CamelData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ss_EventList, + { "ss-EventList", "gsm_map.ms.ss_EventList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_SS_EventList_item, + { "SS-Code", "gsm_map.ms.SS_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_o_BcsmCamelTDPDataList, + { "o-BcsmCamelTDPDataList", "gsm_map.ms.o_BcsmCamelTDPDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_csiActive, + { "csiActive", "gsm_map.ms.csiActive_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_O_BcsmCamelTDPDataList_item, + { "O-BcsmCamelTDPData", "gsm_map.ms.O_BcsmCamelTDPData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_o_BcsmTriggerDetectionPoint, + { "o-BcsmTriggerDetectionPoint", "gsm_map.ms.o_BcsmTriggerDetectionPoint", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_O_BcsmTriggerDetectionPoint_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_O_BcsmCamelTDPCriteriaList_item, + { "O-BcsmCamelTDP-Criteria", "gsm_map.ms.O_BcsmCamelTDP_Criteria_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_item, + { "T-BCSM-CAMEL-TDP-Criteria", "gsm_map.ms.T_BCSM_CAMEL_TDP_Criteria_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_destinationNumberCriteria, + { "destinationNumberCriteria", "gsm_map.ms.destinationNumberCriteria_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_basicServiceCriteria, + { "basicServiceCriteria", "gsm_map.ms.basicServiceCriteria", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_callTypeCriteria, + { "callTypeCriteria", "gsm_map.ms.callTypeCriteria", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CallTypeCriteria_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_o_CauseValueCriteria, + { "o-CauseValueCriteria", "gsm_map.ms.o_CauseValueCriteria", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_t_BCSM_TriggerDetectionPoint, + { "t-BCSM-TriggerDetectionPoint", "gsm_map.ms.t_BCSM_TriggerDetectionPoint", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_T_BcsmTriggerDetectionPoint_vals), 0, + "T_BcsmTriggerDetectionPoint", HFILL }}, + { &hf_gsm_map_ms_t_CauseValueCriteria, + { "t-CauseValueCriteria", "gsm_map.ms.t_CauseValueCriteria", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_matchType, + { "matchType", "gsm_map.ms.matchType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_MatchType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_destinationNumberList, + { "destinationNumberList", "gsm_map.ms.destinationNumberList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_destinationNumberLengthList, + { "destinationNumberLengthList", "gsm_map.ms.destinationNumberLengthList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_DestinationNumberList_item, + { "ISDN-AddressString", "gsm_map.ms.ISDN_AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_DestinationNumberLengthList_item, + { "DestinationNumberLengthList item", "gsm_map.ms.DestinationNumberLengthList_item", + FT_UINT32, BASE_DEC, NULL, 0, + "INTEGER_1_maxNumOfISDN_AddressDigits", HFILL }}, + { &hf_gsm_map_ms_BasicServiceCriteria_item, + { "Ext-BasicServiceCode", "gsm_map.ms.Ext_BasicServiceCode", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_O_CauseValueCriteria_item, + { "CauseValue", "gsm_map.ms.CauseValue", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_T_CauseValueCriteria_item, + { "CauseValue", "gsm_map.ms.CauseValue", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sms_CAMEL_TDP_DataList, + { "sms-CAMEL-TDP-DataList", "gsm_map.ms.sms_CAMEL_TDP_DataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_SMS_CAMEL_TDP_DataList_item, + { "SMS-CAMEL-TDP-Data", "gsm_map.ms.SMS_CAMEL_TDP_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_defaultSMS_Handling, + { "defaultSMS-Handling", "gsm_map.ms.defaultSMS_Handling", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultSMS_Handling_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mobilityTriggers, + { "mobilityTriggers", "gsm_map.ms.mobilityTriggers", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_MobilityTriggers_item, + { "MM-Code", "gsm_map.ms.MM_Code", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_t_BcsmCamelTDPDataList, + { "t-BcsmCamelTDPDataList", "gsm_map.ms.t_BcsmCamelTDPDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_T_BcsmCamelTDPDataList_item, + { "T-BcsmCamelTDPData", "gsm_map.ms.T_BcsmCamelTDPData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_t_BcsmTriggerDetectionPoint, + { "t-BcsmTriggerDetectionPoint", "gsm_map.ms.t_BcsmTriggerDetectionPoint", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_T_BcsmTriggerDetectionPoint_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ggsn_Address, + { "ggsn-Address", "gsm_map.ms.ggsn_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_ms_ggsn_Number, + { "ggsn-Number", "gsm_map.ms.ggsn_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_mobileNotReachableReason, + { "mobileNotReachableReason", "gsm_map.ms.mobileNotReachableReason", + FT_UINT32, BASE_DEC, NULL, 0, + "AbsentSubscriberDiagnosticSM", HFILL }}, + { &hf_gsm_map_ms_sendingNodenumber, + { "sendingNodenumber", "gsm_map.ms.sendingNodenumber", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SendingNode_Number_vals), 0, + "SendingNode_Number", HFILL }}, + { &hf_gsm_map_ms_hlr_List, + { "hlr-List", "gsm_map.ms.hlr_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_reset_Id_List, + { "reset-Id-List", "gsm_map.ms.reset_Id_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscriptionData, + { "subscriptionData", "gsm_map.ms.subscriptionData_element", + FT_NONE, BASE_NONE, NULL, 0, + "InsertSubscriberDataArg", HFILL }}, + { &hf_gsm_map_ms_subscriptionDataDeletion, + { "subscriptionDataDeletion", "gsm_map.ms.subscriptionDataDeletion_element", + FT_NONE, BASE_NONE, NULL, 0, + "DeleteSubscriberDataArg", HFILL }}, + { &hf_gsm_map_ms_css_Number, + { "css-Number", "gsm_map.ms.css_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_msNotReachable, + { "msNotReachable", "gsm_map.ms.msNotReachable_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_VBSDataList_item, + { "VoiceBroadcastData", "gsm_map.ms.VoiceBroadcastData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_VGCSDataList_item, + { "VoiceGroupCallData", "gsm_map.ms.VoiceGroupCallData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_groupId, + { "groupId", "gsm_map.ms.groupId", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_additionalSubscriptions, + { "additionalSubscriptions", "gsm_map.ms.additionalSubscriptions", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_additionalInfo, + { "additionalInfo", "gsm_map.ms.additionalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_longGroupId, + { "longGroupId", "gsm_map.ms.longGroupId", + FT_BYTES, BASE_NONE, NULL, 0, + "Long_GroupId", HFILL }}, + { &hf_gsm_map_ms_groupid, + { "groupid", "gsm_map.ms.groupid", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_broadcastInitEntitlement, + { "broadcastInitEntitlement", "gsm_map.ms.broadcastInitEntitlement_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedInfo, + { "requestedInfo", "gsm_map.ms.requestedInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_callPriority, + { "callPriority", "gsm_map.ms.callPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_ms_subscriberInfo, + { "subscriberInfo", "gsm_map.ms.subscriberInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscriberState, + { "subscriberState", "gsm_map.ms.subscriberState", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SubscriberState_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ps_SubscriberState, + { "ps-SubscriberState", "gsm_map.ms.ps_SubscriberState", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PS_SubscriberState_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ms_Classmark2, + { "ms-Classmark2", "gsm_map.ms.ms_Classmark2", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprs_MS_Class, + { "gprs-MS-Class", "gsm_map.ms.gprs_MS_Class_element", + FT_NONE, BASE_NONE, NULL, 0, + "GPRSMSClass", HFILL }}, + { &hf_gsm_map_ms_mnpInfoRes, + { "mnpInfoRes", "gsm_map.ms.mnpInfoRes_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication, + { "imsVoiceOverPS-SessionsIndication", "gsm_map.ms.imsVoiceOverPS_SessionsIndication", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IMS_VoiceOverPS_SessionsInd_vals), 0, + "IMS_VoiceOverPS_SessionsInd", HFILL }}, + { &hf_gsm_map_ms_lastUE_ActivityTime, + { "lastUE-ActivityTime", "gsm_map.ms.lastUE_ActivityTime", + FT_BYTES, BASE_NONE, NULL, 0, + "Time", HFILL }}, + { &hf_gsm_map_ms_lastRAT_Type, + { "lastRAT-Type", "gsm_map.ms.lastRAT_Type", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Used_RAT_Type_vals), 0, + "Used_RAT_Type", HFILL }}, + { &hf_gsm_map_ms_eps_SubscriberState, + { "eps-SubscriberState", "gsm_map.ms.eps_SubscriberState", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PS_SubscriberState_vals), 0, + "PS_SubscriberState", HFILL }}, + { &hf_gsm_map_ms_timeZone, + { "timeZone", "gsm_map.ms.timeZone", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_daylightSavingTime, + { "daylightSavingTime", "gsm_map.ms.daylightSavingTime", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DaylightSavingTime_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_locationInformation5GS, + { "locationInformation5GS", "gsm_map.ms.locationInformation5GS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_routeingNumber, + { "routeingNumber", "gsm_map.ms.routeingNumber", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_numberPortabilityStatus, + { "numberPortabilityStatus", "gsm_map.ms.numberPortabilityStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NumberPortabilityStatus_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mSNetworkCapability, + { "mSNetworkCapability", "gsm_map.ms.mSNetworkCapability", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mSRadioAccessCapability, + { "mSRadioAccessCapability", "gsm_map.ms.mSRadioAccessCapability", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_locationInformation_01, + { "locationInformation", "gsm_map.ms.locationInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscriberState_01, + { "subscriberState", "gsm_map.ms.subscriberState_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_currentLocation, + { "currentLocation", "gsm_map.ms.currentLocation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedDomain, + { "requestedDomain", "gsm_map.ms.requestedDomain", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DomainType_vals), 0, + "DomainType", HFILL }}, + { &hf_gsm_map_ms_imei_01, + { "imei", "gsm_map.ms.imei_null_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ms_classmark, + { "ms-classmark", "gsm_map.ms.ms_classmark_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mnpRequestedInfo, + { "mnpRequestedInfo", "gsm_map.ms.mnpRequestedInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_locationInformationEPS_Supported, + { "locationInformationEPS-Supported", "gsm_map.ms.locationInformationEPS_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_t_adsData, + { "t-adsData", "gsm_map.ms.t_adsData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedNodes, + { "requestedNodes", "gsm_map.ms.requestedNodes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_servingNodeIndication, + { "servingNodeIndication", "gsm_map.ms.servingNodeIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_localTimeZoneRequest, + { "localTimeZoneRequest", "gsm_map.ms.localTimeZoneRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ageOfLocationInformation, + { "ageOfLocationInformation", "gsm_map.ms.ageOfLocationInformation", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_geographicalInformation, + { "geographicalInformation", "gsm_map.ms.geographicalInformation", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vlr_number, + { "vlr-number", "gsm_map.ms.vlr_number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_locationNumber, + { "locationNumber", "gsm_map.ms.locationNumber", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, + { "cellGlobalIdOrServiceAreaIdOrLAI", "gsm_map.ms.cellGlobalIdOrServiceAreaIdOrLAI", + FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_selectedLSA_Id, + { "selectedLSA-Id", "gsm_map.ms.selectedLSA_Id", + FT_BYTES, BASE_NONE, NULL, 0, + "LSAIdentity", HFILL }}, + { &hf_gsm_map_ms_geodeticInformation, + { "geodeticInformation", "gsm_map.ms.geodeticInformation", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_currentLocationRetrieved, + { "currentLocationRetrieved", "gsm_map.ms.currentLocationRetrieved_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sai_Present, + { "sai-Present", "gsm_map.ms.sai_Present_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_userCSGInformation, + { "userCSGInformation", "gsm_map.ms.userCSGInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_e_utranCellGlobalIdentity, + { "e-utranCellGlobalIdentity", "gsm_map.ms.e_utranCellGlobalIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "E_UTRAN_CGI", HFILL }}, + { &hf_gsm_map_ms_trackingAreaIdentity, + { "trackingAreaIdentity", "gsm_map.ms.trackingAreaIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "TA_Id", HFILL }}, + { &hf_gsm_map_ms_mme_Name, + { "mme-Name", "gsm_map.ms.mme_Name", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_ms_routeingAreaIdentity, + { "routeingAreaIdentity", "gsm_map.ms.routeingAreaIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "RAIdentity", HFILL }}, + { &hf_gsm_map_ms_selectedLSAIdentity, + { "selectedLSAIdentity", "gsm_map.ms.selectedLSAIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "LSAIdentity", HFILL }}, + { &hf_gsm_map_ms_nrCellGlobalIdentity, + { "nrCellGlobalIdentity", "gsm_map.ms.nrCellGlobalIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "NR_CGI", HFILL }}, + { &hf_gsm_map_ms_amf_address, + { "amf-address", "gsm_map.ms.amf_address", + FT_BYTES, BASE_NONE, NULL, 0, + "FQDN", HFILL }}, + { &hf_gsm_map_ms_vplmnId, + { "vplmnId", "gsm_map.ms.vplmnId", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gsm_map_ms_localtimeZone, + { "localtimeZone", "gsm_map.ms.localtimeZone", + FT_BYTES, BASE_NONE, NULL, 0, + "TimeZone", HFILL }}, + { &hf_gsm_map_ms_nrTrackingAreaIdentity, + { "nrTrackingAreaIdentity", "gsm_map.ms.nrTrackingAreaIdentity", + FT_BYTES, BASE_NONE, NULL, 0, + "NR_TA_Id", HFILL }}, + { &hf_gsm_map_ms_accessMode, + { "accessMode", "gsm_map.ms.accessMode", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_gsm_map_ms_cmi, + { "cmi", "gsm_map.ms.cmi", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_gsm_map_ms_assumedIdle, + { "assumedIdle", "gsm_map.ms.assumedIdle_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_camelBusy, + { "camelBusy", "gsm_map.ms.camelBusy_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_netDetNotReachable, + { "netDetNotReachable", "gsm_map.ms.netDetNotReachable", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotReachableReason_vals), 0, + "NotReachableReason", HFILL }}, + { &hf_gsm_map_ms_notProvidedFromVLR, + { "notProvidedFromVLR", "gsm_map.ms.notProvidedFromVLR_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_notProvidedFromSGSNorMME, + { "notProvidedFromSGSNorMME", "gsm_map.ms.notProvidedFromSGSNorMME_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ps_Detached, + { "ps-Detached", "gsm_map.ms.ps_Detached_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ps_AttachedNotReachableForPaging, + { "ps-AttachedNotReachableForPaging", "gsm_map.ms.ps_AttachedNotReachableForPaging_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ps_AttachedReachableForPaging, + { "ps-AttachedReachableForPaging", "gsm_map.ms.ps_AttachedReachableForPaging_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ps_PDP_ActiveNotReachableForPaging, + { "ps-PDP-ActiveNotReachableForPaging", "gsm_map.ms.ps_PDP_ActiveNotReachableForPaging", + FT_UINT32, BASE_DEC, NULL, 0, + "PDP_ContextInfoList", HFILL }}, + { &hf_gsm_map_ms_ps_PDP_ActiveReachableForPaging, + { "ps-PDP-ActiveReachableForPaging", "gsm_map.ms.ps_PDP_ActiveReachableForPaging", + FT_UINT32, BASE_DEC, NULL, 0, + "PDP_ContextInfoList", HFILL }}, + { &hf_gsm_map_ms_PDP_ContextInfoList_item, + { "PDP-ContextInfo", "gsm_map.ms.PDP_ContextInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pdp_ContextIdentifier, + { "pdp-ContextIdentifier", "gsm_map.ms.pdp_ContextIdentifier", + FT_UINT32, BASE_DEC, NULL, 0, + "ContextId", HFILL }}, + { &hf_gsm_map_ms_pdp_ContextActive, + { "pdp-ContextActive", "gsm_map.ms.pdp_ContextActive_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_apn_Subscribed, + { "apn-Subscribed", "gsm_map.ms.apn_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + "APN", HFILL }}, + { &hf_gsm_map_ms_apn_InUse, + { "apn-InUse", "gsm_map.ms.apn_InUse", + FT_BYTES, BASE_NONE, NULL, 0, + "APN", HFILL }}, + { &hf_gsm_map_ms_nsapi, + { "nsapi", "gsm_map.ms.nsapi", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_transactionId, + { "transactionId", "gsm_map.ms.transactionId", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_teid_ForGnAndGp, + { "teid-ForGnAndGp", "gsm_map.ms.teid_ForGnAndGp", + FT_BYTES, BASE_NONE, NULL, 0, + "TEID", HFILL }}, + { &hf_gsm_map_ms_teid_ForIu, + { "teid-ForIu", "gsm_map.ms.teid_ForIu", + FT_BYTES, BASE_NONE, NULL, 0, + "TEID", HFILL }}, + { &hf_gsm_map_ms_qos_Subscribed_01, + { "qos-Subscribed", "gsm_map.ms.qos_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos_Requested, + { "qos-Requested", "gsm_map.ms.qos_Requested", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos_Negotiated, + { "qos-Negotiated", "gsm_map.ms.qos_Negotiated", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_chargingId, + { "chargingId", "gsm_map.ms.chargingId", + FT_BYTES, BASE_NONE, NULL, 0, + "GPRSChargingID", HFILL }}, + { &hf_gsm_map_ms_rnc_Address, + { "rnc-Address", "gsm_map.ms.rnc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_ms_qos2_Subscribed, + { "qos2-Subscribed", "gsm_map.ms.qos2_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext2_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos2_Requested, + { "qos2-Requested", "gsm_map.ms.qos2_Requested", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext2_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos2_Negotiated, + { "qos2-Negotiated", "gsm_map.ms.qos2_Negotiated", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext2_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos3_Subscribed, + { "qos3-Subscribed", "gsm_map.ms.qos3_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext3_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos3_Requested, + { "qos3-Requested", "gsm_map.ms.qos3_Requested", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext3_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos3_Negotiated, + { "qos3-Negotiated", "gsm_map.ms.qos3_Negotiated", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext3_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos4_Subscribed, + { "qos4-Subscribed", "gsm_map.ms.qos4_Subscribed", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext4_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos4_Requested, + { "qos4-Requested", "gsm_map.ms.qos4_Requested", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext4_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_qos4_Negotiated, + { "qos4-Negotiated", "gsm_map.ms.qos4_Negotiated", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext4_QoS_Subscribed", HFILL }}, + { &hf_gsm_map_ms_subscriberIdentity, + { "subscriberIdentity", "gsm_map.ms.subscriberIdentity", + FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedSubscriptionInfo, + { "requestedSubscriptionInfo", "gsm_map.ms.requestedSubscriptionInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_callForwardingData, + { "callForwardingData", "gsm_map.ms.callForwardingData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_callBarringData, + { "callBarringData", "gsm_map.ms.callBarringData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_odb_Info, + { "odb-Info", "gsm_map.ms.odb_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_camel_SubscriptionInfo, + { "camel-SubscriptionInfo", "gsm_map.ms.camel_SubscriptionInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases, + { "supportedVLR-CAMEL-Phases", "gsm_map.ms.supportedVLR_CAMEL_Phases", + FT_BYTES, BASE_NONE, NULL, 0, + "SupportedCamelPhases", HFILL }}, + { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases, + { "supportedSGSN-CAMEL-Phases", "gsm_map.ms.supportedSGSN_CAMEL_Phases", + FT_BYTES, BASE_NONE, NULL, 0, + "SupportedCamelPhases", HFILL }}, + { &hf_gsm_map_ms_offeredCamel4CSIsInVLR, + { "offeredCamel4CSIsInVLR", "gsm_map.ms.offeredCamel4CSIsInVLR", + FT_BYTES, BASE_NONE, NULL, 0, + "OfferedCamel4CSIs", HFILL }}, + { &hf_gsm_map_ms_offeredCamel4CSIsInSGSN, + { "offeredCamel4CSIsInSGSN", "gsm_map.ms.offeredCamel4CSIsInSGSN", + FT_BYTES, BASE_NONE, NULL, 0, + "OfferedCamel4CSIs", HFILL }}, + { &hf_gsm_map_ms_msisdn_BS_List, + { "msisdn-BS-List", "gsm_map.ms.msisdn_BS_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cw_Data, + { "cw-Data", "gsm_map.ms.cw_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "CallWaitingData", HFILL }}, + { &hf_gsm_map_ms_ch_Data, + { "ch-Data", "gsm_map.ms.ch_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "CallHoldData", HFILL }}, + { &hf_gsm_map_ms_clip_Data, + { "clip-Data", "gsm_map.ms.clip_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ClipData", HFILL }}, + { &hf_gsm_map_ms_clir_Data, + { "clir-Data", "gsm_map.ms.clir_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ClirData", HFILL }}, + { &hf_gsm_map_ms_ect_data, + { "ect-data", "gsm_map.ms.ect_data_element", + FT_NONE, BASE_NONE, NULL, 0, + "EctData", HFILL }}, + { &hf_gsm_map_ms_cwFeatureList, + { "cwFeatureList", "gsm_map.ms.cwFeatureList", + FT_UINT32, BASE_DEC, NULL, 0, + "Ext_CwFeatureList", HFILL }}, + { &hf_gsm_map_ms_Ext_CwFeatureList_item, + { "Ext-CwFeature", "gsm_map.ms.Ext_CwFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_overrideCategory, + { "overrideCategory", "gsm_map.ms.overrideCategory", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_OverrideCategory_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cliRestrictionOption, + { "cliRestrictionOption", "gsm_map.ms.cliRestrictionOption", + FT_UINT32, BASE_DEC, VALS(gsm_map_ss_CliRestrictionOption_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedSS_Info, + { "requestedSS-Info", "gsm_map.ms.requestedSS_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + "SS_ForBS_Code", HFILL }}, + { &hf_gsm_map_ms_odb, + { "odb", "gsm_map.ms.odb_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedCAMEL_SubscriptionInfo, + { "requestedCAMEL-SubscriptionInfo", "gsm_map.ms.requestedCAMEL_SubscriptionInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RequestedCAMEL_SubscriptionInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases_01, + { "supportedVLR-CAMEL-Phases", "gsm_map.ms.supportedVLR_CAMEL_Phases_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases_01, + { "supportedSGSN-CAMEL-Phases", "gsm_map.ms.supportedSGSN_CAMEL_Phases_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo, + { "additionalRequestedCAMEL-SubscriptionInfo", "gsm_map.ms.additionalRequestedCAMEL_SubscriptionInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_msisdn_BS_List_01, + { "msisdn-BS-List", "gsm_map.ms.msisdn_BS_List_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_csg_SubscriptionDataRequested, + { "csg-SubscriptionDataRequested", "gsm_map.ms.csg_SubscriptionDataRequested_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cw_Info, + { "cw-Info", "gsm_map.ms.cw_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_clip_Info, + { "clip-Info", "gsm_map.ms.clip_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_clir_Info, + { "clir-Info", "gsm_map.ms.clir_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_hold_Info, + { "hold-Info", "gsm_map.ms.hold_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ect_Info, + { "ect-Info", "gsm_map.ms.ect_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_MSISDN_BS_List_item, + { "MSISDN-BS", "gsm_map.ms.MSISDN_BS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_password, + { "password", "gsm_map.ms.password", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, + { "wrongPasswordAttemptsCounter", "gsm_map.ms.wrongPasswordAttemptsCounter", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_t_CSI, + { "t-CSI", "gsm_map.ms.t_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vt_BCSM_CAMEL_TDP_CriteriaList, + { "vt-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ms.vt_BCSM_CAMEL_TDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + "T_BCSM_CAMEL_TDP_CriteriaList", HFILL }}, + { &hf_gsm_map_ms_tif_CSI_NotificationToCSE, + { "tif-CSI-NotificationToCSE", "gsm_map.ms.tif_CSI_NotificationToCSE_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_specificCSIDeletedList, + { "specificCSIDeletedList", "gsm_map.ms.specificCSIDeletedList", + FT_BYTES, BASE_NONE, NULL, 0, + "SpecificCSI_Withdraw", HFILL }}, + { &hf_gsm_map_ms_o_IM_CSI, + { "o-IM-CSI", "gsm_map.ms.o_IM_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "O_CSI", HFILL }}, + { &hf_gsm_map_ms_o_IM_BcsmCamelTDP_CriteriaList, + { "o-IM-BcsmCamelTDP-CriteriaList", "gsm_map.ms.o_IM_BcsmCamelTDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + "O_BcsmCamelTDPCriteriaList", HFILL }}, + { &hf_gsm_map_ms_d_IM_CSI, + { "d-IM-CSI", "gsm_map.ms.d_IM_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "D_CSI", HFILL }}, + { &hf_gsm_map_ms_vt_IM_CSI, + { "vt-IM-CSI", "gsm_map.ms.vt_IM_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "T_CSI", HFILL }}, + { &hf_gsm_map_ms_vt_IM_BCSM_CAMEL_TDP_CriteriaList, + { "vt-IM-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ms.vt_IM_BCSM_CAMEL_TDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + "T_BCSM_CAMEL_TDP_CriteriaList", HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CF_Info, + { "modificationRequestFor-CF-Info", "gsm_map.ms.modificationRequestFor_CF_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CB_Info, + { "modificationRequestFor-CB-Info", "gsm_map.ms.modificationRequestFor_CB_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CSI, + { "modificationRequestFor-CSI", "gsm_map.ms.modificationRequestFor_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_ODB_data, + { "modificationRequestFor-ODB-data", "gsm_map.ms.modificationRequestFor_ODB_data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_IP_SM_GW_Data, + { "modificationRequestFor-IP-SM-GW-Data", "gsm_map.ms.modificationRequestFor_IP_SM_GW_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_activationRequestForUE_reachability, + { "activationRequestForUE-reachability", "gsm_map.ms.activationRequestForUE_reachability", + FT_BYTES, BASE_NONE, NULL, 0, + "RequestedServingNode", HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CSG, + { "modificationRequestFor-CSG", "gsm_map.ms.modificationRequestFor_CSG_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CW_Data, + { "modificationRequestFor-CW-Data", "gsm_map.ms.modificationRequestFor_CW_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ModificationRequestFor_CW_Info", HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CLIP_Data, + { "modificationRequestFor-CLIP-Data", "gsm_map.ms.modificationRequestFor_CLIP_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ModificationRequestFor_CLIP_Info", HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_CLIR_Data, + { "modificationRequestFor-CLIR-Data", "gsm_map.ms.modificationRequestFor_CLIR_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ModificationRequestFor_CLIR_Info", HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_HOLD_Data, + { "modificationRequestFor-HOLD-Data", "gsm_map.ms.modificationRequestFor_HOLD_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ModificationRequestFor_CH_Info", HFILL }}, + { &hf_gsm_map_ms_modificationRequestFor_ECT_Data, + { "modificationRequestFor-ECT-Data", "gsm_map.ms.modificationRequestFor_ECT_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + "ModificationRequestFor_ECT_Info", HFILL }}, + { &hf_gsm_map_ms_modifyNotificationToCSE, + { "modifyNotificationToCSE", "gsm_map.ms.modifyNotificationToCSE", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_ModificationInstruction_vals), 0, + "ModificationInstruction", HFILL }}, + { &hf_gsm_map_ms_ss_InfoFor_CSE, + { "ss-InfoFor-CSE", "gsm_map.ms.ss_InfoFor_CSE", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Ext_SS_InfoFor_CSE_vals), 0, + "Ext_SS_InfoFor_CSE", HFILL }}, + { &hf_gsm_map_ms_serviceCentreAddress, + { "serviceCentreAddress", "gsm_map.ms.serviceCentreAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_ms_forwardedToNumber_01, + { "forwardedToNumber", "gsm_map.ms.forwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_ms_odb_data, + { "odb-data", "gsm_map.ms.odb_data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_requestedCamel_SubscriptionInfo, + { "requestedCamel-SubscriptionInfo", "gsm_map.ms.requestedCamel_SubscriptionInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RequestedCAMEL_SubscriptionInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_modifyCSI_State, + { "modifyCSI-State", "gsm_map.ms.modifyCSI_State", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_ModificationInstruction_vals), 0, + "ModificationInstruction", HFILL }}, + { &hf_gsm_map_ms_modifyRegistrationStatus, + { "modifyRegistrationStatus", "gsm_map.ms.modifyRegistrationStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_ModificationInstruction_vals), 0, + "ModificationInstruction", HFILL }}, + { &hf_gsm_map_ms_ip_sm_gw_DiameterAddress, + { "ip-sm-gw-DiameterAddress", "gsm_map.ms.ip_sm_gw_DiameterAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "NetworkNodeDiameterAddress", HFILL }}, + { &hf_gsm_map_ms_forwardingInfoFor_CSE, + { "forwardingInfoFor-CSE", "gsm_map.ms.forwardingInfoFor_CSE_element", + FT_NONE, BASE_NONE, NULL, 0, + "Ext_ForwardingInfoFor_CSE", HFILL }}, + { &hf_gsm_map_ms_callBarringInfoFor_CSE, + { "callBarringInfoFor-CSE", "gsm_map.ms.callBarringInfoFor_CSE_element", + FT_NONE, BASE_NONE, NULL, 0, + "Ext_CallBarringInfoFor_CSE", HFILL }}, + { &hf_gsm_map_ms_allInformationSent, + { "allInformationSent", "gsm_map.ms.allInformationSent_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ue_reachable, + { "ue-reachable", "gsm_map.ms.ue_reachable", + FT_BYTES, BASE_NONE, NULL, 0, + "ServingNode", HFILL }}, + { &hf_gsm_map_ms_eventMet, + { "eventMet", "gsm_map.ms.eventMet", + FT_BYTES, BASE_NONE, NULL, 0, + "MM_Code", HFILL }}, + { &hf_gsm_map_ms_supportedCAMELPhases, + { "supportedCAMELPhases", "gsm_map.ms.supportedCAMELPhases", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_offeredCamel4Functionalities, + { "offeredCamel4Functionalities", "gsm_map.ms.offeredCamel4Functionalities", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_temporaryEmptySubscriptiondataIndicator, + { "temporaryEmptySubscriptiondataIndicator", "gsm_map.ms.temporaryEmptySubscriptiondataIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_naea_PreferredCI, + { "naea-PreferredCI", "gsm_map.ms.naea_PreferredCI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_gprsSubscriptionData, + { "gprsSubscriptionData", "gsm_map.ms.gprsSubscriptionData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsupportedFeature, + { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.ms.roamingRestrictedInSgsnDueToUnsupportedFeature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_networkAccessMode, + { "networkAccessMode", "gsm_map.ms.networkAccessMode", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NetworkAccessMode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lsaInformation, + { "lsaInformation", "gsm_map.ms.lsaInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lmu_Indicator, + { "lmu-Indicator", "gsm_map.ms.lmu_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_lcsInformation, + { "lcsInformation", "gsm_map.ms.lcsInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_istAlertTimer, + { "istAlertTimer", "gsm_map.ms.istAlertTimer", + FT_UINT32, BASE_DEC, NULL, 0, + "IST_AlertTimerValue", HFILL }}, + { &hf_gsm_map_ms_superChargerSupportedInHLR, + { "superChargerSupportedInHLR", "gsm_map.ms.superChargerSupportedInHLR", + FT_BYTES, BASE_NONE, NULL, 0, + "AgeIndicator", HFILL }}, + { &hf_gsm_map_ms_mc_SS_Info, + { "mc-SS-Info", "gsm_map.ms.mc_SS_Info_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cs_AllocationRetentionPriority, + { "cs-AllocationRetentionPriority", "gsm_map.ms.cs_AllocationRetentionPriority", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_sgsn_CAMEL_SubscriptionInfo, + { "sgsn-CAMEL-SubscriptionInfo", "gsm_map.ms.sgsn_CAMEL_SubscriptionInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ics_Indicator, + { "ics-Indicator", "gsm_map.ms.ics_Indicator", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_ms_eps_SubscriptionData, + { "eps-SubscriptionData", "gsm_map.ms.eps_SubscriptionData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_ue_ReachabilityRequestIndicator, + { "ue-ReachabilityRequestIndicator", "gsm_map.ms.ue_ReachabilityRequestIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_subscribedPeriodicRAUTAUtimer, + { "subscribedPeriodicRAUTAUtimer", "gsm_map.ms.subscribedPeriodicRAUTAUtimer", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vplmnLIPAAllowed, + { "vplmnLIPAAllowed", "gsm_map.ms.vplmnLIPAAllowed_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_mdtUserConsent, + { "mdtUserConsent", "gsm_map.ms.mdtUserConsent", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_map_ms_subscribedPeriodicLAUtimer, + { "subscribedPeriodicLAUtimer", "gsm_map.ms.subscribedPeriodicLAUtimer", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_vplmn_Csg_SubscriptionDataList, + { "vplmn-Csg-SubscriptionDataList", "gsm_map.ms.vplmn_Csg_SubscriptionDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_additionalMSISDN, + { "additionalMSISDN", "gsm_map.ms.additionalMSISDN", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ms_psAndSMS_OnlyServiceProvision, + { "psAndSMS-OnlyServiceProvision", "gsm_map.ms.psAndSMS_OnlyServiceProvision_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_smsInSGSNAllowed, + { "smsInSGSNAllowed", "gsm_map.ms.smsInSGSNAllowed_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_cs_to_ps_SRVCC_Allowed_Indicator, + { "cs-to-ps-SRVCC-Allowed-Indicator", "gsm_map.ms.cs_to_ps_SRVCC_Allowed_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_pcscf_Restoration_Request, + { "pcscf-Restoration-Request", "gsm_map.ms.pcscf_Restoration_Request_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_adjacentAccessRestrictionDataList, + { "adjacentAccessRestrictionDataList", "gsm_map.ms.adjacentAccessRestrictionDataList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_imsi_Group_Id_List, + { "imsi-Group-Id-List", "gsm_map.ms.imsi_Group_Id_List", + FT_UINT32, BASE_DEC, NULL, 0, + "IMSI_GroupIdList", HFILL }}, + { &hf_gsm_map_ms_userPlaneIntegrityProtectionIndicator, + { "userPlaneIntegrityProtectionIndicator", "gsm_map.ms.userPlaneIntegrityProtectionIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_dl_Buffering_Suggested_Packet_Count, + { "dl-Buffering-Suggested-Packet-Count", "gsm_map.ms.dl_Buffering_Suggested_Packet_Count", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_eDRX_Cycle_Length_List, + { "eDRX-Cycle-Length-List", "gsm_map.ms.eDRX_Cycle_Length_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_iab_Operation_Allowed_Indicator, + { "iab-Operation-Allowed-Indicator", "gsm_map.ms.iab_Operation_Allowed_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedRAT_Types_utran, + { "utran", "gsm.map.ms.SupportedRAT.Types.utran", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedRAT_Types_geran, + { "geran", "gsm.map.ms.SupportedRAT.Types.geran", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedRAT_Types_gan, + { "gan", "gsm.map.ms.SupportedRAT.Types.gan", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedRAT_Types_i_hspa_evolution, + { "i-hspa-evolution", "gsm.map.ms.SupportedRAT.Types.i.hspa.evolution", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedRAT_Types_e_utran, + { "e-utran", "gsm.map.ms.SupportedRAT.Types.e.utran", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedRAT_Types_nb_iot, + { "nb-iot", "gsm.map.ms.SupportedRAT.Types.nb.iot", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet1, + { "lcsCapabilitySet1", "gsm.map.ms.SupportedLCS.CapabilitySets.lcsCapabilitySet1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet2, + { "lcsCapabilitySet2", "gsm.map.ms.SupportedLCS.CapabilitySets.lcsCapabilitySet2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet3, + { "lcsCapabilitySet3", "gsm.map.ms.SupportedLCS.CapabilitySets.lcsCapabilitySet3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet4, + { "lcsCapabilitySet4", "gsm.map.ms.SupportedLCS.CapabilitySets.lcsCapabilitySet4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet5, + { "lcsCapabilitySet5", "gsm.map.ms.SupportedLCS.CapabilitySets.lcsCapabilitySet5", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_ISR_Information_updateLocation, + { "updateLocation", "gsm.map.ms.ISR.Information.updateLocation", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ISR_Information_cancelSGSN, + { "cancelSGSN", "gsm.map.ms.ISR.Information.cancelSGSN", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ISR_Information_initialAttachIndicator, + { "initialAttachIndicator", "gsm.map.ms.ISR.Information.initialAttachIndicator", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_apn, + { "odb-all-apn", "gsm.map.ms.SupportedFeatures.odb.all.apn", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_HPLMN_APN, + { "odb-HPLMN-APN", "gsm.map.ms.SupportedFeatures.odb.HPLMN.APN", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_VPLMN_APN, + { "odb-VPLMN-APN", "gsm.map.ms.SupportedFeatures.odb.VPLMN.APN", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_og, + { "odb-all-og", "gsm.map.ms.SupportedFeatures.odb.all.og", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_international_og, + { "odb-all-international-og", "gsm.map.ms.SupportedFeatures.odb.all.international.og", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_int_og_not_to_HPLMN_country, + { "odb-all-int-og-not-to-HPLMN-country", "gsm.map.ms.SupportedFeatures.odb.all.int.og.not.to.HPLMN.country", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og, + { "odb-all-interzonal-og", "gsm.map.ms.SupportedFeatures.odb.all.interzonal.og", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_not_to_HPLMN_country, + { "odb-all-interzonal-og-not-to-HPLMN-country", "gsm.map.ms.SupportedFeatures.odb.all.interzonal.og.not.to.HPLMN.country", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_and_internat_og_not_to_HPLMN_country, + { "odb-all-interzonal-og-and-internat-og-not-to-HPLMN-country", "gsm.map.ms.SupportedFeatures.odb.all.interzonal.og.and.internat.og.not.to.HPLMN.country", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_regSub, + { "regSub", "gsm.map.ms.SupportedFeatures.regSub", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_trace, + { "trace", "gsm.map.ms.SupportedFeatures.trace", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_all_PrivExcep, + { "lcs-all-PrivExcep", "gsm.map.ms.SupportedFeatures.lcs.all.PrivExcep", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_universal, + { "lcs-universal", "gsm.map.ms.SupportedFeatures.lcs.universal", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionRelated, + { "lcs-CallSessionRelated", "gsm.map.ms.SupportedFeatures.lcs.CallSessionRelated", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionUnrelated, + { "lcs-CallSessionUnrelated", "gsm.map.ms.SupportedFeatures.lcs.CallSessionUnrelated", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_PLMN_operator, + { "lcs-PLMN-operator", "gsm.map.ms.SupportedFeatures.lcs.PLMN.operator", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_ServiceType, + { "lcs-ServiceType", "gsm.map.ms.SupportedFeatures.lcs.ServiceType", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_all_MOLR_SS, + { "lcs-all-MOLR-SS", "gsm.map.ms.SupportedFeatures.lcs.all.MOLR.SS", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_basicSelfLocation, + { "lcs-basicSelfLocation", "gsm.map.ms.SupportedFeatures.lcs.basicSelfLocation", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_autonomousSelfLocation, + { "lcs-autonomousSelfLocation", "gsm.map.ms.SupportedFeatures.lcs.autonomousSelfLocation", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_lcs_transferToThirdParty, + { "lcs-transferToThirdParty", "gsm.map.ms.SupportedFeatures.lcs.transferToThirdParty", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_sm_mo_pp, + { "sm-mo-pp", "gsm.map.ms.SupportedFeatures.sm.mo.pp", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_barring_OutgoingCalls, + { "barring-OutgoingCalls", "gsm.map.ms.SupportedFeatures.barring.OutgoingCalls", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_baoc, + { "baoc", "gsm.map.ms.SupportedFeatures.baoc", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_boic, + { "boic", "gsm.map.ms.SupportedFeatures.boic", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_boicExHC, + { "boicExHC", "gsm.map.ms.SupportedFeatures.boicExHC", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_localTimeZoneRetrieval, + { "localTimeZoneRetrieval", "gsm.map.ms.SupportedFeatures.localTimeZoneRetrieval", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_additionalMsisdn, + { "additionalMsisdn", "gsm.map.ms.SupportedFeatures.additionalMsisdn", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_smsInMME, + { "smsInMME", "gsm.map.ms.SupportedFeatures.smsInMME", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_smsInSGSN, + { "smsInSGSN", "gsm.map.ms.SupportedFeatures.smsInSGSN", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_ue_Reachability_Notification, + { "ue-Reachability-Notification", "gsm.map.ms.SupportedFeatures.ue.Reachability.Notification", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_state_Location_Information_Retrieval, + { "state-Location-Information-Retrieval", "gsm.map.ms.SupportedFeatures.state.Location.Information.Retrieval", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_partialPurge, + { "partialPurge", "gsm.map.ms.SupportedFeatures.partialPurge", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_gddInSGSN, + { "gddInSGSN", "gsm.map.ms.SupportedFeatures.gddInSGSN", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_sgsnCAMELCapability, + { "sgsnCAMELCapability", "gsm.map.ms.SupportedFeatures.sgsnCAMELCapability", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_pcscf_Restoration, + { "pcscf-Restoration", "gsm.map.ms.SupportedFeatures.pcscf.Restoration", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_dedicatedCoreNetworks, + { "dedicatedCoreNetworks", "gsm.map.ms.SupportedFeatures.dedicatedCoreNetworks", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_non_IP_PDN_Type_APNs, + { "non-IP-PDN-Type-APNs", "gsm.map.ms.SupportedFeatures.non.IP.PDN.Type.APNs", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_non_IP_PDP_Type_APNs, + { "non-IP-PDP-Type-APNs", "gsm.map.ms.SupportedFeatures.non.IP.PDP.Type.APNs", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedFeatures_nrAsSecondaryRAT, + { "nrAsSecondaryRAT", "gsm.map.ms.SupportedFeatures.nrAsSecondaryRAT", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_Ext_SupportedFeatures_unlicensedSpectrumAsSecondaryRAT, + { "unlicensedSpectrumAsSecondaryRAT", "gsm.map.ms.Ext.SupportedFeatures.unlicensedSpectrumAsSecondaryRAT", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_not_allowed_bit, + { "permission-indicator-not-allowed-bit", "gsm.map.ms.LCLS.Negotiation.permission.indicator.not.allowed.bit", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_spare_bit, + { "permission-indicator-spare-bit", "gsm.map.ms.LCLS.Negotiation.permission.indicator.spare.bit", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_sending_indicator, + { "forward-data-sending-indicator", "gsm.map.ms.LCLS.ConfigurationPreference.forward.data.sending.indicator", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCLS_ConfigurationPreference_backward_data_sending_indicator, + { "backward-data-sending-indicator", "gsm.map.ms.LCLS.ConfigurationPreference.backward.data.sending.indicator", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_reception_indicator, + { "forward-data-reception-indicator", "gsm.map.ms.LCLS.ConfigurationPreference.forward.data.reception.indicator", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_LCLS_ConfigurationPreference_backward_data_reception_indicator, + { "backward-data-reception-indicator", "gsm.map.ms.LCLS.ConfigurationPreference.backward.data.reception.indicator", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_RequestedEquipmentInfo_equipmentStatus, + { "equipmentStatus", "gsm.map.ms.RequestedEquipmentInfo.equipmentStatus", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_RequestedEquipmentInfo_bmuef, + { "bmuef", "gsm.map.ms.RequestedEquipmentInfo.bmuef", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_utranNotAllowed, + { "utranNotAllowed", "gsm.map.ms.AccessRestrictionData.utranNotAllowed", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_geranNotAllowed, + { "geranNotAllowed", "gsm.map.ms.AccessRestrictionData.geranNotAllowed", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_ganNotAllowed, + { "ganNotAllowed", "gsm.map.ms.AccessRestrictionData.ganNotAllowed", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_i_hspa_evolutionNotAllowed, + { "i-hspa-evolutionNotAllowed", "gsm.map.ms.AccessRestrictionData.i.hspa.evolutionNotAllowed", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_wb_e_utranNotAllowed, + { "wb-e-utranNotAllowed", "gsm.map.ms.AccessRestrictionData.wb.e.utranNotAllowed", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_ho_toNon3GPP_AccessNotAllowed, + { "ho-toNon3GPP-AccessNotAllowed", "gsm.map.ms.AccessRestrictionData.ho.toNon3GPP.AccessNotAllowed", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_nb_iotNotAllowed, + { "nb-iotNotAllowed", "gsm.map.ms.AccessRestrictionData.nb.iotNotAllowed", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_AccessRestrictionData_enhancedCoverageNotAllowed, + { "enhancedCoverageNotAllowed", "gsm.map.ms.AccessRestrictionData.enhancedCoverageNotAllowed", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_Ext_AccessRestrictionData_nrAsSecondaryRATNotAllowed, + { "nrAsSecondaryRATNotAllowed", "gsm.map.ms.Ext.AccessRestrictionData.nrAsSecondaryRATNotAllowed", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_Ext_AccessRestrictionData_unlicensedSpectrumAsSecondaryRATNotAllowed, + { "unlicensedSpectrumAsSecondaryRATNotAllowed", "gsm.map.ms.Ext.AccessRestrictionData.unlicensedSpectrumAsSecondaryRATNotAllowed", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_allOG_CallsBarred, + { "allOG-CallsBarred", "gsm.map.ms.ODB.GeneralData.allOG.CallsBarred", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsBarred, + { "internationalOGCallsBarred", "gsm.map.ms.ODB.GeneralData.internationalOGCallsBarred", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred, + { "internationalOGCallsNotToHPLMN-CountryBarred", "gsm.map.ms.ODB.GeneralData.internationalOGCallsNotToHPLMN.CountryBarred", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_premiumRateInformationOGCallsBarred, + { "premiumRateInformationOGCallsBarred", "gsm.map.ms.ODB.GeneralData.premiumRateInformationOGCallsBarred", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_premiumRateEntertainementOGCallsBarred, + { "premiumRateEntertainementOGCallsBarred", "gsm.map.ms.ODB.GeneralData.premiumRateEntertainementOGCallsBarred", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_ss_AccessBarred, + { "ss-AccessBarred", "gsm.map.ms.ODB.GeneralData.ss.AccessBarred", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsBarred, + { "interzonalOGCallsBarred", "gsm.map.ms.ODB.GeneralData.interzonalOGCallsBarred", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred, + { "interzonalOGCallsNotToHPLMN-CountryBarred", "gsm.map.ms.ODB.GeneralData.interzonalOGCallsNotToHPLMN.CountryBarred", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred, + { "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", "gsm.map.ms.ODB.GeneralData.interzonalOGCallsAndInternationalOGCallsNotToHPLMN.CountryBarred", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_allECT_Barred, + { "allECT-Barred", "gsm.map.ms.ODB.GeneralData.allECT.Barred", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_chargeableECT_Barred, + { "chargeableECT-Barred", "gsm.map.ms.ODB.GeneralData.chargeableECT.Barred", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_internationalECT_Barred, + { "internationalECT-Barred", "gsm.map.ms.ODB.GeneralData.internationalECT.Barred", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_interzonalECT_Barred, + { "interzonalECT-Barred", "gsm.map.ms.ODB.GeneralData.interzonalECT.Barred", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_doublyChargeableECT_Barred, + { "doublyChargeableECT-Barred", "gsm.map.ms.ODB.GeneralData.doublyChargeableECT.Barred", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_multipleECT_Barred, + { "multipleECT-Barred", "gsm.map.ms.ODB.GeneralData.multipleECT.Barred", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_allPacketOrientedServicesBarred, + { "allPacketOrientedServicesBarred", "gsm.map.ms.ODB.GeneralData.allPacketOrientedServicesBarred", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred, + { "roamerAccessToHPLMN-AP-Barred", "gsm.map.ms.ODB.GeneralData.roamerAccessToHPLMN.AP.Barred", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred, + { "roamerAccessToVPLMN-AP-Barred", "gsm.map.ms.ODB.GeneralData.roamerAccessToVPLMN.AP.Barred", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred, + { "roamingOutsidePLMNOG-CallsBarred", "gsm.map.ms.ODB.GeneralData.roamingOutsidePLMNOG.CallsBarred", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_allIC_CallsBarred, + { "allIC-CallsBarred", "gsm.map.ms.ODB.GeneralData.allIC.CallsBarred", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred, + { "roamingOutsidePLMNIC-CallsBarred", "gsm.map.ms.ODB.GeneralData.roamingOutsidePLMNIC.CallsBarred", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, + { "roamingOutsidePLMNICountryIC-CallsBarred", "gsm.map.ms.ODB.GeneralData.roamingOutsidePLMNICountryIC.CallsBarred", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_Barred, + { "roamingOutsidePLMN-Barred", "gsm.map.ms.ODB.GeneralData.roamingOutsidePLMN.Barred", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_CountryBarred, + { "roamingOutsidePLMN-CountryBarred", "gsm.map.ms.ODB.GeneralData.roamingOutsidePLMN.CountryBarred", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_registrationAllCF_Barred, + { "registrationAllCF-Barred", "gsm.map.ms.ODB.GeneralData.registrationAllCF.Barred", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_registrationCFNotToHPLMN_Barred, + { "registrationCFNotToHPLMN-Barred", "gsm.map.ms.ODB.GeneralData.registrationCFNotToHPLMN.Barred", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCF_Barred, + { "registrationInterzonalCF-Barred", "gsm.map.ms.ODB.GeneralData.registrationInterzonalCF.Barred", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, + { "registrationInterzonalCFNotToHPLMN-Barred", "gsm.map.ms.ODB.GeneralData.registrationInterzonalCFNotToHPLMN.Barred", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_GeneralData_registrationInternationalCF_Barred, + { "registrationInternationalCF-Barred", "gsm.map.ms.ODB.GeneralData.registrationInternationalCF.Barred", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType1, + { "plmn-SpecificBarringType1", "gsm.map.ms.ODB.HPLMN.Data.plmn.SpecificBarringType1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType2, + { "plmn-SpecificBarringType2", "gsm.map.ms.ODB.HPLMN.Data.plmn.SpecificBarringType2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType3, + { "plmn-SpecificBarringType3", "gsm.map.ms.ODB.HPLMN.Data.plmn.SpecificBarringType3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType4, + { "plmn-SpecificBarringType4", "gsm.map.ms.ODB.HPLMN.Data.plmn.SpecificBarringType4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_o_csi, + { "o-csi", "gsm.map.ms.SpecificCSI.Withdraw.o.csi", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_ss_csi, + { "ss-csi", "gsm.map.ms.SpecificCSI.Withdraw.ss.csi", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_tif_csi, + { "tif-csi", "gsm.map.ms.SpecificCSI.Withdraw.tif.csi", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_d_csi, + { "d-csi", "gsm.map.ms.SpecificCSI.Withdraw.d.csi", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_csi, + { "vt-csi", "gsm.map.ms.SpecificCSI.Withdraw.vt.csi", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_mo_sms_csi, + { "mo-sms-csi", "gsm.map.ms.SpecificCSI.Withdraw.mo.sms.csi", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_m_csi, + { "m-csi", "gsm.map.ms.SpecificCSI.Withdraw.m.csi", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_gprs_csi, + { "gprs-csi", "gsm.map.ms.SpecificCSI.Withdraw.gprs.csi", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_t_csi, + { "t-csi", "gsm.map.ms.SpecificCSI.Withdraw.t.csi", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_mt_sms_csi, + { "mt-sms-csi", "gsm.map.ms.SpecificCSI.Withdraw.mt.sms.csi", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_mg_csi, + { "mg-csi", "gsm.map.ms.SpecificCSI.Withdraw.mg.csi", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_o_IM_CSI, + { "o-IM-CSI", "gsm.map.ms.SpecificCSI.Withdraw.o.IM.CSI", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_d_IM_CSI, + { "d-IM-CSI", "gsm.map.ms.SpecificCSI.Withdraw.d.IM.CSI", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_IM_CSI, + { "vt-IM-CSI", "gsm.map.ms.SpecificCSI.Withdraw.vt.IM.CSI", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedCamelPhases_phase1, + { "phase1", "gsm.map.ms.SupportedCamelPhases.phase1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedCamelPhases_phase2, + { "phase2", "gsm.map.ms.SupportedCamelPhases.phase2", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedCamelPhases_phase3, + { "phase3", "gsm.map.ms.SupportedCamelPhases.phase3", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_SupportedCamelPhases_phase4, + { "phase4", "gsm.map.ms.SupportedCamelPhases.phase4", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_o_csi, + { "o-csi", "gsm.map.ms.OfferedCamel4CSIs.o.csi", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_d_csi, + { "d-csi", "gsm.map.ms.OfferedCamel4CSIs.d.csi", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_vt_csi, + { "vt-csi", "gsm.map.ms.OfferedCamel4CSIs.vt.csi", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_t_csi, + { "t-csi", "gsm.map.ms.OfferedCamel4CSIs.t.csi", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_mt_sms_csi, + { "mt-sms-csi", "gsm.map.ms.OfferedCamel4CSIs.mt.sms.csi", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_mg_csi, + { "mg-csi", "gsm.map.ms.OfferedCamel4CSIs.mg.csi", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4CSIs_psi_enhancements, + { "psi-enhancements", "gsm.map.ms.OfferedCamel4CSIs.psi.enhancements", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_initiateCallAttempt, + { "initiateCallAttempt", "gsm.map.ms.OfferedCamel4Functionalities.initiateCallAttempt", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_splitLeg, + { "splitLeg", "gsm.map.ms.OfferedCamel4Functionalities.splitLeg", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_moveLeg, + { "moveLeg", "gsm.map.ms.OfferedCamel4Functionalities.moveLeg", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_disconnectLeg, + { "disconnectLeg", "gsm.map.ms.OfferedCamel4Functionalities.disconnectLeg", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_entityReleased, + { "entityReleased", "gsm.map.ms.OfferedCamel4Functionalities.entityReleased", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_dfc_WithArgument, + { "dfc-WithArgument", "gsm.map.ms.OfferedCamel4Functionalities.dfc.WithArgument", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_playTone, + { "playTone", "gsm.map.ms.OfferedCamel4Functionalities.playTone", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_dtmf_MidCall, + { "dtmf-MidCall", "gsm.map.ms.OfferedCamel4Functionalities.dtmf.MidCall", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_chargingIndicator, + { "chargingIndicator", "gsm.map.ms.OfferedCamel4Functionalities.chargingIndicator", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_alertingDP, + { "alertingDP", "gsm.map.ms.OfferedCamel4Functionalities.alertingDP", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_locationAtAlerting, + { "locationAtAlerting", "gsm.map.ms.OfferedCamel4Functionalities.locationAtAlerting", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_changeOfPositionDP, + { "changeOfPositionDP", "gsm.map.ms.OfferedCamel4Functionalities.changeOfPositionDP", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_or_Interactions, + { "or-Interactions", "gsm.map.ms.OfferedCamel4Functionalities.or.Interactions", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_warningToneEnhancements, + { "warningToneEnhancements", "gsm.map.ms.OfferedCamel4Functionalities.warningToneEnhancements", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_cf_Enhancements, + { "cf-Enhancements", "gsm.map.ms.OfferedCamel4Functionalities.cf.Enhancements", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_subscribedEnhancedDialledServices, + { "subscribedEnhancedDialledServices", "gsm.map.ms.OfferedCamel4Functionalities.subscribedEnhancedDialledServices", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices, + { "servingNetworkEnhancedDialledServices", "gsm.map.ms.OfferedCamel4Functionalities.servingNetworkEnhancedDialledServices", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP, + { "criteriaForChangeOfPositionDP", "gsm.map.ms.OfferedCamel4Functionalities.criteriaForChangeOfPositionDP", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_serviceChangeDP, + { "serviceChangeDP", "gsm.map.ms.OfferedCamel4Functionalities.serviceChangeDP", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_OfferedCamel4Functionalities_collectInformation, + { "collectInformation", "gsm.map.ms.OfferedCamel4Functionalities.collectInformation", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_ms_AdditionalSubscriptions_privilegedUplinkRequest, + { "privilegedUplinkRequest", "gsm.map.ms.AdditionalSubscriptions.privilegedUplinkRequest", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_AdditionalSubscriptions_emergencyUplinkRequest, + { "emergencyUplinkRequest", "gsm.map.ms.AdditionalSubscriptions.emergencyUplinkRequest", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_AdditionalSubscriptions_emergencyReset, + { "emergencyReset", "gsm.map.ms.AdditionalSubscriptions.emergencyReset", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_ms_RequestedNodes_mme, + { "mme", "gsm.map.ms.RequestedNodes.mme", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_RequestedNodes_sgsn, + { "sgsn", "gsm.map.ms.RequestedNodes.sgsn", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ms_RequestedServingNode_mmeAndSgsn, + { "mmeAndSgsn", "gsm.map.ms.RequestedServingNode.mmeAndSgsn", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ServingNode_mme, + { "mme", "gsm.map.ms.ServingNode.mme", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ms_ServingNode_sgsn, + { "sgsn", "gsm.map.ms.ServingNode.sgsn", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + +/* --- Module MAP-CH-DataTypes --- --- --- */ + + { &hf_gsm_map_ch_cug_Interlock, + { "cug-Interlock", "gsm_map.ch.cug_Interlock", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_cug_OutgoingAccess, + { "cug-OutgoingAccess", "gsm_map.ch.cug_OutgoingAccess_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_extensionContainer, + { "extensionContainer", "gsm_map.ch.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_msisdn, + { "msisdn", "gsm_map.ch.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_cug_CheckInfo, + { "cug-CheckInfo", "gsm_map.ch.cug_CheckInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_numberOfForwarding, + { "numberOfForwarding", "gsm_map.ch.numberOfForwarding", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_interrogationType, + { "interrogationType", "gsm_map.ch.interrogationType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_InterrogationType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_or_Interrogation, + { "or-Interrogation", "gsm_map.ch.or_Interrogation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_or_Capability, + { "or-Capability", "gsm_map.ch.or_Capability", + FT_UINT32, BASE_DEC, NULL, 0, + "OR_Phase", HFILL }}, + { &hf_gsm_map_ch_gmsc_OrGsmSCF_Address, + { "gmsc-OrGsmSCF-Address", "gsm_map.ch.gmsc_OrGsmSCF_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_callReferenceNumber, + { "callReferenceNumber", "gsm_map.ch.callReferenceNumber", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_forwardingReason, + { "forwardingReason", "gsm_map.ch.forwardingReason", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_ForwardingReason_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_basicServiceGroup, + { "basicServiceGroup", "gsm_map.ch.basicServiceGroup", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + "Ext_BasicServiceCode", HFILL }}, + { &hf_gsm_map_ch_networkSignalInfo, + { "networkSignalInfo", "gsm_map.ch.networkSignalInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ch_camelInfo, + { "camelInfo", "gsm_map.ch.camelInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_suppressionOfAnnouncement, + { "suppressionOfAnnouncement", "gsm_map.ch.suppressionOfAnnouncement_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_alertingPattern, + { "alertingPattern", "gsm_map.ch.alertingPattern", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_ccbs_Call, + { "ccbs-Call", "gsm_map.ch.ccbs_Call_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_supportedCCBS_Phase, + { "supportedCCBS-Phase", "gsm_map.ch.supportedCCBS_Phase", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_additionalSignalInfo, + { "additionalSignalInfo", "gsm_map.ch.additionalSignalInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "Ext_ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ch_istSupportIndicator, + { "istSupportIndicator", "gsm_map.ch.istSupportIndicator", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IST_SupportIndicator_vals), 0, + "IST_SupportIndicator", HFILL }}, + { &hf_gsm_map_ch_pre_pagingSupported, + { "pre-pagingSupported", "gsm_map.ch.pre_pagingSupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_callDiversionTreatmentIndicator, + { "callDiversionTreatmentIndicator", "gsm_map.ch.callDiversionTreatmentIndicator", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_longFTN_Supported, + { "longFTN-Supported", "gsm_map.ch.longFTN_Supported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_suppress_VT_CSI, + { "suppress-VT-CSI", "gsm_map.ch.suppress_VT_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_suppressIncomingCallBarring, + { "suppressIncomingCallBarring", "gsm_map.ch.suppressIncomingCallBarring_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_gsmSCF_InitiatedCall, + { "gsmSCF-InitiatedCall", "gsm_map.ch.gsmSCF_InitiatedCall_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_basicServiceGroup2, + { "basicServiceGroup2", "gsm_map.ch.basicServiceGroup2", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + "Ext_BasicServiceCode", HFILL }}, + { &hf_gsm_map_ch_networkSignalInfo2, + { "networkSignalInfo2", "gsm_map.ch.networkSignalInfo2_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ch_suppressMTSS, + { "suppressMTSS", "gsm_map.ch.suppressMTSS", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_mtRoamingRetrySupported, + { "mtRoamingRetrySupported", "gsm_map.ch.mtRoamingRetrySupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_callPriority, + { "callPriority", "gsm_map.ch.callPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_ch_imsi, + { "imsi", "gsm_map.ch.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_extendedRoutingInfo, + { "extendedRoutingInfo", "gsm_map.ch.extendedRoutingInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_ExtendedRoutingInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_cugSubscriptionFlag, + { "cugSubscriptionFlag", "gsm_map.ch.cugSubscriptionFlag_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_subscriberInfo, + { "subscriberInfo", "gsm_map.ch.subscriberInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_ss_List, + { "ss-List", "gsm_map.ch.ss_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_basicService, + { "basicService", "gsm_map.ch.basicService", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + "Ext_BasicServiceCode", HFILL }}, + { &hf_gsm_map_ch_forwardingInterrogationRequired, + { "forwardingInterrogationRequired", "gsm_map.ch.forwardingInterrogationRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_vmsc_Address, + { "vmsc-Address", "gsm_map.ch.vmsc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_naea_PreferredCI, + { "naea-PreferredCI", "gsm_map.ch.naea_PreferredCI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_ccbs_Indicators, + { "ccbs-Indicators", "gsm_map.ch.ccbs_Indicators_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_numberPortabilityStatus, + { "numberPortabilityStatus", "gsm_map.ch.numberPortabilityStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NumberPortabilityStatus_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_istAlertTimer, + { "istAlertTimer", "gsm_map.ch.istAlertTimer", + FT_UINT32, BASE_DEC, NULL, 0, + "IST_AlertTimerValue", HFILL }}, + { &hf_gsm_map_ch_supportedCamelPhasesInVMSC, + { "supportedCamelPhasesInVMSC", "gsm_map.ch.supportedCamelPhasesInVMSC", + FT_BYTES, BASE_NONE, NULL, 0, + "SupportedCamelPhases", HFILL }}, + { &hf_gsm_map_ch_offeredCamel4CSIsInVMSC, + { "offeredCamel4CSIsInVMSC", "gsm_map.ch.offeredCamel4CSIsInVMSC", + FT_BYTES, BASE_NONE, NULL, 0, + "OfferedCamel4CSIs", HFILL }}, + { &hf_gsm_map_ch_routingInfo2, + { "routingInfo2", "gsm_map.ch.routingInfo2", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RoutingInfo_vals), 0, + "RoutingInfo", HFILL }}, + { &hf_gsm_map_ch_ss_List2, + { "ss-List2", "gsm_map.ch.ss_List2", + FT_UINT32, BASE_DEC, NULL, 0, + "SS_List", HFILL }}, + { &hf_gsm_map_ch_basicService2, + { "basicService2", "gsm_map.ch.basicService2", + FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0, + "Ext_BasicServiceCode", HFILL }}, + { &hf_gsm_map_ch_allowedServices, + { "allowedServices", "gsm_map.ch.allowedServices", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_unavailabilityCause, + { "unavailabilityCause", "gsm_map.ch.unavailabilityCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_UnavailabilityCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_releaseResourcesSupported, + { "releaseResourcesSupported", "gsm_map.ch.releaseResourcesSupported_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_gsm_BearerCapability, + { "gsm-BearerCapability", "gsm_map.ch.gsm_BearerCapability_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ch_ccbs_Possible, + { "ccbs-Possible", "gsm_map.ch.ccbs_Possible_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_keepCCBS_CallIndicator, + { "keepCCBS-CallIndicator", "gsm_map.ch.keepCCBS_CallIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_roamingNumber, + { "roamingNumber", "gsm_map.ch.roamingNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_forwardingData, + { "forwardingData", "gsm_map.ch.forwardingData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_forwardedToNumber, + { "forwardedToNumber", "gsm_map.ch.forwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_forwardedToSubaddress, + { "forwardedToSubaddress", "gsm_map.ch.forwardedToSubaddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_SubaddressString", HFILL }}, + { &hf_gsm_map_ch_forwardingOptions, + { "forwardingOptions", "gsm_map.ch.forwardingOptions", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_longForwardedToNumber, + { "longForwardedToNumber", "gsm_map.ch.longForwardedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "FTN_AddressString", HFILL }}, + { &hf_gsm_map_ch_msc_Number, + { "msc-Number", "gsm_map.ch.msc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_lmsi, + { "lmsi", "gsm_map.ch.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_gmsc_Address, + { "gmsc-Address", "gsm_map.ch.gmsc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_supportedCamelPhasesInInterrogatingNode, + { "supportedCamelPhasesInInterrogatingNode", "gsm_map.ch.supportedCamelPhasesInInterrogatingNode", + FT_BYTES, BASE_NONE, NULL, 0, + "SupportedCamelPhases", HFILL }}, + { &hf_gsm_map_ch_orNotSupportedInGMSC, + { "orNotSupportedInGMSC", "gsm_map.ch.orNotSupportedInGMSC_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode, + { "offeredCamel4CSIsInInterrogatingNode", "gsm_map.ch.offeredCamel4CSIsInInterrogatingNode", + FT_BYTES, BASE_NONE, NULL, 0, + "OfferedCamel4CSIs", HFILL }}, + { &hf_gsm_map_ch_pagingArea, + { "pagingArea", "gsm_map.ch.pagingArea", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_mtrf_Indicator, + { "mtrf-Indicator", "gsm_map.ch.mtrf_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_oldMSC_Number, + { "oldMSC-Number", "gsm_map.ch.oldMSC_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_lastUsedLtePLMN_Id, + { "lastUsedLtePLMN-Id", "gsm_map.ch.lastUsedLtePLMN_Id", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gsm_map_ch_o_CSI, + { "o-CSI", "gsm_map.ch.o_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_uu_Data, + { "uu-Data", "gsm_map.ch.uu_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_allInformationSent, + { "allInformationSent", "gsm_map.ch.allInformationSent_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_d_csi, + { "d-csi", "gsm_map.ch.d_csi_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_o_BcsmCamelTDPCriteriaList, + { "o-BcsmCamelTDPCriteriaList", "gsm_map.ch.o_BcsmCamelTDPCriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_mtRoamingRetry, + { "mtRoamingRetry", "gsm_map.ch.mtRoamingRetry_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_uuIndicator, + { "uuIndicator", "gsm_map.ch.uuIndicator", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_uui, + { "uui", "gsm_map.ch.uui", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_uusCFInteraction, + { "uusCFInteraction", "gsm_map.ch.uusCFInteraction_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_supportedCamelPhases, + { "supportedCamelPhases", "gsm_map.ch.supportedCamelPhases", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_suppress_T_CSI, + { "suppress-T-CSI", "gsm_map.ch.suppress_T_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_offeredCamel4CSIs, + { "offeredCamel4CSIs", "gsm_map.ch.offeredCamel4CSIs", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_routingInfo, + { "routingInfo", "gsm_map.ch.routingInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RoutingInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_camelRoutingInfo, + { "camelRoutingInfo", "gsm_map.ch.camelRoutingInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_gmscCamelSubscriptionInfo, + { "gmscCamelSubscriptionInfo", "gsm_map.ch.gmscCamelSubscriptionInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_t_CSI, + { "t-CSI", "gsm_map.ch.t_CSI_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_o_BcsmCamelTDP_CriteriaList, + { "o-BcsmCamelTDP-CriteriaList", "gsm_map.ch.o_BcsmCamelTDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + "O_BcsmCamelTDPCriteriaList", HFILL }}, + { &hf_gsm_map_ch_t_BCSM_CAMEL_TDP_CriteriaList, + { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ch.t_BCSM_CAMEL_TDP_CriteriaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_ccbs_Monitoring, + { "ccbs-Monitoring", "gsm_map.ch.ccbs_Monitoring", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_ReportingState_vals), 0, + "ReportingState", HFILL }}, + { &hf_gsm_map_ch_ccbs_SubscriberStatus, + { "ccbs-SubscriberStatus", "gsm_map.ch.ccbs_SubscriberStatus", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_CCBS_SubscriberStatus_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_eventReportData, + { "eventReportData", "gsm_map.ch.eventReportData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_callReportdata, + { "callReportdata", "gsm_map.ch.callReportdata_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_monitoringMode, + { "monitoringMode", "gsm_map.ch.monitoringMode", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_MonitoringMode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_callOutcome, + { "callOutcome", "gsm_map.ch.callOutcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_CallOutcome_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_callInfo, + { "callInfo", "gsm_map.ch.callInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_map_ch_ccbs_Feature, + { "ccbs-Feature", "gsm_map.ch.ccbs_Feature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_translatedB_Number, + { "translatedB-Number", "gsm_map.ch.translatedB_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_replaceB_Number, + { "replaceB-Number", "gsm_map.ch.replaceB_Number_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_ruf_Outcome, + { "ruf-Outcome", "gsm_map.ch.ruf_Outcome", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RUF_Outcome_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_istInformationWithdraw, + { "istInformationWithdraw", "gsm_map.ch.istInformationWithdraw_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_callTerminationIndicator, + { "callTerminationIndicator", "gsm_map.ch.callTerminationIndicator", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_CallTerminationIndicator_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ch_msrn, + { "msrn", "gsm_map.ch.msrn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ch_SuppressMTSS_suppressCUG, + { "suppressCUG", "gsm.map.ch.SuppressMTSS.suppressCUG", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ch_SuppressMTSS_suppressCCBS, + { "suppressCCBS", "gsm.map.ch.SuppressMTSS.suppressCCBS", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_ch_AllowedServices_firstServiceAllowed, + { "firstServiceAllowed", "gsm.map.ch.AllowedServices.firstServiceAllowed", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_ch_AllowedServices_secondServiceAllowed, + { "secondServiceAllowed", "gsm.map.ch.AllowedServices.secondServiceAllowed", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + + { &hf_gsm_map_lcs_gsm_map_lcs_LCS_ClientID_PDU, + { "LCS-ClientID", "gsm_map.lcs.LCS_ClientID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_mlcNumber, + { "mlcNumber", "gsm_map.lcs.mlcNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_targetMS, + { "targetMS", "gsm_map.lcs.targetMS", + FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0, + "SubscriberIdentity", HFILL }}, + { &hf_gsm_map_lcs_extensionContainer, + { "extensionContainer", "gsm_map.lcs.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsLocationInfo, + { "lcsLocationInfo", "gsm_map.lcs.lcsLocationInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_v_gmlc_Address, + { "v-gmlc-Address", "gsm_map.lcs.v_gmlc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_lcs_h_gmlc_Address, + { "h-gmlc-Address", "gsm_map.lcs.h_gmlc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_lcs_ppr_Address, + { "ppr-Address", "gsm_map.lcs.ppr_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_lcs_additional_v_gmlc_Address, + { "additional-v-gmlc-Address", "gsm_map.lcs.additional_v_gmlc_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_map_lcs_networkNode_Number, + { "networkNode-Number", "gsm_map.lcs.networkNode_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_lmsi, + { "lmsi", "gsm_map.lcs.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_gprsNodeIndicator, + { "gprsNodeIndicator", "gsm_map.lcs.gprsNodeIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_additional_Number, + { "additional-Number", "gsm_map.lcs.additional_Number", + FT_UINT32, BASE_DEC, VALS(gsm_map_sm_Additional_Number_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_supportedLCS_CapabilitySets, + { "supportedLCS-CapabilitySets", "gsm_map.lcs.supportedLCS_CapabilitySets", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_additional_LCS_CapabilitySets, + { "additional-LCS-CapabilitySets", "gsm_map.lcs.additional_LCS_CapabilitySets", + FT_BYTES, BASE_NONE, NULL, 0, + "SupportedLCS_CapabilitySets", HFILL }}, + { &hf_gsm_map_lcs_mme_Name, + { "mme-Name", "gsm_map.lcs.mme_Name", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_lcs_aaa_Server_Name, + { "aaa-Server-Name", "gsm_map.lcs.aaa_Server_Name", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_lcs_sgsn_Name, + { "sgsn-Name", "gsm_map.lcs.sgsn_Name", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_lcs_sgsn_Realm, + { "sgsn-Realm", "gsm_map.lcs.sgsn_Realm", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_lcs_locationType, + { "locationType", "gsm_map.lcs.locationType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_mlc_Number, + { "mlc-Number", "gsm_map.lcs.mlc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_lcs_ClientID, + { "lcs-ClientID", "gsm_map.lcs.lcs_ClientID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_privacyOverride, + { "privacyOverride", "gsm_map.lcs.privacyOverride_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_imsi, + { "imsi", "gsm_map.lcs.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_msisdn, + { "msisdn", "gsm_map.lcs.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_imei, + { "imei", "gsm_map.lcs.imei", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcs_Priority, + { "lcs-Priority", "gsm_map.lcs.lcs_Priority", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcs_QoS, + { "lcs-QoS", "gsm_map.lcs.lcs_QoS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_supportedGADShapes, + { "supportedGADShapes", "gsm_map.lcs.supportedGADShapes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcs_ReferenceNumber, + { "lcs-ReferenceNumber", "gsm_map.lcs.lcs_ReferenceNumber", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsServiceTypeID, + { "lcsServiceTypeID", "gsm_map.lcs.lcsServiceTypeID", + FT_UINT32, BASE_DEC, VALS(gsm_map_LCSServiceTypeID_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsCodeword, + { "lcsCodeword", "gsm_map.lcs.lcsCodeword_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcs_PrivacyCheck, + { "lcs-PrivacyCheck", "gsm_map.lcs.lcs_PrivacyCheck_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_areaEventInfo, + { "areaEventInfo", "gsm_map.lcs.areaEventInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, + { "mo-lrShortCircuitIndicator", "gsm_map.lcs.mo_lrShortCircuitIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_periodicLDRInfo, + { "periodicLDRInfo", "gsm_map.lcs.periodicLDRInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_reportingPLMNList, + { "reportingPLMNList", "gsm_map.lcs.reportingPLMNList_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_locationEstimateType, + { "locationEstimateType", "gsm_map.lcs.locationEstimateType", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LocationEstimateType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_deferredLocationEventType, + { "deferredLocationEventType", "gsm_map.lcs.deferredLocationEventType", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsClientType, + { "lcsClientType", "gsm_map.lcs.lcsClientType", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCSClientType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsClientExternalID, + { "lcsClientExternalID", "gsm_map.lcs.lcsClientExternalID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsClientDialedByMS, + { "lcsClientDialedByMS", "gsm_map.lcs.lcsClientDialedByMS", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_lcs_lcsClientInternalID, + { "lcsClientInternalID", "gsm_map.lcs.lcsClientInternalID", + FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsClientName, + { "lcsClientName", "gsm_map.lcs.lcsClientName_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsAPN, + { "lcsAPN", "gsm_map.lcs.lcsAPN", + FT_BYTES, BASE_NONE, NULL, 0, + "APN", HFILL }}, + { &hf_gsm_map_lcs_lcsRequestorID, + { "lcsRequestorID", "gsm_map.lcs.lcsRequestorID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_dataCodingScheme, + { "dataCodingScheme", "gsm_map.lcs.dataCodingScheme", + FT_BYTES, BASE_NONE, NULL, 0, + "USSD_DataCodingScheme", HFILL }}, + { &hf_gsm_map_lcs_nameString, + { "nameString", "gsm_map.lcs.nameString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcs_FormatIndicator, + { "lcs-FormatIndicator", "gsm_map.lcs.lcs_FormatIndicator", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCS_FormatIndicator_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_requestorIDString, + { "requestorIDString", "gsm_map.lcs.requestorIDString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_horizontal_accuracy, + { "horizontal-accuracy", "gsm_map.lcs.horizontal_accuracy", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_verticalCoordinateRequest, + { "verticalCoordinateRequest", "gsm_map.lcs.verticalCoordinateRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_vertical_accuracy, + { "vertical-accuracy", "gsm_map.lcs.vertical_accuracy", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_responseTime, + { "responseTime", "gsm_map.lcs.responseTime_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_velocityRequest, + { "velocityRequest", "gsm_map.lcs.velocityRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_responseTimeCategory, + { "responseTimeCategory", "gsm_map.lcs.responseTimeCategory", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_ResponseTimeCategory_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcsCodewordString, + { "lcsCodewordString", "gsm_map.lcs.lcsCodewordString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_callSessionUnrelated, + { "callSessionUnrelated", "gsm_map.lcs.callSessionUnrelated", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_PrivacyCheckRelatedAction_vals), 0, + "PrivacyCheckRelatedAction", HFILL }}, + { &hf_gsm_map_lcs_callSessionRelated, + { "callSessionRelated", "gsm_map.lcs.callSessionRelated", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_PrivacyCheckRelatedAction_vals), 0, + "PrivacyCheckRelatedAction", HFILL }}, + { &hf_gsm_map_lcs_areaDefinition, + { "areaDefinition", "gsm_map.lcs.areaDefinition_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_occurrenceInfo, + { "occurrenceInfo", "gsm_map.lcs.occurrenceInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_OccurrenceInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_intervalTime, + { "intervalTime", "gsm_map.lcs.intervalTime", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_areaList, + { "areaList", "gsm_map.lcs.areaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_AreaList_item, + { "Area", "gsm_map.lcs.Area_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_areaType, + { "areaType", "gsm_map.lcs.areaType", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_AreaType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_areaIdentification, + { "areaIdentification", "gsm_map.lcs.areaIdentification", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_reportingAmount, + { "reportingAmount", "gsm_map.lcs.reportingAmount", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_reportingInterval, + { "reportingInterval", "gsm_map.lcs.reportingInterval", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_plmn_ListPrioritized, + { "plmn-ListPrioritized", "gsm_map.lcs.plmn_ListPrioritized_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_plmn_List, + { "plmn-List", "gsm_map.lcs.plmn_List", + FT_UINT32, BASE_DEC, NULL, 0, + "PLMNList", HFILL }}, + { &hf_gsm_map_lcs_PLMNList_item, + { "ReportingPLMN", "gsm_map.lcs.ReportingPLMN_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_plmn_Id, + { "plmn-Id", "gsm_map.lcs.plmn_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_ran_Technology, + { "ran-Technology", "gsm_map.lcs.ran_Technology", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_RAN_Technology_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_ran_PeriodicLocationSupport, + { "ran-PeriodicLocationSupport", "gsm_map.lcs.ran_PeriodicLocationSupport_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_locationEstimate, + { "locationEstimate", "gsm_map.lcs.locationEstimate", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_GeographicalInformation", HFILL }}, + { &hf_gsm_map_lcs_ageOfLocationEstimate, + { "ageOfLocationEstimate", "gsm_map.lcs.ageOfLocationEstimate", + FT_UINT32, BASE_DEC, NULL, 0, + "AgeOfLocationInformation", HFILL }}, + { &hf_gsm_map_lcs_add_LocationEstimate, + { "add-LocationEstimate", "gsm_map.lcs.add_LocationEstimate", + FT_BYTES, BASE_NONE, NULL, 0, + "Add_GeographicalInformation", HFILL }}, + { &hf_gsm_map_lcs_deferredmt_lrResponseIndicator, + { "deferredmt-lrResponseIndicator", "gsm_map.lcs.deferredmt_lrResponseIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_geranPositioningData, + { "geranPositioningData", "gsm_map.lcs.geranPositioningData", + FT_BYTES, BASE_NONE, NULL, 0, + "PositioningDataInformation", HFILL }}, + { &hf_gsm_map_lcs_utranPositioningData, + { "utranPositioningData", "gsm_map.lcs.utranPositioningData", + FT_BYTES, BASE_NONE, NULL, 0, + "UtranPositioningDataInfo", HFILL }}, + { &hf_gsm_map_lcs_cellIdOrSai, + { "cellIdOrSai", "gsm_map.lcs.cellIdOrSai", + FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0, + "CellGlobalIdOrServiceAreaIdOrLAI", HFILL }}, + { &hf_gsm_map_lcs_sai_Present, + { "sai-Present", "gsm_map.lcs.sai_Present_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_accuracyFulfilmentIndicator, + { "accuracyFulfilmentIndicator", "gsm_map.lcs.accuracyFulfilmentIndicator", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_AccuracyFulfilmentIndicator_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_velocityEstimate, + { "velocityEstimate", "gsm_map.lcs.velocityEstimate", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_geranGANSSpositioningData, + { "geranGANSSpositioningData", "gsm_map.lcs.geranGANSSpositioningData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_utranGANSSpositioningData, + { "utranGANSSpositioningData", "gsm_map.lcs.utranGANSSpositioningData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_targetServingNodeForHandover, + { "targetServingNodeForHandover", "gsm_map.lcs.targetServingNodeForHandover", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_ServingNodeAddress_vals), 0, + "ServingNodeAddress", HFILL }}, + { &hf_gsm_map_lcs_utranAdditionalPositioningData, + { "utranAdditionalPositioningData", "gsm_map.lcs.utranAdditionalPositioningData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_utranBaroPressureMeas, + { "utranBaroPressureMeas", "gsm_map.lcs.utranBaroPressureMeas", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_utranCivicAddress, + { "utranCivicAddress", "gsm_map.lcs.utranCivicAddress", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_lcs_Event, + { "lcs-Event", "gsm_map.lcs.lcs_Event", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCS_Event_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_na_ESRD, + { "na-ESRD", "gsm_map.lcs.na_ESRD", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_na_ESRK, + { "na-ESRK", "gsm_map.lcs.na_ESRK", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_slr_ArgExtensionContainer, + { "slr-ArgExtensionContainer", "gsm_map.lcs.slr_ArgExtensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_deferredmt_lrData, + { "deferredmt-lrData", "gsm_map.lcs.deferredmt_lrData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_pseudonymIndicator, + { "pseudonymIndicator", "gsm_map.lcs.pseudonymIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_sequenceNumber, + { "sequenceNumber", "gsm_map.lcs.sequenceNumber", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_terminationCause, + { "terminationCause", "gsm_map.lcs.terminationCause", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_TerminationCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_lcs_msc_Number, + { "msc-Number", "gsm_map.lcs.msc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_sgsn_Number, + { "sgsn-Number", "gsm_map.lcs.sgsn_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_lcs_mme_Number, + { "mme-Number", "gsm_map.lcs.mme_Number", + FT_STRING, BASE_NONE, NULL, 0, + "DiameterIdentity", HFILL }}, + { &hf_gsm_map_lcs_DeferredLocationEventType_msAvailable, + { "msAvailable", "gsm.map.lcs.DeferredLocationEventType.msAvailable", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_lcs_DeferredLocationEventType_enteringIntoArea, + { "enteringIntoArea", "gsm.map.lcs.DeferredLocationEventType.enteringIntoArea", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_lcs_DeferredLocationEventType_leavingFromArea, + { "leavingFromArea", "gsm.map.lcs.DeferredLocationEventType.leavingFromArea", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_lcs_DeferredLocationEventType_beingInsideArea, + { "beingInsideArea", "gsm.map.lcs.DeferredLocationEventType.beingInsideArea", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_lcs_DeferredLocationEventType_periodicLDR, + { "periodicLDR", "gsm.map.lcs.DeferredLocationEventType.periodicLDR", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPoint, + { "ellipsoidPoint", "gsm.map.lcs.SupportedGADShapes.ellipsoidPoint", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, + { "ellipsoidPointWithUncertaintyCircle", "gsm.map.lcs.SupportedGADShapes.ellipsoidPointWithUncertaintyCircle", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse, + { "ellipsoidPointWithUncertaintyEllipse", "gsm.map.lcs.SupportedGADShapes.ellipsoidPointWithUncertaintyEllipse", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_polygon, + { "polygon", "gsm.map.lcs.SupportedGADShapes.polygon", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitude, + { "ellipsoidPointWithAltitude", "gsm.map.lcs.SupportedGADShapes.ellipsoidPointWithAltitude", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid, + { "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", "gsm.map.lcs.SupportedGADShapes.ellipsoidPointWithAltitudeAndUncertaintyElipsoid", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidArc, + { "ellipsoidArc", "gsm.map.lcs.SupportedGADShapes.ellipsoidArc", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + +/* --- Module MAP-GR-DataTypes --- --- --- */ + + { &hf_gsm_map_gr_teleservice, + { "teleservice", "gsm_map.gr.teleservice", + FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0, + "Ext_TeleserviceCode", HFILL }}, + { &hf_gsm_map_gr_asciCallReference, + { "asciCallReference", "gsm_map.gr.asciCallReference", + FT_BYTES, BASE_NONE, NULL, 0, + "ASCI_CallReference", HFILL }}, + { &hf_gsm_map_gr_codec_Info, + { "codec-Info", "gsm_map.gr.codec_Info", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_cipheringAlgorithm, + { "cipheringAlgorithm", "gsm_map.gr.cipheringAlgorithm", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_groupKeyNumber_Vk_Id, + { "groupKeyNumber-Vk-Id", "gsm_map.gr.groupKeyNumber_Vk_Id", + FT_UINT32, BASE_DEC, NULL, 0, + "GroupKeyNumber", HFILL }}, + { &hf_gsm_map_gr_groupKey, + { "groupKey", "gsm_map.gr.groupKey", + FT_BYTES, BASE_NONE, NULL, 0, + "Kc", HFILL }}, + { &hf_gsm_map_gr_priority, + { "priority", "gsm_map.gr.priority", + FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0, + "EMLPP_Priority", HFILL }}, + { &hf_gsm_map_gr_uplinkFree, + { "uplinkFree", "gsm_map.gr.uplinkFree_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_extensionContainer, + { "extensionContainer", "gsm_map.gr.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_vstk, + { "vstk", "gsm_map.gr.vstk", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_vstk_rand, + { "vstk-rand", "gsm_map.gr.vstk_rand", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_talkerChannelParameter, + { "talkerChannelParameter", "gsm_map.gr.talkerChannelParameter_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkReplyIndicator, + { "uplinkReplyIndicator", "gsm_map.gr.uplinkReplyIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_groupCallNumber, + { "groupCallNumber", "gsm_map.gr.groupCallNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_gr_imsi, + { "imsi", "gsm_map.gr.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_talkerPriority, + { "talkerPriority", "gsm_map.gr.talkerPriority", + FT_UINT32, BASE_DEC, VALS(gsm_map_gr_TalkerPriority_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_additionalInfo, + { "additionalInfo", "gsm_map.gr.additionalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkRequestAck, + { "uplinkRequestAck", "gsm_map.gr.uplinkRequestAck_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkReleaseIndication, + { "uplinkReleaseIndication", "gsm_map.gr.uplinkReleaseIndication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkRejectCommand, + { "uplinkRejectCommand", "gsm_map.gr.uplinkRejectCommand_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkSeizedCommand, + { "uplinkSeizedCommand", "gsm_map.gr.uplinkSeizedCommand_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkReleaseCommand, + { "uplinkReleaseCommand", "gsm_map.gr.uplinkReleaseCommand_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_stateAttributes, + { "stateAttributes", "gsm_map.gr.stateAttributes_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_emergencyModeResetCommandFlag, + { "emergencyModeResetCommandFlag", "gsm_map.gr.emergencyModeResetCommandFlag_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_sm_RP_UI, + { "sm-RP-UI", "gsm_map.gr.sm_RP_UI", + FT_BYTES, BASE_NONE, NULL, 0, + "SignalInfo", HFILL }}, + { &hf_gsm_map_gr_an_APDU, + { "an-APDU", "gsm_map.gr.an_APDU_element", + FT_NONE, BASE_NONE, NULL, 0, + "AccessNetworkSignalInfo", HFILL }}, + { &hf_gsm_map_gr_uplinkRequest, + { "uplinkRequest", "gsm_map.gr.uplinkRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_releaseGroupCall, + { "releaseGroupCall", "gsm_map.gr.releaseGroupCall_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_downlinkAttached, + { "downlinkAttached", "gsm_map.gr.downlinkAttached_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_uplinkAttached, + { "uplinkAttached", "gsm_map.gr.uplinkAttached_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_dualCommunication, + { "dualCommunication", "gsm_map.gr.dualCommunication_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_callOriginator, + { "callOriginator", "gsm_map.gr.callOriginator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_requestedInfo, + { "requestedInfo", "gsm_map.gr.requestedInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_gr_RequestedInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_groupId, + { "groupId", "gsm_map.gr.groupId", + FT_BYTES, BASE_NONE, NULL, 0, + "Long_GroupId", HFILL }}, + { &hf_gsm_map_gr_cellId, + { "cellId", "gsm_map.gr.cellId", + FT_BYTES, BASE_NONE, NULL, 0, + "GlobalCellId", HFILL }}, + { &hf_gsm_map_gr_tmsi, + { "tmsi", "gsm_map.gr.tmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_cksn, + { "cksn", "gsm_map.gr.cksn", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_anchorMSC_Address, + { "anchorMSC-Address", "gsm_map.gr.anchorMSC_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_gr_additionalSubscriptions, + { "additionalSubscriptions", "gsm_map.gr.additionalSubscriptions", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_gr_kc, + { "kc", "gsm_map.gr.kc", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + +/* --- Module MAP-DialogueInformation --- --- --- */ + + { &hf_gsm_map_dialogue_gsm_map_dialogue_MAP_DialoguePDU_PDU, + { "MAP-DialoguePDU", "gsm_map.dialogue.MAP_DialoguePDU", + FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_MAP_DialoguePDU_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_dialogue_map_open, + { "map-open", "gsm_map.dialogue.map_open_element", + FT_NONE, BASE_NONE, NULL, 0, + "MAP_OpenInfo", HFILL }}, + { &hf_gsm_map_dialogue_map_accept, + { "map-accept", "gsm_map.dialogue.map_accept_element", + FT_NONE, BASE_NONE, NULL, 0, + "MAP_AcceptInfo", HFILL }}, + { &hf_gsm_map_dialogue_map_close, + { "map-close", "gsm_map.dialogue.map_close_element", + FT_NONE, BASE_NONE, NULL, 0, + "MAP_CloseInfo", HFILL }}, + { &hf_gsm_map_dialogue_map_refuse, + { "map-refuse", "gsm_map.dialogue.map_refuse_element", + FT_NONE, BASE_NONE, NULL, 0, + "MAP_RefuseInfo", HFILL }}, + { &hf_gsm_map_dialogue_map_userAbort, + { "map-userAbort", "gsm_map.dialogue.map_userAbort_element", + FT_NONE, BASE_NONE, NULL, 0, + "MAP_UserAbortInfo", HFILL }}, + { &hf_gsm_map_dialogue_map_providerAbort, + { "map-providerAbort", "gsm_map.dialogue.map_providerAbort_element", + FT_NONE, BASE_NONE, NULL, 0, + "MAP_ProviderAbortInfo", HFILL }}, + { &hf_gsm_map_dialogue_destinationReference, + { "destinationReference", "gsm_map.dialogue.destinationReference", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_dialogue_originationReference, + { "originationReference", "gsm_map.dialogue.originationReference", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_map_dialogue_extensionContainer, + { "extensionContainer", "gsm_map.dialogue.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_dialogue_reason, + { "reason", "gsm_map.dialogue.reason", + FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_Reason_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_dialogue_alternativeApplicationContext, + { "alternativeApplicationContext", "gsm_map.dialogue.alternativeApplicationContext", + FT_OID, BASE_NONE, NULL, 0, + "OBJECT_IDENTIFIER", HFILL }}, + { &hf_gsm_map_dialogue_map_UserAbortChoice, + { "map-UserAbortChoice", "gsm_map.dialogue.map_UserAbortChoice", + FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_MAP_UserAbortChoice_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_dialogue_userSpecificReason, + { "userSpecificReason", "gsm_map.dialogue.userSpecificReason_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_dialogue_userResourceLimitation, + { "userResourceLimitation", "gsm_map.dialogue.userResourceLimitation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_dialogue_resourceUnavailable, + { "resourceUnavailable", "gsm_map.dialogue.resourceUnavailable", + FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_ResourceUnavailableReason_vals), 0, + "ResourceUnavailableReason", HFILL }}, + { &hf_gsm_map_dialogue_applicationProcedureCancellation, + { "applicationProcedureCancellation", "gsm_map.dialogue.applicationProcedureCancellation", + FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_ProcedureCancellationReason_vals), 0, + "ProcedureCancellationReason", HFILL }}, + { &hf_gsm_map_dialogue_map_ProviderAbortReason, + { "map-ProviderAbortReason", "gsm_map.dialogue.map_ProviderAbortReason", + FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_MAP_ProviderAbortReason_vals), 0, + NULL, HFILL }}, + +/* --- Module DummyMAP --- --- --- */ + + { &hf_gsm_old_invoke, + { "invoke", "gsm_old.invoke_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_returnResultLast, + { "returnResultLast", "gsm_old.returnResultLast_element", + FT_NONE, BASE_NONE, NULL, 0, + "ReturnResult", HFILL }}, + { &hf_gsm_old_returnError, + { "returnError", "gsm_old.returnError_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_reject, + { "reject", "gsm_old.reject_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_returnResultNotLast, + { "returnResultNotLast", "gsm_old.returnResultNotLast_element", + FT_NONE, BASE_NONE, NULL, 0, + "ReturnResult", HFILL }}, + { &hf_gsm_old_invokeID, + { "invokeID", "gsm_old.invokeID", + FT_INT32, BASE_DEC, NULL, 0, + "InvokeIdType", HFILL }}, + { &hf_gsm_old_linkedID, + { "linkedID", "gsm_old.linkedID", + FT_INT32, BASE_DEC, NULL, 0, + "InvokeIdType", HFILL }}, + { &hf_gsm_old_opCode, + { "opCode", "gsm_old.opCode", + FT_UINT32, BASE_DEC, VALS(gsm_old_MAP_OPERATION_vals), 0, + "MAP_OPERATION", HFILL }}, + { &hf_gsm_old_invokeparameter, + { "invokeparameter", "gsm_old.invokeparameter_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_resultretres, + { "resultretres", "gsm_old.resultretres_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_returnparameter, + { "returnparameter", "gsm_old.returnparameter_element", + FT_NONE, BASE_NONE, NULL, 0, + "ReturnResultParameter", HFILL }}, + { &hf_gsm_old_errorCode, + { "errorCode", "gsm_old.errorCode", + FT_UINT32, BASE_DEC, VALS(gsm_old_MAP_ERROR_vals), 0, + "MAP_ERROR", HFILL }}, + { &hf_gsm_old_parameter, + { "parameter", "gsm_old.parameter_element", + FT_NONE, BASE_NONE, NULL, 0, + "ReturnErrorParameter", HFILL }}, + { &hf_gsm_old_invokeIDRej, + { "invokeIDRej", "gsm_old.invokeIDRej", + FT_UINT32, BASE_DEC, VALS(gsm_old_T_invokeIDRej_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_derivable, + { "derivable", "gsm_old.derivable", + FT_INT32, BASE_DEC, NULL, 0, + "InvokeIdType", HFILL }}, + { &hf_gsm_old_not_derivable, + { "not-derivable", "gsm_old.not_derivable_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_problem, + { "problem", "gsm_old.problem", + FT_UINT32, BASE_DEC, VALS(gsm_old_T_problem_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_generalProblem, + { "generalProblem", "gsm_old.generalProblem", + FT_INT32, BASE_DEC, VALS(gsm_old_GeneralProblem_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_invokeProblem, + { "invokeProblem", "gsm_old.invokeProblem", + FT_INT32, BASE_DEC, VALS(gsm_old_InvokeProblem_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_returnResultProblem, + { "returnResultProblem", "gsm_old.returnResultProblem", + FT_INT32, BASE_DEC, VALS(gsm_old_ReturnResultProblem_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_returnErrorProblem, + { "returnErrorProblem", "gsm_old.returnErrorProblem", + FT_INT32, BASE_DEC, VALS(gsm_old_ReturnErrorProblem_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_localValue, + { "localValue", "gsm_old.localValue", + FT_INT32, BASE_DEC|BASE_EXT_STRING, &gsm_old_GSMMAPOperationLocalvalue_vals_ext, 0, + "OperationLocalvalue", HFILL }}, + { &hf_gsm_old_globalValue, + { "globalValue", "gsm_old.globalValue", + FT_OID, BASE_NONE, NULL, 0, + "OBJECT_IDENTIFIER", HFILL }}, + { &hf_gsm_old_localValue_01, + { "localValue", "gsm_old.localValue", + FT_INT32, BASE_DEC, VALS(gsm_old_GSMMAPLocalErrorcode_vals), 0, + "LocalErrorcode", HFILL }}, + { &hf_gsm_old_protocolId, + { "protocolId", "gsm_old.protocolId", + FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_signalInfo, + { "signalInfo", "gsm_old.signalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_extensionContainer, + { "extensionContainer", "gsm_old.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_gsm_BearerCapability, + { "gsm-BearerCapability", "gsm_old.gsm_BearerCapability_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_isdn_BearerCapability, + { "isdn-BearerCapability", "gsm_old.isdn_BearerCapability_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_call_Direction, + { "call-Direction", "gsm_old.call_Direction", + FT_BYTES, BASE_NONE, NULL, 0, + "CallDirection", HFILL }}, + { &hf_gsm_old_b_Subscriber_Address, + { "b-Subscriber-Address", "gsm_old.b_Subscriber_Address", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_chosenChannel, + { "chosenChannel", "gsm_old.chosenChannel_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_lowerLayerCompatibility, + { "lowerLayerCompatibility", "gsm_old.lowerLayerCompatibility_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_highLayerCompatibility, + { "highLayerCompatibility", "gsm_old.highLayerCompatibility_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_sIWFSNumber, + { "sIWFSNumber", "gsm_old.sIWFSNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_imsi, + { "imsi", "gsm_old.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_vlr_Number, + { "vlr-Number", "gsm_old.vlr_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_targetCellId, + { "targetCellId", "gsm_old.targetCellId", + FT_BYTES, BASE_NONE, NULL, 0, + "GlobalCellId", HFILL }}, + { &hf_gsm_old_ho_NumberNotRequired, + { "ho-NumberNotRequired", "gsm_old.ho_NumberNotRequired_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_bss_APDU, + { "bss-APDU", "gsm_old.bss_APDU_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_handoverNumber, + { "handoverNumber", "gsm_old.handoverNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_SendAuthenticationInfoResOld_item, + { "SendAuthenticationInfoResOld item", "gsm_old.SendAuthenticationInfoResOld_item_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_rand, + { "rand", "gsm_old.rand", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_sres, + { "sres", "gsm_old.sres", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_kc, + { "kc", "gsm_old.kc", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_tripletList, + { "tripletList", "gsm_old.tripletList", + FT_UINT32, BASE_DEC, NULL, 0, + "TripletListold", HFILL }}, + { &hf_gsm_old_TripletListold_item, + { "AuthenticationTriplet-v2", "gsm_old.AuthenticationTriplet_v2_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_channelType, + { "channelType", "gsm_old.channelType_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_securityHeader, + { "securityHeader", "gsm_old.securityHeader_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_protectedPayload, + { "protectedPayload", "gsm_old.protectedPayload", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_securityParametersIndex, + { "securityParametersIndex", "gsm_old.securityParametersIndex", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_originalComponentIdentifier, + { "originalComponentIdentifier", "gsm_old.originalComponentIdentifier", + FT_UINT32, BASE_DEC, VALS(gsm_old_OriginalComponentIdentifier_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_initialisationVector, + { "initialisationVector", "gsm_old.initialisationVector", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_operationCode, + { "operationCode", "gsm_old.operationCode", + FT_UINT32, BASE_DEC, VALS(gsm_old_OperationCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_errorCode_01, + { "errorCode", "gsm_old.errorCode", + FT_UINT32, BASE_DEC, VALS(gsm_old_ErrorCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_userInfo, + { "userInfo", "gsm_old.userInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_localValue_02, + { "localValue", "gsm_old.localValue", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gsm_old_msisdn, + { "msisdn", "gsm_old.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_category, + { "category", "gsm_old.category", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_basicService, + { "basicService", "gsm_old.basicService", + FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0, + "BasicServiceCode", HFILL }}, + { &hf_gsm_old_operatorSS_Code, + { "operatorSS-Code", "gsm_old.operatorSS_Code", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_operatorSS_Code_item, + { "operatorSS-Code item", "gsm_old.operatorSS_Code_item", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_gsm_old_sm_RP_DA, + { "sm-RP-DA", "gsm_old.sm_RP_DA", + FT_UINT32, BASE_DEC, VALS(gsm_old_SM_RP_DAold_vals), 0, + "SM_RP_DAold", HFILL }}, + { &hf_gsm_old_sm_RP_OA, + { "sm-RP-OA", "gsm_old.sm_RP_OA", + FT_UINT32, BASE_DEC, VALS(gsm_old_SM_RP_OAold_vals), 0, + "SM_RP_OAold", HFILL }}, + { &hf_gsm_old_sm_RP_UI, + { "sm-RP-UI", "gsm_old.sm_RP_UI", + FT_BYTES, BASE_NONE, NULL, 0, + "SignalInfo", HFILL }}, + { &hf_gsm_old_moreMessagesToSend, + { "moreMessagesToSend", "gsm_old.moreMessagesToSend_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_imsi_01, + { "imsi", "gsm_old.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_lmsi, + { "lmsi", "gsm_old.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_serviceCentreAddressDA, + { "serviceCentreAddressDA", "gsm_old.serviceCentreAddressDA", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_noSM_RP_DA, + { "noSM-RP-DA", "gsm_old.noSM_RP_DA_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_msisdn_01, + { "msisdn", "gsm_old.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_serviceCentreAddressOA, + { "serviceCentreAddressOA", "gsm_old.serviceCentreAddressOA", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_noSM_RP_OA, + { "noSM-RP-OA", "gsm_old.noSM_RP_OA_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_cug_CheckInfo, + { "cug-CheckInfo", "gsm_old.cug_CheckInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_numberOfForwarding, + { "numberOfForwarding", "gsm_old.numberOfForwarding", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_networkSignalInfo, + { "networkSignalInfo", "gsm_old.networkSignalInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExternalSignalInfo", HFILL }}, + { &hf_gsm_old_routingInfo, + { "routingInfo", "gsm_old.routingInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RoutingInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_originatingEntityNumber, + { "originatingEntityNumber", "gsm_old.originatingEntityNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_msisdn_02, + { "msisdn", "gsm_old.msisdn", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_old_sm_RP_PRI, + { "sm-RP-PRI", "gsm_old.sm_RP_PRI", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_old_serviceCentreAddress, + { "serviceCentreAddress", "gsm_old.serviceCentreAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_old_cug_Interlock, + { "cug-Interlock", "gsm_old.cug_Interlock", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_teleserviceCode, + { "teleserviceCode", "gsm_old.teleserviceCode", + FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_locationInfoWithLMSI, + { "locationInfoWithLMSI", "gsm_old.locationInfoWithLMSI_element", + FT_NONE, BASE_NONE, NULL, 0, + "LocationInfoWithLMSIv2", HFILL }}, + { &hf_gsm_old_mwd_Set, + { "mwd-Set", "gsm_old.mwd_Set", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_old_locationInfo, + { "locationInfo", "gsm_old.locationInfo", + FT_UINT32, BASE_DEC, VALS(gsm_old_LocationInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_lmsi_01, + { "lmsi", "gsm_old.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_roamingNumber, + { "roamingNumber", "gsm_old.roamingNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_msc_Number, + { "msc-Number", "gsm_old.msc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_subscriberId, + { "subscriberId", "gsm_old.subscriberId", + FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberId_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_requestParameterList, + { "requestParameterList", "gsm_old.requestParameterList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_RequestParameterList_item, + { "RequestParameter", "gsm_old.RequestParameter", + FT_UINT32, BASE_DEC, VALS(gsm_old_RequestParameter_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_authenticationSet, + { "authenticationSet", "gsm_old.authenticationSet", + FT_UINT32, BASE_DEC, VALS(gsm_old_AuthenticationSetListOld_vals), 0, + "AuthenticationSetListOld", HFILL }}, + { &hf_gsm_old_subscriberData, + { "subscriberData", "gsm_old.subscriberData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_ki, + { "ki", "gsm_old.ki", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_tripletList_01, + { "tripletList", "gsm_old.tripletList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_quintupletList, + { "quintupletList", "gsm_old.quintupletList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_old_SentParameterList_item, + { "SentParameter", "gsm_old.SentParameter", + FT_UINT32, BASE_DEC, VALS(gsm_old_SentParameter_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_networkResource, + { "networkResource", "gsm_old.networkResource", + FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0, + NULL, HFILL }}, + { &hf_gsm_old_hlr_Number, + { "hlr-Number", "gsm_old.hlr_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_old_hlr_List, + { "hlr-List", "gsm_old.hlr_List", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + +/* --- Module SS-DataTypes --- --- --- */ + + { &hf_gsm_ss_ss_Code, + { "ss-Code", "gsm_ss.ss_Code", + FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_ss_Status, + { "ss-Status", "gsm_ss.ss_Status", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_ss_Notification, + { "ss-Notification", "gsm_ss.ss_Notification", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_callIsWaiting_Indicator, + { "callIsWaiting-Indicator", "gsm_ss.callIsWaiting_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_callOnHold_Indicator, + { "callOnHold-Indicator", "gsm_ss.callOnHold_Indicator", + FT_UINT32, BASE_DEC, VALS(gsm_ss_CallOnHold_Indicator_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_mpty_Indicator, + { "mpty-Indicator", "gsm_ss.mpty_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_cug_Index, + { "cug-Index", "gsm_ss.cug_Index", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_clirSuppressionRejected, + { "clirSuppressionRejected", "gsm_ss.clirSuppressionRejected_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_ect_Indicator, + { "ect-Indicator", "gsm_ss.ect_Indicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_nameIndicator, + { "nameIndicator", "gsm_ss.nameIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_ccbs_Feature, + { "ccbs-Feature", "gsm_ss.ccbs_Feature_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_alertingPattern, + { "alertingPattern", "gsm_ss.alertingPattern", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_multicall_Indicator, + { "multicall-Indicator", "gsm_ss.multicall_Indicator", + FT_UINT32, BASE_DEC, VALS(gsm_ss_Multicall_Indicator_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_chargingInformation, + { "chargingInformation", "gsm_ss.chargingInformation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e1, + { "e1", "gsm_ss.e1", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e2, + { "e2", "gsm_ss.e2", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e3, + { "e3", "gsm_ss.e3", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e4, + { "e4", "gsm_ss.e4", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e5, + { "e5", "gsm_ss.e5", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e6, + { "e6", "gsm_ss.e6", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_e7, + { "e7", "gsm_ss.e7", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_suppressPrefCUG, + { "suppressPrefCUG", "gsm_ss.suppressPrefCUG_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_suppressOA, + { "suppressOA", "gsm_ss.suppressOA_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_ect_CallState, + { "ect-CallState", "gsm_ss.ect_CallState", + FT_UINT32, BASE_DEC, VALS(gsm_ss_ECT_CallState_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_rdn, + { "rdn", "gsm_ss.rdn", + FT_UINT32, BASE_DEC, VALS(gsm_ss_RDN_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_callingName, + { "callingName", "gsm_ss.callingName", + FT_UINT32, BASE_DEC, VALS(gsm_ss_Name_vals), 0, + "Name", HFILL }}, + { &hf_gsm_ss_namePresentationAllowed, + { "namePresentationAllowed", "gsm_ss.namePresentationAllowed_element", + FT_NONE, BASE_NONE, NULL, 0, + "NameSet", HFILL }}, + { &hf_gsm_ss_presentationRestricted, + { "presentationRestricted", "gsm_ss.presentationRestricted_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_nameUnavailable, + { "nameUnavailable", "gsm_ss.nameUnavailable_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_namePresentationRestricted, + { "namePresentationRestricted", "gsm_ss.namePresentationRestricted_element", + FT_NONE, BASE_NONE, NULL, 0, + "NameSet", HFILL }}, + { &hf_gsm_ss_dataCodingScheme, + { "dataCodingScheme", "gsm_ss.dataCodingScheme", + FT_BYTES, BASE_NONE, NULL, 0, + "USSD_DataCodingScheme", HFILL }}, + { &hf_gsm_ss_lengthInCharacters, + { "lengthInCharacters", "gsm_ss.lengthInCharacters", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gsm_ss_nameString, + { "nameString", "gsm_ss.nameString", + FT_BYTES, BASE_NONE, NULL, 0, + "USSD_String", HFILL }}, + { &hf_gsm_ss_presentationAllowedAddress, + { "presentationAllowedAddress", "gsm_ss.presentationAllowedAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "RemotePartyNumber", HFILL }}, + { &hf_gsm_ss_numberNotAvailableDueToInterworking, + { "numberNotAvailableDueToInterworking", "gsm_ss.numberNotAvailableDueToInterworking_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_presentationRestrictedAddress, + { "presentationRestrictedAddress", "gsm_ss.presentationRestrictedAddress_element", + FT_NONE, BASE_NONE, NULL, 0, + "RemotePartyNumber", HFILL }}, + { &hf_gsm_ss_partyNumber, + { "partyNumber", "gsm_ss.partyNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_ss_partyNumberSubaddress, + { "partyNumberSubaddress", "gsm_ss.partyNumberSubaddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_SubaddressString", HFILL }}, + { &hf_gsm_ss_deflectedToNumber, + { "deflectedToNumber", "gsm_ss.deflectedToNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gsm_ss_deflectedToSubaddress, + { "deflectedToSubaddress", "gsm_ss.deflectedToSubaddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_SubaddressString", HFILL }}, + { &hf_gsm_ss_uUS_Service, + { "uUS-Service", "gsm_ss.uUS_Service", + FT_UINT32, BASE_DEC, VALS(gsm_ss_UUS_Service_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_uUS_Required, + { "uUS-Required", "gsm_ss.uUS_Required", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_gsm_ss_notificationType, + { "notificationType", "gsm_ss.notificationType", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotificationToMSUser_vals), 0, + "NotificationToMSUser", HFILL }}, + { &hf_gsm_ss_locationType, + { "locationType", "gsm_ss.locationType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_lcsClientExternalID, + { "lcsClientExternalID", "gsm_ss.lcsClientExternalID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_lcsClientName, + { "lcsClientName", "gsm_ss.lcsClientName_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_lcsRequestorID, + { "lcsRequestorID", "gsm_ss.lcsRequestorID_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_lcsCodeword, + { "lcsCodeword", "gsm_ss.lcsCodeword_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_lcsServiceTypeID, + { "lcsServiceTypeID", "gsm_ss.lcsServiceTypeID", + FT_UINT32, BASE_DEC, VALS(gsm_map_LCSServiceTypeID_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_deferredLocationExt, + { "deferredLocationExt", "gsm_ss.deferredLocationExt", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_verificationResponse, + { "verificationResponse", "gsm_ss.verificationResponse", + FT_UINT32, BASE_DEC, VALS(gsm_ss_VerificationResponse_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_molr_Type, + { "molr-Type", "gsm_ss.molr_Type", + FT_UINT32, BASE_DEC, VALS(gsm_ss_MOLR_Type_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_locationMethod, + { "locationMethod", "gsm_ss.locationMethod", + FT_UINT32, BASE_DEC, VALS(gsm_ss_LocationMethod_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_lcs_QoS, + { "lcs-QoS", "gsm_ss.lcs_QoS_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_mlc_Number, + { "mlc-Number", "gsm_ss.mlc_Number", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_ss_gpsAssistanceData, + { "gpsAssistanceData", "gsm_ss.gpsAssistanceData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_supportedGADShapes, + { "supportedGADShapes", "gsm_ss.supportedGADShapes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_ageOfLocationInfo, + { "ageOfLocationInfo", "gsm_ss.ageOfLocationInfo", + FT_UINT32, BASE_DEC, NULL, 0, + "AgeOfLocationInformation", HFILL }}, + { &hf_gsm_ss_pseudonymIndicator, + { "pseudonymIndicator", "gsm_ss.pseudonymIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_h_gmlc_address, + { "h-gmlc-address", "gsm_ss.h_gmlc_address", + FT_BYTES, BASE_NONE, NULL, 0, + "GSN_Address", HFILL }}, + { &hf_gsm_ss_locationEstimate, + { "locationEstimate", "gsm_ss.locationEstimate", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_GeographicalInformation", HFILL }}, + { &hf_gsm_ss_velocityEstimate, + { "velocityEstimate", "gsm_ss.velocityEstimate", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_referenceNumber, + { "referenceNumber", "gsm_ss.referenceNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "LCS_ReferenceNumber", HFILL }}, + { &hf_gsm_ss_periodicLDRInfo, + { "periodicLDRInfo", "gsm_ss.periodicLDRInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_locationUpdateRequest, + { "locationUpdateRequest", "gsm_ss.locationUpdateRequest_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_sequenceNumber, + { "sequenceNumber", "gsm_ss.sequenceNumber", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_terminationCause, + { "terminationCause", "gsm_ss.terminationCause", + FT_UINT32, BASE_DEC, VALS(gsm_ss_TerminationCause_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_mo_lrShortCircuit, + { "mo-lrShortCircuit", "gsm_ss.mo_lrShortCircuit_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_ganssAssistanceData, + { "ganssAssistanceData", "gsm_ss.ganssAssistanceData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_multiplePositioningProtocolPDUs, + { "multiplePositioningProtocolPDUs", "gsm_ss.multiplePositioningProtocolPDUs", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_locationInfo, + { "locationInfo", "gsm_ss.locationInfo", + FT_BYTES, BASE_NONE, NULL, 0, + "Location_Info", HFILL }}, + { &hf_gsm_ss_MultiplePositioningProtocolPDUs_item, + { "PositioningProtocolPDU", "gsm_ss.PositioningProtocolPDU", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_decipheringKeys, + { "decipheringKeys", "gsm_ss.decipheringKeys", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_add_LocationEstimate, + { "add-LocationEstimate", "gsm_ss.add_LocationEstimate", + FT_BYTES, BASE_NONE, NULL, 0, + "Add_GeographicalInformation", HFILL }}, + { &hf_gsm_ss_reportingPLMNList, + { "reportingPLMNList", "gsm_ss.reportingPLMNList_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_deferredLocationEventType, + { "deferredLocationEventType", "gsm_ss.deferredLocationEventType", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_areaEventInfo, + { "areaEventInfo", "gsm_ss.areaEventInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_qoS, + { "qoS", "gsm_ss.qoS_element", + FT_NONE, BASE_NONE, NULL, 0, + "LCS_QoS", HFILL }}, + { &hf_gsm_ss_periodicLocation, + { "periodicLocation", "gsm_ss.periodicLocation_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_areaEventReporting, + { "areaEventReporting", "gsm_ss.areaEventReporting_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_motionEventReporting, + { "motionEventReporting", "gsm_ss.motionEventReporting_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_areaList, + { "areaList", "gsm_ss.areaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_occurrenceInfo, + { "occurrenceInfo", "gsm_ss.occurrenceInfo", + FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_OccurrenceInfo_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_intervalTime, + { "intervalTime", "gsm_ss.intervalTime", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_maximumInterval, + { "maximumInterval", "gsm_ss.maximumInterval", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_samplingInterval, + { "samplingInterval", "gsm_ss.samplingInterval", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_duration, + { "duration", "gsm_ss.duration", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_AreaList_item, + { "Area", "gsm_ss.Area_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_areaType, + { "areaType", "gsm_ss.areaType", + FT_UINT32, BASE_DEC, VALS(gsm_ss_AreaType_vals), 0, + NULL, HFILL }}, + { &hf_gsm_ss_areaIdentification, + { "areaIdentification", "gsm_ss.areaIdentification", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_linearDistance, + { "linearDistance", "gsm_ss.linearDistance", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_ss_DeferredLocationExt_motionEvent, + { "motionEvent", "gsm.ss.DeferredLocationExt.motionEvent", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gsm_ss_Location_Info_locationEstimate, + { "locationEstimate", "gsm.ss.Location.Info.locationEstimate", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + +/* --- Module EricssonMAP --- --- --- */ + + { &hf_gsm_map_ericsson_imei, + { "imei", "gsm_map.ericsson.imei", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_requestedEquipmentInfo, + { "requestedEquipmentInfo", "gsm_map.ericsson.requestedEquipmentInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_imsi, + { "imsi", "gsm_map.ericsson.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_locationInformation, + { "locationInformation", "gsm_map.ericsson.locationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_extensionContainer, + { "extensionContainer", "gsm_map.ericsson.extensionContainer_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_isdArgType, + { "isdArgType", "gsm_map.ericsson.isdArgType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_isdResType, + { "isdResType", "gsm_map.ericsson.isdResType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_dsdArgType, + { "dsdArgType", "gsm_map.ericsson.dsdArgType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_sriArgType, + { "sriArgType", "gsm_map.ericsson.sriArgType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_sriResType, + { "sriResType", "gsm_map.ericsson.sriResType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_prnArgType, + { "prnArgType", "gsm_map.ericsson.prnArgType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_ulArgType, + { "ulArgType", "gsm_map.ericsson.ulArgType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_rdArgType, + { "rdArgType", "gsm_map.ericsson.rdArgType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_saiArgType, + { "saiArgType", "gsm_map.ericsson.saiArgType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_saiResType, + { "saiResType", "gsm_map.ericsson.saiResType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_atiArgType, + { "atiArgType", "gsm_map.ericsson.atiArgType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_atiResType, + { "atiResType", "gsm_map.ericsson.atiResType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_extAtiArgType, + { "extAtiArgType", "gsm_map.ericsson.extAtiArgType", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_IsdArgType_item, + { "IsdArgData", "gsm_map.ericsson.IsdArgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_privateFeatureCode, + { "privateFeatureCode", "gsm_map.ericsson.privateFeatureCode", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_privateFeatureData, + { "privateFeatureData", "gsm_map.ericsson.privateFeatureData", + FT_UINT32, BASE_DEC, VALS(gsm_map_ericsson_PrivateFeatureData_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_subscriptionTypeInfo, + { "subscriptionTypeInfo", "gsm_map.ericsson.subscriptionTypeInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_oickInfo, + { "oickInfo", "gsm_map.ericsson.oickInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_ss_Status, + { "ss-Status", "gsm_map.ericsson.ss_Status", + FT_BYTES, BASE_NONE, NULL, 0, + "Ext_SS_Status", HFILL }}, + { &hf_gsm_map_ericsson_inCategoryKey, + { "inCategoryKey", "gsm_map.ericsson.inCategoryKey", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_subscriptionType, + { "subscriptionType", "gsm_map.ericsson.subscriptionType", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_IsdResType_item, + { "IsdResData", "gsm_map.ericsson.IsdResData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_supportedPrivateFeature, + { "supportedPrivateFeature", "gsm_map.ericsson.supportedPrivateFeature", + FT_BYTES, BASE_NONE, NULL, 0, + "PrivateFeatureCode", HFILL }}, + { &hf_gsm_map_ericsson_DsdArgType_item, + { "DsdArgData", "gsm_map.ericsson.DsdArgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_privateFeatureWithdraw, + { "privateFeatureWithdraw", "gsm_map.ericsson.privateFeatureWithdraw", + FT_BYTES, BASE_NONE, NULL, 0, + "PrivateFeatureCode", HFILL }}, + { &hf_gsm_map_ericsson_SRIArgType_item, + { "SriArgData", "gsm_map.ericsson.SriArgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_extraNetworkInfo, + { "extraNetworkInfo", "gsm_map.ericsson.extraNetworkInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + "ExtraSignalInfo", HFILL }}, + { &hf_gsm_map_ericsson_SRIResType_item, + { "SriResData", "gsm_map.ericsson.SriResData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_PrnArgType_item, + { "PrnArgData", "gsm_map.ericsson.PrnArgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_UlArgType_item, + { "UlArgData", "gsm_map.ericsson.UlArgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_privateFeatureUlArgData, + { "privateFeatureUlArgData", "gsm_map.ericsson.privateFeatureUlArgData", + FT_UINT32, BASE_DEC, VALS(gsm_map_ericsson_PrivateFeatureUlArgData_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_adc, + { "adc", "gsm_map.ericsson.adc", + FT_BYTES, BASE_NONE, NULL, 0, + "IMEI", HFILL }}, + { &hf_gsm_map_ericsson_protocolId, + { "protocolId", "gsm_map.ericsson.protocolId", + FT_UINT32, BASE_DEC, VALS(gsm_map_ericsson_ExtraProtocolId_vals), 0, + "ExtraProtocolId", HFILL }}, + { &hf_gsm_map_ericsson_signalInfo, + { "signalInfo", "gsm_map.ericsson.signalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_msisdn, + { "msisdn", "gsm_map.ericsson.msisdn_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_noAuthenVectorsRequested, + { "noAuthenVectorsRequested", "gsm_map.ericsson.noAuthenVectorsRequested_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_msIsdn, + { "msIsdn", "gsm_map.ericsson.msIsdn", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_gsm_map_ericsson_requestedInfoType, + { "requestedInfoType", "gsm_map.ericsson.requestedInfoType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_toBeDecided, + { "toBeDecided", "gsm_map.ericsson.toBeDecided_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_toBeDecidedOne, + { "toBeDecidedOne", "gsm_map.ericsson.toBeDecidedOne_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_sgsnNumber, + { "sgsnNumber", "gsm_map.ericsson.sgsnNumber_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_ExtAtiArgType_item, + { "AtiArgData", "gsm_map.ericsson.AtiArgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + +/* --- Module NokiaMAP-Extensions --- --- --- */ + + { &hf_NokiaMAP_Extensions_alsLineIndicator, + { "alsLineIndicator", "NokiaMAP-Extensions.alsLineIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_routingCategory, + { "routingCategory", "NokiaMAP-Extensions.routingCategory", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_serviceList, + { "serviceList", "NokiaMAP-Extensions.serviceList", + FT_BYTES, BASE_NONE, NULL, 0, + "MAPserviceList", HFILL }}, + { &hf_NokiaMAP_Extensions_serv_info_list, + { "serv-info-list", "NokiaMAP-Extensions.serv_info_list", + FT_UINT32, BASE_DEC, NULL, 0, + "ServiceListWithInfo", HFILL }}, + { &hf_NokiaMAP_Extensions_extRoutingCategory, + { "extRoutingCategory", "NokiaMAP-Extensions.extRoutingCategory", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_ownMSISDN, + { "ownMSISDN", "NokiaMAP-Extensions.ownMSISDN", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_mwd_Set, + { "mwd-Set", "NokiaMAP-Extensions.mwd_Set_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_ChargingAreaList_item, + { "ChargingArea", "NokiaMAP-Extensions.ChargingArea", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_chargingAreaList, + { "chargingAreaList", "NokiaMAP-Extensions.chargingAreaList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_inTriggerKey, + { "inTriggerKey", "NokiaMAP-Extensions.inTriggerKey", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_pnpIndex, + { "pnpIndex", "NokiaMAP-Extensions.pnpIndex", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_callRedirectionIndex, + { "callRedirectionIndex", "NokiaMAP-Extensions.callRedirectionIndex", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_regionalChargingData, + { "regionalChargingData", "NokiaMAP-Extensions.regionalChargingData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_callForwardingOverride, + { "callForwardingOverride", "NokiaMAP-Extensions.callForwardingOverride_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_in_Capability, + { "in-Capability", "NokiaMAP-Extensions.in_Capability_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_callingCategory, + { "callingCategory", "NokiaMAP-Extensions.callingCategory", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_internalServiceIndicator, + { "internalServiceIndicator", "NokiaMAP-Extensions.internalServiceIndicator", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_srbtSupportIndicator, + { "srbtSupportIndicator", "NokiaMAP-Extensions.srbtSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_gmscSupportIndicator, + { "gmscSupportIndicator", "NokiaMAP-Extensions.gmscSupportIndicator_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_protocolId, + { "protocolId", "NokiaMAP-Extensions.protocolId", + FT_UINT32, BASE_DEC, VALS(NokiaMAP_Extensions_ExtraProtocolId_vals), 0, + "ExtraProtocolId", HFILL }}, + { &hf_NokiaMAP_Extensions_signalInfo, + { "signalInfo", "NokiaMAP-Extensions.signalInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_cug_Interlock, + { "cug-Interlock", "NokiaMAP-Extensions.cug_Interlock", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_cug_OutgoingAccess, + { "cug-OutgoingAccess", "NokiaMAP-Extensions.cug_OutgoingAccess", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_NokiaMAP_Extensions_cug_CallInfo, + { "cug-CallInfo", "NokiaMAP-Extensions.cug_CallInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_vlrNumber, + { "vlrNumber", "NokiaMAP-Extensions.vlrNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_activeSs, + { "activeSs", "NokiaMAP-Extensions.activeSs", + FT_BYTES, BASE_NONE, NULL, 0, + "ActiveSS_List", HFILL }}, + { &hf_NokiaMAP_Extensions_traceReference, + { "traceReference", "NokiaMAP-Extensions.traceReference_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_traceType, + { "traceType", "NokiaMAP-Extensions.traceType_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_omc_Id, + { "omc-Id", "NokiaMAP-Extensions.omc_Id", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_hotBilling, + { "hotBilling", "NokiaMAP-Extensions.hotBilling", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_NokiaMAP_Extensions_cfoIsDone, + { "cfoIsDone", "NokiaMAP-Extensions.cfoIsDone", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_NokiaMAP_Extensions_cfInCug, + { "cfInCug", "NokiaMAP-Extensions.cfInCug", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "BOOLEAN", HFILL }}, + { &hf_NokiaMAP_Extensions_basicService, + { "basicService", "NokiaMAP-Extensions.basicService", + FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0, + "BasicServiceCode", HFILL }}, + { &hf_NokiaMAP_Extensions_category, + { "category", "NokiaMAP-Extensions.category_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_nokia_CUG, + { "nokia-CUG", "NokiaMAP-Extensions.nokia_CUG_element", + FT_NONE, BASE_NONE, NULL, 0, + "Nokia_CUG_Data", HFILL }}, + { &hf_NokiaMAP_Extensions_noBarrings, + { "noBarrings", "NokiaMAP-Extensions.noBarrings_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_odb_Data, + { "odb-Data", "NokiaMAP-Extensions.odb_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_fraudData, + { "fraudData", "NokiaMAP-Extensions.fraudData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_leaId, + { "leaId", "NokiaMAP-Extensions.leaId", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_olcmInfoTable, + { "olcmInfoTable", "NokiaMAP-Extensions.olcmInfoTable", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_commonMSISDN, + { "commonMSISDN", "NokiaMAP-Extensions.commonMSISDN", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_rgData, + { "rgData", "NokiaMAP-Extensions.rgData_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_olcmTraceReference, + { "olcmTraceReference", "NokiaMAP-Extensions.olcmTraceReference", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_noAnswerTimer, + { "noAnswerTimer", "NokiaMAP-Extensions.noAnswerTimer", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_memberList, + { "memberList", "NokiaMAP-Extensions.memberList", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_alertingMethod, + { "alertingMethod", "NokiaMAP-Extensions.alertingMethod", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_userType, + { "userType", "NokiaMAP-Extensions.userType", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_divertedToNbr, + { "divertedToNbr", "NokiaMAP-Extensions.divertedToNbr", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_memberOfSuppression, + { "memberOfSuppression", "NokiaMAP-Extensions.memberOfSuppression_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_ringbacktone, + { "ringbacktone", "NokiaMAP-Extensions.ringbacktone_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_MemberList_item, + { "ISDN-AddressString", "NokiaMAP-Extensions.ISDN_AddressString", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_termination, + { "termination", "NokiaMAP-Extensions.termination", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_NokiaMAP_Extensions_OlcmInfoTable_item, + { "OlcmInfo", "NokiaMAP-Extensions.OlcmInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_olcmActive, + { "olcmActive", "NokiaMAP-Extensions.olcmActive_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_moc, + { "moc", "NokiaMAP-Extensions.moc_element", + FT_NONE, BASE_NONE, NULL, 0, + "FraudData", HFILL }}, + { &hf_NokiaMAP_Extensions_cf, + { "cf", "NokiaMAP-Extensions.cf_element", + FT_NONE, BASE_NONE, NULL, 0, + "FraudData", HFILL }}, + { &hf_NokiaMAP_Extensions_ct, + { "ct", "NokiaMAP-Extensions.ct_element", + FT_NONE, BASE_NONE, NULL, 0, + "FraudData", HFILL }}, + { &hf_NokiaMAP_Extensions_time, + { "time", "NokiaMAP-Extensions.time", + FT_UINT32, BASE_DEC, NULL, 0, + "TimeLimit", HFILL }}, + { &hf_NokiaMAP_Extensions_timeAction, + { "timeAction", "NokiaMAP-Extensions.timeAction", + FT_BYTES, BASE_NONE, NULL, 0, + "ActionType", HFILL }}, + { &hf_NokiaMAP_Extensions_maxCount, + { "maxCount", "NokiaMAP-Extensions.maxCount", + FT_UINT32, BASE_DEC, NULL, 0, + "FraudMaxCount", HFILL }}, + { &hf_NokiaMAP_Extensions_maxCountAction, + { "maxCountAction", "NokiaMAP-Extensions.maxCountAction", + FT_BYTES, BASE_NONE, NULL, 0, + "ActionType", HFILL }}, + { &hf_NokiaMAP_Extensions_serviceCode, + { "serviceCode", "NokiaMAP-Extensions.serviceCode", + FT_BYTES, BASE_NONE, NULL, 0, + "MAPserviceCode", HFILL }}, + { &hf_NokiaMAP_Extensions_versionInfo, + { "versionInfo", "NokiaMAP-Extensions.versionInfo", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_in_key, + { "in-key", "NokiaMAP-Extensions.in_key", + FT_UINT32, BASE_DEC, VALS(NokiaMAP_Extensions_INKey_vals), 0, + "INKey", HFILL }}, + { &hf_NokiaMAP_Extensions_fraudInfo, + { "fraudInfo", "NokiaMAP-Extensions.fraudInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_ServiceListWithInfo_item, + { "ServiceWithInfo", "NokiaMAP-Extensions.ServiceWithInfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_mobile_IN_key, + { "mobile-IN-key", "NokiaMAP-Extensions.mobile_IN_key_element", + FT_NONE, BASE_NONE, NULL, 0, + "MKey", HFILL }}, + { &hf_NokiaMAP_Extensions_sms_IN_key, + { "sms-IN-key", "NokiaMAP-Extensions.sms_IN_key_element", + FT_NONE, BASE_NONE, NULL, 0, + "SMSKey", HFILL }}, + { &hf_NokiaMAP_Extensions_mKeyVer, + { "mKeyVer", "NokiaMAP-Extensions.mKeyVer", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_mmScfAddress, + { "mmScfAddress", "NokiaMAP-Extensions.mmScfAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_mmTdpName, + { "mmTdpName", "NokiaMAP-Extensions.mmTdpName", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_serviceKey, + { "serviceKey", "NokiaMAP-Extensions.serviceKey", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_locupType, + { "locupType", "NokiaMAP-Extensions.locupType", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_mmSCPAddress, + { "mmSCPAddress", "NokiaMAP-Extensions.mmSCPAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_smsTdpName, + { "smsTdpName", "NokiaMAP-Extensions.smsTdpName", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_mmsFlag, + { "mmsFlag", "NokiaMAP-Extensions.mmsFlag_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_map_Opt, + { "map-Opt", "NokiaMAP-Extensions.map_Opt", + FT_BYTES, BASE_NONE, NULL, 0, + "MapOptFields", HFILL }}, + { &hf_NokiaMAP_Extensions_codec_List, + { "codec-List", "NokiaMAP-Extensions.codec_List", + FT_UINT32, BASE_DEC, NULL, 0, + "CodecListExt", HFILL }}, + { &hf_NokiaMAP_Extensions_selected_Codec, + { "selected-Codec", "NokiaMAP-Extensions.selected_Codec_element", + FT_NONE, BASE_NONE, NULL, 0, + "SelectedCodec", HFILL }}, + { &hf_NokiaMAP_Extensions_uma_access, + { "uma-access", "NokiaMAP-Extensions.uma_access_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_uma_ip_address, + { "uma-ip-address", "NokiaMAP-Extensions.uma_ip_address", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_5_17", HFILL }}, + { &hf_NokiaMAP_Extensions_uma_ip_port_nb, + { "uma-ip-port-nb", "NokiaMAP-Extensions.uma_ip_port_nb", + FT_UINT32, BASE_DEC, NULL, 0, + "IPPortNb", HFILL }}, + { &hf_NokiaMAP_Extensions_CodecListExt_item, + { "CodecExt", "NokiaMAP-Extensions.CodecExt", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_codec, + { "codec", "NokiaMAP-Extensions.codec", + FT_BYTES, BASE_NONE, NULL, 0, + "CodecExt", HFILL }}, + { &hf_NokiaMAP_Extensions_modes, + { "modes", "NokiaMAP-Extensions.modes", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_imsi, + { "imsi", "NokiaMAP-Extensions.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_cfuSMSCounter, + { "cfuSMSCounter", "NokiaMAP-Extensions.cfuSMSCounter", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_cfusmcfo, + { "cfusmcfo", "NokiaMAP-Extensions.cfusmcfo_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_memberInterrogate, + { "memberInterrogate", "NokiaMAP-Extensions.memberInterrogate_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_locationAreaCode, + { "locationAreaCode", "NokiaMAP-Extensions.locationAreaCode", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_cellId, + { "cellId", "NokiaMAP-Extensions.cellId", + FT_BYTES, BASE_NONE, NULL, 0, + "CellGlobalIdOrServiceAreaIdFixedLength", HFILL }}, + { &hf_NokiaMAP_Extensions_lai, + { "lai", "NokiaMAP-Extensions.lai", + FT_BYTES, BASE_NONE, NULL, 0, + "LAIFixedLength", HFILL }}, + { &hf_NokiaMAP_Extensions_sendImmResp, + { "sendImmResp", "NokiaMAP-Extensions.sendImmResp_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_rejectCause, + { "rejectCause", "NokiaMAP-Extensions.rejectCause", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING_SIZE_1", HFILL }}, + { &hf_NokiaMAP_Extensions_senderMSISDN, + { "senderMSISDN", "NokiaMAP-Extensions.senderMSISDN", + FT_BYTES, BASE_NONE, NULL, 0, + "ISDN_AddressString", HFILL }}, + { &hf_NokiaMAP_Extensions_access, + { "access", "NokiaMAP-Extensions.access", + FT_UINT32, BASE_DEC, VALS(NokiaMAP_Extensions_Access_vals), 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_version, + { "version", "NokiaMAP-Extensions.version", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_AccessSubscriptionListExt_item, + { "Access", "NokiaMAP-Extensions.Access", + FT_UINT32, BASE_DEC, VALS(NokiaMAP_Extensions_Access_vals), 0, + NULL, HFILL }}, + { &hf_NokiaMAP_Extensions_AllowedServiceData_amr_wb_allowed, + { "amr-wb-allowed", "NokiaMAP.Extensions.AllowedServiceData.amr.wb.allowed", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_gsm_map, + &ett_gsm_map_InvokeId, + &ett_gsm_map_InvokePDU, + &ett_gsm_map_ReturnResultPDU, + &ett_gsm_map_ReturnErrorPDU, + &ett_gsm_map_ReturnResult_result, + &ett_gsm_map_ReturnError_result, + &ett_gsm_map_GSMMAPPDU, + &ett_gsm_map_ext_qos_subscribed, + &ett_gsm_map_pdptypenumber, + &ett_gsm_map_RAIdentity, + &ett_gsm_map_LAIFixedLength, + &ett_gsm_map_isdn_address_string, + &ett_gsm_map_geo_desc, + &ett_gsm_map_LongSignalInfo, + &ett_gsm_map_RadioResourceInformation, + &ett_gsm_map_MSNetworkCapability, + &ett_gsm_map_MSRadioAccessCapability, + &ett_gsm_map_externalsignalinfo, + &ett_gsm_map_cbs_data_coding, + &ett_gsm_map_GlobalCellId, + &ett_gsm_map_GeographicalInformation, + &ett_gsm_map_apn_str, + &ett_gsm_map_LocationNumber, + &ett_gsm_map_ericsson_locationInformation, + &ett_gsm_map_extension_data, + &ett_gsm_map_tbcd_digits, + &ett_gsm_map_ussd_string, + &ett_gsm_map_ext2_qos_subscribed, + &ett_gsm_map_ext3_qos_subscribed, + &ett_gsm_map_e_utranCellGlobalIdentity, + &ett_gsm_map_TA_id, + &ett_gsm_map_GeodeticInformation, + + +/* --- Module MAP-ExtensionDataTypes --- --- --- */ + + &ett_gsm_map_ExtensionContainer, + &ett_gsm_map_SLR_ArgExtensionContainer, + &ett_gsm_map_PrivateExtensionList, + &ett_gsm_map_PrivateExtension, + &ett_gsm_map_PCS_Extensions, + &ett_gsm_map_SLR_Arg_PCS_Extensions, + +/* --- Module MAP-CommonDataTypes --- --- --- */ + + &ett_gsm_map_ExternalSignalInfo, + &ett_gsm_map_Ext_ExternalSignalInfo, + &ett_gsm_map_AccessNetworkSignalInfo, + &ett_gsm_map_Identity, + &ett_gsm_map_IMSI_WithLMSI, + &ett_gsm_map_SubscriberId, + &ett_gsm_map_HLR_List, + &ett_gsm_map_NAEA_PreferredCI, + &ett_gsm_map_SubscriberIdentity, + &ett_gsm_map_LCSClientExternalID, + &ett_gsm_map_NetworkNodeDiameterAddress, + &ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI, + &ett_gsm_map_BasicServiceCode, + &ett_gsm_map_Ext_BasicServiceCode, + &ett_gsm_map_EMLPP_Info, + &ett_gsm_map_MC_SS_Info, + +/* --- Module MAP-SS-DataTypes --- --- --- */ + + &ett_gsm_map_ss_RegisterSS_Arg, + &ett_gsm_map_ss_SS_Info, + &ett_gsm_map_ss_ForwardingInfo, + &ett_gsm_map_ss_ForwardingFeatureList, + &ett_gsm_map_ss_ForwardingFeature, + &ett_gsm_map_ss_CallBarringInfo, + &ett_gsm_map_ss_CallBarringFeatureList, + &ett_gsm_map_ss_CallBarringFeature, + &ett_gsm_map_ss_SS_Data, + &ett_gsm_map_ss_SS_SubscriptionOption, + &ett_gsm_map_ss_SS_ForBS_Code, + &ett_gsm_map_ss_GenericServiceInfo, + &ett_gsm_map_ss_CCBS_FeatureList, + &ett_gsm_map_ss_CCBS_Feature, + &ett_gsm_map_ss_InterrogateSS_Res, + &ett_gsm_map_ss_USSD_Arg, + &ett_gsm_map_ss_USSD_Res, + &ett_gsm_map_ss_SS_List, + &ett_gsm_map_ss_BasicServiceGroupList, + &ett_gsm_map_ss_SS_InvocationNotificationArg, + &ett_gsm_map_ss_SS_InvocationNotificationRes, + &ett_gsm_map_ss_SS_EventSpecification, + &ett_gsm_map_ss_RegisterCC_EntryArg, + &ett_gsm_map_ss_CCBS_Data, + &ett_gsm_map_ss_ServiceIndicator, + &ett_gsm_map_ss_RegisterCC_EntryRes, + &ett_gsm_map_ss_EraseCC_EntryArg, + &ett_gsm_map_ss_EraseCC_EntryRes, + +/* --- Module MAP-ER-DataTypes --- --- --- */ + + &ett_gsm_map_er_RoamingNotAllowedParam, + &ett_gsm_map_er_CallBarredParam, + &ett_gsm_map_er_ExtensibleCallBarredParam, + &ett_gsm_map_er_CUG_RejectParam, + &ett_gsm_map_er_SS_IncompatibilityCause, + &ett_gsm_map_er_SM_DeliveryFailureCause, + &ett_gsm_map_er_AbsentSubscriberSM_Param, + &ett_gsm_map_er_SystemFailureParam, + &ett_gsm_map_er_ExtensibleSystemFailureParam, + &ett_gsm_map_er_DataMissingParam, + &ett_gsm_map_er_UnexpectedDataParam, + &ett_gsm_map_er_FacilityNotSupParam, + &ett_gsm_map_er_OR_NotAllowedParam, + &ett_gsm_map_er_UnknownSubscriberParam, + &ett_gsm_map_er_NumberChangedParam, + &ett_gsm_map_er_UnidentifiedSubParam, + &ett_gsm_map_er_IllegalSubscriberParam, + &ett_gsm_map_er_IllegalEquipmentParam, + &ett_gsm_map_er_BearerServNotProvParam, + &ett_gsm_map_er_TeleservNotProvParam, + &ett_gsm_map_er_TracingBufferFullParam, + &ett_gsm_map_er_NoRoamingNbParam, + &ett_gsm_map_er_AbsentSubscriberParam, + &ett_gsm_map_er_BusySubscriberParam, + &ett_gsm_map_er_NoSubscriberReplyParam, + &ett_gsm_map_er_ForwardingViolationParam, + &ett_gsm_map_er_ForwardingFailedParam, + &ett_gsm_map_er_ATI_NotAllowedParam, + &ett_gsm_map_er_ATSI_NotAllowedParam, + &ett_gsm_map_er_ATM_NotAllowedParam, + &ett_gsm_map_er_IllegalSS_OperationParam, + &ett_gsm_map_er_SS_NotAvailableParam, + &ett_gsm_map_er_SS_SubscriptionViolationParam, + &ett_gsm_map_er_InformationNotAvailableParam, + &ett_gsm_map_er_SubBusyForMT_SMS_Param, + &ett_gsm_map_er_MessageWaitListFullParam, + &ett_gsm_map_er_ResourceLimitationParam, + &ett_gsm_map_er_NoGroupCallNbParam, + &ett_gsm_map_er_IncompatibleTerminalParam, + &ett_gsm_map_er_ShortTermDenialParam, + &ett_gsm_map_er_LongTermDenialParam, + &ett_gsm_map_er_UnauthorizedRequestingNetwork_Param, + &ett_gsm_map_er_UnauthorizedLCSClient_Param, + &ett_gsm_map_er_PositionMethodFailure_Param, + &ett_gsm_map_er_UnknownOrUnreachableLCSClient_Param, + &ett_gsm_map_er_MM_EventNotSupported_Param, + &ett_gsm_map_er_TargetCellOutsideGCA_Param, + &ett_gsm_map_er_OngoingGroupCallParam, + +/* --- Module MAP-SM-DataTypes --- --- --- */ + + &ett_gsm_map_sm_RoutingInfoForSM_Arg, + &ett_gsm_map_sm_RoutingInfoForSM_Res, + &ett_gsm_map_sm_IP_SM_GW_Guidance, + &ett_gsm_map_sm_LocationInfoWithLMSI, + &ett_gsm_map_sm_Additional_Number, + &ett_gsm_map_sm_MO_ForwardSM_Arg, + &ett_gsm_map_sm_MO_ForwardSM_Res, + &ett_gsm_map_sm_MT_ForwardSM_Arg, + &ett_gsm_map_sm_CorrelationID, + &ett_gsm_map_sm_MT_ForwardSM_Res, + &ett_gsm_map_sm_SM_RP_DA, + &ett_gsm_map_sm_SM_RP_OA, + &ett_gsm_map_sm_ReportSM_DeliveryStatusArg, + &ett_gsm_map_sm_ReportSM_DeliveryStatusRes, + &ett_gsm_map_sm_AlertServiceCentreArg, + &ett_gsm_map_sm_InformServiceCentreArg, + &ett_gsm_map_sm_MW_Status, + &ett_gsm_map_sm_ReadyForSM_Arg, + &ett_gsm_map_sm_ReadyForSM_Res, + &ett_gsm_map_sm_MT_ForwardSM_VGCS_Arg, + &ett_gsm_map_sm_MT_ForwardSM_VGCS_Res, + &ett_gsm_map_sm_DispatcherList, + &ett_gsm_map_sm_AdditionalDispatcherList, + +/* --- Module MAP-OM-DataTypes --- --- --- */ + + &ett_gsm_map_om_ActivateTraceModeArg, + &ett_gsm_map_om_MDT_Configuration, + &ett_gsm_map_om_MDT_Allowed_PLMNId_List, + &ett_gsm_map_om_AreaScope, + &ett_gsm_map_om_CGI_List, + &ett_gsm_map_om_E_UTRAN_CGI_List, + &ett_gsm_map_om_RoutingAreaId_List, + &ett_gsm_map_om_LocationAreaId_List, + &ett_gsm_map_om_TrackingAreaId_List, + &ett_gsm_map_om_TraceDepthList, + &ett_gsm_map_om_TraceNE_TypeList, + &ett_gsm_map_om_TraceInterfaceList, + &ett_gsm_map_om_MSC_S_InterfaceList, + &ett_gsm_map_om_MGW_InterfaceList, + &ett_gsm_map_om_SGSN_InterfaceList, + &ett_gsm_map_om_GGSN_InterfaceList, + &ett_gsm_map_om_RNC_InterfaceList, + &ett_gsm_map_om_BMSC_InterfaceList, + &ett_gsm_map_om_MME_InterfaceList, + &ett_gsm_map_om_SGW_InterfaceList, + &ett_gsm_map_om_PGW_InterfaceList, + &ett_gsm_map_om_ENB_InterfaceList, + &ett_gsm_map_om_TraceEventList, + &ett_gsm_map_om_MSC_S_EventList, + &ett_gsm_map_om_MGW_EventList, + &ett_gsm_map_om_SGSN_EventList, + &ett_gsm_map_om_GGSN_EventList, + &ett_gsm_map_om_BMSC_EventList, + &ett_gsm_map_om_MME_EventList, + &ett_gsm_map_om_SGW_EventList, + &ett_gsm_map_om_PGW_EventList, + &ett_gsm_map_om_TracePropagationList, + &ett_gsm_map_om_ActivateTraceModeRes, + &ett_gsm_map_om_DeactivateTraceModeArg, + &ett_gsm_map_om_DeactivateTraceModeRes, + +/* --- Module MAP-MS-DataTypes --- --- --- */ + + &ett_gsm_map_ms_UpdateLocationArg, + &ett_gsm_map_ms_VLR_Capability, + &ett_gsm_map_ms_SupportedRAT_Types, + &ett_gsm_map_ms_SuperChargerInfo, + &ett_gsm_map_ms_SupportedLCS_CapabilitySets, + &ett_gsm_map_ms_UpdateLocationRes, + &ett_gsm_map_ms_ADD_Info, + &ett_gsm_map_ms_PagingArea, + &ett_gsm_map_ms_LocationArea, + &ett_gsm_map_ms_CancelLocationArg_U, + &ett_gsm_map_ms_CancelLocationRes, + &ett_gsm_map_ms_PurgeMS_Arg_U, + &ett_gsm_map_ms_PurgeMS_Res, + &ett_gsm_map_ms_SendIdentificationArg, + &ett_gsm_map_ms_SendIdentificationRes_U, + &ett_gsm_map_ms_AuthenticationSetList, + &ett_gsm_map_ms_TripletList, + &ett_gsm_map_ms_QuintupletList, + &ett_gsm_map_ms_AuthenticationTriplet, + &ett_gsm_map_ms_AuthenticationQuintuplet, + &ett_gsm_map_ms_CurrentSecurityContext, + &ett_gsm_map_ms_GSM_SecurityContextData, + &ett_gsm_map_ms_UMTS_SecurityContextData, + &ett_gsm_map_ms_AuthenticationFailureReportArg, + &ett_gsm_map_ms_AuthenticationFailureReportRes, + &ett_gsm_map_ms_UpdateGprsLocationArg, + &ett_gsm_map_ms_EPS_Info, + &ett_gsm_map_ms_PDN_GW_Update, + &ett_gsm_map_ms_ISR_Information, + &ett_gsm_map_ms_SGSN_Capability, + &ett_gsm_map_ms_SupportedFeatures, + &ett_gsm_map_ms_Ext_SupportedFeatures, + &ett_gsm_map_ms_UpdateGprsLocationRes, + &ett_gsm_map_ms_EPLMN_List, + &ett_gsm_map_ms_AdjacentPLMN_List, + &ett_gsm_map_ms_ForwardAccessSignalling_Arg_U, + &ett_gsm_map_ms_AllowedUMTS_Algorithms, + &ett_gsm_map_ms_PrepareHO_Arg_U, + &ett_gsm_map_ms_LCLS_Negotiation, + &ett_gsm_map_ms_LCLS_ConfigurationPreference, + &ett_gsm_map_ms_BSSMAP_ServiceHandoverList, + &ett_gsm_map_ms_BSSMAP_ServiceHandoverInfo, + &ett_gsm_map_ms_RadioResourceList, + &ett_gsm_map_ms_RadioResource, + &ett_gsm_map_ms_PrepareHO_Res_U, + &ett_gsm_map_ms_SelectedUMTS_Algorithms, + &ett_gsm_map_ms_ChosenRadioResourceInformation, + &ett_gsm_map_ms_PrepareSubsequentHO_Arg_U, + &ett_gsm_map_ms_PrepareSubsequentHO_Res_U, + &ett_gsm_map_ms_ProcessAccessSignalling_Arg_U, + &ett_gsm_map_ms_AoIPCodecsList, + &ett_gsm_map_ms_SupportedCodecsList, + &ett_gsm_map_ms_CodecList, + &ett_gsm_map_ms_SendEndSignal_Arg_U, + &ett_gsm_map_ms_SendEndSignal_Res, + &ett_gsm_map_ms_RelocationNumberList, + &ett_gsm_map_ms_RelocationNumber, + &ett_gsm_map_ms_SendAuthenticationInfoArg, + &ett_gsm_map_ms_Re_synchronisationInfo, + &ett_gsm_map_ms_SendAuthenticationInfoRes_U, + &ett_gsm_map_ms_EPS_AuthenticationSetList, + &ett_gsm_map_ms_EPC_AV, + &ett_gsm_map_ms_CheckIMEI_Arg, + &ett_gsm_map_ms_CheckIMEI_Res, + &ett_gsm_map_ms_RequestedEquipmentInfo, + &ett_gsm_map_ms_UESBI_Iu, + &ett_gsm_map_ms_InsertSubscriberDataArg, + &ett_gsm_map_ms_EDRX_Cycle_Length_List, + &ett_gsm_map_ms_EDRX_Cycle_Length, + &ett_gsm_map_ms_Reset_Id_List, + &ett_gsm_map_ms_IMSI_GroupIdList, + &ett_gsm_map_ms_IMSI_GroupId, + &ett_gsm_map_ms_CSG_SubscriptionDataList, + &ett_gsm_map_ms_CSG_SubscriptionData, + &ett_gsm_map_ms_VPLMN_CSG_SubscriptionDataList, + &ett_gsm_map_ms_LIPA_AllowedAPNList, + &ett_gsm_map_ms_EPS_SubscriptionData, + &ett_gsm_map_ms_APN_ConfigurationProfile, + &ett_gsm_map_ms_EPS_DataList, + &ett_gsm_map_ms_APN_Configuration, + &ett_gsm_map_ms_EPS_QoS_Subscribed, + &ett_gsm_map_ms_AMBR, + &ett_gsm_map_ms_SpecificAPNInfoList, + &ett_gsm_map_ms_SpecificAPNInfo, + &ett_gsm_map_ms_Allocation_Retention_Priority, + &ett_gsm_map_ms_PDN_GW_Identity, + &ett_gsm_map_ms_WLAN_Offloadability, + &ett_gsm_map_ms_AccessRestrictionData, + &ett_gsm_map_ms_Ext_AccessRestrictionData, + &ett_gsm_map_ms_AdjacentAccessRestrictionDataList, + &ett_gsm_map_ms_AdjacentAccessRestrictionData, + &ett_gsm_map_ms_LCSInformation, + &ett_gsm_map_ms_GMLC_List, + &ett_gsm_map_ms_GPRSDataList, + &ett_gsm_map_ms_PDP_Context, + &ett_gsm_map_ms_GPRSSubscriptionData, + &ett_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo, + &ett_gsm_map_ms_GPRS_CSI, + &ett_gsm_map_ms_GPRS_CamelTDPDataList, + &ett_gsm_map_ms_GPRS_CamelTDPData, + &ett_gsm_map_ms_LSADataList, + &ett_gsm_map_ms_LSAData, + &ett_gsm_map_ms_LSAInformation, + &ett_gsm_map_ms_SubscriberData, + &ett_gsm_map_ms_BearerServiceList, + &ett_gsm_map_ms_TeleserviceList, + &ett_gsm_map_ms_ODB_Data, + &ett_gsm_map_ms_ODB_GeneralData, + &ett_gsm_map_ms_ODB_HPLMN_Data, + &ett_gsm_map_ms_Ext_SS_InfoList, + &ett_gsm_map_ms_Ext_SS_Info, + &ett_gsm_map_ms_Ext_ForwInfo, + &ett_gsm_map_ms_Ext_ForwFeatureList, + &ett_gsm_map_ms_Ext_ForwFeature, + &ett_gsm_map_ms_Ext_CallBarInfo, + &ett_gsm_map_ms_Ext_CallBarFeatureList, + &ett_gsm_map_ms_Ext_CallBarringFeature, + &ett_gsm_map_ms_CUG_Info, + &ett_gsm_map_ms_CUG_SubscriptionList, + &ett_gsm_map_ms_CUG_Subscription, + &ett_gsm_map_ms_CUG_FeatureList, + &ett_gsm_map_ms_Ext_BasicServiceGroupList, + &ett_gsm_map_ms_CUG_Feature, + &ett_gsm_map_ms_Ext_SS_Data, + &ett_gsm_map_ms_LCS_PrivacyExceptionList, + &ett_gsm_map_ms_LCS_PrivacyClass, + &ett_gsm_map_ms_ExternalClientList, + &ett_gsm_map_ms_PLMNClientList, + &ett_gsm_map_ms_Ext_ExternalClientList, + &ett_gsm_map_ms_ExternalClient, + &ett_gsm_map_ms_ServiceTypeList, + &ett_gsm_map_ms_ServiceType, + &ett_gsm_map_ms_MOLR_List, + &ett_gsm_map_ms_MOLR_Class, + &ett_gsm_map_ms_ZoneCodeList, + &ett_gsm_map_ms_InsertSubscriberDataRes, + &ett_gsm_map_ms_DeleteSubscriberDataArg, + &ett_gsm_map_ms_SpecificCSI_Withdraw, + &ett_gsm_map_ms_GPRSSubscriptionDataWithdraw, + &ett_gsm_map_ms_EPS_SubscriptionDataWithdraw, + &ett_gsm_map_ms_ContextIdList, + &ett_gsm_map_ms_LSAInformationWithdraw, + &ett_gsm_map_ms_LSAIdentityList, + &ett_gsm_map_ms_BasicServiceList, + &ett_gsm_map_ms_DeleteSubscriberDataRes, + &ett_gsm_map_ms_VlrCamelSubscriptionInfo, + &ett_gsm_map_ms_MT_smsCAMELTDP_CriteriaList, + &ett_gsm_map_ms_MT_smsCAMELTDP_Criteria, + &ett_gsm_map_ms_TPDU_TypeCriterion, + &ett_gsm_map_ms_D_CSI, + &ett_gsm_map_ms_DP_AnalysedInfoCriteriaList, + &ett_gsm_map_ms_DP_AnalysedInfoCriterium, + &ett_gsm_map_ms_SS_CSI, + &ett_gsm_map_ms_SS_CamelData, + &ett_gsm_map_ms_SS_EventList, + &ett_gsm_map_ms_O_CSI, + &ett_gsm_map_ms_O_BcsmCamelTDPDataList, + &ett_gsm_map_ms_O_BcsmCamelTDPData, + &ett_gsm_map_ms_O_BcsmCamelTDPCriteriaList, + &ett_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList, + &ett_gsm_map_ms_O_BcsmCamelTDP_Criteria, + &ett_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria, + &ett_gsm_map_ms_DestinationNumberCriteria, + &ett_gsm_map_ms_DestinationNumberList, + &ett_gsm_map_ms_DestinationNumberLengthList, + &ett_gsm_map_ms_BasicServiceCriteria, + &ett_gsm_map_ms_O_CauseValueCriteria, + &ett_gsm_map_ms_T_CauseValueCriteria, + &ett_gsm_map_ms_SupportedCamelPhases, + &ett_gsm_map_ms_OfferedCamel4CSIs, + &ett_gsm_map_ms_OfferedCamel4Functionalities, + &ett_gsm_map_ms_SMS_CSI, + &ett_gsm_map_ms_SMS_CAMEL_TDP_DataList, + &ett_gsm_map_ms_SMS_CAMEL_TDP_Data, + &ett_gsm_map_ms_M_CSI, + &ett_gsm_map_ms_MG_CSI, + &ett_gsm_map_ms_MobilityTriggers, + &ett_gsm_map_ms_T_CSI, + &ett_gsm_map_ms_T_BcsmCamelTDPDataList, + &ett_gsm_map_ms_T_BcsmCamelTDPData, + &ett_gsm_map_ms_SendRoutingInfoForGprsArg, + &ett_gsm_map_ms_SendRoutingInfoForGprsRes, + &ett_gsm_map_ms_FailureReportArg, + &ett_gsm_map_ms_FailureReportRes, + &ett_gsm_map_ms_NoteMsPresentForGprsArg, + &ett_gsm_map_ms_NoteMsPresentForGprsRes, + &ett_gsm_map_ms_ResetArg, + &ett_gsm_map_ms_SendingNode_Number, + &ett_gsm_map_ms_RestoreDataArg, + &ett_gsm_map_ms_RestoreDataRes, + &ett_gsm_map_ms_VBSDataList, + &ett_gsm_map_ms_VGCSDataList, + &ett_gsm_map_ms_VoiceGroupCallData, + &ett_gsm_map_ms_AdditionalSubscriptions, + &ett_gsm_map_ms_VoiceBroadcastData, + &ett_gsm_map_ms_ProvideSubscriberInfoArg, + &ett_gsm_map_ms_ProvideSubscriberInfoRes, + &ett_gsm_map_ms_SubscriberInfo, + &ett_gsm_map_ms_MNPInfoRes, + &ett_gsm_map_ms_GPRSMSClass, + &ett_gsm_map_ms_RequestedInfo, + &ett_gsm_map_ms_RequestedNodes, + &ett_gsm_map_ms_LocationInformation, + &ett_gsm_map_ms_LocationInformationEPS, + &ett_gsm_map_ms_LocationInformationGPRS, + &ett_gsm_map_ms_LocationInformation5GS, + &ett_gsm_map_ms_UserCSGInformation, + &ett_gsm_map_ms_SubscriberState, + &ett_gsm_map_ms_PS_SubscriberState, + &ett_gsm_map_ms_PDP_ContextInfoList, + &ett_gsm_map_ms_PDP_ContextInfo, + &ett_gsm_map_ms_AnyTimeInterrogationArg, + &ett_gsm_map_ms_AnyTimeInterrogationRes, + &ett_gsm_map_ms_AnyTimeSubscriptionInterrogationArg, + &ett_gsm_map_ms_AnyTimeSubscriptionInterrogationRes, + &ett_gsm_map_ms_CallWaitingData, + &ett_gsm_map_ms_Ext_CwFeatureList, + &ett_gsm_map_ms_Ext_CwFeature, + &ett_gsm_map_ms_ClipData, + &ett_gsm_map_ms_ClirData, + &ett_gsm_map_ms_CallHoldData, + &ett_gsm_map_ms_EctData, + &ett_gsm_map_ms_RequestedSubscriptionInfo, + &ett_gsm_map_ms_MSISDN_BS_List, + &ett_gsm_map_ms_MSISDN_BS, + &ett_gsm_map_ms_CallForwardingData, + &ett_gsm_map_ms_CallBarringData, + &ett_gsm_map_ms_ODB_Info, + &ett_gsm_map_ms_CAMEL_SubscriptionInfo, + &ett_gsm_map_ms_AnyTimeModificationArg, + &ett_gsm_map_ms_ModificationRequestFor_CW_Info, + &ett_gsm_map_ms_ModificationRequestFor_CH_Info, + &ett_gsm_map_ms_ModificationRequestFor_ECT_Info, + &ett_gsm_map_ms_ModificationRequestFor_CLIR_Info, + &ett_gsm_map_ms_ModificationRequestFor_CLIP_Info, + &ett_gsm_map_ms_ModificationRequestFor_CSG, + &ett_gsm_map_ms_RequestedServingNode, + &ett_gsm_map_ms_ServingNode, + &ett_gsm_map_ms_AnyTimeModificationRes, + &ett_gsm_map_ms_ModificationRequestFor_CF_Info, + &ett_gsm_map_ms_ModificationRequestFor_CB_Info, + &ett_gsm_map_ms_ModificationRequestFor_ODB_data, + &ett_gsm_map_ms_ModificationRequestFor_CSI, + &ett_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data, + &ett_gsm_map_ms_NoteSubscriberDataModifiedArg, + &ett_gsm_map_ms_NoteSubscriberDataModifiedRes, + &ett_gsm_map_ms_NoteMM_EventArg, + &ett_gsm_map_ms_NoteMM_EventRes, + &ett_gsm_map_ms_Ext_SS_InfoFor_CSE, + &ett_gsm_map_ms_Ext_ForwardingInfoFor_CSE, + &ett_gsm_map_ms_Ext_CallBarringInfoFor_CSE, + &ett_gsm_map_ms_UpdateVcsgLocationArg, + &ett_gsm_map_ms_UpdateVcsgLocationRes, + &ett_gsm_map_ms_CancelVcsgLocationArg, + &ett_gsm_map_ms_CancelVcsgLocationRes, + +/* --- Module MAP-CH-DataTypes --- --- --- */ + + &ett_gsm_map_ch_CUG_CheckInfo, + &ett_gsm_map_ch_SendRoutingInfoArg, + &ett_gsm_map_ch_SuppressMTSS, + &ett_gsm_map_ch_SendRoutingInfoRes_U, + &ett_gsm_map_ch_AllowedServices, + &ett_gsm_map_ch_CCBS_Indicators, + &ett_gsm_map_ch_RoutingInfo, + &ett_gsm_map_ch_ForwardingData, + &ett_gsm_map_ch_ProvideRoamingNumberArg, + &ett_gsm_map_ch_ProvideRoamingNumberRes, + &ett_gsm_map_ch_ResumeCallHandlingArg, + &ett_gsm_map_ch_UU_Data, + &ett_gsm_map_ch_ResumeCallHandlingRes, + &ett_gsm_map_ch_CamelInfo, + &ett_gsm_map_ch_ExtendedRoutingInfo, + &ett_gsm_map_ch_CamelRoutingInfo, + &ett_gsm_map_ch_GmscCamelSubscriptionInfo, + &ett_gsm_map_ch_SetReportingStateArg, + &ett_gsm_map_ch_SetReportingStateRes, + &ett_gsm_map_ch_StatusReportArg, + &ett_gsm_map_ch_EventReportData, + &ett_gsm_map_ch_CallReportData, + &ett_gsm_map_ch_StatusReportRes, + &ett_gsm_map_ch_RemoteUserFreeArg, + &ett_gsm_map_ch_RemoteUserFreeRes, + &ett_gsm_map_ch_IST_AlertArg, + &ett_gsm_map_ch_IST_AlertRes, + &ett_gsm_map_ch_IST_CommandArg, + &ett_gsm_map_ch_IST_CommandRes, + &ett_gsm_map_ch_ReleaseResourcesArg, + &ett_gsm_map_ch_ReleaseResourcesRes, + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + + &ett_gsm_map_lcs_RoutingInfoForLCS_Arg, + &ett_gsm_map_lcs_RoutingInfoForLCS_Res, + &ett_gsm_map_lcs_LCSLocationInfo, + &ett_gsm_map_lcs_ProvideSubscriberLocation_Arg, + &ett_gsm_map_lcs_LocationType, + &ett_gsm_map_lcs_DeferredLocationEventType, + &ett_gsm_map_lcs_LCS_ClientID, + &ett_gsm_map_lcs_LCSClientName, + &ett_gsm_map_lcs_LCSRequestorID, + &ett_gsm_map_lcs_LCS_QoS, + &ett_gsm_map_lcs_ResponseTime, + &ett_gsm_map_lcs_SupportedGADShapes, + &ett_gsm_map_lcs_LCSCodeword, + &ett_gsm_map_lcs_LCS_PrivacyCheck, + &ett_gsm_map_lcs_AreaEventInfo, + &ett_gsm_map_lcs_AreaDefinition, + &ett_gsm_map_lcs_AreaList, + &ett_gsm_map_lcs_Area, + &ett_gsm_map_lcs_PeriodicLDRInfo, + &ett_gsm_map_lcs_ReportingPLMNList, + &ett_gsm_map_lcs_PLMNList, + &ett_gsm_map_lcs_ReportingPLMN, + &ett_gsm_map_lcs_ProvideSubscriberLocation_Res, + &ett_gsm_map_lcs_SubscriberLocationReport_Arg, + &ett_gsm_map_lcs_Deferredmt_lrData, + &ett_gsm_map_lcs_ServingNodeAddress, + &ett_gsm_map_lcs_SubscriberLocationReport_Res, + +/* --- Module MAP-GR-DataTypes --- --- --- */ + + &ett_gsm_map_gr_PrepareGroupCallArg, + &ett_gsm_map_gr_PrepareGroupCallRes, + &ett_gsm_map_gr_SendGroupCallEndSignalArg, + &ett_gsm_map_gr_SendGroupCallEndSignalRes, + &ett_gsm_map_gr_ForwardGroupCallSignallingArg, + &ett_gsm_map_gr_ProcessGroupCallSignallingArg, + &ett_gsm_map_gr_StateAttributes, + &ett_gsm_map_gr_SendGroupCallInfoArg, + &ett_gsm_map_gr_SendGroupCallInfoRes, + +/* --- Module MAP-DialogueInformation --- --- --- */ + + &ett_gsm_map_dialogue_MAP_DialoguePDU, + &ett_gsm_map_dialogue_MAP_OpenInfo, + &ett_gsm_map_dialogue_MAP_AcceptInfo, + &ett_gsm_map_dialogue_MAP_CloseInfo, + &ett_gsm_map_dialogue_MAP_RefuseInfo, + &ett_gsm_map_dialogue_MAP_UserAbortInfo, + &ett_gsm_map_dialogue_MAP_UserAbortChoice, + &ett_gsm_map_dialogue_MAP_ProviderAbortInfo, + +/* --- Module MAP-LocationServiceOperations --- --- --- */ + + +/* --- Module MAP-Group-Call-Operations --- --- --- */ + + +/* --- Module MAP-ShortMessageServiceOperations --- --- --- */ + + +/* --- Module MAP-SupplementaryServiceOperations --- --- --- */ + + +/* --- Module MAP-CallHandlingOperations --- --- --- */ + + +/* --- Module MAP-OperationAndMaintenanceOperations --- --- --- */ + + +/* --- Module MAP-MobileServiceOperations --- --- --- */ + + +/* --- Module MAP-Errors --- --- --- */ + + +/* --- Module MAP-Protocol --- --- --- */ + + +/* --- Module DummyMAP --- --- --- */ + + &ett_gsm_old_Component, + &ett_gsm_old_Invoke, + &ett_gsm_old_ReturnResult, + &ett_gsm_old_T_resultretres, + &ett_gsm_old_ReturnError, + &ett_gsm_old_Reject, + &ett_gsm_old_T_invokeIDRej, + &ett_gsm_old_T_problem, + &ett_gsm_old_MAP_OPERATION, + &ett_gsm_old_MAP_ERROR, + &ett_gsm_old_Bss_APDU, + &ett_gsm_old_ProvideSIWFSNumberArg, + &ett_gsm_old_ProvideSIWFSNumberRes, + &ett_gsm_old_PurgeMSArgV2, + &ett_gsm_old_PrepareHO_ArgOld, + &ett_gsm_old_PrepareHO_ResOld, + &ett_gsm_old_SendAuthenticationInfoResOld, + &ett_gsm_old_SendAuthenticationInfoResOld_item, + &ett_gsm_old_SendIdentificationResV2, + &ett_gsm_old_TripletListold, + &ett_gsm_old_AuthenticationTriplet_v2, + &ett_gsm_old_SIWFSSignallingModifyArg, + &ett_gsm_old_SIWFSSignallingModifyRes, + &ett_gsm_old_SecureTransportArg, + &ett_gsm_old_SecureTransportErrorParam, + &ett_gsm_old_SecureTransportRes, + &ett_gsm_old_SecurityHeader, + &ett_gsm_old_OriginalComponentIdentifier, + &ett_gsm_old_OperationCode, + &ett_gsm_old_ErrorCode, + &ett_gsm_old_PlmnContainer_U, + &ett_gsm_old_T_operatorSS_Code, + &ett_gsm_old_ForwardSM_Arg, + &ett_gsm_old_SM_RP_DAold, + &ett_gsm_old_SM_RP_OAold, + &ett_gsm_old_SendRoutingInfoArgV2, + &ett_gsm_old_SendRoutingInfoResV2, + &ett_gsm_old_BeginSubscriberActivityArg, + &ett_gsm_old_RoutingInfoForSM_ArgV1, + &ett_gsm_old_RoutingInfoForSM_ResV2, + &ett_gsm_old_LocationInfoWithLMSIv2, + &ett_gsm_old_LocationInfo, + &ett_gsm_old_SendParametersArg, + &ett_gsm_old_RequestParameterList, + &ett_gsm_old_SentParameter, + &ett_gsm_old_AuthenticationSetListOld, + &ett_gsm_old_SentParameterList, + &ett_gsm_old_ResetArgV1, + +/* --- Module SS-DataTypes --- --- --- */ + + &ett_gsm_ss_NotifySS_Arg, + &ett_gsm_ss_ForwardChargeAdviceArg, + &ett_gsm_ss_ChargingInformation, + &ett_gsm_ss_ForwardCUG_InfoArg, + &ett_gsm_ss_ECT_Indicator, + &ett_gsm_ss_NameIndicator, + &ett_gsm_ss_Name, + &ett_gsm_ss_NameSet, + &ett_gsm_ss_RDN, + &ett_gsm_ss_RemotePartyNumber, + &ett_gsm_ss_AccessRegisterCCEntryArg, + &ett_gsm_ss_CallDeflectionArg, + &ett_gsm_ss_UserUserServiceArg, + &ett_gsm_ss_LocationNotificationArg, + &ett_gsm_ss_DeferredLocationExt, + &ett_gsm_ss_LocationNotificationRes, + &ett_gsm_ss_LCS_MOLRArg, + &ett_gsm_ss_MultiplePositioningProtocolPDUs, + &ett_gsm_ss_LCS_MOLRRes, + &ett_gsm_ss_LCS_AreaEventRequestArg, + &ett_gsm_ss_LCS_AreaEventReportArg, + &ett_gsm_ss_LCS_AreaEventCancellationArg, + &ett_gsm_ss_LCS_PeriodicLocationRequestArg, + &ett_gsm_ss_LCS_PeriodicLocationRequestRes, + &ett_gsm_ss_LCS_LocationUpdateArg, + &ett_gsm_ss_LCS_LocationUpdateRes, + &ett_gsm_ss_LCS_PeriodicLocationCancellationArg, + &ett_gsm_ss_LCS_PeriodicTriggeredInvokeArg, + &ett_gsm_ss_PeriodicLocation, + &ett_gsm_ss_AreaEventReporting, + &ett_gsm_ss_AreaList, + &ett_gsm_ss_Area, + &ett_gsm_ss_Location_Info, + &ett_gsm_ss_MotionEventReporting, + &ett_gsm_ss_LCS_PeriodicTriggeredInvokeRes, + +/* --- Module SS-Operations --- --- --- */ + + +/* --- Module EricssonMAP --- --- --- */ + + &ett_gsm_map_ericsson_EnhancedCheckIMEI_Arg, + &ett_gsm_map_ericsson_ExtensionType, + &ett_gsm_map_ericsson_IsdArgType, + &ett_gsm_map_ericsson_IsdArgData, + &ett_gsm_map_ericsson_PrivateFeatureData, + &ett_gsm_map_ericsson_OickInfo, + &ett_gsm_map_ericsson_SubscriptionTypeInfo, + &ett_gsm_map_ericsson_IsdResType, + &ett_gsm_map_ericsson_IsdResData, + &ett_gsm_map_ericsson_DsdArgType, + &ett_gsm_map_ericsson_DsdArgData, + &ett_gsm_map_ericsson_SRIArgType, + &ett_gsm_map_ericsson_SriArgData, + &ett_gsm_map_ericsson_SRIResType, + &ett_gsm_map_ericsson_SriResData, + &ett_gsm_map_ericsson_PrnArgType, + &ett_gsm_map_ericsson_PrnArgData, + &ett_gsm_map_ericsson_UlArgType, + &ett_gsm_map_ericsson_UlArgData, + &ett_gsm_map_ericsson_PrivateFeatureUlArgData, + &ett_gsm_map_ericsson_ExtraSignalInfo_U, + &ett_gsm_map_ericsson_SaiArgType, + &ett_gsm_map_ericsson_SaiResType, + &ett_gsm_map_ericsson_AtiArgType, + &ett_gsm_map_ericsson_AtiResType, + &ett_gsm_map_ericsson_RdArgType, + &ett_gsm_map_ericsson_RequestedInfoType, + &ett_gsm_map_ericsson_ExtAtiArgType, + &ett_gsm_map_ericsson_AtiArgData, + +/* --- Module NokiaMAP-Extensions --- --- --- */ + + &ett_NokiaMAP_Extensions_IsdArgExt_U, + &ett_NokiaMAP_Extensions_DsdArgExt_U, + &ett_NokiaMAP_Extensions_UlResExt_U, + &ett_NokiaMAP_Extensions_ChargingAreaList, + &ett_NokiaMAP_Extensions_RegionalChargingData, + &ett_NokiaMAP_Extensions_SS_DataExtension_U, + &ett_NokiaMAP_Extensions_SriExtension_U, + &ett_NokiaMAP_Extensions_ExtraSignalInfo_U, + &ett_NokiaMAP_Extensions_Nokia_CUG_Data, + &ett_NokiaMAP_Extensions_SriResExtension_U, + &ett_NokiaMAP_Extensions_RgData, + &ett_NokiaMAP_Extensions_MemberList, + &ett_NokiaMAP_Extensions_CanLocArgExt_U, + &ett_NokiaMAP_Extensions_ATMargExt_U, + &ett_NokiaMAP_Extensions_OlcmInfoTable, + &ett_NokiaMAP_Extensions_OlcmInfo, + &ett_NokiaMAP_Extensions_ATMresExt_U, + &ett_NokiaMAP_Extensions_DTMargExt_U, + &ett_NokiaMAP_Extensions_FraudInfo, + &ett_NokiaMAP_Extensions_FraudData, + &ett_NokiaMAP_Extensions_ServiceWithInfo, + &ett_NokiaMAP_Extensions_ServiceListWithInfo, + &ett_NokiaMAP_Extensions_INKey, + &ett_NokiaMAP_Extensions_MKey, + &ett_NokiaMAP_Extensions_SMSKey, + &ett_NokiaMAP_Extensions_HO_Ext_U, + &ett_NokiaMAP_Extensions_CodecListExt, + &ett_NokiaMAP_Extensions_SelectedCodec, + &ett_NokiaMAP_Extensions_AbsentSubscriberExt_U, + &ett_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U, + &ett_NokiaMAP_Extensions_RoutingCategoryExt_U, + &ett_NokiaMAP_Extensions_SriForSMArgExt_U, + &ett_NokiaMAP_Extensions_ReportSMDelStatArgExt_U, + &ett_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U, + &ett_NokiaMAP_Extensions_UdlArgExt_U, + &ett_NokiaMAP_Extensions_RoamNotAllowedExt_U, + &ett_NokiaMAP_Extensions_AnyTimeModArgExt_U, + &ett_NokiaMAP_Extensions_AccessTypeExt, + &ett_NokiaMAP_Extensions_AccessSubscriptionListExt, + &ett_NokiaMAP_Extensions_AllowedServiceData, + }; + + static ei_register_info ei[] = { + { &ei_gsm_map_unknown_sequence3, { "gsm_map.unknown.sequence3", PI_UNDECODED, PI_ERROR, "Unknown or not implemented [3] sequence", EXPFILL }}, + { &ei_gsm_map_unknown_sequence, { "gsm_map.unknown.sequence", PI_UNDECODED, PI_ERROR, "Unknown or not implemented sequence", EXPFILL }}, + { &ei_gsm_map_unknown_parameter, { "gsm_map.unknown.parameter", PI_UNDECODED, PI_ERROR, "Unknown or not implemented parameter", EXPFILL }}, + { &ei_gsm_map_unknown_invokeData, { "gsm_map.unknown.invokeData", PI_MALFORMED, PI_WARN, "Unknown invokeData", EXPFILL }}, + { &ei_gsm_map_undecoded, { "gsm_map.undecoded", PI_UNDECODED, PI_WARN, "If you want this decoded send the packet to Wireshark-dev", EXPFILL }}, + }; + + static const enum_val_t application_context_modes[] = { + {"Use Application Context from the trace", "Use application context from the trace", APPLICATON_CONTEXT_FROM_TRACE}, + {"Treat as AC 1", "Treat as AC 1", 1}, + {"Treat as AC 2", "Treat as AC 2", 2}, + {"Treat as AC 3", "Treat as AC 3", 3}, + {NULL, NULL, -1} + }; + + static tap_param gsm_map_stat_params[] = { + { PARAM_FILTER, "filter", "Filter", NULL, TRUE } + }; + + static stat_tap_table_ui gsm_map_stat_table = { + REGISTER_STAT_GROUP_TELEPHONY_GSM, + "MAP Operation", + "gsm_map", + "gsm_map,operation", + gsm_map_stat_init, + gsm_map_stat_packet, + gsm_map_stat_reset, + gsm_map_stat_free_table_item, + NULL, + sizeof(gsm_map_stat_fields)/sizeof(stat_tap_table_item), gsm_map_stat_fields, + sizeof(gsm_map_stat_params)/sizeof(tap_param), gsm_map_stat_params, + NULL, + 0 + }; + + /* Register protocol */ + proto_gsm_map_ms = proto_gsm_map_dialogue = proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME); + + map_handle = register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map); + register_dissector("gsm_map_sccp", dissect_gsm_map_sccp, proto_gsm_map); + + /* Register fields and subtrees */ + proto_register_field_array(proto_gsm_map, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + expert_gsm_map = expert_register_protocol(proto_gsm_map); + expert_register_field_array(expert_gsm_map, ei, array_length(ei)); + + register_dissector_table("gsm_map.v3.arg.opcode", "GSM_MAP V3 Arg Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + register_dissector_table("gsm_map.v3.res.opcode", "GSM_MAP V3 Res Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + + map_prop_arg_opcode_table = register_dissector_table("gsm_map.prop.arg.opcode", "GSM_MAP Proprietary Arg Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + map_prop_res_opcode_table = register_dissector_table("gsm_map.prop.res.opcode", "GSM_MAP Proprietary Res Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + map_prop_err_opcode_table = register_dissector_table("gsm_map.prop.err.opcode", "GSM_MAP Proprietary Err Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + + gsm_map_tap = register_tap("gsm_map"); + + +/* --- Module MAP-MS-DataTypes --- --- --- */ + + dissector_add_uint("gsm_map.v3.arg.opcode", 56, create_dissector_handle(dissect_gsm_map_ms_SendAuthenticationInfoArg_PDU, proto_gsm_map_ms)); + dissector_add_uint("gsm_map.v3.res.opcode", 56, create_dissector_handle(dissect_gsm_map_ms_SendAuthenticationInfoRes_PDU, proto_gsm_map_ms)); + + +/* --- Module MAP-CH-DataTypes --- --- --- */ + + + +/* --- Module MAP-LCS-DataTypes --- --- --- */ + + + +/* --- Module MAP-GR-DataTypes --- --- --- */ + + + +/* --- Module MAP-DialogueInformation --- --- --- */ + + register_ber_oid_dissector("0.4.0.0.1.1.1.1", dissect_gsm_map_dialogue_MAP_DialoguePDU_PDU, proto_gsm_map_dialogue, "map-DialogueAS"); + + +/* --- Module MAP-LocationServiceOperations --- --- --- */ + + + +/* --- Module MAP-Group-Call-Operations --- --- --- */ + + + +/* --- Module MAP-ShortMessageServiceOperations --- --- --- */ + + + +/* --- Module MAP-SupplementaryServiceOperations --- --- --- */ + + + +/* --- Module MAP-CallHandlingOperations --- --- --- */ + + + +/* --- Module MAP-OperationAndMaintenanceOperations --- --- --- */ + + + +/* --- Module MAP-MobileServiceOperations --- --- --- */ + + + +/* --- Module MAP-Errors --- --- --- */ + + + +/* --- Module MAP-Protocol --- --- --- */ + + + +/* --- Module DummyMAP --- --- --- */ + + + +/* --- Module SS-DataTypes --- --- --- */ + + + +/* --- Module SS-Operations --- --- --- */ + + + +/* --- Module EricssonMAP --- --- --- */ + + + +/* --- Module NokiaMAP-Extensions --- --- --- */ + + + oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" ); + oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2"); + /*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" ); + * + * Register our configuration options, particularly our ssn:s + * Set default SSNs + */ + range_convert_str(wmem_epan_scope(), &global_ssn_range, "6-9,145,148-150", MAX_SSN); + + gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map); + + prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs", + "TCAP Subsystem numbers used for GSM MAP", + &global_ssn_range, MAX_SSN); + + prefs_register_enum_preference(gsm_map_module, "application.context.version", + "Application context version", + "How to treat Application context", + &pref_application_context_version, application_context_modes, APPLICATON_CONTEXT_FROM_TRACE); + + prefs_register_bool_preference(gsm_map_module, "ericsson.proprietary.extensions", + "Dissect Ericsson proprietary extensions", + "When enabled, dissector will use the non 3GPP standard extensions from Ericsson (that can override the standard ones)", + &pref_ericsson_proprietary_ext); + + register_stat_tap_table_ui(&gsm_map_stat_table); +} + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * ex: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */ |