Fix up a bunch of arguments to "dissect_ber_identifier()" to match its
[obnox/wireshark/wip.git] / epan / dissectors / packet-gsm_map.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
3 /* .\packet-gsm_map.c                                                         */
4 /* ../../tools/asn2eth.py -X -b -e -p gsm_map -c gsmmap.cnf -s packet-gsm_map-template GSMMAP.asn */
5
6 /* Input file: packet-gsm_map-template.c */
7
8 /* packet-gsm_map-template.c
9  * Routines for GSM MobileApplication packet dissection
10  * Copyright 2004 - 2005 , Anders Broman <anders.broman [AT] ericsson.com>
11  * Based on the dissector by:
12  * Felix Fei <felix.fei [AT] utstar.com>
13  * and Michael Lum <mlum [AT] telostech.com>
14  *
15  * $Id$
16  *
17  * Ethereal - Network traffic analyzer
18  * By Gerald Combs <gerald@ethereal.com>
19  * Copyright 1998 Gerald Combs
20  *
21  * This program is free software; you can redistribute it and/or
22  * modify it under the terms of the GNU General Public License
23  * as published by the Free Software Foundation; either version 2
24  * of the License, or (at your option) any later version.
25  *
26  * This program is distributed in the hope that it will be useful,
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29  * GNU General Public License for more details.
30  *
31  * You should have received a copy of the GNU General Public License
32  * along with this program; if not, write to the Free Software
33  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
34  * References: ETSI TS 129 002
35  * Updated to ETSI TS 129 002 V6.9.0 (2005-3GPP TS 29.002 version 6.9.0 Release 6)
36  */
37
38 #ifdef HAVE_CONFIG_H
39 # include "config.h"
40 #endif
41
42 #include <glib.h>
43 #include <epan/packet.h>
44 #include <epan/prefs.h>
45 #include <epan/conversation.h>
46 #include <epan/tap.h>
47
48 #include <stdio.h>
49 #include <string.h>
50
51 #include "packet-ber.h"
52 #include "packet-q931.h"
53 #include "packet-gsm_map.h"
54 #include "packet-gsm_a.h"
55
56 #define PNAME  "GSM Mobile Application"
57 #define PSNAME "GSM_MAP"
58 #define PFNAME "gsm_map"
59
60 /* Initialize the protocol and registered fields */
61 int proto_gsm_map = -1;
62 static int hf_gsm_map_invokeCmd = -1;             /* Opcode */
63 static int hf_gsm_map_invokeid = -1;              /* INTEGER */
64 static int hf_gsm_map_absent = -1;                /* NULL */
65 static int hf_gsm_map_invokeId = -1;              /* InvokeId */
66 static int hf_gsm_map_invoke = -1;                /* InvokePDU */
67 static int hf_gsm_map_returnResult = -1;          /* InvokePDU */
68 static int hf_gsm_map_returnResult_result = -1;
69 static int hf_gsm_map_returnError_result = -1;
70 static int hf_gsm_map_returnError = -1;
71 static int hf_gsm_map_local_errorCode = -1;
72 static int hf_gsm_map_global_errorCode_oid = -1;
73 static int hf_gsm_map_global_errorCode = -1;
74 static int hf_gsm_map_SendAuthenticationInfoArg = -1;
75 static int hf_gsm_map_SendAuthenticationInfoRes = -1;
76 static int hf_gsm_mapSendEndSignal = -1;
77 static int hf_gsm_map_getPassword = -1;  
78 static int hf_gsm_map_currentPassword = -1;
79 static int hf_gsm_map_extension = -1;
80 static int hf_gsm_map_nature_of_number = -1;
81 static int hf_gsm_map_number_plan = -1;
82 static int hf_gsm_map_isdn_address_digits = -1;
83 static int hf_gsm_map_servicecentreaddress_digits = -1;
84 static int hf_gsm_map_imsi_digits = -1;
85 static int hf_gsm_map_Ss_Status_unused = -1;
86 static int hf_gsm_map_Ss_Status_q_bit = -1;
87 static int hf_gsm_map_Ss_Status_p_bit = -1;
88 static int hf_gsm_map_Ss_Status_r_bit = -1;
89 static int hf_gsm_map_Ss_Status_a_bit = -1;
90
91
92 /*--- Included file: packet-gsm_map-hf.c ---*/
93
94 static int hf_gsm_map_protocolId = -1;            /* ProtocolId */
95 static int hf_gsm_map_signalInfo = -1;            /* SignalInfo */
96 static int hf_gsm_map_extensionContainer = -1;    /* ExtensionContainer */
97 static int hf_gsm_map_imsi = -1;                  /* IMSI */
98 static int hf_gsm_map_msc_Number = -1;            /* ISDN_AddressString */
99 static int hf_gsm_map_vlr_Number = -1;            /* ISDN_AddressString */
100 static int hf_gsm_map_lmsi = -1;                  /* LMSI */
101 static int hf_gsm_map_vlr_Capability = -1;        /* VLR_Capability */
102 static int hf_gsm_map_informPreviousNetworkEntity = -1;  /* NULL */
103 static int hf_gsm_map_cs_LCS_NotSupportedByUE = -1;  /* NULL */
104 static int hf_gsm_map_v_gmlc_Address = -1;        /* GSN_Address */
105 static int hf_gsm_map_add_info = -1;              /* ADD_Info */
106 static int hf_gsm_map_hlr_Number = -1;            /* ISDN_AddressString */
107 static int hf_gsm_map_add_Capability = -1;        /* NULL */
108 static int hf_gsm_map_supportedCamelPhases = -1;  /* SupportedCamelPhases */
109 static int hf_gsm_map_solsaSupportIndicator = -1;  /* NULL */
110 static int hf_gsm_map_istSupportIndicator = -1;   /* IST_SupportIndicator */
111 static int hf_gsm_map_superChargerSupportedInServingNetworkEntity = -1;  /* SuperChargerInfo */
112 static int hf_gsm_map_longFTN_Supported = -1;     /* NULL */
113 static int hf_gsm_map_supportedLCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
114 static int hf_gsm_map_offeredCamel4CSIs = -1;     /* OfferedCamel4CSIs */
115 static int hf_gsm_map_sendSubscriberData = -1;    /* NULL */
116 static int hf_gsm_map_subscriberDataStored = -1;  /* AgeIndicator */
117 static int hf_gsm_map_imeisv = -1;                /* IMEI */
118 static int hf_gsm_map_skipSubscriberDataUpdate = -1;  /* NULL */
119 static int hf_gsm_map_PrivateExtensionList_item = -1;  /* PrivateExtension */
120 static int hf_gsm_map_extId = -1;                 /* OBJECT_IDENTIFIER */
121 static int hf_gsm_map_extType = -1;               /* T_extType */
122 static int hf_gsm_map_privateExtensionList = -1;  /* PrivateExtensionList */
123 static int hf_gsm_map_slr_Arg_PCS_Extensions = -1;  /* SLR_Arg_PCS_Extensions */
124 static int hf_gsm_map_na_ESRK_Request = -1;       /* NULL */
125 static int hf_gsm_map_identity = -1;              /* Identity */
126 static int hf_gsm_map_cancellationType = -1;      /* CancellationType */
127 static int hf_gsm_map_sgsn_Number = -1;           /* ISDN_AddressString */
128 static int hf_gsm_map_freezeTMSI = -1;            /* NULL */
129 static int hf_gsm_map_freezeP_TMSI = -1;          /* NULL */
130 static int hf_gsm_map_tmsi = -1;                  /* TMSI */
131 static int hf_gsm_map_numberOfRequestedVectors = -1;  /* NumberOfRequestedVectors */
132 static int hf_gsm_map_segmentationProhibited = -1;  /* NULL */
133 static int hf_gsm_map_previous_LAI = -1;          /* LAIFixedLength */
134 static int hf_gsm_map_hopCounter = -1;            /* HopCounter */
135 static int hf_gsm_map_authenticationSetList = -1;  /* AuthenticationSetList */
136 static int hf_gsm_map_currentSecurityContext = -1;  /* CurrentSecurityContext */
137 static int hf_gsm_map_tripletList = -1;           /* TripletList */
138 static int hf_gsm_map_quintupletList = -1;        /* QuintupletList */
139 static int hf_gsm_map_TripletList_item = -1;      /* AuthenticationTriplet */
140 static int hf_gsm_map_QuintupletList_item = -1;   /* AuthenticationQuintuplet */
141 static int hf_gsm_map_rand = -1;                  /* RAND */
142 static int hf_gsm_map_sres = -1;                  /* SRES */
143 static int hf_gsm_map_kc = -1;                    /* Kc */
144 static int hf_gsm_map_xres = -1;                  /* XRES */
145 static int hf_gsm_map_ck = -1;                    /* CK */
146 static int hf_gsm_map_ik = -1;                    /* IK */
147 static int hf_gsm_map_autn = -1;                  /* AUTN */
148 static int hf_gsm_map_gsm_SecurityContextData = -1;  /* GSM_SecurityContextData */
149 static int hf_gsm_map_umts_SecurityContextData = -1;  /* UMTS_SecurityContextData */
150 static int hf_gsm_map_cksn = -1;                  /* Cksn */
151 static int hf_gsm_map_ksi = -1;                   /* KSI */
152 static int hf_gsm_map_targetCellId = -1;          /* GlobalCellId */
153 static int hf_gsm_map_ho_NumberNotRequired = -1;  /* NULL */
154 static int hf_gsm_map_bss_APDU = -1;              /* Bss_APDU */
155 static int hf_gsm_map_targetRNCId = -1;           /* RNCId */
156 static int hf_gsm_map_an_APDU = -1;               /* AccessNetworkSignalInfo */
157 static int hf_gsm_map_multipleBearerRequested = -1;  /* NULL */
158 static int hf_gsm_map_integrityProtectionInfo = -1;  /* IntegrityProtectionInformation */
159 static int hf_gsm_map_encryptionInfo = -1;        /* EncryptionInformation */
160 static int hf_gsm_map_radioResourceInformation = -1;  /* RadioResourceInformation */
161 static int hf_gsm_map_allowedGSM_Algorithms = -1;  /* AllowedGSM_Algorithms */
162 static int hf_gsm_map_allowedUMTS_Algorithms = -1;  /* AllowedUMTS_Algorithms */
163 static int hf_gsm_map_radioResourceList = -1;     /* RadioResourceList */
164 static int hf_gsm_map_rab_Id = -1;                /* RAB_Id */
165 static int hf_gsm_map_bssmap_ServiceHandover = -1;  /* BSSMAP_ServiceHandover */
166 static int hf_gsm_map_ranap_ServiceHandover = -1;  /* RANAP_ServiceHandover */
167 static int hf_gsm_map_bssmap_ServiceHandoverList = -1;  /* BSSMAP_ServiceHandoverList */
168 static int hf_gsm_map_asciCallReference = -1;     /* ASCI_CallReference */
169 static int hf_gsm_map_geran_classmark = -1;       /* GERAN_Classmark */
170 static int hf_gsm_map_iuCurrentlyUsedCodec = -1;  /* Codec */
171 static int hf_gsm_map_iuSupportedCodecsList = -1;  /* SupportedCodecsList */
172 static int hf_gsm_map_rab_ConfigurationIndicator = -1;  /* NULL */
173 static int hf_gsm_map_uesbi_Iu = -1;              /* UESBI_Iu */
174 static int hf_gsm_map_BSSMAP_ServiceHandoverList_item = -1;  /* BSSMAP_ServiceHandoverInfo */
175 static int hf_gsm_map_RadioResourceList_item = -1;  /* RadioResource */
176 static int hf_gsm_map_handoverNumber = -1;        /* ISDN_AddressString */
177 static int hf_gsm_map_relocationNumberList = -1;  /* RelocationNumberList */
178 static int hf_gsm_map_multicallBearerInfo = -1;   /* MulticallBearerInfo */
179 static int hf_gsm_map_multipleBearerNotSupported = -1;  /* NULL */
180 static int hf_gsm_map_selectedUMTS_Algorithms = -1;  /* SelectedUMTS_Algorithms */
181 static int hf_gsm_map_chosenRadioResourceInformation = -1;  /* ChosenRadioResourceInformation */
182 static int hf_gsm_map_iuSelectedCodec = -1;       /* Codec */
183 static int hf_gsm_map_iuAvailableCodecsList = -1;  /* CodecList */
184 static int hf_gsm_map_integrityProtectionAlgorithm = -1;  /* ChosenIntegrityProtectionAlgorithm */
185 static int hf_gsm_map_encryptionAlgorithm = -1;   /* ChosenEncryptionAlgorithm */
186 static int hf_gsm_map_chosenChannelInfo = -1;     /* ChosenChannelInfo */
187 static int hf_gsm_map_chosenSpeechVersion = -1;   /* ChosenSpeechVersion */
188 static int hf_gsm_map_RelocationNumberList_item = -1;  /* RelocationNumber */
189 static int hf_gsm_map_selectedGSM_Algorithm = -1;  /* SelectedGSM_Algorithm */
190 static int hf_gsm_map_selectedRab_Id = -1;        /* RAB_Id */
191 static int hf_gsm_map_iUSelectedCodec = -1;       /* Codec */
192 static int hf_gsm_map_utranCodecList = -1;        /* CodecList */
193 static int hf_gsm_map_geranCodecList = -1;        /* CodecList */
194 static int hf_gsm_map_codec1 = -1;                /* Codec */
195 static int hf_gsm_map_codec2 = -1;                /* Codec */
196 static int hf_gsm_map_codec3 = -1;                /* Codec */
197 static int hf_gsm_map_codec4 = -1;                /* Codec */
198 static int hf_gsm_map_codec5 = -1;                /* Codec */
199 static int hf_gsm_map_codec6 = -1;                /* Codec */
200 static int hf_gsm_map_codec7 = -1;                /* Codec */
201 static int hf_gsm_map_codec8 = -1;                /* Codec */
202 static int hf_gsm_map_keyStatus = -1;             /* KeyStatus */
203 static int hf_gsm_map_currentlyUsedCodec = -1;    /* Codec */
204 static int hf_gsm_map_integrityProtectionAlgorithms = -1;  /* PermittedIntegrityProtectionAlgorithms */
205 static int hf_gsm_map_encryptionAlgorithms = -1;  /* PermittedEncryptionAlgorithms */
206 static int hf_gsm_map_targetMSC_Number = -1;      /* ISDN_AddressString */
207 static int hf_gsm_map_immediateResponsePreferred = -1;  /* NULL */
208 static int hf_gsm_map_re_synchronisationInfo = -1;  /* Re_synchronisationInfo */
209 static int hf_gsm_map_requestingNodeType = -1;    /* RequestingNodeType */
210 static int hf_gsm_map_requestingPLMN_Id = -1;     /* PLMN_Id */
211 static int hf_gsm_map_SendAuthenticationInfoRes_item = -1;  /* SendAuthenticationInfoRes_item */
212 static int hf_gsm_map_auts = -1;                  /* AUTS */
213 static int hf_gsm_map_imei = -1;                  /* IMEI */
214 static int hf_gsm_map_requestedEquipmentInfo = -1;  /* RequestedEquipmentInfo */
215 static int hf_gsm_map_equipmentStatus = -1;       /* EquipmentStatus */
216 static int hf_gsm_map_bmuef = -1;                 /* UESBI_Iu */
217 static int hf_gsm_map_uesbi_IuA = -1;             /* UESBI_IuA */
218 static int hf_gsm_map_uesbi_IuB = -1;             /* UESBI_IuB */
219 static int hf_gsm_map_bearerservice = -1;         /* Bearerservice */
220 static int hf_gsm_map_teleservice = -1;           /* Teleservice */
221 static int hf_gsm_map_BasicServiceGroupList_item = -1;  /* BasicService */
222 static int hf_gsm_map_bcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
223 static int hf_gsm_map_serviceKey = -1;            /* ServiceKey */
224 static int hf_gsm_map_gsmSCFAddress = -1;         /* GsmSCF_Address */
225 static int hf_gsm_map_defaultCallHandling = -1;   /* DefaultCallHandling */
226 static int hf_gsm_map_BcsmCamelTDPDataList_item = -1;  /* BcsmCamelTDPData */
227 static int hf_gsm_map_o_BcsmCamelTDPDataList = -1;  /* O_BcsmCamelTDPDataList */
228 static int hf_gsm_map_camelCapabilityHandling = -1;  /* CamelCapabilityHandling */
229 static int hf_gsm_map_notificationToCSE = -1;     /* NULL */
230 static int hf_gsm_map_csiActive = -1;             /* NULL */
231 static int hf_gsm_map_O_BcsmCamelTDPDataList_item = -1;  /* O_BcsmCamelTDPData */
232 static int hf_gsm_map_o_BcsmTriggerDetectionPoint = -1;  /* O_BcsmTriggerDetectionPoint */
233 static int hf_gsm_map_gsmSCF_Address = -1;        /* ISDN_AddressString */
234 static int hf_gsm_map_msisdn = -1;                /* ISDN_AddressString */
235 static int hf_gsm_map_category = -1;              /* Category */
236 static int hf_gsm_map_subscriberStatus = -1;      /* SubscriberStatus */
237 static int hf_gsm_map_bearerserviceList = -1;     /* BearerServiceList */
238 static int hf_gsm_map_teleserviceList = -1;       /* TeleserviceList */
239 static int hf_gsm_map_provisionedSS = -1;         /* Ext_SS_InfoList */
240 static int hf_gsm_map_odb_Data = -1;              /* ODB_Data */
241 static int hf_gsm_map_roamingRestrictionDueToUnsupportedFeature = -1;  /* NULL */
242 static int hf_gsm_map_regionalSubscriptionData = -1;  /* ZoneCodeList */
243 static int hf_gsm_map_vbsSubscriptionData = -1;   /* VBSDataList */
244 static int hf_gsm_map_vgcsSubscriptionData = -1;  /* VGCSDataList */
245 static int hf_gsm_map_vlrCamelSubscriptionInfo = -1;  /* VlrCamelSubscriptionInfo */
246 static int hf_gsm_map_naea_PreferredCI = -1;      /* NAEA_PreferredCI */
247 static int hf_gsm_map_gprsSubscriptionData = -1;  /* GPRSSubscriptionData */
248 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature = -1;  /* NULL */
249 static int hf_gsm_map_networkAccessMode = -1;     /* NetworkAccessMode */
250 static int hf_gsm_map_lsaInformation = -1;        /* LSAInformation */
251 static int hf_gsm_map_lmu_Indicator = -1;         /* NULL */
252 static int hf_gsm_map_lcsInformation = -1;        /* LCSInformation */
253 static int hf_gsm_map_istAlertTimer = -1;         /* IST_AlertTimerValue */
254 static int hf_gsm_map_superChargerSupportedInHLR = -1;  /* AgeIndicator */
255 static int hf_gsm_map_mc_SS_Info = -1;            /* MC_SS_Info */
256 static int hf_gsm_map_cs_AllocationRetentionPriority = -1;  /* CS_AllocationRetentionPriority */
257 static int hf_gsm_map_sgsn_CAMEL_SubscriptionInfo = -1;  /* SGSN_CAMEL_SubscriptionInfo */
258 static int hf_gsm_map_chargingCharacteristics = -1;  /* ChargingCharacteristics */
259 static int hf_gsm_map_accessRestrictionData = -1;  /* AccessRestrictionData */
260 static int hf_gsm_map_gmlc_List = -1;             /* GMLC_List */
261 static int hf_gsm_map_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
262 static int hf_gsm_map_molr_List = -1;             /* MOLR_List */
263 static int hf_gsm_map_add_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
264 static int hf_gsm_map_GMLC_List_item = -1;        /* ISDN_AddressString */
265 static int hf_gsm_map_GPRSDataList_item = -1;     /* PDP_Context */
266 static int hf_gsm_map_pdp_ContextId = -1;         /* ContextId */
267 static int hf_gsm_map_pdp_Type = -1;              /* PDP_Type */
268 static int hf_gsm_map_pdp_Address = -1;           /* PDP_Address */
269 static int hf_gsm_map_qos_Subscribed = -1;        /* QoS_Subscribed */
270 static int hf_gsm_map_vplmnAddressAllowed = -1;   /* NULL */
271 static int hf_gsm_map_apn = -1;                   /* APN */
272 static int hf_gsm_map_ext_QoS_Subscribed = -1;    /* Ext_QoS_Subscribed */
273 static int hf_gsm_map_pdp_ChargingCharacteristics = -1;  /* ChargingCharacteristics */
274 static int hf_gsm_map_ext2_QoS_Subscribed = -1;   /* Ext2_QoS_Subscribed */
275 static int hf_gsm_map_completeDataListIncluded = -1;  /* NULL */
276 static int hf_gsm_map_gprsDataList = -1;          /* GPRSDataList */
277 static int hf_gsm_map_gprs_CSI = -1;              /* GPRS_CSI */
278 static int hf_gsm_map_mo_sms_CSI = -1;            /* SMS_CSI */
279 static int hf_gsm_map_mt_sms_CSI = -1;            /* SMS_CSI */
280 static int hf_gsm_map_mt_smsCAMELTDP_CriteriaList = -1;  /* MT_smsCAMELTDP_CriteriaList */
281 static int hf_gsm_map_mg_csi = -1;                /* MG_CSI */
282 static int hf_gsm_map_gprs_CamelTDPDataList = -1;  /* GPRS_CamelTDPDataList */
283 static int hf_gsm_map_csi_Active = -1;            /* NULL */
284 static int hf_gsm_map_GPRS_CamelTDPDataList_item = -1;  /* GPRS_CamelTDPData */
285 static int hf_gsm_map_gprs_TriggerDetectionPoint = -1;  /* GPRS_TriggerDetectionPoint */
286 static int hf_gsm_map_defaultSessionHandling = -1;  /* DefaultGPRS_Handling */
287 static int hf_gsm_map_LSADataList_item = -1;      /* LSAData */
288 static int hf_gsm_map_lsaIdentity = -1;           /* LSAIdentity */
289 static int hf_gsm_map_lsaAttributes = -1;         /* LSAAttributes */
290 static int hf_gsm_map_lsaActiveModeIndicator = -1;  /* NULL */
291 static int hf_gsm_map_lsaOnlyAccessIndicator = -1;  /* LSAOnlyAccessIndicator */
292 static int hf_gsm_map_lsaDataList = -1;           /* LSADataList */
293 static int hf_gsm_map_bearerServiceList = -1;     /* BearerServiceList */
294 static int hf_gsm_map_ss_List = -1;               /* SS_List */
295 static int hf_gsm_map_odb_GeneralData = -1;       /* ODB_GeneralData */
296 static int hf_gsm_map_regionalSubscriptionResponse = -1;  /* RegionalSubscriptionResponse */
297 static int hf_gsm_map_basicServiceList = -1;      /* BasicServiceList */
298 static int hf_gsm_map_regionalSubscriptionIdentifier = -1;  /* ZoneCode */
299 static int hf_gsm_map_vbsGroupIndication = -1;    /* NULL */
300 static int hf_gsm_map_vgcsGroupIndication = -1;   /* NULL */
301 static int hf_gsm_map_camelSubscriptionInfoWithdraw = -1;  /* NULL */
302 static int hf_gsm_map_gprsSubscriptionDataWithdraw = -1;  /* GPRSSubscriptionDataWithdraw */
303 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1;  /* NULL */
304 static int hf_gsm_map_lsaInformationWithdraw = -1;  /* LSAInformationWithdraw */
305 static int hf_gsm_map_gmlc_ListWithdraw = -1;     /* NULL */
306 static int hf_gsm_map_istInformationWithdraw = -1;  /* NULL */
307 static int hf_gsm_map_specificCSI_Withdraw = -1;  /* SpecificCSI_Withdraw */
308 static int hf_gsm_map_chargingCharacteristicsWithdraw = -1;  /* NULL */
309 static int hf_gsm_map_allGPRSData = -1;           /* NULL */
310 static int hf_gsm_map_contextIdList = -1;         /* ContextIdList */
311 static int hf_gsm_map_ContextIdList_item = -1;    /* ContextId */
312 static int hf_gsm_map_allLSAData = -1;            /* NULL */
313 static int hf_gsm_map_lsaIdentityList = -1;       /* LSAIdentityList */
314 static int hf_gsm_map_LSAIdentityList_item = -1;  /* LSAIdentity */
315 static int hf_gsm_map_BasicServiceList_item = -1;  /* Ext_BasicServiceCode */
316 static int hf_gsm_map_o_CSI = -1;                 /* O_CSI */
317 static int hf_gsm_map_ss_CSI = -1;                /* SS_CSI */
318 static int hf_gsm_map_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
319 static int hf_gsm_map_tif_CSI = -1;               /* NULL */
320 static int hf_gsm_map_m_CSI = -1;                 /* M_CSI */
321 static int hf_gsm_map_vt_CSI = -1;                /* T_CSI */
322 static int hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
323 static int hf_gsm_map_d_CSI = -1;                 /* D_CSI */
324 static int hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item = -1;  /* MT_smsCAMELTDP_Criteria */
325 static int hf_gsm_map_sms_TriggerDetectionPoint = -1;  /* SMS_TriggerDetectionPoint */
326 static int hf_gsm_map_tpdu_TypeCriterion = -1;    /* TPDU_TypeCriterion */
327 static int hf_gsm_map_TPDU_TypeCriterion_item = -1;  /* MT_SMS_TPDU_Type */
328 static int hf_gsm_map_dp_AnalysedInfoCriteriaList = -1;  /* DP_AnalysedInfoCriteriaList */
329 static int hf_gsm_map_DP_AnalysedInfoCriteriaList_item = -1;  /* DP_AnalysedInfoCriterium */
330 static int hf_gsm_map_dialledNumber = -1;         /* ISDN_AddressString */
331 static int hf_gsm_map_ss_CamelData = -1;          /* SS_CamelData */
332 static int hf_gsm_map_ss_EventList = -1;          /* SS_EventList */
333 static int hf_gsm_map_mobilityTriggers = -1;      /* MobilityTriggers */
334 static int hf_gsm_map_BearerServiceList_item = -1;  /* Ext_BearerServiceCode */
335 static int hf_gsm_map_TeleserviceList_item = -1;  /* Ext_TeleserviceCode */
336 static int hf_gsm_map_Ext_SS_InfoList_item = -1;  /* Ext_SS_Info */
337 static int hf_gsm_map_ext_forwardingInfo = -1;    /* Ext_ForwInfo */
338 static int hf_gsm_map_ext_callBarringInfo = -1;   /* Ext_CallBarInfo */
339 static int hf_gsm_map_cug_Info = -1;              /* CUG_Info */
340 static int hf_gsm_map_ext_ss_Data = -1;           /* Ext_SS_Data */
341 static int hf_gsm_map_emlpp_Info = -1;            /* EMLPP_Info */
342 static int hf_gsm_map_ss_Code = -1;               /* SS_Code */
343 static int hf_gsm_map_ext_forwardingFeatureList = -1;  /* Ext_ForwFeatureList */
344 static int hf_gsm_map_Ext_ForwFeatureList_item = -1;  /* Ext_ForwFeature */
345 static int hf_gsm_map_ext_basicService = -1;      /* Ext_BasicServiceCode */
346 static int hf_gsm_map_ext_ss_Status = -1;         /* Ext_SS_Status */
347 static int hf_gsm_map_forwardedToNumber = -1;     /* ISDN_AddressString */
348 static int hf_gsm_map_forwardedToSubaddress = -1;  /* ISDN_SubaddressString */
349 static int hf_gsm_map_ext_forwardingOptions = -1;  /* Ext_ForwOptions */
350 static int hf_gsm_map_ext_noReplyConditionTime = -1;  /* Ext_NoRepCondTime */
351 static int hf_gsm_map_longForwardedToNumber = -1;  /* FTN_AddressString */
352 static int hf_gsm_map_ext_callBarringFeatureList = -1;  /* Ext_CallBarFeatureList */
353 static int hf_gsm_map_Ext_CallBarFeatureList_item = -1;  /* Ext_CallBarringFeature */
354 static int hf_gsm_map_ZoneCodeList_item = -1;     /* ZoneCode */
355 static int hf_gsm_map_maximumentitledPriority = -1;  /* EMLPP_Priority */
356 static int hf_gsm_map_defaultPriority = -1;       /* EMLPP_Priority */
357 static int hf_gsm_map_cug_SubscriptionList = -1;  /* CUG_SubscriptionList */
358 static int hf_gsm_map_cug_FeatureList = -1;       /* CUG_FeatureList */
359 static int hf_gsm_map_CUG_SubscriptionList_item = -1;  /* CUG_Subscription */
360 static int hf_gsm_map_cug_Index = -1;             /* CUG_Index */
361 static int hf_gsm_map_cug_Interlock = -1;         /* CUG_Interlock */
362 static int hf_gsm_map_intraCUG_Options = -1;      /* IntraCUG_Options */
363 static int hf_gsm_map_basicServiceGroupList = -1;  /* Ext_BasicServiceGroupList */
364 static int hf_gsm_map_CUG_FeatureList_item = -1;  /* CUG_Feature */
365 static int hf_gsm_map_Ext_BasicServiceGroupList_item = -1;  /* Ext_BasicServiceCode */
366 static int hf_gsm_map_preferentialCUG_Indicator = -1;  /* CUG_Index */
367 static int hf_gsm_map_interCUG_Restrictions = -1;  /* InterCUG_Restrictions */
368 static int hf_gsm_map_ss_SubscriptionOption = -1;  /* SS_SubscriptionOption */
369 static int hf_gsm_map_LCS_PrivacyExceptionList_item = -1;  /* LCS_PrivacyClass */
370 static int hf_gsm_map_notificationToMSUser = -1;  /* NotificationToMSUser */
371 static int hf_gsm_map_externalClientList = -1;    /* ExternalClientList */
372 static int hf_gsm_map_plmnClientList = -1;        /* PLMNClientList */
373 static int hf_gsm_map_ext_externalClientList = -1;  /* Ext_ExternalClientList */
374 static int hf_gsm_map_serviceTypeList = -1;       /* ServiceTypeList */
375 static int hf_gsm_map_ExternalClientList_item = -1;  /* ExternalClient */
376 static int hf_gsm_map_PLMNClientList_item = -1;   /* LCSClientInternalID */
377 static int hf_gsm_map_Ext_ExternalClientList_item = -1;  /* ExternalClient */
378 static int hf_gsm_map_clientIdentity = -1;        /* LCSClientExternalID */
379 static int hf_gsm_map_gmlc_Restriction = -1;      /* GMLC_Restriction */
380 static int hf_gsm_map_ServiceTypeList_item = -1;  /* ServiceType */
381 static int hf_gsm_map_serviceTypeIdentity = -1;   /* LCSServiceTypeID */
382 static int hf_gsm_map_MOLR_List_item = -1;        /* MOLR_Class */
383 static int hf_gsm_map_CallBarringFeatureList_item = -1;  /* CallBarringFeature */
384 static int hf_gsm_map_basicService = -1;          /* BasicServiceCode */
385 static int hf_gsm_map_ss_Status = -1;             /* SS_Status */
386 static int hf_gsm_map_ForwardingFeatureList_item = -1;  /* ForwardingFeature */
387 static int hf_gsm_map_forwardingOptions = -1;     /* ForwardingOptions */
388 static int hf_gsm_map_noReplyConditionTime = -1;  /* NoReplyConditionTime */
389 static int hf_gsm_map_matchType = -1;             /* MatchType */
390 static int hf_gsm_map_destinationNumberList = -1;  /* DestinationNumberList */
391 static int hf_gsm_map_destinationNumberLengthList = -1;  /* DestinationNumberLengthList */
392 static int hf_gsm_map_DestinationNumberList_item = -1;  /* ISDN_AddressString */
393 static int hf_gsm_map_DestinationNumberLengthList_item = -1;  /* INTEGER_1_15 */
394 static int hf_gsm_map_forwardingFeatureList = -1;  /* ForwardingFeatureList */
395 static int hf_gsm_map_callBarringFeatureList = -1;  /* CallBarringFeatureList */
396 static int hf_gsm_map_nbrSB = -1;                 /* MaxMC_Bearers */
397 static int hf_gsm_map_nbrUser = -1;               /* MC_Bearers */
398 static int hf_gsm_map_hlr_List = -1;              /* HLR_List */
399 static int hf_gsm_map_msNotReachable = -1;        /* NULL */
400 static int hf_gsm_map_VBSDataList_item = -1;      /* VoiceBroadcastData */
401 static int hf_gsm_map_VGCSDataList_item = -1;     /* VoiceGroupCallData */
402 static int hf_gsm_map_groupId = -1;               /* GroupId */
403 static int hf_gsm_map_groupid = -1;               /* GroupId */
404 static int hf_gsm_map_broadcastInitEntitlement = -1;  /* NULL */
405 static int hf_gsm_map_traceReference = -1;        /* OCTET_STRING_SIZE_1_2 */
406 static int hf_gsm_map_traceType = -1;             /* INTEGER_0_255 */
407 static int hf_gsm_map_omc_Id = -1;                /* OCTET_STRING_SIZE_1_20 */
408 static int hf_gsm_map_cug_CheckInfo = -1;         /* CUG_CheckInfo */
409 static int hf_gsm_map_numberOfForwarding = -1;    /* NumberOfForwarding */
410 static int hf_gsm_map_interrogationType = -1;     /* InterrogationType */
411 static int hf_gsm_map_or_Interrogation = -1;      /* NULL */
412 static int hf_gsm_map_or_Capability = -1;         /* OR_Phase */
413 static int hf_gsm_map_gmsc_OrGsmSCF_Address = -1;  /* ISDN_AddressString */
414 static int hf_gsm_map_callReferenceNumber = -1;   /* CallReferenceNumber */
415 static int hf_gsm_map_forwardingReason = -1;      /* ForwardingReason */
416 static int hf_gsm_map_ext_basicServiceGroup = -1;  /* Ext_BasicServiceCode */
417 static int hf_gsm_map_networkSignalInfo = -1;     /* ExternalSignalInfo */
418 static int hf_gsm_map_camelInfo = -1;             /* CamelInfo */
419 static int hf_gsm_map_suppressionOfAnnouncement = -1;  /* SuppressionOfAnnouncement */
420 static int hf_gsm_map_alertingPattern = -1;       /* AlertingPattern */
421 static int hf_gsm_map_ccbs_Call = -1;             /* NULL */
422 static int hf_gsm_map_supportedCCBS_Phase = -1;   /* SupportedCCBS_Phase */
423 static int hf_gsm_map_additionalSignalInfo = -1;  /* Ext_ExternalSignalInfo */
424 static int hf_gsm_map_pre_pagingSupported = -1;   /* NULL */
425 static int hf_gsm_map_callDiversionTreatmentIndicator = -1;  /* CallDiversionTreatmentIndicator */
426 static int hf_gsm_map_suppress_VT_CSI = -1;       /* NULL */
427 static int hf_gsm_map_suppressIncomingCallBarring = -1;  /* NULL */
428 static int hf_gsm_map_gsmSCF_InitiatedCall = -1;  /* NULL */
429 static int hf_gsm_map_basicServiceGroup2 = -1;    /* Ext_BasicServiceCode */
430 static int hf_gsm_map_networkSignalInfo2 = -1;    /* ExternalSignalInfo */
431 static int hf_gsm_map_extendedRoutingInfo = -1;   /* ExtendedRoutingInfo */
432 static int hf_gsm_map_cugSubscriptionFlag = -1;   /* NULL */
433 static int hf_gsm_map_subscriberInfo = -1;        /* SubscriberInfo */
434 static int hf_gsm_map_forwardingInterrogationRequired = -1;  /* NULL */
435 static int hf_gsm_map_vmsc_Address = -1;          /* ISDN_AddressString */
436 static int hf_gsm_map_ccbs_Indicators = -1;       /* CCBS_Indicators */
437 static int hf_gsm_map_numberPortabilityStatus = -1;  /* NumberPortabilityStatus */
438 static int hf_gsm_map_supportedCamelPhasesInVMSC = -1;  /* SupportedCamelPhases */
439 static int hf_gsm_map_offeredCamel4CSIsInVMSC = -1;  /* OfferedCamel4CSIs */
440 static int hf_gsm_map_routingInfo2 = -1;          /* RoutingInfo */
441 static int hf_gsm_map_ss_List2 = -1;              /* SS_List */
442 static int hf_gsm_map_basicService2 = -1;         /* Ext_BasicServiceCode */
443 static int hf_gsm_map_allowedServices = -1;       /* AllowedServices */
444 static int hf_gsm_map_unavailabilityCause = -1;   /* UnavailabilityCause */
445 static int hf_gsm_map_releaseResourcesSupported = -1;  /* NULL */
446 static int hf_gsm_map_ext_ProtocolId = -1;        /* Ext_ProtocolId */
447 static int hf_gsm_map_accessNetworkProtocolId = -1;  /* AccessNetworkProtocolId */
448 static int hf_gsm_map_longsignalInfo = -1;        /* LongSignalInfo */
449 static int hf_gsm_map_suppress_T_CSI = -1;        /* NULL */
450 static int hf_gsm_map_imsi_WithLMSI = -1;         /* IMSI_WithLMSI */
451 static int hf_gsm_map_HLR_List_item = -1;         /* HLR_Id */
452 static int hf_gsm_map_SS_List_item = -1;          /* SS_Code */
453 static int hf_gsm_map_naea_PreferredCIC = -1;     /* NAEA_CIC */
454 static int hf_gsm_map_externalAddress = -1;       /* ISDN_AddressString */
455 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength = -1;  /* CellGlobalIdOrServiceAreaIdFixedLength */
456 static int hf_gsm_map_laiFixedLength = -1;        /* LAIFixedLength */
457 static int hf_gsm_map_ccbs_Possible = -1;         /* NULL */
458 static int hf_gsm_map_keepCCBS_CallIndicator = -1;  /* NULL */
459 static int hf_gsm_map_roamingNumber = -1;         /* ISDN_AddressString */
460 static int hf_gsm_map_forwardingData = -1;        /* ForwardingData */
461 static int hf_gsm_map_routingInfo = -1;           /* RoutingInfo */
462 static int hf_gsm_map_camelRoutingInfo = -1;      /* CamelRoutingInfo */
463 static int hf_gsm_map_gmscCamelSubscriptionInfo = -1;  /* GmscCamelSubscriptionInfo */
464 static int hf_gsm_map_t_CSI = -1;                 /* T_CSI */
465 static int hf_gsm_map_d_csi = -1;                 /* D_CSI */
466 static int hf_gsm_map_ageOfLocationInformation = -1;  /* AgeOfLocationInformation */
467 static int hf_gsm_map_geographicalInformation = -1;  /* GeographicalInformation */
468 static int hf_gsm_map_vlr_number = -1;            /* ISDN_AddressString */
469 static int hf_gsm_map_locationNumber = -1;        /* LocationNumber */
470 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI = -1;  /* CellGlobalIdOrServiceAreaIdOrLAI */
471 static int hf_gsm_map_selectedLSA_Id = -1;        /* LSAIdentity */
472 static int hf_gsm_map_geodeticInformation = -1;   /* GeodeticInformation */
473 static int hf_gsm_map_currentLocationRetrieved = -1;  /* NULL */
474 static int hf_gsm_map_sai_Present = -1;           /* NULL */
475 static int hf_gsm_map_routeingAreaIdentity = -1;  /* RAIdentity */
476 static int hf_gsm_map_selectedLSAIdentity = -1;   /* LSAIdentity */
477 static int hf_gsm_map_assumedIdle = -1;           /* NULL */
478 static int hf_gsm_map_camelBusy = -1;             /* NULL */
479 static int hf_gsm_map_notProvidedFromVLR = -1;    /* NULL */
480 static int hf_gsm_map_notProvidedFromSGSN = -1;   /* NULL */
481 static int hf_gsm_map_ps_Detached = -1;           /* NULL */
482 static int hf_gsm_map_ps_AttachedNotReachableForPaging = -1;  /* NULL */
483 static int hf_gsm_map_ps_AttachedReachableForPaging = -1;  /* NULL */
484 static int hf_gsm_map_ps_PDP_ActiveNotReachableForPaging = -1;  /* PDP_ContextInfoList */
485 static int hf_gsm_map_ps_PDP_ActiveReachableForPaging = -1;  /* PDP_ContextInfoList */
486 static int hf_gsm_map_netDetNotReachable = -1;    /* NotReachableReason */
487 static int hf_gsm_map_PDP_ContextInfoList_item = -1;  /* PDP_ContextInfo */
488 static int hf_gsm_map_pdp_ContextIdentifier = -1;  /* ContextId */
489 static int hf_gsm_map_pdp_ContextActive = -1;     /* NULL */
490 static int hf_gsm_map_apn_Subscribed = -1;        /* APN */
491 static int hf_gsm_map_apn_InUse = -1;             /* APN */
492 static int hf_gsm_map_nsapi = -1;                 /* NSAPI */
493 static int hf_gsm_map_transactionId = -1;         /* TransactionId */
494 static int hf_gsm_map_teid_ForGnAndGp = -1;       /* TEID */
495 static int hf_gsm_map_teid_ForIu = -1;            /* TEID */
496 static int hf_gsm_map_ggsn_Address = -1;          /* GSN_Address */
497 static int hf_gsm_map_ext_qos_Subscribed = -1;    /* Ext_QoS_Subscribed */
498 static int hf_gsm_map_qos_Requested = -1;         /* Ext_QoS_Subscribed */
499 static int hf_gsm_map_qos_Negotiated = -1;        /* Ext_QoS_Subscribed */
500 static int hf_gsm_map_chargingId = -1;            /* GPRSChargingID */
501 static int hf_gsm_map_rnc_Address = -1;           /* GSN_Address */
502 static int hf_gsm_map_qos2_Subscribed = -1;       /* Ext2_QoS_Subscribed */
503 static int hf_gsm_map_qos2_Requested = -1;        /* Ext2_QoS_Subscribed */
504 static int hf_gsm_map_qos2_Negotiated = -1;       /* Ext2_QoS_Subscribed */
505 static int hf_gsm_map_cug_OutgoingAccess = -1;    /* NULL */
506 static int hf_gsm_map_gsm_BearerCapability = -1;  /* ExternalSignalInfo */
507 static int hf_gsm_map_gmsc_Address = -1;          /* ISDN_AddressString */
508 static int hf_gsm_map_supportedCamelPhasesInInterrogatingNode = -1;  /* SupportedCamelPhases */
509 static int hf_gsm_map_orNotSupportedInGMSC = -1;  /* NULL */
510 static int hf_gsm_map_offeredCamel4CSIsInInterrogatingNode = -1;  /* OfferedCamel4CSIs */
511 static int hf_gsm_map_uu_Data = -1;               /* UU_Data */
512 static int hf_gsm_map_allInformationSent = -1;    /* NULL */
513 static int hf_gsm_map_o_BcsmCamelTDPCriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
514 static int hf_gsm_map_uuIndicator = -1;           /* UUIndicator */
515 static int hf_gsm_map_uui = -1;                   /* UUI */
516 static int hf_gsm_map_uusCFInteraction = -1;      /* NULL */
517 static int hf_gsm_map_isdn_BearerCapability = -1;  /* ExternalSignalInfo */
518 static int hf_gsm_map_call_Direction = -1;        /* CallDirection */
519 static int hf_gsm_map_b_Subscriber_Address = -1;  /* ISDN_AddressString */
520 static int hf_gsm_map_chosenChannel = -1;         /* ExternalSignalInfo */
521 static int hf_gsm_map_lowerLayerCompatibility = -1;  /* ExternalSignalInfo */
522 static int hf_gsm_map_highLayerCompatibility = -1;  /* ExternalSignalInfo */
523 static int hf_gsm_map_sIWFSNumber = -1;           /* ISDN_AddressString */
524 static int hf_gsm_map_channelType = -1;           /* ExternalSignalInfo */
525 static int hf_gsm_map_ccbs_Monitoring = -1;       /* ReportingState */
526 static int hf_gsm_map_ccbs_SubscriberStatus = -1;  /* CCBS_SubscriberStatus */
527 static int hf_gsm_map_eventReportData = -1;       /* EventReportData */
528 static int hf_gsm_map_callReportdata = -1;        /* CallReportData */
529 static int hf_gsm_map_monitoringMode = -1;        /* MonitoringMode */
530 static int hf_gsm_map_callOutcome = -1;           /* CallOutcome */
531 static int hf_gsm_map_callTerminationIndicator = -1;  /* CallTerminationIndicator */
532 static int hf_gsm_map_msrn = -1;                  /* ISDN_AddressString */
533 static int hf_gsm_map_callInfo = -1;              /* ExternalSignalInfo */
534 static int hf_gsm_map_ccbs_Feature = -1;          /* CCBS_Feature */
535 static int hf_gsm_map_translatedB_Number = -1;    /* ISDN_AddressString */
536 static int hf_gsm_map_replaceB_Number = -1;       /* NULL */
537 static int hf_gsm_map_ruf_Outcome = -1;           /* Ruf_Outcome */
538 static int hf_gsm_map_ext_basicServiceGroupList = -1;  /* BasicServiceGroupList */
539 static int hf_gsm_map_cliRestrictionOption = -1;  /* CliRestrictionOption */
540 static int hf_gsm_map_overrideCategory = -1;      /* OverrideCategory */
541 static int hf_gsm_map_forwardedToNumber_addr = -1;  /* AddressString */
542 static int hf_gsm_map_forwardingInfo = -1;        /* ForwardingInfo */
543 static int hf_gsm_map_callBarringInfo = -1;       /* CallBarringInfo */
544 static int hf_gsm_map_ss_Data = -1;               /* SS_Data */
545 static int hf_gsm_map_genericServiceInfo = -1;    /* GenericServiceInfo */
546 static int hf_gsm_map_ussd_DataCodingScheme = -1;  /* USSD_DataCodingScheme */
547 static int hf_gsm_map_ussd_String = -1;           /* USSD_String */
548 static int hf_gsm_map_failureCause = -1;          /* FailureCause */
549 static int hf_gsm_map_re_attempt = -1;            /* BOOLEAN */
550 static int hf_gsm_map_accessType = -1;            /* AccessType */
551 static int hf_gsm_map_ccbs_Data = -1;             /* CCBS_Data */
552 static int hf_gsm_map_serviceIndicator = -1;      /* ServiceIndicator */
553 static int hf_gsm_map_ccbs_Index = -1;            /* CCBS_Index */
554 static int hf_gsm_map_sm_RP_PRI = -1;             /* BOOLEAN */
555 static int hf_gsm_map_serviceCentreAddress = -1;  /* ServiceCentreAddress */
556 static int hf_gsm_map_gprsSupportIndicator = -1;  /* NULL */
557 static int hf_gsm_map_sm_RP_MTI = -1;             /* INTEGER_0_10 */
558 static int hf_gsm_map_sm_RP_SMEA = -1;            /* OCTET_STRING_SIZE_1_12 */
559 static int hf_gsm_map_locationInfoWithLMSI = -1;  /* LocationInfoWithLMSI */
560 static int hf_gsm_map_networkNode_Number = -1;    /* ISDN_AddressString */
561 static int hf_gsm_map_gprsNodeIndicator = -1;     /* NULL */
562 static int hf_gsm_map_additional_Number = -1;     /* Additional_Number */
563 static int hf_gsm_map_sm_RP_DA = -1;              /* Sm_RP_DA */
564 static int hf_gsm_map_sm_RP_OA = -1;              /* Sm_RP_OA */
565 static int hf_gsm_map_sm_RP_UI = -1;              /* Sm_RP_UI */
566 static int hf_gsm_map_serviceCentreAddressOA = -1;  /* ServiceCentreAddress */
567 static int hf_gsm_map_noSM_RP_OA = -1;            /* NULL */
568 static int hf_gsm_map_serviceCentreAddressDA = -1;  /* ServiceCentreAddress */
569 static int hf_gsm_map_noSM_RP_DA = -1;            /* NULL */
570 static int hf_gsm_map_moreMessagesToSend = -1;    /* NULL */
571 static int hf_gsm_map_sm_DeliveryOutcome = -1;    /* Sm_DeliveryOutcome */
572 static int hf_gsm_map_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
573 static int hf_gsm_map_deliveryOutcomeIndicator = -1;  /* NULL */
574 static int hf_gsm_map_additionalSM_DeliveryOutcome = -1;  /* Sm_DeliveryOutcome */
575 static int hf_gsm_map_additionalAbsentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
576 static int hf_gsm_map_storedMSISDN = -1;          /* StoredMSISDN */
577 static int hf_gsm_map_mw_Status = -1;             /* T_mw_Status */
578 static int hf_gsm_map_alertReason = -1;           /* T_alertReason */
579 static int hf_gsm_map_alertReasonIndicator = -1;  /* NULL */
580 static int hf_gsm_map_requestedInfo = -1;         /* RequestedInfo */
581 static int hf_gsm_map_locationInformation = -1;   /* LocationInformation */
582 static int hf_gsm_map_subscriberState = -1;       /* SubscriberState */
583 static int hf_gsm_map_locationInformationGPRS = -1;  /* LocationInformationGPRS */
584 static int hf_gsm_map_ps_SubscriberState = -1;    /* PS_SubscriberState */
585 static int hf_gsm_map_ms_Classmark2 = -1;         /* MS_Classmark2 */
586 static int hf_gsm_map_gprs_MS_Class = -1;         /* GPRSMSClass */
587 static int hf_gsm_map_mnpInfoRes = -1;            /* MNPInfoRes */
588 static int hf_gsm_map_routeingNumber = -1;        /* RouteingNumber */
589 static int hf_gsm_map_mSNetworkCapability = -1;   /* MSNetworkCapability */
590 static int hf_gsm_map_mSRadioAccessCapability = -1;  /* MSRadioAccessCapability */
591 static int hf_gsm_map_locationInformation_flg = -1;  /* NULL */
592 static int hf_gsm_map_subscriberState_flg = -1;   /* NULL */
593 static int hf_gsm_map_currentLocation = -1;       /* NULL */
594 static int hf_gsm_map_requestedDomain = -1;       /* T_requestedDomain */
595 static int hf_gsm_map_imei_flg = -1;              /* NULL */
596 static int hf_gsm_map_ms_classmark = -1;          /* NULL */
597 static int hf_gsm_map_mnpRequestedInfo = -1;      /* NULL */
598 static int hf_gsm_map_subscriberIdentity = -1;    /* SubscriberIdentity */
599 static int hf_gsm_map_requestedSubscriptionInfo = -1;  /* RequestedSubscriptionInfo */
600 static int hf_gsm_map_callForwardingData = -1;    /* CallForwardingData */
601 static int hf_gsm_map_callBarringData = -1;       /* CallBarringData */
602 static int hf_gsm_map_odb_Info = -1;              /* ODB_Info */
603 static int hf_gsm_map_camel_SubscriptionInfo = -1;  /* CAMEL_SubscriptionInfo */
604 static int hf_gsm_map_supportedVLR_CAMEL_Phases = -1;  /* SupportedCamelPhases */
605 static int hf_gsm_map_supportedSGSN_CAMEL_Phases = -1;  /* SupportedCamelPhases */
606 static int hf_gsm_map_offeredCamel4CSIsInVLR = -1;  /* OfferedCamel4CSIs */
607 static int hf_gsm_map_offeredCamel4CSIsInSGSN = -1;  /* OfferedCamel4CSIs */
608 static int hf_gsm_map_requestedSS_Info = -1;      /* SS_ForBS_Code */
609 static int hf_gsm_map_odb = -1;                   /* NULL */
610 static int hf_gsm_map_requestedCAMEL_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
611 static int hf_gsm_map_supportedVLR_CAMEL_Phases_flg = -1;  /* NULL */
612 static int hf_gsm_map_supportedSGSN_CAMEL_Phases_flg = -1;  /* NULL */
613 static int hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo = -1;  /* AdditionalRequestedCAMEL_SubscriptionInfo */
614 static int hf_gsm_map_password = -1;              /* Password */
615 static int hf_gsm_map_wrongPasswordAttemptsCounter = -1;  /* WrongPasswordAttemptsCounter */
616 static int hf_gsm_map_bearerService = -1;         /* BearerServiceCode */
617 static int hf_gsm_map_teleservice_code = -1;      /* TeleserviceCode */
618 static int hf_gsm_map_O_BcsmCamelTDPCriteriaList_item = -1;  /* O_BcsmCamelTDP_Criteria */
619 static int hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_BCSM_CAMEL_TDP_Criteria */
620 static int hf_gsm_map_destinationNumberCriteria = -1;  /* DestinationNumberCriteria */
621 static int hf_gsm_map_basicServiceCriteria = -1;  /* BasicServiceCriteria */
622 static int hf_gsm_map_callTypeCriteria = -1;      /* CallTypeCriteria */
623 static int hf_gsm_map_o_CauseValueCriteria = -1;  /* O_CauseValueCriteria */
624 static int hf_gsm_map_t_BCSM_TriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
625 static int hf_gsm_map_t_CauseValueCriteria = -1;  /* T_CauseValueCriteria */
626 static int hf_gsm_map_maximumEntitledPriority = -1;  /* EMLPP_Priority */
627 static int hf_gsm_map_ccbs_FeatureList = -1;      /* CCBS_FeatureList */
628 static int hf_gsm_map_nbrSN = -1;                 /* MC_Bearers */
629 static int hf_gsm_map_CCBS_FeatureList_item = -1;  /* CCBS_Feature */
630 static int hf_gsm_map_b_subscriberNumber = -1;    /* ISDN_AddressString */
631 static int hf_gsm_map_b_subscriberSubaddress = -1;  /* ISDN_SubaddressString */
632 static int hf_gsm_map_basicServiceGroup = -1;     /* BasicServiceCode */
633 static int hf_gsm_map_T_CauseValueCriteria_item = -1;  /* CauseValue */
634 static int hf_gsm_map_O_CauseValueCriteria_item = -1;  /* CauseValue */
635 static int hf_gsm_map_BasicServiceCriteria_item = -1;  /* Ext_BasicServiceCode */
636 static int hf_gsm_map_modificationRequestFor_CF_Info = -1;  /* ModificationRequestFor_CF_Info */
637 static int hf_gsm_map_modificationRequestFor_CB_Info = -1;  /* ModificationRequestFor_CB_Info */
638 static int hf_gsm_map_modificationRequestFor_CSI = -1;  /* ModificationRequestFor_CSI */
639 static int hf_gsm_map_modificationRequestFor_ODB_data = -1;  /* ModificationRequestFor_ODB_data */
640 static int hf_gsm_map_ss_InfoFor_CSE = -1;        /* Ext_SS_InfoFor_CSE */
641 static int hf_gsm_map_modifyNotificationToCSE = -1;  /* ModificationInstruction */
642 static int hf_gsm_map_odb_data = -1;              /* ODB_Data */
643 static int hf_gsm_map_requestedCamel_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
644 static int hf_gsm_map_modifyCSI_State = -1;       /* ModificationInstruction */
645 static int hf_gsm_map_forwardingInfoFor_CSE = -1;  /* Ext_ForwardingInfoFor_CSE */
646 static int hf_gsm_map_callBarringInfoFor_CSE = -1;  /* Ext_CallBarringInfoFor_CSE */
647 static int hf_gsm_map_eventMet = -1;              /* MM_Code */
648 static int hf_gsm_map_supportedCAMELPhases = -1;  /* SupportedCamelPhases */
649 static int hf_gsm_map_offeredCamel4Functionalities = -1;  /* OfferedCamel4Functionalities */
650 static int hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
651 static int hf_gsm_map_tif_CSI_NotificationToCSE = -1;  /* NULL */
652 static int hf_gsm_map_specificCSIDeletedList = -1;  /* SpecificCSI_Withdraw */
653 static int hf_gsm_map_o_IM_CSI = -1;              /* O_CSI */
654 static int hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
655 static int hf_gsm_map_d_IM_CSI = -1;              /* D_CSI */
656 static int hf_gsm_map_vt_IM_CSI = -1;             /* T_CSI */
657 static int hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
658 static int hf_gsm_map_ext_BearerService = -1;     /* Ext_BearerServiceCode */
659 static int hf_gsm_map_ext_Teleservice = -1;       /* Ext_TeleserviceCode */
660 static int hf_gsm_map_odb_HPLMN_Data = -1;        /* ODB_HPLMN_Data */
661 static int hf_gsm_map_SS_EventList_item = -1;     /* SS_Code */
662 static int hf_gsm_map_t_BcsmCamelTDPDataList = -1;  /* T_BcsmCamelTDPDataList */
663 static int hf_gsm_map_T_BcsmCamelTDPDataList_item = -1;  /* T_BcsmCamelTDPData */
664 static int hf_gsm_map_t_BcsmTriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
665 static int hf_gsm_map_sms_CAMEL_TDP_DataList = -1;  /* SMS_CAMEL_TDP_DataList */
666 static int hf_gsm_map_SMS_CAMEL_TDP_DataList_item = -1;  /* SMS_CAMEL_TDP_Data */
667 static int hf_gsm_map_defaultSMS_Handling = -1;   /* DefaultSMS_Handling */
668 static int hf_gsm_map_MobilityTriggers_item = -1;  /* MM_Code */
669 static int hf_gsm_map_ss_Event = -1;              /* OCTET_STRING_SIZE_1 */
670 static int hf_gsm_map_ss_EventSpecification = -1;  /* T_ss_EventSpecification */
671 static int hf_gsm_map_ss_EventSpecification_item = -1;  /* OCTET_STRING_SIZE_1_20 */
672 static int hf_gsm_map_ext_teleservice = -1;       /* Ext_TeleserviceCode */
673 static int hf_gsm_map_codec_Info = -1;            /* CODEC_Info */
674 static int hf_gsm_map_cipheringAlgorithm = -1;    /* CipheringAlgorithm */
675 static int hf_gsm_map_groupKeyNumber_Vk_Id = -1;  /* GroupKeyNumber */
676 static int hf_gsm_map_groupKey = -1;              /* Kc */
677 static int hf_gsm_map_priority = -1;              /* EMLPP_Priority */
678 static int hf_gsm_map_uplinkFree = -1;            /* NULL */
679 static int hf_gsm_map_vstk = -1;                  /* VSTK */
680 static int hf_gsm_map_vstk_rand = -1;             /* VSTK_RAND */
681 static int hf_gsm_map_groupCallNumber = -1;       /* ISDN_AddressString */
682 static int hf_gsm_map_uplinkRequest = -1;         /* NULL */
683 static int hf_gsm_map_uplinkReleaseIndication = -1;  /* NULL */
684 static int hf_gsm_map_releaseGroupCall = -1;      /* NULL */
685 static int hf_gsm_map_uplinkRequestAck = -1;      /* NULL */
686 static int hf_gsm_map_uplinkRejectCommand = -1;   /* NULL */
687 static int hf_gsm_map_uplinkSeizedCommand = -1;   /* NULL */
688 static int hf_gsm_map_uplinkReleaseCommand = -1;  /* NULL */
689 static int hf_gsm_map_sgsn_Address = -1;          /* GSN_Address */
690 static int hf_gsm_map_sgsn_Capability = -1;       /* SGSN_Capability */
691 static int hf_gsm_map_ps_LCS_NotSupportedByUE = -1;  /* NULL */
692 static int hf_gsm_map_gprsEnhancementsSupportIndicator = -1;  /* NULL */
693 static int hf_gsm_map_smsCallBarringSupportIndicator = -1;  /* NULL */
694 static int hf_gsm_map_ggsn_Number = -1;           /* ISDN_AddressString */
695 static int hf_gsm_map_mobileNotReachableReason = -1;  /* AbsentSubscriberDiagnosticSM */
696 static int hf_gsm_map_locationType = -1;          /* LocationType */
697 static int hf_gsm_map_mlc_Number = -1;            /* ISDN_AddressString */
698 static int hf_gsm_map_lcs_ClientID = -1;          /* LCS_ClientID */
699 static int hf_gsm_map_privacyOverride = -1;       /* NULL */
700 static int hf_gsm_map_lcs_Priority = -1;          /* LCS_Priority */
701 static int hf_gsm_map_lcs_QoS = -1;               /* LCS_QoS */
702 static int hf_gsm_map_supportedGADShapes = -1;    /* SupportedGADShapes */
703 static int hf_gsm_map_lcs_ReferenceNumber = -1;   /* LCS_ReferenceNumber */
704 static int hf_gsm_map_lcsServiceTypeID = -1;      /* LCSServiceTypeID */
705 static int hf_gsm_map_lcsCodeword = -1;           /* LCSCodeword */
706 static int hf_gsm_map_lcs_PrivacyCheck = -1;      /* LCS_PrivacyCheck */
707 static int hf_gsm_map_areaEventInfo = -1;         /* AreaEventInfo */
708 static int hf_gsm_map_h_gmlc_Address = -1;        /* GSN_Address */
709 static int hf_gsm_map_locationEstimateType = -1;  /* LocationEstimateType */
710 static int hf_gsm_map_deferredLocationEventType = -1;  /* DeferredLocationEventType */
711 static int hf_gsm_map_lcsClientType = -1;         /* LCSClientType */
712 static int hf_gsm_map_lcsClientExternalID = -1;   /* LCSClientExternalID */
713 static int hf_gsm_map_lcsClientDialedByMS = -1;   /* AddressString */
714 static int hf_gsm_map_lcsClientInternalID = -1;   /* LCSClientInternalID */
715 static int hf_gsm_map_lcsClientName = -1;         /* LCSClientName */
716 static int hf_gsm_map_lcsAPN = -1;                /* APN */
717 static int hf_gsm_map_lcsRequestorID = -1;        /* LCSRequestorID */
718 static int hf_gsm_map_dataCodingScheme = -1;      /* USSD_DataCodingScheme */
719 static int hf_gsm_map_nameString = -1;            /* NameString */
720 static int hf_gsm_map_lcs_FormatIndicator = -1;   /* LCS_FormatIndicator */
721 static int hf_gsm_map_requestorIDString = -1;     /* RequestorIDString */
722 static int hf_gsm_map_horizontal_accuracy = -1;   /* Horizontal_Accuracy */
723 static int hf_gsm_map_verticalCoordinateRequest = -1;  /* NULL */
724 static int hf_gsm_map_vertical_accuracy = -1;     /* Vertical_Accuracy */
725 static int hf_gsm_map_responseTime = -1;          /* ResponseTime */
726 static int hf_gsm_map_responseTimeCategory = -1;  /* ResponseTimeCategory */
727 static int hf_gsm_map_lcsCodewordString = -1;     /* LCSCodewordString */
728 static int hf_gsm_map_callSessionUnrelated = -1;  /* PrivacyCheckRelatedAction */
729 static int hf_gsm_map_callSessionRelated = -1;    /* PrivacyCheckRelatedAction */
730 static int hf_gsm_map_areaDefinition = -1;        /* AreaDefinition */
731 static int hf_gsm_map_occurrenceInfo = -1;        /* OccurrenceInfo */
732 static int hf_gsm_map_intervalTime = -1;          /* IntervalTime */
733 static int hf_gsm_map_areaList = -1;              /* AreaList */
734 static int hf_gsm_map_AreaList_item = -1;         /* Area */
735 static int hf_gsm_map_areaType = -1;              /* AreaType */
736 static int hf_gsm_map_areaIdentification = -1;    /* AreaIdentification */
737 static int hf_gsm_map_locationEstimate = -1;      /* Ext_GeographicalInformation */
738 static int hf_gsm_map_ageOfLocationEstimate = -1;  /* AgeOfLocationInformation */
739 static int hf_gsm_map_add_LocationEstimate = -1;  /* Add_GeographicalInformation */
740 static int hf_gsm_map_deferredmt_lrResponseIndicator = -1;  /* NULL */
741 static int hf_gsm_map_geranPositioningData = -1;  /* PositioningDataInformation */
742 static int hf_gsm_map_utranPositioningData = -1;  /* UtranPositioningDataInfo */
743 static int hf_gsm_map_cellIdOrSai = -1;           /* CellGlobalIdOrServiceAreaIdOrLAI */
744 static int hf_gsm_map_mlcNumber = -1;             /* ISDN_AddressString */
745 static int hf_gsm_map_targetMS = -1;              /* SubscriberIdentity */
746 static int hf_gsm_map_lcsLocationInfo = -1;       /* LCSLocationInfo */
747 static int hf_gsm_map_ppr_Address = -1;           /* GSN_Address */
748 static int hf_gsm_map_additional_v_gmlc_Address = -1;  /* GSN_Address */
749 static int hf_gsm_map_additional_LCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
750 static int hf_gsm_map_lcs_Event = -1;             /* LCS_Event */
751 static int hf_gsm_map_na_ESRD = -1;               /* ISDN_AddressString */
752 static int hf_gsm_map_na_ESRK = -1;               /* ISDN_AddressString */
753 static int hf_gsm_map_slr_ArgExtensionContainer = -1;  /* SLR_ArgExtensionContainer */
754 static int hf_gsm_map_deferredmt_lrData = -1;     /* Deferredmt_lrData */
755 static int hf_gsm_map_pseudonymIndicator = -1;    /* NULL */
756 static int hf_gsm_map_terminationCause = -1;      /* TerminationCause */
757 static int hf_gsm_map_securityHeader = -1;        /* SecurityHeader */
758 static int hf_gsm_map_protectedPayload = -1;      /* ProtectedPayload */
759 static int hf_gsm_map_securityParametersIndex = -1;  /* SecurityParametersIndex */
760 static int hf_gsm_map_originalComponentIdentifier = -1;  /* OriginalComponentIdentifier */
761 static int hf_gsm_map_initialisationVector = -1;  /* InitialisationVector */
762 static int hf_gsm_map_operationCode = -1;         /* OperationCode */
763 static int hf_gsm_map_errorCode = -1;             /* ErrorCode */
764 static int hf_gsm_map_userInfo = -1;              /* NULL */
765 static int hf_gsm_map_localValue = -1;            /* INTEGER */
766 static int hf_gsm_map_globalValue = -1;           /* OBJECT_IDENTIFIER */
767 static int hf_gsm_map_networkResource = -1;       /* NetworkResource */
768 static int hf_gsm_map_extensibleSystemFailureParam = -1;  /* T_extensibleSystemFailureParam */
769 static int hf_gsm_map_unknownSubscriberDiagnostic = -1;  /* T_unknownSubscriberDiagnostic */
770 static int hf_gsm_map_roamingNotAllowedCause = -1;  /* T_roamingNotAllowedCause */
771 static int hf_gsm_map_absentSubscriberReason = -1;  /* T_absentSubscriberReason */
772 static int hf_gsm_map_ccbs_Busy = -1;             /* NULL */
773 static int hf_gsm_map_callBarringCause = -1;      /* CallBarringCause */
774 static int hf_gsm_map_extensibleCallBarredParam = -1;  /* T_extensibleCallBarredParam */
775 static int hf_gsm_map_unauthorisedMessageOriginator = -1;  /* NULL */
776 static int hf_gsm_map_cug_RejectCause = -1;       /* T_cug_RejectCause */
777 static int hf_gsm_map_gprsConnectionSuspended = -1;  /* NULL */
778 static int hf_gsm_map_sm_EnumeratedDeliveryFailureCause = -1;  /* T_sm_EnumeratedDeliveryFailureCause */
779 static int hf_gsm_map_diagnosticInfo = -1;        /* OCTET_STRING_SIZE_1_200 */
780 static int hf_gsm_map_unauthorizedLCSClient_Diagnostic = -1;  /* T_unauthorizedLCSClient_Diagnostic */
781 static int hf_gsm_map_positionMethodFailure_Diagnostic = -1;  /* T_positionMethodFailure_Diagnostic */
782 static int hf_gsm_map_pcsExtensions = -1;         /* PcsExtensions */
783 /* named bits */
784 static int hf_gsm_map_SupportedCamelPhases_phase1 = -1;
785 static int hf_gsm_map_SupportedCamelPhases_phase2 = -1;
786 static int hf_gsm_map_SupportedCamelPhases_phase3 = -1;
787 static int hf_gsm_map_SupportedCamelPhases_phase4 = -1;
788 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1 = -1;
789 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2 = -1;
790 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3 = -1;
791 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4 = -1;
792 static int hf_gsm_map_RequestedEquipmentInfo_equipmentStatus = -1;
793 static int hf_gsm_map_RequestedEquipmentInfo_bmuef = -1;
794 static int hf_gsm_map_ODB_GeneralData_allOG_CallsBarred = -1;
795 static int hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred = -1;
796 static int hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred = -1;
797 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred = -1;
798 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred = -1;
799 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred = -1;
800 static int hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred = -1;
801 static int hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred = -1;
802 static int hf_gsm_map_ODB_GeneralData_ss_AccessBarred = -1;
803 static int hf_gsm_map_ODB_GeneralData_allECT_Barred = -1;
804 static int hf_gsm_map_ODB_GeneralData_chargeableECT_Barred = -1;
805 static int hf_gsm_map_ODB_GeneralData_internationalECT_Barred = -1;
806 static int hf_gsm_map_ODB_GeneralData_interzonalECT_Barred = -1;
807 static int hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred = -1;
808 static int hf_gsm_map_ODB_GeneralData_multipleECT_Barred = -1;
809 static int hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred = -1;
810 static int hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred = -1;
811 static int hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred = -1;
812 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred = -1;
813 static int hf_gsm_map_ODB_GeneralData_allIC_CallsBarred = -1;
814 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred = -1;
815 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred = -1;
816 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred = -1;
817 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred = -1;
818 static int hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred = -1;
819 static int hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred = -1;
820 static int hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred = -1;
821 static int hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred = -1;
822 static int hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred = -1;
823 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1 = -1;
824 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2 = -1;
825 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3 = -1;
826 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4 = -1;
827 static int hf_gsm_map_AccessRestrictionData_utranNotAllowed = -1;
828 static int hf_gsm_map_AccessRestrictionData_geranNotAllowed = -1;
829 static int hf_gsm_map_SpecificCSI_Withdraw_o_csi = -1;
830 static int hf_gsm_map_SpecificCSI_Withdraw_ss_csi = -1;
831 static int hf_gsm_map_SpecificCSI_Withdraw_tif_csi = -1;
832 static int hf_gsm_map_SpecificCSI_Withdraw_d_csi = -1;
833 static int hf_gsm_map_SpecificCSI_Withdraw_vt_csi = -1;
834 static int hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi = -1;
835 static int hf_gsm_map_SpecificCSI_Withdraw_m_csi = -1;
836 static int hf_gsm_map_SpecificCSI_Withdraw_gprs_csi = -1;
837 static int hf_gsm_map_SpecificCSI_Withdraw_t_csi = -1;
838 static int hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi = -1;
839 static int hf_gsm_map_SpecificCSI_Withdraw_mg_csi = -1;
840 static int hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI = -1;
841 static int hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI = -1;
842 static int hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI = -1;
843 static int hf_gsm_map_AllowedServices_firstServiceAllowed = -1;
844 static int hf_gsm_map_AllowedServices_secondServiceAllowed = -1;
845 static int hf_gsm_map_ServiceIndicator_clir_invoked = -1;
846 static int hf_gsm_map_ServiceIndicator_camel_invoked = -1;
847 static int hf_gsm_map_T_mw_Status_scAddressNotIncluded = -1;
848 static int hf_gsm_map_T_mw_Status_mnrfSet = -1;
849 static int hf_gsm_map_T_mw_Status_mcefSet = -1;
850 static int hf_gsm_map_T_mw_Status_mnrgSet = -1;
851 static int hf_gsm_map_OfferedCamel4CSIs_o_csi = -1;
852 static int hf_gsm_map_OfferedCamel4CSIs_d_csi = -1;
853 static int hf_gsm_map_OfferedCamel4CSIs_vt_csi = -1;
854 static int hf_gsm_map_OfferedCamel4CSIs_t_csi = -1;
855 static int hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi = -1;
856 static int hf_gsm_map_OfferedCamel4CSIs_mg_csi = -1;
857 static int hf_gsm_map_OfferedCamel4CSIs_psi_enhancements = -1;
858 static int hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt = -1;
859 static int hf_gsm_map_OfferedCamel4Functionalities_splitLeg = -1;
860 static int hf_gsm_map_OfferedCamel4Functionalities_moveLeg = -1;
861 static int hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg = -1;
862 static int hf_gsm_map_OfferedCamel4Functionalities_entityReleased = -1;
863 static int hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument = -1;
864 static int hf_gsm_map_OfferedCamel4Functionalities_playTone = -1;
865 static int hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall = -1;
866 static int hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator = -1;
867 static int hf_gsm_map_OfferedCamel4Functionalities_alertingDP = -1;
868 static int hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting = -1;
869 static int hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP = -1;
870 static int hf_gsm_map_OfferedCamel4Functionalities_or_Interactions = -1;
871 static int hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements = -1;
872 static int hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements = -1;
873 static int hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices = -1;
874 static int hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices = -1;
875 static int hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP = -1;
876 static int hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP = -1;
877 static int hf_gsm_map_DeferredLocationEventType_msAvailable = -1;
878 static int hf_gsm_map_DeferredLocationEventType_enteringIntoArea = -1;
879 static int hf_gsm_map_DeferredLocationEventType_leavingFromArea = -1;
880 static int hf_gsm_map_DeferredLocationEventType_beingInsideArea = -1;
881 static int hf_gsm_map_SupportedGADShapes_ellipsoidPoint = -1;
882 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle = -1;
883 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse = -1;
884 static int hf_gsm_map_SupportedGADShapes_polygon = -1;
885 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude = -1;
886 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid = -1;
887 static int hf_gsm_map_SupportedGADShapes_ellipsoidArc = -1;
888
889 /*--- End of included file: packet-gsm_map-hf.c ---*/
890
891
892 /* Initialize the subtree pointers */
893 static gint ett_gsm_map = -1;
894 static gint ett_gsm_map_InvokeId = -1;
895 static gint ett_gsm_map_InvokePDU = -1;
896 static gint ett_gsm_map_ReturnResultPDU = -1;
897 static gint ett_gsm_map_ReturnErrorPDU = -1;
898 static gint ett_gsm_map_ReturnResult_result = -1;
899 static gint ett_gsm_map_ReturnError_result = -1;
900 static gint ett_gsm_map_GSMMAPPDU = -1;
901
902
903 /*--- Included file: packet-gsm_map-ett.c ---*/
904
905 static gint ett_gsm_map_Bss_APDU = -1;
906 static gint ett_gsm_map_SupportedCamelPhases = -1;
907 static gint ett_gsm_map_UpdateLocationArg = -1;
908 static gint ett_gsm_map_UpdateLocationRes = -1;
909 static gint ett_gsm_map_VLR_Capability = -1;
910 static gint ett_gsm_map_SuperChargerInfo = -1;
911 static gint ett_gsm_map_SupportedLCS_CapabilitySets = -1;
912 static gint ett_gsm_map_ADD_Info = -1;
913 static gint ett_gsm_map_PrivateExtensionList = -1;
914 static gint ett_gsm_map_PrivateExtension = -1;
915 static gint ett_gsm_map_SLR_ArgExtensionContainer = -1;
916 static gint ett_gsm_map_PcsExtensions = -1;
917 static gint ett_gsm_map_SLR_Arg_PCS_Extensions = -1;
918 static gint ett_gsm_map_CancelLocationArg = -1;
919 static gint ett_gsm_map_CancelLocationRes = -1;
920 static gint ett_gsm_map_PurgeMSArg = -1;
921 static gint ett_gsm_map_PurgeMSRes = -1;
922 static gint ett_gsm_map_SendIdentificationArg = -1;
923 static gint ett_gsm_map_SendIdentificationRes = -1;
924 static gint ett_gsm_map_AuthenticationSetList = -1;
925 static gint ett_gsm_map_TripletList = -1;
926 static gint ett_gsm_map_QuintupletList = -1;
927 static gint ett_gsm_map_AuthenticationTriplet = -1;
928 static gint ett_gsm_map_AuthenticationQuintuplet = -1;
929 static gint ett_gsm_map_CurrentSecurityContext = -1;
930 static gint ett_gsm_map_GSM_SecurityContextData = -1;
931 static gint ett_gsm_map_UMTS_SecurityContextData = -1;
932 static gint ett_gsm_map_PrepareHO_Arg = -1;
933 static gint ett_gsm_map_PrepareHO_ArgV3 = -1;
934 static gint ett_gsm_map_BSSMAP_ServiceHandoverList = -1;
935 static gint ett_gsm_map_BSSMAP_ServiceHandoverInfo = -1;
936 static gint ett_gsm_map_RadioResourceList = -1;
937 static gint ett_gsm_map_RadioResource = -1;
938 static gint ett_gsm_map_PrepareHO_Res = -1;
939 static gint ett_gsm_map_PrepareHO_ResV3 = -1;
940 static gint ett_gsm_map_SelectedUMTS_Algorithms = -1;
941 static gint ett_gsm_map_ChosenRadioResourceInformation = -1;
942 static gint ett_gsm_map_SendEndSignalArgV3 = -1;
943 static gint ett_gsm_map_SendEndSignalRes = -1;
944 static gint ett_gsm_map_RelocationNumberList = -1;
945 static gint ett_gsm_map_RelocationNumber = -1;
946 static gint ett_gsm_map_ProcessAccessSignallingArgV3 = -1;
947 static gint ett_gsm_map_SupportedCodecsList = -1;
948 static gint ett_gsm_map_CodecList = -1;
949 static gint ett_gsm_map_ForwardAccessSignallingArgV3 = -1;
950 static gint ett_gsm_map_AllowedUMTS_Algorithms = -1;
951 static gint ett_gsm_map_PrepareSubsequentHOArg = -1;
952 static gint ett_gsm_map_PrepareSubsequentHOArgV3 = -1;
953 static gint ett_gsm_map_PrepareSubsequentHOResV3 = -1;
954 static gint ett_gsm_map_SendAuthenticationInfoArgV2 = -1;
955 static gint ett_gsm_map_SendAuthenticationInfoRes = -1;
956 static gint ett_gsm_map_SendAuthenticationInfoRes_item = -1;
957 static gint ett_gsm_map_SendAuthenticationInfoResV3 = -1;
958 static gint ett_gsm_map_Re_synchronisationInfo = -1;
959 static gint ett_gsm_map_CheckIMEIArgV2 = -1;
960 static gint ett_gsm_map_CheckIMEIRes = -1;
961 static gint ett_gsm_map_RequestedEquipmentInfo = -1;
962 static gint ett_gsm_map_UESBI_Iu = -1;
963 static gint ett_gsm_map_BasicService = -1;
964 static gint ett_gsm_map_BasicServiceGroupList = -1;
965 static gint ett_gsm_map_ODB_GeneralData = -1;
966 static gint ett_gsm_map_ODB_HPLMN_Data = -1;
967 static gint ett_gsm_map_BcsmCamelTDPData = -1;
968 static gint ett_gsm_map_BcsmCamelTDPDataList = -1;
969 static gint ett_gsm_map_O_CSI = -1;
970 static gint ett_gsm_map_O_BcsmCamelTDPDataList = -1;
971 static gint ett_gsm_map_O_BcsmCamelTDPData = -1;
972 static gint ett_gsm_map_InsertSubscriberDataArg = -1;
973 static gint ett_gsm_map_AccessRestrictionData = -1;
974 static gint ett_gsm_map_LCSInformation = -1;
975 static gint ett_gsm_map_GMLC_List = -1;
976 static gint ett_gsm_map_GPRSDataList = -1;
977 static gint ett_gsm_map_PDP_Context = -1;
978 static gint ett_gsm_map_GPRSSubscriptionData = -1;
979 static gint ett_gsm_map_SGSN_CAMEL_SubscriptionInfo = -1;
980 static gint ett_gsm_map_GPRS_CSI = -1;
981 static gint ett_gsm_map_GPRS_CamelTDPDataList = -1;
982 static gint ett_gsm_map_GPRS_CamelTDPData = -1;
983 static gint ett_gsm_map_LSADataList = -1;
984 static gint ett_gsm_map_LSAData = -1;
985 static gint ett_gsm_map_LSAInformation = -1;
986 static gint ett_gsm_map_InsertSubscriberDataRes = -1;
987 static gint ett_gsm_map_DeleteSubscriberDataArg = -1;
988 static gint ett_gsm_map_DeleteSubscriberDataRes = -1;
989 static gint ett_gsm_map_SpecificCSI_Withdraw = -1;
990 static gint ett_gsm_map_GPRSSubscriptionDataWithdraw = -1;
991 static gint ett_gsm_map_ContextIdList = -1;
992 static gint ett_gsm_map_LSAInformationWithdraw = -1;
993 static gint ett_gsm_map_LSAIdentityList = -1;
994 static gint ett_gsm_map_BasicServiceList = -1;
995 static gint ett_gsm_map_VlrCamelSubscriptionInfo = -1;
996 static gint ett_gsm_map_MT_smsCAMELTDP_CriteriaList = -1;
997 static gint ett_gsm_map_MT_smsCAMELTDP_Criteria = -1;
998 static gint ett_gsm_map_TPDU_TypeCriterion = -1;
999 static gint ett_gsm_map_D_CSI = -1;
1000 static gint ett_gsm_map_DP_AnalysedInfoCriteriaList = -1;
1001 static gint ett_gsm_map_DP_AnalysedInfoCriterium = -1;
1002 static gint ett_gsm_map_SS_CSI = -1;
1003 static gint ett_gsm_map_SS_CamelData = -1;
1004 static gint ett_gsm_map_MG_CSI = -1;
1005 static gint ett_gsm_map_BearerServiceList = -1;
1006 static gint ett_gsm_map_TeleserviceList = -1;
1007 static gint ett_gsm_map_Ext_SS_InfoList = -1;
1008 static gint ett_gsm_map_Ext_SS_Info = -1;
1009 static gint ett_gsm_map_Ext_ForwInfo = -1;
1010 static gint ett_gsm_map_Ext_ForwFeatureList = -1;
1011 static gint ett_gsm_map_Ext_ForwFeature = -1;
1012 static gint ett_gsm_map_Ext_CallBarInfo = -1;
1013 static gint ett_gsm_map_Ext_CallBarFeatureList = -1;
1014 static gint ett_gsm_map_Ext_CallBarringFeature = -1;
1015 static gint ett_gsm_map_ZoneCodeList = -1;
1016 static gint ett_gsm_map_EMLPP_Info = -1;
1017 static gint ett_gsm_map_CUG_Info = -1;
1018 static gint ett_gsm_map_CUG_SubscriptionList = -1;
1019 static gint ett_gsm_map_CUG_Subscription = -1;
1020 static gint ett_gsm_map_CUG_FeatureList = -1;
1021 static gint ett_gsm_map_Ext_BasicServiceGroupList = -1;
1022 static gint ett_gsm_map_CUG_Feature = -1;
1023 static gint ett_gsm_map_Ext_SS_Data = -1;
1024 static gint ett_gsm_map_LCS_PrivacyExceptionList = -1;
1025 static gint ett_gsm_map_LCS_PrivacyClass = -1;
1026 static gint ett_gsm_map_ExternalClientList = -1;
1027 static gint ett_gsm_map_PLMNClientList = -1;
1028 static gint ett_gsm_map_Ext_ExternalClientList = -1;
1029 static gint ett_gsm_map_ExternalClient = -1;
1030 static gint ett_gsm_map_ServiceTypeList = -1;
1031 static gint ett_gsm_map_ServiceType = -1;
1032 static gint ett_gsm_map_MOLR_List = -1;
1033 static gint ett_gsm_map_MOLR_Class = -1;
1034 static gint ett_gsm_map_CallBarringFeatureList = -1;
1035 static gint ett_gsm_map_CallBarringFeature = -1;
1036 static gint ett_gsm_map_ForwardingFeatureList = -1;
1037 static gint ett_gsm_map_ForwardingFeature = -1;
1038 static gint ett_gsm_map_DestinationNumberCriteria = -1;
1039 static gint ett_gsm_map_DestinationNumberList = -1;
1040 static gint ett_gsm_map_DestinationNumberLengthList = -1;
1041 static gint ett_gsm_map_ForwardingInfo = -1;
1042 static gint ett_gsm_map_CallBarringInfo = -1;
1043 static gint ett_gsm_map_MC_SS_Info = -1;
1044 static gint ett_gsm_map_ResetArg = -1;
1045 static gint ett_gsm_map_RestoreDataArg = -1;
1046 static gint ett_gsm_map_RestoreDataRes = -1;
1047 static gint ett_gsm_map_VBSDataList = -1;
1048 static gint ett_gsm_map_VGCSDataList = -1;
1049 static gint ett_gsm_map_VoiceGroupCallData = -1;
1050 static gint ett_gsm_map_VoiceBroadcastData = -1;
1051 static gint ett_gsm_map_ActivateTraceModeArg = -1;
1052 static gint ett_gsm_map_ActivateTraceModeRes = -1;
1053 static gint ett_gsm_map_DeactivateTraceModeArg = -1;
1054 static gint ett_gsm_map_DeactivateTraceModeRes = -1;
1055 static gint ett_gsm_map_SendRoutingInfoArg = -1;
1056 static gint ett_gsm_map_SendRoutingInfoRes = -1;
1057 static gint ett_gsm_map_ExternalSignalInfo = -1;
1058 static gint ett_gsm_map_Ext_ExternalSignalInfo = -1;
1059 static gint ett_gsm_map_AccessNetworkSignalInfo = -1;
1060 static gint ett_gsm_map_CamelInfo = -1;
1061 static gint ett_gsm_map_Identity = -1;
1062 static gint ett_gsm_map_IMSI_WithLMSI = -1;
1063 static gint ett_gsm_map_SubscriberId = -1;
1064 static gint ett_gsm_map_HLR_List = -1;
1065 static gint ett_gsm_map_SS_List = -1;
1066 static gint ett_gsm_map_NAEA_PreferredCI = -1;
1067 static gint ett_gsm_map_SubscriberIdentity = -1;
1068 static gint ett_gsm_map_LCSClientExternalID = -1;
1069 static gint ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI = -1;
1070 static gint ett_gsm_map_AllowedServices = -1;
1071 static gint ett_gsm_map_CCBS_Indicators = -1;
1072 static gint ett_gsm_map_RoutingInfo = -1;
1073 static gint ett_gsm_map_ExtendedRoutingInfo = -1;
1074 static gint ett_gsm_map_CamelRoutingInfo = -1;
1075 static gint ett_gsm_map_GmscCamelSubscriptionInfo = -1;
1076 static gint ett_gsm_map_LocationInformation = -1;
1077 static gint ett_gsm_map_LocationInformationGPRS = -1;
1078 static gint ett_gsm_map_SubscriberState = -1;
1079 static gint ett_gsm_map_PS_SubscriberState = -1;
1080 static gint ett_gsm_map_PDP_ContextInfoList = -1;
1081 static gint ett_gsm_map_PDP_ContextInfo = -1;
1082 static gint ett_gsm_map_CUG_CheckInfo = -1;
1083 static gint ett_gsm_map_ForwardingData = -1;
1084 static gint ett_gsm_map_ProvideRoamingNumberArg = -1;
1085 static gint ett_gsm_map_ProvideRoamingNumberRes = -1;
1086 static gint ett_gsm_map_ResumeCallHandlingArg = -1;
1087 static gint ett_gsm_map_ResumeCallHandlingRes = -1;
1088 static gint ett_gsm_map_UU_Data = -1;
1089 static gint ett_gsm_map_ProvideSIWFSNumberArg = -1;
1090 static gint ett_gsm_map_ProvideSIWFSNumberRes = -1;
1091 static gint ett_gsm_map_SIWFSSignallingModifyArg = -1;
1092 static gint ett_gsm_map_SIWFSSignallingModifyRes = -1;
1093 static gint ett_gsm_map_SetReportingStateArg = -1;
1094 static gint ett_gsm_map_SetReportingStateRes = -1;
1095 static gint ett_gsm_map_StatusReportArg = -1;
1096 static gint ett_gsm_map_StatusReportRes = -1;
1097 static gint ett_gsm_map_EventReportData = -1;
1098 static gint ett_gsm_map_CallReportData = -1;
1099 static gint ett_gsm_map_IST_AlertArg = -1;
1100 static gint ett_gsm_map_IST_AlertRes = -1;
1101 static gint ett_gsm_map_IST_CommandArg = -1;
1102 static gint ett_gsm_map_IST_CommandRes = -1;
1103 static gint ett_gsm_map_ReleaseResourcesArg = -1;
1104 static gint ett_gsm_map_ReleaseResourcesRes = -1;
1105 static gint ett_gsm_map_RemoteUserFreeArg = -1;
1106 static gint ett_gsm_map_RemoteUserFreeRes = -1;
1107 static gint ett_gsm_map_SS_Data = -1;
1108 static gint ett_gsm_map_SS_SubscriptionOption = -1;
1109 static gint ett_gsm_map_RegisterSS_Arg = -1;
1110 static gint ett_gsm_map_SS_Info = -1;
1111 static gint ett_gsm_map_InterrogateSS_Res = -1;
1112 static gint ett_gsm_map_Ussd_Arg = -1;
1113 static gint ett_gsm_map_Ussd_Res = -1;
1114 static gint ett_gsm_map_AuthenticationFailureReportArg = -1;
1115 static gint ett_gsm_map_AuthenticationFailureReportRes = -1;
1116 static gint ett_gsm_map_RegisterCC_EntryArg = -1;
1117 static gint ett_gsm_map_RegisterCC_EntryRes = -1;
1118 static gint ett_gsm_map_CCBS_Data = -1;
1119 static gint ett_gsm_map_ServiceIndicator = -1;
1120 static gint ett_gsm_map_EraseCC_EntryArg = -1;
1121 static gint ett_gsm_map_EraseCC_EntryRes = -1;
1122 static gint ett_gsm_map_RoutingInfoForSMArg = -1;
1123 static gint ett_gsm_map_RoutingInfoForSM_Res = -1;
1124 static gint ett_gsm_map_LocationInfoWithLMSI = -1;
1125 static gint ett_gsm_map_Additional_Number = -1;
1126 static gint ett_gsm_map_Mo_forwardSM_Arg = -1;
1127 static gint ett_gsm_map_Mo_forwardSM_Res = -1;
1128 static gint ett_gsm_map_Sm_RP_OA = -1;
1129 static gint ett_gsm_map_Sm_RP_DA = -1;
1130 static gint ett_gsm_map_Mt_forwardSM_Arg = -1;
1131 static gint ett_gsm_map_Mt_forwardSM_Res = -1;
1132 static gint ett_gsm_map_ReportSM_DeliveryStatusArg = -1;
1133 static gint ett_gsm_map_ReportSM_DeliveryStatusRes = -1;
1134 static gint ett_gsm_map_InformServiceCentreArg = -1;
1135 static gint ett_gsm_map_T_mw_Status = -1;
1136 static gint ett_gsm_map_AlertServiceCentreArg = -1;
1137 static gint ett_gsm_map_ReadyForSM_Arg = -1;
1138 static gint ett_gsm_map_ReadyForSM_Res = -1;
1139 static gint ett_gsm_map_ProvideSubscriberInfoArg = -1;
1140 static gint ett_gsm_map_ProvideSubscriberInfoRes = -1;
1141 static gint ett_gsm_map_SubscriberInfo = -1;
1142 static gint ett_gsm_map_MNPInfoRes = -1;
1143 static gint ett_gsm_map_GPRSMSClass = -1;
1144 static gint ett_gsm_map_RequestedInfo = -1;
1145 static gint ett_gsm_map_AnyTimeInterrogationArg = -1;
1146 static gint ett_gsm_map_AnyTimeInterrogationRes = -1;
1147 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationArg = -1;
1148 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationRes = -1;
1149 static gint ett_gsm_map_RequestedSubscriptionInfo = -1;
1150 static gint ett_gsm_map_CallForwardingData = -1;
1151 static gint ett_gsm_map_CallBarringData = -1;
1152 static gint ett_gsm_map_BasicServiceCode = -1;
1153 static gint ett_gsm_map_O_BcsmCamelTDPCriteriaList = -1;
1154 static gint ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList = -1;
1155 static gint ett_gsm_map_O_BcsmCamelTDP_Criteria = -1;
1156 static gint ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria = -1;
1157 static gint ett_gsm_map_OfferedCamel4CSIs = -1;
1158 static gint ett_gsm_map_OfferedCamel4Functionalities = -1;
1159 static gint ett_gsm_map_SS_ForBS_Code = -1;
1160 static gint ett_gsm_map_GenericServiceInfo = -1;
1161 static gint ett_gsm_map_CCBS_FeatureList = -1;
1162 static gint ett_gsm_map_CCBS_Feature = -1;
1163 static gint ett_gsm_map_T_CauseValueCriteria = -1;
1164 static gint ett_gsm_map_O_CauseValueCriteria = -1;
1165 static gint ett_gsm_map_BasicServiceCriteria = -1;
1166 static gint ett_gsm_map_AnyTimeModificationArg = -1;
1167 static gint ett_gsm_map_AnyTimeModificationRes = -1;
1168 static gint ett_gsm_map_ModificationRequestFor_CF_Info = -1;
1169 static gint ett_gsm_map_ModificationRequestFor_CB_Info = -1;
1170 static gint ett_gsm_map_ModificationRequestFor_ODB_data = -1;
1171 static gint ett_gsm_map_ModificationRequestFor_CSI = -1;
1172 static gint ett_gsm_map_Ext_SS_InfoFor_CSE = -1;
1173 static gint ett_gsm_map_NoteSubscriberDataModifiedArg = -1;
1174 static gint ett_gsm_map_NoteSubscriberDataModifiedRes = -1;
1175 static gint ett_gsm_map_NoteMM_EventArg = -1;
1176 static gint ett_gsm_map_NoteMM_EventRes = -1;
1177 static gint ett_gsm_map_CAMEL_SubscriptionInfo = -1;
1178 static gint ett_gsm_map_Ext_ForwardingInfoFor_CSE = -1;
1179 static gint ett_gsm_map_Ext_BasicServiceCode = -1;
1180 static gint ett_gsm_map_Ext_CallBarringInfoFor_CSE = -1;
1181 static gint ett_gsm_map_ODB_Info = -1;
1182 static gint ett_gsm_map_ODB_Data = -1;
1183 static gint ett_gsm_map_M_CSI = -1;
1184 static gint ett_gsm_map_SS_EventList = -1;
1185 static gint ett_gsm_map_T_CSI = -1;
1186 static gint ett_gsm_map_T_BcsmCamelTDPDataList = -1;
1187 static gint ett_gsm_map_T_BcsmCamelTDPData = -1;
1188 static gint ett_gsm_map_SMS_CSI = -1;
1189 static gint ett_gsm_map_SMS_CAMEL_TDP_DataList = -1;
1190 static gint ett_gsm_map_SMS_CAMEL_TDP_Data = -1;
1191 static gint ett_gsm_map_MobilityTriggers = -1;
1192 static gint ett_gsm_map_Ss_InvocationNotificationArg = -1;
1193 static gint ett_gsm_map_T_ss_EventSpecification = -1;
1194 static gint ett_gsm_map_Ss_InvocationNotificationRes = -1;
1195 static gint ett_gsm_map_PrepareGroupCallArg = -1;
1196 static gint ett_gsm_map_PrepareGroupCallRes = -1;
1197 static gint ett_gsm_map_SendGroupCallEndSignalArg = -1;
1198 static gint ett_gsm_map_SendGroupCallEndSignalRes = -1;
1199 static gint ett_gsm_map_ProcessGroupCallSignallingArg = -1;
1200 static gint ett_gsm_map_ForwardGroupCallSignallingArg = -1;
1201 static gint ett_gsm_map_UpdateGprsLocationArg = -1;
1202 static gint ett_gsm_map_UpdateGprsLocationRes = -1;
1203 static gint ett_gsm_map_SGSN_Capability = -1;
1204 static gint ett_gsm_map_SendRoutingInfoForGprsArg = -1;
1205 static gint ett_gsm_map_SendRoutingInfoForGprsRes = -1;
1206 static gint ett_gsm_map_FailureReportArg = -1;
1207 static gint ett_gsm_map_FailureReportRes = -1;
1208 static gint ett_gsm_map_NoteMsPresentForGprsArg = -1;
1209 static gint ett_gsm_map_NoteMsPresentForGprsRes = -1;
1210 static gint ett_gsm_map_ProvideSubscriberLocation_Arg = -1;
1211 static gint ett_gsm_map_LocationType = -1;
1212 static gint ett_gsm_map_DeferredLocationEventType = -1;
1213 static gint ett_gsm_map_LCS_ClientID = -1;
1214 static gint ett_gsm_map_LCSClientName = -1;
1215 static gint ett_gsm_map_LCSRequestorID = -1;
1216 static gint ett_gsm_map_LCS_QoS = -1;
1217 static gint ett_gsm_map_ResponseTime = -1;
1218 static gint ett_gsm_map_SupportedGADShapes = -1;
1219 static gint ett_gsm_map_LCSCodeword = -1;
1220 static gint ett_gsm_map_LCS_PrivacyCheck = -1;
1221 static gint ett_gsm_map_AreaEventInfo = -1;
1222 static gint ett_gsm_map_AreaDefinition = -1;
1223 static gint ett_gsm_map_AreaList = -1;
1224 static gint ett_gsm_map_Area = -1;
1225 static gint ett_gsm_map_ProvideSubscriberLocation_Res = -1;
1226 static gint ett_gsm_map_TargetMS = -1;
1227 static gint ett_gsm_map_RoutingInfoForLCS_Arg = -1;
1228 static gint ett_gsm_map_RoutingInfoForLCS_Res = -1;
1229 static gint ett_gsm_map_LCSLocationInfo = -1;
1230 static gint ett_gsm_map_SubscriberLocationReport_Arg = -1;
1231 static gint ett_gsm_map_Deferredmt_lrData = -1;
1232 static gint ett_gsm_map_SubscriberLocationReport_Res = -1;
1233 static gint ett_gsm_map_SecureTransportArg = -1;
1234 static gint ett_gsm_map_SecureTransportRes = -1;
1235 static gint ett_gsm_map_SecurityHeader = -1;
1236 static gint ett_gsm_map_OriginalComponentIdentifier = -1;
1237 static gint ett_gsm_map_OperationCode = -1;
1238 static gint ett_gsm_map_ErrorCode = -1;
1239 static gint ett_gsm_map_SystemFailureParam = -1;
1240 static gint ett_gsm_map_T_extensibleSystemFailureParam = -1;
1241 static gint ett_gsm_map_DataMissingParam = -1;
1242 static gint ett_gsm_map_UnexpectedDataParam = -1;
1243 static gint ett_gsm_map_FacilityNotSupParam = -1;
1244 static gint ett_gsm_map_IncompatibleTerminalParam = -1;
1245 static gint ett_gsm_map_ResourceLimitationParam = -1;
1246 static gint ett_gsm_map_UnknownSubscriberParam = -1;
1247 static gint ett_gsm_map_NumberChangedParam = -1;
1248 static gint ett_gsm_map_UnidentifiedSubParam = -1;
1249 static gint ett_gsm_map_RoamingNotAllowedParam = -1;
1250 static gint ett_gsm_map_IllegalSubscriberParam = -1;
1251 static gint ett_gsm_map_IllegalEquipmentParam = -1;
1252 static gint ett_gsm_map_BearerServNotProvParam = -1;
1253 static gint ett_gsm_map_TeleservNotProvParam = -1;
1254 static gint ett_gsm_map_TracingBufferFullParam = -1;
1255 static gint ett_gsm_map_NoRoamingNbParam = -1;
1256 static gint ett_gsm_map_AbsentSubscriberParam = -1;
1257 static gint ett_gsm_map_BusySubscriberParam = -1;
1258 static gint ett_gsm_map_NoSubscriberReplyParam = -1;
1259 static gint ett_gsm_map_CallBarredParam = -1;
1260 static gint ett_gsm_map_T_extensibleCallBarredParam = -1;
1261 static gint ett_gsm_map_ForwardingFailedParam = -1;
1262 static gint ett_gsm_map_Or_NotAllowedParam = -1;
1263 static gint ett_gsm_map_ForwardingViolationParam = -1;
1264 static gint ett_gsm_map_Cug_RejectParam = -1;
1265 static gint ett_gsm_map_Ati_NotAllowedParam = -1;
1266 static gint ett_gsm_map_NoGroupCallNbParam = -1;
1267 static gint ett_gsm_map_SS_IncompatibilityCause = -1;
1268 static gint ett_gsm_map_ShortTermDenialParam = -1;
1269 static gint ett_gsm_map_LongTermDenialParam = -1;
1270 static gint ett_gsm_map_SubBusyForMT_SMS_Param = -1;
1271 static gint ett_gsm_map_Sm_DeliveryFailureCause = -1;
1272 static gint ett_gsm_map_MessageWaitListFullParam = -1;
1273 static gint ett_gsm_map_AbsentSubscriberSM_Param = -1;
1274 static gint ett_gsm_map_UnauthorizedRequestingNetwork_Param = -1;
1275 static gint ett_gsm_map_UnauthorizedLCSClient_Param = -1;
1276 static gint ett_gsm_map_PositionMethodFailure_Param = -1;
1277 static gint ett_gsm_map_UnknownOrUnreachableLCSClient_Param = -1;
1278 static gint ett_gsm_map_ExtensionContainer = -1;
1279
1280 /*--- End of included file: packet-gsm_map-ett.c ---*/
1281
1282
1283 static dissector_table_t        sms_dissector_table;    /* SMS TPDU */
1284 static dissector_handle_t data_handle;
1285
1286 /* Preferenc settings default */
1287 #define MAX_SSN 254
1288 static range_t *global_ssn_range;
1289 static range_t *ssn_range;
1290 dissector_handle_t      map_handle;
1291
1292 /* Global variables */
1293
1294 static proto_tree *top_tree;
1295 static int application_context_version;
1296 gint protocolId;
1297 gint AccessNetworkProtocolId;
1298 static int gsm_map_tap = -1;
1299
1300
1301 char*
1302 unpack_digits(tvbuff_t *tvb, int offset){
1303
1304         int length;
1305         guint8 octet;
1306         int i=0;
1307         char *digit_str;
1308
1309         length = tvb_length(tvb);
1310         if (length < offset)
1311                 return NULL;
1312         length = length - offset;
1313         digit_str = g_malloc(length*2+1);
1314
1315         while ( offset <= length ){
1316
1317                 octet = tvb_get_guint8(tvb,offset);
1318                 digit_str[i] = ((octet & 0x0f) + 0x30);
1319                 i++;
1320
1321                 /*
1322                  * unpack second value in byte
1323                  */
1324                 octet = octet >> 4;
1325
1326                 if (octet == 0x0f)      /* odd number bytes - hit filler */
1327                         break;
1328
1329                 digit_str[i] = ((octet & 0x0f) + 0x30);
1330                 i++;
1331                 offset++;
1332
1333         }
1334         digit_str[i]= '\0';
1335         return digit_str;
1336 }
1337
1338
1339
1340 /*--- Included file: packet-gsm_map-fn.c ---*/
1341
1342 /*--- Fields for imported types ---*/
1343
1344
1345
1346 static const value_string gsm_map_ProtocolId_vals[] = {
1347   {   1, "gsm-0408" },
1348   {   2, "gsm-0806" },
1349   {   3, "gsm-BSSMAP" },
1350   {   4, "ets-300102-1" },
1351   { 0, NULL }
1352 };
1353
1354
1355 static int
1356 dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1357   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1358                                   &protocolId);
1359
1360   return offset;
1361 }
1362 static int dissect_protocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1363   return dissect_gsm_map_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protocolId);
1364 }
1365
1366
1367
1368 static int
1369 dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1370
1371  tvbuff_t       *parameter_tvb;
1372  guint8         octet;
1373  guint8         length;
1374  tvbuff_t       *next_tvb;
1375
1376  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1377                                     &parameter_tvb);
1378  if (!parameter_tvb)
1379         return offset;
1380  switch (protocolId){
1381         /* gsm-0408 */
1382         case 1:
1383                 break;
1384         /* gsm-0806 */
1385         case 2:
1386                 break;
1387         /* gsm-BSSMAP TODO Is it correct to stripp off tw first octets here?*/
1388         case 3:
1389                 octet = tvb_get_guint8(parameter_tvb,0);
1390                 length = tvb_get_guint8(parameter_tvb,1);
1391                 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
1392                         next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
1393                         dissect_bssmap(next_tvb, pinfo, tree);
1394                 }
1395                 break;
1396         /* ets-300102-1 (~Q.931 ) */
1397         case 4:
1398                 octet = tvb_get_guint8(parameter_tvb,0);
1399                 length = tvb_get_guint8(parameter_tvb,1);
1400                 if ( octet == 4 )
1401                         dissect_q931_bearer_capability_ie(parameter_tvb, 2, length, tree);
1402                 break;
1403         default:
1404                 break;
1405 }
1406
1407
1408   return offset;
1409 }
1410 static int dissect_signalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1411   return dissect_gsm_map_SignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_signalInfo);
1412 }
1413
1414
1415
1416 static int
1417 dissect_gsm_map_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1418   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1419                                             NULL);
1420
1421   return offset;
1422 }
1423 static int dissect_extId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1424   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extId);
1425 }
1426 static int dissect_globalValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1427   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_globalValue);
1428 }
1429
1430
1431
1432 static int
1433 dissect_gsm_map_T_extType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1434
1435   proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
1436   call_dissector(data_handle, tvb, pinfo, tree);        
1437   offset = tvb_length_remaining(tvb,offset);            
1438
1439
1440   return offset;
1441 }
1442 static int dissect_extType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1443   return dissect_gsm_map_T_extType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extType);
1444 }
1445
1446 static const ber_sequence_t PrivateExtension_sequence[] = {
1447   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extId },
1448   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extType },
1449   { 0, 0, 0, NULL }
1450 };
1451
1452 static int
1453 dissect_gsm_map_PrivateExtension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1454   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1455                                 PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension);
1456
1457   return offset;
1458 }
1459 static int dissect_PrivateExtensionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1460   return dissect_gsm_map_PrivateExtension(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PrivateExtensionList_item);
1461 }
1462
1463 static const ber_sequence_t PrivateExtensionList_sequence_of[1] = {
1464   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PrivateExtensionList_item },
1465 };
1466
1467 static int
1468 dissect_gsm_map_PrivateExtensionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1469   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1470                                    PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList);
1471
1472   return offset;
1473 }
1474 static int dissect_privateExtensionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1475   return dissect_gsm_map_PrivateExtensionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privateExtensionList);
1476 }
1477
1478 static const ber_sequence_t PcsExtensions_sequence[] = {
1479   { 0, 0, 0, NULL }
1480 };
1481
1482 static int
1483 dissect_gsm_map_PcsExtensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1484   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1485                                 PcsExtensions_sequence, hf_index, ett_gsm_map_PcsExtensions);
1486
1487   return offset;
1488 }
1489 static int dissect_pcsExtensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1490   return dissect_gsm_map_PcsExtensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pcsExtensions);
1491 }
1492
1493 static const ber_sequence_t ExtensionContainer_sequence[] = {
1494   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
1495   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pcsExtensions_impl },
1496   { 0, 0, 0, NULL }
1497 };
1498
1499 static int
1500 dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1501   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1502                                 ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer);
1503
1504   return offset;
1505 }
1506 static int dissect_extensionContainer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1507   return dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
1508 }
1509 static int dissect_extensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1510   return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
1511 }
1512
1513 static const ber_sequence_t Bss_APDU_sequence[] = {
1514   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
1515   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
1516   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1517   { 0, 0, 0, NULL }
1518 };
1519
1520 static int
1521 dissect_gsm_map_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1522   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1523                                 Bss_APDU_sequence, hf_index, ett_gsm_map_Bss_APDU);
1524
1525   return offset;
1526 }
1527 static int dissect_bss_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1528   return dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bss_APDU);
1529 }
1530
1531
1532
1533 static int
1534 dissect_gsm_map_SignalInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1535   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1536                                        NULL);
1537
1538   return offset;
1539 }
1540
1541 static const asn_namedbit SupportedCamelPhases_bits[] = {
1542   {  0, &hf_gsm_map_SupportedCamelPhases_phase1, -1, -1, "phase1", NULL },
1543   {  1, &hf_gsm_map_SupportedCamelPhases_phase2, -1, -1, "phase2", NULL },
1544   {  2, &hf_gsm_map_SupportedCamelPhases_phase3, -1, -1, "phase3", NULL },
1545   {  3, &hf_gsm_map_SupportedCamelPhases_phase4, -1, -1, "phase4", NULL },
1546   { 0, NULL, 0, 0, NULL, NULL }
1547 };
1548
1549 static int
1550 dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1551   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
1552                                  SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
1553                                  NULL);
1554
1555   return offset;
1556 }
1557 static int dissect_supportedCamelPhases(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1558   return dissect_gsm_map_SupportedCamelPhases(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
1559 }
1560 static int dissect_supportedCamelPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1561   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
1562 }
1563 static int dissect_supportedCamelPhasesInVMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1564   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInVMSC);
1565 }
1566 static int dissect_supportedCamelPhasesInInterrogatingNode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1567   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInInterrogatingNode);
1568 }
1569 static int dissect_supportedVLR_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1570   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases);
1571 }
1572 static int dissect_supportedSGSN_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1573   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases);
1574 }
1575 static int dissect_supportedCAMELPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1576   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCAMELPhases);
1577 }
1578
1579
1580
1581 static int
1582 dissect_gsm_map_IMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1583
1584  tvbuff_t       *parameter_tvb;
1585  char           *digit_str;
1586
1587  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1588                                     &parameter_tvb);
1589  if (!parameter_tvb)
1590         return offset;
1591
1592  digit_str = unpack_digits(parameter_tvb, 0);
1593
1594  proto_tree_add_string(tree, hf_gsm_map_imsi_digits, parameter_tvb, 0, -1, digit_str);
1595  if (digit_str)
1596         g_free(digit_str);
1597  
1598
1599
1600
1601   return offset;
1602 }
1603 static int dissect_imsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1604   return dissect_gsm_map_IMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
1605 }
1606 static int dissect_imsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1607   return dissect_gsm_map_IMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
1608 }
1609
1610
1611
1612 static int
1613 dissect_gsm_map_ISDN_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1614
1615  tvbuff_t       *parameter_tvb;
1616  char           *digit_str;
1617
1618  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1619                                     &parameter_tvb);
1620
1621  if (!parameter_tvb)
1622         return offset;
1623
1624  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
1625  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
1626  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
1627
1628  digit_str = unpack_digits(parameter_tvb, 1);
1629
1630  proto_tree_add_string(tree, hf_gsm_map_isdn_address_digits, parameter_tvb, 1, -1, digit_str);
1631  if (digit_str)
1632         g_free(digit_str);
1633
1634  pinfo->p2p_dir = P2P_DIR_RECV;
1635
1636
1637   return offset;
1638 }
1639 static int dissect_msc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1640   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
1641 }
1642 static int dissect_msc_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1643   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
1644 }
1645 static int dissect_vlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1646   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
1647 }
1648 static int dissect_vlr_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1649   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
1650 }
1651 static int dissect_hlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1652   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_Number);
1653 }
1654 static int dissect_sgsn_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1655   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
1656 }
1657 static int dissect_sgsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1658   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
1659 }
1660 static int dissect_handoverNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1661   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
1662 }
1663 static int dissect_handoverNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1664   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
1665 }
1666 static int dissect_targetMSC_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1667   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
1668 }
1669 static int dissect_targetMSC_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1670   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
1671 }
1672 static int dissect_gsmSCF_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1673   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
1674 }
1675 static int dissect_gsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1676   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
1677 }
1678 static int dissect_msisdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1679   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
1680 }
1681 static int dissect_msisdn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1682   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
1683 }
1684 static int dissect_GMLC_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1685   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GMLC_List_item);
1686 }
1687 static int dissect_dialledNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1688   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_dialledNumber);
1689 }
1690 static int dissect_forwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1691   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber);
1692 }
1693 static int dissect_DestinationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1694   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DestinationNumberList_item);
1695 }
1696 static int dissect_gmsc_OrGsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1697   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_OrGsmSCF_Address);
1698 }
1699 static int dissect_vmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1700   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vmsc_Address);
1701 }
1702 static int dissect_externalAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1703   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalAddress);
1704 }
1705 static int dissect_roamingNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1706   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNumber);
1707 }
1708 static int dissect_vlr_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1709   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_number);
1710 }
1711 static int dissect_gmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1712   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_Address);
1713 }
1714 static int dissect_b_Subscriber_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1715   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_Subscriber_Address);
1716 }
1717 static int dissect_sIWFSNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1718   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sIWFSNumber);
1719 }
1720 static int dissect_msrn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1721   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msrn);
1722 }
1723 static int dissect_translatedB_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1724   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
1725 }
1726 static int dissect_translatedB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1727   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
1728 }
1729 static int dissect_networkNode_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1730   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
1731 }
1732 static int dissect_networkNode_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1733   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
1734 }
1735 static int dissect_b_subscriberNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1736   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberNumber);
1737 }
1738 static int dissect_groupCallNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1739   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupCallNumber);
1740 }
1741 static int dissect_ggsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1742   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Number);
1743 }
1744 static int dissect_mlc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1745   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mlc_Number);
1746 }
1747 static int dissect_mlcNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1748   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mlcNumber);
1749 }
1750 static int dissect_na_ESRD_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1751   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRD);
1752 }
1753 static int dissect_na_ESRK_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1754   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK);
1755 }
1756
1757
1758
1759 static int
1760 dissect_gsm_map_LMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1761   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1762                                        NULL);
1763
1764   return offset;
1765 }
1766 static int dissect_lmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1767   return dissect_gsm_map_LMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
1768 }
1769 static int dissect_lmsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1770   return dissect_gsm_map_LMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
1771 }
1772
1773
1774
1775 static int
1776 dissect_gsm_map_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1777   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
1778
1779   return offset;
1780 }
1781 static int dissect_informPreviousNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1782   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_informPreviousNetworkEntity);
1783 }
1784 static int dissect_cs_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1785   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_LCS_NotSupportedByUE);
1786 }
1787 static int dissect_add_Capability(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1788   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_add_Capability);
1789 }
1790 static int dissect_solsaSupportIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1791   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1792 }
1793 static int dissect_solsaSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1794   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1795 }
1796 static int dissect_longFTN_Supported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1797   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longFTN_Supported);
1798 }
1799 static int dissect_sendSubscriberData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1800   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sendSubscriberData);
1801 }
1802 static int dissect_skipSubscriberDataUpdate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1803   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_skipSubscriberDataUpdate);
1804 }
1805 static int dissect_na_ESRK_Request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1806   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK_Request);
1807 }
1808 static int dissect_freezeTMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1809   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeTMSI);
1810 }
1811 static int dissect_freezeP_TMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1812   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeP_TMSI);
1813 }
1814 static int dissect_segmentationProhibited(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1815   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_segmentationProhibited);
1816 }
1817 static int dissect_ho_NumberNotRequired(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1818   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ho_NumberNotRequired);
1819 }
1820 static int dissect_multipleBearerRequested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1821   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerRequested);
1822 }
1823 static int dissect_rab_ConfigurationIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1824   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1825 }
1826 static int dissect_rab_ConfigurationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1827   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1828 }
1829 static int dissect_multipleBearerNotSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1830   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerNotSupported);
1831 }
1832 static int dissect_immediateResponsePreferred_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1833   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_immediateResponsePreferred);
1834 }
1835 static int dissect_notificationToCSE(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1836   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1837 }
1838 static int dissect_notificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1839   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1840 }
1841 static int dissect_csiActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1842   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csiActive);
1843 }
1844 static int dissect_roamingRestrictionDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1845   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictionDueToUnsupportedFeature);
1846 }
1847 static int dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1848   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature);
1849 }
1850 static int dissect_lmu_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1851   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmu_Indicator);
1852 }
1853 static int dissect_vplmnAddressAllowed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1854   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vplmnAddressAllowed);
1855 }
1856 static int dissect_completeDataListIncluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1857   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_completeDataListIncluded);
1858 }
1859 static int dissect_csi_Active_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1860   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csi_Active);
1861 }
1862 static int dissect_lsaActiveModeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1863   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaActiveModeIndicator);
1864 }
1865 static int dissect_vbsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1866   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsGroupIndication);
1867 }
1868 static int dissect_vgcsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1869   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsGroupIndication);
1870 }
1871 static int dissect_camelSubscriptionInfoWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1872   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelSubscriptionInfoWithdraw);
1873 }
1874 static int dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1875   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature);
1876 }
1877 static int dissect_gmlc_ListWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1878   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_ListWithdraw);
1879 }
1880 static int dissect_istInformationWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1881   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_istInformationWithdraw);
1882 }
1883 static int dissect_istInformationWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1884   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istInformationWithdraw);
1885 }
1886 static int dissect_chargingCharacteristicsWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1887   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristicsWithdraw);
1888 }
1889 static int dissect_allGPRSData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1890   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allGPRSData);
1891 }
1892 static int dissect_allLSAData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1893   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allLSAData);
1894 }
1895 static int dissect_tif_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1896   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI);
1897 }
1898 static int dissect_msNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1899   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msNotReachable);
1900 }
1901 static int dissect_broadcastInitEntitlement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1902   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_broadcastInitEntitlement);
1903 }
1904 static int dissect_or_Interrogation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1905   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Interrogation);
1906 }
1907 static int dissect_ccbs_Call_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1908   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Call);
1909 }
1910 static int dissect_pre_pagingSupported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1911   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pre_pagingSupported);
1912 }
1913 static int dissect_suppress_VT_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1914   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_VT_CSI);
1915 }
1916 static int dissect_suppress_VT_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1917   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_VT_CSI);
1918 }
1919 static int dissect_suppressIncomingCallBarring(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1920   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppressIncomingCallBarring);
1921 }
1922 static int dissect_gsmSCF_InitiatedCall(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1923   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_InitiatedCall);
1924 }
1925 static int dissect_cugSubscriptionFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1926   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cugSubscriptionFlag);
1927 }
1928 static int dissect_forwardingInterrogationRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1929   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInterrogationRequired);
1930 }
1931 static int dissect_releaseResourcesSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1932   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_releaseResourcesSupported);
1933 }
1934 static int dissect_releaseResourcesSupported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1935   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseResourcesSupported);
1936 }
1937 static int dissect_suppress_T_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1938   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_T_CSI);
1939 }
1940 static int dissect_ccbs_Possible_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1941   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Possible);
1942 }
1943 static int dissect_keepCCBS_CallIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1944   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_keepCCBS_CallIndicator);
1945 }
1946 static int dissect_currentLocationRetrieved(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1947   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
1948 }
1949 static int dissect_currentLocationRetrieved_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1950   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
1951 }
1952 static int dissect_sai_Present(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1953   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
1954 }
1955 static int dissect_sai_Present_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1956   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
1957 }
1958 static int dissect_assumedIdle_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1959   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_assumedIdle);
1960 }
1961 static int dissect_camelBusy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1962   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelBusy);
1963 }
1964 static int dissect_notProvidedFromVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1965   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromVLR);
1966 }
1967 static int dissect_notProvidedFromSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1968   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromSGSN);
1969 }
1970 static int dissect_ps_Detached_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1971   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_Detached);
1972 }
1973 static int dissect_ps_AttachedNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1974   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedNotReachableForPaging);
1975 }
1976 static int dissect_ps_AttachedReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1977   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedReachableForPaging);
1978 }
1979 static int dissect_pdp_ContextActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1980   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextActive);
1981 }
1982 static int dissect_cug_OutgoingAccess(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1983   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_OutgoingAccess);
1984 }
1985 static int dissect_orNotSupportedInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1986   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_orNotSupportedInGMSC);
1987 }
1988 static int dissect_allInformationSent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1989   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
1990 }
1991 static int dissect_allInformationSent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1992   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
1993 }
1994 static int dissect_uusCFInteraction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1995   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uusCFInteraction);
1996 }
1997 static int dissect_replaceB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1998   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_replaceB_Number);
1999 }
2000 static int dissect_gprsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2001   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSupportIndicator);
2002 }
2003 static int dissect_gprsNodeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2004   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsNodeIndicator);
2005 }
2006 static int dissect_noSM_RP_OA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2007   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_OA);
2008 }
2009 static int dissect_noSM_RP_DA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2010   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_DA);
2011 }
2012 static int dissect_moreMessagesToSend(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2013   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_moreMessagesToSend);
2014 }
2015 static int dissect_deliveryOutcomeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2016   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deliveryOutcomeIndicator);
2017 }
2018 static int dissect_alertReasonIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2019   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReasonIndicator);
2020 }
2021 static int dissect_locationInformation_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2022   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation_flg);
2023 }
2024 static int dissect_subscriberState_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2025   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState_flg);
2026 }
2027 static int dissect_currentLocation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2028   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocation);
2029 }
2030 static int dissect_imei_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2031   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei_flg);
2032 }
2033 static int dissect_ms_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2034   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_classmark);
2035 }
2036 static int dissect_mnpRequestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2037   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpRequestedInfo);
2038 }
2039 static int dissect_odb_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2040   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb);
2041 }
2042 static int dissect_supportedVLR_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2043   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases_flg);
2044 }
2045 static int dissect_supportedSGSN_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2046   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases_flg);
2047 }
2048 static int dissect_tif_CSI_NotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2049   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI_NotificationToCSE);
2050 }
2051 static int dissect_uplinkFree_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2052   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkFree);
2053 }
2054 static int dissect_uplinkRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2055   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequest);
2056 }
2057 static int dissect_uplinkReleaseIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2058   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseIndication);
2059 }
2060 static int dissect_releaseGroupCall_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2061   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseGroupCall);
2062 }
2063 static int dissect_uplinkRequestAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2064   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequestAck);
2065 }
2066 static int dissect_uplinkRejectCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2067   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRejectCommand);
2068 }
2069 static int dissect_uplinkSeizedCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2070   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkSeizedCommand);
2071 }
2072 static int dissect_uplinkReleaseCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2073   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseCommand);
2074 }
2075 static int dissect_ps_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2076   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_LCS_NotSupportedByUE);
2077 }
2078 static int dissect_gprsEnhancementsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2079   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsEnhancementsSupportIndicator);
2080 }
2081 static int dissect_smsCallBarringSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2082   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_smsCallBarringSupportIndicator);
2083 }
2084 static int dissect_privacyOverride_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2085   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privacyOverride);
2086 }
2087 static int dissect_verticalCoordinateRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2088   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_verticalCoordinateRequest);
2089 }
2090 static int dissect_deferredmt_lrResponseIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2091   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredmt_lrResponseIndicator);
2092 }
2093 static int dissect_pseudonymIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2094   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pseudonymIndicator);
2095 }
2096 static int dissect_userInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2097   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_userInfo);
2098 }
2099 static int dissect_ccbs_Busy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2100   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Busy);
2101 }
2102 static int dissect_unauthorisedMessageOriginator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2103   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorisedMessageOriginator);
2104 }
2105 static int dissect_gprsConnectionSuspended(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2106   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsConnectionSuspended);
2107 }
2108
2109
2110 static const value_string gsm_map_IST_SupportIndicator_vals[] = {
2111   {   0, "basicISTSupported" },
2112   {   1, "istCommandSupported" },
2113   { 0, NULL }
2114 };
2115
2116
2117 static int
2118 dissect_gsm_map_IST_SupportIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2119   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2120                                   NULL);
2121
2122   return offset;
2123 }
2124 static int dissect_istSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2125   return dissect_gsm_map_IST_SupportIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istSupportIndicator);
2126 }
2127
2128
2129
2130 static int
2131 dissect_gsm_map_AgeIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2132   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2133                                        NULL);
2134
2135   return offset;
2136 }
2137 static int dissect_subscriberDataStored_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2138   return dissect_gsm_map_AgeIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberDataStored);
2139 }
2140 static int dissect_superChargerSupportedInHLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2141   return dissect_gsm_map_AgeIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInHLR);
2142 }
2143
2144
2145 static const value_string gsm_map_SuperChargerInfo_vals[] = {
2146   {   0, "sendSubscriberData" },
2147   {   1, "subscriberDataStored" },
2148   { 0, NULL }
2149 };
2150
2151 static const ber_choice_t SuperChargerInfo_choice[] = {
2152   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sendSubscriberData_impl },
2153   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_subscriberDataStored_impl },
2154   { 0, 0, 0, 0, NULL }
2155 };
2156
2157 static int
2158 dissect_gsm_map_SuperChargerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2159   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
2160                               SuperChargerInfo_choice, hf_index, ett_gsm_map_SuperChargerInfo, NULL);
2161
2162   return offset;
2163 }
2164 static int dissect_superChargerSupportedInServingNetworkEntity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2165   return dissect_gsm_map_SuperChargerInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
2166 }
2167 static int dissect_superChargerSupportedInServingNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2168   return dissect_gsm_map_SuperChargerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
2169 }
2170
2171 static const asn_namedbit SupportedLCS_CapabilitySets_bits[] = {
2172   {  0, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1, -1, -1, "lcsCapabilitySet1", NULL },
2173   {  1, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2, -1, -1, "lcsCapabilitySet2", NULL },
2174   {  2, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3, -1, -1, "lcsCapabilitySet3", NULL },
2175   {  3, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4, -1, -1, "lcsCapabilitySet4", NULL },
2176   { 0, NULL, 0, 0, NULL, NULL }
2177 };
2178
2179 static int
2180 dissect_gsm_map_SupportedLCS_CapabilitySets(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2181   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2182                                  SupportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_SupportedLCS_CapabilitySets,
2183                                  NULL);
2184
2185   return offset;
2186 }
2187 static int dissect_supportedLCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2188   return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedLCS_CapabilitySets);
2189 }
2190 static int dissect_additional_LCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2191   return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_LCS_CapabilitySets);
2192 }
2193
2194 static const asn_namedbit OfferedCamel4CSIs_bits[] = {
2195   {  0, &hf_gsm_map_OfferedCamel4CSIs_o_csi, -1, -1, "o-csi", NULL },
2196   {  1, &hf_gsm_map_OfferedCamel4CSIs_d_csi, -1, -1, "d-csi", NULL },
2197   {  2, &hf_gsm_map_OfferedCamel4CSIs_vt_csi, -1, -1, "vt-csi", NULL },
2198   {  3, &hf_gsm_map_OfferedCamel4CSIs_t_csi, -1, -1, "t-csi", NULL },
2199   {  4, &hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
2200   {  5, &hf_gsm_map_OfferedCamel4CSIs_mg_csi, -1, -1, "mg-csi", NULL },
2201   {  6, &hf_gsm_map_OfferedCamel4CSIs_psi_enhancements, -1, -1, "psi-enhancements", NULL },
2202   { 0, NULL, 0, 0, NULL, NULL }
2203 };
2204
2205 static int
2206 dissect_gsm_map_OfferedCamel4CSIs(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2207   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2208                                  OfferedCamel4CSIs_bits, hf_index, ett_gsm_map_OfferedCamel4CSIs,
2209                                  NULL);
2210
2211   return offset;
2212 }
2213 static int dissect_offeredCamel4CSIs_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2214   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIs);
2215 }
2216 static int dissect_offeredCamel4CSIsInVMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2217   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVMSC);
2218 }
2219 static int dissect_offeredCamel4CSIsInInterrogatingNode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2220   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInInterrogatingNode);
2221 }
2222 static int dissect_offeredCamel4CSIsInVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2223   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVLR);
2224 }
2225 static int dissect_offeredCamel4CSIsInSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2226   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInSGSN);
2227 }
2228
2229 static const ber_sequence_t VLR_Capability_sequence[] = {
2230   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
2231   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2232   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_solsaSupportIndicator_impl },
2233   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
2234   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_superChargerSupportedInServingNetworkEntity },
2235   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
2236   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
2237   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
2238   { 0, 0, 0, NULL }
2239 };
2240
2241 static int
2242 dissect_gsm_map_VLR_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2243   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2244                                 VLR_Capability_sequence, hf_index, ett_gsm_map_VLR_Capability);
2245
2246   return offset;
2247 }
2248 static int dissect_vlr_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2249   return dissect_gsm_map_VLR_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Capability);
2250 }
2251
2252
2253
2254 static int
2255 dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2256   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2257                                        NULL);
2258
2259   return offset;
2260 }
2261 static int dissect_v_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2262   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
2263 }
2264 static int dissect_v_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2265   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
2266 }
2267 static int dissect_ggsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2268   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Address);
2269 }
2270 static int dissect_rnc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2271   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rnc_Address);
2272 }
2273 static int dissect_sgsn_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2274   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
2275 }
2276 static int dissect_sgsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2277   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
2278 }
2279 static int dissect_h_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2280   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_h_gmlc_Address);
2281 }
2282 static int dissect_h_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2283   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_h_gmlc_Address);
2284 }
2285 static int dissect_ppr_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2286   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ppr_Address);
2287 }
2288 static int dissect_additional_v_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2289   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additional_v_gmlc_Address);
2290 }
2291
2292
2293
2294 static int
2295 dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2296   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2297                                        NULL);
2298
2299   return offset;
2300 }
2301
2302
2303 static int
2304 dissect_gsm_map_IMEI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2305   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2306
2307   return offset;
2308 }
2309 static int dissect_imeisv_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2310   return dissect_gsm_map_IMEI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imeisv);
2311 }
2312 static int dissect_imei(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2313   return dissect_gsm_map_IMEI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
2314 }
2315 static int dissect_imei_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2316   return dissect_gsm_map_IMEI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
2317 }
2318
2319 static const ber_sequence_t ADD_Info_sequence[] = {
2320   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
2321   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_skipSubscriberDataUpdate_impl },
2322   { 0, 0, 0, NULL }
2323 };
2324
2325 static int
2326 dissect_gsm_map_ADD_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2327   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2328                                 ADD_Info_sequence, hf_index, ett_gsm_map_ADD_Info);
2329
2330   return offset;
2331 }
2332 static int dissect_add_info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2333   return dissect_gsm_map_ADD_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_info);
2334 }
2335
2336 static const ber_sequence_t UpdateLocationArg_sequence[] = {
2337   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2338   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
2339   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_vlr_Number },
2340   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
2341   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2342   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
2343   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
2344   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_LCS_NotSupportedByUE_impl },
2345   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
2346   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
2347   { 0, 0, 0, NULL }
2348 };
2349
2350 static int
2351 dissect_gsm_map_UpdateLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2352   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2353                                 UpdateLocationArg_sequence, hf_index, ett_gsm_map_UpdateLocationArg);
2354
2355   return offset;
2356 }
2357
2358 static const ber_sequence_t UpdateLocationRes_sequence[] = {
2359   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
2360   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2361   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_add_Capability },
2362   { 0, 0, 0, NULL }
2363 };
2364
2365 static int
2366 dissect_gsm_map_UpdateLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2367   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2368                                 UpdateLocationRes_sequence, hf_index, ett_gsm_map_UpdateLocationRes);
2369
2370   return offset;
2371 }
2372
2373 static const ber_sequence_t SLR_Arg_PCS_Extensions_sequence[] = {
2374   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_Request_impl },
2375   { 0, 0, 0, NULL }
2376 };
2377
2378 static int
2379 dissect_gsm_map_SLR_Arg_PCS_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2380   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2381                                 SLR_Arg_PCS_Extensions_sequence, hf_index, ett_gsm_map_SLR_Arg_PCS_Extensions);
2382
2383   return offset;
2384 }
2385 static int dissect_slr_Arg_PCS_Extensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2386   return dissect_gsm_map_SLR_Arg_PCS_Extensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_slr_Arg_PCS_Extensions);
2387 }
2388
2389 static const ber_sequence_t SLR_ArgExtensionContainer_sequence[] = {
2390   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
2391   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_slr_Arg_PCS_Extensions_impl },
2392   { 0, 0, 0, NULL }
2393 };
2394
2395 static int
2396 dissect_gsm_map_SLR_ArgExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2397   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2398                                 SLR_ArgExtensionContainer_sequence, hf_index, ett_gsm_map_SLR_ArgExtensionContainer);
2399
2400   return offset;
2401 }
2402 static int dissect_slr_ArgExtensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2403   return dissect_gsm_map_SLR_ArgExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_slr_ArgExtensionContainer);
2404 }
2405
2406
2407
2408 static int
2409 dissect_gsm_map_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2410   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2411                                        NULL);
2412
2413   return offset;
2414 }
2415 static int dissect_teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2416   return dissect_gsm_map_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
2417 }
2418
2419
2420
2421 static int
2422 dissect_gsm_map_Bearerservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2423   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2424                                        NULL);
2425
2426   return offset;
2427 }
2428 static int dissect_bearerservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2429   return dissect_gsm_map_Bearerservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerservice);
2430 }
2431
2432
2433
2434 static int
2435 dissect_gsm_map_Msc_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2436   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2437                                        NULL);
2438
2439   return offset;
2440 }
2441
2442 static const ber_sequence_t IMSI_WithLMSI_sequence[] = {
2443   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2444   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lmsi },
2445   { 0, 0, 0, NULL }
2446 };
2447
2448 static int
2449 dissect_gsm_map_IMSI_WithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2450   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2451                                 IMSI_WithLMSI_sequence, hf_index, ett_gsm_map_IMSI_WithLMSI);
2452
2453   return offset;
2454 }
2455 static int dissect_imsi_WithLMSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2456   return dissect_gsm_map_IMSI_WithLMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi_WithLMSI);
2457 }
2458
2459
2460 static const value_string gsm_map_Identity_vals[] = {
2461   {   0, "imsi" },
2462   {   1, "imsi-WithLMSI" },
2463   { 0, NULL }
2464 };
2465
2466 static const ber_choice_t Identity_choice[] = {
2467   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2468   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
2469   { 0, 0, 0, 0, NULL }
2470 };
2471
2472 static int
2473 dissect_gsm_map_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2474   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
2475                               Identity_choice, hf_index, ett_gsm_map_Identity, NULL);
2476
2477   return offset;
2478 }
2479 static int dissect_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2480   return dissect_gsm_map_Identity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_identity);
2481 }
2482
2483
2484 static const value_string gsm_map_CancellationType_vals[] = {
2485   {   0, "updateProcedure" },
2486   {   1, "subscriptionWithdraw" },
2487   { 0, NULL }
2488 };
2489
2490
2491 static int
2492 dissect_gsm_map_CancellationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2493   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2494                                   NULL);
2495
2496   return offset;
2497 }
2498 static int dissect_cancellationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2499   return dissect_gsm_map_CancellationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cancellationType);
2500 }
2501
2502 static const ber_sequence_t CancelLocationArg_sequence[] = {
2503   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
2504   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cancellationType },
2505   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2506   { 0, 0, 0, NULL }
2507 };
2508
2509 static int
2510 dissect_gsm_map_CancelLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2511   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2512                                 CancelLocationArg_sequence, hf_index, ett_gsm_map_CancelLocationArg);
2513
2514   return offset;
2515 }
2516
2517 static const ber_sequence_t CancelLocationRes_sequence[] = {
2518   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2519   { 0, 0, 0, NULL }
2520 };
2521
2522 static int
2523 dissect_gsm_map_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2524   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2525                                 CancelLocationRes_sequence, hf_index, ett_gsm_map_CancelLocationRes);
2526
2527   return offset;
2528 }
2529
2530 static const ber_sequence_t PurgeMSArg_sequence[] = {
2531   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2532   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
2533   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
2534   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2535   { 0, 0, 0, NULL }
2536 };
2537
2538 static int
2539 dissect_gsm_map_PurgeMSArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2540   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2541                                 PurgeMSArg_sequence, hf_index, ett_gsm_map_PurgeMSArg);
2542
2543   return offset;
2544 }
2545
2546 static const ber_sequence_t PurgeMSRes_sequence[] = {
2547   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeTMSI_impl },
2548   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeP_TMSI_impl },
2549   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2550   { 0, 0, 0, NULL }
2551 };
2552
2553 static int
2554 dissect_gsm_map_PurgeMSRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2555   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2556                                 PurgeMSRes_sequence, hf_index, ett_gsm_map_PurgeMSRes);
2557
2558   return offset;
2559 }
2560
2561
2562
2563 static int
2564 dissect_gsm_map_TMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2565   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2566                                        NULL);
2567
2568   return offset;
2569 }
2570 static int dissect_tmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2571   return dissect_gsm_map_TMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_tmsi);
2572 }
2573
2574
2575
2576 static int
2577 dissect_gsm_map_NumberOfRequestedVectors(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2578   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2579                                   NULL);
2580
2581   return offset;
2582 }
2583 static int dissect_numberOfRequestedVectors(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2584   return dissect_gsm_map_NumberOfRequestedVectors(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfRequestedVectors);
2585 }
2586
2587
2588
2589 static int
2590 dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2591   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2592                                        NULL);
2593
2594   return offset;
2595 }
2596 static int dissect_previous_LAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2597   return dissect_gsm_map_LAIFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_previous_LAI);
2598 }
2599 static int dissect_laiFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2600   return dissect_gsm_map_LAIFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_laiFixedLength);
2601 }
2602
2603
2604
2605 static int
2606 dissect_gsm_map_HopCounter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2607   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2608                                   NULL);
2609
2610   return offset;
2611 }
2612 static int dissect_hopCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2613   return dissect_gsm_map_HopCounter(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_hopCounter);
2614 }
2615
2616 static const ber_sequence_t SendIdentificationArg_sequence[] = {
2617   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_tmsi },
2618   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
2619   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
2620   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2621   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msc_Number },
2622   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_previous_LAI_impl },
2623   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_hopCounter_impl },
2624   { 0, 0, 0, NULL }
2625 };
2626
2627 static int
2628 dissect_gsm_map_SendIdentificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2629   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2630                                 SendIdentificationArg_sequence, hf_index, ett_gsm_map_SendIdentificationArg);
2631
2632   return offset;
2633 }
2634
2635
2636
2637 static int
2638 dissect_gsm_map_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2639   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2640                                        NULL);
2641
2642   return offset;
2643 }
2644 static int dissect_rand(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2645   return dissect_gsm_map_RAND(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rand);
2646 }
2647
2648
2649
2650 static int
2651 dissect_gsm_map_SRES(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2652   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2653                                        NULL);
2654
2655   return offset;
2656 }
2657 static int dissect_sres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2658   return dissect_gsm_map_SRES(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sres);
2659 }
2660
2661
2662
2663 static int
2664 dissect_gsm_map_Kc(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2665   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2666                                        NULL);
2667
2668   return offset;
2669 }
2670 static int dissect_kc(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2671   return dissect_gsm_map_Kc(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_kc);
2672 }
2673 static int dissect_groupKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2674   return dissect_gsm_map_Kc(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKey);
2675 }
2676
2677 static const ber_sequence_t AuthenticationTriplet_sequence[] = {
2678   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
2679   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
2680   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
2681   { 0, 0, 0, NULL }
2682 };
2683
2684 static int
2685 dissect_gsm_map_AuthenticationTriplet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2686   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2687                                 AuthenticationTriplet_sequence, hf_index, ett_gsm_map_AuthenticationTriplet);
2688
2689   return offset;
2690 }
2691 static int dissect_TripletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2692   return dissect_gsm_map_AuthenticationTriplet(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TripletList_item);
2693 }
2694
2695 static const ber_sequence_t TripletList_sequence_of[1] = {
2696   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TripletList_item },
2697 };
2698
2699 static int
2700 dissect_gsm_map_TripletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2701   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2702                                    TripletList_sequence_of, hf_index, ett_gsm_map_TripletList);
2703
2704   return offset;
2705 }
2706 static int dissect_tripletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2707   return dissect_gsm_map_TripletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList);
2708 }
2709
2710
2711
2712 static int
2713 dissect_gsm_map_XRES(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2714   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2715                                        NULL);
2716
2717   return offset;
2718 }
2719 static int dissect_xres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2720   return dissect_gsm_map_XRES(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_xres);
2721 }
2722
2723
2724
2725 static int
2726 dissect_gsm_map_CK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2727   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2728                                        NULL);
2729
2730   return offset;
2731 }
2732 static int dissect_ck(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2733   return dissect_gsm_map_CK(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ck);
2734 }
2735
2736
2737
2738 static int
2739 dissect_gsm_map_IK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2740   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2741                                        NULL);
2742
2743   return offset;
2744 }
2745 static int dissect_ik(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2746   return dissect_gsm_map_IK(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ik);
2747 }
2748
2749
2750
2751 static int
2752 dissect_gsm_map_AUTN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2753   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2754                                        NULL);
2755
2756   return offset;
2757 }
2758 static int dissect_autn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2759   return dissect_gsm_map_AUTN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_autn);
2760 }
2761
2762 static const ber_sequence_t AuthenticationQuintuplet_sequence[] = {
2763   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
2764   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_xres },
2765   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
2766   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
2767   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_autn },
2768   { 0, 0, 0, NULL }
2769 };
2770
2771 static int
2772 dissect_gsm_map_AuthenticationQuintuplet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2773   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2774                                 AuthenticationQuintuplet_sequence, hf_index, ett_gsm_map_AuthenticationQuintuplet);
2775
2776   return offset;
2777 }
2778 static int dissect_QuintupletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2779   return dissect_gsm_map_AuthenticationQuintuplet(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_QuintupletList_item);
2780 }
2781
2782 static const ber_sequence_t QuintupletList_sequence_of[1] = {
2783   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_QuintupletList_item },
2784 };
2785
2786 static int
2787 dissect_gsm_map_QuintupletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2788   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2789                                    QuintupletList_sequence_of, hf_index, ett_gsm_map_QuintupletList);
2790
2791   return offset;
2792 }
2793 static int dissect_quintupletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2794   return dissect_gsm_map_QuintupletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList);
2795 }
2796
2797
2798 static const value_string gsm_map_AuthenticationSetList_vals[] = {
2799   {   0, "tripletList" },
2800   {   1, "quintupletList" },
2801   { 0, NULL }
2802 };
2803
2804 static const ber_choice_t AuthenticationSetList_choice[] = {
2805   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tripletList_impl },
2806   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_quintupletList_impl },
2807   { 0, 0, 0, 0, NULL }
2808 };
2809
2810 static int
2811 dissect_gsm_map_AuthenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2812   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
2813                               AuthenticationSetList_choice, hf_index, ett_gsm_map_AuthenticationSetList, NULL);
2814
2815   return offset;
2816 }
2817 static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2818   return dissect_gsm_map_AuthenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList);
2819 }
2820
2821
2822
2823 static int
2824 dissect_gsm_map_Cksn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2825   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2826                                        NULL);
2827
2828   return offset;
2829 }
2830 static int dissect_cksn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2831   return dissect_gsm_map_Cksn(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cksn);
2832 }
2833
2834 static const ber_sequence_t GSM_SecurityContextData_sequence[] = {
2835   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
2836   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cksn },
2837   { 0, 0, 0, NULL }
2838 };
2839
2840 static int
2841 dissect_gsm_map_GSM_SecurityContextData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2842   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2843                                 GSM_SecurityContextData_sequence, hf_index, ett_gsm_map_GSM_SecurityContextData);
2844
2845   return offset;
2846 }
2847 static int dissect_gsm_SecurityContextData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2848   return dissect_gsm_map_GSM_SecurityContextData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_SecurityContextData);
2849 }
2850
2851
2852
2853 static int
2854 dissect_gsm_map_KSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2855   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2856                                        NULL);
2857
2858   return offset;
2859 }
2860 static int dissect_ksi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2861   return dissect_gsm_map_KSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ksi);
2862 }
2863
2864 static const ber_sequence_t UMTS_SecurityContextData_sequence[] = {
2865   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
2866   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
2867   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ksi },
2868   { 0, 0, 0, NULL }
2869 };
2870
2871 static int
2872 dissect_gsm_map_UMTS_SecurityContextData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2873   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2874                                 UMTS_SecurityContextData_sequence, hf_index, ett_gsm_map_UMTS_SecurityContextData);
2875
2876   return offset;
2877 }
2878 static int dissect_umts_SecurityContextData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2879   return dissect_gsm_map_UMTS_SecurityContextData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_umts_SecurityContextData);
2880 }
2881
2882
2883 static const value_string gsm_map_CurrentSecurityContext_vals[] = {
2884   {   0, "gsm-SecurityContextData" },
2885   {   1, "umts-SecurityContextData" },
2886   { 0, NULL }
2887 };
2888
2889 static const ber_choice_t CurrentSecurityContext_choice[] = {
2890   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_SecurityContextData_impl },
2891   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_umts_SecurityContextData_impl },
2892   { 0, 0, 0, 0, NULL }
2893 };
2894
2895 static int
2896 dissect_gsm_map_CurrentSecurityContext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2897   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
2898                               CurrentSecurityContext_choice, hf_index, ett_gsm_map_CurrentSecurityContext, NULL);
2899
2900   return offset;
2901 }
2902 static int dissect_currentSecurityContext_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2903   return dissect_gsm_map_CurrentSecurityContext(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentSecurityContext);
2904 }
2905
2906 static const ber_sequence_t SendIdentificationRes_sequence[] = {
2907   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
2908   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
2909   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_currentSecurityContext_impl },
2910   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2911   { 0, 0, 0, NULL }
2912 };
2913
2914 static int
2915 dissect_gsm_map_SendIdentificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2916   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2917                                 SendIdentificationRes_sequence, hf_index, ett_gsm_map_SendIdentificationRes);
2918
2919   return offset;
2920 }
2921
2922
2923
2924 static int
2925 dissect_gsm_map_AUTS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2926   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2927                                        NULL);
2928
2929   return offset;
2930 }
2931 static int dissect_auts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2932   return dissect_gsm_map_AUTS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_auts);
2933 }
2934
2935
2936
2937 static int
2938 dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2939   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2940                                        NULL);
2941
2942   return offset;
2943 }
2944 static int dissect_targetCellId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2945   return dissect_gsm_map_GlobalCellId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
2946 }
2947 static int dissect_targetCellId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2948   return dissect_gsm_map_GlobalCellId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
2949 }
2950
2951 static const ber_sequence_t PrepareHO_Arg_sequence[] = {
2952   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_targetCellId },
2953   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
2954   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
2955   { 0, 0, 0, NULL }
2956 };
2957
2958 static int
2959 dissect_gsm_map_PrepareHO_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2960   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2961                                 PrepareHO_Arg_sequence, hf_index, ett_gsm_map_PrepareHO_Arg);
2962
2963   return offset;
2964 }
2965
2966
2967
2968 static int
2969 dissect_gsm_map_RNCId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2970   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2971                                        NULL);
2972
2973   return offset;
2974 }
2975 static int dissect_targetRNCId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2976   return dissect_gsm_map_RNCId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetRNCId);
2977 }
2978
2979
2980 static const value_string gsm_map_AccessNetworkProtocolId_vals[] = {
2981   {   1, "ts3G-48006" },
2982   {   2, "ts3G-25413" },
2983   { 0, NULL }
2984 };
2985
2986
2987 static int
2988 dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2989   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2990                                   &AccessNetworkProtocolId);
2991
2992   return offset;
2993 }
2994 static int dissect_accessNetworkProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2995   return dissect_gsm_map_AccessNetworkProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessNetworkProtocolId);
2996 }
2997
2998
2999
3000 static int
3001 dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3002
3003  tvbuff_t       *parameter_tvb;
3004  guint8         octet;
3005  guint8         length;
3006  tvbuff_t       *next_tvb;
3007
3008  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3009                                     &parameter_tvb);
3010  if (!parameter_tvb)
3011         return offset;
3012  switch (AccessNetworkProtocolId){
3013         /* ts3G-48006 */
3014         case 1:
3015                 octet = tvb_get_guint8(parameter_tvb,0);
3016                 length = tvb_get_guint8(parameter_tvb,1);
3017                 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
3018                         /* gsm-BSSMAP? */
3019                         next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
3020                         dissect_bssmap(next_tvb, pinfo, tree);
3021                 }
3022                 break;
3023         /* ts3G-25413 */
3024         case 2:
3025                 break;
3026         default:
3027                 break;
3028
3029  }
3030
3031   return offset;
3032 }
3033 static int dissect_longsignalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3034   return dissect_gsm_map_LongSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_longsignalInfo);
3035 }
3036
3037 static const ber_sequence_t AccessNetworkSignalInfo_sequence[] = {
3038   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_accessNetworkProtocolId },
3039   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_longsignalInfo },
3040   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3041   { 0, 0, 0, NULL }
3042 };
3043
3044 static int
3045 dissect_gsm_map_AccessNetworkSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3047                                 AccessNetworkSignalInfo_sequence, hf_index, ett_gsm_map_AccessNetworkSignalInfo);
3048
3049   return offset;
3050 }
3051 static int dissect_an_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3052   return dissect_gsm_map_AccessNetworkSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
3053 }
3054 static int dissect_an_APDU_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3055   return dissect_gsm_map_AccessNetworkSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
3056 }
3057
3058
3059
3060 static int
3061 dissect_gsm_map_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3062   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3063                                        NULL);
3064
3065   return offset;
3066 }
3067 static int dissect_integrityProtectionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3068   return dissect_gsm_map_IntegrityProtectionInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
3069 }
3070 static int dissect_integrityProtectionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3071   return dissect_gsm_map_IntegrityProtectionInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
3072 }
3073
3074
3075
3076 static int
3077 dissect_gsm_map_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3078   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3079                                        NULL);
3080
3081   return offset;
3082 }
3083 static int dissect_encryptionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3084   return dissect_gsm_map_EncryptionInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
3085 }
3086 static int dissect_encryptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3087   return dissect_gsm_map_EncryptionInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
3088 }
3089
3090
3091
3092 static int
3093 dissect_gsm_map_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3094   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3095                                        NULL);
3096
3097   return offset;
3098 }
3099 static int dissect_radioResourceInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3100   return dissect_gsm_map_RadioResourceInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
3101 }
3102 static int dissect_radioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3103   return dissect_gsm_map_RadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
3104 }
3105
3106
3107
3108 static int
3109 dissect_gsm_map_AllowedGSM_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3110   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3111                                        NULL);
3112
3113   return offset;
3114 }
3115 static int dissect_allowedGSM_Algorithms(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3116   return dissect_gsm_map_AllowedGSM_Algorithms(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
3117 }
3118 static int dissect_allowedGSM_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3119   return dissect_gsm_map_AllowedGSM_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
3120 }
3121
3122
3123
3124 static int
3125 dissect_gsm_map_PermittedIntegrityProtectionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3126   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3127                                        NULL);
3128
3129   return offset;
3130 }
3131 static int dissect_integrityProtectionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3132   return dissect_gsm_map_PermittedIntegrityProtectionAlgorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithms);
3133 }
3134
3135
3136
3137 static int
3138 dissect_gsm_map_PermittedEncryptionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3139   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3140                                        NULL);
3141
3142   return offset;
3143 }
3144 static int dissect_encryptionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3145   return dissect_gsm_map_PermittedEncryptionAlgorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithms);
3146 }
3147
3148 static const ber_sequence_t AllowedUMTS_Algorithms_sequence[] = {
3149   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithms_impl },
3150   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithms_impl },
3151   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3152   { 0, 0, 0, NULL }
3153 };
3154
3155 static int
3156 dissect_gsm_map_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3157   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3158                                 AllowedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_AllowedUMTS_Algorithms);
3159
3160   return offset;
3161 }
3162 static int dissect_allowedUMTS_Algorithms(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3163   return dissect_gsm_map_AllowedUMTS_Algorithms(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
3164 }
3165 static int dissect_allowedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3166   return dissect_gsm_map_AllowedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
3167 }
3168
3169
3170
3171 static int
3172 dissect_gsm_map_RAB_Id(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3173   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3174                                   NULL);
3175
3176   return offset;
3177 }
3178 static int dissect_rab_Id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3179   return dissect_gsm_map_RAB_Id(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
3180 }
3181 static int dissect_rab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3182   return dissect_gsm_map_RAB_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
3183 }
3184 static int dissect_selectedRab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3185   return dissect_gsm_map_RAB_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedRab_Id);
3186 }
3187
3188 static const ber_sequence_t RadioResource_sequence[] = {
3189   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_radioResourceInformation },
3190   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
3191   { 0, 0, 0, NULL }
3192 };
3193
3194 static int
3195 dissect_gsm_map_RadioResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3196   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3197                                 RadioResource_sequence, hf_index, ett_gsm_map_RadioResource);
3198
3199   return offset;
3200 }
3201 static int dissect_RadioResourceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3202   return dissect_gsm_map_RadioResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_RadioResourceList_item);
3203 }
3204
3205 static const ber_sequence_t RadioResourceList_sequence_of[1] = {
3206   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RadioResourceList_item },
3207 };
3208
3209 static int
3210 dissect_gsm_map_RadioResourceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3211   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3212                                    RadioResourceList_sequence_of, hf_index, ett_gsm_map_RadioResourceList);
3213
3214   return offset;
3215 }
3216 static int dissect_radioResourceList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3217   return dissect_gsm_map_RadioResourceList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
3218 }
3219 static int dissect_radioResourceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3220   return dissect_gsm_map_RadioResourceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
3221 }
3222
3223
3224
3225 static int
3226 dissect_gsm_map_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3227   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3228                                        NULL);
3229
3230   return offset;
3231 }
3232 static int dissect_bssmap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3233   return dissect_gsm_map_BSSMAP_ServiceHandover(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
3234 }
3235 static int dissect_bssmap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3236   return dissect_gsm_map_BSSMAP_ServiceHandover(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
3237 }
3238
3239
3240
3241 static int
3242 dissect_gsm_map_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3243   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3244                                        NULL);
3245
3246   return offset;
3247 }
3248 static int dissect_ranap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3249   return dissect_gsm_map_RANAP_ServiceHandover(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
3250 }
3251 static int dissect_ranap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3252   return dissect_gsm_map_RANAP_ServiceHandover(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
3253 }
3254
3255 static const ber_sequence_t BSSMAP_ServiceHandoverInfo_sequence[] = {
3256   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_bssmap_ServiceHandover },
3257   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
3258   { 0, 0, 0, NULL }
3259 };
3260
3261 static int
3262 dissect_gsm_map_BSSMAP_ServiceHandoverInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3263   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3264                                 BSSMAP_ServiceHandoverInfo_sequence, hf_index, ett_gsm_map_BSSMAP_ServiceHandoverInfo);
3265
3266   return offset;
3267 }
3268 static int dissect_BSSMAP_ServiceHandoverList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3269   return dissect_gsm_map_BSSMAP_ServiceHandoverInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BSSMAP_ServiceHandoverList_item);
3270 }
3271
3272 static const ber_sequence_t BSSMAP_ServiceHandoverList_sequence_of[1] = {
3273   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BSSMAP_ServiceHandoverList_item },
3274 };
3275
3276 static int
3277 dissect_gsm_map_BSSMAP_ServiceHandoverList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3278   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3279                                    BSSMAP_ServiceHandoverList_sequence_of, hf_index, ett_gsm_map_BSSMAP_ServiceHandoverList);
3280
3281   return offset;
3282 }
3283 static int dissect_bssmap_ServiceHandoverList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3284   return dissect_gsm_map_BSSMAP_ServiceHandoverList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
3285 }
3286 static int dissect_bssmap_ServiceHandoverList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3287   return dissect_gsm_map_BSSMAP_ServiceHandoverList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
3288 }
3289
3290
3291 static int
3292 dissect_gsm_map_ASCI_CallReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3293   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3294
3295   return offset;
3296 }
3297 static int dissect_asciCallReference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3298   return dissect_gsm_map_ASCI_CallReference(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
3299 }
3300 static int dissect_asciCallReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3301   return dissect_gsm_map_ASCI_CallReference(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
3302 }
3303
3304
3305
3306 static int
3307 dissect_gsm_map_GERAN_Classmark(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3308   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3309                                        NULL);
3310
3311   return offset;
3312 }
3313 static int dissect_geran_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3314   return dissect_gsm_map_GERAN_Classmark(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geran_classmark);
3315 }
3316
3317
3318
3319 static int
3320 dissect_gsm_map_Codec(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3321   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3322                                        NULL);
3323
3324   return offset;
3325 }
3326 static int dissect_iuCurrentlyUsedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3327   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuCurrentlyUsedCodec);
3328 }
3329 static int dissect_iuSelectedCodec(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3330   return dissect_gsm_map_Codec(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuSelectedCodec);
3331 }
3332 static int dissect_iUSelectedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3333   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iUSelectedCodec);
3334 }
3335 static int dissect_codec1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3336   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec1);
3337 }
3338 static int dissect_codec2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3339   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec2);
3340 }
3341 static int dissect_codec3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3342   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec3);
3343 }
3344 static int dissect_codec4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3345   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec4);
3346 }
3347 static int dissect_codec5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3348   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec5);
3349 }
3350 static int dissect_codec6_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3351   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec6);
3352 }
3353 static int dissect_codec7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3354   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec7);
3355 }
3356 static int dissect_codec8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3357   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec8);
3358 }
3359 static int dissect_currentlyUsedCodec(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3360   return dissect_gsm_map_Codec(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentlyUsedCodec);
3361 }
3362
3363 static const ber_sequence_t CodecList_sequence[] = {
3364   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl },
3365   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl },
3366   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl },
3367   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl },
3368   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl },
3369   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl },
3370   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl },
3371   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl },
3372   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3373   { 0, 0, 0, NULL }
3374 };
3375
3376 static int
3377 dissect_gsm_map_CodecList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3378   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3379                                 CodecList_sequence, hf_index, ett_gsm_map_CodecList);
3380
3381   return offset;
3382 }
3383 static int dissect_iuAvailableCodecsList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3384   return dissect_gsm_map_CodecList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
3385 }
3386 static int dissect_iuAvailableCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3387   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
3388 }
3389 static int dissect_utranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3390   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranCodecList);
3391 }
3392 static int dissect_geranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3393   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranCodecList);
3394 }
3395
3396 static const ber_sequence_t SupportedCodecsList_sequence[] = {
3397   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranCodecList_impl },
3398   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranCodecList_impl },
3399   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3400   { 0, 0, 0, NULL }
3401 };
3402
3403 static int
3404 dissect_gsm_map_SupportedCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3405   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3406                                 SupportedCodecsList_sequence, hf_index, ett_gsm_map_SupportedCodecsList);
3407
3408   return offset;
3409 }
3410 static int dissect_iuSupportedCodecsList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3411   return dissect_gsm_map_SupportedCodecsList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
3412 }
3413 static int dissect_iuSupportedCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3414   return dissect_gsm_map_SupportedCodecsList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
3415 }
3416
3417
3418 static int
3419 dissect_gsm_map_UESBI_IuA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3420   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3421                                  NULL, hf_index, -1,
3422                                  NULL);
3423
3424   return offset;
3425 }
3426 static int dissect_uesbi_IuA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3427   return dissect_gsm_map_UESBI_IuA(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuA);
3428 }
3429
3430
3431 static int
3432 dissect_gsm_map_UESBI_IuB(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3433   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3434                                  NULL, hf_index, -1,
3435                                  NULL);
3436
3437   return offset;
3438 }
3439 static int dissect_uesbi_IuB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3440   return dissect_gsm_map_UESBI_IuB(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuB);
3441 }
3442
3443 static const ber_sequence_t UESBI_Iu_sequence[] = {
3444   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuA_impl },
3445   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuB_impl },
3446   { 0, 0, 0, NULL }
3447 };
3448
3449 static int
3450 dissect_gsm_map_UESBI_Iu(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3451   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3452                                 UESBI_Iu_sequence, hf_index, ett_gsm_map_UESBI_Iu);
3453
3454   return offset;
3455 }
3456 static int dissect_uesbi_Iu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3457   return dissect_gsm_map_UESBI_Iu(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_Iu);
3458 }
3459 static int dissect_bmuef(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3460   return dissect_gsm_map_UESBI_Iu(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bmuef);
3461 }
3462
3463 static const ber_sequence_t PrepareHO_ArgV3_sequence[] = {
3464   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
3465   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
3466   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
3467   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
3468   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multipleBearerRequested_impl },
3469   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3470   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionInfo_impl },
3471   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionInfo_impl },
3472   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceInformation_impl },
3473   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedGSM_Algorithms_impl },
3474   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedUMTS_Algorithms_impl },
3475   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceList_impl },
3476   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3477   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_Id_impl },
3478   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandover_impl },
3479   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ranap_ServiceHandover_impl },
3480   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandoverList_impl },
3481   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_asciCallReference_impl },
3482   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
3483   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuCurrentlyUsedCodec_impl },
3484   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuSupportedCodecsList_impl },
3485   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
3486   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_Iu_impl },
3487   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
3488   { 0, 0, 0, NULL }
3489 };
3490
3491 static int
3492 dissect_gsm_map_PrepareHO_ArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3493   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3494                                 PrepareHO_ArgV3_sequence, hf_index, ett_gsm_map_PrepareHO_ArgV3);
3495
3496   return offset;
3497 }
3498
3499 static const ber_sequence_t PrepareHO_Res_sequence[] = {
3500   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
3501   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
3502   { 0, 0, 0, NULL }
3503 };
3504
3505 static int
3506 dissect_gsm_map_PrepareHO_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3507   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3508                                 PrepareHO_Res_sequence, hf_index, ett_gsm_map_PrepareHO_Res);
3509
3510   return offset;
3511 }
3512
3513
3514
3515 static int
3516 dissect_gsm_map_HandoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3517   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3518                                        NULL);
3519
3520   return offset;
3521 }
3522
3523 static const ber_sequence_t RelocationNumber_sequence[] = {
3524   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
3525   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
3526   { 0, 0, 0, NULL }
3527 };
3528
3529 static int
3530 dissect_gsm_map_RelocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3531   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3532                                 RelocationNumber_sequence, hf_index, ett_gsm_map_RelocationNumber);
3533
3534   return offset;
3535 }
3536 static int dissect_RelocationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3537   return dissect_gsm_map_RelocationNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_RelocationNumberList_item);
3538 }
3539
3540 static const ber_sequence_t RelocationNumberList_sequence_of[1] = {
3541   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RelocationNumberList_item },
3542 };
3543
3544 static int
3545 dissect_gsm_map_RelocationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3546   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3547                                    RelocationNumberList_sequence_of, hf_index, ett_gsm_map_RelocationNumberList);
3548
3549   return offset;
3550 }
3551 static int dissect_relocationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3552   return dissect_gsm_map_RelocationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList);
3553 }
3554
3555
3556
3557 static int
3558 dissect_gsm_map_MulticallBearerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3559   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3560                                   NULL);
3561
3562   return offset;
3563 }
3564 static int dissect_multicallBearerInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3565   return dissect_gsm_map_MulticallBearerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multicallBearerInfo);
3566 }
3567
3568
3569
3570 static int
3571 dissect_gsm_map_ChosenIntegrityProtectionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3572   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3573                                        NULL);
3574
3575   return offset;
3576 }
3577 static int dissect_integrityProtectionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3578   return dissect_gsm_map_ChosenIntegrityProtectionAlgorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithm);
3579 }
3580
3581
3582
3583 static int
3584 dissect_gsm_map_ChosenEncryptionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3585   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3586                                        NULL);
3587
3588   return offset;
3589 }
3590 static int dissect_encryptionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3591   return dissect_gsm_map_ChosenEncryptionAlgorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithm);
3592 }
3593
3594 static const ber_sequence_t SelectedUMTS_Algorithms_sequence[] = {
3595   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithm_impl },
3596   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithm_impl },
3597   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3598   { 0, 0, 0, NULL }
3599 };
3600
3601 static int
3602 dissect_gsm_map_SelectedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3603   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3604                                 SelectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_SelectedUMTS_Algorithms);
3605
3606   return offset;
3607 }
3608 static int dissect_selectedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3609   return dissect_gsm_map_SelectedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedUMTS_Algorithms);
3610 }
3611
3612
3613
3614 static int
3615 dissect_gsm_map_ChosenChannelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3616   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3617                                        NULL);
3618
3619   return offset;
3620 }
3621 static int dissect_chosenChannelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3622   return dissect_gsm_map_ChosenChannelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannelInfo);
3623 }
3624
3625
3626
3627 static int
3628 dissect_gsm_map_ChosenSpeechVersion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3629   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3630                                        NULL);
3631
3632   return offset;
3633 }
3634 static int dissect_chosenSpeechVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3635   return dissect_gsm_map_ChosenSpeechVersion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenSpeechVersion);
3636 }
3637
3638 static const ber_sequence_t ChosenRadioResourceInformation_sequence[] = {
3639   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannelInfo_impl },
3640   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenSpeechVersion_impl },
3641   { 0, 0, 0, NULL }
3642 };
3643
3644 static int
3645 dissect_gsm_map_ChosenRadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3646   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3647                                 ChosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_ChosenRadioResourceInformation);
3648
3649   return offset;
3650 }
3651 static int dissect_chosenRadioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3652   return dissect_gsm_map_ChosenRadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenRadioResourceInformation);
3653 }
3654
3655 static const ber_sequence_t PrepareHO_ResV3_sequence[] = {
3656   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_handoverNumber_impl },
3657   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_relocationNumberList_impl },
3658   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
3659   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicallBearerInfo_impl },
3660   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_multipleBearerNotSupported },
3661   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
3662   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
3663   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3664   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_iuSelectedCodec },
3665   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_iuAvailableCodecsList },
3666   { 0, 0, 0, NULL }
3667 };
3668
3669 static int
3670 dissect_gsm_map_PrepareHO_ResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3671   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3672                                 PrepareHO_ResV3_sequence, hf_index, ett_gsm_map_PrepareHO_ResV3);
3673
3674   return offset;
3675 }
3676
3677
3678
3679 static int
3680 dissect_gsm_map_Sgsn_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3681   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3682                                        NULL);
3683
3684   return offset;
3685 }
3686
3687
3688
3689 static int
3690 dissect_gsm_map_Vlr_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3691   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3692                                        NULL);
3693
3694   return offset;
3695 }
3696
3697 static const ber_sequence_t SendEndSignalArgV3_sequence[] = {
3698   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
3699   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3700   { 0, 0, 0, NULL }
3701 };
3702
3703 static int
3704 dissect_gsm_map_SendEndSignalArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3705   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3706                                 SendEndSignalArgV3_sequence, hf_index, ett_gsm_map_SendEndSignalArgV3);
3707
3708   return offset;
3709 }
3710
3711 static const ber_sequence_t SendEndSignalRes_sequence[] = {
3712   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3713   { 0, 0, 0, NULL }
3714 };
3715
3716 static int
3717 dissect_gsm_map_SendEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3718   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3719                                 SendEndSignalRes_sequence, hf_index, ett_gsm_map_SendEndSignalRes);
3720
3721   return offset;
3722 }
3723
3724
3725
3726 static int
3727 dissect_gsm_map_SelectedGSM_Algorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3728   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3729                                        NULL);
3730
3731   return offset;
3732 }
3733 static int dissect_selectedGSM_Algorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3734   return dissect_gsm_map_SelectedGSM_Algorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedGSM_Algorithm);
3735 }
3736
3737 static const ber_sequence_t ProcessAccessSignallingArgV3_sequence[] = {
3738   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
3739   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
3740   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedGSM_Algorithm_impl },
3741   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
3742   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedRab_Id_impl },
3743   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3744   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iUSelectedCodec_impl },
3745   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuAvailableCodecsList_impl },
3746   { 0, 0, 0, NULL }
3747 };
3748
3749 static int
3750 dissect_gsm_map_ProcessAccessSignallingArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3751   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3752                                 ProcessAccessSignallingArgV3_sequence, hf_index, ett_gsm_map_ProcessAccessSignallingArgV3);
3753
3754   return offset;
3755 }
3756
3757
3758 static const value_string gsm_map_KeyStatus_vals[] = {
3759   {   0, "old" },
3760   {   1, "new" },
3761   { 0, NULL }
3762 };
3763
3764
3765 static int
3766 dissect_gsm_map_KeyStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3767   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3768                                   NULL);
3769
3770   return offset;
3771 }
3772 static int dissect_keyStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3773   return dissect_gsm_map_KeyStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_keyStatus);
3774 }
3775
3776 static const ber_sequence_t ForwardAccessSignallingArgV3_sequence[] = {
3777   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
3778   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_integrityProtectionInfo },
3779   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_encryptionInfo },
3780   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_keyStatus },
3781   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allowedGSM_Algorithms },
3782   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_allowedUMTS_Algorithms },
3783   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_radioResourceInformation },
3784   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
3785   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_radioResourceList },
3786   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_bssmap_ServiceHandover },
3787   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_ranap_ServiceHandover },
3788   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_bssmap_ServiceHandoverList },
3789   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_currentlyUsedCodec },
3790   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_iuSupportedCodecsList },
3791   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_rab_ConfigurationIndicator },
3792   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_iuSelectedCodec },
3793   { 0, 0, 0, NULL }
3794 };
3795
3796 static int
3797 dissect_gsm_map_ForwardAccessSignallingArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3798   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3799                                 ForwardAccessSignallingArgV3_sequence, hf_index, ett_gsm_map_ForwardAccessSignallingArgV3);
3800
3801   return offset;
3802 }
3803
3804 static const ber_sequence_t PrepareSubsequentHOArg_sequence[] = {
3805   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetCellId },
3806   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetMSC_Number },
3807   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
3808   { 0, 0, 0, NULL }
3809 };
3810
3811 static int
3812 dissect_gsm_map_PrepareSubsequentHOArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3813   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3814                                 PrepareSubsequentHOArg_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOArg);
3815
3816   return offset;
3817 }
3818
3819 static const ber_sequence_t PrepareSubsequentHOArgV3_sequence[] = {
3820   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
3821   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_targetMSC_Number_impl },
3822   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
3823   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
3824   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedRab_Id_impl },
3825   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3826   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
3827   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
3828   { 0, 0, 0, NULL }
3829 };
3830
3831 static int
3832 dissect_gsm_map_PrepareSubsequentHOArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3833   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3834                                 PrepareSubsequentHOArgV3_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOArgV3);
3835
3836   return offset;
3837 }
3838
3839 static const ber_sequence_t PrepareSubsequentHOResV3_sequence[] = {
3840   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
3841   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3842   { 0, 0, 0, NULL }
3843 };
3844
3845 static int
3846 dissect_gsm_map_PrepareSubsequentHOResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3847   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3848                                 PrepareSubsequentHOResV3_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOResV3);
3849
3850   return offset;
3851 }
3852
3853
3854 static int
3855 dissect_gsm_map_SendAuthenticationInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3856   offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3857
3858   return offset;
3859 }
3860
3861 static const ber_sequence_t Re_synchronisationInfo_sequence[] = {
3862   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3863   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_auts },
3864   { 0, 0, 0, NULL }
3865 };
3866
3867 static int
3868 dissect_gsm_map_Re_synchronisationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3869   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3870                                 Re_synchronisationInfo_sequence, hf_index, ett_gsm_map_Re_synchronisationInfo);
3871
3872   return offset;
3873 }
3874 static int dissect_re_synchronisationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3875   return dissect_gsm_map_Re_synchronisationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_synchronisationInfo);
3876 }
3877
3878
3879 static const value_string gsm_map_RequestingNodeType_vals[] = {
3880   {   0, "vlr" },
3881   {   1, "sgsn" },
3882   { 0, NULL }
3883 };
3884
3885
3886 static int
3887 dissect_gsm_map_RequestingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3888   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3889                                   NULL);
3890
3891   return offset;
3892 }
3893 static int dissect_requestingNodeType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3894   return dissect_gsm_map_RequestingNodeType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingNodeType);
3895 }
3896
3897
3898
3899 static int
3900 dissect_gsm_map_PLMN_Id(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3901   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3902                                        NULL);
3903
3904   return offset;
3905 }
3906 static int dissect_requestingPLMN_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3907   return dissect_gsm_map_PLMN_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingPLMN_Id);
3908 }
3909
3910 static const ber_sequence_t SendAuthenticationInfoArgV2_sequence[] = {
3911   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3912   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
3913   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
3914   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immediateResponsePreferred_impl },
3915   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_synchronisationInfo },
3916   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3917   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingNodeType_impl },
3918   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingPLMN_Id_impl },
3919   { 0, 0, 0, NULL }
3920 };
3921
3922 static int
3923 dissect_gsm_map_SendAuthenticationInfoArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3924   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3925                                 SendAuthenticationInfoArgV2_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoArgV2);
3926
3927   return offset;
3928 }
3929
3930 static const ber_sequence_t SendAuthenticationInfoRes_item_sequence[] = {
3931   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3932   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
3933   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3934   { 0, 0, 0, NULL }
3935 };
3936
3937 static int
3938 dissect_gsm_map_SendAuthenticationInfoRes_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3939   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3940                                 SendAuthenticationInfoRes_item_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoRes_item);
3941
3942   return offset;
3943 }
3944 static int dissect_SendAuthenticationInfoRes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3945   return dissect_gsm_map_SendAuthenticationInfoRes_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes_item);
3946 }
3947
3948 static const ber_sequence_t SendAuthenticationInfoRes_sequence_of[1] = {
3949   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SendAuthenticationInfoRes_item },
3950 };
3951
3952 static int
3953 dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3954   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3955                                    SendAuthenticationInfoRes_sequence_of, hf_index, ett_gsm_map_SendAuthenticationInfoRes);
3956
3957   return offset;
3958 }
3959
3960 static const ber_sequence_t SendAuthenticationInfoResV3_sequence[] = {
3961   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
3962   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3963   { 0, 0, 0, NULL }
3964 };
3965
3966 static int
3967 dissect_gsm_map_SendAuthenticationInfoResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3968   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3969                                 SendAuthenticationInfoResV3_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoResV3);
3970
3971   return offset;
3972 }
3973
3974
3975 static int
3976 dissect_gsm_map_CheckIMEIArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3977   offset = dissect_gsm_map_IMEI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3978
3979   return offset;
3980 }
3981
3982 static const asn_namedbit RequestedEquipmentInfo_bits[] = {
3983   {  0, &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus, -1, -1, "equipmentStatus", NULL },
3984   {  1, &hf_gsm_map_RequestedEquipmentInfo_bmuef, -1, -1, "bmuef", NULL },
3985   { 0, NULL, 0, 0, NULL, NULL }
3986 };
3987
3988 static int
3989 dissect_gsm_map_RequestedEquipmentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3990   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3991                                  RequestedEquipmentInfo_bits, hf_index, ett_gsm_map_RequestedEquipmentInfo,
3992                                  NULL);
3993
3994   return offset;
3995 }
3996 static int dissect_requestedEquipmentInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3997   return dissect_gsm_map_RequestedEquipmentInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_requestedEquipmentInfo);
3998 }
3999
4000 static const ber_sequence_t CheckIMEIArgV2_sequence[] = {
4001   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imei },
4002   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_requestedEquipmentInfo },
4003   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4004   { 0, 0, 0, NULL }
4005 };
4006
4007 static int
4008 dissect_gsm_map_CheckIMEIArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4009   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4010                                 CheckIMEIArgV2_sequence, hf_index, ett_gsm_map_CheckIMEIArgV2);
4011
4012   return offset;
4013 }
4014
4015
4016 static const value_string gsm_map_EquipmentStatus_vals[] = {
4017   {   0, "whiteListed" },
4018   {   1, "blackListed" },
4019   {   2, "greyListed" },
4020   { 0, NULL }
4021 };
4022
4023
4024 static int
4025 dissect_gsm_map_EquipmentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4026   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4027                                   NULL);
4028
4029   return offset;
4030 }
4031 static int dissect_equipmentStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4032   return dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus);
4033 }
4034
4035 static const ber_sequence_t CheckIMEIRes_sequence[] = {
4036   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_equipmentStatus },
4037   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bmuef },
4038   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
4039   { 0, 0, 0, NULL }
4040 };
4041
4042 static int
4043 dissect_gsm_map_CheckIMEIRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4044   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4045                                 CheckIMEIRes_sequence, hf_index, ett_gsm_map_CheckIMEIRes);
4046
4047   return offset;
4048 }
4049
4050
4051 static const value_string gsm_map_OverrideCategory_vals[] = {
4052   {   0, "overrideEnabled" },
4053   {   1, "overrideDisabled" },
4054   { 0, NULL }
4055 };
4056
4057
4058 static int
4059 dissect_gsm_map_OverrideCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4060   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4061                                   NULL);
4062
4063   return offset;
4064 }
4065 static int dissect_overrideCategory_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4066   return dissect_gsm_map_OverrideCategory(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_overrideCategory);
4067 }
4068
4069
4070 static const value_string gsm_map_BasicService_vals[] = {
4071   {   2, "bearerservice" },
4072   {   3, "teleservice" },
4073   { 0, NULL }
4074 };
4075
4076 static const ber_choice_t BasicService_choice[] = {
4077   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerservice_impl },
4078   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
4079   { 0, 0, 0, 0, NULL }
4080 };
4081
4082 static int
4083 dissect_gsm_map_BasicService(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4084   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
4085                               BasicService_choice, hf_index, ett_gsm_map_BasicService, NULL);
4086
4087   return offset;
4088 }
4089 static int dissect_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4090   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceGroupList_item);
4091 }
4092
4093 static const ber_sequence_t BasicServiceGroupList_sequence_of[1] = {
4094   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
4095 };
4096
4097 static int
4098 dissect_gsm_map_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4099   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4100                                    BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_BasicServiceGroupList);
4101
4102   return offset;
4103 }
4104 static int dissect_ext_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4105   return dissect_gsm_map_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
4106 }
4107 static int dissect_ext_basicServiceGroupList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4108   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
4109 }
4110
4111 static const asn_namedbit ODB_GeneralData_bits[] = {
4112   {  0, &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred, -1, -1, "allOG-CallsBarred", NULL },
4113   {  1, &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred, -1, -1, "internationalOGCallsBarred", NULL },
4114   {  2, &hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "internationalOGCallsNotToHPLMN-CountryBarred", NULL },
4115   {  6, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred, -1, -1, "interzonalOGCallsBarred", NULL },
4116   {  7, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsNotToHPLMN-CountryBarred", NULL },
4117   {  8, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", NULL },
4118   {  3, &hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred, -1, -1, "premiumRateInformationOGCallsBarred", NULL },
4119   {  4, &hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred, -1, -1, "premiumRateEntertainementOGCallsBarred", NULL },
4120   {  5, &hf_gsm_map_ODB_GeneralData_ss_AccessBarred, -1, -1, "ss-AccessBarred", NULL },
4121   {  9, &hf_gsm_map_ODB_GeneralData_allECT_Barred, -1, -1, "allECT-Barred", NULL },
4122   { 10, &hf_gsm_map_ODB_GeneralData_chargeableECT_Barred, -1, -1, "chargeableECT-Barred", NULL },
4123   { 11, &hf_gsm_map_ODB_GeneralData_internationalECT_Barred, -1, -1, "internationalECT-Barred", NULL },
4124   { 12, &hf_gsm_map_ODB_GeneralData_interzonalECT_Barred, -1, -1, "interzonalECT-Barred", NULL },
4125   { 13, &hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred, -1, -1, "doublyChargeableECT-Barred", NULL },
4126   { 14, &hf_gsm_map_ODB_GeneralData_multipleECT_Barred, -1, -1, "multipleECT-Barred", NULL },
4127   { 15, &hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred, -1, -1, "allPacketOrientedServicesBarred", NULL },
4128   { 16, &hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred, -1, -1, "roamerAccessToHPLMN-AP-Barred", NULL },
4129   { 17, &hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred, -1, -1, "roamerAccessToVPLMN-AP-Barred", NULL },
4130   { 18, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred, -1, -1, "roamingOutsidePLMNOG-CallsBarred", NULL },
4131   { 19, &hf_gsm_map_ODB_GeneralData_allIC_CallsBarred, -1, -1, "allIC-CallsBarred", NULL },
4132   { 20, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred, -1, -1, "roamingOutsidePLMNIC-CallsBarred", NULL },
4133   { 21, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, -1, -1, "roamingOutsidePLMNICountryIC-CallsBarred", NULL },
4134   { 22, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred, -1, -1, "roamingOutsidePLMN-Barred", NULL },
4135   { 23, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred, -1, -1, "roamingOutsidePLMN-CountryBarred", NULL },
4136   { 24, &hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred, -1, -1, "registrationAllCF-Barred", NULL },
4137   { 25, &hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred, -1, -1, "registrationCFNotToHPLMN-Barred", NULL },
4138   { 26, &hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred, -1, -1, "registrationInterzonalCF-Barred", NULL },
4139   { 27, &hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, -1, -1, "registrationInterzonalCFNotToHPLMN-Barred", NULL },
4140   { 28, &hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred, -1, -1, "registrationInternationalCF-Barred", NULL },
4141   { 0, NULL, 0, 0, NULL, NULL }
4142 };
4143
4144 static int
4145 dissect_gsm_map_ODB_GeneralData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4146   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4147                                  ODB_GeneralData_bits, hf_index, ett_gsm_map_ODB_GeneralData,
4148                                  NULL);
4149
4150   return offset;
4151 }
4152 static int dissect_odb_GeneralData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4153   return dissect_gsm_map_ODB_GeneralData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
4154 }
4155 static int dissect_odb_GeneralData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4156   return dissect_gsm_map_ODB_GeneralData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
4157 }
4158
4159 static const asn_namedbit ODB_HPLMN_Data_bits[] = {
4160   {  0, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1, -1, -1, "plmn-SpecificBarringType1", NULL },
4161   {  1, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2, -1, -1, "plmn-SpecificBarringType2", NULL },
4162   {  2, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3, -1, -1, "plmn-SpecificBarringType3", NULL },
4163   {  3, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4, -1, -1, "plmn-SpecificBarringType4", NULL },
4164   { 0, NULL, 0, 0, NULL, NULL }
4165 };
4166
4167 static int
4168 dissect_gsm_map_ODB_HPLMN_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4169   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4170                                  ODB_HPLMN_Data_bits, hf_index, ett_gsm_map_ODB_HPLMN_Data,
4171                                  NULL);
4172
4173   return offset;
4174 }
4175 static int dissect_odb_HPLMN_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4176   return dissect_gsm_map_ODB_HPLMN_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_HPLMN_Data);
4177 }
4178
4179
4180 static const value_string gsm_map_SubscriberStatus_vals[] = {
4181   {   0, "serviceGranted" },
4182   {   1, "operatorDeterminedBarring" },
4183   { 0, NULL }
4184 };
4185
4186
4187 static int
4188 dissect_gsm_map_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4189   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4190                                   NULL);
4191
4192   return offset;
4193 }
4194 static int dissect_subscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4195   return dissect_gsm_map_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStatus);
4196 }
4197
4198
4199 static const value_string gsm_map_BcsmTriggerDetectionPoint_vals[] = {
4200   {   2, "collectedInfo" },
4201   {   4, "routeSelectFailure" },
4202   {  12, "termAttemptAuthorized" },
4203   {  13, "tBusy" },
4204   {  14, "tNoAnswer" },
4205   { 0, NULL }
4206 };
4207
4208
4209 static int
4210 dissect_gsm_map_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4211   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4212                                   NULL);
4213
4214   return offset;
4215 }
4216 static int dissect_bcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4217   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bcsmTriggerDetectionPoint);
4218 }
4219
4220
4221
4222 static int
4223 dissect_gsm_map_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4224   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4225                                   NULL);
4226
4227   return offset;
4228 }
4229 static int dissect_serviceKey(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4230   return dissect_gsm_map_ServiceKey(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
4231 }
4232 static int dissect_serviceKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4233   return dissect_gsm_map_ServiceKey(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
4234 }
4235
4236
4237
4238 static int
4239 dissect_gsm_map_GsmSCF_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4240   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4241                                        NULL);
4242
4243   return offset;
4244 }
4245 static int dissect_gsmSCFAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4246   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCFAddress);
4247 }
4248
4249
4250 static const value_string gsm_map_DefaultCallHandling_vals[] = {
4251   {   0, "continueCall" },
4252   {   1, "releaseCall" },
4253   { 0, NULL }
4254 };
4255
4256
4257 static int
4258 dissect_gsm_map_DefaultCallHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4259   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4260                                   NULL);
4261
4262   return offset;
4263 }
4264 static int dissect_defaultCallHandling(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4265   return dissect_gsm_map_DefaultCallHandling(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
4266 }
4267 static int dissect_defaultCallHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4268   return dissect_gsm_map_DefaultCallHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
4269 }
4270
4271 static const ber_sequence_t BcsmCamelTDPData_sequence[] = {
4272   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_bcsmTriggerDetectionPoint },
4273   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
4274   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCFAddress_impl },
4275   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
4276   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4277   { 0, 0, 0, NULL }
4278 };
4279
4280 static int
4281 dissect_gsm_map_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4282   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4283                                 BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_BcsmCamelTDPData);
4284
4285   return offset;
4286 }
4287 static int dissect_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4288   return dissect_gsm_map_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BcsmCamelTDPDataList_item);
4289 }
4290
4291 static const ber_sequence_t BcsmCamelTDPDataList_sequence_of[1] = {
4292   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BcsmCamelTDPDataList_item },
4293 };
4294
4295 static int
4296 dissect_gsm_map_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4297   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4298                                    BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_BcsmCamelTDPDataList);
4299
4300   return offset;
4301 }
4302
4303
4304 static const value_string gsm_map_O_BcsmTriggerDetectionPoint_vals[] = {
4305   {   2, "collectedInfo" },
4306   {   4, "routeSelectFailure" },
4307   { 0, NULL }
4308 };
4309
4310
4311 static int
4312 dissect_gsm_map_O_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4313   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4314                                   NULL);
4315
4316   return offset;
4317 }
4318 static int dissect_o_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4319   return dissect_gsm_map_O_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmTriggerDetectionPoint);
4320 }
4321
4322 static const ber_sequence_t O_BcsmCamelTDPData_sequence[] = {
4323   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
4324   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
4325   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
4326   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
4327   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4328   { 0, 0, 0, NULL }
4329 };
4330
4331 static int
4332 dissect_gsm_map_O_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4333   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4334                                 O_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDPData);
4335
4336   return offset;
4337 }
4338 static int dissect_O_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4339   return dissect_gsm_map_O_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDPDataList_item);
4340 }
4341
4342 static const ber_sequence_t O_BcsmCamelTDPDataList_sequence_of[1] = {
4343   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDPDataList_item },
4344 };
4345
4346 static int
4347 dissect_gsm_map_O_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4348   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4349                                    O_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDPDataList);
4350
4351   return offset;
4352 }
4353 static int dissect_o_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4354   return dissect_gsm_map_O_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPDataList);
4355 }
4356
4357
4358
4359 static int
4360 dissect_gsm_map_CamelCapabilityHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4361   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4362                                   NULL);
4363
4364   return offset;
4365 }
4366 static int dissect_camelCapabilityHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4367   return dissect_gsm_map_CamelCapabilityHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelCapabilityHandling);
4368 }
4369
4370 static const ber_sequence_t O_CSI_sequence[] = {
4371   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_BcsmCamelTDPDataList },
4372   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4373   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
4374   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
4375   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csiActive_impl },
4376   { 0, 0, 0, NULL }
4377 };
4378
4379 static int
4380 dissect_gsm_map_O_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4381   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4382                                 O_CSI_sequence, hf_index, ett_gsm_map_O_CSI);
4383
4384   return offset;
4385 }
4386 static int dissect_o_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4387   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CSI);
4388 }
4389 static int dissect_o_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4390   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_CSI);
4391 }
4392
4393
4394
4395 static int
4396 dissect_gsm_map_Category(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4397   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4398                                        NULL);
4399
4400   return offset;
4401 }
4402 static int dissect_category_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4403   return dissect_gsm_map_Category(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_category);
4404 }
4405
4406
4407
4408 static int
4409 dissect_gsm_map_Ext_BearerServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4410   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4411                                        NULL);
4412
4413   return offset;
4414 }
4415 static int dissect_BearerServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4416   return dissect_gsm_map_Ext_BearerServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BearerServiceList_item);
4417 }
4418 static int dissect_ext_BearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4419   return dissect_gsm_map_Ext_BearerServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_BearerService);
4420 }
4421
4422 static const ber_sequence_t BearerServiceList_sequence_of[1] = {
4423   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_BearerServiceList_item },
4424 };
4425
4426 static int
4427 dissect_gsm_map_BearerServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4428   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4429                                    BearerServiceList_sequence_of, hf_index, ett_gsm_map_BearerServiceList);
4430
4431   return offset;
4432 }
4433 static int dissect_bearerserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4434   return dissect_gsm_map_BearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerserviceList);
4435 }
4436 static int dissect_bearerServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4437   return dissect_gsm_map_BearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerServiceList);
4438 }
4439
4440
4441
4442 static int
4443 dissect_gsm_map_Ext_TeleserviceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4444   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4445                                        NULL);
4446
4447   return offset;
4448 }
4449 static int dissect_TeleserviceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4450   return dissect_gsm_map_Ext_TeleserviceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TeleserviceList_item);
4451 }
4452 static int dissect_ext_Teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4453   return dissect_gsm_map_Ext_TeleserviceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_Teleservice);
4454 }
4455 static int dissect_ext_teleservice(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4456   return dissect_gsm_map_Ext_TeleserviceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_teleservice);
4457 }
4458
4459 static const ber_sequence_t TeleserviceList_sequence_of[1] = {
4460   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_TeleserviceList_item },
4461 };
4462
4463 static int
4464 dissect_gsm_map_TeleserviceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4465   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4466                                    TeleserviceList_sequence_of, hf_index, ett_gsm_map_TeleserviceList);
4467
4468   return offset;
4469 }
4470 static int dissect_teleserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4471   return dissect_gsm_map_TeleserviceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList);
4472 }
4473
4474
4475
4476 static int
4477 dissect_gsm_map_SS_Code(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4478   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4479                                        NULL);
4480
4481   return offset;
4482 }
4483 static int dissect_ss_Code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4484   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
4485 }
4486 static int dissect_ss_Code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4487   return dissect_gsm_map_SS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
4488 }
4489 static int dissect_SS_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4490   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SS_List_item);
4491 }
4492 static int dissect_SS_EventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4493   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SS_EventList_item);
4494 }
4495
4496
4497 static const value_string gsm_map_Ext_BasicServiceCode_vals[] = {
4498   {   2, "ext-BearerService" },
4499   {   3, "ext-Teleservice" },
4500   { 0, NULL }
4501 };
4502
4503 static const ber_choice_t Ext_BasicServiceCode_choice[] = {
4504   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_BearerService_impl },
4505   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_Teleservice_impl },
4506   { 0, 0, 0, 0, NULL }
4507 };
4508
4509 static int
4510 dissect_gsm_map_Ext_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4511   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
4512                               Ext_BasicServiceCode_choice, hf_index, ett_gsm_map_Ext_BasicServiceCode, NULL);
4513
4514   return offset;
4515 }
4516 static int dissect_BasicServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4517   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceList_item);
4518 }
4519 static int dissect_ext_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4520   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicService);
4521 }
4522 static int dissect_ext_basicService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4523   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicService);
4524 }
4525 static int dissect_Ext_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4526   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_BasicServiceGroupList_item);
4527 }
4528 static int dissect_ext_basicServiceGroup(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4529   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroup);
4530 }
4531 static int dissect_ext_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4532   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroup);
4533 }
4534 static int dissect_basicServiceGroup2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4535   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup2);
4536 }
4537 static int dissect_basicService2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4538   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicService2);
4539 }
4540 static int dissect_BasicServiceCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4541   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceCriteria_item);
4542 }
4543
4544
4545
4546 static int
4547 dissect_gsm_map_Ext_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4548  /* Note Ext-SS-Status can have more than one byte */
4549
4550  tvbuff_t       *parameter_tvb;
4551  guint8         octet;
4552
4553  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4554                                     &parameter_tvb);
4555  if (!parameter_tvb)
4556         return offset;
4557
4558  octet = tvb_get_guint8(parameter_tvb,0);
4559
4560  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
4561  if ((octet & 0x01)== 1)        
4562         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
4563                                                                                 
4564  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
4565  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
4566  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
4567
4568
4569
4570   return offset;
4571 }
4572 static int dissect_ext_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4573   return dissect_gsm_map_Ext_SS_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Status);
4574 }
4575 static int dissect_ext_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4576   return dissect_gsm_map_Ext_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Status);
4577 }
4578
4579
4580
4581 static int
4582 dissect_gsm_map_ISDN_SubaddressString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4583   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4584                                        NULL);
4585
4586   return offset;
4587 }
4588 static int dissect_forwardedToSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4589   return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToSubaddress);
4590 }
4591 static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4592   return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberSubaddress);
4593 }
4594
4595
4596
4597 static int
4598 dissect_gsm_map_Ext_ForwOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4599   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4600                                        NULL);
4601
4602   return offset;
4603 }
4604 static int dissect_ext_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4605   return dissect_gsm_map_Ext_ForwOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingOptions);
4606 }
4607
4608
4609
4610 static int
4611 dissect_gsm_map_Ext_NoRepCondTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4612   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4613                                   NULL);
4614
4615   return offset;
4616 }
4617 static int dissect_ext_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4618   return dissect_gsm_map_Ext_NoRepCondTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_noReplyConditionTime);
4619 }
4620
4621
4622
4623 static int
4624 dissect_gsm_map_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4625   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4626                                        NULL);
4627
4628   return offset;
4629 }
4630 static int dissect_forwardedToNumber_addr_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4631   return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber_addr);
4632 }
4633 static int dissect_lcsClientDialedByMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4634   return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientDialedByMS);
4635 }
4636
4637
4638 static int
4639 dissect_gsm_map_FTN_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4640   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4641
4642   return offset;
4643 }
4644 static int dissect_longForwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4645   return dissect_gsm_map_FTN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longForwardedToNumber);
4646 }
4647
4648 static const ber_sequence_t Ext_ForwFeature_sequence[] = {
4649   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
4650   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
4651   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
4652   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
4653   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_forwardingOptions_impl },
4654   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_noReplyConditionTime_impl },
4655   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4656   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
4657   { 0, 0, 0, NULL }
4658 };
4659
4660 static int
4661 dissect_gsm_map_Ext_ForwFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4662   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4663                                 Ext_ForwFeature_sequence, hf_index, ett_gsm_map_Ext_ForwFeature);
4664
4665   return offset;
4666 }
4667 static int dissect_Ext_ForwFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4668   return dissect_gsm_map_Ext_ForwFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_ForwFeatureList_item);
4669 }
4670
4671 static const ber_sequence_t Ext_ForwFeatureList_sequence_of[1] = {
4672   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_ForwFeatureList_item },
4673 };
4674
4675 static int
4676 dissect_gsm_map_Ext_ForwFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4677   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4678                                    Ext_ForwFeatureList_sequence_of, hf_index, ett_gsm_map_Ext_ForwFeatureList);
4679
4680   return offset;
4681 }
4682 static int dissect_ext_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4683   return dissect_gsm_map_Ext_ForwFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingFeatureList);
4684 }
4685 static int dissect_ext_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4686   return dissect_gsm_map_Ext_ForwFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingFeatureList);
4687 }
4688
4689 static const ber_sequence_t Ext_ForwInfo_sequence[] = {
4690   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4691   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_forwardingFeatureList },
4692   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4693   { 0, 0, 0, NULL }
4694 };
4695
4696 static int
4697 dissect_gsm_map_Ext_ForwInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4698   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4699                                 Ext_ForwInfo_sequence, hf_index, ett_gsm_map_Ext_ForwInfo);
4700
4701   return offset;
4702 }
4703 static int dissect_ext_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4704   return dissect_gsm_map_Ext_ForwInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingInfo);
4705 }
4706
4707 static const ber_sequence_t Ext_CallBarringFeature_sequence[] = {
4708   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
4709   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
4710   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4711   { 0, 0, 0, NULL }
4712 };
4713
4714 static int
4715 dissect_gsm_map_Ext_CallBarringFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4716   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4717                                 Ext_CallBarringFeature_sequence, hf_index, ett_gsm_map_Ext_CallBarringFeature);
4718
4719   return offset;
4720 }
4721 static int dissect_Ext_CallBarFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4722   return dissect_gsm_map_Ext_CallBarringFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_CallBarFeatureList_item);
4723 }
4724
4725 static const ber_sequence_t Ext_CallBarFeatureList_sequence_of[1] = {
4726   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_CallBarFeatureList_item },
4727 };
4728
4729 static int
4730 dissect_gsm_map_Ext_CallBarFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4731   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4732                                    Ext_CallBarFeatureList_sequence_of, hf_index, ett_gsm_map_Ext_CallBarFeatureList);
4733
4734   return offset;
4735 }
4736 static int dissect_ext_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4737   return dissect_gsm_map_Ext_CallBarFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringFeatureList);
4738 }
4739 static int dissect_ext_callBarringFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4740   return dissect_gsm_map_Ext_CallBarFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringFeatureList);
4741 }
4742
4743 static const ber_sequence_t Ext_CallBarInfo_sequence[] = {
4744   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4745   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_callBarringFeatureList },
4746   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4747   { 0, 0, 0, NULL }
4748 };
4749
4750 static int
4751 dissect_gsm_map_Ext_CallBarInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4752   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4753                                 Ext_CallBarInfo_sequence, hf_index, ett_gsm_map_Ext_CallBarInfo);
4754
4755   return offset;
4756 }
4757 static int dissect_ext_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4758   return dissect_gsm_map_Ext_CallBarInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringInfo);
4759 }
4760
4761
4762
4763 static int
4764 dissect_gsm_map_CUG_Index(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4765   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4766                                   NULL);
4767
4768   return offset;
4769 }
4770 static int dissect_cug_Index(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4771   return dissect_gsm_map_CUG_Index(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Index);
4772 }
4773 static int dissect_preferentialCUG_Indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4774   return dissect_gsm_map_CUG_Index(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_preferentialCUG_Indicator);
4775 }
4776
4777
4778
4779 static int
4780 dissect_gsm_map_CUG_Interlock(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4781   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4782                                        NULL);
4783
4784   return offset;
4785 }
4786 static int dissect_cug_Interlock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4787   return dissect_gsm_map_CUG_Interlock(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Interlock);
4788 }
4789
4790
4791 static const value_string gsm_map_IntraCUG_Options_vals[] = {
4792   {   0, "noCUG-Restrictions" },
4793   {   1, "cugIC-CallBarred" },
4794   {   2, "cugOG-CallBarred" },
4795   { 0, NULL }
4796 };
4797
4798
4799 static int
4800 dissect_gsm_map_IntraCUG_Options(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4801   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4802                                   NULL);
4803
4804   return offset;
4805 }
4806 static int dissect_intraCUG_Options(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4807   return dissect_gsm_map_IntraCUG_Options(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_intraCUG_Options);
4808 }
4809
4810 static const ber_sequence_t Ext_BasicServiceGroupList_sequence_of[1] = {
4811   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_BasicServiceGroupList_item },
4812 };
4813
4814 static int
4815 dissect_gsm_map_Ext_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4816   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4817                                    Ext_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_Ext_BasicServiceGroupList);
4818
4819   return offset;
4820 }
4821 static int dissect_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4822   return dissect_gsm_map_Ext_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
4823 }
4824
4825 static const ber_sequence_t CUG_Subscription_sequence[] = {
4826   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cug_Index },
4827   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
4828   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_intraCUG_Options },
4829   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
4830   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4831   { 0, 0, 0, NULL }
4832 };
4833
4834 static int
4835 dissect_gsm_map_CUG_Subscription(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4836   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4837                                 CUG_Subscription_sequence, hf_index, ett_gsm_map_CUG_Subscription);
4838
4839   return offset;
4840 }
4841 static int dissect_CUG_SubscriptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4842   return dissect_gsm_map_CUG_Subscription(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CUG_SubscriptionList_item);
4843 }
4844
4845 static const ber_sequence_t CUG_SubscriptionList_sequence_of[1] = {
4846   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CUG_SubscriptionList_item },
4847 };
4848
4849 static int
4850 dissect_gsm_map_CUG_SubscriptionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4851   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4852                                    CUG_SubscriptionList_sequence_of, hf_index, ett_gsm_map_CUG_SubscriptionList);
4853
4854   return offset;
4855 }
4856 static int dissect_cug_SubscriptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4857   return dissect_gsm_map_CUG_SubscriptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList);
4858 }
4859
4860
4861
4862 static int
4863 dissect_gsm_map_InterCUG_Restrictions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4864   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4865                                        NULL);
4866
4867   return offset;
4868 }
4869 static int dissect_interCUG_Restrictions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4870   return dissect_gsm_map_InterCUG_Restrictions(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_interCUG_Restrictions);
4871 }
4872
4873 static const ber_sequence_t CUG_Feature_sequence[] = {
4874   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
4875   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_preferentialCUG_Indicator },
4876   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_interCUG_Restrictions },
4877   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4878   { 0, 0, 0, NULL }
4879 };
4880
4881 static int
4882 dissect_gsm_map_CUG_Feature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4883   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4884                                 CUG_Feature_sequence, hf_index, ett_gsm_map_CUG_Feature);
4885
4886   return offset;
4887 }
4888 static int dissect_CUG_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4889   return dissect_gsm_map_CUG_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CUG_FeatureList_item);
4890 }
4891
4892 static const ber_sequence_t CUG_FeatureList_sequence_of[1] = {
4893   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CUG_FeatureList_item },
4894 };
4895
4896 static int
4897 dissect_gsm_map_CUG_FeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4898   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4899                                    CUG_FeatureList_sequence_of, hf_index, ett_gsm_map_CUG_FeatureList);
4900
4901   return offset;
4902 }
4903 static int dissect_cug_FeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4904   return dissect_gsm_map_CUG_FeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList);
4905 }
4906
4907 static const ber_sequence_t CUG_Info_sequence[] = {
4908   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList },
4909   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList },
4910   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4911   { 0, 0, 0, NULL }
4912 };
4913
4914 static int
4915 dissect_gsm_map_CUG_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4916   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4917                                 CUG_Info_sequence, hf_index, ett_gsm_map_CUG_Info);
4918
4919   return offset;
4920 }
4921 static int dissect_cug_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4922   return dissect_gsm_map_CUG_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Info);
4923 }
4924
4925
4926 static const value_string gsm_map_CliRestrictionOption_vals[] = {
4927   {   0, "permanent" },
4928   {   1, "temporaryDefaultRestricted" },
4929   {   2, "temporaryDefaultAllowed" },
4930   { 0, NULL }
4931 };
4932
4933
4934 static int
4935 dissect_gsm_map_CliRestrictionOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4936   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4937                                   NULL);
4938
4939   return offset;
4940 }
4941 static int dissect_cliRestrictionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4942   return dissect_gsm_map_CliRestrictionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
4943 }
4944 static int dissect_cliRestrictionOption_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4945   return dissect_gsm_map_CliRestrictionOption(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
4946 }
4947
4948
4949 static const value_string gsm_map_SS_SubscriptionOption_vals[] = {
4950   {   2, "cliRestrictionOption" },
4951   {   1, "overrideCategory" },
4952   { 0, NULL }
4953 };
4954
4955 static const ber_choice_t SS_SubscriptionOption_choice[] = {
4956   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
4957   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_overrideCategory_impl },
4958   { 0, 0, 0, 0, NULL }
4959 };
4960
4961 static int
4962 dissect_gsm_map_SS_SubscriptionOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4963   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
4964                               SS_SubscriptionOption_choice, hf_index, ett_gsm_map_SS_SubscriptionOption, NULL);
4965
4966   return offset;
4967 }
4968 static int dissect_ss_SubscriptionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4969   return dissect_gsm_map_SS_SubscriptionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_SubscriptionOption);
4970 }
4971
4972 static const ber_sequence_t Ext_SS_Data_sequence[] = {
4973   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4974   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
4975   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
4976   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
4977   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4978   { 0, 0, 0, NULL }
4979 };
4980
4981 static int
4982 dissect_gsm_map_Ext_SS_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4983   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4984                                 Ext_SS_Data_sequence, hf_index, ett_gsm_map_Ext_SS_Data);
4985
4986   return offset;
4987 }
4988 static int dissect_ext_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4989   return dissect_gsm_map_Ext_SS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Data);
4990 }
4991
4992
4993
4994 static int
4995 dissect_gsm_map_EMLPP_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4996   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4997                                   NULL);
4998
4999   return offset;
5000 }
5001 static int dissect_maximumentitledPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5002   return dissect_gsm_map_EMLPP_Priority(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_maximumentitledPriority);
5003 }
5004 static int dissect_defaultPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5005   return dissect_gsm_map_EMLPP_Priority(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
5006 }
5007 static int dissect_defaultPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5008   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
5009 }
5010 static int dissect_maximumEntitledPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5011   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_maximumEntitledPriority);
5012 }
5013 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5014   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_priority);
5015 }
5016
5017 static const ber_sequence_t EMLPP_Info_sequence[] = {
5018   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maximumentitledPriority },
5019   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
5020   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5021   { 0, 0, 0, NULL }
5022 };
5023
5024 static int
5025 dissect_gsm_map_EMLPP_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5026   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5027                                 EMLPP_Info_sequence, hf_index, ett_gsm_map_EMLPP_Info);
5028
5029   return offset;
5030 }
5031 static int dissect_emlpp_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5032   return dissect_gsm_map_EMLPP_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_emlpp_Info);
5033 }
5034
5035
5036 static const value_string gsm_map_Ext_SS_Info_vals[] = {
5037   {   0, "forwardingInfo" },
5038   {   1, "callBarringInfo" },
5039   {   2, "cug-Info" },
5040   {   3, "ss-Data" },
5041   {   4, "emlpp-Info" },
5042   { 0, NULL }
5043 };
5044
5045 static const ber_choice_t Ext_SS_Info_choice[] = {
5046   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ext_forwardingInfo_impl },
5047   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_callBarringInfo_impl },
5048   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cug_Info_impl },
5049   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_ss_Data_impl },
5050   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_emlpp_Info_impl },
5051   { 0, 0, 0, 0, NULL }
5052 };
5053
5054 static int
5055 dissect_gsm_map_Ext_SS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5056   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
5057                               Ext_SS_Info_choice, hf_index, ett_gsm_map_Ext_SS_Info, NULL);
5058
5059   return offset;
5060 }
5061 static int dissect_Ext_SS_InfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5062   return dissect_gsm_map_Ext_SS_Info(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_SS_InfoList_item);
5063 }
5064
5065 static const ber_sequence_t Ext_SS_InfoList_sequence_of[1] = {
5066   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_SS_InfoList_item },
5067 };
5068
5069 static int
5070 dissect_gsm_map_Ext_SS_InfoList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5071   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5072                                    Ext_SS_InfoList_sequence_of, hf_index, ett_gsm_map_Ext_SS_InfoList);
5073
5074   return offset;
5075 }
5076 static int dissect_provisionedSS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5077   return dissect_gsm_map_Ext_SS_InfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS);
5078 }
5079
5080 static const ber_sequence_t ODB_Data_sequence[] = {
5081   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_odb_GeneralData },
5082   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_odb_HPLMN_Data },
5083   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5084   { 0, 0, 0, NULL }
5085 };
5086
5087 static int
5088 dissect_gsm_map_ODB_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5089   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5090                                 ODB_Data_sequence, hf_index, ett_gsm_map_ODB_Data);
5091
5092   return offset;
5093 }
5094 static int dissect_odb_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5095   return dissect_gsm_map_ODB_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
5096 }
5097 static int dissect_odb_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5098   return dissect_gsm_map_ODB_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
5099 }
5100 static int dissect_odb_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5101   return dissect_gsm_map_ODB_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_data);
5102 }
5103
5104
5105
5106 static int
5107 dissect_gsm_map_ZoneCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5108   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5109                                        NULL);
5110
5111   return offset;
5112 }
5113 static int dissect_regionalSubscriptionIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5114   return dissect_gsm_map_ZoneCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionIdentifier);
5115 }
5116 static int dissect_ZoneCodeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5117   return dissect_gsm_map_ZoneCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ZoneCodeList_item);
5118 }
5119
5120 static const ber_sequence_t ZoneCodeList_sequence_of[1] = {
5121   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ZoneCodeList_item },
5122 };
5123
5124 static int
5125 dissect_gsm_map_ZoneCodeList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5126   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5127                                    ZoneCodeList_sequence_of, hf_index, ett_gsm_map_ZoneCodeList);
5128
5129   return offset;
5130 }
5131 static int dissect_regionalSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5132   return dissect_gsm_map_ZoneCodeList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData);
5133 }
5134
5135
5136 static int
5137 dissect_gsm_map_GroupId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5138   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5139
5140   return offset;
5141 }
5142 static int dissect_groupId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5143   return dissect_gsm_map_GroupId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupId);
5144 }
5145 static int dissect_groupid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5146   return dissect_gsm_map_GroupId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupid);
5147 }
5148
5149 static const ber_sequence_t VoiceBroadcastData_sequence[] = {
5150   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupid },
5151   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_broadcastInitEntitlement },
5152   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5153   { 0, 0, 0, NULL }
5154 };
5155
5156 static int
5157 dissect_gsm_map_VoiceBroadcastData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5158   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5159                                 VoiceBroadcastData_sequence, hf_index, ett_gsm_map_VoiceBroadcastData);
5160
5161   return offset;
5162 }
5163 static int dissect_VBSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5164   return dissect_gsm_map_VoiceBroadcastData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_VBSDataList_item);
5165 }
5166
5167 static const ber_sequence_t VBSDataList_sequence_of[1] = {
5168   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_VBSDataList_item },
5169 };
5170
5171 static int
5172 dissect_gsm_map_VBSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5173   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5174                                    VBSDataList_sequence_of, hf_index, ett_gsm_map_VBSDataList);
5175
5176   return offset;
5177 }
5178 static int dissect_vbsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5179   return dissect_gsm_map_VBSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData);
5180 }
5181
5182 static const ber_sequence_t VoiceGroupCallData_sequence[] = {
5183   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupId },
5184   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5185   { 0, 0, 0, NULL }
5186 };
5187
5188 static int
5189 dissect_gsm_map_VoiceGroupCallData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5190   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5191                                 VoiceGroupCallData_sequence, hf_index, ett_gsm_map_VoiceGroupCallData);
5192
5193   return offset;
5194 }
5195 static int dissect_VGCSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5196   return dissect_gsm_map_VoiceGroupCallData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_VGCSDataList_item);
5197 }
5198
5199 static const ber_sequence_t VGCSDataList_sequence_of[1] = {
5200   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_VGCSDataList_item },
5201 };
5202
5203 static int
5204 dissect_gsm_map_VGCSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5205   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5206                                    VGCSDataList_sequence_of, hf_index, ett_gsm_map_VGCSDataList);
5207
5208   return offset;
5209 }
5210 static int dissect_vgcsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5211   return dissect_gsm_map_VGCSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData);
5212 }
5213
5214 static const ber_sequence_t SS_EventList_sequence_of[1] = {
5215   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SS_EventList_item },
5216 };
5217
5218 static int
5219 dissect_gsm_map_SS_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5220   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5221                                    SS_EventList_sequence_of, hf_index, ett_gsm_map_SS_EventList);
5222
5223   return offset;
5224 }
5225 static int dissect_ss_EventList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5226   return dissect_gsm_map_SS_EventList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList);
5227 }
5228
5229 static const ber_sequence_t SS_CamelData_sequence[] = {
5230   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_EventList },
5231   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
5232   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5233   { 0, 0, 0, NULL }
5234 };
5235
5236 static int
5237 dissect_gsm_map_SS_CamelData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5238   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5239                                 SS_CamelData_sequence, hf_index, ett_gsm_map_SS_CamelData);
5240
5241   return offset;
5242 }
5243 static int dissect_ss_CamelData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5244   return dissect_gsm_map_SS_CamelData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CamelData);
5245 }
5246
5247 static const ber_sequence_t SS_CSI_sequence[] = {
5248   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_CamelData },
5249   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5250   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5251   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
5252   { 0, 0, 0, NULL }
5253 };
5254
5255 static int
5256 dissect_gsm_map_SS_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5257   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5258                                 SS_CSI_sequence, hf_index, ett_gsm_map_SS_CSI);
5259
5260   return offset;
5261 }
5262 static int dissect_ss_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5263   return dissect_gsm_map_SS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CSI);
5264 }
5265
5266
5267 static const value_string gsm_map_MatchType_vals[] = {
5268   {   0, "inhibiting" },
5269   {   1, "enabling" },
5270   { 0, NULL }
5271 };
5272
5273
5274 static int
5275 dissect_gsm_map_MatchType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5276   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5277                                   NULL);
5278
5279   return offset;
5280 }
5281 static int dissect_matchType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5282   return dissect_gsm_map_MatchType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_matchType);
5283 }
5284
5285 static const ber_sequence_t DestinationNumberList_sequence_of[1] = {
5286   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_DestinationNumberList_item },
5287 };
5288
5289 static int
5290 dissect_gsm_map_DestinationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5291   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5292                                    DestinationNumberList_sequence_of, hf_index, ett_gsm_map_DestinationNumberList);
5293
5294   return offset;
5295 }
5296 static int dissect_destinationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5297   return dissect_gsm_map_DestinationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList);
5298 }
5299
5300
5301
5302 static int
5303 dissect_gsm_map_INTEGER_1_15(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5304   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5305                                   NULL);
5306
5307   return offset;
5308 }
5309 static int dissect_DestinationNumberLengthList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5310   return dissect_gsm_map_INTEGER_1_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DestinationNumberLengthList_item);
5311 }
5312
5313 static const ber_sequence_t DestinationNumberLengthList_sequence_of[1] = {
5314   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_DestinationNumberLengthList_item },
5315 };
5316
5317 static int
5318 dissect_gsm_map_DestinationNumberLengthList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5319   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5320                                    DestinationNumberLengthList_sequence_of, hf_index, ett_gsm_map_DestinationNumberLengthList);
5321
5322   return offset;
5323 }
5324 static int dissect_destinationNumberLengthList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5325   return dissect_gsm_map_DestinationNumberLengthList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList);
5326 }
5327
5328 static const ber_sequence_t DestinationNumberCriteria_sequence[] = {
5329   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_matchType_impl },
5330   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberList_impl },
5331   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberLengthList_impl },
5332   { 0, 0, 0, NULL }
5333 };
5334
5335 static int
5336 dissect_gsm_map_DestinationNumberCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5337   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5338                                 DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_DestinationNumberCriteria);
5339
5340   return offset;
5341 }
5342 static int dissect_destinationNumberCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5343   return dissect_gsm_map_DestinationNumberCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberCriteria);
5344 }
5345
5346 static const ber_sequence_t BasicServiceCriteria_sequence_of[1] = {
5347   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceCriteria_item },
5348 };
5349
5350 static int
5351 dissect_gsm_map_BasicServiceCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5352   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5353                                    BasicServiceCriteria_sequence_of, hf_index, ett_gsm_map_BasicServiceCriteria);
5354
5355   return offset;
5356 }
5357 static int dissect_basicServiceCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5358   return dissect_gsm_map_BasicServiceCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceCriteria);
5359 }
5360
5361
5362 static const value_string gsm_map_CallTypeCriteria_vals[] = {
5363   {   0, "forwarded" },
5364   {   1, "notForwarded" },
5365   { 0, NULL }
5366 };
5367
5368
5369 static int
5370 dissect_gsm_map_CallTypeCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5371   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5372                                   NULL);
5373
5374   return offset;
5375 }
5376 static int dissect_callTypeCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5377   return dissect_gsm_map_CallTypeCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTypeCriteria);
5378 }
5379
5380
5381
5382 static int
5383 dissect_gsm_map_CauseValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5384   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5385                                        NULL);
5386
5387   return offset;
5388 }
5389 static int dissect_T_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5390   return dissect_gsm_map_CauseValue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_CauseValueCriteria_item);
5391 }
5392 static int dissect_O_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5393   return dissect_gsm_map_CauseValue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_CauseValueCriteria_item);
5394 }
5395
5396 static const ber_sequence_t O_CauseValueCriteria_sequence_of[1] = {
5397   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_O_CauseValueCriteria_item },
5398 };
5399
5400 static int
5401 dissect_gsm_map_O_CauseValueCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5402   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5403                                    O_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_O_CauseValueCriteria);
5404
5405   return offset;
5406 }
5407 static int dissect_o_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5408   return dissect_gsm_map_O_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CauseValueCriteria);
5409 }
5410
5411 static const ber_sequence_t O_BcsmCamelTDP_Criteria_sequence[] = {
5412   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
5413   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberCriteria_impl },
5414   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
5415   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTypeCriteria_impl },
5416   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CauseValueCriteria_impl },
5417   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5418   { 0, 0, 0, NULL }
5419 };
5420
5421 static int
5422 dissect_gsm_map_O_BcsmCamelTDP_Criteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5423   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5424                                 O_BcsmCamelTDP_Criteria_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDP_Criteria);
5425
5426   return offset;
5427 }
5428 static int dissect_O_BcsmCamelTDPCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5429   return dissect_gsm_map_O_BcsmCamelTDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDPCriteriaList_item);
5430 }
5431
5432 static const ber_sequence_t O_BcsmCamelTDPCriteriaList_sequence_of[1] = {
5433   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDPCriteriaList_item },
5434 };
5435
5436 static int
5437 dissect_gsm_map_O_BcsmCamelTDPCriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5438   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5439                                    O_BcsmCamelTDPCriteriaList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDPCriteriaList);
5440
5441   return offset;
5442 }
5443 static int dissect_o_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5444   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDP_CriteriaList);
5445 }
5446 static int dissect_o_BcsmCamelTDPCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5447   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPCriteriaList);
5448 }
5449 static int dissect_o_IM_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5450   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList);
5451 }
5452
5453
5454
5455 static int
5456 dissect_gsm_map_MM_Code(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5457   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5458                                        NULL);
5459
5460   return offset;
5461 }
5462 static int dissect_eventMet_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5463   return dissect_gsm_map_MM_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventMet);
5464 }
5465 static int dissect_MobilityTriggers_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5466   return dissect_gsm_map_MM_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MobilityTriggers_item);
5467 }
5468
5469 static const ber_sequence_t MobilityTriggers_sequence_of[1] = {
5470   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_MobilityTriggers_item },
5471 };
5472
5473 static int
5474 dissect_gsm_map_MobilityTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5475   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5476                                    MobilityTriggers_sequence_of, hf_index, ett_gsm_map_MobilityTriggers);
5477
5478   return offset;
5479 }
5480 static int dissect_mobilityTriggers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5481   return dissect_gsm_map_MobilityTriggers(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mobilityTriggers);
5482 }
5483
5484 static const ber_sequence_t M_CSI_sequence[] = {
5485   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
5486   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5487   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
5488   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5489   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5490   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
5491   { 0, 0, 0, NULL }
5492 };
5493
5494 static int
5495 dissect_gsm_map_M_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5496   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5497                                 M_CSI_sequence, hf_index, ett_gsm_map_M_CSI);
5498
5499   return offset;
5500 }
5501 static int dissect_m_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5502   return dissect_gsm_map_M_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_m_CSI);
5503 }
5504
5505
5506 static const value_string gsm_map_SMS_TriggerDetectionPoint_vals[] = {
5507   {   1, "sms-CollectedInfo" },
5508   {   2, "sms-DeliveryRequest" },
5509   { 0, NULL }
5510 };
5511
5512
5513 static int
5514 dissect_gsm_map_SMS_TriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5515   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5516                                   NULL);
5517
5518   return offset;
5519 }
5520 static int dissect_sms_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5521   return dissect_gsm_map_SMS_TriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
5522 }
5523 static int dissect_sms_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5524   return dissect_gsm_map_SMS_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
5525 }
5526
5527
5528 static const value_string gsm_map_DefaultSMS_Handling_vals[] = {
5529   {   0, "continueTransaction" },
5530   {   1, "releaseTransaction" },
5531   { 0, NULL }
5532 };
5533
5534
5535 static int
5536 dissect_gsm_map_DefaultSMS_Handling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5537   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5538                                   NULL);
5539
5540   return offset;
5541 }
5542 static int dissect_defaultSMS_Handling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5543   return dissect_gsm_map_DefaultSMS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSMS_Handling);
5544 }
5545
5546 static const ber_sequence_t SMS_CAMEL_TDP_Data_sequence[] = {
5547   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sms_TriggerDetectionPoint_impl },
5548   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
5549   { BER_CLASS_CON, 2, 0, dissect_gsmSCF_Address },
5550   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSMS_Handling_impl },
5551   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5552   { 0, 0, 0, NULL }
5553 };
5554
5555 static int
5556 dissect_gsm_map_SMS_CAMEL_TDP_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5557   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5558                                 SMS_CAMEL_TDP_Data_sequence, hf_index, ett_gsm_map_SMS_CAMEL_TDP_Data);
5559
5560   return offset;
5561 }
5562 static int dissect_SMS_CAMEL_TDP_DataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5563   return dissect_gsm_map_SMS_CAMEL_TDP_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SMS_CAMEL_TDP_DataList_item);
5564 }
5565
5566 static const ber_sequence_t SMS_CAMEL_TDP_DataList_sequence_of[1] = {
5567   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SMS_CAMEL_TDP_DataList_item },
5568 };
5569
5570 static int
5571 dissect_gsm_map_SMS_CAMEL_TDP_DataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5572   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5573                                    SMS_CAMEL_TDP_DataList_sequence_of, hf_index, ett_gsm_map_SMS_CAMEL_TDP_DataList);
5574
5575   return offset;
5576 }
5577 static int dissect_sms_CAMEL_TDP_DataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5578   return dissect_gsm_map_SMS_CAMEL_TDP_DataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_CAMEL_TDP_DataList);
5579 }
5580
5581 static const ber_sequence_t SMS_CSI_sequence[] = {
5582   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sms_CAMEL_TDP_DataList_impl },
5583   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
5584   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5585   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5586   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
5587   { 0, 0, 0, NULL }
5588 };
5589
5590 static int
5591 dissect_gsm_map_SMS_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5592   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5593                                 SMS_CSI_sequence, hf_index, ett_gsm_map_SMS_CSI);
5594
5595   return offset;
5596 }
5597 static int dissect_mo_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5598   return dissect_gsm_map_SMS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mo_sms_CSI);
5599 }
5600 static int dissect_mt_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5601   return dissect_gsm_map_SMS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_sms_CSI);
5602 }
5603
5604
5605 static const value_string gsm_map_T_BcsmTriggerDetectionPoint_vals[] = {
5606   {  12, "termAttemptAuthorized" },
5607   {  13, "tBusy" },
5608   {  14, "tNoAnswer" },
5609   { 0, NULL }
5610 };
5611
5612
5613 static int
5614 dissect_gsm_map_T_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5615   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5616                                   NULL);
5617
5618   return offset;
5619 }
5620 static int dissect_t_BCSM_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5621   return dissect_gsm_map_T_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_TriggerDetectionPoint);
5622 }
5623 static int dissect_t_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5624   return dissect_gsm_map_T_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmTriggerDetectionPoint);
5625 }
5626
5627 static const ber_sequence_t T_BcsmCamelTDPData_sequence[] = {
5628   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BcsmTriggerDetectionPoint },
5629   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5630   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
5631   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
5632   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5633   { 0, 0, 0, NULL }
5634 };
5635
5636 static int
5637 dissect_gsm_map_T_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5638   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5639                                 T_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_T_BcsmCamelTDPData);
5640
5641   return offset;
5642 }
5643 static int dissect_T_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5644   return dissect_gsm_map_T_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_BcsmCamelTDPDataList_item);
5645 }
5646
5647 static const ber_sequence_t T_BcsmCamelTDPDataList_sequence_of[1] = {
5648   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_T_BcsmCamelTDPDataList_item },
5649 };
5650
5651 static int
5652 dissect_gsm_map_T_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5653   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5654                                    T_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_T_BcsmCamelTDPDataList);
5655
5656   return offset;
5657 }
5658 static int dissect_t_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5659   return dissect_gsm_map_T_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmCamelTDPDataList);
5660 }
5661
5662 static const ber_sequence_t T_CSI_sequence[] = {
5663   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
5664   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5665   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
5666   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5667   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
5668   { 0, 0, 0, NULL }
5669 };
5670
5671 static int
5672 dissect_gsm_map_T_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5673   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5674                                 T_CSI_sequence, hf_index, ett_gsm_map_T_CSI);
5675
5676   return offset;
5677 }
5678 static int dissect_vt_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5679   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_CSI);
5680 }
5681 static int dissect_t_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5682   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CSI);
5683 }
5684 static int dissect_vt_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5685   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_CSI);
5686 }
5687
5688 static const ber_sequence_t T_CauseValueCriteria_sequence_of[1] = {
5689   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_T_CauseValueCriteria_item },
5690 };
5691
5692 static int
5693 dissect_gsm_map_T_CauseValueCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5694   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5695                                    T_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_T_CauseValueCriteria);
5696
5697   return offset;
5698 }
5699 static int dissect_t_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5700   return dissect_gsm_map_T_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CauseValueCriteria);
5701 }
5702
5703 static const ber_sequence_t T_BCSM_CAMEL_TDP_Criteria_sequence[] = {
5704   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_TriggerDetectionPoint },
5705   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
5706   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CauseValueCriteria_impl },
5707   { 0, 0, 0, NULL }
5708 };
5709
5710 static int
5711 dissect_gsm_map_T_BCSM_CAMEL_TDP_Criteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5712   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5713                                 T_BCSM_CAMEL_TDP_Criteria_sequence, hf_index, ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria);
5714
5715   return offset;
5716 }
5717 static int dissect_T_BCSM_CAMEL_TDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5718   return dissect_gsm_map_T_BCSM_CAMEL_TDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item);
5719 }
5720
5721 static const ber_sequence_t T_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
5722   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_T_BCSM_CAMEL_TDP_CriteriaList_item },
5723 };
5724
5725 static int
5726 dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5727   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5728                                    T_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList);
5729
5730   return offset;
5731 }
5732 static int dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5733   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList);
5734 }
5735 static int dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5736   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList);
5737 }
5738 static int dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5739   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList);
5740 }
5741
5742 static const ber_sequence_t DP_AnalysedInfoCriterium_sequence[] = {
5743   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dialledNumber },
5744   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5745   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
5746   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_defaultCallHandling },
5747   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5748   { 0, 0, 0, NULL }
5749 };
5750
5751 static int
5752 dissect_gsm_map_DP_AnalysedInfoCriterium(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5753   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5754                                 DP_AnalysedInfoCriterium_sequence, hf_index, ett_gsm_map_DP_AnalysedInfoCriterium);
5755
5756   return offset;
5757 }
5758 static int dissect_DP_AnalysedInfoCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5759   return dissect_gsm_map_DP_AnalysedInfoCriterium(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DP_AnalysedInfoCriteriaList_item);
5760 }
5761
5762 static const ber_sequence_t DP_AnalysedInfoCriteriaList_sequence_of[1] = {
5763   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DP_AnalysedInfoCriteriaList_item },
5764 };
5765
5766 static int
5767 dissect_gsm_map_DP_AnalysedInfoCriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5768   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5769                                    DP_AnalysedInfoCriteriaList_sequence_of, hf_index, ett_gsm_map_DP_AnalysedInfoCriteriaList);
5770
5771   return offset;
5772 }
5773 static int dissect_dp_AnalysedInfoCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5774   return dissect_gsm_map_DP_AnalysedInfoCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dp_AnalysedInfoCriteriaList);
5775 }
5776
5777 static const ber_sequence_t D_CSI_sequence[] = {
5778   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dp_AnalysedInfoCriteriaList_impl },
5779   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
5780   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5781   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5782   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
5783   { 0, 0, 0, NULL }
5784 };
5785
5786 static int
5787 dissect_gsm_map_D_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5788   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5789                                 D_CSI_sequence, hf_index, ett_gsm_map_D_CSI);
5790
5791   return offset;
5792 }
5793 static int dissect_d_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5794   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_CSI);
5795 }
5796 static int dissect_d_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5797   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_csi);
5798 }
5799 static int dissect_d_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5800   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_IM_CSI);
5801 }
5802
5803
5804 static const value_string gsm_map_MT_SMS_TPDU_Type_vals[] = {
5805   {   0, "sms-DELIVER" },
5806   {   1, "sms-SUBMIT-REPORT" },
5807   {   2, "sms-STATUS-REPORT" },
5808   { 0, NULL }
5809 };
5810
5811
5812 static int
5813 dissect_gsm_map_MT_SMS_TPDU_Type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5814   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5815                                   NULL);
5816
5817   return offset;
5818 }
5819 static int dissect_TPDU_TypeCriterion_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5820   return dissect_gsm_map_MT_SMS_TPDU_Type(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TPDU_TypeCriterion_item);
5821 }
5822
5823 static const ber_sequence_t TPDU_TypeCriterion_sequence_of[1] = {
5824   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_TPDU_TypeCriterion_item },
5825 };
5826
5827 static int
5828 dissect_gsm_map_TPDU_TypeCriterion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5829   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5830                                    TPDU_TypeCriterion_sequence_of, hf_index, ett_gsm_map_TPDU_TypeCriterion);
5831
5832   return offset;
5833 }
5834 static int dissect_tpdu_TypeCriterion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5835   return dissect_gsm_map_TPDU_TypeCriterion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tpdu_TypeCriterion);
5836 }
5837
5838 static const ber_sequence_t MT_smsCAMELTDP_Criteria_sequence[] = {
5839   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sms_TriggerDetectionPoint },
5840   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tpdu_TypeCriterion_impl },
5841   { 0, 0, 0, NULL }
5842 };
5843
5844 static int
5845 dissect_gsm_map_MT_smsCAMELTDP_Criteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5846   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5847                                 MT_smsCAMELTDP_Criteria_sequence, hf_index, ett_gsm_map_MT_smsCAMELTDP_Criteria);
5848
5849   return offset;
5850 }
5851 static int dissect_MT_smsCAMELTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5852   return dissect_gsm_map_MT_smsCAMELTDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item);
5853 }
5854
5855 static const ber_sequence_t MT_smsCAMELTDP_CriteriaList_sequence_of[1] = {
5856   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MT_smsCAMELTDP_CriteriaList_item },
5857 };
5858
5859 static int
5860 dissect_gsm_map_MT_smsCAMELTDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5861   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5862                                    MT_smsCAMELTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_MT_smsCAMELTDP_CriteriaList);
5863
5864   return offset;
5865 }
5866 static int dissect_mt_smsCAMELTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5867   return dissect_gsm_map_MT_smsCAMELTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_smsCAMELTDP_CriteriaList);
5868 }
5869
5870 static const ber_sequence_t VlrCamelSubscriptionInfo_sequence[] = {
5871   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
5872   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5873   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
5874   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
5875   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
5876   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
5877   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
5878   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
5879   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
5880   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
5881   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
5882   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
5883   { 0, 0, 0, NULL }
5884 };
5885
5886 static int
5887 dissect_gsm_map_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5888   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5889                                 VlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_VlrCamelSubscriptionInfo);
5890
5891   return offset;
5892 }
5893 static int dissect_vlrCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5894   return dissect_gsm_map_VlrCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlrCamelSubscriptionInfo);
5895 }
5896
5897
5898
5899 static int
5900 dissect_gsm_map_NAEA_CIC(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5901   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5902                                        NULL);
5903
5904   return offset;
5905 }
5906 static int dissect_naea_PreferredCIC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5907   return dissect_gsm_map_NAEA_CIC(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCIC);
5908 }
5909
5910 static const ber_sequence_t NAEA_PreferredCI_sequence[] = {
5911   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_naea_PreferredCIC_impl },
5912   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5913   { 0, 0, 0, NULL }
5914 };
5915
5916 static int
5917 dissect_gsm_map_NAEA_PreferredCI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5918   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5919                                 NAEA_PreferredCI_sequence, hf_index, ett_gsm_map_NAEA_PreferredCI);
5920
5921   return offset;
5922 }
5923 static int dissect_naea_PreferredCI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5924   return dissect_gsm_map_NAEA_PreferredCI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCI);
5925 }
5926
5927
5928
5929 static int
5930 dissect_gsm_map_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5931   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5932                                   NULL);
5933
5934   return offset;
5935 }
5936 static int dissect_pdp_ContextId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5937   return dissect_gsm_map_ContextId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextId);
5938 }
5939 static int dissect_ContextIdList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5940   return dissect_gsm_map_ContextId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ContextIdList_item);
5941 }
5942 static int dissect_pdp_ContextIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5943   return dissect_gsm_map_ContextId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextIdentifier);
5944 }
5945
5946
5947
5948 static int
5949 dissect_gsm_map_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5950   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5951                                        NULL);
5952
5953   return offset;
5954 }
5955 static int dissect_pdp_Type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5956   return dissect_gsm_map_PDP_Type(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Type);
5957 }
5958
5959
5960
5961 static int
5962 dissect_gsm_map_PDP_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5963   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5964                                        NULL);
5965
5966   return offset;
5967 }
5968 static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5969   return dissect_gsm_map_PDP_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Address);
5970 }
5971
5972
5973
5974 static int
5975 dissect_gsm_map_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5976   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5977                                        NULL);
5978
5979   return offset;
5980 }
5981 static int dissect_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5982   return dissect_gsm_map_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Subscribed);
5983 }
5984
5985
5986
5987 static int
5988 dissect_gsm_map_APN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5989   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5990                                        NULL);
5991
5992   return offset;
5993 }
5994 static int dissect_apn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5995   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn);
5996 }
5997 static int dissect_apn_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5998   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_Subscribed);
5999 }
6000 static int dissect_apn_InUse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6001   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_InUse);
6002 }
6003 static int dissect_lcsAPN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6004   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsAPN);
6005 }
6006
6007
6008
6009 static int
6010 dissect_gsm_map_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6011   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6012                                        NULL);
6013
6014   return offset;
6015 }
6016 static int dissect_ext_QoS_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6017   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_QoS_Subscribed);
6018 }
6019 static int dissect_ext_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6020   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_qos_Subscribed);
6021 }
6022 static int dissect_qos_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6023   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Requested);
6024 }
6025 static int dissect_qos_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6026   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Negotiated);
6027 }
6028
6029
6030
6031 static int
6032 dissect_gsm_map_ChargingCharacteristics(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6033   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6034                                        NULL);
6035
6036   return offset;
6037 }
6038 static int dissect_chargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6039   return dissect_gsm_map_ChargingCharacteristics(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristics);
6040 }
6041 static int dissect_pdp_ChargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6042   return dissect_gsm_map_ChargingCharacteristics(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ChargingCharacteristics);
6043 }
6044
6045
6046
6047 static int
6048 dissect_gsm_map_Ext2_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6049   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6050                                        NULL);
6051
6052   return offset;
6053 }
6054 static int dissect_ext2_QoS_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6055   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext2_QoS_Subscribed);
6056 }
6057 static int dissect_qos2_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6058   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Subscribed);
6059 }
6060 static int dissect_qos2_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6061   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Requested);
6062 }
6063 static int dissect_qos2_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6064   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Negotiated);
6065 }
6066
6067 static const ber_sequence_t PDP_Context_sequence[] = {
6068   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pdp_ContextId },
6069   { BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
6070   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
6071   { BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
6072   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vplmnAddressAllowed_impl },
6073   { BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_apn_impl },
6074   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6075   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_QoS_Subscribed_impl },
6076   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ChargingCharacteristics_impl },
6077   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext2_QoS_Subscribed_impl },
6078   { 0, 0, 0, NULL }
6079 };
6080
6081 static int
6082 dissect_gsm_map_PDP_Context(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6083   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6084                                 PDP_Context_sequence, hf_index, ett_gsm_map_PDP_Context);
6085
6086   return offset;
6087 }
6088 static int dissect_GPRSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6089   return dissect_gsm_map_PDP_Context(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GPRSDataList_item);
6090 }
6091
6092 static const ber_sequence_t GPRSDataList_sequence_of[1] = {
6093   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_GPRSDataList_item },
6094 };
6095
6096 static int
6097 dissect_gsm_map_GPRSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6098   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6099                                    GPRSDataList_sequence_of, hf_index, ett_gsm_map_GPRSDataList);
6100
6101   return offset;
6102 }
6103 static int dissect_gprsDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6104   return dissect_gsm_map_GPRSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList);
6105 }
6106
6107 static const ber_sequence_t GPRSSubscriptionData_sequence[] = {
6108   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
6109   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprsDataList_impl },
6110   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6111   { 0, 0, 0, NULL }
6112 };
6113
6114 static int
6115 dissect_gsm_map_GPRSSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6116   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6117                                 GPRSSubscriptionData_sequence, hf_index, ett_gsm_map_GPRSSubscriptionData);
6118
6119   return offset;
6120 }
6121 static int dissect_gprsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6122   return dissect_gsm_map_GPRSSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionData);
6123 }
6124
6125
6126 static const value_string gsm_map_NetworkAccessMode_vals[] = {
6127   {   0, "bothMSCAndSGSN" },
6128   {   1, "onlyMSC" },
6129   {   2, "onlySGSN" },
6130   { 0, NULL }
6131 };
6132
6133
6134 static int
6135 dissect_gsm_map_NetworkAccessMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6136   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6137                                   NULL);
6138
6139   return offset;
6140 }
6141 static int dissect_networkAccessMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6142   return dissect_gsm_map_NetworkAccessMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkAccessMode);
6143 }
6144
6145
6146 static const value_string gsm_map_LSAOnlyAccessIndicator_vals[] = {
6147   {   0, "accessOutsideLSAsAllowed" },
6148   {   1, "accessOutsideLSAsRestricted" },
6149   { 0, NULL }
6150 };
6151
6152
6153 static int
6154 dissect_gsm_map_LSAOnlyAccessIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6155   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6156                                   NULL);
6157
6158   return offset;
6159 }
6160 static int dissect_lsaOnlyAccessIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6161   return dissect_gsm_map_LSAOnlyAccessIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaOnlyAccessIndicator);
6162 }
6163
6164
6165
6166 static int
6167 dissect_gsm_map_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6168   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6169                                        NULL);
6170
6171   return offset;
6172 }
6173 static int dissect_lsaIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6174   return dissect_gsm_map_LSAIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentity);
6175 }
6176 static int dissect_LSAIdentityList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6177   return dissect_gsm_map_LSAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LSAIdentityList_item);
6178 }
6179 static int dissect_selectedLSA_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6180   return dissect_gsm_map_LSAIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSA_Id);
6181 }
6182 static int dissect_selectedLSAIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6183   return dissect_gsm_map_LSAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSAIdentity);
6184 }
6185
6186
6187
6188 static int
6189 dissect_gsm_map_LSAAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6190   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6191                                        NULL);
6192
6193   return offset;
6194 }
6195 static int dissect_lsaAttributes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6196   return dissect_gsm_map_LSAAttributes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaAttributes);
6197 }
6198
6199 static const ber_sequence_t LSAData_sequence[] = {
6200   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lsaIdentity_impl },
6201   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lsaAttributes_impl },
6202   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaActiveModeIndicator_impl },
6203   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6204   { 0, 0, 0, NULL }
6205 };
6206
6207 static int
6208 dissect_gsm_map_LSAData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6209   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6210                                 LSAData_sequence, hf_index, ett_gsm_map_LSAData);
6211
6212   return offset;
6213 }
6214 static int dissect_LSADataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6215   return dissect_gsm_map_LSAData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LSADataList_item);
6216 }
6217
6218 static const ber_sequence_t LSADataList_sequence_of[1] = {
6219   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_LSADataList_item },
6220 };
6221
6222 static int
6223 dissect_gsm_map_LSADataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6224   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6225                                    LSADataList_sequence_of, hf_index, ett_gsm_map_LSADataList);
6226
6227   return offset;
6228 }
6229 static int dissect_lsaDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6230   return dissect_gsm_map_LSADataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList);
6231 }
6232
6233 static const ber_sequence_t LSAInformation_sequence[] = {
6234   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
6235   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaOnlyAccessIndicator_impl },
6236   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaDataList_impl },
6237   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6238   { 0, 0, 0, NULL }
6239 };
6240
6241 static int
6242 dissect_gsm_map_LSAInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6243   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6244                                 LSAInformation_sequence, hf_index, ett_gsm_map_LSAInformation);
6245
6246   return offset;
6247 }
6248 static int dissect_lsaInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6249   return dissect_gsm_map_LSAInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformation);
6250 }
6251
6252 static const ber_sequence_t GMLC_List_sequence_of[1] = {
6253   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_GMLC_List_item },
6254 };
6255
6256 static int
6257 dissect_gsm_map_GMLC_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6258   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6259                                    GMLC_List_sequence_of, hf_index, ett_gsm_map_GMLC_List);
6260
6261   return offset;
6262 }
6263 static int dissect_gmlc_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6264   return dissect_gsm_map_GMLC_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List);
6265 }
6266
6267
6268 static const value_string gsm_map_NotificationToMSUser_vals[] = {
6269   {   0, "notifyLocationAllowed" },
6270   {   1, "notifyAndVerify-LocationAllowedIfNoResponse" },
6271   {   2, "notifyAndVerify-LocationNotAllowedIfNoResponse" },
6272   {   3, "locationNotAllowed" },
6273   { 0, NULL }
6274 };
6275
6276
6277 static int
6278 dissect_gsm_map_NotificationToMSUser(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6279   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6280                                   NULL);
6281
6282   return offset;
6283 }
6284 static int dissect_notificationToMSUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6285   return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToMSUser);
6286 }
6287
6288 static const ber_sequence_t LCSClientExternalID_sequence[] = {
6289   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
6290   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6291   { 0, 0, 0, NULL }
6292 };
6293
6294 static int
6295 dissect_gsm_map_LCSClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6296   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6297                                 LCSClientExternalID_sequence, hf_index, ett_gsm_map_LCSClientExternalID);
6298
6299   return offset;
6300 }
6301 static int dissect_clientIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6302   return dissect_gsm_map_LCSClientExternalID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_clientIdentity);
6303 }
6304 static int dissect_lcsClientExternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6305   return dissect_gsm_map_LCSClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientExternalID);
6306 }
6307
6308
6309 static const value_string gsm_map_GMLC_Restriction_vals[] = {
6310   {   0, "gmlc-List" },
6311   {   1, "home-Country" },
6312   { 0, NULL }
6313 };
6314
6315
6316 static int
6317 dissect_gsm_map_GMLC_Restriction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6318   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6319                                   NULL);
6320
6321   return offset;
6322 }
6323 static int dissect_gmlc_Restriction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6324   return dissect_gsm_map_GMLC_Restriction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_Restriction);
6325 }
6326
6327 static const ber_sequence_t ExternalClient_sequence[] = {
6328   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_clientIdentity },
6329   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
6330   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
6331   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6332   { 0, 0, 0, NULL }
6333 };
6334
6335 static int
6336 dissect_gsm_map_ExternalClient(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6337   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6338                                 ExternalClient_sequence, hf_index, ett_gsm_map_ExternalClient);
6339
6340   return offset;
6341 }
6342 static int dissect_ExternalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6343   return dissect_gsm_map_ExternalClient(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ExternalClientList_item);
6344 }
6345 static int dissect_Ext_ExternalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6346   return dissect_gsm_map_ExternalClient(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_ExternalClientList_item);
6347 }
6348
6349 static const ber_sequence_t ExternalClientList_sequence_of[1] = {
6350   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ExternalClientList_item },
6351 };
6352
6353 static int
6354 dissect_gsm_map_ExternalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6355   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6356                                    ExternalClientList_sequence_of, hf_index, ett_gsm_map_ExternalClientList);
6357
6358   return offset;
6359 }
6360 static int dissect_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6361   return dissect_gsm_map_ExternalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList);
6362 }
6363
6364
6365 static const value_string gsm_map_LCSClientInternalID_vals[] = {
6366   {   0, "broadcastService" },
6367   {   1, "o-andM-HPLMN" },
6368   {   2, "o-andM-VPLMN" },
6369   {   3, "anonymousLocation" },
6370   {   4, "targetMSsubscribedService" },
6371   { 0, NULL }
6372 };
6373
6374
6375 static int
6376 dissect_gsm_map_LCSClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6377   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6378                                   NULL);
6379
6380   return offset;
6381 }
6382 static int dissect_PLMNClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6383   return dissect_gsm_map_LCSClientInternalID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PLMNClientList_item);
6384 }
6385 static int dissect_lcsClientInternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6386   return dissect_gsm_map_LCSClientInternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientInternalID);
6387 }
6388
6389 static const ber_sequence_t PLMNClientList_sequence_of[1] = {
6390   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_PLMNClientList_item },
6391 };
6392
6393 static int
6394 dissect_gsm_map_PLMNClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6395   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6396                                    PLMNClientList_sequence_of, hf_index, ett_gsm_map_PLMNClientList);
6397
6398   return offset;
6399 }
6400 static int dissect_plmnClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6401   return dissect_gsm_map_PLMNClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList);
6402 }
6403
6404 static const ber_sequence_t Ext_ExternalClientList_sequence_of[1] = {
6405   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_ExternalClientList_item },
6406 };
6407
6408 static int
6409 dissect_gsm_map_Ext_ExternalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6410   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6411                                    Ext_ExternalClientList_sequence_of, hf_index, ett_gsm_map_Ext_ExternalClientList);
6412
6413   return offset;
6414 }
6415 static int dissect_ext_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6416   return dissect_gsm_map_Ext_ExternalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_externalClientList);
6417 }
6418
6419
6420
6421 static int
6422 dissect_gsm_map_LCSServiceTypeID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6423   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6424                                   NULL);
6425
6426   return offset;
6427 }
6428 static int dissect_serviceTypeIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6429   return dissect_gsm_map_LCSServiceTypeID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceTypeIdentity);
6430 }
6431 static int dissect_lcsServiceTypeID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6432   return dissect_gsm_map_LCSServiceTypeID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsServiceTypeID);
6433 }
6434
6435 static const ber_sequence_t ServiceType_sequence[] = {
6436   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceTypeIdentity },
6437   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
6438   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
6439   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6440   { 0, 0, 0, NULL }
6441 };
6442
6443 static int
6444 dissect_gsm_map_ServiceType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6445   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6446                                 ServiceType_sequence, hf_index, ett_gsm_map_ServiceType);
6447
6448   return offset;
6449 }
6450 static int dissect_ServiceTypeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6451   return dissect_gsm_map_ServiceType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ServiceTypeList_item);
6452 }
6453
6454 static const ber_sequence_t ServiceTypeList_sequence_of[1] = {
6455   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ServiceTypeList_item },
6456 };
6457
6458 static int
6459 dissect_gsm_map_ServiceTypeList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6460   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6461                                    ServiceTypeList_sequence_of, hf_index, ett_gsm_map_ServiceTypeList);
6462
6463   return offset;
6464 }
6465 static int dissect_serviceTypeList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6466   return dissect_gsm_map_ServiceTypeList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceTypeList);
6467 }
6468
6469 static const ber_sequence_t LCS_PrivacyClass_sequence[] = {
6470   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
6471   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_ss_Status },
6472   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
6473   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalClientList_impl },
6474   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_plmnClientList_impl },
6475   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6476   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_externalClientList_impl },
6477   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceTypeList_impl },
6478   { 0, 0, 0, NULL }
6479 };
6480
6481 static int
6482 dissect_gsm_map_LCS_PrivacyClass(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6483   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6484                                 LCS_PrivacyClass_sequence, hf_index, ett_gsm_map_LCS_PrivacyClass);
6485
6486   return offset;
6487 }
6488 static int dissect_LCS_PrivacyExceptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6489   return dissect_gsm_map_LCS_PrivacyClass(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LCS_PrivacyExceptionList_item);
6490 }
6491
6492 static const ber_sequence_t LCS_PrivacyExceptionList_sequence_of[1] = {
6493   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_LCS_PrivacyExceptionList_item },
6494 };
6495
6496 static int
6497 dissect_gsm_map_LCS_PrivacyExceptionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6498   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6499                                    LCS_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_LCS_PrivacyExceptionList);
6500
6501   return offset;
6502 }
6503 static int dissect_lcs_PrivacyExceptionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6504   return dissect_gsm_map_LCS_PrivacyExceptionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList);
6505 }
6506 static int dissect_add_lcs_PrivacyExceptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6507   return dissect_gsm_map_LCS_PrivacyExceptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_add_lcs_PrivacyExceptionList);
6508 }
6509
6510 static const ber_sequence_t MOLR_Class_sequence[] = {
6511   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
6512   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_ss_Status },
6513   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6514   { 0, 0, 0, NULL }
6515 };
6516
6517 static int
6518 dissect_gsm_map_MOLR_Class(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6519   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6520                                 MOLR_Class_sequence, hf_index, ett_gsm_map_MOLR_Class);
6521
6522   return offset;
6523 }
6524 static int dissect_MOLR_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6525   return dissect_gsm_map_MOLR_Class(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MOLR_List_item);
6526 }
6527
6528 static const ber_sequence_t MOLR_List_sequence_of[1] = {
6529   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MOLR_List_item },
6530 };
6531
6532 static int
6533 dissect_gsm_map_MOLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6534   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6535                                    MOLR_List_sequence_of, hf_index, ett_gsm_map_MOLR_List);
6536
6537   return offset;
6538 }
6539 static int dissect_molr_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6540   return dissect_gsm_map_MOLR_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List);
6541 }
6542
6543 static const ber_sequence_t LCSInformation_sequence[] = {
6544   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_List_impl },
6545   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyExceptionList_impl },
6546   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_molr_List_impl },
6547   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_add_lcs_PrivacyExceptionList },
6548   { 0, 0, 0, NULL }
6549 };
6550
6551 static int
6552 dissect_gsm_map_LCSInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6553   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6554                                 LCSInformation_sequence, hf_index, ett_gsm_map_LCSInformation);
6555
6556   return offset;
6557 }
6558 static int dissect_lcsInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6559   return dissect_gsm_map_LCSInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsInformation);
6560 }
6561
6562
6563
6564 static int
6565 dissect_gsm_map_IST_AlertTimerValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6566   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6567                                   NULL);
6568
6569   return offset;
6570 }
6571 static int dissect_istAlertTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6572   return dissect_gsm_map_IST_AlertTimerValue(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istAlertTimer);
6573 }
6574
6575
6576
6577 static int
6578 dissect_gsm_map_MaxMC_Bearers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6579   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6580                                   NULL);
6581
6582   return offset;
6583 }
6584 static int dissect_nbrSB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6585   return dissect_gsm_map_MaxMC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrSB);
6586 }
6587
6588
6589
6590 static int
6591 dissect_gsm_map_MC_Bearers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6592   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6593                                   NULL);
6594
6595   return offset;
6596 }
6597 static int dissect_nbrUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6598   return dissect_gsm_map_MC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrUser);
6599 }
6600 static int dissect_nbrSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6601   return dissect_gsm_map_MC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrSN);
6602 }
6603
6604 static const ber_sequence_t MC_SS_Info_sequence[] = {
6605   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
6606   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
6607   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nbrSB_impl },
6608   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
6609   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6610   { 0, 0, 0, NULL }
6611 };
6612
6613 static int
6614 dissect_gsm_map_MC_SS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6615   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6616                                 MC_SS_Info_sequence, hf_index, ett_gsm_map_MC_SS_Info);
6617
6618   return offset;
6619 }
6620 static int dissect_mc_SS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6621   return dissect_gsm_map_MC_SS_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mc_SS_Info);
6622 }
6623
6624
6625
6626 static int
6627 dissect_gsm_map_CS_AllocationRetentionPriority(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6628   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6629                                        NULL);
6630
6631   return offset;
6632 }
6633 static int dissect_cs_AllocationRetentionPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6634   return dissect_gsm_map_CS_AllocationRetentionPriority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_AllocationRetentionPriority);
6635 }
6636
6637
6638 static const value_string gsm_map_GPRS_TriggerDetectionPoint_vals[] = {
6639   {   1, "attach" },
6640   {   2, "attachChangeOfPosition" },
6641   {  11, "pdp-ContextEstablishment" },
6642   {  12, "pdp-ContextEstablishmentAcknowledgement" },
6643   {  14, "pdp-ContextChangeOfPosition" },
6644   { 0, NULL }
6645 };
6646
6647
6648 static int
6649 dissect_gsm_map_GPRS_TriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6650   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6651                                   NULL);
6652
6653   return offset;
6654 }
6655 static int dissect_gprs_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6656   return dissect_gsm_map_GPRS_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_TriggerDetectionPoint);
6657 }
6658
6659
6660 static const value_string gsm_map_DefaultGPRS_Handling_vals[] = {
6661   {   0, "continueTransaction" },
6662   {   1, "releaseTransaction" },
6663   { 0, NULL }
6664 };
6665
6666
6667 static int
6668 dissect_gsm_map_DefaultGPRS_Handling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6669   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6670                                   NULL);
6671
6672   return offset;
6673 }
6674 static int dissect_defaultSessionHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6675   return dissect_gsm_map_DefaultGPRS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSessionHandling);
6676 }
6677
6678 static const ber_sequence_t GPRS_CamelTDPData_sequence[] = {
6679   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprs_TriggerDetectionPoint_impl },
6680   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
6681   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
6682   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSessionHandling_impl },
6683   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6684   { 0, 0, 0, NULL }
6685 };
6686
6687 static int
6688 dissect_gsm_map_GPRS_CamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6689   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6690                                 GPRS_CamelTDPData_sequence, hf_index, ett_gsm_map_GPRS_CamelTDPData);
6691
6692   return offset;
6693 }
6694 static int dissect_GPRS_CamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6695   return dissect_gsm_map_GPRS_CamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GPRS_CamelTDPDataList_item);
6696 }
6697
6698 static const ber_sequence_t GPRS_CamelTDPDataList_sequence_of[1] = {
6699   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_GPRS_CamelTDPDataList_item },
6700 };
6701
6702 static int
6703 dissect_gsm_map_GPRS_CamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6704   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6705                                    GPRS_CamelTDPDataList_sequence_of, hf_index, ett_gsm_map_GPRS_CamelTDPDataList);
6706
6707   return offset;
6708 }
6709 static int dissect_gprs_CamelTDPDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6710   return dissect_gsm_map_GPRS_CamelTDPDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CamelTDPDataList);
6711 }
6712
6713 static const ber_sequence_t GPRS_CSI_sequence[] = {
6714   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CamelTDPDataList_impl },
6715   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6716   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6717   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6718   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6719   { 0, 0, 0, NULL }
6720 };
6721
6722 static int
6723 dissect_gsm_map_GPRS_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6724   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6725                                 GPRS_CSI_sequence, hf_index, ett_gsm_map_GPRS_CSI);
6726
6727   return offset;
6728 }
6729 static int dissect_gprs_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6730   return dissect_gsm_map_GPRS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CSI);
6731 }
6732
6733 static const ber_sequence_t MG_CSI_sequence[] = {
6734   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
6735   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6736   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
6737   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6738   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6739   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6740   { 0, 0, 0, NULL }
6741 };
6742
6743 static int
6744 dissect_gsm_map_MG_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6745   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6746                                 MG_CSI_sequence, hf_index, ett_gsm_map_MG_CSI);
6747
6748   return offset;
6749 }
6750 static int dissect_mg_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6751   return dissect_gsm_map_MG_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mg_csi);
6752 }
6753
6754 static const ber_sequence_t SGSN_CAMEL_SubscriptionInfo_sequence[] = {
6755   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
6756   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
6757   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6758   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
6759   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
6760   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
6761   { 0, 0, 0, NULL }
6762 };
6763
6764 static int
6765 dissect_gsm_map_SGSN_CAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6766   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6767                                 SGSN_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_SGSN_CAMEL_SubscriptionInfo);
6768
6769   return offset;
6770 }
6771 static int dissect_sgsn_CAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6772   return dissect_gsm_map_SGSN_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_CAMEL_SubscriptionInfo);
6773 }
6774
6775 static const asn_namedbit AccessRestrictionData_bits[] = {
6776   {  0, &hf_gsm_map_AccessRestrictionData_utranNotAllowed, -1, -1, "utranNotAllowed", NULL },
6777   {  1, &hf_gsm_map_AccessRestrictionData_geranNotAllowed, -1, -1, "geranNotAllowed", NULL },
6778   { 0, NULL, 0, 0, NULL, NULL }
6779 };
6780
6781 static int
6782 dissect_gsm_map_AccessRestrictionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6783   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
6784                                  AccessRestrictionData_bits, hf_index, ett_gsm_map_AccessRestrictionData,
6785                                  NULL);
6786
6787   return offset;
6788 }
6789 static int dissect_accessRestrictionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6790   return dissect_gsm_map_AccessRestrictionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_accessRestrictionData);
6791 }
6792
6793 static const ber_sequence_t InsertSubscriberDataArg_sequence[] = {
6794   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6795   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6796   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_category_impl },
6797   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStatus_impl },
6798   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerserviceList_impl },
6799   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
6800   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_provisionedSS_impl },
6801   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Data_impl },
6802   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
6803   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionData_impl },
6804   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsSubscriptionData_impl },
6805   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsSubscriptionData_impl },
6806   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlrCamelSubscriptionInfo_impl },
6807   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6808   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
6809   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSubscriptionData_impl },
6810   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl },
6811   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkAccessMode_impl },
6812   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaInformation_impl },
6813   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmu_Indicator_impl },
6814   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsInformation_impl },
6815   { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
6816   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_superChargerSupportedInHLR_impl },
6817   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mc_SS_Info_impl },
6818   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_AllocationRetentionPriority_impl },
6819   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_CAMEL_SubscriptionInfo_impl },
6820   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
6821   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_accessRestrictionData_impl },
6822   { 0, 0, 0, NULL }
6823 };
6824
6825 static int
6826 dissect_gsm_map_InsertSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6827   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6828                                 InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_InsertSubscriberDataArg);
6829
6830   return offset;
6831 }
6832
6833 static const ber_sequence_t SS_List_sequence_of[1] = {
6834   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SS_List_item },
6835 };
6836
6837 static int
6838 dissect_gsm_map_SS_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6839   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6840                                    SS_List_sequence_of, hf_index, ett_gsm_map_SS_List);
6841
6842   return offset;
6843 }
6844 static int dissect_ss_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6845   return dissect_gsm_map_SS_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List);
6846 }
6847 static int dissect_ss_List2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6848   return dissect_gsm_map_SS_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List2);
6849 }
6850
6851
6852 static const value_string gsm_map_RegionalSubscriptionResponse_vals[] = {
6853   {   0, "networkNodeAreaRestricted" },
6854   {   1, "tooManyZoneCodes" },
6855   {   2, "zoneCodesConflict" },
6856   {   3, "regionalSubscNotSupported" },
6857   { 0, NULL }
6858 };
6859
6860
6861 static int
6862 dissect_gsm_map_RegionalSubscriptionResponse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6863   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6864                                   NULL);
6865
6866   return offset;
6867 }
6868 static int dissect_regionalSubscriptionResponse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6869   return dissect_gsm_map_RegionalSubscriptionResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionResponse);
6870 }
6871
6872 static const ber_sequence_t InsertSubscriberDataRes_sequence[] = {
6873   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
6874   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerServiceList_impl },
6875   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
6876   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_GeneralData_impl },
6877   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
6878   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
6879   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6880   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
6881   { 0, 0, 0, NULL }
6882 };
6883
6884 static int
6885 dissect_gsm_map_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6886   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6887                                 InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_InsertSubscriberDataRes);
6888
6889   return offset;
6890 }
6891
6892 static const ber_sequence_t BasicServiceList_sequence_of[1] = {
6893   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceList_item },
6894 };
6895
6896 static int
6897 dissect_gsm_map_BasicServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6898   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6899                                    BasicServiceList_sequence_of, hf_index, ett_gsm_map_BasicServiceList);
6900
6901   return offset;
6902 }
6903 static int dissect_basicServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6904   return dissect_gsm_map_BasicServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceList);
6905 }
6906
6907 static const ber_sequence_t ContextIdList_sequence_of[1] = {
6908   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_ContextIdList_item },
6909 };
6910
6911 static int
6912 dissect_gsm_map_ContextIdList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6913   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6914                                    ContextIdList_sequence_of, hf_index, ett_gsm_map_ContextIdList);
6915
6916   return offset;
6917 }
6918 static int dissect_contextIdList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6919   return dissect_gsm_map_ContextIdList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList);
6920 }
6921
6922
6923 static const value_string gsm_map_GPRSSubscriptionDataWithdraw_vals[] = {
6924   {   0, "allGPRSData" },
6925   {   1, "contextIdList" },
6926   { 0, NULL }
6927 };
6928
6929 static const ber_choice_t GPRSSubscriptionDataWithdraw_choice[] = {
6930   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allGPRSData },
6931   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextIdList },
6932   { 0, 0, 0, 0, NULL }
6933 };
6934
6935 static int
6936 dissect_gsm_map_GPRSSubscriptionDataWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6937   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
6938                               GPRSSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_GPRSSubscriptionDataWithdraw, NULL);
6939
6940   return offset;
6941 }
6942 static int dissect_gprsSubscriptionDataWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6943   return dissect_gsm_map_GPRSSubscriptionDataWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionDataWithdraw);
6944 }
6945
6946 static const ber_sequence_t LSAIdentityList_sequence_of[1] = {
6947   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_LSAIdentityList_item },
6948 };
6949
6950 static int
6951 dissect_gsm_map_LSAIdentityList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6952   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6953                                    LSAIdentityList_sequence_of, hf_index, ett_gsm_map_LSAIdentityList);
6954
6955   return offset;
6956 }
6957 static int dissect_lsaIdentityList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6958   return dissect_gsm_map_LSAIdentityList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList);
6959 }
6960
6961
6962 static const value_string gsm_map_LSAInformationWithdraw_vals[] = {
6963   {   0, "allLSAData" },
6964   {   1, "lsaIdentityList" },
6965   { 0, NULL }
6966 };
6967
6968 static const ber_choice_t LSAInformationWithdraw_choice[] = {
6969   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allLSAData },
6970   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList },
6971   { 0, 0, 0, 0, NULL }
6972 };
6973
6974 static int
6975 dissect_gsm_map_LSAInformationWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6976   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
6977                               LSAInformationWithdraw_choice, hf_index, ett_gsm_map_LSAInformationWithdraw, NULL);
6978
6979   return offset;
6980 }
6981 static int dissect_lsaInformationWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6982   return dissect_gsm_map_LSAInformationWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformationWithdraw);
6983 }
6984
6985 static const asn_namedbit SpecificCSI_Withdraw_bits[] = {
6986   {  0, &hf_gsm_map_SpecificCSI_Withdraw_o_csi, -1, -1, "o-csi", NULL },
6987   {  1, &hf_gsm_map_SpecificCSI_Withdraw_ss_csi, -1, -1, "ss-csi", NULL },
6988   {  2, &hf_gsm_map_SpecificCSI_Withdraw_tif_csi, -1, -1, "tif-csi", NULL },
6989   {  3, &hf_gsm_map_SpecificCSI_Withdraw_d_csi, -1, -1, "d-csi", NULL },
6990   {  4, &hf_gsm_map_SpecificCSI_Withdraw_vt_csi, -1, -1, "vt-csi", NULL },
6991   {  5, &hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi, -1, -1, "mo-sms-csi", NULL },
6992   {  6, &hf_gsm_map_SpecificCSI_Withdraw_m_csi, -1, -1, "m-csi", NULL },
6993   {  7, &hf_gsm_map_SpecificCSI_Withdraw_gprs_csi, -1, -1, "gprs-csi", NULL },
6994   {  8, &hf_gsm_map_SpecificCSI_Withdraw_t_csi, -1, -1, "t-csi", NULL },
6995   {  9, &hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
6996   { 10, &hf_gsm_map_SpecificCSI_Withdraw_mg_csi, -1, -1, "mg-csi", NULL },
6997   { 11, &hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI, -1, -1, "o-IM-CSI", NULL },
6998   { 12, &hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI, -1, -1, "d-IM-CSI", NULL },
6999   { 13, &hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI, -1, -1, "vt-IM-CSI", NULL },
7000   { 0, NULL, 0, 0, NULL, NULL }
7001 };
7002
7003 static int
7004 dissect_gsm_map_SpecificCSI_Withdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7005   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7006                                  SpecificCSI_Withdraw_bits, hf_index, ett_gsm_map_SpecificCSI_Withdraw,
7007                                  NULL);
7008
7009   return offset;
7010 }
7011 static int dissect_specificCSI_Withdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7012   return dissect_gsm_map_SpecificCSI_Withdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSI_Withdraw);
7013 }
7014 static int dissect_specificCSIDeletedList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7015   return dissect_gsm_map_SpecificCSI_Withdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSIDeletedList);
7016 }
7017
7018 static const ber_sequence_t DeleteSubscriberDataArg_sequence[] = {
7019   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7020   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceList_impl },
7021   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
7022   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
7023   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionIdentifier_impl },
7024   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsGroupIndication_impl },
7025   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsGroupIndication_impl },
7026   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelSubscriptionInfoWithdraw_impl },
7027   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7028   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprsSubscriptionDataWithdraw_impl },
7029   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl },
7030   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_lsaInformationWithdraw_impl },
7031   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_ListWithdraw_impl },
7032   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_istInformationWithdraw },
7033   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSI_Withdraw_impl },
7034   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristicsWithdraw_impl },
7035   { 0, 0, 0, NULL }
7036 };
7037
7038 static int
7039 dissect_gsm_map_DeleteSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7040   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7041                                 DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataArg);
7042
7043   return offset;
7044 }
7045
7046 static const ber_sequence_t DeleteSubscriberDataRes_sequence[] = {
7047   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
7048   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7049   { 0, 0, 0, NULL }
7050 };
7051
7052 static int
7053 dissect_gsm_map_DeleteSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7054   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7055                                 DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataRes);
7056
7057   return offset;
7058 }
7059
7060
7061
7062 static int
7063 dissect_gsm_map_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7064
7065  tvbuff_t       *parameter_tvb;
7066  guint8         octet;
7067
7068  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7069                                     &parameter_tvb);
7070  if (!parameter_tvb)
7071         return offset;
7072
7073  octet = tvb_get_guint8(parameter_tvb,0);
7074
7075  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
7076  if ((octet & 0x01)== 1)        
7077         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
7078                                                                                 
7079  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
7080  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
7081  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
7082
7083
7084
7085   return offset;
7086 }
7087 static int dissect_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7088   return dissect_gsm_map_SS_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
7089 }
7090 static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7091   return dissect_gsm_map_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
7092 }
7093
7094
7095
7096 static int
7097 dissect_gsm_map_BearerServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7098   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7099                                        NULL);
7100
7101   return offset;
7102 }
7103 static int dissect_bearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7104   return dissect_gsm_map_BearerServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerService);
7105 }
7106
7107
7108
7109 static int
7110 dissect_gsm_map_TeleserviceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7111   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7112                                        NULL);
7113
7114   return offset;
7115 }
7116 static int dissect_teleservice_code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7117   return dissect_gsm_map_TeleserviceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice_code);
7118 }
7119
7120
7121 static const value_string gsm_map_BasicServiceCode_vals[] = {
7122   {   2, "bearerService" },
7123   {   3, "teleservice" },
7124   { 0, NULL }
7125 };
7126
7127 static const ber_choice_t BasicServiceCode_choice[] = {
7128   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerService_impl },
7129   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_code_impl },
7130   { 0, 0, 0, 0, NULL }
7131 };
7132
7133 static int
7134 dissect_gsm_map_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7135   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
7136                               BasicServiceCode_choice, hf_index, ett_gsm_map_BasicServiceCode, NULL);
7137
7138   return offset;
7139 }
7140 static int dissect_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7141   return dissect_gsm_map_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicService);
7142 }
7143 static int dissect_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7144   return dissect_gsm_map_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup);
7145 }
7146
7147 static const ber_sequence_t CallBarringFeature_sequence[] = {
7148   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
7149   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
7150   { 0, 0, 0, NULL }
7151 };
7152
7153 static int
7154 dissect_gsm_map_CallBarringFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7155   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7156                                 CallBarringFeature_sequence, hf_index, ett_gsm_map_CallBarringFeature);
7157
7158   return offset;
7159 }
7160 static int dissect_CallBarringFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7161   return dissect_gsm_map_CallBarringFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CallBarringFeatureList_item);
7162 }
7163
7164 static const ber_sequence_t CallBarringFeatureList_sequence_of[1] = {
7165   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CallBarringFeatureList_item },
7166 };
7167
7168 static int
7169 dissect_gsm_map_CallBarringFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7170   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7171                                    CallBarringFeatureList_sequence_of, hf_index, ett_gsm_map_CallBarringFeatureList);
7172
7173   return offset;
7174 }
7175 static int dissect_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7176   return dissect_gsm_map_CallBarringFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringFeatureList);
7177 }
7178
7179
7180
7181 static int
7182 dissect_gsm_map_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7183   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7184                                        NULL);
7185
7186   return offset;
7187 }
7188 static int dissect_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7189   return dissect_gsm_map_ForwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingOptions);
7190 }
7191
7192
7193
7194 static int
7195 dissect_gsm_map_NoReplyConditionTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7196   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7197                                   NULL);
7198
7199   return offset;
7200 }
7201 static int dissect_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7202   return dissect_gsm_map_NoReplyConditionTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noReplyConditionTime);
7203 }
7204
7205 static const ber_sequence_t ForwardingFeature_sequence[] = {
7206   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
7207   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
7208   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
7209   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
7210   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
7211   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
7212   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
7213   { 0, 0, 0, NULL }
7214 };
7215
7216 static int
7217 dissect_gsm_map_ForwardingFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7218   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7219                                 ForwardingFeature_sequence, hf_index, ett_gsm_map_ForwardingFeature);
7220
7221   return offset;
7222 }
7223 static int dissect_ForwardingFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7224   return dissect_gsm_map_ForwardingFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ForwardingFeatureList_item);
7225 }
7226
7227 static const ber_sequence_t ForwardingFeatureList_sequence_of[1] = {
7228   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ForwardingFeatureList_item },
7229 };
7230
7231 static int
7232 dissect_gsm_map_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7233   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7234                                    ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_ForwardingFeatureList);
7235
7236   return offset;
7237 }
7238 static int dissect_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7239   return dissect_gsm_map_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
7240 }
7241 static int dissect_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7242   return dissect_gsm_map_ForwardingFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
7243 }
7244
7245
7246
7247 static int
7248 dissect_gsm_map_LongForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7249   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7250                                        NULL);
7251
7252   return offset;
7253 }
7254
7255 static const ber_sequence_t ForwardingInfo_sequence[] = {
7256   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7257   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList },
7258   { 0, 0, 0, NULL }
7259 };
7260
7261 static int
7262 dissect_gsm_map_ForwardingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7263   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7264                                 ForwardingInfo_sequence, hf_index, ett_gsm_map_ForwardingInfo);
7265
7266   return offset;
7267 }
7268 static int dissect_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7269   return dissect_gsm_map_ForwardingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfo);
7270 }
7271
7272 static const ber_sequence_t CallBarringInfo_sequence[] = {
7273   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7274   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList },
7275   { 0, 0, 0, NULL }
7276 };
7277
7278 static int
7279 dissect_gsm_map_CallBarringInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7280   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7281                                 CallBarringInfo_sequence, hf_index, ett_gsm_map_CallBarringInfo);
7282
7283   return offset;
7284 }
7285 static int dissect_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7286   return dissect_gsm_map_CallBarringInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfo);
7287 }
7288
7289
7290 static int
7291 dissect_gsm_map_HLR_Id(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7292   offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
7293
7294   return offset;
7295 }
7296 static int dissect_HLR_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7297   return dissect_gsm_map_HLR_Id(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_HLR_List_item);
7298 }
7299
7300 static const ber_sequence_t HLR_List_sequence_of[1] = {
7301   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_HLR_List_item },
7302 };
7303
7304 static int
7305 dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7306   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7307                                    HLR_List_sequence_of, hf_index, ett_gsm_map_HLR_List);
7308
7309   return offset;
7310 }
7311 static int dissect_hlr_List(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7312   return dissect_gsm_map_HLR_List(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List);
7313 }
7314
7315 static const ber_sequence_t ResetArg_sequence[] = {
7316   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
7317   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_hlr_List },
7318   { 0, 0, 0, NULL }
7319 };
7320
7321 static int
7322 dissect_gsm_map_ResetArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7323   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7324                                 ResetArg_sequence, hf_index, ett_gsm_map_ResetArg);
7325
7326   return offset;
7327 }
7328
7329
7330
7331 static int
7332 dissect_gsm_map_Hlr_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7333   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7334                                        NULL);
7335
7336   return offset;
7337 }
7338
7339 static const ber_sequence_t RestoreDataArg_sequence[] = {
7340   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
7341   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
7342   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7343   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
7344   { 0, 0, 0, NULL }
7345 };
7346
7347 static int
7348 dissect_gsm_map_RestoreDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7349   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7350                                 RestoreDataArg_sequence, hf_index, ett_gsm_map_RestoreDataArg);
7351
7352   return offset;
7353 }
7354
7355 static const ber_sequence_t RestoreDataRes_sequence[] = {
7356   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
7357   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msNotReachable },
7358   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7359   { 0, 0, 0, NULL }
7360 };
7361
7362 static int
7363 dissect_gsm_map_RestoreDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7364   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7365                                 RestoreDataRes_sequence, hf_index, ett_gsm_map_RestoreDataRes);
7366
7367   return offset;
7368 }
7369
7370
7371
7372 static int
7373 dissect_gsm_map_OCTET_STRING_SIZE_1_2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7374   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7375                                        NULL);
7376
7377   return offset;
7378 }
7379 static int dissect_traceReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7380   return dissect_gsm_map_OCTET_STRING_SIZE_1_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceReference);
7381 }
7382
7383
7384
7385 static int
7386 dissect_gsm_map_INTEGER_0_255(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7387   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7388                                   NULL);
7389
7390   return offset;
7391 }
7392 static int dissect_traceType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7393   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceType);
7394 }
7395
7396
7397
7398 static int
7399 dissect_gsm_map_OCTET_STRING_SIZE_1_20(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7400   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7401                                        NULL);
7402
7403   return offset;
7404 }
7405 static int dissect_omc_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7406   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_omc_Id);
7407 }
7408 static int dissect_ss_EventSpecification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7409   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification_item);
7410 }
7411
7412 static const ber_sequence_t ActivateTraceModeArg_sequence[] = {
7413   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7414   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
7415   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_traceType_impl },
7416   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_omc_Id_impl },
7417   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7418   { 0, 0, 0, NULL }
7419 };
7420
7421 static int
7422 dissect_gsm_map_ActivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7423   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7424                                 ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_ActivateTraceModeArg);
7425
7426   return offset;
7427 }
7428
7429 static const ber_sequence_t ActivateTraceModeRes_sequence[] = {
7430   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7431   { 0, 0, 0, NULL }
7432 };
7433
7434 static int
7435 dissect_gsm_map_ActivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7436   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7437                                 ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_ActivateTraceModeRes);
7438
7439   return offset;
7440 }
7441
7442 static const ber_sequence_t DeactivateTraceModeArg_sequence[] = {
7443   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7444   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
7445   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7446   { 0, 0, 0, NULL }
7447 };
7448
7449 static int
7450 dissect_gsm_map_DeactivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7451   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7452                                 DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_DeactivateTraceModeArg);
7453
7454   return offset;
7455 }
7456
7457 static const ber_sequence_t DeactivateTraceModeRes_sequence[] = {
7458   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7459   { 0, 0, 0, NULL }
7460 };
7461
7462 static int
7463 dissect_gsm_map_DeactivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7464   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7465                                 DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_DeactivateTraceModeRes);
7466
7467   return offset;
7468 }
7469
7470 static const ber_sequence_t CUG_CheckInfo_sequence[] = {
7471   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
7472   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_OutgoingAccess },
7473   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7474   { 0, 0, 0, NULL }
7475 };
7476
7477 static int
7478 dissect_gsm_map_CUG_CheckInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7479   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7480                                 CUG_CheckInfo_sequence, hf_index, ett_gsm_map_CUG_CheckInfo);
7481
7482   return offset;
7483 }
7484 static int dissect_cug_CheckInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7485   return dissect_gsm_map_CUG_CheckInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_CheckInfo);
7486 }
7487
7488
7489
7490 static int
7491 dissect_gsm_map_NumberOfForwarding(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7492   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7493                                   NULL);
7494
7495   return offset;
7496 }
7497 static int dissect_numberOfForwarding_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7498   return dissect_gsm_map_NumberOfForwarding(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfForwarding);
7499 }
7500
7501
7502 static const value_string gsm_map_InterrogationType_vals[] = {
7503   {   0, "basicCall" },
7504   {   1, "forwarding" },
7505   { 0, NULL }
7506 };
7507
7508
7509 static int
7510 dissect_gsm_map_InterrogationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7511   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7512                                   NULL);
7513
7514   return offset;
7515 }
7516 static int dissect_interrogationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7517   return dissect_gsm_map_InterrogationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_interrogationType);
7518 }
7519
7520
7521
7522 static int
7523 dissect_gsm_map_OR_Phase(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7524   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7525                                   NULL);
7526
7527   return offset;
7528 }
7529 static int dissect_or_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7530   return dissect_gsm_map_OR_Phase(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Capability);
7531 }
7532
7533
7534
7535 static int
7536 dissect_gsm_map_CallReferenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7537   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7538                                        NULL);
7539
7540   return offset;
7541 }
7542 static int dissect_callReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7543   return dissect_gsm_map_CallReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReferenceNumber);
7544 }
7545
7546
7547 static const value_string gsm_map_ForwardingReason_vals[] = {
7548   {   0, "notReachable" },
7549   {   1, "busy" },
7550   {   2, "noReply" },
7551   { 0, NULL }
7552 };
7553
7554
7555 static int
7556 dissect_gsm_map_ForwardingReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7557   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7558                                   NULL);
7559
7560   return offset;
7561 }
7562 static int dissect_forwardingReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7563   return dissect_gsm_map_ForwardingReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingReason);
7564 }
7565
7566 static const ber_sequence_t ExternalSignalInfo_sequence[] = {
7567   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
7568   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
7569   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7570   { 0, 0, 0, NULL }
7571 };
7572
7573 static int
7574 dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7575   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7576                                 ExternalSignalInfo_sequence, hf_index, ett_gsm_map_ExternalSignalInfo);
7577
7578   return offset;
7579 }
7580 static int dissect_networkSignalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7581   return dissect_gsm_map_ExternalSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
7582 }
7583 static int dissect_networkSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7584   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
7585 }
7586 static int dissect_networkSignalInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7587   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo2);
7588 }
7589 static int dissect_gsm_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7590   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_BearerCapability);
7591 }
7592 static int dissect_isdn_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7593   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_isdn_BearerCapability);
7594 }
7595 static int dissect_chosenChannel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7596   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannel);
7597 }
7598 static int dissect_lowerLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7599   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lowerLayerCompatibility);
7600 }
7601 static int dissect_highLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7602   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_highLayerCompatibility);
7603 }
7604 static int dissect_channelType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7605   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_channelType);
7606 }
7607 static int dissect_callInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7608   return dissect_gsm_map_ExternalSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
7609 }
7610 static int dissect_callInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7611   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
7612 }
7613
7614 static const ber_sequence_t CamelInfo_sequence[] = {
7615   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_supportedCamelPhases },
7616   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_suppress_T_CSI },
7617   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7618   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
7619   { 0, 0, 0, NULL }
7620 };
7621
7622 static int
7623 dissect_gsm_map_CamelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7624   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7625                                 CamelInfo_sequence, hf_index, ett_gsm_map_CamelInfo);
7626
7627   return offset;
7628 }
7629 static int dissect_camelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7630   return dissect_gsm_map_CamelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelInfo);
7631 }
7632
7633
7634
7635 static int
7636 dissect_gsm_map_SuppressionOfAnnouncement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7637   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
7638
7639   return offset;
7640 }
7641 static int dissect_suppressionOfAnnouncement_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7642   return dissect_gsm_map_SuppressionOfAnnouncement(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppressionOfAnnouncement);
7643 }
7644
7645
7646
7647 static int
7648 dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7649   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7650                                        NULL);
7651
7652   return offset;
7653 }
7654 static int dissect_alertingPattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7655   return dissect_gsm_map_AlertingPattern(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
7656 }
7657 static int dissect_alertingPattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7658   return dissect_gsm_map_AlertingPattern(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
7659 }
7660
7661
7662
7663 static int
7664 dissect_gsm_map_SupportedCCBS_Phase(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7665   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7666                                   NULL);
7667
7668   return offset;
7669 }
7670 static int dissect_supportedCCBS_Phase_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7671   return dissect_gsm_map_SupportedCCBS_Phase(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCCBS_Phase);
7672 }
7673
7674
7675 static const value_string gsm_map_Ext_ProtocolId_vals[] = {
7676   {   1, "ets-300356" },
7677   { 0, NULL }
7678 };
7679
7680
7681 static int
7682 dissect_gsm_map_Ext_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7683   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7684                                   NULL);
7685
7686   return offset;
7687 }
7688 static int dissect_ext_ProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7689   return dissect_gsm_map_Ext_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ProtocolId);
7690 }
7691
7692 static const ber_sequence_t Ext_ExternalSignalInfo_sequence[] = {
7693   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_ext_ProtocolId },
7694   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
7695   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7696   { 0, 0, 0, NULL }
7697 };
7698
7699 static int
7700 dissect_gsm_map_Ext_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7701   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7702                                 Ext_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_Ext_ExternalSignalInfo);
7703
7704   return offset;
7705 }
7706 static int dissect_additionalSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7707   return dissect_gsm_map_Ext_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSignalInfo);
7708 }
7709
7710
7711
7712 static int
7713 dissect_gsm_map_CallDiversionTreatmentIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7714   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7715                                        NULL);
7716
7717   return offset;
7718 }
7719 static int dissect_callDiversionTreatmentIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7720   return dissect_gsm_map_CallDiversionTreatmentIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callDiversionTreatmentIndicator);
7721 }
7722
7723 static const ber_sequence_t SendRoutingInfoArg_sequence[] = {
7724   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
7725   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
7726   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberOfForwarding_impl },
7727   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_interrogationType_impl },
7728   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
7729   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Capability_impl },
7730   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gmsc_OrGsmSCF_Address_impl },
7731   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
7732   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingReason_impl },
7733   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicServiceGroup_impl },
7734   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
7735   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelInfo_impl },
7736   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
7737   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7738   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
7739   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
7740   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCCBS_Phase_impl },
7741   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
7742   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
7743   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pre_pagingSupported_impl },
7744   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callDiversionTreatmentIndicator_impl },
7745   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
7746   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_suppress_VT_CSI },
7747   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_suppressIncomingCallBarring },
7748   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_gsmSCF_InitiatedCall },
7749   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup2_impl },
7750   { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo2_impl },
7751   { 0, 0, 0, NULL }
7752 };
7753
7754 static int
7755 dissect_gsm_map_SendRoutingInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7756   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7757                                 SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoArg);
7758
7759   return offset;
7760 }
7761
7762 static const ber_sequence_t ForwardingData_sequence[] = {
7763   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
7764   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
7765   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
7766   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7767   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
7768   { 0, 0, 0, NULL }
7769 };
7770
7771 static int
7772 dissect_gsm_map_ForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7773   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7774                                 ForwardingData_sequence, hf_index, ett_gsm_map_ForwardingData);
7775
7776   return offset;
7777 }
7778 static int dissect_forwardingData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7779   return dissect_gsm_map_ForwardingData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
7780 }
7781 static int dissect_forwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7782   return dissect_gsm_map_ForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
7783 }
7784
7785
7786 static const value_string gsm_map_RoutingInfo_vals[] = {
7787   {   0, "roamingNumber" },
7788   {   1, "forwardingData" },
7789   { 0, NULL }
7790 };
7791
7792 static const ber_choice_t RoutingInfo_choice[] = {
7793   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
7794   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingData },
7795   { 0, 0, 0, 0, NULL }
7796 };
7797
7798 static int
7799 dissect_gsm_map_RoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7800   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
7801                               RoutingInfo_choice, hf_index, ett_gsm_map_RoutingInfo, NULL);
7802
7803   return offset;
7804 }
7805 static int dissect_routingInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7806   return dissect_gsm_map_RoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo2);
7807 }
7808 static int dissect_routingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7809   return dissect_gsm_map_RoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo);
7810 }
7811
7812 static const ber_sequence_t GmscCamelSubscriptionInfo_sequence[] = {
7813   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
7814   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
7815   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7816   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
7817   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
7818   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_csi_impl },
7819   { 0, 0, 0, NULL }
7820 };
7821
7822 static int
7823 dissect_gsm_map_GmscCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7824   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7825                                 GmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_GmscCamelSubscriptionInfo);
7826
7827   return offset;
7828 }
7829 static int dissect_gmscCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7830   return dissect_gsm_map_GmscCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmscCamelSubscriptionInfo);
7831 }
7832
7833 static const ber_sequence_t CamelRoutingInfo_sequence[] = {
7834   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_forwardingData },
7835   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gmscCamelSubscriptionInfo_impl },
7836   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7837   { 0, 0, 0, NULL }
7838 };
7839
7840 static int
7841 dissect_gsm_map_CamelRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7842   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7843                                 CamelRoutingInfo_sequence, hf_index, ett_gsm_map_CamelRoutingInfo);
7844
7845   return offset;
7846 }
7847 static int dissect_camelRoutingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7848   return dissect_gsm_map_CamelRoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelRoutingInfo);
7849 }
7850
7851
7852 static const value_string gsm_map_ExtendedRoutingInfo_vals[] = {
7853   {   0, "routingInfo" },
7854   {   1, "camelRoutingInfo" },
7855   { 0, NULL }
7856 };
7857
7858 static const ber_choice_t ExtendedRoutingInfo_choice[] = {
7859   {   0, BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
7860   {   1, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_camelRoutingInfo_impl },
7861   { 0, 0, 0, 0, NULL }
7862 };
7863
7864 static int
7865 dissect_gsm_map_ExtendedRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7866   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
7867                               ExtendedRoutingInfo_choice, hf_index, ett_gsm_map_ExtendedRoutingInfo, NULL);
7868
7869   return offset;
7870 }
7871 static int dissect_extendedRoutingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7872   return dissect_gsm_map_ExtendedRoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extendedRoutingInfo);
7873 }
7874
7875
7876
7877 static int
7878 dissect_gsm_map_AgeOfLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7879   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7880                                   NULL);
7881
7882   return offset;
7883 }
7884 static int dissect_ageOfLocationInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7885   return dissect_gsm_map_AgeOfLocationInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationInformation);
7886 }
7887 static int dissect_ageOfLocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7888   return dissect_gsm_map_AgeOfLocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationEstimate);
7889 }
7890
7891
7892
7893 static int
7894 dissect_gsm_map_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7895   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7896                                        NULL);
7897
7898   return offset;
7899 }
7900 static int dissect_geographicalInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7901   return dissect_gsm_map_GeographicalInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
7902 }
7903 static int dissect_geographicalInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7904   return dissect_gsm_map_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
7905 }
7906
7907
7908
7909 static int
7910 dissect_gsm_map_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7911   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7912                                        NULL);
7913
7914   return offset;
7915 }
7916 static int dissect_locationNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7917   return dissect_gsm_map_LocationNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationNumber);
7918 }
7919
7920
7921
7922 static int
7923 dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7924   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7925                                        NULL);
7926
7927   return offset;
7928 }
7929 static int dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7930   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength);
7931 }
7932
7933
7934 static const value_string gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals[] = {
7935   {   0, "cellGlobalIdOrServiceAreaIdFixedLength" },
7936   {   1, "laiFixedLength" },
7937   { 0, NULL }
7938 };
7939
7940 static const ber_choice_t CellGlobalIdOrServiceAreaIdOrLAI_choice[] = {
7941   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl },
7942   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_laiFixedLength_impl },
7943   { 0, 0, 0, 0, NULL }
7944 };
7945
7946 static int
7947 dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7948   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
7949                               CellGlobalIdOrServiceAreaIdOrLAI_choice, hf_index, ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI, NULL);
7950
7951   return offset;
7952 }
7953 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7954   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
7955 }
7956 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7957   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
7958 }
7959 static int dissect_cellIdOrSai_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7960   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdOrSai);
7961 }
7962
7963
7964
7965 static int
7966 dissect_gsm_map_GeodeticInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7967   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7968                                        NULL);
7969
7970   return offset;
7971 }
7972 static int dissect_geodeticInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7973   return dissect_gsm_map_GeodeticInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
7974 }
7975 static int dissect_geodeticInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7976   return dissect_gsm_map_GeodeticInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
7977 }
7978
7979 static const ber_sequence_t LocationInformation_sequence[] = {
7980   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ageOfLocationInformation },
7981   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geographicalInformation_impl },
7982   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_number_impl },
7983   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationNumber_impl },
7984   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl },
7985   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7986   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedLSA_Id_impl },
7987   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
7988   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geodeticInformation_impl },
7989   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocationRetrieved_impl },
7990   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
7991   { 0, 0, 0, NULL }
7992 };
7993
7994 static int
7995 dissect_gsm_map_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7996   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7997                                 LocationInformation_sequence, hf_index, ett_gsm_map_LocationInformation);
7998
7999   return offset;
8000 }
8001 static int dissect_locationInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8002   return dissect_gsm_map_LocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation);
8003 }
8004
8005
8006 static const value_string gsm_map_SubscriberState_vals[] = {
8007   {   0, "assumedIdle" },
8008   {   1, "camelBusy" },
8009   {   2, "notProvidedFromVLR" },
8010   { 0, NULL }
8011 };
8012
8013 static const ber_choice_t SubscriberState_choice[] = {
8014   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_assumedIdle_impl },
8015   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_camelBusy_impl },
8016   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_notProvidedFromVLR_impl },
8017   { 0, 0, 0, 0, NULL }
8018 };
8019
8020 static int
8021 dissect_gsm_map_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8022   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
8023                               SubscriberState_choice, hf_index, ett_gsm_map_SubscriberState, NULL);
8024
8025   return offset;
8026 }
8027 static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8028   return dissect_gsm_map_SubscriberState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState);
8029 }
8030
8031
8032
8033 static int
8034 dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8035   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8036                                        NULL);
8037
8038   return offset;
8039 }
8040 static int dissect_routeingAreaIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8041   return dissect_gsm_map_RAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routeingAreaIdentity);
8042 }
8043
8044 static const ber_sequence_t LocationInformationGPRS_sequence[] = {
8045   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_cellGlobalIdOrServiceAreaIdOrLAI },
8046   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_routeingAreaIdentity },
8047   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_geographicalInformation },
8048   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_sgsn_Number },
8049   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_selectedLSAIdentity },
8050   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
8051   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_sai_Present },
8052   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_geodeticInformation },
8053   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_currentLocationRetrieved },
8054   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_ageOfLocationInformation },
8055   { 0, 0, 0, NULL }
8056 };
8057
8058 static int
8059 dissect_gsm_map_LocationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8060   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8061                                 LocationInformationGPRS_sequence, hf_index, ett_gsm_map_LocationInformationGPRS);
8062
8063   return offset;
8064 }
8065 static int dissect_locationInformationGPRS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8066   return dissect_gsm_map_LocationInformationGPRS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
8067 }
8068 static int dissect_locationInformationGPRS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8069   return dissect_gsm_map_LocationInformationGPRS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
8070 }
8071
8072
8073
8074 static int
8075 dissect_gsm_map_NSAPI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8076   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8077                                   NULL);
8078
8079   return offset;
8080 }
8081 static int dissect_nsapi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8082   return dissect_gsm_map_NSAPI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nsapi);
8083 }
8084
8085
8086
8087 static int
8088 dissect_gsm_map_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8089   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8090                                        NULL);
8091
8092   return offset;
8093 }
8094 static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8095   return dissect_gsm_map_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_transactionId);
8096 }
8097
8098
8099
8100 static int
8101 dissect_gsm_map_TEID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8102   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8103                                        NULL);
8104
8105   return offset;
8106 }
8107 static int dissect_teid_ForGnAndGp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8108   return dissect_gsm_map_TEID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForGnAndGp);
8109 }
8110 static int dissect_teid_ForIu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8111   return dissect_gsm_map_TEID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForIu);
8112 }
8113
8114
8115
8116 static int
8117 dissect_gsm_map_GPRSChargingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8118   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8119                                        NULL);
8120
8121   return offset;
8122 }
8123 static int dissect_chargingId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8124   return dissect_gsm_map_GPRSChargingID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingId);
8125 }
8126
8127 static const ber_sequence_t PDP_ContextInfo_sequence[] = {
8128   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pdp_ContextIdentifier_impl },
8129   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ContextActive_impl },
8130   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
8131   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
8132   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_Subscribed_impl },
8133   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_InUse_impl },
8134   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nsapi_impl },
8135   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
8136   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForGnAndGp_impl },
8137   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForIu_impl },
8138   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
8139   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_qos_Subscribed_impl },
8140   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Requested_impl },
8141   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Negotiated_impl },
8142   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingId_impl },
8143   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
8144   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rnc_Address_impl },
8145   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8146   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Subscribed_impl },
8147   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Requested_impl },
8148   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Negotiated_impl },
8149   { 0, 0, 0, NULL }
8150 };
8151
8152 static int
8153 dissect_gsm_map_PDP_ContextInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8154   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8155                                 PDP_ContextInfo_sequence, hf_index, ett_gsm_map_PDP_ContextInfo);
8156
8157   return offset;
8158 }
8159 static int dissect_PDP_ContextInfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8160   return dissect_gsm_map_PDP_ContextInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PDP_ContextInfoList_item);
8161 }
8162
8163 static const ber_sequence_t PDP_ContextInfoList_sequence_of[1] = {
8164   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PDP_ContextInfoList_item },
8165 };
8166
8167 static int
8168 dissect_gsm_map_PDP_ContextInfoList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8169   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8170                                    PDP_ContextInfoList_sequence_of, hf_index, ett_gsm_map_PDP_ContextInfoList);
8171
8172   return offset;
8173 }
8174 static int dissect_ps_PDP_ActiveNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8175   return dissect_gsm_map_PDP_ContextInfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveNotReachableForPaging);
8176 }
8177 static int dissect_ps_PDP_ActiveReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8178   return dissect_gsm_map_PDP_ContextInfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveReachableForPaging);
8179 }
8180
8181
8182 static const value_string gsm_map_NotReachableReason_vals[] = {
8183   {   0, "msPurged" },
8184   {   1, "imsiDetached" },
8185   {   2, "restrictedArea" },
8186   {   3, "notRegistered" },
8187   { 0, NULL }
8188 };
8189
8190
8191 static int
8192 dissect_gsm_map_NotReachableReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8193   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8194                                   NULL);
8195
8196   return offset;
8197 }
8198 static int dissect_netDetNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8199   return dissect_gsm_map_NotReachableReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_netDetNotReachable);
8200 }
8201
8202
8203 static const value_string gsm_map_PS_SubscriberState_vals[] = {
8204   {   0, "notProvidedFromSGSN" },
8205   {   1, "ps-Detached" },
8206   {   2, "ps-AttachedNotReachableForPaging" },
8207   {   3, "ps-AttachedReachableForPaging" },
8208   {   4, "ps-PDP-ActiveNotReachableForPaging" },
8209   {   5, "ps-PDP-ActiveReachableForPaging" },
8210   {   6, "netDetNotReachable" },
8211   { 0, NULL }
8212 };
8213
8214 static const ber_choice_t PS_SubscriberState_choice[] = {
8215   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notProvidedFromSGSN_impl },
8216   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ps_Detached_impl },
8217   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ps_AttachedNotReachableForPaging_impl },
8218   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ps_AttachedReachableForPaging_impl },
8219   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveNotReachableForPaging_impl },
8220   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveReachableForPaging_impl },
8221   {   6, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_netDetNotReachable },
8222   { 0, 0, 0, 0, NULL }
8223 };
8224
8225 static int
8226 dissect_gsm_map_PS_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8227   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
8228                               PS_SubscriberState_choice, hf_index, ett_gsm_map_PS_SubscriberState, NULL);
8229
8230   return offset;
8231 }
8232 static int dissect_ps_SubscriberState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8233   return dissect_gsm_map_PS_SubscriberState(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_SubscriberState);
8234 }
8235
8236
8237
8238 static int
8239 dissect_gsm_map_MS_Classmark2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8240   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8241                                        NULL);
8242
8243   return offset;
8244 }
8245 static int dissect_ms_Classmark2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8246   return dissect_gsm_map_MS_Classmark2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_Classmark2);
8247 }
8248
8249
8250
8251 static int
8252 dissect_gsm_map_MSNetworkCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8253   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8254                                        NULL);
8255
8256   return offset;
8257 }
8258 static int dissect_mSNetworkCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8259   return dissect_gsm_map_MSNetworkCapability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSNetworkCapability);
8260 }
8261
8262
8263
8264 static int
8265 dissect_gsm_map_MSRadioAccessCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8266   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8267                                        NULL);
8268
8269   return offset;
8270 }
8271 static int dissect_mSRadioAccessCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8272   return dissect_gsm_map_MSRadioAccessCapability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSRadioAccessCapability);
8273 }
8274
8275 static const ber_sequence_t GPRSMSClass_sequence[] = {
8276   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mSNetworkCapability_impl },
8277   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mSRadioAccessCapability_impl },
8278   { 0, 0, 0, NULL }
8279 };
8280
8281 static int
8282 dissect_gsm_map_GPRSMSClass(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8283   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8284                                 GPRSMSClass_sequence, hf_index, ett_gsm_map_GPRSMSClass);
8285
8286   return offset;
8287 }
8288 static int dissect_gprs_MS_Class_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8289   return dissect_gsm_map_GPRSMSClass(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_MS_Class);
8290 }
8291
8292
8293 static int
8294 dissect_gsm_map_RouteingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8295   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
8296
8297   return offset;
8298 }
8299 static int dissect_routeingNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8300   return dissect_gsm_map_RouteingNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routeingNumber);
8301 }
8302
8303
8304 static const value_string gsm_map_NumberPortabilityStatus_vals[] = {
8305   {   0, "notKnownToBePorted" },
8306   {   1, "ownNumberPortedOut" },
8307   {   2, "foreignNumberPortedToForeignNetwork" },
8308   {   4, "ownNumberNotPortedOut" },
8309   {   5, "foreignNumberPortedIn" },
8310   { 0, NULL }
8311 };
8312
8313
8314 static int
8315 dissect_gsm_map_NumberPortabilityStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8316   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8317                                   NULL);
8318
8319   return offset;
8320 }
8321 static int dissect_numberPortabilityStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8322   return dissect_gsm_map_NumberPortabilityStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberPortabilityStatus);
8323 }
8324
8325 static const ber_sequence_t MNPInfoRes_sequence[] = {
8326   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_routeingNumber_impl },
8327   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8328   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8329   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
8330   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8331   { 0, 0, 0, NULL }
8332 };
8333
8334 static int
8335 dissect_gsm_map_MNPInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8336   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8337                                 MNPInfoRes_sequence, hf_index, ett_gsm_map_MNPInfoRes);
8338
8339   return offset;
8340 }
8341 static int dissect_mnpInfoRes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8342   return dissect_gsm_map_MNPInfoRes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpInfoRes);
8343 }
8344
8345 static const ber_sequence_t SubscriberInfo_sequence[] = {
8346   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
8347   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_subscriberState },
8348   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8349   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformationGPRS_impl },
8350   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ps_SubscriberState_impl },
8351   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
8352   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_Classmark2_impl },
8353   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_MS_Class_impl },
8354   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpInfoRes_impl },
8355   { 0, 0, 0, NULL }
8356 };
8357
8358 static int
8359 dissect_gsm_map_SubscriberInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8360   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8361                                 SubscriberInfo_sequence, hf_index, ett_gsm_map_SubscriberInfo);
8362
8363   return offset;
8364 }
8365 static int dissect_subscriberInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8366   return dissect_gsm_map_SubscriberInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
8367 }
8368 static int dissect_subscriberInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8369   return dissect_gsm_map_SubscriberInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
8370 }
8371
8372 static const ber_sequence_t CCBS_Indicators_sequence[] = {
8373   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
8374   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepCCBS_CallIndicator_impl },
8375   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8376   { 0, 0, 0, NULL }
8377 };
8378
8379 static int
8380 dissect_gsm_map_CCBS_Indicators(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8381   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8382                                 CCBS_Indicators_sequence, hf_index, ett_gsm_map_CCBS_Indicators);
8383
8384   return offset;
8385 }
8386 static int dissect_ccbs_Indicators_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8387   return dissect_gsm_map_CCBS_Indicators(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Indicators);
8388 }
8389
8390 static const asn_namedbit AllowedServices_bits[] = {
8391   {  0, &hf_gsm_map_AllowedServices_firstServiceAllowed, -1, -1, "firstServiceAllowed", NULL },
8392   {  1, &hf_gsm_map_AllowedServices_secondServiceAllowed, -1, -1, "secondServiceAllowed", NULL },
8393   { 0, NULL, 0, 0, NULL, NULL }
8394 };
8395
8396 static int
8397 dissect_gsm_map_AllowedServices(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8398   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8399                                  AllowedServices_bits, hf_index, ett_gsm_map_AllowedServices,
8400                                  NULL);
8401
8402   return offset;
8403 }
8404 static int dissect_allowedServices_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8405   return dissect_gsm_map_AllowedServices(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedServices);
8406 }
8407
8408
8409 static const value_string gsm_map_UnavailabilityCause_vals[] = {
8410   {   1, "bearerServiceNotProvisioned" },
8411   {   2, "teleserviceNotProvisioned" },
8412   {   3, "absentSubscriber" },
8413   {   4, "busySubscriber" },
8414   {   5, "callBarred" },
8415   {   6, "cug-Reject" },
8416   { 0, NULL }
8417 };
8418
8419
8420 static int
8421 dissect_gsm_map_UnavailabilityCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8422   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8423                                   NULL);
8424
8425   return offset;
8426 }
8427 static int dissect_unavailabilityCause_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8428   return dissect_gsm_map_UnavailabilityCause(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unavailabilityCause);
8429 }
8430
8431 static const ber_sequence_t SendRoutingInfoRes_sequence[] = {
8432   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8433   { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
8434   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
8435   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cugSubscriptionFlag_impl },
8436   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberInfo_impl },
8437   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
8438   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
8439   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInterrogationRequired_impl },
8440   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vmsc_Address_impl },
8441   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8442   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
8443   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Indicators_impl },
8444   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8445   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
8446   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
8447   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInVMSC_impl },
8448   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVMSC_impl },
8449   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_routingInfo2_impl },
8450   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List2_impl },
8451   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService2_impl },
8452   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedServices_impl },
8453   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unavailabilityCause_impl },
8454   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseResourcesSupported_impl },
8455   { 0, 0, 0, NULL }
8456 };
8457
8458 static int
8459 dissect_gsm_map_SendRoutingInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8460   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8461                                 SendRoutingInfoRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoRes);
8462
8463   return offset;
8464 }
8465
8466
8467 static const value_string gsm_map_SubscriberId_vals[] = {
8468   {   0, "imsi" },
8469   {   1, "tmsi" },
8470   { 0, NULL }
8471 };
8472
8473 static const ber_choice_t SubscriberId_choice[] = {
8474   {   0, BER_CLASS_CON, 0, 0, dissect_imsi },
8475   {   1, BER_CLASS_CON, 1, 0, dissect_tmsi },
8476   { 0, 0, 0, 0, NULL }
8477 };
8478
8479 static int
8480 dissect_gsm_map_SubscriberId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8481   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
8482                               SubscriberId_choice, hf_index, ett_gsm_map_SubscriberId, NULL);
8483
8484   return offset;
8485 }
8486
8487
8488 static const value_string gsm_map_SubscriberIdentity_vals[] = {
8489   {   0, "imsi" },
8490   {   1, "msisdn" },
8491   { 0, NULL }
8492 };
8493
8494 static const ber_choice_t SubscriberIdentity_choice[] = {
8495   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8496   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8497   { 0, 0, 0, 0, NULL }
8498 };
8499
8500 static int
8501 dissect_gsm_map_SubscriberIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8502   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
8503                               SubscriberIdentity_choice, hf_index, ett_gsm_map_SubscriberIdentity, NULL);
8504
8505   return offset;
8506 }
8507 static int dissect_subscriberIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8508   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
8509 }
8510 static int dissect_subscriberIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8511   return dissect_gsm_map_SubscriberIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
8512 }
8513 static int dissect_targetMS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8514   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
8515 }
8516 static int dissect_targetMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8517   return dissect_gsm_map_SubscriberIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
8518 }
8519
8520
8521 static const value_string gsm_map_NetDetNotReachable_vals[] = {
8522   {   0, "msPurged" },
8523   {   1, "imsiDetached" },
8524   {   2, "restrictedArea" },
8525   {   3, "notRegistered" },
8526   { 0, NULL }
8527 };
8528
8529
8530 static int
8531 dissect_gsm_map_NetDetNotReachable(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8532   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8533                                   NULL);
8534
8535   return offset;
8536 }
8537
8538
8539
8540 static int
8541 dissect_gsm_map_RoamingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8542   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8543                                        NULL);
8544
8545   return offset;
8546 }
8547
8548
8549
8550 static int
8551 dissect_gsm_map_Qos_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8552   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8553                                        NULL);
8554
8555   return offset;
8556 }
8557
8558
8559
8560 static int
8561 dissect_gsm_map_ExtSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8562   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8563                                        NULL);
8564
8565   return offset;
8566 }
8567
8568
8569
8570 static int
8571 dissect_gsm_map_Gmsc_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8572   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8573                                        NULL);
8574
8575   return offset;
8576 }
8577
8578 static const ber_sequence_t ProvideRoamingNumberArg_sequence[] = {
8579   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8580   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
8581   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8582   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
8583   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
8584   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
8585   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
8586   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
8587   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
8588   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
8589   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8590   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
8591   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
8592   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInInterrogatingNode_impl },
8593   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
8594   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_orNotSupportedInGMSC_impl },
8595   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pre_pagingSupported_impl },
8596   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
8597   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppress_VT_CSI_impl },
8598   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInInterrogatingNode_impl },
8599   { 0, 0, 0, NULL }
8600 };
8601
8602 static int
8603 dissect_gsm_map_ProvideRoamingNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8604   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8605                                 ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberArg);
8606
8607   return offset;
8608 }
8609
8610 static const ber_sequence_t ProvideRoamingNumberRes_sequence[] = {
8611   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
8612   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8613   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_releaseResourcesSupported },
8614   { 0, 0, 0, NULL }
8615 };
8616
8617 static int
8618 dissect_gsm_map_ProvideRoamingNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8619   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8620                                 ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberRes);
8621
8622   return offset;
8623 }
8624
8625
8626
8627 static int
8628 dissect_gsm_map_UUIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8629   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8630                                        NULL);
8631
8632   return offset;
8633 }
8634 static int dissect_uuIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8635   return dissect_gsm_map_UUIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uuIndicator);
8636 }
8637
8638
8639
8640 static int
8641 dissect_gsm_map_UUI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8642   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8643                                        NULL);
8644
8645   return offset;
8646 }
8647 static int dissect_uui_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8648   return dissect_gsm_map_UUI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uui);
8649 }
8650
8651 static const ber_sequence_t UU_Data_sequence[] = {
8652   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uuIndicator_impl },
8653   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uui_impl },
8654   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uusCFInteraction_impl },
8655   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8656   { 0, 0, 0, NULL }
8657 };
8658
8659 static int
8660 dissect_gsm_map_UU_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8661   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8662                                 UU_Data_sequence, hf_index, ett_gsm_map_UU_Data);
8663
8664   return offset;
8665 }
8666 static int dissect_uu_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8667   return dissect_gsm_map_UU_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uu_Data);
8668 }
8669
8670 static const ber_sequence_t ResumeCallHandlingArg_sequence[] = {
8671   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
8672   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_ext_basicServiceGroup },
8673   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingData_impl },
8674   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8675   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
8676   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
8677   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8678   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
8679   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8680   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uu_Data_impl },
8681   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allInformationSent_impl },
8682   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_csi_impl },
8683   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDPCriteriaList_impl },
8684   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup2_impl },
8685   { 0, 0, 0, NULL }
8686 };
8687
8688 static int
8689 dissect_gsm_map_ResumeCallHandlingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8690   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8691                                 ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ResumeCallHandlingArg);
8692
8693   return offset;
8694 }
8695
8696 static const ber_sequence_t ResumeCallHandlingRes_sequence[] = {
8697   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8698   { 0, 0, 0, NULL }
8699 };
8700
8701 static int
8702 dissect_gsm_map_ResumeCallHandlingRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8703   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8704                                 ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ResumeCallHandlingRes);
8705
8706   return offset;
8707 }
8708
8709
8710
8711 static int
8712 dissect_gsm_map_CallDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8713   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8714                                        NULL);
8715
8716   return offset;
8717 }
8718 static int dissect_call_Direction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8719   return dissect_gsm_map_CallDirection(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_call_Direction);
8720 }
8721
8722 static const ber_sequence_t ProvideSIWFSNumberArg_sequence[] = {
8723   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
8724   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_BearerCapability_impl },
8725   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_call_Direction_impl },
8726   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_b_Subscriber_Address_impl },
8727   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
8728   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lowerLayerCompatibility_impl },
8729   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_highLayerCompatibility_impl },
8730   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8731   { 0, 0, 0, NULL }
8732 };
8733
8734 static int
8735 dissect_gsm_map_ProvideSIWFSNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8736   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8737                                 ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberArg);
8738
8739   return offset;
8740 }
8741
8742 static const ber_sequence_t ProvideSIWFSNumberRes_sequence[] = {
8743   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sIWFSNumber_impl },
8744   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8745   { 0, 0, 0, NULL }
8746 };
8747
8748 static int
8749 dissect_gsm_map_ProvideSIWFSNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8750   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8751                                 ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberRes);
8752
8753   return offset;
8754 }
8755
8756 static const ber_sequence_t SIWFSSignallingModifyArg_sequence[] = {
8757   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
8758   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
8759   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8760   { 0, 0, 0, NULL }
8761 };
8762
8763 static int
8764 dissect_gsm_map_SIWFSSignallingModifyArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8765   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8766                                 SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyArg);
8767
8768   return offset;
8769 }
8770
8771 static const ber_sequence_t SIWFSSignallingModifyRes_sequence[] = {
8772   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
8773   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8774   { 0, 0, 0, NULL }
8775 };
8776
8777 static int
8778 dissect_gsm_map_SIWFSSignallingModifyRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8779   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8780                                 SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyRes);
8781
8782   return offset;
8783 }
8784
8785
8786 static const value_string gsm_map_Ccbs_Monitoring_vals[] = {
8787   {   0, "stopMonitoring" },
8788   {   1, "startMonitoring" },
8789   { 0, NULL }
8790 };
8791
8792
8793 static int
8794 dissect_gsm_map_Ccbs_Monitoring(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8795   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8796                                   NULL);
8797
8798   return offset;
8799 }
8800
8801
8802 static const value_string gsm_map_ReportingState_vals[] = {
8803   {   0, "stopMonitoring" },
8804   {   1, "startMonitoring" },
8805   { 0, NULL }
8806 };
8807
8808
8809 static int
8810 dissect_gsm_map_ReportingState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8811   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8812                                   NULL);
8813
8814   return offset;
8815 }
8816 static int dissect_ccbs_Monitoring(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8817   return dissect_gsm_map_ReportingState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Monitoring);
8818 }
8819
8820 static const ber_sequence_t SetReportingStateArg_sequence[] = {
8821   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_imsi },
8822   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_lmsi },
8823   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_ccbs_Monitoring },
8824   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
8825   { 0, 0, 0, NULL }
8826 };
8827
8828 static int
8829 dissect_gsm_map_SetReportingStateArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8830   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8831                                 SetReportingStateArg_sequence, hf_index, ett_gsm_map_SetReportingStateArg);
8832
8833   return offset;
8834 }
8835
8836
8837 static const value_string gsm_map_CCBS_SubscriberStatus_vals[] = {
8838   {   0, "ccbsNotIdle" },
8839   {   1, "ccbsIdle" },
8840   {   2, "ccbsNotReachable" },
8841   { 0, NULL }
8842 };
8843
8844
8845 static int
8846 dissect_gsm_map_CCBS_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8847   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8848                                   NULL);
8849
8850   return offset;
8851 }
8852 static int dissect_ccbs_SubscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8853   return dissect_gsm_map_CCBS_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_SubscriberStatus);
8854 }
8855
8856 static const ber_sequence_t SetReportingStateRes_sequence[] = {
8857   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
8858   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8859   { 0, 0, 0, NULL }
8860 };
8861
8862 static int
8863 dissect_gsm_map_SetReportingStateRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8864   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8865                                 SetReportingStateRes_sequence, hf_index, ett_gsm_map_SetReportingStateRes);
8866
8867   return offset;
8868 }
8869
8870 static const ber_sequence_t EventReportData_sequence[] = {
8871   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
8872   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8873   { 0, 0, 0, NULL }
8874 };
8875
8876 static int
8877 dissect_gsm_map_EventReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8878   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8879                                 EventReportData_sequence, hf_index, ett_gsm_map_EventReportData);
8880
8881   return offset;
8882 }
8883 static int dissect_eventReportData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8884   return dissect_gsm_map_EventReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventReportData);
8885 }
8886
8887
8888 static const value_string gsm_map_MonitoringMode_vals[] = {
8889   {   0, "a-side" },
8890   {   1, "b-side" },
8891   { 0, NULL }
8892 };
8893
8894
8895 static int
8896 dissect_gsm_map_MonitoringMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8897   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8898                                   NULL);
8899
8900   return offset;
8901 }
8902 static int dissect_monitoringMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8903   return dissect_gsm_map_MonitoringMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_monitoringMode);
8904 }
8905
8906
8907 static const value_string gsm_map_CallOutcome_vals[] = {
8908   {   0, "success" },
8909   {   1, "failure" },
8910   {   2, "busy" },
8911   { 0, NULL }
8912 };
8913
8914
8915 static int
8916 dissect_gsm_map_CallOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8917   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8918                                   NULL);
8919
8920   return offset;
8921 }
8922 static int dissect_callOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8923   return dissect_gsm_map_CallOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callOutcome);
8924 }
8925
8926 static const ber_sequence_t CallReportData_sequence[] = {
8927   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_monitoringMode_impl },
8928   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOutcome_impl },
8929   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8930   { 0, 0, 0, NULL }
8931 };
8932
8933 static int
8934 dissect_gsm_map_CallReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8935   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8936                                 CallReportData_sequence, hf_index, ett_gsm_map_CallReportData);
8937
8938   return offset;
8939 }
8940 static int dissect_callReportdata_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8941   return dissect_gsm_map_CallReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReportdata);
8942 }
8943
8944 static const ber_sequence_t StatusReportArg_sequence[] = {
8945   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8946   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventReportData_impl },
8947   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReportdata_impl },
8948   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8949   { 0, 0, 0, NULL }
8950 };
8951
8952 static int
8953 dissect_gsm_map_StatusReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8954   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8955                                 StatusReportArg_sequence, hf_index, ett_gsm_map_StatusReportArg);
8956
8957   return offset;
8958 }
8959
8960 static const ber_sequence_t StatusReportRes_sequence[] = {
8961   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8962   { 0, 0, 0, NULL }
8963 };
8964
8965 static int
8966 dissect_gsm_map_StatusReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8967   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8968                                 StatusReportRes_sequence, hf_index, ett_gsm_map_StatusReportRes);
8969
8970   return offset;
8971 }
8972
8973
8974 static const value_string gsm_map_Ruf_Outcome_vals[] = {
8975   {   0, "accepted" },
8976   {   1, "rejected" },
8977   {   2, "noResponseFromFreeMS" },
8978   {   3, "noResponseFromBusyMS" },
8979   {   4, "udubFromFreeMS" },
8980   {   5, "udubFromBusyMS" },
8981   { 0, NULL }
8982 };
8983
8984
8985 static int
8986 dissect_gsm_map_Ruf_Outcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8987   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8988                                   NULL);
8989
8990   return offset;
8991 }
8992 static int dissect_ruf_Outcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8993   return dissect_gsm_map_Ruf_Outcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ruf_Outcome);
8994 }
8995
8996 static const ber_sequence_t IST_AlertArg_sequence[] = {
8997   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8998   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8999   { 0, 0, 0, NULL }
9000 };
9001
9002 static int
9003 dissect_gsm_map_IST_AlertArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9004   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9005                                 IST_AlertArg_sequence, hf_index, ett_gsm_map_IST_AlertArg);
9006
9007   return offset;
9008 }
9009
9010
9011 static const value_string gsm_map_CallTerminationIndicator_vals[] = {
9012   {   0, "terminateCallActivityReferred" },
9013   {   1, "terminateAllCallActivities" },
9014   { 0, NULL }
9015 };
9016
9017
9018 static int
9019 dissect_gsm_map_CallTerminationIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9020   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9021                                   NULL);
9022
9023   return offset;
9024 }
9025 static int dissect_callTerminationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9026   return dissect_gsm_map_CallTerminationIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTerminationIndicator);
9027 }
9028
9029 static const ber_sequence_t IST_AlertRes_sequence[] = {
9030   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
9031   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istInformationWithdraw_impl },
9032   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTerminationIndicator_impl },
9033   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9034   { 0, 0, 0, NULL }
9035 };
9036
9037 static int
9038 dissect_gsm_map_IST_AlertRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9039   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9040                                 IST_AlertRes_sequence, hf_index, ett_gsm_map_IST_AlertRes);
9041
9042   return offset;
9043 }
9044
9045 static const ber_sequence_t IST_CommandArg_sequence[] = {
9046   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9047   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9048   { 0, 0, 0, NULL }
9049 };
9050
9051 static int
9052 dissect_gsm_map_IST_CommandArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9053   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9054                                 IST_CommandArg_sequence, hf_index, ett_gsm_map_IST_CommandArg);
9055
9056   return offset;
9057 }
9058
9059 static const ber_sequence_t IST_CommandRes_sequence[] = {
9060   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9061   { 0, 0, 0, NULL }
9062 };
9063
9064 static int
9065 dissect_gsm_map_IST_CommandRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9066   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9067                                 IST_CommandRes_sequence, hf_index, ett_gsm_map_IST_CommandRes);
9068
9069   return offset;
9070 }
9071
9072 static const ber_sequence_t ReleaseResourcesArg_sequence[] = {
9073   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msrn },
9074   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9075   { 0, 0, 0, NULL }
9076 };
9077
9078 static int
9079 dissect_gsm_map_ReleaseResourcesArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9080   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9081                                 ReleaseResourcesArg_sequence, hf_index, ett_gsm_map_ReleaseResourcesArg);
9082
9083   return offset;
9084 }
9085
9086 static const ber_sequence_t ReleaseResourcesRes_sequence[] = {
9087   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9088   { 0, 0, 0, NULL }
9089 };
9090
9091 static int
9092 dissect_gsm_map_ReleaseResourcesRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9093   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9094                                 ReleaseResourcesRes_sequence, hf_index, ett_gsm_map_ReleaseResourcesRes);
9095
9096   return offset;
9097 }
9098
9099
9100
9101 static int
9102 dissect_gsm_map_CCBS_Index(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9103   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9104                                   NULL);
9105
9106   return offset;
9107 }
9108 static int dissect_ccbs_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9109   return dissect_gsm_map_CCBS_Index(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Index);
9110 }
9111
9112 static const ber_sequence_t CCBS_Feature_sequence[] = {
9113   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
9114   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
9115   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
9116   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup_impl },
9117   { 0, 0, 0, NULL }
9118 };
9119
9120 static int
9121 dissect_gsm_map_CCBS_Feature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9122   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9123                                 CCBS_Feature_sequence, hf_index, ett_gsm_map_CCBS_Feature);
9124
9125   return offset;
9126 }
9127 static int dissect_ccbs_Feature(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9128   return dissect_gsm_map_CCBS_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
9129 }
9130 static int dissect_ccbs_Feature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9131   return dissect_gsm_map_CCBS_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
9132 }
9133 static int dissect_CCBS_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9134   return dissect_gsm_map_CCBS_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CCBS_FeatureList_item);
9135 }
9136
9137 static const ber_sequence_t RemoteUserFreeArg_sequence[] = {
9138   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9139   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
9140   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
9141   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
9142   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replaceB_Number_impl },
9143   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
9144   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9145   { 0, 0, 0, NULL }
9146 };
9147
9148 static int
9149 dissect_gsm_map_RemoteUserFreeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9150   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9151                                 RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_RemoteUserFreeArg);
9152
9153   return offset;
9154 }
9155
9156 static const ber_sequence_t RemoteUserFreeRes_sequence[] = {
9157   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ruf_Outcome_impl },
9158   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9159   { 0, 0, 0, NULL }
9160 };
9161
9162 static int
9163 dissect_gsm_map_RemoteUserFreeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9164   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9165                                 RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_RemoteUserFreeRes);
9166
9167   return offset;
9168 }
9169
9170
9171
9172 static int
9173 dissect_gsm_map_TranslatedB_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9174   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9175                                        NULL);
9176
9177   return offset;
9178 }
9179
9180 static const ber_sequence_t SS_Data_sequence[] = {
9181   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
9182   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
9183   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
9184   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ext_basicServiceGroupList },
9185   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
9186   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
9187   { 0, 0, 0, NULL }
9188 };
9189
9190 static int
9191 dissect_gsm_map_SS_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9192   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9193                                 SS_Data_sequence, hf_index, ett_gsm_map_SS_Data);
9194
9195   return offset;
9196 }
9197 static int dissect_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9198   return dissect_gsm_map_SS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Data);
9199 }
9200
9201 static const ber_sequence_t RegisterSS_Arg_sequence[] = {
9202   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
9203   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
9204   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
9205   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
9206   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
9207   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
9208   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
9209   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
9210   { 0, 0, 0, NULL }
9211 };
9212
9213 static int
9214 dissect_gsm_map_RegisterSS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9215   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9216                                 RegisterSS_Arg_sequence, hf_index, ett_gsm_map_RegisterSS_Arg);
9217
9218   return offset;
9219 }
9220
9221
9222 static const value_string gsm_map_SS_Info_vals[] = {
9223   {   0, "forwardingInfo" },
9224   {   1, "callBarringInfo" },
9225   {   3, "ss-Data" },
9226   { 0, NULL }
9227 };
9228
9229 static const ber_choice_t SS_Info_choice[] = {
9230   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
9231   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
9232   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data_impl },
9233   { 0, 0, 0, 0, NULL }
9234 };
9235
9236 static int
9237 dissect_gsm_map_SS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9238   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
9239                               SS_Info_choice, hf_index, ett_gsm_map_SS_Info, NULL);
9240
9241   return offset;
9242 }
9243
9244
9245
9246 static int
9247 dissect_gsm_map_B_subscriberNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9248   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9249                                        NULL);
9250
9251   return offset;
9252 }
9253
9254 static const ber_sequence_t CCBS_FeatureList_sequence_of[1] = {
9255   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CCBS_FeatureList_item },
9256 };
9257
9258 static int
9259 dissect_gsm_map_CCBS_FeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9260   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
9261                                    CCBS_FeatureList_sequence_of, hf_index, ett_gsm_map_CCBS_FeatureList);
9262
9263   return offset;
9264 }
9265 static int dissect_ccbs_FeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9266   return dissect_gsm_map_CCBS_FeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList);
9267 }
9268
9269 static const ber_sequence_t GenericServiceInfo_sequence[] = {
9270   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
9271   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cliRestrictionOption },
9272   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximumEntitledPriority_impl },
9273   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
9274   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_FeatureList_impl },
9275   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrSB_impl },
9276   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
9277   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrSN_impl },
9278   { 0, 0, 0, NULL }
9279 };
9280
9281 static int
9282 dissect_gsm_map_GenericServiceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9283   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9284                                 GenericServiceInfo_sequence, hf_index, ett_gsm_map_GenericServiceInfo);
9285
9286   return offset;
9287 }
9288 static int dissect_genericServiceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9289   return dissect_gsm_map_GenericServiceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_genericServiceInfo);
9290 }
9291
9292
9293 static const value_string gsm_map_InterrogateSS_Res_vals[] = {
9294   {   0, "ss-Status" },
9295   {   2, "basicServiceGroupList" },
9296   {   3, "forwardingFeatureList" },
9297   {   4, "genericServiceInfo" },
9298   { 0, NULL }
9299 };
9300
9301 static const ber_choice_t InterrogateSS_Res_choice[] = {
9302   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
9303   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_basicServiceGroupList_impl },
9304   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_forwardingFeatureList_impl },
9305   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_genericServiceInfo_impl },
9306   { 0, 0, 0, 0, NULL }
9307 };
9308
9309 static int
9310 dissect_gsm_map_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9311   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
9312                               InterrogateSS_Res_choice, hf_index, ett_gsm_map_InterrogateSS_Res, NULL);
9313
9314   return offset;
9315 }
9316
9317
9318
9319 static int
9320 dissect_gsm_map_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9321   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9322                                        NULL);
9323
9324   return offset;
9325 }
9326 static int dissect_ussd_DataCodingScheme(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9327   return dissect_gsm_map_USSD_DataCodingScheme(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_DataCodingScheme);
9328 }
9329 static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9330   return dissect_gsm_map_USSD_DataCodingScheme(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dataCodingScheme);
9331 }
9332
9333
9334
9335 static int
9336 dissect_gsm_map_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9337   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9338                                        NULL);
9339
9340   return offset;
9341 }
9342 static int dissect_ussd_String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9343   return dissect_gsm_map_USSD_String(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_String);
9344 }
9345
9346 static const ber_sequence_t Ussd_Arg_sequence[] = {
9347   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
9348   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
9349   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertingPattern },
9350   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9351   { 0, 0, 0, NULL }
9352 };
9353
9354 static int
9355 dissect_gsm_map_Ussd_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9356   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9357                                 Ussd_Arg_sequence, hf_index, ett_gsm_map_Ussd_Arg);
9358
9359   return offset;
9360 }
9361
9362 static const ber_sequence_t Ussd_Res_sequence[] = {
9363   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
9364   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
9365   { 0, 0, 0, NULL }
9366 };
9367
9368 static int
9369 dissect_gsm_map_Ussd_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9370   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9371                                 Ussd_Res_sequence, hf_index, ett_gsm_map_Ussd_Res);
9372
9373   return offset;
9374 }
9375
9376
9377 static const value_string gsm_map_FailureCause_vals[] = {
9378   {   0, "wrongUserResponse" },
9379   {   1, "wrongNetworkSignature" },
9380   { 0, NULL }
9381 };
9382
9383
9384 static int
9385 dissect_gsm_map_FailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9386   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9387                                   NULL);
9388
9389   return offset;
9390 }
9391 static int dissect_failureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9392   return dissect_gsm_map_FailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_failureCause);
9393 }
9394
9395
9396
9397 static int
9398 dissect_gsm_map_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9399   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
9400
9401   return offset;
9402 }
9403 static int dissect_re_attempt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9404   return dissect_gsm_map_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_attempt);
9405 }
9406 static int dissect_sm_RP_PRI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9407   return dissect_gsm_map_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_PRI);
9408 }
9409
9410
9411 static const value_string gsm_map_AccessType_vals[] = {
9412   {   0, "call" },
9413   {   1, "emergencyCall" },
9414   {   2, "locationUpdating" },
9415   {   3, "supplementaryService" },
9416   {   4, "shortMessage" },
9417   {   5, "gprsAttach" },
9418   {   6, "routingAreaUpdating" },
9419   {   7, "serviceRequest" },
9420   {   8, "pdpContextActivation" },
9421   {   9, "pdpContextDeactivation" },
9422   {  10, "gprsDetach" },
9423   { 0, NULL }
9424 };
9425
9426
9427 static int
9428 dissect_gsm_map_AccessType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9429   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9430                                   NULL);
9431
9432   return offset;
9433 }
9434 static int dissect_accessType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9435   return dissect_gsm_map_AccessType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessType);
9436 }
9437
9438 static const ber_sequence_t AuthenticationFailureReportArg_sequence[] = {
9439   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
9440   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_failureCause },
9441   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9442   { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_attempt },
9443   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_accessType },
9444   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_rand },
9445   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
9446   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
9447   { 0, 0, 0, NULL }
9448 };
9449
9450 static int
9451 dissect_gsm_map_AuthenticationFailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9452   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9453                                 AuthenticationFailureReportArg_sequence, hf_index, ett_gsm_map_AuthenticationFailureReportArg);
9454
9455   return offset;
9456 }
9457
9458 static const ber_sequence_t AuthenticationFailureReportRes_sequence[] = {
9459   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9460   { 0, 0, 0, NULL }
9461 };
9462
9463 static int
9464 dissect_gsm_map_AuthenticationFailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9465   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9466                                 AuthenticationFailureReportRes_sequence, hf_index, ett_gsm_map_AuthenticationFailureReportRes);
9467
9468   return offset;
9469 }
9470
9471
9472 static int
9473 dissect_gsm_map_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9474   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
9475                                          pinfo, tree, tvb, offset, hf_index,
9476                                          NULL);
9477
9478   return offset;
9479 }
9480
9481
9482 static const value_string gsm_map_GetPasswordArg_vals[] = {
9483   {   0, "enterPW" },
9484   {   1, "enterNewPW" },
9485   {   2, "enterNewPW-Again" },
9486   { 0, NULL }
9487 };
9488
9489
9490 static int
9491 dissect_gsm_map_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9492   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9493                                   NULL);
9494
9495   return offset;
9496 }
9497
9498
9499 static int
9500 dissect_gsm_map_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9501   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
9502                                          pinfo, tree, tvb, offset, hf_index,
9503                                          NULL);
9504
9505   return offset;
9506 }
9507
9508 static const asn_namedbit ServiceIndicator_bits[] = {
9509   {  0, &hf_gsm_map_ServiceIndicator_clir_invoked, -1, -1, "clir-invoked", NULL },
9510   {  1, &hf_gsm_map_ServiceIndicator_camel_invoked, -1, -1, "camel-invoked", NULL },
9511   { 0, NULL, 0, 0, NULL, NULL }
9512 };
9513
9514 static int
9515 dissect_gsm_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9516   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
9517                                  ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
9518                                  NULL);
9519
9520   return offset;
9521 }
9522 static int dissect_serviceIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9523   return dissect_gsm_map_ServiceIndicator(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceIndicator);
9524 }
9525
9526 static const ber_sequence_t CCBS_Data_sequence[] = {
9527   { BER_CLASS_CON, 0, 0, dissect_ccbs_Feature },
9528   { BER_CLASS_CON, 1, 0, dissect_translatedB_Number },
9529   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_serviceIndicator },
9530   { BER_CLASS_CON, 3, 0, dissect_callInfo },
9531   { BER_CLASS_CON, 4, 0, dissect_networkSignalInfo },
9532   { 0, 0, 0, NULL }
9533 };
9534
9535 static int
9536 dissect_gsm_map_CCBS_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9537   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9538                                 CCBS_Data_sequence, hf_index, ett_gsm_map_CCBS_Data);
9539
9540   return offset;
9541 }
9542 static int dissect_ccbs_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9543   return dissect_gsm_map_CCBS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Data);
9544 }
9545
9546 static const ber_sequence_t RegisterCC_EntryArg_sequence[] = {
9547   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
9548   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Data_impl },
9549   { 0, 0, 0, NULL }
9550 };
9551
9552 static int
9553 dissect_gsm_map_RegisterCC_EntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9554   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9555                                 RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_RegisterCC_EntryArg);
9556
9557   return offset;
9558 }
9559
9560 static const ber_sequence_t RegisterCC_EntryRes_sequence[] = {
9561   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
9562   { 0, 0, 0, NULL }
9563 };
9564
9565 static int
9566 dissect_gsm_map_RegisterCC_EntryRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9567   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9568                                 RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_RegisterCC_EntryRes);
9569
9570   return offset;
9571 }
9572
9573 static const ber_sequence_t EraseCC_EntryArg_sequence[] = {
9574   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
9575   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
9576   { 0, 0, 0, NULL }
9577 };
9578
9579 static int
9580 dissect_gsm_map_EraseCC_EntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9581   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9582                                 EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_EraseCC_EntryArg);
9583
9584   return offset;
9585 }
9586
9587 static const ber_sequence_t EraseCC_EntryRes_sequence[] = {
9588   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
9589   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
9590   { 0, 0, 0, NULL }
9591 };
9592
9593 static int
9594 dissect_gsm_map_EraseCC_EntryRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9595   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9596                                 EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_EraseCC_EntryRes);
9597
9598   return offset;
9599 }
9600
9601
9602
9603 static int
9604 dissect_gsm_map_ServiceCentreAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9605
9606  tvbuff_t       *parameter_tvb;
9607  char           *digit_str;
9608
9609  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9610                                     &parameter_tvb);
9611  if (!parameter_tvb)
9612         return offset;
9613
9614  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
9615  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
9616  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
9617
9618  digit_str = unpack_digits(parameter_tvb, 1);
9619
9620  proto_tree_add_string(tree, hf_gsm_map_servicecentreaddress_digits, parameter_tvb, 1, -1, digit_str);
9621  if (digit_str)
9622         g_free(digit_str);
9623  pinfo->p2p_dir = P2P_DIR_SENT;
9624
9625
9626   return offset;
9627 }
9628 static int dissect_serviceCentreAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9629   return dissect_gsm_map_ServiceCentreAddress(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
9630 }
9631 static int dissect_serviceCentreAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9632   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
9633 }
9634 static int dissect_serviceCentreAddressOA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9635   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressOA);
9636 }
9637 static int dissect_serviceCentreAddressDA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9638   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressDA);
9639 }
9640
9641
9642
9643 static int
9644 dissect_gsm_map_INTEGER_0_10(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9645   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9646                                   NULL);
9647
9648   return offset;
9649 }
9650 static int dissect_sm_RP_MTI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9651   return dissect_gsm_map_INTEGER_0_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_MTI);
9652 }
9653
9654
9655
9656 static int
9657 dissect_gsm_map_OCTET_STRING_SIZE_1_12(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9658   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9659                                        NULL);
9660
9661   return offset;
9662 }
9663 static int dissect_sm_RP_SMEA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9664   return dissect_gsm_map_OCTET_STRING_SIZE_1_12(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_SMEA);
9665 }
9666
9667 static const ber_sequence_t RoutingInfoForSMArg_sequence[] = {
9668   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9669   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sm_RP_PRI_impl },
9670   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddress_impl },
9671   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9672   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
9673   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_MTI_impl },
9674   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_SMEA_impl },
9675   { 0, 0, 0, NULL }
9676 };
9677
9678 static int
9679 dissect_gsm_map_RoutingInfoForSMArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9680   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9681                                 RoutingInfoForSMArg_sequence, hf_index, ett_gsm_map_RoutingInfoForSMArg);
9682
9683   return offset;
9684 }
9685
9686
9687 static const value_string gsm_map_Additional_Number_vals[] = {
9688   {   0, "msc-Number" },
9689   {   1, "sgsn-Number" },
9690   { 0, NULL }
9691 };
9692
9693 static const ber_choice_t Additional_Number_choice[] = {
9694   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
9695   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
9696   { 0, 0, 0, 0, NULL }
9697 };
9698
9699 static int
9700 dissect_gsm_map_Additional_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9701   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
9702                               Additional_Number_choice, hf_index, ett_gsm_map_Additional_Number, NULL);
9703
9704   return offset;
9705 }
9706 static int dissect_additional_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9707   return dissect_gsm_map_Additional_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_Number);
9708 }
9709
9710 static const ber_sequence_t LocationInfoWithLMSI_sequence[] = {
9711   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_networkNode_Number_impl },
9712   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
9713   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9714   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
9715   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_additional_Number_impl },
9716   { 0, 0, 0, NULL }
9717 };
9718
9719 static int
9720 dissect_gsm_map_LocationInfoWithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9721   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9722                                 LocationInfoWithLMSI_sequence, hf_index, ett_gsm_map_LocationInfoWithLMSI);
9723
9724   return offset;
9725 }
9726 static int dissect_locationInfoWithLMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9727   return dissect_gsm_map_LocationInfoWithLMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInfoWithLMSI);
9728 }
9729
9730 static const ber_sequence_t RoutingInfoForSM_Res_sequence[] = {
9731   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
9732   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationInfoWithLMSI_impl },
9733   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9734   { 0, 0, 0, NULL }
9735 };
9736
9737 static int
9738 dissect_gsm_map_RoutingInfoForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9739   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9740                                 RoutingInfoForSM_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForSM_Res);
9741
9742   return offset;
9743 }
9744
9745
9746 static const value_string gsm_map_Sm_RP_DA_vals[] = {
9747   {   0, "imsi" },
9748   {   1, "lmsi" },
9749   {   4, "serviceCentreAddressDA" },
9750   {   5, "noSM-RP-DA" },
9751   { 0, NULL }
9752 };
9753
9754 static const ber_choice_t Sm_RP_DA_choice[] = {
9755   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9756   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
9757   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressDA_impl },
9758   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_DA_impl },
9759   { 0, 0, 0, 0, NULL }
9760 };
9761
9762 static int
9763 dissect_gsm_map_Sm_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9764   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
9765                               Sm_RP_DA_choice, hf_index, ett_gsm_map_Sm_RP_DA, NULL);
9766
9767   return offset;
9768 }
9769 static int dissect_sm_RP_DA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9770   return dissect_gsm_map_Sm_RP_DA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_DA);
9771 }
9772
9773
9774 static const value_string gsm_map_Sm_RP_OA_vals[] = {
9775   {   2, "msisdn" },
9776   {   4, "serviceCentreAddressOA" },
9777   {   5, "noSM-RP-OA" },
9778   { 0, NULL }
9779 };
9780
9781 static const ber_choice_t Sm_RP_OA_choice[] = {
9782   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9783   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressOA_impl },
9784   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_OA_impl },
9785   { 0, 0, 0, 0, NULL }
9786 };
9787
9788 static int
9789 dissect_gsm_map_Sm_RP_OA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9790   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
9791                               Sm_RP_OA_choice, hf_index, ett_gsm_map_Sm_RP_OA, NULL);
9792
9793   return offset;
9794 }
9795 static int dissect_sm_RP_OA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9796   return dissect_gsm_map_Sm_RP_OA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_OA);
9797 }
9798
9799
9800
9801 static int
9802 dissect_gsm_map_Sm_RP_UI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9803
9804   tvbuff_t      *tpdu_tvb;
9805         
9806   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9807                                     &tpdu_tvb);
9808     /*
9809      * dissect the embedded TPDU message
9810      */
9811  if (!tpdu_tvb)
9812         return offset;
9813
9814     dissector_try_port(sms_dissector_table, 0, tpdu_tvb, pinfo, top_tree);
9815
9816   return offset;
9817 }
9818 static int dissect_sm_RP_UI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9819   return dissect_gsm_map_Sm_RP_UI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_UI);
9820 }
9821
9822 static const ber_sequence_t Mo_forwardSM_Arg_sequence[] = {
9823   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
9824   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
9825   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
9826   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9827   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
9828   { 0, 0, 0, NULL }
9829 };
9830
9831 static int
9832 dissect_gsm_map_Mo_forwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9833   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9834                                 Mo_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Arg);
9835
9836   return offset;
9837 }
9838
9839 static const ber_sequence_t Mo_forwardSM_Res_sequence[] = {
9840   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
9841   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9842   { 0, 0, 0, NULL }
9843 };
9844
9845 static int
9846 dissect_gsm_map_Mo_forwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9847   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9848                                 Mo_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Res);
9849
9850   return offset;
9851 }
9852
9853 static const ber_sequence_t Mt_forwardSM_Arg_sequence[] = {
9854   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
9855   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
9856   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
9857   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_moreMessagesToSend },
9858   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9859   { 0, 0, 0, NULL }
9860 };
9861
9862 static int
9863 dissect_gsm_map_Mt_forwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9864   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9865                                 Mt_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Arg);
9866
9867   return offset;
9868 }
9869
9870 static const ber_sequence_t Mt_forwardSM_Res_sequence[] = {
9871   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
9872   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9873   { 0, 0, 0, NULL }
9874 };
9875
9876 static int
9877 dissect_gsm_map_Mt_forwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9878   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9879                                 Mt_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Res);
9880
9881   return offset;
9882 }
9883
9884
9885 static int
9886 dissect_gsm_map_StoredMSISDN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9887   offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
9888
9889   return offset;
9890 }
9891 static int dissect_storedMSISDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9892   return dissect_gsm_map_StoredMSISDN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_storedMSISDN);
9893 }
9894
9895
9896 static const value_string gsm_map_Sm_DeliveryOutcome_vals[] = {
9897   {   0, "memoryCapacityExceeded" },
9898   {   1, "absentSubscriber" },
9899   {   2, "successfulTransfer" },
9900   { 0, NULL }
9901 };
9902
9903
9904 static int
9905 dissect_gsm_map_Sm_DeliveryOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9906   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9907                                   NULL);
9908
9909   return offset;
9910 }
9911 static int dissect_sm_DeliveryOutcome(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9912   return dissect_gsm_map_Sm_DeliveryOutcome(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_DeliveryOutcome);
9913 }
9914 static int dissect_additionalSM_DeliveryOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9915   return dissect_gsm_map_Sm_DeliveryOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSM_DeliveryOutcome);
9916 }
9917
9918
9919
9920 static int
9921 dissect_gsm_map_AbsentSubscriberDiagnosticSM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9922   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9923                                   NULL);
9924
9925   return offset;
9926 }
9927 static int dissect_absentSubscriberDiagnosticSM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9928   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
9929 }
9930 static int dissect_absentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9931   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
9932 }
9933 static int dissect_additionalAbsentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9934   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalAbsentSubscriberDiagnosticSM);
9935 }
9936 static int dissect_mobileNotReachableReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9937   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mobileNotReachableReason);
9938 }
9939
9940 static const ber_sequence_t ReportSM_DeliveryStatusArg_sequence[] = {
9941   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
9942   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
9943   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_DeliveryOutcome },
9944   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberDiagnosticSM_impl },
9945   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9946   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
9947   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deliveryOutcomeIndicator_impl },
9948   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSM_DeliveryOutcome_impl },
9949   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
9950   { 0, 0, 0, NULL }
9951 };
9952
9953 static int
9954 dissect_gsm_map_ReportSM_DeliveryStatusArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9955   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9956                                 ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusArg);
9957
9958   return offset;
9959 }
9960
9961 static const ber_sequence_t ReportSM_DeliveryStatusRes_sequence[] = {
9962   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
9963   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9964   { 0, 0, 0, NULL }
9965 };
9966
9967 static int
9968 dissect_gsm_map_ReportSM_DeliveryStatusRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9969   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9970                                 ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusRes);
9971
9972   return offset;
9973 }
9974
9975 static const asn_namedbit T_mw_Status_bits[] = {
9976   {  0, &hf_gsm_map_T_mw_Status_scAddressNotIncluded, -1, -1, "scAddressNotIncluded", NULL },
9977   {  1, &hf_gsm_map_T_mw_Status_mnrfSet, -1, -1, "mnrfSet", NULL },
9978   {  2, &hf_gsm_map_T_mw_Status_mcefSet, -1, -1, "mcefSet", NULL },
9979   {  3, &hf_gsm_map_T_mw_Status_mnrgSet, -1, -1, "mnrgSet", NULL },
9980   { 0, NULL, 0, 0, NULL, NULL }
9981 };
9982
9983 static int
9984 dissect_gsm_map_T_mw_Status(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9985   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
9986                                  T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
9987                                  NULL);
9988
9989   return offset;
9990 }
9991 static int dissect_mw_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9992   return dissect_gsm_map_T_mw_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mw_Status);
9993 }
9994
9995 static const ber_sequence_t InformServiceCentreArg_sequence[] = {
9996   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
9997   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mw_Status },
9998   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9999   { 0, 0, 0, NULL }
10000 };
10001
10002 static int
10003 dissect_gsm_map_InformServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10004   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10005                                 InformServiceCentreArg_sequence, hf_index, ett_gsm_map_InformServiceCentreArg);
10006
10007   return offset;
10008 }
10009
10010 static const ber_sequence_t AlertServiceCentreArg_sequence[] = {
10011   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
10012   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
10013   { 0, 0, 0, NULL }
10014 };
10015
10016 static int
10017 dissect_gsm_map_AlertServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10018   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10019                                 AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_AlertServiceCentreArg);
10020
10021   return offset;
10022 }
10023
10024
10025 static const value_string gsm_map_T_alertReason_vals[] = {
10026   {   0, "msPresent" },
10027   {   1, "memoryAvailable" },
10028   { 0, NULL }
10029 };
10030
10031
10032 static int
10033 dissect_gsm_map_T_alertReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10034   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10035                                   NULL);
10036
10037   return offset;
10038 }
10039 static int dissect_alertReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10040   return dissect_gsm_map_T_alertReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReason);
10041 }
10042
10043 static const ber_sequence_t ReadyForSM_Arg_sequence[] = {
10044   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10045   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_alertReason },
10046   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertReasonIndicator },
10047   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10048   { 0, 0, 0, NULL }
10049 };
10050
10051 static int
10052 dissect_gsm_map_ReadyForSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10053   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10054                                 ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_ReadyForSM_Arg);
10055
10056   return offset;
10057 }
10058
10059 static const ber_sequence_t ReadyForSM_Res_sequence[] = {
10060   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10061   { 0, 0, 0, NULL }
10062 };
10063
10064 static int
10065 dissect_gsm_map_ReadyForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10066   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10067                                 ReadyForSM_Res_sequence, hf_index, ett_gsm_map_ReadyForSM_Res);
10068
10069   return offset;
10070 }
10071
10072
10073 static const value_string gsm_map_T_requestedDomain_vals[] = {
10074   {   0, "cs-Domain" },
10075   {   1, "ps-Domain" },
10076   { 0, NULL }
10077 };
10078
10079
10080 static int
10081 dissect_gsm_map_T_requestedDomain(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10082   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10083                                   NULL);
10084
10085   return offset;
10086 }
10087 static int dissect_requestedDomain_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10088   return dissect_gsm_map_T_requestedDomain(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedDomain);
10089 }
10090
10091 static const ber_sequence_t RequestedInfo_sequence[] = {
10092   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_flg_impl },
10093   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberState_flg_impl },
10094   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10095   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocation_impl },
10096   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedDomain_impl },
10097   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_flg_impl },
10098   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_classmark_impl },
10099   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpRequestedInfo_impl },
10100   { 0, 0, 0, NULL }
10101 };
10102
10103 static int
10104 dissect_gsm_map_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10105   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10106                                 RequestedInfo_sequence, hf_index, ett_gsm_map_RequestedInfo);
10107
10108   return offset;
10109 }
10110 static int dissect_requestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10111   return dissect_gsm_map_RequestedInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedInfo);
10112 }
10113
10114 static const ber_sequence_t ProvideSubscriberInfoArg_sequence[] = {
10115   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10116   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
10117   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
10118   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10119   { 0, 0, 0, NULL }
10120 };
10121
10122 static int
10123 dissect_gsm_map_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10124   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10125                                 ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoArg);
10126
10127   return offset;
10128 }
10129
10130 static const ber_sequence_t ProvideSubscriberInfoRes_sequence[] = {
10131   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
10132   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10133   { 0, 0, 0, NULL }
10134 };
10135
10136 static int
10137 dissect_gsm_map_ProvideSubscriberInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10138   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10139                                 ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoRes);
10140
10141   return offset;
10142 }
10143
10144 static const ber_sequence_t AnyTimeInterrogationArg_sequence[] = {
10145   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity },
10146   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
10147   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
10148   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10149   { 0, 0, 0, NULL }
10150 };
10151
10152 static int
10153 dissect_gsm_map_AnyTimeInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10154   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10155                                 AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationArg);
10156
10157   return offset;
10158 }
10159
10160 static const ber_sequence_t AnyTimeInterrogationRes_sequence[] = {
10161   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
10162   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10163   { 0, 0, 0, NULL }
10164 };
10165
10166 static int
10167 dissect_gsm_map_AnyTimeInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10168   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10169                                 AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationRes);
10170
10171   return offset;
10172 }
10173
10174 static const ber_sequence_t SS_ForBS_Code_sequence[] = {
10175   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
10176   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
10177   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
10178   { 0, 0, 0, NULL }
10179 };
10180
10181 static int
10182 dissect_gsm_map_SS_ForBS_Code(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10183   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10184                                 SS_ForBS_Code_sequence, hf_index, ett_gsm_map_SS_ForBS_Code);
10185
10186   return offset;
10187 }
10188 static int dissect_requestedSS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10189   return dissect_gsm_map_SS_ForBS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSS_Info);
10190 }
10191
10192
10193 static const value_string gsm_map_RequestedCAMEL_SubscriptionInfo_vals[] = {
10194   {   0, "o-CSI" },
10195   {   1, "t-CSI" },
10196   {   2, "vt-CSI" },
10197   {   3, "tif-CSI" },
10198   {   4, "gprs-CSI" },
10199   {   5, "mo-sms-CSI" },
10200   {   6, "ss-CSI" },
10201   {   7, "m-CSI" },
10202   {   8, "d-csi" },
10203   { 0, NULL }
10204 };
10205
10206
10207 static int
10208 dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10209   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10210                                   NULL);
10211
10212   return offset;
10213 }
10214 static int dissect_requestedCAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10215   return dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCAMEL_SubscriptionInfo);
10216 }
10217 static int dissect_requestedCamel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10218   return dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCamel_SubscriptionInfo);
10219 }
10220
10221
10222 static const value_string gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals[] = {
10223   {   0, "mt-sms-CSI" },
10224   {   1, "mg-csi" },
10225   {   2, "o-IM-CSI" },
10226   {   3, "d-IM-CSI" },
10227   {   4, "vt-IM-CSI" },
10228   { 0, NULL }
10229 };
10230
10231
10232 static int
10233 dissect_gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10234   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10235                                   NULL);
10236
10237   return offset;
10238 }
10239 static int dissect_additionalRequestedCAMEL_SubscriptionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10240   return dissect_gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo);
10241 }
10242
10243 static const ber_sequence_t RequestedSubscriptionInfo_sequence[] = {
10244   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedSS_Info_impl },
10245   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_impl },
10246   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedCAMEL_SubscriptionInfo_impl },
10247   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_flg_impl },
10248   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_flg_impl },
10249   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10250   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_additionalRequestedCAMEL_SubscriptionInfo },
10251   { 0, 0, 0, NULL }
10252 };
10253
10254 static int
10255 dissect_gsm_map_RequestedSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10256   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10257                                 RequestedSubscriptionInfo_sequence, hf_index, ett_gsm_map_RequestedSubscriptionInfo);
10258
10259   return offset;
10260 }
10261 static int dissect_requestedSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10262   return dissect_gsm_map_RequestedSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSubscriptionInfo);
10263 }
10264
10265 static const ber_sequence_t AnyTimeSubscriptionInterrogationArg_sequence[] = {
10266   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity_impl },
10267   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedSubscriptionInfo_impl },
10268   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
10269   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10270   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
10271   { 0, 0, 0, NULL }
10272 };
10273
10274 static int
10275 dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10276   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10277                                 AnyTimeSubscriptionInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationArg);
10278
10279   return offset;
10280 }
10281
10282 static const ber_sequence_t CallForwardingData_sequence[] = {
10283   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_forwardingFeatureList },
10284   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
10285   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10286   { 0, 0, 0, NULL }
10287 };
10288
10289 static int
10290 dissect_gsm_map_CallForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10291   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10292                                 CallForwardingData_sequence, hf_index, ett_gsm_map_CallForwardingData);
10293
10294   return offset;
10295 }
10296 static int dissect_callForwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10297   return dissect_gsm_map_CallForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callForwardingData);
10298 }
10299
10300
10301 static int
10302 dissect_gsm_map_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10303   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
10304                                          pinfo, tree, tvb, offset, hf_index,
10305                                          NULL);
10306
10307   return offset;
10308 }
10309 static int dissect_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10310   return dissect_gsm_map_Password(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_password);
10311 }
10312 static int dissect_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10313   return dissect_gsm_map_Password(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_password);
10314 }
10315
10316
10317
10318 static int
10319 dissect_gsm_map_WrongPasswordAttemptsCounter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10320   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10321                                   NULL);
10322
10323   return offset;
10324 }
10325 static int dissect_wrongPasswordAttemptsCounter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10326   return dissect_gsm_map_WrongPasswordAttemptsCounter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
10327 }
10328 static int dissect_wrongPasswordAttemptsCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10329   return dissect_gsm_map_WrongPasswordAttemptsCounter(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
10330 }
10331
10332 static const ber_sequence_t CallBarringData_sequence[] = {
10333   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_callBarringFeatureList },
10334   { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_password },
10335   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_wrongPasswordAttemptsCounter },
10336   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
10337   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10338   { 0, 0, 0, NULL }
10339 };
10340
10341 static int
10342 dissect_gsm_map_CallBarringData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10343   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10344                                 CallBarringData_sequence, hf_index, ett_gsm_map_CallBarringData);
10345
10346   return offset;
10347 }
10348 static int dissect_callBarringData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10349   return dissect_gsm_map_CallBarringData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringData);
10350 }
10351
10352 static const ber_sequence_t ODB_Info_sequence[] = {
10353   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_odb_Data },
10354   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
10355   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10356   { 0, 0, 0, NULL }
10357 };
10358
10359 static int
10360 dissect_gsm_map_ODB_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10361   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10362                                 ODB_Info_sequence, hf_index, ett_gsm_map_ODB_Info);
10363
10364   return offset;
10365 }
10366 static int dissect_odb_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10367   return dissect_gsm_map_ODB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Info);
10368 }
10369
10370 static const ber_sequence_t CAMEL_SubscriptionInfo_sequence[] = {
10371   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
10372   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
10373   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
10374   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
10375   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
10376   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
10377   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl },
10378   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
10379   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_NotificationToCSE_impl },
10380   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
10381   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
10382   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
10383   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
10384   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10385   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSIDeletedList_impl },
10386   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
10387   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
10388   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
10389   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_CSI_impl },
10390   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_BcsmCamelTDP_CriteriaList_impl },
10391   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_IM_CSI_impl },
10392   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_CSI_impl },
10393   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl },
10394   { 0, 0, 0, NULL }
10395 };
10396
10397 static int
10398 dissect_gsm_map_CAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10399   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10400                                 CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_CAMEL_SubscriptionInfo);
10401
10402   return offset;
10403 }
10404 static int dissect_camel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10405   return dissect_gsm_map_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camel_SubscriptionInfo);
10406 }
10407
10408 static const ber_sequence_t AnyTimeSubscriptionInterrogationRes_sequence[] = {
10409   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callForwardingData_impl },
10410   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringData_impl },
10411   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
10412   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
10413   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_impl },
10414   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_impl },
10415   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10416   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVLR_impl },
10417   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInSGSN_impl },
10418   { 0, 0, 0, NULL }
10419 };
10420
10421 static int
10422 dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10423   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10424                                 AnyTimeSubscriptionInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationRes);
10425
10426   return offset;
10427 }
10428
10429 static const asn_namedbit OfferedCamel4Functionalities_bits[] = {
10430   {  0, &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt, -1, -1, "initiateCallAttempt", NULL },
10431   {  1, &hf_gsm_map_OfferedCamel4Functionalities_splitLeg, -1, -1, "splitLeg", NULL },
10432   {  2, &hf_gsm_map_OfferedCamel4Functionalities_moveLeg, -1, -1, "moveLeg", NULL },
10433   {  3, &hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg, -1, -1, "disconnectLeg", NULL },
10434   {  4, &hf_gsm_map_OfferedCamel4Functionalities_entityReleased, -1, -1, "entityReleased", NULL },
10435   {  5, &hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument, -1, -1, "dfc-WithArgument", NULL },
10436   {  6, &hf_gsm_map_OfferedCamel4Functionalities_playTone, -1, -1, "playTone", NULL },
10437   {  7, &hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall, -1, -1, "dtmf-MidCall", NULL },
10438   {  8, &hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator, -1, -1, "chargingIndicator", NULL },
10439   {  9, &hf_gsm_map_OfferedCamel4Functionalities_alertingDP, -1, -1, "alertingDP", NULL },
10440   { 10, &hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting, -1, -1, "locationAtAlerting", NULL },
10441   { 11, &hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP, -1, -1, "changeOfPositionDP", NULL },
10442   { 12, &hf_gsm_map_OfferedCamel4Functionalities_or_Interactions, -1, -1, "or-Interactions", NULL },
10443   { 13, &hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements, -1, -1, "warningToneEnhancements", NULL },
10444   { 14, &hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements, -1, -1, "cf-Enhancements", NULL },
10445   { 15, &hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices, -1, -1, "subscribedEnhancedDialledServices", NULL },
10446   { 16, &hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices, -1, -1, "servingNetworkEnhancedDialledServices", NULL },
10447   { 17, &hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP, -1, -1, "criteriaForChangeOfPositionDP", NULL },
10448   { 18, &hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP, -1, -1, "serviceChangeDP", NULL },
10449   { 0, NULL, 0, 0, NULL, NULL }
10450 };
10451
10452 static int
10453 dissect_gsm_map_OfferedCamel4Functionalities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10454   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
10455                                  OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_OfferedCamel4Functionalities,
10456                                  NULL);
10457
10458   return offset;
10459 }
10460 static int dissect_offeredCamel4Functionalities(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10461   return dissect_gsm_map_OfferedCamel4Functionalities(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4Functionalities);
10462 }
10463
10464
10465 static const value_string gsm_map_ModificationInstruction_vals[] = {
10466   {   0, "deactivate" },
10467   {   1, "activate" },
10468   { 0, NULL }
10469 };
10470
10471
10472 static int
10473 dissect_gsm_map_ModificationInstruction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10474   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10475                                   NULL);
10476
10477   return offset;
10478 }
10479 static int dissect_modifyNotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10480   return dissect_gsm_map_ModificationInstruction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyNotificationToCSE);
10481 }
10482 static int dissect_modifyCSI_State_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10483   return dissect_gsm_map_ModificationInstruction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyCSI_State);
10484 }
10485
10486 static const ber_sequence_t ModificationRequestFor_CF_Info_sequence[] = {
10487   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10488   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
10489   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
10490   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
10491   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
10492   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_noReplyConditionTime_impl },
10493   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
10494   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10495   { 0, 0, 0, NULL }
10496 };
10497
10498 static int
10499 dissect_gsm_map_ModificationRequestFor_CF_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10500   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10501                                 ModificationRequestFor_CF_Info_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CF_Info);
10502
10503   return offset;
10504 }
10505 static int dissect_modificationRequestFor_CF_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10506   return dissect_gsm_map_ModificationRequestFor_CF_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CF_Info);
10507 }
10508
10509 static const ber_sequence_t ModificationRequestFor_CB_Info_sequence[] = {
10510   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10511   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
10512   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
10513   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
10514   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
10515   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
10516   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10517   { 0, 0, 0, NULL }
10518 };
10519
10520 static int
10521 dissect_gsm_map_ModificationRequestFor_CB_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10522   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10523                                 ModificationRequestFor_CB_Info_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CB_Info);
10524
10525   return offset;
10526 }
10527 static int dissect_modificationRequestFor_CB_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10528   return dissect_gsm_map_ModificationRequestFor_CB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CB_Info);
10529 }
10530
10531 static const ber_sequence_t ModificationRequestFor_CSI_sequence[] = {
10532   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestedCamel_SubscriptionInfo_impl },
10533   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
10534   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyCSI_State_impl },
10535   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10536   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_additionalRequestedCAMEL_SubscriptionInfo },
10537   { 0, 0, 0, NULL }
10538 };
10539
10540 static int
10541 dissect_gsm_map_ModificationRequestFor_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10542   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10543                                 ModificationRequestFor_CSI_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CSI);
10544
10545   return offset;
10546 }
10547 static int dissect_modificationRequestFor_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10548   return dissect_gsm_map_ModificationRequestFor_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CSI);
10549 }
10550
10551 static const ber_sequence_t ModificationRequestFor_ODB_data_sequence[] = {
10552   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_data_impl },
10553   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
10554   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10555   { 0, 0, 0, NULL }
10556 };
10557
10558 static int
10559 dissect_gsm_map_ModificationRequestFor_ODB_data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10560   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10561                                 ModificationRequestFor_ODB_data_sequence, hf_index, ett_gsm_map_ModificationRequestFor_ODB_data);
10562
10563   return offset;
10564 }
10565 static int dissect_modificationRequestFor_ODB_data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10566   return dissect_gsm_map_ModificationRequestFor_ODB_data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_ODB_data);
10567 }
10568
10569 static const ber_sequence_t AnyTimeModificationArg_sequence[] = {
10570   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity_impl },
10571   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
10572   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CF_Info_impl },
10573   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CB_Info_impl },
10574   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CSI_impl },
10575   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10576   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
10577   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_modificationRequestFor_ODB_data },
10578   { 0, 0, 0, NULL }
10579 };
10580
10581 static int
10582 dissect_gsm_map_AnyTimeModificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10583   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10584                                 AnyTimeModificationArg_sequence, hf_index, ett_gsm_map_AnyTimeModificationArg);
10585
10586   return offset;
10587 }
10588
10589 static const ber_sequence_t Ext_ForwardingInfoFor_CSE_sequence[] = {
10590   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10591   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_forwardingFeatureList_impl },
10592   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
10593   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10594   { 0, 0, 0, NULL }
10595 };
10596
10597 static int
10598 dissect_gsm_map_Ext_ForwardingInfoFor_CSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10599   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10600                                 Ext_ForwardingInfoFor_CSE_sequence, hf_index, ett_gsm_map_Ext_ForwardingInfoFor_CSE);
10601
10602   return offset;
10603 }
10604 static int dissect_forwardingInfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10605   return dissect_gsm_map_Ext_ForwardingInfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfoFor_CSE);
10606 }
10607
10608 static const ber_sequence_t Ext_CallBarringInfoFor_CSE_sequence[] = {
10609   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10610   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_callBarringFeatureList_impl },
10611   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
10612   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
10613   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
10614   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10615   { 0, 0, 0, NULL }
10616 };
10617
10618 static int
10619 dissect_gsm_map_Ext_CallBarringInfoFor_CSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10620   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10621                                 Ext_CallBarringInfoFor_CSE_sequence, hf_index, ett_gsm_map_Ext_CallBarringInfoFor_CSE);
10622
10623   return offset;
10624 }
10625 static int dissect_callBarringInfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10626   return dissect_gsm_map_Ext_CallBarringInfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfoFor_CSE);
10627 }
10628
10629
10630 static const value_string gsm_map_Ext_SS_InfoFor_CSE_vals[] = {
10631   {   0, "forwardingInfoFor-CSE" },
10632   {   1, "callBarringInfoFor-CSE" },
10633   { 0, NULL }
10634 };
10635
10636 static const ber_choice_t Ext_SS_InfoFor_CSE_choice[] = {
10637   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfoFor_CSE_impl },
10638   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfoFor_CSE_impl },
10639   { 0, 0, 0, 0, NULL }
10640 };
10641
10642 static int
10643 dissect_gsm_map_Ext_SS_InfoFor_CSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10644   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
10645                               Ext_SS_InfoFor_CSE_choice, hf_index, ett_gsm_map_Ext_SS_InfoFor_CSE, NULL);
10646
10647   return offset;
10648 }
10649 static int dissect_ss_InfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10650   return dissect_gsm_map_Ext_SS_InfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_InfoFor_CSE);
10651 }
10652
10653 static const ber_sequence_t AnyTimeModificationRes_sequence[] = {
10654   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_InfoFor_CSE_impl },
10655   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
10656   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10657   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
10658   { 0, 0, 0, NULL }
10659 };
10660
10661 static int
10662 dissect_gsm_map_AnyTimeModificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10663   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10664                                 AnyTimeModificationRes_sequence, hf_index, ett_gsm_map_AnyTimeModificationRes);
10665
10666   return offset;
10667 }
10668
10669 static const ber_sequence_t NoteSubscriberDataModifiedArg_sequence[] = {
10670   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
10671   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
10672   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInfoFor_CSE_impl },
10673   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringInfoFor_CSE_impl },
10674   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
10675   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
10676   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allInformationSent },
10677   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10678   { 0, 0, 0, NULL }
10679 };
10680
10681 static int
10682 dissect_gsm_map_NoteSubscriberDataModifiedArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10683   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10684                                 NoteSubscriberDataModifiedArg_sequence, hf_index, ett_gsm_map_NoteSubscriberDataModifiedArg);
10685
10686   return offset;
10687 }
10688
10689 static const ber_sequence_t NoteSubscriberDataModifiedRes_sequence[] = {
10690   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10691   { 0, 0, 0, NULL }
10692 };
10693
10694 static int
10695 dissect_gsm_map_NoteSubscriberDataModifiedRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10696   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10697                                 NoteSubscriberDataModifiedRes_sequence, hf_index, ett_gsm_map_NoteSubscriberDataModifiedRes);
10698
10699   return offset;
10700 }
10701
10702 static const ber_sequence_t NoteMM_EventArg_sequence[] = {
10703   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
10704   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventMet_impl },
10705   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10706   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10707   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
10708   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCAMELPhases_impl },
10709   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10710   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_locationInformationGPRS },
10711   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_offeredCamel4Functionalities },
10712   { 0, 0, 0, NULL }
10713 };
10714
10715 static int
10716 dissect_gsm_map_NoteMM_EventArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10717   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10718                                 NoteMM_EventArg_sequence, hf_index, ett_gsm_map_NoteMM_EventArg);
10719
10720   return offset;
10721 }
10722
10723 static const ber_sequence_t NoteMM_EventRes_sequence[] = {
10724   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10725   { 0, 0, 0, NULL }
10726 };
10727
10728 static int
10729 dissect_gsm_map_NoteMM_EventRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10730   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10731                                 NoteMM_EventRes_sequence, hf_index, ett_gsm_map_NoteMM_EventRes);
10732
10733   return offset;
10734 }
10735
10736
10737 static const value_string gsm_map_ModifyNotificationToCSE_vals[] = {
10738   {   0, "deactivate" },
10739   {   1, "activate" },
10740   { 0, NULL }
10741 };
10742
10743
10744 static int
10745 dissect_gsm_map_ModifyNotificationToCSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10746   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10747                                   NULL);
10748
10749   return offset;
10750 }
10751
10752
10753
10754 static int
10755 dissect_gsm_map_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10756   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10757                                        NULL);
10758
10759   return offset;
10760 }
10761 static int dissect_ss_Event_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10762   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Event);
10763 }
10764
10765 static const ber_sequence_t T_ss_EventSpecification_sequence_of[1] = {
10766   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventSpecification_item },
10767 };
10768
10769 static int
10770 dissect_gsm_map_T_ss_EventSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10771   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
10772                                    T_ss_EventSpecification_sequence_of, hf_index, ett_gsm_map_T_ss_EventSpecification);
10773
10774   return offset;
10775 }
10776 static int dissect_ss_EventSpecification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10777   return dissect_gsm_map_T_ss_EventSpecification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification);
10778 }
10779
10780 static const ber_sequence_t Ss_InvocationNotificationArg_sequence[] = {
10781   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10782   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10783   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ss_Event_impl },
10784   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_EventSpecification_impl },
10785   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10786   { 0, 0, 0, NULL }
10787 };
10788
10789 static int
10790 dissect_gsm_map_Ss_InvocationNotificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10791   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10792                                 Ss_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationArg);
10793
10794   return offset;
10795 }
10796
10797 static const ber_sequence_t Ss_InvocationNotificationRes_sequence[] = {
10798   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10799   { 0, 0, 0, NULL }
10800 };
10801
10802 static int
10803 dissect_gsm_map_Ss_InvocationNotificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10804   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10805                                 Ss_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationRes);
10806
10807   return offset;
10808 }
10809
10810
10811
10812 static int
10813 dissect_gsm_map_CODEC_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10814   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10815                                        NULL);
10816
10817   return offset;
10818 }
10819 static int dissect_codec_Info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10820   return dissect_gsm_map_CODEC_Info(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_codec_Info);
10821 }
10822
10823
10824
10825 static int
10826 dissect_gsm_map_CipheringAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10827   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10828                                        NULL);
10829
10830   return offset;
10831 }
10832 static int dissect_cipheringAlgorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10833   return dissect_gsm_map_CipheringAlgorithm(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cipheringAlgorithm);
10834 }
10835
10836
10837
10838 static int
10839 dissect_gsm_map_GroupKeyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10840   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10841                                   NULL);
10842
10843   return offset;
10844 }
10845 static int dissect_groupKeyNumber_Vk_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10846   return dissect_gsm_map_GroupKeyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKeyNumber_Vk_Id);
10847 }
10848
10849
10850
10851 static int
10852 dissect_gsm_map_VSTK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10853   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10854                                        NULL);
10855
10856   return offset;
10857 }
10858 static int dissect_vstk_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10859   return dissect_gsm_map_VSTK(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vstk);
10860 }
10861
10862
10863
10864 static int
10865 dissect_gsm_map_VSTK_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10866   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10867                                        NULL);
10868
10869   return offset;
10870 }
10871 static int dissect_vstk_rand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10872   return dissect_gsm_map_VSTK_RAND(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vstk_rand);
10873 }
10874
10875 static const ber_sequence_t PrepareGroupCallArg_sequence[] = {
10876   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_teleservice },
10877   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_asciCallReference },
10878   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_codec_Info },
10879   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cipheringAlgorithm },
10880   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKeyNumber_Vk_Id_impl },
10881   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKey_impl },
10882   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
10883   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkFree_impl },
10884   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10885   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vstk_impl },
10886   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vstk_rand_impl },
10887   { 0, 0, 0, NULL }
10888 };
10889
10890 static int
10891 dissect_gsm_map_PrepareGroupCallArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10892   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10893                                 PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_PrepareGroupCallArg);
10894
10895   return offset;
10896 }
10897
10898 static const ber_sequence_t PrepareGroupCallRes_sequence[] = {
10899   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupCallNumber },
10900   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10901   { 0, 0, 0, NULL }
10902 };
10903
10904 static int
10905 dissect_gsm_map_PrepareGroupCallRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10906   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10907                                 PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_PrepareGroupCallRes);
10908
10909   return offset;
10910 }
10911
10912 static const ber_sequence_t SendGroupCallEndSignalArg_sequence[] = {
10913   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
10914   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10915   { 0, 0, 0, NULL }
10916 };
10917
10918 static int
10919 dissect_gsm_map_SendGroupCallEndSignalArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10920   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10921                                 SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalArg);
10922
10923   return offset;
10924 }
10925
10926 static const ber_sequence_t SendGroupCallEndSignalRes_sequence[] = {
10927   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10928   { 0, 0, 0, NULL }
10929 };
10930
10931 static int
10932 dissect_gsm_map_SendGroupCallEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10933   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10934                                 SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalRes);
10935
10936   return offset;
10937 }
10938
10939 static const ber_sequence_t ProcessGroupCallSignallingArg_sequence[] = {
10940   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequest_impl },
10941   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
10942   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseGroupCall_impl },
10943   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10944   { 0, 0, 0, NULL }
10945 };
10946
10947 static int
10948 dissect_gsm_map_ProcessGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10949   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10950                                 ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ProcessGroupCallSignallingArg);
10951
10952   return offset;
10953 }
10954
10955 static const ber_sequence_t ForwardGroupCallSignallingArg_sequence[] = {
10956   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
10957   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequestAck_impl },
10958   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
10959   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRejectCommand_impl },
10960   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkSeizedCommand_impl },
10961   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseCommand_impl },
10962   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10963   { 0, 0, 0, NULL }
10964 };
10965
10966 static int
10967 dissect_gsm_map_ForwardGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10968   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10969                                 ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ForwardGroupCallSignallingArg);
10970
10971   return offset;
10972 }
10973
10974 static const ber_sequence_t SGSN_Capability_sequence[] = {
10975   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_solsaSupportIndicator },
10976   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10977   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_superChargerSupportedInServingNetworkEntity_impl },
10978   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsEnhancementsSupportIndicator_impl },
10979   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
10980   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
10981   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
10982   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_smsCallBarringSupportIndicator_impl },
10983   { 0, 0, 0, NULL }
10984 };
10985
10986 static int
10987 dissect_gsm_map_SGSN_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10988   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10989                                 SGSN_Capability_sequence, hf_index, ett_gsm_map_SGSN_Capability);
10990
10991   return offset;
10992 }
10993 static int dissect_sgsn_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10994   return dissect_gsm_map_SGSN_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Capability);
10995 }
10996
10997 static const ber_sequence_t UpdateGprsLocationArg_sequence[] = {
10998   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
10999   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Number },
11000   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Address },
11001   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11002   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Capability_impl },
11003   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
11004   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ps_LCS_NotSupportedByUE_impl },
11005   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
11006   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
11007   { 0, 0, 0, NULL }
11008 };
11009
11010 static int
11011 dissect_gsm_map_UpdateGprsLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11012   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11013                                 UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_UpdateGprsLocationArg);
11014
11015   return offset;
11016 }
11017
11018 static const ber_sequence_t UpdateGprsLocationRes_sequence[] = {
11019   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
11020   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11021   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_add_Capability },
11022   { 0, 0, 0, NULL }
11023 };
11024
11025 static int
11026 dissect_gsm_map_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11027   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11028                                 UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_UpdateGprsLocationRes);
11029
11030   return offset;
11031 }
11032
11033 static const ber_sequence_t SendRoutingInfoForGprsArg_sequence[] = {
11034   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11035   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
11036   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
11037   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11038   { 0, 0, 0, NULL }
11039 };
11040
11041 static int
11042 dissect_gsm_map_SendRoutingInfoForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11043   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11044                                 SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsArg);
11045
11046   return offset;
11047 }
11048
11049 static const ber_sequence_t SendRoutingInfoForGprsRes_sequence[] = {
11050   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
11051   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
11052   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mobileNotReachableReason_impl },
11053   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11054   { 0, 0, 0, NULL }
11055 };
11056
11057 static int
11058 dissect_gsm_map_SendRoutingInfoForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11059   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11060                                 SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsRes);
11061
11062   return offset;
11063 }
11064
11065 static const ber_sequence_t FailureReportArg_sequence[] = {
11066   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11067   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
11068   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
11069   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11070   { 0, 0, 0, NULL }
11071 };
11072
11073 static int
11074 dissect_gsm_map_FailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11075   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11076                                 FailureReportArg_sequence, hf_index, ett_gsm_map_FailureReportArg);
11077
11078   return offset;
11079 }
11080
11081 static const ber_sequence_t FailureReportRes_sequence[] = {
11082   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
11083   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11084   { 0, 0, 0, NULL }
11085 };
11086
11087 static int
11088 dissect_gsm_map_FailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11089   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11090                                 FailureReportRes_sequence, hf_index, ett_gsm_map_FailureReportRes);
11091
11092   return offset;
11093 }
11094
11095 static const ber_sequence_t NoteMsPresentForGprsArg_sequence[] = {
11096   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11097   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
11098   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
11099   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11100   { 0, 0, 0, NULL }
11101 };
11102
11103 static int
11104 dissect_gsm_map_NoteMsPresentForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11105   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11106                                 NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsArg);
11107
11108   return offset;
11109 }
11110
11111 static const ber_sequence_t NoteMsPresentForGprsRes_sequence[] = {
11112   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11113   { 0, 0, 0, NULL }
11114 };
11115
11116 static int
11117 dissect_gsm_map_NoteMsPresentForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11118   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11119                                 NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsRes);
11120
11121   return offset;
11122 }
11123
11124
11125 static const value_string gsm_map_LocationEstimateType_vals[] = {
11126   {   0, "currentLocation" },
11127   {   1, "currentOrLastKnownLocation" },
11128   {   2, "initialLocation" },
11129   {   3, "activateDeferredLocation" },
11130   {   4, "cancelDeferredLocation" },
11131   { 0, NULL }
11132 };
11133
11134
11135 static int
11136 dissect_gsm_map_LocationEstimateType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11137   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11138                                   NULL);
11139
11140   return offset;
11141 }
11142 static int dissect_locationEstimateType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11143   return dissect_gsm_map_LocationEstimateType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
11144 }
11145
11146 static const asn_namedbit DeferredLocationEventType_bits[] = {
11147   {  0, &hf_gsm_map_DeferredLocationEventType_msAvailable, -1, -1, "msAvailable", NULL },
11148   {  1, &hf_gsm_map_DeferredLocationEventType_enteringIntoArea, -1, -1, "enteringIntoArea", NULL },
11149   {  2, &hf_gsm_map_DeferredLocationEventType_leavingFromArea, -1, -1, "leavingFromArea", NULL },
11150   {  3, &hf_gsm_map_DeferredLocationEventType_beingInsideArea, -1, -1, "beingInsideArea", NULL },
11151   { 0, NULL, 0, 0, NULL, NULL }
11152 };
11153
11154 static int
11155 dissect_gsm_map_DeferredLocationEventType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11156   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
11157                                  DeferredLocationEventType_bits, hf_index, ett_gsm_map_DeferredLocationEventType,
11158                                  NULL);
11159
11160   return offset;
11161 }
11162 static int dissect_deferredLocationEventType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11163   return dissect_gsm_map_DeferredLocationEventType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
11164 }
11165
11166 static const ber_sequence_t LocationType_sequence[] = {
11167   { BER_CLASS_CON, 0, 0, dissect_locationEstimateType },
11168   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_deferredLocationEventType },
11169   { 0, 0, 0, NULL }
11170 };
11171
11172 static int
11173 dissect_gsm_map_LocationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11174   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11175                                 LocationType_sequence, hf_index, ett_gsm_map_LocationType);
11176
11177   return offset;
11178 }
11179 static int dissect_locationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11180   return dissect_gsm_map_LocationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationType);
11181 }
11182
11183
11184 static const value_string gsm_map_LCSClientType_vals[] = {
11185   {   0, "emergencyServices" },
11186   {   1, "valueAddedServices" },
11187   {   2, "plmnOperatorServices" },
11188   {   3, "lawfulInterceptServices" },
11189   { 0, NULL }
11190 };
11191
11192
11193 static int
11194 dissect_gsm_map_LCSClientType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11195   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11196                                   NULL);
11197
11198   return offset;
11199 }
11200 static int dissect_lcsClientType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11201   return dissect_gsm_map_LCSClientType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientType);
11202 }
11203
11204
11205 static int
11206 dissect_gsm_map_NameString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11207   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
11208
11209   return offset;
11210 }
11211 static int dissect_nameString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11212   return dissect_gsm_map_NameString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nameString);
11213 }
11214
11215
11216 static const value_string gsm_map_LCS_FormatIndicator_vals[] = {
11217   {   0, "logicalName" },
11218   {   1, "e-mailAddress" },
11219   {   2, "msisdn" },
11220   {   3, "url" },
11221   {   4, "sipUrl" },
11222   { 0, NULL }
11223 };
11224
11225
11226 static int
11227 dissect_gsm_map_LCS_FormatIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11228   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11229                                   NULL);
11230
11231   return offset;
11232 }
11233 static int dissect_lcs_FormatIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11234   return dissect_gsm_map_LCS_FormatIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_FormatIndicator);
11235 }
11236
11237 static const ber_sequence_t LCSClientName_sequence[] = {
11238   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
11239   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
11240   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_FormatIndicator_impl },
11241   { 0, 0, 0, NULL }
11242 };
11243
11244 static int
11245 dissect_gsm_map_LCSClientName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11246   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11247                                 LCSClientName_sequence, hf_index, ett_gsm_map_LCSClientName);
11248
11249   return offset;
11250 }
11251 static int dissect_lcsClientName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11252   return dissect_gsm_map_LCSClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientName);
11253 }
11254
11255
11256 static int
11257 dissect_gsm_map_RequestorIDString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11258   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
11259
11260   return offset;
11261 }
11262 static int dissect_requestorIDString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11263   return dissect_gsm_map_RequestorIDString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestorIDString);
11264 }
11265
11266 static const ber_sequence_t LCSRequestorID_sequence[] = {
11267   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
11268   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestorIDString_impl },
11269   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_FormatIndicator_impl },
11270   { 0, 0, 0, NULL }
11271 };
11272
11273 static int
11274 dissect_gsm_map_LCSRequestorID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11275   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11276                                 LCSRequestorID_sequence, hf_index, ett_gsm_map_LCSRequestorID);
11277
11278   return offset;
11279 }
11280 static int dissect_lcsRequestorID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11281   return dissect_gsm_map_LCSRequestorID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsRequestorID);
11282 }
11283
11284 static const ber_sequence_t LCS_ClientID_sequence[] = {
11285   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lcsClientType_impl },
11286   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
11287   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientDialedByMS_impl },
11288   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientInternalID_impl },
11289   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
11290   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsAPN_impl },
11291   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsRequestorID_impl },
11292   { 0, 0, 0, NULL }
11293 };
11294
11295 static int
11296 dissect_gsm_map_LCS_ClientID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11297   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11298                                 LCS_ClientID_sequence, hf_index, ett_gsm_map_LCS_ClientID);
11299
11300   return offset;
11301 }
11302 static int dissect_lcs_ClientID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11303   return dissect_gsm_map_LCS_ClientID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
11304 }
11305 static int dissect_lcs_ClientID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11306   return dissect_gsm_map_LCS_ClientID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
11307 }
11308
11309
11310
11311 static int
11312 dissect_gsm_map_LCS_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11313   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11314                                        NULL);
11315
11316   return offset;
11317 }
11318 static int dissect_lcs_Priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11319   return dissect_gsm_map_LCS_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Priority);
11320 }
11321
11322
11323
11324 static int
11325 dissect_gsm_map_Horizontal_Accuracy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11326   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11327                                        NULL);
11328
11329   return offset;
11330 }
11331 static int dissect_horizontal_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11332   return dissect_gsm_map_Horizontal_Accuracy(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_horizontal_accuracy);
11333 }
11334
11335
11336
11337 static int
11338 dissect_gsm_map_Vertical_Accuracy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11339   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11340                                        NULL);
11341
11342   return offset;
11343 }
11344 static int dissect_vertical_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11345   return dissect_gsm_map_Vertical_Accuracy(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vertical_accuracy);
11346 }
11347
11348
11349 static const value_string gsm_map_ResponseTimeCategory_vals[] = {
11350   {   0, "lowdelay" },
11351   {   1, "delaytolerant" },
11352   { 0, NULL }
11353 };
11354
11355
11356 static int
11357 dissect_gsm_map_ResponseTimeCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11358   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11359                                   NULL);
11360
11361   return offset;
11362 }
11363 static int dissect_responseTimeCategory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11364   return dissect_gsm_map_ResponseTimeCategory(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_responseTimeCategory);
11365 }
11366
11367 static const ber_sequence_t ResponseTime_sequence[] = {
11368   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_responseTimeCategory },
11369   { 0, 0, 0, NULL }
11370 };
11371
11372 static int
11373 dissect_gsm_map_ResponseTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11374   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11375                                 ResponseTime_sequence, hf_index, ett_gsm_map_ResponseTime);
11376
11377   return offset;
11378 }
11379 static int dissect_responseTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11380   return dissect_gsm_map_ResponseTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_responseTime);
11381 }
11382
11383 static const ber_sequence_t LCS_QoS_sequence[] = {
11384   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_horizontal_accuracy_impl },
11385   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verticalCoordinateRequest_impl },
11386   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vertical_accuracy_impl },
11387   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_responseTime_impl },
11388   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11389   { 0, 0, 0, NULL }
11390 };
11391
11392 static int
11393 dissect_gsm_map_LCS_QoS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11394   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11395                                 LCS_QoS_sequence, hf_index, ett_gsm_map_LCS_QoS);
11396
11397   return offset;
11398 }
11399 static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11400   return dissect_gsm_map_LCS_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_QoS);
11401 }
11402
11403 static const asn_namedbit SupportedGADShapes_bits[] = {
11404   {  0, &hf_gsm_map_SupportedGADShapes_ellipsoidPoint, -1, -1, "ellipsoidPoint", NULL },
11405   {  1, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, -1, -1, "ellipsoidPointWithUncertaintyCircle", NULL },
11406   {  2, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse, -1, -1, "ellipsoidPointWithUncertaintyEllipse", NULL },
11407   {  3, &hf_gsm_map_SupportedGADShapes_polygon, -1, -1, "polygon", NULL },
11408   {  4, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude, -1, -1, "ellipsoidPointWithAltitude", NULL },
11409   {  5, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid, -1, -1, "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", NULL },
11410   {  6, &hf_gsm_map_SupportedGADShapes_ellipsoidArc, -1, -1, "ellipsoidArc", NULL },
11411   { 0, NULL, 0, 0, NULL, NULL }
11412 };
11413
11414 static int
11415 dissect_gsm_map_SupportedGADShapes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11416   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
11417                                  SupportedGADShapes_bits, hf_index, ett_gsm_map_SupportedGADShapes,
11418                                  NULL);
11419
11420   return offset;
11421 }
11422 static int dissect_supportedGADShapes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11423   return dissect_gsm_map_SupportedGADShapes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedGADShapes);
11424 }
11425
11426
11427
11428 static int
11429 dissect_gsm_map_LCS_ReferenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11430   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11431                                        NULL);
11432
11433   return offset;
11434 }
11435 static int dissect_lcs_ReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11436   return dissect_gsm_map_LCS_ReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ReferenceNumber);
11437 }
11438
11439
11440 static int
11441 dissect_gsm_map_LCSCodewordString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11442   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
11443
11444   return offset;
11445 }
11446 static int dissect_lcsCodewordString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11447   return dissect_gsm_map_LCSCodewordString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsCodewordString);
11448 }
11449
11450 static const ber_sequence_t LCSCodeword_sequence[] = {
11451   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
11452   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lcsCodewordString_impl },
11453   { 0, 0, 0, NULL }
11454 };
11455
11456 static int
11457 dissect_gsm_map_LCSCodeword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11458   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11459                                 LCSCodeword_sequence, hf_index, ett_gsm_map_LCSCodeword);
11460
11461   return offset;
11462 }
11463 static int dissect_lcsCodeword_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11464   return dissect_gsm_map_LCSCodeword(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsCodeword);
11465 }
11466
11467
11468 static const value_string gsm_map_PrivacyCheckRelatedAction_vals[] = {
11469   {   0, "allowedWithoutNotification" },
11470   {   1, "allowedWithNotification" },
11471   {   2, "allowedIfNoResponse" },
11472   {   3, "restrictedIfNoResponse" },
11473   {   4, "notAllowed" },
11474   { 0, NULL }
11475 };
11476
11477
11478 static int
11479 dissect_gsm_map_PrivacyCheckRelatedAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11480   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11481                                   NULL);
11482
11483   return offset;
11484 }
11485 static int dissect_callSessionUnrelated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11486   return dissect_gsm_map_PrivacyCheckRelatedAction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callSessionUnrelated);
11487 }
11488 static int dissect_callSessionRelated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11489   return dissect_gsm_map_PrivacyCheckRelatedAction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callSessionRelated);
11490 }
11491
11492 static const ber_sequence_t LCS_PrivacyCheck_sequence[] = {
11493   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_callSessionUnrelated_impl },
11494   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callSessionRelated_impl },
11495   { 0, 0, 0, NULL }
11496 };
11497
11498 static int
11499 dissect_gsm_map_LCS_PrivacyCheck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11500   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11501                                 LCS_PrivacyCheck_sequence, hf_index, ett_gsm_map_LCS_PrivacyCheck);
11502
11503   return offset;
11504 }
11505 static int dissect_lcs_PrivacyCheck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11506   return dissect_gsm_map_LCS_PrivacyCheck(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyCheck);
11507 }
11508
11509
11510 static const value_string gsm_map_AreaType_vals[] = {
11511   {   0, "countryCode" },
11512   {   1, "plmnId" },
11513   {   2, "locationAreaId" },
11514   {   3, "routingAreaId" },
11515   {   4, "cellGlobalId" },
11516   { 0, NULL }
11517 };
11518
11519
11520 static int
11521 dissect_gsm_map_AreaType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11522   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11523                                   NULL);
11524
11525   return offset;
11526 }
11527 static int dissect_areaType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11528   return dissect_gsm_map_AreaType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaType);
11529 }
11530
11531
11532
11533 static int
11534 dissect_gsm_map_AreaIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11535   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11536                                        NULL);
11537
11538   return offset;
11539 }
11540 static int dissect_areaIdentification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11541   return dissect_gsm_map_AreaIdentification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaIdentification);
11542 }
11543
11544 static const ber_sequence_t Area_sequence[] = {
11545   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaType_impl },
11546   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_areaIdentification_impl },
11547   { 0, 0, 0, NULL }
11548 };
11549
11550 static int
11551 dissect_gsm_map_Area(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11552   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11553                                 Area_sequence, hf_index, ett_gsm_map_Area);
11554
11555   return offset;
11556 }
11557 static int dissect_AreaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11558   return dissect_gsm_map_Area(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_AreaList_item);
11559 }
11560
11561 static const ber_sequence_t AreaList_sequence_of[1] = {
11562   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_AreaList_item },
11563 };
11564
11565 static int
11566 dissect_gsm_map_AreaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11567   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
11568                                    AreaList_sequence_of, hf_index, ett_gsm_map_AreaList);
11569
11570   return offset;
11571 }
11572 static int dissect_areaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11573   return dissect_gsm_map_AreaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaList);
11574 }
11575
11576 static const ber_sequence_t AreaDefinition_sequence[] = {
11577   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaList_impl },
11578   { 0, 0, 0, NULL }
11579 };
11580
11581 static int
11582 dissect_gsm_map_AreaDefinition(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11583   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11584                                 AreaDefinition_sequence, hf_index, ett_gsm_map_AreaDefinition);
11585
11586   return offset;
11587 }
11588 static int dissect_areaDefinition_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11589   return dissect_gsm_map_AreaDefinition(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaDefinition);
11590 }
11591
11592
11593 static const value_string gsm_map_OccurrenceInfo_vals[] = {
11594   {   0, "oneTimeEvent" },
11595   {   1, "multipleTimeEvent" },
11596   { 0, NULL }
11597 };
11598
11599
11600 static int
11601 dissect_gsm_map_OccurrenceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11602   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11603                                   NULL);
11604
11605   return offset;
11606 }
11607 static int dissect_occurrenceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11608   return dissect_gsm_map_OccurrenceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_occurrenceInfo);
11609 }
11610
11611
11612
11613 static int
11614 dissect_gsm_map_IntervalTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11615   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11616                                   NULL);
11617
11618   return offset;
11619 }
11620 static int dissect_intervalTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11621   return dissect_gsm_map_IntervalTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_intervalTime);
11622 }
11623
11624 static const ber_sequence_t AreaEventInfo_sequence[] = {
11625   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaDefinition_impl },
11626   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_occurrenceInfo_impl },
11627   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_intervalTime_impl },
11628   { 0, 0, 0, NULL }
11629 };
11630
11631 static int
11632 dissect_gsm_map_AreaEventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11633   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11634                                 AreaEventInfo_sequence, hf_index, ett_gsm_map_AreaEventInfo);
11635
11636   return offset;
11637 }
11638 static int dissect_areaEventInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11639   return dissect_gsm_map_AreaEventInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaEventInfo);
11640 }
11641
11642 static const ber_sequence_t ProvideSubscriberLocation_Arg_sequence[] = {
11643   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_locationType },
11644   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_mlc_Number },
11645   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ClientID_impl },
11646   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privacyOverride_impl },
11647   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11648   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11649   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
11650   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
11651   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_Priority_impl },
11652   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
11653   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11654   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedGADShapes_impl },
11655   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ReferenceNumber_impl },
11656   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
11657   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsCodeword_impl },
11658   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyCheck_impl },
11659   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_areaEventInfo_impl },
11660   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h_gmlc_Address_impl },
11661   { 0, 0, 0, NULL }
11662 };
11663
11664 static int
11665 dissect_gsm_map_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11666   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11667                                 ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Arg);
11668
11669   return offset;
11670 }
11671
11672
11673
11674 static int
11675 dissect_gsm_map_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11676   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11677                                        NULL);
11678
11679   return offset;
11680 }
11681 static int dissect_locationEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11682   return dissect_gsm_map_Ext_GeographicalInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
11683 }
11684 static int dissect_locationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11685   return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
11686 }
11687
11688
11689
11690 static int
11691 dissect_gsm_map_Add_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11692   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11693                                        NULL);
11694
11695   return offset;
11696 }
11697 static int dissect_add_LocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11698   return dissect_gsm_map_Add_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_LocationEstimate);
11699 }
11700
11701
11702
11703 static int
11704 dissect_gsm_map_PositioningDataInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11705   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11706                                        NULL);
11707
11708   return offset;
11709 }
11710 static int dissect_geranPositioningData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11711   return dissect_gsm_map_PositioningDataInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranPositioningData);
11712 }
11713
11714
11715
11716 static int
11717 dissect_gsm_map_UtranPositioningDataInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11718   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11719                                        NULL);
11720
11721   return offset;
11722 }
11723 static int dissect_utranPositioningData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11724   return dissect_gsm_map_UtranPositioningDataInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranPositioningData);
11725 }
11726
11727 static const ber_sequence_t ProvideSubscriberLocation_Res_sequence[] = {
11728   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_locationEstimate },
11729   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
11730   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11731   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
11732   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredmt_lrResponseIndicator_impl },
11733   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranPositioningData_impl },
11734   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranPositioningData_impl },
11735   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellIdOrSai_impl },
11736   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
11737   { 0, 0, 0, NULL }
11738 };
11739
11740 static int
11741 dissect_gsm_map_ProvideSubscriberLocation_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11742   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11743                                 ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Res);
11744
11745   return offset;
11746 }
11747
11748
11749 static const value_string gsm_map_TargetMS_vals[] = {
11750   {   0, "imsi" },
11751   {   1, "msisdn" },
11752   { 0, NULL }
11753 };
11754
11755 static const ber_choice_t TargetMS_choice[] = {
11756   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11757   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11758   { 0, 0, 0, 0, NULL }
11759 };
11760
11761 static int
11762 dissect_gsm_map_TargetMS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11763   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
11764                               TargetMS_choice, hf_index, ett_gsm_map_TargetMS, NULL);
11765
11766   return offset;
11767 }
11768
11769 static const ber_sequence_t RoutingInfoForLCS_Arg_sequence[] = {
11770   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mlcNumber_impl },
11771   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_targetMS_impl },
11772   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11773   { 0, 0, 0, NULL }
11774 };
11775
11776 static int
11777 dissect_gsm_map_RoutingInfoForLCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11778   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11779                                 RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Arg);
11780
11781   return offset;
11782 }
11783
11784 static const ber_sequence_t LCSLocationInfo_sequence[] = {
11785   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_networkNode_Number },
11786   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
11787   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11788   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
11789   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_additional_Number_impl },
11790   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
11791   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additional_LCS_CapabilitySets_impl },
11792   { 0, 0, 0, NULL }
11793 };
11794
11795 static int
11796 dissect_gsm_map_LCSLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11797   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11798                                 LCSLocationInfo_sequence, hf_index, ett_gsm_map_LCSLocationInfo);
11799
11800   return offset;
11801 }
11802 static int dissect_lcsLocationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11803   return dissect_gsm_map_LCSLocationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
11804 }
11805 static int dissect_lcsLocationInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11806   return dissect_gsm_map_LCSLocationInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
11807 }
11808
11809 static const ber_sequence_t RoutingInfoForLCS_Res_sequence[] = {
11810   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
11811   { BER_CLASS_CON, 1, 0, dissect_lcsLocationInfo },
11812   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
11813   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_v_gmlc_Address },
11814   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_h_gmlc_Address },
11815   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_ppr_Address },
11816   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_additional_v_gmlc_Address },
11817   { 0, 0, 0, NULL }
11818 };
11819
11820 static int
11821 dissect_gsm_map_RoutingInfoForLCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11822   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11823                                 RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Res);
11824
11825   return offset;
11826 }
11827
11828
11829 static const value_string gsm_map_LCS_Event_vals[] = {
11830   {   0, "emergencyCallOrigination" },
11831   {   1, "emergencyCallRelease" },
11832   {   2, "mo-lr" },
11833   {   3, "deferredmt-lrResponse" },
11834   { 0, NULL }
11835 };
11836
11837
11838 static int
11839 dissect_gsm_map_LCS_Event(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11840   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11841                                   NULL);
11842
11843   return offset;
11844 }
11845 static int dissect_lcs_Event(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11846   return dissect_gsm_map_LCS_Event(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Event);
11847 }
11848
11849
11850 static const value_string gsm_map_TerminationCause_vals[] = {
11851   {   0, "normal" },
11852   {   1, "errorundefined" },
11853   {   2, "internalTimeout" },
11854   {   3, "congestion" },
11855   {   4, "mt-lrRestart" },
11856   {   5, "privacyViolation" },
11857   {   6, "shapeOfLocationEstimateNotSupported" },
11858   { 0, NULL }
11859 };
11860
11861
11862 static int
11863 dissect_gsm_map_TerminationCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11864   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11865                                   NULL);
11866
11867   return offset;
11868 }
11869 static int dissect_terminationCause_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11870   return dissect_gsm_map_TerminationCause(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_terminationCause);
11871 }
11872
11873 static const ber_sequence_t Deferredmt_lrData_sequence[] = {
11874   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_deferredLocationEventType },
11875   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationCause_impl },
11876   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsLocationInfo_impl },
11877   { 0, 0, 0, NULL }
11878 };
11879
11880 static int
11881 dissect_gsm_map_Deferredmt_lrData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11882   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11883                                 Deferredmt_lrData_sequence, hf_index, ett_gsm_map_Deferredmt_lrData);
11884
11885   return offset;
11886 }
11887 static int dissect_deferredmt_lrData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11888   return dissect_gsm_map_Deferredmt_lrData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredmt_lrData);
11889 }
11890
11891 static const ber_sequence_t SubscriberLocationReport_Arg_sequence[] = {
11892   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_lcs_Event },
11893   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_ClientID },
11894   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcsLocationInfo },
11895   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11896   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11897   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
11898   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
11899   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
11900   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
11901   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
11902   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_slr_ArgExtensionContainer_impl },
11903   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
11904   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredmt_lrData_impl },
11905   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ReferenceNumber_impl },
11906   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranPositioningData_impl },
11907   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranPositioningData_impl },
11908   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellIdOrSai_impl },
11909   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h_gmlc_Address_impl },
11910   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
11911   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
11912   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pseudonymIndicator_impl },
11913   { 0, 0, 0, NULL }
11914 };
11915
11916 static int
11917 dissect_gsm_map_SubscriberLocationReport_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11918   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11919                                 SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Arg);
11920
11921   return offset;
11922 }
11923
11924 static const ber_sequence_t SubscriberLocationReport_Res_sequence[] = {
11925   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11926   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
11927   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
11928   { 0, 0, 0, NULL }
11929 };
11930
11931 static int
11932 dissect_gsm_map_SubscriberLocationReport_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11933   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11934                                 SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Res);
11935
11936   return offset;
11937 }
11938
11939
11940
11941 static int
11942 dissect_gsm_map_SecurityParametersIndex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11943   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11944                                        NULL);
11945
11946   return offset;
11947 }
11948 static int dissect_securityParametersIndex(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11949   return dissect_gsm_map_SecurityParametersIndex(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_securityParametersIndex);
11950 }
11951
11952
11953
11954 static int
11955 dissect_gsm_map_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11956   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11957                                   NULL);
11958
11959   return offset;
11960 }
11961 static int dissect_localValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11962   return dissect_gsm_map_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue);
11963 }
11964
11965
11966 static const value_string gsm_map_OperationCode_vals[] = {
11967   {   0, "localValue" },
11968   {   1, "globalValue" },
11969   { 0, NULL }
11970 };
11971
11972 static const ber_choice_t OperationCode_choice[] = {
11973   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue },
11974   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
11975   { 0, 0, 0, 0, NULL }
11976 };
11977
11978 static int
11979 dissect_gsm_map_OperationCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11980   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
11981                               OperationCode_choice, hf_index, ett_gsm_map_OperationCode, NULL);
11982
11983   return offset;
11984 }
11985 static int dissect_operationCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11986   return dissect_gsm_map_OperationCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_operationCode);
11987 }
11988
11989
11990 static const value_string gsm_map_ErrorCode_vals[] = {
11991   {   0, "localValue" },
11992   {   1, "globalValue" },
11993   { 0, NULL }
11994 };
11995
11996 static const ber_choice_t ErrorCode_choice[] = {
11997   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue },
11998   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
11999   { 0, 0, 0, 0, NULL }
12000 };
12001
12002 static int
12003 dissect_gsm_map_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12004   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
12005                               ErrorCode_choice, hf_index, ett_gsm_map_ErrorCode, NULL);
12006
12007   return offset;
12008 }
12009 static int dissect_errorCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12010   return dissect_gsm_map_ErrorCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_errorCode);
12011 }
12012
12013
12014 static const value_string gsm_map_OriginalComponentIdentifier_vals[] = {
12015   {   0, "operationCode" },
12016   {   1, "errorCode" },
12017   {   2, "userInfo" },
12018   { 0, NULL }
12019 };
12020
12021 static const ber_choice_t OriginalComponentIdentifier_choice[] = {
12022   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_operationCode_impl },
12023   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_errorCode_impl },
12024   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_userInfo_impl },
12025   { 0, 0, 0, 0, NULL }
12026 };
12027
12028 static int
12029 dissect_gsm_map_OriginalComponentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12030   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
12031                               OriginalComponentIdentifier_choice, hf_index, ett_gsm_map_OriginalComponentIdentifier, NULL);
12032
12033   return offset;
12034 }
12035 static int dissect_originalComponentIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12036   return dissect_gsm_map_OriginalComponentIdentifier(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_originalComponentIdentifier);
12037 }
12038
12039
12040
12041 static int
12042 dissect_gsm_map_InitialisationVector(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12043   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12044                                        NULL);
12045
12046   return offset;
12047 }
12048 static int dissect_initialisationVector(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12049   return dissect_gsm_map_InitialisationVector(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_initialisationVector);
12050 }
12051
12052 static const ber_sequence_t SecurityHeader_sequence[] = {
12053   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_securityParametersIndex },
12054   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_originalComponentIdentifier },
12055   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_initialisationVector },
12056   { 0, 0, 0, NULL }
12057 };
12058
12059 static int
12060 dissect_gsm_map_SecurityHeader(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12061   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12062                                 SecurityHeader_sequence, hf_index, ett_gsm_map_SecurityHeader);
12063
12064   return offset;
12065 }
12066 static int dissect_securityHeader(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12067   return dissect_gsm_map_SecurityHeader(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_securityHeader);
12068 }
12069
12070
12071
12072 static int
12073 dissect_gsm_map_ProtectedPayload(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12074   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12075                                        NULL);
12076
12077   return offset;
12078 }
12079 static int dissect_protectedPayload(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12080   return dissect_gsm_map_ProtectedPayload(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protectedPayload);
12081 }
12082
12083 static const ber_sequence_t SecureTransportArg_sequence[] = {
12084   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
12085   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
12086   { 0, 0, 0, NULL }
12087 };
12088
12089 static int
12090 dissect_gsm_map_SecureTransportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12091   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12092                                 SecureTransportArg_sequence, hf_index, ett_gsm_map_SecureTransportArg);
12093
12094   return offset;
12095 }
12096
12097 static const ber_sequence_t SecureTransportRes_sequence[] = {
12098   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
12099   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
12100   { 0, 0, 0, NULL }
12101 };
12102
12103 static int
12104 dissect_gsm_map_SecureTransportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12105   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12106                                 SecureTransportRes_sequence, hf_index, ett_gsm_map_SecureTransportRes);
12107
12108   return offset;
12109 }
12110
12111
12112 static const value_string gsm_map_NetworkResource_vals[] = {
12113   {   0, "plmn" },
12114   {   1, "hlr" },
12115   {   2, "vlr" },
12116   {   3, "pvlr" },
12117   {   4, "controllingMSC" },
12118   {   5, "vmsc" },
12119   {   6, "eir" },
12120   {   7, "rss" },
12121   { 0, NULL }
12122 };
12123
12124
12125 static int
12126 dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12127   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12128                                   NULL);
12129
12130   return offset;
12131 }
12132 static int dissect_networkResource(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12133   return dissect_gsm_map_NetworkResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkResource);
12134 }
12135
12136 static const ber_sequence_t T_extensibleSystemFailureParam_sequence[] = {
12137   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_networkResource },
12138   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12139   { 0, 0, 0, NULL }
12140 };
12141
12142 static int
12143 dissect_gsm_map_T_extensibleSystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12144   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12145                                 T_extensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_T_extensibleSystemFailureParam);
12146
12147   return offset;
12148 }
12149 static int dissect_extensibleSystemFailureParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12150   return dissect_gsm_map_T_extensibleSystemFailureParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleSystemFailureParam);
12151 }
12152
12153
12154 static const value_string gsm_map_SystemFailureParam_vals[] = {
12155   {   0, "networkResource" },
12156   {   1, "extensibleSystemFailureParam" },
12157   { 0, NULL }
12158 };
12159
12160 static const ber_choice_t SystemFailureParam_choice[] = {
12161   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_networkResource },
12162   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleSystemFailureParam },
12163   { 0, 0, 0, 0, NULL }
12164 };
12165
12166 static int
12167 dissect_gsm_map_SystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12168   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
12169                               SystemFailureParam_choice, hf_index, ett_gsm_map_SystemFailureParam, NULL);
12170
12171   return offset;
12172 }
12173
12174 static const ber_sequence_t DataMissingParam_sequence[] = {
12175   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12176   { 0, 0, 0, NULL }
12177 };
12178
12179 static int
12180 dissect_gsm_map_DataMissingParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12181   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12182                                 DataMissingParam_sequence, hf_index, ett_gsm_map_DataMissingParam);
12183
12184   return offset;
12185 }
12186
12187 static const ber_sequence_t UnexpectedDataParam_sequence[] = {
12188   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12189   { 0, 0, 0, NULL }
12190 };
12191
12192 static int
12193 dissect_gsm_map_UnexpectedDataParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12194   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12195                                 UnexpectedDataParam_sequence, hf_index, ett_gsm_map_UnexpectedDataParam);
12196
12197   return offset;
12198 }
12199
12200 static const ber_sequence_t FacilityNotSupParam_sequence[] = {
12201   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12202   { 0, 0, 0, NULL }
12203 };
12204
12205 static int
12206 dissect_gsm_map_FacilityNotSupParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12207   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12208                                 FacilityNotSupParam_sequence, hf_index, ett_gsm_map_FacilityNotSupParam);
12209
12210   return offset;
12211 }
12212
12213 static const ber_sequence_t IncompatibleTerminalParam_sequence[] = {
12214   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12215   { 0, 0, 0, NULL }
12216 };
12217
12218 static int
12219 dissect_gsm_map_IncompatibleTerminalParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12220   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12221                                 IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_IncompatibleTerminalParam);
12222
12223   return offset;
12224 }
12225
12226 static const ber_sequence_t ResourceLimitationParam_sequence[] = {
12227   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12228   { 0, 0, 0, NULL }
12229 };
12230
12231 static int
12232 dissect_gsm_map_ResourceLimitationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12233   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12234                                 ResourceLimitationParam_sequence, hf_index, ett_gsm_map_ResourceLimitationParam);
12235
12236   return offset;
12237 }
12238
12239
12240 static const value_string gsm_map_T_unknownSubscriberDiagnostic_vals[] = {
12241   {   0, "imsiUnknown" },
12242   {   1, "gprsSubscriptionUnknown" },
12243   { 0, NULL }
12244 };
12245
12246
12247 static int
12248 dissect_gsm_map_T_unknownSubscriberDiagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12249   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12250                                   NULL);
12251
12252   return offset;
12253 }
12254 static int dissect_unknownSubscriberDiagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12255   return dissect_gsm_map_T_unknownSubscriberDiagnostic(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unknownSubscriberDiagnostic);
12256 }
12257
12258 static const ber_sequence_t UnknownSubscriberParam_sequence[] = {
12259   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12260   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_unknownSubscriberDiagnostic },
12261   { 0, 0, 0, NULL }
12262 };
12263
12264 static int
12265 dissect_gsm_map_UnknownSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12266   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12267                                 UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_UnknownSubscriberParam);
12268
12269   return offset;
12270 }
12271
12272 static const ber_sequence_t NumberChangedParam_sequence[] = {
12273   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12274   { 0, 0, 0, NULL }
12275 };
12276
12277 static int
12278 dissect_gsm_map_NumberChangedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12279   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12280                                 NumberChangedParam_sequence, hf_index, ett_gsm_map_NumberChangedParam);
12281
12282   return offset;
12283 }
12284
12285 static const ber_sequence_t UnidentifiedSubParam_sequence[] = {
12286   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12287   { 0, 0, 0, NULL }
12288 };
12289
12290 static int
12291 dissect_gsm_map_UnidentifiedSubParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12292   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12293                                 UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_UnidentifiedSubParam);
12294
12295   return offset;
12296 }
12297
12298
12299 static const value_string gsm_map_T_roamingNotAllowedCause_vals[] = {
12300   {   0, "plmnRoamingNotAllowed" },
12301   {   3, "operatorDeterminedBarring" },
12302   { 0, NULL }
12303 };
12304
12305
12306 static int
12307 dissect_gsm_map_T_roamingNotAllowedCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12308   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12309                                   NULL);
12310
12311   return offset;
12312 }
12313 static int dissect_roamingNotAllowedCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12314   return dissect_gsm_map_T_roamingNotAllowedCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNotAllowedCause);
12315 }
12316
12317 static const ber_sequence_t RoamingNotAllowedParam_sequence[] = {
12318   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_roamingNotAllowedCause },
12319   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12320   { 0, 0, 0, NULL }
12321 };
12322
12323 static int
12324 dissect_gsm_map_RoamingNotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12325   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12326                                 RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_RoamingNotAllowedParam);
12327
12328   return offset;
12329 }
12330
12331 static const ber_sequence_t IllegalSubscriberParam_sequence[] = {
12332   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12333   { 0, 0, 0, NULL }
12334 };
12335
12336 static int
12337 dissect_gsm_map_IllegalSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12338   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12339                                 IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_IllegalSubscriberParam);
12340
12341   return offset;
12342 }
12343
12344 static const ber_sequence_t IllegalEquipmentParam_sequence[] = {
12345   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12346   { 0, 0, 0, NULL }
12347 };
12348
12349 static int
12350 dissect_gsm_map_IllegalEquipmentParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12351   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12352                                 IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_IllegalEquipmentParam);
12353
12354   return offset;
12355 }
12356
12357 static const ber_sequence_t BearerServNotProvParam_sequence[] = {
12358   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12359   { 0, 0, 0, NULL }
12360 };
12361
12362 static int
12363 dissect_gsm_map_BearerServNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12364   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12365                                 BearerServNotProvParam_sequence, hf_index, ett_gsm_map_BearerServNotProvParam);
12366
12367   return offset;
12368 }
12369
12370 static const ber_sequence_t TeleservNotProvParam_sequence[] = {
12371   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12372   { 0, 0, 0, NULL }
12373 };
12374
12375 static int
12376 dissect_gsm_map_TeleservNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12377   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12378                                 TeleservNotProvParam_sequence, hf_index, ett_gsm_map_TeleservNotProvParam);
12379
12380   return offset;
12381 }
12382
12383 static const ber_sequence_t TracingBufferFullParam_sequence[] = {
12384   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12385   { 0, 0, 0, NULL }
12386 };
12387
12388 static int
12389 dissect_gsm_map_TracingBufferFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12390   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12391                                 TracingBufferFullParam_sequence, hf_index, ett_gsm_map_TracingBufferFullParam);
12392
12393   return offset;
12394 }
12395
12396 static const ber_sequence_t NoRoamingNbParam_sequence[] = {
12397   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12398   { 0, 0, 0, NULL }
12399 };
12400
12401 static int
12402 dissect_gsm_map_NoRoamingNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12403   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12404                                 NoRoamingNbParam_sequence, hf_index, ett_gsm_map_NoRoamingNbParam);
12405
12406   return offset;
12407 }
12408
12409
12410 static const value_string gsm_map_T_absentSubscriberReason_vals[] = {
12411   {   0, "imsiDetach" },
12412   {   1, "restrictedArea" },
12413   {   2, "noPageResponse" },
12414   { 0, NULL }
12415 };
12416
12417
12418 static int
12419 dissect_gsm_map_T_absentSubscriberReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12420   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12421                                   NULL);
12422
12423   return offset;
12424 }
12425 static int dissect_absentSubscriberReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12426   return dissect_gsm_map_T_absentSubscriberReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberReason);
12427 }
12428
12429 static const ber_sequence_t AbsentSubscriberParam_sequence[] = {
12430   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12431   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberReason_impl },
12432   { 0, 0, 0, NULL }
12433 };
12434
12435 static int
12436 dissect_gsm_map_AbsentSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12437   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12438                                 AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_AbsentSubscriberParam);
12439
12440   return offset;
12441 }
12442
12443 static const ber_sequence_t BusySubscriberParam_sequence[] = {
12444   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12445   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
12446   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Busy_impl },
12447   { 0, 0, 0, NULL }
12448 };
12449
12450 static int
12451 dissect_gsm_map_BusySubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12452   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12453                                 BusySubscriberParam_sequence, hf_index, ett_gsm_map_BusySubscriberParam);
12454
12455   return offset;
12456 }
12457
12458 static const ber_sequence_t NoSubscriberReplyParam_sequence[] = {
12459   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12460   { 0, 0, 0, NULL }
12461 };
12462
12463 static int
12464 dissect_gsm_map_NoSubscriberReplyParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12465   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12466                                 NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_NoSubscriberReplyParam);
12467
12468   return offset;
12469 }
12470
12471
12472 static const value_string gsm_map_CallBarringCause_vals[] = {
12473   {   0, "barringServiceActive" },
12474   {   1, "operatorBarring" },
12475   { 0, NULL }
12476 };
12477
12478
12479 static int
12480 dissect_gsm_map_CallBarringCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12481   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12482                                   NULL);
12483
12484   return offset;
12485 }
12486 static int dissect_callBarringCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12487   return dissect_gsm_map_CallBarringCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringCause);
12488 }
12489
12490 static const ber_sequence_t T_extensibleCallBarredParam_sequence[] = {
12491   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
12492   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12493   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorisedMessageOriginator_impl },
12494   { 0, 0, 0, NULL }
12495 };
12496
12497 static int
12498 dissect_gsm_map_T_extensibleCallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12499   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12500                                 T_extensibleCallBarredParam_sequence, hf_index, ett_gsm_map_T_extensibleCallBarredParam);
12501
12502   return offset;
12503 }
12504 static int dissect_extensibleCallBarredParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12505   return dissect_gsm_map_T_extensibleCallBarredParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleCallBarredParam);
12506 }
12507
12508
12509 static const value_string gsm_map_CallBarredParam_vals[] = {
12510   {   0, "callBarringCause" },
12511   {   1, "extensibleCallBarredParam" },
12512   { 0, NULL }
12513 };
12514
12515 static const ber_choice_t CallBarredParam_choice[] = {
12516   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
12517   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleCallBarredParam },
12518   { 0, 0, 0, 0, NULL }
12519 };
12520
12521 static int
12522 dissect_gsm_map_CallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12523   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
12524                               CallBarredParam_choice, hf_index, ett_gsm_map_CallBarredParam, NULL);
12525
12526   return offset;
12527 }
12528
12529 static const ber_sequence_t ForwardingFailedParam_sequence[] = {
12530   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12531   { 0, 0, 0, NULL }
12532 };
12533
12534 static int
12535 dissect_gsm_map_ForwardingFailedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12536   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12537                                 ForwardingFailedParam_sequence, hf_index, ett_gsm_map_ForwardingFailedParam);
12538
12539   return offset;
12540 }
12541
12542 static const ber_sequence_t Or_NotAllowedParam_sequence[] = {
12543   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12544   { 0, 0, 0, NULL }
12545 };
12546
12547 static int
12548 dissect_gsm_map_Or_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12549   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12550                                 Or_NotAllowedParam_sequence, hf_index, ett_gsm_map_Or_NotAllowedParam);
12551
12552   return offset;
12553 }
12554
12555 static const ber_sequence_t ForwardingViolationParam_sequence[] = {
12556   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12557   { 0, 0, 0, NULL }
12558 };
12559
12560 static int
12561 dissect_gsm_map_ForwardingViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12562   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12563                                 ForwardingViolationParam_sequence, hf_index, ett_gsm_map_ForwardingViolationParam);
12564
12565   return offset;
12566 }
12567
12568
12569 static const value_string gsm_map_T_cug_RejectCause_vals[] = {
12570   {   0, "incomingCallsBarredWithinCUG" },
12571   {   1, "subscriberNotMemberOfCUG" },
12572   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
12573   {   7, "calledPartySS-InteractionViolation" },
12574   { 0, NULL }
12575 };
12576
12577
12578 static int
12579 dissect_gsm_map_T_cug_RejectCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12580   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12581                                   NULL);
12582
12583   return offset;
12584 }
12585 static int dissect_cug_RejectCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12586   return dissect_gsm_map_T_cug_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause);
12587 }
12588
12589 static const ber_sequence_t Cug_RejectParam_sequence[] = {
12590   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause },
12591   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12592   { 0, 0, 0, NULL }
12593 };
12594
12595 static int
12596 dissect_gsm_map_Cug_RejectParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12597   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12598                                 Cug_RejectParam_sequence, hf_index, ett_gsm_map_Cug_RejectParam);
12599
12600   return offset;
12601 }
12602
12603 static const ber_sequence_t Ati_NotAllowedParam_sequence[] = {
12604   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12605   { 0, 0, 0, NULL }
12606 };
12607
12608 static int
12609 dissect_gsm_map_Ati_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12610   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12611                                 Ati_NotAllowedParam_sequence, hf_index, ett_gsm_map_Ati_NotAllowedParam);
12612
12613   return offset;
12614 }
12615
12616 static const ber_sequence_t NoGroupCallNbParam_sequence[] = {
12617   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12618   { 0, 0, 0, NULL }
12619 };
12620
12621 static int
12622 dissect_gsm_map_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12623   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12624                                 NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_NoGroupCallNbParam);
12625
12626   return offset;
12627 }
12628
12629 static const ber_sequence_t SS_IncompatibilityCause_sequence[] = {
12630   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
12631   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
12632   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
12633   { 0, 0, 0, NULL }
12634 };
12635
12636 static int
12637 dissect_gsm_map_SS_IncompatibilityCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12638   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12639                                 SS_IncompatibilityCause_sequence, hf_index, ett_gsm_map_SS_IncompatibilityCause);
12640
12641   return offset;
12642 }
12643
12644
12645 static const value_string gsm_map_Pw_RegistrationFailureCause_vals[] = {
12646   {   0, "undetermined" },
12647   {   1, "invalidFormat" },
12648   {   2, "newPasswordsMismatch" },
12649   { 0, NULL }
12650 };
12651
12652
12653 static int
12654 dissect_gsm_map_Pw_RegistrationFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12655   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12656                                   NULL);
12657
12658   return offset;
12659 }
12660
12661 static const ber_sequence_t ShortTermDenialParam_sequence[] = {
12662   { 0, 0, 0, NULL }
12663 };
12664
12665 static int
12666 dissect_gsm_map_ShortTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12667   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12668                                 ShortTermDenialParam_sequence, hf_index, ett_gsm_map_ShortTermDenialParam);
12669
12670   return offset;
12671 }
12672
12673 static const ber_sequence_t LongTermDenialParam_sequence[] = {
12674   { 0, 0, 0, NULL }
12675 };
12676
12677 static int
12678 dissect_gsm_map_LongTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12679   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12680                                 LongTermDenialParam_sequence, hf_index, ett_gsm_map_LongTermDenialParam);
12681
12682   return offset;
12683 }
12684
12685 static const ber_sequence_t SubBusyForMT_SMS_Param_sequence[] = {
12686   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12687   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gprsConnectionSuspended },
12688   { 0, 0, 0, NULL }
12689 };
12690
12691 static int
12692 dissect_gsm_map_SubBusyForMT_SMS_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12693   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12694                                 SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_SubBusyForMT_SMS_Param);
12695
12696   return offset;
12697 }
12698
12699
12700 static const value_string gsm_map_T_sm_EnumeratedDeliveryFailureCause_vals[] = {
12701   {   0, "memoryCapacityExceeded" },
12702   {   1, "equipmentProtocolError" },
12703   {   2, "equipmentNotSM-Equipped" },
12704   {   3, "unknownServiceCentre" },
12705   {   4, "sc-Congestion" },
12706   {   5, "invalidSME-Address" },
12707   {   6, "subscriberNotSC-Subscriber" },
12708   { 0, NULL }
12709 };
12710
12711
12712 static int
12713 dissect_gsm_map_T_sm_EnumeratedDeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12714   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12715                                   NULL);
12716
12717   return offset;
12718 }
12719 static int dissect_sm_EnumeratedDeliveryFailureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12720   return dissect_gsm_map_T_sm_EnumeratedDeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_EnumeratedDeliveryFailureCause);
12721 }
12722
12723
12724
12725 static int
12726 dissect_gsm_map_OCTET_STRING_SIZE_1_200(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12727   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12728                                        NULL);
12729
12730   return offset;
12731 }
12732 static int dissect_diagnosticInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12733   return dissect_gsm_map_OCTET_STRING_SIZE_1_200(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_diagnosticInfo);
12734 }
12735
12736 static const ber_sequence_t Sm_DeliveryFailureCause_sequence[] = {
12737   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_EnumeratedDeliveryFailureCause },
12738   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnosticInfo },
12739   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12740   { 0, 0, 0, NULL }
12741 };
12742
12743 static int
12744 dissect_gsm_map_Sm_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12745   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12746                                 Sm_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_Sm_DeliveryFailureCause);
12747
12748   return offset;
12749 }
12750
12751 static const ber_sequence_t MessageWaitListFullParam_sequence[] = {
12752   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12753   { 0, 0, 0, NULL }
12754 };
12755
12756 static int
12757 dissect_gsm_map_MessageWaitListFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12758   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12759                                 MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_MessageWaitListFullParam);
12760
12761   return offset;
12762 }
12763
12764 static const ber_sequence_t AbsentSubscriberSM_Param_sequence[] = {
12765   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_absentSubscriberDiagnosticSM },
12766   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12767   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
12768   { 0, 0, 0, NULL }
12769 };
12770
12771 static int
12772 dissect_gsm_map_AbsentSubscriberSM_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12773   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12774                                 AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_AbsentSubscriberSM_Param);
12775
12776   return offset;
12777 }
12778
12779 static const ber_sequence_t UnauthorizedRequestingNetwork_Param_sequence[] = {
12780   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12781   { 0, 0, 0, NULL }
12782 };
12783
12784 static int
12785 dissect_gsm_map_UnauthorizedRequestingNetwork_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12786   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12787                                 UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_UnauthorizedRequestingNetwork_Param);
12788
12789   return offset;
12790 }
12791
12792
12793 static const value_string gsm_map_T_unauthorizedLCSClient_Diagnostic_vals[] = {
12794   {   0, "noAdditionalInformation" },
12795   {   1, "clientNotInMSPrivacyExceptionList" },
12796   {   2, "callToClientNotSetup" },
12797   {   3, "privacyOverrideNotApplicable" },
12798   {   4, "disallowedByLocalRegulatoryRequirements" },
12799   { 0, NULL }
12800 };
12801
12802
12803 static int
12804 dissect_gsm_map_T_unauthorizedLCSClient_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12805   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12806                                   NULL);
12807
12808   return offset;
12809 }
12810 static int dissect_unauthorizedLCSClient_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12811   return dissect_gsm_map_T_unauthorizedLCSClient_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorizedLCSClient_Diagnostic);
12812 }
12813
12814 static const ber_sequence_t UnauthorizedLCSClient_Param_sequence[] = {
12815   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorizedLCSClient_Diagnostic_impl },
12816   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12817   { 0, 0, 0, NULL }
12818 };
12819
12820 static int
12821 dissect_gsm_map_UnauthorizedLCSClient_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12822   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12823                                 UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_UnauthorizedLCSClient_Param);
12824
12825   return offset;
12826 }
12827
12828
12829 static const value_string gsm_map_T_positionMethodFailure_Diagnostic_vals[] = {
12830   {   0, "congestion" },
12831   {   1, "insufficientResources" },
12832   {   2, "insufficientMeasurementData" },
12833   {   3, "inconsistentMeasurementData" },
12834   {   4, "locationProcedureNotCompleted" },
12835   {   5, "locationProcedureNotSupportedByTargetMS" },
12836   {   6, "qoSNotAttainable" },
12837   {   7, "positionMethodNotAvailableInNetwork" },
12838   {   8, "positionMethodNotAvailableInLocationArea" },
12839   { 0, NULL }
12840 };
12841
12842
12843 static int
12844 dissect_gsm_map_T_positionMethodFailure_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12845   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12846                                   NULL);
12847
12848   return offset;
12849 }
12850 static int dissect_positionMethodFailure_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12851   return dissect_gsm_map_T_positionMethodFailure_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_positionMethodFailure_Diagnostic);
12852 }
12853
12854 static const ber_sequence_t PositionMethodFailure_Param_sequence[] = {
12855   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_positionMethodFailure_Diagnostic_impl },
12856   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12857   { 0, 0, 0, NULL }
12858 };
12859
12860 static int
12861 dissect_gsm_map_PositionMethodFailure_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12862   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12863                                 PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_PositionMethodFailure_Param);
12864
12865   return offset;
12866 }
12867
12868 static const ber_sequence_t UnknownOrUnreachableLCSClient_Param_sequence[] = {
12869   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12870   { 0, 0, 0, NULL }
12871 };
12872
12873 static int
12874 dissect_gsm_map_UnknownOrUnreachableLCSClient_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12875   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12876                                 UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_UnknownOrUnreachableLCSClient_Param);
12877
12878   return offset;
12879 }
12880
12881
12882 /*--- End of included file: packet-gsm_map-fn.c ---*/
12883
12884
12885 const value_string gsm_map_opr_code_strings[] = {
12886   {   2, "updateLocation" },
12887   {   3, "cancelLocation" },
12888   {   4, "provideRoamingNumber" },
12889   {       5, "noteSubscriberDataModified" },    
12890   {   6, "resumeCallHandling" },
12891   {   7, "insertSubscriberData" },
12892   {   8, "deleteSubscriberData" },
12893   {   9, "sendParameters" },                                    /* map-ac infoRetrieval (14) version1 (1)*/
12894   {  10, "registerSS" },
12895   {  11, "eraseSS" },
12896   {  12, "activateSS" },
12897   {  13, "deactivateSS" },
12898   {  14, "interrogateSS" },
12899   {      15, "authenticationFailureReport" },   
12900   {  17, "registerPassword" },
12901   {  18, "getPassword" },
12902   {  19, "processUnstructuredSS-Data" },                /* map-ac networkFunctionalSs (18) version1 (1) */
12903   {  20, "releaseResources" },
12904   {  22, "sendRoutingInfo" },
12905   {  23, "updateGprsLocation" },
12906   {  24, "sendRoutingInfoForGprs" },
12907   {  25, "failureReport" },
12908   {  26, "noteMsPresentForGprs" },
12909   {  28, "performHandover" },                                   /* map-ac handoverControl (11) version1 (1)*/
12910   {  29, "sendEndSignal" },
12911   {  30, "performSubsequentHandover" },                 /* map-ac handoverControl (11) version1 (1) */
12912   {  31, "provideSIWFSNumber" },
12913   {  32, "sIWFSSignallingModify" },
12914   {  33, "processAccessSignalling" },
12915   {  34, "forwardAccessSignalling" },
12916   {  35, "noteInternalHandover" },                              /* map-ac handoverControl (11) version1 (1) */
12917   {  37, "reset" },
12918   {  38, "forwardCheckSS-Indication" },
12919   {  39, "prepareGroupCall" },
12920   {  40, "sendGroupCallEndSignal" },
12921   {  41, "processGroupCallSignalling" },
12922   {  42, "forwardGroupCallSignalling" },
12923   {  43, "checkIMEI" },
12924   {  44, "mt-forwardSM" },
12925   {  45, "sendRoutingInfoForSM" },
12926   {  46, "mo-forwardSM" },
12927   {  47, "reportSM-DeliveryStatus" },
12928   {  48, "noteSubscriberPresent" },                             /* map-ac mwdMngt (24) version1 (1) */
12929   {  49, "alertServiceCentreWithoutResult" },   /* map-ac shortMsgAlert (23) version1 (1) */
12930   {  50, "activateTraceMode" },
12931   {  51, "deactivateTraceMode" },
12932   {  52, "traceSubscriberActivity" },                   /* map-ac handoverControl (11) version1 (1) */
12933   {  54, "beginSubscriberActivity" },                   /* map-ac networkFunctionalSs (18) version1 (1) */
12934   {  55, "sendIdentification" },
12935   {  56, "sendAuthenticationInfo" },
12936   {  57, "restoreData" },
12937   {  58, "sendIMSI" },
12938   {  59, "processUnstructuredSS-Request" },
12939   {  60, "unstructuredSS-Request" },
12940   {  61, "unstructuredSS-Notify" },
12941   {  62, "anyTimeSubscriptionInterrogation" },
12942   {  63, "informServiceCentre" },
12943   {  64, "alertServiceCentre" },
12944   {  65, "anyTimeModification" },
12945   {  66, "readyForSM" },
12946   {  67, "purgeMS" },
12947   {  68, "prepareHandover" },
12948   {  69, "prepareSubsequentHandover" },
12949   {  70, "provideSubscriberInfo" },
12950   {  71, "anyTimeInterrogation" },
12951   {  72, "ss-InvocationNotification" },
12952   {  73, "setReportingState" },
12953   {  74, "statusReport" },
12954   {  75, "remoteUserFree" },
12955   {  76, "registerCC-Entry" },
12956   {  77, "eraseCC-Entry" },
12957   {  78, "secureTransportClass1" },
12958   {  79, "secureTransportClass2" },
12959   {  80, "secureTransportClass3" },
12960   {  81, "secureTransportClass4" },
12961   {  83, "provideSubscriberLocation" },
12962   {  85, "sendRoutingInfoForLCS" },
12963   {  86, "subscriberLocationReport" },
12964   {      87, "ist-Alert" },
12965   {      88, "ist-Command" },
12966   {  89, "noteMM-Event" },
12967   { 0, NULL }
12968 };
12969 static const value_string gsm_map_err_code_string_vals[] = {
12970     { 1,        "Unknown Subscriber" },
12971     { 3,        "Unknown MSC" },
12972     { 5,        "Unidentified Subscriber" },
12973     { 6,        "Absent Subscriber SM" },
12974     { 7,        "Unknown Equipment" },
12975     { 8,        "Roaming Not Allowed" },
12976     { 9,        "Illegal Subscriber" },
12977     { 10,       "Bearer Service Not Provisioned" },
12978     { 11,       "Teleservice Not Provisioned" },
12979     { 12,       "Illegal Equipment" },
12980     { 13,       "Call Barred" },
12981     { 14,       "Forwarding Violation" },
12982     { 15,       "CUG Reject" },
12983     { 16,       "Illegal SS Operation" },
12984     { 17,       "SS Error Status" },
12985     { 18,       "SS Not Available" },
12986     { 19,       "SS Subscription Violation" },
12987     { 20,       "SS Incompatibility" },
12988     { 21,       "Facility Not Supported" },
12989     { 25,       "No Handover Number Available" },
12990     { 26,       "Subsequent Handover Failure" },
12991     { 27,       "Absent Subscriber" },
12992     { 28,       "Incompatible Terminal" },
12993     { 29,       "Short Term Denial" },
12994     { 30,       "Long Term Denial" },
12995     { 31,       "Subscriber Busy For MT SMS" },
12996     { 32,       "SM Delivery Failure" },
12997     { 33,       "Message Waiting List Full" },
12998     { 34,       "System Failure" },
12999     { 35,       "Data Missing" },
13000     { 36,       "Unexpected Data Value" },
13001     { 37,       "PW Registration Failure" },
13002     { 38,       "Negative PW Check" },
13003     { 39,       "No Roaming Number Available" },
13004     { 40,       "Tracing Buffer Full" },
13005     { 42,       "Target Cell Outside Group Call Area" },
13006     { 43,       "Number Of PW Attempts Violation" },
13007     { 44,       "Number Changed" },
13008     { 45,       "Busy Subscriber" },
13009     { 46,       "No Subscriber Reply" },
13010     { 47,       "Forwarding Failed" },
13011     { 48,       "OR Not Allowed" },
13012     { 49,       "ATI Not Allowed" },
13013     { 50,       "No Group Call Number Available" },
13014     { 51,       "Resource Limitation" },
13015     { 52,       "Unauthorized Requesting Network" },
13016     { 53,       "Unauthorized LCS Client" },
13017     { 54,       "Position Method Failure" },
13018     { 58,       "Unknown Or Unreachable LCS Client" },
13019     { 59,       "MM Event Not Supported" },
13020     { 60,       "ATSI Not Allowed" },
13021     { 61,       "ATM Not Allowed" },
13022     { 62,       "Information Not Available" },
13023     { 71,       "Unknown Alphabet" },
13024     { 72,       "USSD Busy" },
13025     { 120,      "Nbr Sb Exceeded" },
13026     { 121,      "Rejected By User" },
13027     { 122,      "Rejected By Network" },
13028     { 123,      "Deflection To Served Subscriber" },
13029     { 124,      "Special Service Code" },
13030     { 125,      "Invalid Deflected To Number" },
13031     { 126,      "Max Number Of MPTY Participants Exceeded" },
13032     { 127,      "Resources Not Available" },
13033     { 0, NULL }
13034 };
13035 static const true_false_string gsm_map_extension_value = {
13036   "No Extension",
13037   "Extension"
13038 };
13039 static const value_string gsm_map_nature_of_number_values[] = {
13040         {   0x00,       "unknown" },
13041         {   0x01,       "International Number" },
13042         {   0x02,       "National Significant Number" },
13043         {   0x03,       "Network Specific Number" },
13044         {   0x04,       "Subscriber Number" },
13045         {   0x05,       "Reserved" },
13046         {   0x06,       "Abbreviated Number" },
13047         {   0x07,       "Reserved for extension" },
13048         { 0, NULL }
13049 };
13050 static const value_string gsm_map_number_plan_values[] = {
13051         {   0x00,       "unknown" },
13052         {   0x01,       "ISDN/Telephony Numbering (Rec ITU-T E.164)" },
13053         {   0x02,       "spare" },
13054         {   0x03,       "Data Numbering (ITU-T Rec. X.121)" },
13055         {   0x04,       "Telex Numbering (ITU-T Rec. F.69)" },
13056         {   0x05,       "spare" },
13057         {   0x06,       "Land Mobile Numbering (ITU-T Rec. E.212)" },
13058         {   0x07,       "spare" },
13059         {   0x08,       "National Numbering" },
13060         {   0x09,       "Private Numbering" },
13061         {   0x0f,       "Reserved for extension" },
13062         { 0, NULL }
13063 };
13064
13065 static const true_false_string gsm_map_Ss_Status_q_bit_values = {
13066   "Quiescent",
13067   "Operative"
13068 };
13069 static const true_false_string gsm_map_Ss_Status_p_values = {
13070   "Provisioned",
13071   "Not Provisioned"
13072 };
13073 static const true_false_string gsm_map_Ss_Status_r_values = {
13074   "Registered",
13075   "Not Registered"
13076 };
13077 static const true_false_string gsm_map_Ss_Status_a_values = {
13078   "Active",
13079   "not Active"
13080 };
13081
13082 static guint32 opcode=0;
13083
13084 static int
13085 dissect_gsm_map_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
13086   offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
13087
13088   if (check_col(pinfo->cinfo, COL_INFO)){
13089     col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
13090   }
13091
13092   return offset;
13093 }
13094
13095 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13096
13097   guint8 octet;
13098
13099   switch(opcode){
13100   case  2: /*updateLocation*/   
13101           offset=dissect_gsm_map_UpdateLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
13102     break;
13103   case  3: /*cancelLocation*/
13104         octet = tvb_get_guint8(tvb,0) & 0xf;
13105         if ( octet == 3){ /*   */
13106                 offset = offset +2;
13107                 offset=dissect_gsm_map_CancelLocationArg(TRUE, tvb, offset, pinfo, tree, -1);
13108         }else{
13109     offset=dissect_gsm_map_CancelLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
13110         }
13111     break;
13112   case  4: /*provideRoamingNumber*/
13113     offset=dissect_gsm_map_ProvideRoamingNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
13114     break;
13115   case  6: /*resumeCallHandling*/
13116     offset=dissect_gsm_map_ResumeCallHandlingArg(FALSE, tvb, offset, pinfo, tree, -1);
13117     break;
13118   case  7: /*insertSubscriberData*/
13119     offset=dissect_gsm_map_InsertSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
13120     break;
13121   case  8: /*deleteSubscriberData*/
13122     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
13123     break;
13124         /* TODO find out why this isn't in the ASN1 file
13125   case  9: sendParameters
13126     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
13127     break;
13128         */
13129   case  10: /*registerSS*/
13130     offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13131     break;
13132   case  11: /*eraseSS*/
13133     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
13134     break;
13135   case 12: /*activateSS*/
13136     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
13137     break;
13138   case 13: /*deactivateSS*/
13139     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
13140     break;
13141   case 14: /*interrogateSS*/
13142     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
13143     break;
13144   case 15: /*authenticationFailureReport*/
13145           offset=dissect_gsm_map_AuthenticationFailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
13146           break;
13147   case 17: /*registerPassword*/
13148     offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
13149     break;
13150   case 18: /*getPassword*/
13151     offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_getPassword);
13152     break;
13153   case 20: /*releaseResources*/
13154     offset=dissect_gsm_map_ReleaseResourcesArg(FALSE, tvb, offset, pinfo, tree, -1);
13155     break;
13156   case 22: /*sendRoutingInfo*/
13157     offset=dissect_gsm_map_SendRoutingInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
13158     break;
13159   case 23: /*updateGprsLocation*/
13160     offset=dissect_gsm_map_UpdateGprsLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
13161     break;
13162   case 24: /*sendRoutingInfoForGprs*/
13163     offset=dissect_gsm_map_SendRoutingInfoForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
13164     break;
13165   case 25: /*failureReport*/
13166     offset=dissect_gsm_map_FailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
13167     break;
13168   case 26: /*noteMsPresentForGprs*/
13169     offset=dissect_gsm_map_NoteMsPresentForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
13170     break;
13171   case 29: /*sendEndSignal*/
13172         octet = tvb_get_guint8(tvb,0) & 0xf;
13173         if ( octet == 3){ /* This is a V3 message ??? */
13174                 offset = offset +2;
13175                 offset=dissect_gsm_map_SendEndSignalArgV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
13176         }else{
13177                 offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
13178         }
13179     break;
13180   case 31: /*provideSIWFSNumbe*/
13181     offset=dissect_gsm_map_ProvideSIWFSNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
13182     break;
13183   case 32: /*sIWFSSignallingModify*/
13184     offset=dissect_gsm_map_SIWFSSignallingModifyArg(FALSE, tvb, offset, pinfo, tree, -1);
13185     break;
13186   case 33: /*processAccessSignalling*/
13187         octet = tvb_get_guint8(tvb,0) & 0xf;
13188         if ( octet == 3){ /* This is a V3 message ??? */
13189                 offset = offset +2;
13190                 offset = dissect_gsm_map_ProcessAccessSignallingArgV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
13191         }else{
13192     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
13193         }
13194     break;
13195   case 34: /*forwardAccessSignalling*/
13196         octet = tvb_get_guint8(tvb,0) & 0xf;
13197         if ( octet == 3){ /* This is a V3 message ??? */
13198                 offset = offset +2;
13199                 offset=dissect_gsm_map_ForwardAccessSignallingArgV3(TRUE, tvb, offset, pinfo, tree, -1);
13200         }else{
13201                  offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
13202         }
13203     break;
13204   case 37: /*reset*/
13205     offset=dissect_gsm_map_ResetArg(FALSE, tvb, offset, pinfo, tree, -1);
13206     break;
13207   case 38: /*forwardCheckSS-Indication*/
13208     return offset;
13209     break;
13210   case 39: /*prepareGroupCall*/
13211     offset=dissect_gsm_map_PrepareGroupCallArg(FALSE, tvb, offset, pinfo, tree, -1);
13212     break;
13213   case 40: /*sendGroupCallEndSignal*/
13214     dissect_gsm_map_SendGroupCallEndSignalArg(FALSE, tvb, offset, pinfo, tree, -1);
13215     break;
13216   case 42: /*processGroupCallSignalling*/
13217     offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1);
13218     break;
13219   case 43: /*checkIMEI*/
13220           if (application_context_version < 2 ){
13221                   offset=dissect_gsm_map_CheckIMEIArgV2(FALSE, tvb, offset, pinfo, tree, -1);
13222           }else{
13223                   offset=dissect_gsm_map_CheckIMEIArgV2(FALSE, tvb, offset, pinfo, tree, -1);
13224           }
13225     break;
13226   case 44: /*mt-forwardSM*/
13227     offset=dissect_gsm_map_Mt_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13228     break;
13229   case 45: /*sendRoutingInfoForSM*/
13230     offset=dissect_gsm_map_RoutingInfoForSMArg(FALSE, tvb, offset, pinfo, tree, -1);
13231     break;
13232   case 46: /*mo-forwardSM*/
13233     offset=dissect_gsm_map_Mo_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13234     break;
13235   case 47: /*reportSM-DeliveryStatus*/
13236     offset=dissect_gsm_map_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, pinfo, tree, -1);
13237     break;
13238   case 50: /*activateTraceMode*/
13239     offset=dissect_gsm_map_ActivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
13240     break;
13241   case 51: /*deactivateTraceMode*/
13242     offset=dissect_gsm_map_DeactivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
13243     break;
13244   case 55: /*sendIdentification*/
13245     offset=dissect_gsm_map_TMSI(FALSE, tvb, offset, pinfo, tree, -1);
13246     break;
13247   case 56: /*sendAuthenticationInfo*/
13248           if (application_context_version < 3 ){
13249                   offset=dissect_gsm_map_SendAuthenticationInfoArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
13250           }else{
13251                   offset=dissect_gsm_map_SendAuthenticationInfoArgV2(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoArg);
13252           }
13253         break;
13254   case 57: /*restoreData*/
13255         offset=dissect_gsm_map_RestoreDataArg(FALSE, tvb, offset, pinfo, tree, -1);
13256         break;
13257   case 58: /*sendIMSI*/
13258         offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, -1);
13259         break;
13260   case 59: /*processUnstructuredSS-Request*/
13261     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13262     break;
13263   case 60: /*unstructuredSS-Request*/
13264     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13265     break;
13266   case 61: /*unstructuredSS-Notify*/
13267     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13268     break;
13269   case 62: /*AnyTimeSubscriptionInterrogation*/
13270           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
13271           break;
13272   case 63: /*informServiceCentre*/
13273     offset=dissect_gsm_map_InformServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
13274     break;
13275   case 64: /*alertServiceCentre*/
13276     offset=dissect_gsm_map_AlertServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
13277     break;
13278   case 65: /*AnyTimeModification*/
13279           offset=dissect_gsm_map_AnyTimeModificationArg(FALSE, tvb, offset, pinfo, tree, -1);
13280           break;
13281   case 66: /*readyForSM*/
13282     offset=dissect_gsm_map_ReadyForSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13283     break;
13284   case 67: /*purgeMS*/
13285     offset=dissect_gsm_map_PurgeMSArg(FALSE, tvb, offset, pinfo, tree, -1);
13286     break;
13287   case 68: /*prepareHandover*/
13288         octet = tvb_get_guint8(tvb,0) & 0xf;
13289         if ( octet == 3){ /* This is a V3 message ??? */
13290                 offset = offset +2;
13291                 offset=dissect_gsm_map_PrepareHO_ArgV3(TRUE, tvb, offset, pinfo, tree, -1);
13292         }else{
13293                 offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13294         }
13295     break;
13296   case 69: /*prepareSubsequentHandover*/
13297     offset=dissect_gsm_map_PrepareSubsequentHOArg(FALSE, tvb, offset, pinfo, tree, -1);
13298     break;
13299   case 70: /*provideSubscriberInfo*/
13300     offset=dissect_gsm_map_ProvideSubscriberInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
13301     break;
13302   case 71: /*anyTimeInterrogation*/
13303     offset=dissect_gsm_map_AnyTimeInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
13304     break;
13305   case 72: /*ss-InvocationNotificatio*/
13306     offset=dissect_gsm_map_Ss_InvocationNotificationArg(FALSE, tvb, offset, pinfo, tree, -1);
13307     break;
13308   case 73: /*setReportingState*/
13309     offset=dissect_gsm_map_SetReportingStateArg(FALSE, tvb, offset, pinfo, tree, -1);
13310     break;
13311   case 74: /*statusReport*/
13312     offset=dissect_gsm_map_StatusReportArg(FALSE, tvb, offset, pinfo, tree, -1);
13313     break;
13314   case 75: /*remoteUserFree*/
13315     offset=dissect_gsm_map_RemoteUserFreeArg(FALSE, tvb, offset, pinfo, tree, -1);
13316     break;
13317   case 76: /*registerCC-Entry*/
13318     offset=dissect_gsm_map_RegisterCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
13319     break;
13320   case 77: /*eraseCC-Entry*/
13321     offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
13322     break;
13323   case 78: /*secureTransportClass1*/
13324   case 79: /*secureTransportClass1*/
13325   case 80: /*secureTransportClass1*/
13326   case 81: /*secureTransportClass1*/
13327     offset=dissect_gsm_map_SecureTransportArg(FALSE, tvb, offset, pinfo, tree, -1);
13328     break;
13329   case 83: /*provideSubscriberLocation*/
13330     offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
13331     break;
13332     offset=dissect_gsm_map_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13333     break;
13334   case 85: /*sendRoutingInfoForLCS*/
13335     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13336     break;
13337   case 86: /*subscriberLocationReport*/
13338     offset=dissect_gsm_map_SubscriberLocationReport_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13339     break;
13340   case 87: /*ist-Alert*/
13341     offset=dissect_gsm_map_IST_AlertArg(FALSE, tvb, offset, pinfo, tree, -1);
13342     break;
13343   case 88: /*ist-Command*/
13344     offset=dissect_gsm_map_IST_CommandArg(FALSE, tvb, offset, pinfo, tree, -1);
13345     break;
13346   case 89: /*noteMM-Event*/
13347     offset=dissect_gsm_map_NoteMM_EventArg(FALSE, tvb, offset, pinfo, tree, -1);
13348     break;
13349   default:
13350     proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
13351   }
13352   return offset;
13353 }
13354
13355
13356 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13357         
13358   guint8 octet;
13359   switch(opcode){
13360   case  2: /*updateLocation*/
13361           octet = tvb_get_guint8(tvb,offset);
13362           /* As it seems like SEQUENCE OF sometimes is omitted, find out if it's there */
13363           if ( octet == 0x30 ){ /* Class 0 Univerasl, P/C 1 Constructed,Tag 16 Sequence OF */
13364     offset=dissect_gsm_map_UpdateLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
13365           }else{ /* Try decoding with IMPLICIT flag set */ 
13366                   offset=dissect_gsm_map_UpdateLocationRes(TRUE, tvb, offset, pinfo, tree, -1);
13367           }
13368     break;
13369   case  3: /*cancelLocation*/
13370     offset=dissect_gsm_map_CancelLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
13371     break;
13372   case  4: /*provideRoamingNumber*/
13373     offset=dissect_gsm_map_ProvideRoamingNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
13374     break;
13375   case  6: /*resumeCallHandling*/
13376     offset=dissect_gsm_map_ResumeCallHandlingRes(FALSE, tvb, offset, pinfo, tree, -1);
13377     break;
13378   case  7: /*insertSubscriberData*/
13379     offset=dissect_gsm_map_InsertSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
13380     break;
13381   case  8: /*deleteSubscriberData*/
13382     offset=dissect_gsm_map_DeleteSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
13383     break;
13384         /* TODO find out why this isn't in the ASN1 file
13385   case  9: sendParameters
13386     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
13387     break;
13388         */
13389   case  10: /*registerSS*/
13390     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
13391     break;
13392   case  11: /*eraseSS*/
13393     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
13394     break;
13395   case 12: /*activateSS*/
13396     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
13397     break;
13398   case 13: /*deactivateSS*/
13399     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
13400     break;
13401   case 14: /*interrogateSS*/
13402     offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
13403     break;
13404   case 15: /*authenticationFailureReport*/
13405           offset=dissect_gsm_map_AuthenticationFailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
13406           break;
13407   case 17: /*registerPassword*/
13408     offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
13409     break;
13410   case 18: /*getPassword*/
13411     offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentPassword);
13412     break;
13413   case 20: /*releaseResources*/
13414     offset=dissect_gsm_map_ReleaseResourcesRes(FALSE, tvb, offset, pinfo, tree, -1);
13415     break;
13416   case 22: /*sendRoutingInfo*/
13417           /* This is done to get around a problem with IMPLICIT tag:s */
13418     offset = offset +2;
13419     offset=dissect_gsm_map_SendRoutingInfoRes(TRUE, tvb, offset, pinfo, tree, -1);
13420     break;
13421   case 23: /*updateGprsLocation*/
13422     offset=dissect_gsm_map_UpdateGprsLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
13423     break;
13424   case 24: /*sendRoutingInfoForGprs*/
13425     offset=dissect_gsm_map_SendRoutingInfoForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
13426     break;
13427   case 25: /*failureReport*/
13428     offset=dissect_gsm_map_FailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
13429     break;
13430   case 26: /*noteMsPresentForGprs*/
13431     offset=dissect_gsm_map_NoteMsPresentForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
13432     break;
13433   case 29: /*sendEndSignal*/
13434           /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain 
13435            * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) }
13436            */
13437     offset=dissect_gsm_map_SendEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
13438     break;
13439   case 31: /*provideSIWFSNumbe*/
13440     offset=dissect_gsm_map_ProvideSIWFSNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
13441     break;
13442   case 32: /*provideSIWFSNumbe*/
13443     offset=dissect_gsm_map_SIWFSSignallingModifyRes(FALSE, tvb, offset, pinfo, tree, -1);
13444     break;
13445   case 39: /*prepareGroupCall*/
13446     offset=dissect_gsm_map_PrepareGroupCallRes(FALSE, tvb, offset, pinfo, tree, -1);
13447     break;
13448   case 40: /*sendGroupCallEndSignal*/
13449     dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
13450     break;
13451   case 43: /*checkIMEI*/
13452     offset=dissect_gsm_map_CheckIMEIRes(FALSE, tvb, offset, pinfo, tree, -1);
13453     break;
13454   case 44: /*mt-forwardSM*/
13455     offset=dissect_gsm_map_Mt_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
13456     break;
13457   case 45: /*sendRoutingInfoForSM*/
13458     offset=dissect_gsm_map_RoutingInfoForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
13459     break;
13460   case 46: /*mo-forwardSM*/
13461     offset=dissect_gsm_map_Mo_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
13462     break;
13463   case 48: /*reportSM-DeliveryStatus*/
13464     offset=dissect_gsm_map_ReportSM_DeliveryStatusRes(FALSE, tvb, offset, pinfo, tree, -1);
13465     break;
13466   case 50: /*activateTraceMode*/
13467     offset=dissect_gsm_map_ActivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
13468     break;
13469   case 51: /*deactivateTraceMode*/
13470     offset=dissect_gsm_map_DeactivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
13471     break;
13472   case 55: /*sendIdentification*/
13473     offset=dissect_gsm_map_SendIdentificationRes(FALSE, tvb, offset, pinfo, tree, -1);
13474     break;
13475   case 56: /*sendAuthenticationInfo*/
13476         octet = tvb_get_guint8(tvb,0) & 0xf;
13477         if ( octet == 3){ /* This is a V3 message ??? */
13478                 offset = offset +2;
13479                 offset=dissect_gsm_map_SendAuthenticationInfoResV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes);
13480         }else{
13481                 offset=dissect_gsm_map_SendAuthenticationInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
13482         }
13483         break;
13484   case 57: /*restoreData*/
13485     offset=dissect_gsm_map_RestoreDataRes(FALSE, tvb, offset, pinfo, tree, -1);
13486     break;
13487   case 58: /*sendIMSI*/
13488     offset=dissect_gsm_map_IMSI(FALSE, tvb, offset, pinfo, tree,hf_gsm_map_imsi);
13489     break;
13490   case 59: /*unstructuredSS-Request*/
13491     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
13492     break;
13493   case 60: /*unstructuredSS-Request*/
13494     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
13495     break;
13496   case 61: /*unstructuredSS-Notify*/
13497     /* TRUE ? */
13498     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
13499     break;
13500   case 62: /*AnyTimeSubscriptionInterrogation*/
13501           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
13502           break;
13503   case 65: /*AnyTimeModification*/
13504           offset=dissect_gsm_map_AnyTimeModificationRes(FALSE, tvb, offset, pinfo, tree, -1);
13505           break;
13506   case 66: /*readyForSM*/
13507     offset=dissect_gsm_map_ReadyForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
13508     break;
13509   case 67: /*purgeMS*/
13510     offset=dissect_gsm_map_PurgeMSRes(FALSE, tvb, offset, pinfo, tree, -1);
13511     break;
13512   case 68: /*prepareHandover*/
13513         octet = tvb_get_guint8(tvb,0) & 0xf;
13514         if ( octet == 3){ /* This is a V3 message ??? */
13515                 offset = offset +2;
13516                 offset=dissect_gsm_map_PrepareHO_ResV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
13517         }else{
13518                 offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1);
13519         }
13520     break;
13521   case 69: /*prepareSubsequentHandover*/
13522      offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
13523     break;
13524   case 70: /*provideSubscriberInfo*/
13525     offset=dissect_gsm_map_ProvideSubscriberInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
13526     break;
13527   case 71: /*anyTimeInterrogation*/
13528     offset=dissect_gsm_map_AnyTimeInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
13529     break;
13530   case 72: /*ss-InvocationNotificatio*/
13531     offset=dissect_gsm_map_Ss_InvocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
13532     break;
13533   case 73: /*setReportingState*/
13534     offset=dissect_gsm_map_SetReportingStateRes(FALSE, tvb, offset, pinfo, tree, -1);
13535     break;
13536   case 74: /*statusReport*/
13537     offset=dissect_gsm_map_StatusReportRes(FALSE, tvb, offset, pinfo, tree, -1);
13538     break;
13539   case 75: /*remoteUserFree*/
13540     offset=dissect_gsm_map_RemoteUserFreeRes(FALSE, tvb, offset, pinfo, tree, -1);
13541     break;
13542   case 76: /*registerCC-Entry*/
13543     offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
13544     break;
13545   case 77: /*eraseCC-Entry*/
13546     offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
13547     break;
13548   case 78: /*secureTransportClass1*/
13549   case 79: /*secureTransportClass2*/
13550   case 80: /*secureTransportClass3*/
13551   case 81: /*secureTransportClass4*/
13552     offset=dissect_gsm_map_SecureTransportRes(FALSE, tvb, offset, pinfo, tree, -1);
13553     break;
13554   case 83: /*provideSubscriberLocation*/
13555     offset=dissect_gsm_map_ProvideSubscriberLocation_Res(FALSE, tvb, offset, pinfo, tree, -1);
13556     break;
13557   case 85: /*sendRoutingInfoForLCS*/
13558     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
13559     break;
13560   case 86: /*subscriberLocationReport*/
13561     offset=dissect_gsm_map_SubscriberLocationReport_Res(FALSE, tvb, offset, pinfo, tree, -1);
13562     break;
13563   case 87: /*ist-Alert*/
13564     offset=dissect_gsm_map_IST_AlertRes(FALSE, tvb, offset, pinfo, tree, -1);
13565     break;
13566   case 88: /*ist-Command*/
13567     offset=dissect_gsm_map_IST_CommandRes(FALSE, tvb, offset, pinfo, tree, -1);
13568     break;
13569   case 89: /*noteMM-Event*/
13570     offset=dissect_gsm_map_NoteMM_EventRes(FALSE, tvb, offset, pinfo, tree, -1);
13571     break;
13572  default:
13573     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
13574   }
13575   return offset;
13576 }
13577
13578 static int 
13579 dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13580   return dissect_gsm_map_Opcode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeCmd);
13581 }
13582
13583 static int dissect_invokeid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13584   return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_invokeid, NULL);
13585 }
13586
13587
13588 static const value_string InvokeId_vals[] = {
13589   {   0, "invokeid" },
13590   {   1, "absent" },
13591   { 0, NULL }
13592 };
13593
13594 static int dissect_absent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13595   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absent);
13596 }
13597
13598
13599 static const ber_choice_t InvokeId_choice[] = {
13600   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeid },
13601   {   1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_absent },
13602   { 0, 0, 0, 0, NULL }
13603 };
13604
13605 static int
13606 dissect_gsm_map_InvokeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
13607   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
13608                               InvokeId_choice, hf_index, ett_gsm_map_InvokeId, NULL);
13609
13610   return offset;
13611 }
13612 static int dissect_invokeId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13613   return dissect_gsm_map_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeId);
13614 }
13615
13616 static const ber_sequence_t InvokePDU_sequence[] = {
13617   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
13618   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd },
13619   { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeData },
13620   { 0, 0, 0, NULL }
13621 };
13622
13623 static int
13624 dissect_gsm_map_InvokePDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
13625   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13626                                 InvokePDU_sequence, hf_index, ett_gsm_map_InvokePDU);
13627
13628   return offset;
13629 }
13630 static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13631   return dissect_gsm_map_InvokePDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invoke);
13632 }
13633
13634 static const ber_sequence_t ReturnResult_result_sequence[] = {
13635   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd },
13636   { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_returnResultData },
13637   { 0, 0, 0, NULL }
13638 };
13639 static int
13640 dissect_returnResult_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13641   offset = dissect_ber_sequence(FALSE, pinfo, tree, tvb, offset,
13642                                 ReturnResult_result_sequence, hf_gsm_map_returnResult_result, ett_gsm_map_ReturnResult_result);
13643
13644   return offset;
13645 }
13646
13647 static const ber_sequence_t ReturnResultPDU_sequence[] = {
13648   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
13649   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_returnResult_result },
13650   { 0, 0, 0, NULL }
13651 };
13652
13653 static int
13654 dissect_gsm_map_returnResultPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
13655   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13656                                 ReturnResultPDU_sequence, hf_index, ett_gsm_map_ReturnResultPDU);
13657
13658   return offset;
13659 }
13660 static int dissect_returnResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13661   return dissect_gsm_map_returnResultPDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResult);
13662 }
13663
13664 static int
13665 dissect_local_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13666   return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_local_errorCode, NULL);
13667 }
13668
13669 static int
13670 dissect_global_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13671   offset =  dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
13672                                          hf_gsm_map_global_errorCode_oid, NULL);
13673   return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_global_errorCode, NULL);
13674 }
13675 static const ber_choice_t ReturnError_result_choice[] = {
13676   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_local_errorCode },
13677   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_global_errorCode },
13678   {   0, 0, 0, 0, NULL }
13679 };
13680
13681
13682 static int
13683 dissect_ReturnError_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13684
13685   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
13686                               ReturnError_result_choice, hf_gsm_map_returnError_result, ett_gsm_map_ReturnError_result, NULL);
13687
13688   return offset;
13689 }
13690
13691 static const ber_sequence_t ReturnErrorPDU_sequence[] = {
13692   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
13693   { BER_CLASS_UNI, -1/*choice*/,BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ReturnError_result },
13694   { 0, 0, 0, NULL }
13695 };
13696
13697 static int
13698 dissect_gsm_map_ReturnErrorPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
13699   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13700                                 ReturnErrorPDU_sequence, hf_index, ett_gsm_map_ReturnErrorPDU);
13701
13702   return offset;
13703 }
13704 static int dissect_returnError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13705   return dissect_gsm_map_ReturnErrorPDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnError);
13706 }
13707
13708
13709 static const value_string GSMMAPPDU_vals[] = {
13710   {   1, "Invoke " },
13711   {   2, "ReturnResult " },
13712   {   3, "ReturnError " },
13713   {   4, "Reject " },
13714   { 0, NULL }
13715 };
13716
13717 static const ber_choice_t GSMMAPPDU_choice[] = {
13718   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl },
13719   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResult_impl },
13720   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl },
13721 #ifdef REMOVED
13722   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl },
13723 #endif
13724   { 0, 0, 0, 0, NULL }
13725 };
13726
13727 static guint8 gsmmap_pdu_type = 0;
13728 static guint8 gsm_map_pdu_size = 0;
13729
13730 static int
13731 dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) {
13732
13733   char *version_ptr, *version_str;
13734
13735   opcode = 0;
13736   application_context_version = 0;
13737   if (pinfo->private_data != NULL){
13738     version_ptr = strrchr(pinfo->private_data,'.');
13739         if (version_ptr) {
13740                 version_str = g_strdup(version_ptr+1);
13741                 application_context_version = atoi(version_str);
13742         }
13743   }
13744
13745   gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
13746   /* Get the length and add 2 */
13747   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
13748
13749   if (check_col(pinfo->cinfo, COL_INFO)){
13750     col_set_str(pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, GSMMAPPDU_vals, "Unknown GSM-MAP PDU (%u)"));
13751   }
13752
13753   offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
13754                               GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU, NULL);
13755
13756
13757   return offset;
13758 }
13759
13760
13761
13762
13763 static void
13764 dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
13765 {
13766     proto_item          *item=NULL;
13767     proto_tree          *tree=NULL;
13768     /* Used for gsm_map TAP */
13769     static              gsm_map_tap_rec_t tap_rec;
13770     gint                op_idx;
13771
13772
13773     if (check_col(pinfo->cinfo, COL_PROTOCOL))
13774     {
13775         col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP");
13776     }
13777
13778     top_tree = parent_tree;
13779     dissector_add("tcap.itu_ssn",pinfo->match_port, map_handle);
13780     /* create display subtree for the protocol */
13781     if(parent_tree){
13782         item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
13783         tree = proto_item_add_subtree(item, ett_gsm_map);
13784     }
13785
13786     dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, pinfo, tree, -1);
13787     match_strval_idx(opcode, gsm_map_opr_code_strings, &op_idx);
13788
13789     tap_rec.invoke = FALSE;
13790     if ( gsmmap_pdu_type  == 1 )
13791         tap_rec.invoke = TRUE;
13792     tap_rec.opr_code_idx = op_idx;
13793     tap_rec.size = gsm_map_pdu_size;
13794
13795     tap_queue_packet(gsm_map_tap, pinfo, &tap_rec);
13796 }
13797
13798 static const value_string ssCode_vals[] = {
13799   { 0x00, "allSS - all SS" },
13800   { 0x10 ,"allLineIdentificationSS - all line identification SS" },
13801   { 0x11 ,"clip - calling line identification presentation" },
13802   { 0x12 ,"clir - calling line identification restriction" },
13803   { 0x13 ,"colp - connected line identification presentation" },
13804   { 0x14 ,"colr - connected line identification restriction" },
13805   { 0x15 ,"mci - malicious call identification" },
13806   { 0x18 ,"allNameIdentificationSS - all name indentification SS" },
13807   { 0x19 ,"cnap - calling name presentation" },
13808   { 0x20 ,"allForwardingSS - all forwarding SS" },
13809   { 0x21 ,"cfu - call forwarding unconditional" },
13810   { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" },
13811   { 0x29 ,"cfb - call forwarding busy" },
13812   { 0x2a ,"cfnry - call forwarding on no reply" },
13813   { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" },
13814   { 0x24 ,"cd - call deflection" },
13815   { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" },
13816   { 0x31 ,"ect - explicit call transfer" },
13817   { 0x32 ,"mah - mobile access hunting" },
13818   { 0x40 ,"allCallCompletionSS - all Call completion SS" },
13819   { 0x41 ,"cw - call waiting" },
13820   { 0x42 ,"hold - call hold" },
13821   { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" },
13822   { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" },
13823   { 0x45 ,"mc - multicall" },
13824   { 0x50 ,"allMultiPartySS - all multiparty SS" },
13825   { 0x51 ,"multiPTY - multiparty" },
13826   { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" },
13827   { 0x61 ,"cug - closed user group" },
13828   { 0x70 ,"allChargingSS - all charging SS" },
13829   { 0x71 ,"aoci - advice of charge information" },
13830   { 0x72 ,"aocc - advice of charge charging" },
13831   { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" },
13832   { 0x81 ,"uus1 - UUS1 user-to-user signalling" },
13833   { 0x82 ,"uus2 - UUS2 user-to-user signalling" },
13834   { 0x83 ,"uus3 - UUS3 user-to-user signalling" },
13835   { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" },
13836   { 0x91 ,"barringOfOutgoingCalls" },
13837   { 0x92 ,"baoc - barring of all outgoing calls" },
13838   { 0x93 ,"boic - barring of outgoing international calls" },
13839   { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" },
13840   { 0x99 ,"barringOfIncomingCalls" },
13841   { 0x9a ,"baic - barring of all incoming calls" },
13842   { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" },
13843   { 0xf0 ,"allPLMN-specificSS" },
13844   { 0xa0 ,"allCallPrioritySS - all call priority SS" },
13845   { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" },
13846   { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" },
13847   { 0xb1 ,"universal - allow location by any LCS client" },
13848   { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" },
13849   { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" },
13850   { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" },
13851   { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" },
13852   { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" },
13853   { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" },
13854   { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" },
13855
13856   { 0xf1 ,"plmn-specificSS-1" },
13857   { 0xf2 ,"plmn-specificSS-2" },
13858   { 0xf3 ,"plmn-specificSS-3" },
13859   { 0xf4 ,"plmn-specificSS-4" },
13860   { 0xf5 ,"plmn-specificSS-5" },
13861   { 0xf6 ,"plmn-specificSS-6" },
13862   { 0xf7 ,"plmn-specificSS-7" },
13863   { 0xf8 ,"plmn-specificSS-8" },
13864   { 0xf9 ,"plmn-specificSS-9" },
13865   { 0xfa ,"plmn-specificSS-a" },
13866   { 0xfb ,"plmn-specificSS-b" },
13867   { 0xfc ,"plmn-specificSS-c" },
13868   { 0xfd ,"plmn-specificSS-d" },
13869   { 0xfe ,"plmn-specificSS-e" },
13870   { 0xff ,"plmn-specificSS-f" },
13871   { 0, NULL }
13872 };
13873
13874 static const value_string Teleservice_vals[] = {
13875 {0x00, "allTeleservices" },
13876 {0x10, "allSpeechTransmissionServices" },
13877 {0x11, "telephony" },
13878 {0x12, "emergencyCalls" },
13879 {0x20, "allShortMessageServices" },
13880 {0x21, "shortMessageMT-PP" },
13881 {0x22, "shortMessageMO-PP" },
13882 {0x60, "allFacsimileTransmissionServices" },
13883 {0x61, "facsimileGroup3AndAlterSpeech" },
13884 {0x62, "automaticFacsimileGroup3" },
13885 {0x63, "facsimileGroup4" },
13886
13887 {0x70, "allDataTeleservices" },
13888 {0x80, "allTeleservices-ExeptSMS" },
13889
13890 {0x90, "allVoiceGroupCallServices" },
13891 {0x91, "voiceGroupCall" },
13892 {0x92, "voiceBroadcastCall" },
13893
13894 {0xd0, "allPLMN-specificTS" },
13895 {0xd1, "plmn-specificTS-1" },
13896 {0xd2, "plmn-specificTS-2" },
13897 {0xd3, "plmn-specificTS-3" },
13898 {0xd4, "plmn-specificTS-4" },
13899 {0xd5, "plmn-specificTS-5" },
13900 {0xd6, "plmn-specificTS-6" },
13901 {0xd7, "plmn-specificTS-7" },
13902 {0xd8, "plmn-specificTS-8" },
13903 {0xd9, "plmn-specificTS-9" },
13904 {0xda, "plmn-specificTS-A" },
13905 {0xdb, "plmn-specificTS-B" },
13906 {0xdc, "plmn-specificTS-C" },
13907 {0xdd, "plmn-specificTS-D" },
13908 {0xde, "plmn-specificTS-E" },
13909 {0xdf, "plmn-specificTS-F" },
13910   { 0, NULL }
13911 };
13912
13913 static const value_string Bearerservice_vals[] = {
13914 {0x00, "allBearerServices" },
13915 {0x10, "allDataCDA-Services" },
13916 {0x11, "dataCDA-300bps" },
13917 {0x12, "dataCDA-1200bps" },
13918 {0x13, "dataCDA-1200-75bps" },
13919 {0x14, "dataCDA-2400bps" },
13920 {0x15, "dataCDA-4800bps" },
13921 {0x16, "dataCDA-9600bps" },
13922 {0x17, "general-dataCDA" },
13923
13924 {0x18, "allDataCDS-Services" },
13925 {0x1A, "dataCDS-1200bps" },
13926 {0x1C, "dataCDS-2400bps" },
13927 {0x1D, "dataCDS-4800bps" },
13928 {0x1E, "dataCDS-9600bps" },
13929 {0x1F, "general-dataCDS" },
13930
13931 {0x20, "allPadAccessCA-Services" },
13932 {0x21, "padAccessCA-300bps" },
13933 {0x22, "padAccessCA-1200bps" },
13934 {0x23, "padAccessCA-1200-75bps" },
13935 {0x24, "padAccessCA-2400bps" },
13936 {0x25, "padAccessCA-4800bps" },
13937 {0x26, "padAccessCA-9600bps" },
13938 {0x27, "general-padAccessCA" },
13939
13940 {0x28, "allDataPDS-Services" },
13941 {0x2C, "dataPDS-2400bps" },
13942 {0x2D, "dataPDS-4800bps" },
13943 {0x2E, "dataPDS-9600bps" },
13944 {0x2F, "general-dataPDS" },
13945
13946 {0x30, "allAlternateSpeech-DataCDA" },
13947 {0x38, "allAlternateSpeech-DataCDS" },
13948 {0x40, "allSpeechFollowedByDataCDA" },
13949 {0x48, "allSpeechFollowedByDataCDS" },
13950
13951 {0x50, "allDataCircuitAsynchronous" },
13952 {0x60, "allAsynchronousServices" },
13953 {0x58, "allDataCircuitSynchronous" },
13954 {0x68, "allSynchronousServices" },
13955
13956 {0xD0, "allPLMN-specificBS" },
13957 {0xD1, "plmn-specificBS-1" },
13958 {0xD2, "plmn-specificBS-2" },
13959 {0xD3, "plmn-specificBS-3" },
13960 {0xD4, "plmn-specificBS-4" },
13961 {0xD5, "plmn-specificBS-5" },
13962 {0xD6, "plmn-specificBS-6" },
13963 {0xD7, "plmn-specificBS-7" },
13964 {0xD8, "plmn-specificBS-8" },
13965 {0xD9, "plmn-specificBS-9" },
13966 {0xDA, "plmn-specificBS-A" },
13967 {0xDB, "plmn-specificBS-B" },
13968 {0xDC, "plmn-specificBS-C" },
13969 {0xDD, "plmn-specificBS-D" },
13970 {0xDE, "plmn-specificBS-E" },
13971 {0xDF, "plmn-specificBS-F" },
13972
13973 { 0, NULL }
13974 };
13975
13976 /*--- proto_reg_handoff_gsm_map ---------------------------------------*/
13977 static void range_delete_callback(guint32 ssn)
13978 {
13979     if (ssn) {
13980         dissector_delete("tcap.itu_ssn", ssn, map_handle);
13981     }
13982 }
13983
13984 static void range_add_callback(guint32 ssn)
13985 {
13986     if (ssn) {
13987         dissector_add("tcap.itu_ssn", ssn, map_handle);
13988     }
13989 }
13990
13991 void proto_reg_handoff_gsm_map(void) {
13992
13993     static int map_prefs_initialized = FALSE;
13994     data_handle = find_dissector("data");
13995
13996     if (!map_prefs_initialized) {
13997         map_prefs_initialized = TRUE;
13998         map_handle = create_dissector_handle(dissect_gsm_map, proto_gsm_map);
13999   register_ber_oid_dissector_handle("0.4.0.0.1.0.1.3", map_handle, proto_gsm_map, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version3(3)");  
14000   register_ber_oid_dissector_handle("0.4.0.0.1.0.1.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version2(2)" );
14001   register_ber_oid_dissector_handle("0.4.0.0.1.0.2.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version3(3)" );
14002   register_ber_oid_dissector_handle("0.4.0.0.1.0.2.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version2(2)" );
14003   register_ber_oid_dissector_handle("0.4.0.0.1.0.2.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version1(1)" );
14004   register_ber_oid_dissector_handle("0.4.0.0.1.0.3.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version3(3)" );
14005   register_ber_oid_dissector_handle("0.4.0.0.1.0.3.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version2(2)" );
14006   register_ber_oid_dissector_handle("0.4.0.0.1.0.3.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version1(1)" );
14007   register_ber_oid_dissector_handle("0.4.0.0.1.0.5.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version3(3)" );
14008   register_ber_oid_dissector_handle("0.4.0.0.1.0.5.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version2(2)" );
14009   register_ber_oid_dissector_handle("0.4.0.0.1.0.5.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version1(1)" );
14010   register_ber_oid_dissector_handle("0.4.0.0.1.0.6.4", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) callControlTransfer(6) version4(4)" );
14011   register_ber_oid_dissector_handle("0.4.0.0.1.0.7.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reporting(7) version3(3)" );
14012   register_ber_oid_dissector_handle("0.4.0.0.1.0.8.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) callCompletion(8) version3(3)" );
14013   register_ber_oid_dissector_handle("0.4.0.0.1.0.10.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reset(10) version2(2)" );
14014   register_ber_oid_dissector_handle("0.4.0.0.1.0.10.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reset(10) version1(1)" );
14015   register_ber_oid_dissector_handle("0.4.0.0.1.0.11.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version3(3)" );
14016   register_ber_oid_dissector_handle("0.4.0.0.1.0.11.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version2(2)" );
14017   register_ber_oid_dissector_handle("0.4.0.0.1.0.11.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version1(1)" );
14018   register_ber_oid_dissector_handle("0.4.0.0.1.0.12.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) sIWFSAllocation(12) version3(3)" );
14019   register_ber_oid_dissector_handle("0.4.0.0.1.0.13.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) equipmentMngt(13) version2(2)" );
14020   register_ber_oid_dissector_handle("0.4.0.0.1.0.13.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) equipmentMngt(13) version1(1)" );
14021   register_ber_oid_dissector_handle("0.4.0.0.1.0.14.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version3(3)" );
14022   register_ber_oid_dissector_handle("0.4.0.0.1.0.14.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version2(2)" );
14023   register_ber_oid_dissector_handle("0.4.0.0.1.0.14.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version1(1)" );
14024   register_ber_oid_dissector_handle("0.4.0.0.1.0.15.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version2(2)" );
14025   register_ber_oid_dissector_handle("0.4.0.0.1.0.16.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version3(3)" );
14026   register_ber_oid_dissector_handle("0.4.0.0.1.0.16.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version2(2)" );
14027   register_ber_oid_dissector_handle("0.4.0.0.1.0.16.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version1(1)" );
14028   register_ber_oid_dissector_handle("0.4.0.0.1.0.17.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) tracing(17) version2(2)" );
14029   register_ber_oid_dissector_handle("0.4.0.0.1.0.17.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) tracing(17) version1(1)" );
14030   register_ber_oid_dissector_handle("0.4.0.0.1.0.18.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkFunctionalSs(18) version2(2)" );
14031   register_ber_oid_dissector_handle("0.4.0.0.1.0.18.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkFunctionalSs(18) version1(1)" );
14032   register_ber_oid_dissector_handle("0.4.0.0.1.0.19.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkUnstructuredSs(19) version2(2)" );
14033   register_ber_oid_dissector_handle("0.4.0.0.1.0.20.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgGateway(20) version3(3)" );
14034   register_ber_oid_dissector_handle("0.4.0.0.1.0.20.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgGateway(20) version2(2)" );
14035   register_ber_oid_dissector_handle("0.4.0.0.1.0.20.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgGateway(20) version1(1)" );
14036   register_ber_oid_dissector_handle("0.4.0.0.1.0.21.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgMO-Relay(21) version2(2)" );
14037   register_ber_oid_dissector_handle("0.4.0.0.1.0.21.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) --shortMsgRelay--21 version1(1)" );
14038   register_ber_oid_dissector_handle("0.4.0.0.1.0.22.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataModificationNotification(22) version3(3)" );
14039   register_ber_oid_dissector_handle("0.4.0.0.1.0.23.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgAlert(23) version2(2)" );
14040   register_ber_oid_dissector_handle("0.4.0.0.1.0.23.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgAlert(23) version1(1)" );
14041   register_ber_oid_dissector_handle("0.4.0.0.1.0.24.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) mwdMngt(24) version2(2)" );
14042   register_ber_oid_dissector_handle("0.4.0.0.1.0.24.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) mwdMngt(24) version1(1)" );
14043   register_ber_oid_dissector_handle("0.4.0.0.1.0.25.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgMT-Relay(25) version3(3)" );
14044   register_ber_oid_dissector_handle("0.4.0.0.1.0.25.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgMT-Relay(25) version2(2)" );
14045   register_ber_oid_dissector_handle("0.4.0.0.1.0.26.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) imsiRetrieval(26) version2(2)" );
14046   register_ber_oid_dissector_handle("0.4.0.0.1.0.25.1", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) msPurging(27) version2(2)" );
14047   register_ber_oid_dissector_handle("0.4.0.0.1.0.29.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) anyTimeInfoEnquiry(29) version3(3)" );
14048   register_ber_oid_dissector_handle("0.4.0.0.1.0.31.2", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) oupCallControl(31) version3(3)" );
14049   register_ber_oid_dissector_handle("0.4.0.0.1.0.32.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) gprsLocationUpdate(32) version3(3)" );
14050   register_ber_oid_dissector_handle("0.4.0.0.1.0.33.4", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) rsLocationInfoRetrieval(33) version4(4)" );
14051   register_ber_oid_dissector_handle("0.4.0.0.1.0.34.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) failureReport(34) version3(3)" );
14052   register_ber_oid_dissector_handle("0.4.0.0.1.0.36.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) ss-InvocationNotification(36) version3(3)" );
14053   register_ber_oid_dissector_handle("0.4.0.0.1.0.37.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationSvcGateway(37) version3(3)" );
14054   register_ber_oid_dissector_handle("0.4.0.0.1.0.38.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationSvcEnquiry(38) version3(3)" );
14055   register_ber_oid_dissector_handle("0.4.0.0.1.0.39.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) authenticationFailureReport(39) version3(3)" );
14056   register_ber_oid_dissector_handle("0.4.0.0.1.0.40.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) secureTransportHandling(40) version3(3)" );
14057   register_ber_oid_dissector_handle("0.4.0.0.1.0.42.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) mm-EventReporting(42) version3(3)" );
14058   register_ber_oid_dissector_handle("0.4.0.0.1.0.43.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) anyTimeInfoHandling(43) version3(3)" );
14059     }
14060     else {
14061         range_foreach(ssn_range, range_delete_callback);
14062     }
14063
14064     g_free(ssn_range);
14065     ssn_range = range_copy(global_ssn_range);
14066
14067     range_foreach(ssn_range, range_add_callback);
14068
14069 }
14070
14071 /*--- proto_register_gsm_map -------------------------------------------*/
14072 void proto_register_gsm_map(void) {
14073         module_t *gsm_map_module;
14074
14075   /* List of fields */
14076   static hf_register_info hf[] = {
14077     { &hf_gsm_map_invokeCmd,
14078       { "invokeCmd", "gsm_map.invokeCmd",
14079         FT_UINT32, BASE_DEC, VALS(gsm_map_opr_code_strings), 0,
14080         "InvokePDU/invokeCmd", HFILL }},
14081     { &hf_gsm_map_invokeid,
14082       { "invokeid", "gsm_map.invokeid",
14083         FT_INT32, BASE_DEC, NULL, 0,
14084         "InvokeId/invokeid", HFILL }},
14085     { &hf_gsm_map_absent,
14086       { "absent", "gsm_map.absent",
14087         FT_NONE, BASE_NONE, NULL, 0,
14088         "InvokeId/absent", HFILL }},
14089     { &hf_gsm_map_invokeId,
14090       { "invokeId", "gsm_map.invokeId",
14091         FT_UINT32, BASE_DEC, VALS(InvokeId_vals), 0,
14092         "InvokePDU/invokeId", HFILL }},
14093         { &hf_gsm_map_SendAuthenticationInfoArg,
14094       { "SendAuthenticationInfoArg", "gsm_map.SendAuthenticationInfoArg",
14095         FT_BYTES, BASE_NONE, NULL, 0,
14096         "SendAuthenticationInfoArg", HFILL }},
14097         { &hf_gsm_map_SendAuthenticationInfoRes,
14098       { "SendAuthenticationInfoRes", "gsm_map.SendAuthenticationInfoRes",
14099         FT_BYTES, BASE_NONE, NULL, 0,
14100         "SendAuthenticationInfoRes", HFILL }},
14101     { &hf_gsm_map_currentPassword,
14102       { "currentPassword", "gsm_map.currentPassword",
14103         FT_STRING, BASE_NONE, NULL, 0,
14104         "", HFILL }},
14105         { &hf_gsm_mapSendEndSignal,
14106       { "mapSendEndSignalArg", "gsm_map.mapsendendsignalarg",
14107         FT_BYTES, BASE_NONE, NULL, 0,
14108         "mapSendEndSignalArg", HFILL }},
14109     { &hf_gsm_map_invoke,
14110       { "invoke", "gsm_map.invoke",
14111         FT_NONE, BASE_NONE, NULL, 0,
14112         "GSMMAPPDU/invoke", HFILL }},
14113     { &hf_gsm_map_returnResult,
14114       { "returnResult", "gsm_map.returnResult",
14115         FT_NONE, BASE_NONE, NULL, 0,
14116         "GSMMAPPDU/returnResult", HFILL }},
14117         {&hf_gsm_map_returnResult_result,
14118       { "returnResult_result", "gsm_map.returnresultresult",
14119         FT_BYTES, BASE_NONE, NULL, 0,
14120         "returnResult_result", HFILL }},
14121         {&hf_gsm_map_returnError_result,
14122       { "returnError_result", "gsm_map.returnerrorresult",
14123         FT_UINT32, BASE_DEC, NULL, 0,
14124         "returnError_result", HFILL }},
14125         {&hf_gsm_map_returnError,
14126       { "returnError", "gsm_map.returnError",
14127         FT_NONE, BASE_NONE, NULL, 0,
14128         "GSMMAPPDU/returnError", HFILL }},
14129         {&hf_gsm_map_local_errorCode,
14130       { "Local Error Code", "gsm_map.localerrorCode",
14131         FT_UINT32, BASE_DEC, VALS(gsm_map_err_code_string_vals), 0,
14132         "localerrorCode", HFILL }},
14133         {&hf_gsm_map_global_errorCode_oid,
14134       { "Global Error Code OID", "gsm_map.hlobalerrorCodeoid",
14135         FT_BYTES, BASE_NONE, NULL, 0,
14136         "globalerrorCodeoid", HFILL }},
14137         {&hf_gsm_map_global_errorCode,
14138       { "Global Error Code", "gsm_map.globalerrorCode",
14139         FT_UINT32, BASE_DEC, NULL, 0,
14140         "globalerrorCode", HFILL }},
14141     { &hf_gsm_map_getPassword,
14142       { "Password", "gsm_map.password",
14143         FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0,
14144         "Password", HFILL }},
14145     { &hf_gsm_map_extension,
14146       { "Extension", "gsm_map.extension",
14147         FT_BOOLEAN, 8, TFS(&gsm_map_extension_value), 0x80,
14148         "Extension", HFILL }},
14149     { &hf_gsm_map_nature_of_number,
14150       { "Nature of number", "gsm_map.nature_of_number",
14151         FT_UINT8, BASE_HEX, VALS(gsm_map_nature_of_number_values), 0x70,
14152         "ature of number", HFILL }},
14153     { &hf_gsm_map_number_plan,
14154       { "Number plan", "gsm_map.number_plan",
14155         FT_UINT8, BASE_HEX, VALS(gsm_map_number_plan_values), 0x0f,
14156         "Number plan", HFILL }},
14157         { &hf_gsm_map_isdn_address_digits,
14158       { "ISDN Address digits", "gsm_map.isdn.adress.digits",
14159         FT_STRING, BASE_NONE, NULL, 0,
14160         "ISDN Address digits", HFILL }},
14161         { &hf_gsm_map_servicecentreaddress_digits,
14162       { "ServiceCentreAddress digits", "gsm_map.servicecentreaddress_digits",
14163         FT_STRING, BASE_NONE, NULL, 0,
14164         "ServiceCentreAddress digits", HFILL }},
14165         { &hf_gsm_map_imsi_digits,
14166       { "Imsi digits", "gsm_map.imsi_digits",
14167         FT_STRING, BASE_NONE, NULL, 0,
14168         "Imsi digits", HFILL }},
14169         { &hf_gsm_map_Ss_Status_unused,
14170       { "Unused", "gsm_map.unused",
14171         FT_UINT8, BASE_HEX, NULL, 0xf0,
14172         "Unused", HFILL }},
14173         { &hf_gsm_map_Ss_Status_q_bit,
14174       { "Q bit", "gsm_map.ss_status_q_bit",
14175         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08,
14176         "Q bit", HFILL }},
14177         { &hf_gsm_map_Ss_Status_p_bit,
14178       { "P bit", "gsm_map.ss_status_p_bit",
14179         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04,
14180         "P bit", HFILL }},
14181         { &hf_gsm_map_Ss_Status_r_bit,
14182       { "R bit", "gsm_map.ss_status_r_bit",
14183         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02,
14184         "R bit", HFILL }},
14185         { &hf_gsm_map_Ss_Status_a_bit,
14186       { "A bit", "gsm_map.ss_status_a_bit",
14187         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
14188         "A bit", HFILL }},
14189
14190
14191 /*--- Included file: packet-gsm_map-hfarr.c ---*/
14192
14193     { &hf_gsm_map_protocolId,
14194       { "protocolId", "gsm_map.protocolId",
14195         FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0,
14196         "", HFILL }},
14197     { &hf_gsm_map_signalInfo,
14198       { "signalInfo", "gsm_map.signalInfo",
14199         FT_BYTES, BASE_HEX, NULL, 0,
14200         "", HFILL }},
14201     { &hf_gsm_map_extensionContainer,
14202       { "extensionContainer", "gsm_map.extensionContainer",
14203         FT_NONE, BASE_NONE, NULL, 0,
14204         "", HFILL }},
14205     { &hf_gsm_map_imsi,
14206       { "imsi", "gsm_map.imsi",
14207         FT_BYTES, BASE_HEX, NULL, 0,
14208         "", HFILL }},
14209     { &hf_gsm_map_msc_Number,
14210       { "msc-Number", "gsm_map.msc_Number",
14211         FT_BYTES, BASE_HEX, NULL, 0,
14212         "", HFILL }},
14213     { &hf_gsm_map_vlr_Number,
14214       { "vlr-Number", "gsm_map.vlr_Number",
14215         FT_BYTES, BASE_HEX, NULL, 0,
14216         "", HFILL }},
14217     { &hf_gsm_map_lmsi,
14218       { "lmsi", "gsm_map.lmsi",
14219         FT_BYTES, BASE_HEX, NULL, 0,
14220         "", HFILL }},
14221     { &hf_gsm_map_vlr_Capability,
14222       { "vlr-Capability", "gsm_map.vlr_Capability",
14223         FT_NONE, BASE_NONE, NULL, 0,
14224         "", HFILL }},
14225     { &hf_gsm_map_informPreviousNetworkEntity,
14226       { "informPreviousNetworkEntity", "gsm_map.informPreviousNetworkEntity",
14227         FT_NONE, BASE_NONE, NULL, 0,
14228         "", HFILL }},
14229     { &hf_gsm_map_cs_LCS_NotSupportedByUE,
14230       { "cs-LCS-NotSupportedByUE", "gsm_map.cs_LCS_NotSupportedByUE",
14231         FT_NONE, BASE_NONE, NULL, 0,
14232         "UpdateLocationArg/cs-LCS-NotSupportedByUE", HFILL }},
14233     { &hf_gsm_map_v_gmlc_Address,
14234       { "v-gmlc-Address", "gsm_map.v_gmlc_Address",
14235         FT_BYTES, BASE_HEX, NULL, 0,
14236         "", HFILL }},
14237     { &hf_gsm_map_add_info,
14238       { "add-info", "gsm_map.add_info",
14239         FT_NONE, BASE_NONE, NULL, 0,
14240         "", HFILL }},
14241     { &hf_gsm_map_hlr_Number,
14242       { "hlr-Number", "gsm_map.hlr_Number",
14243         FT_BYTES, BASE_HEX, NULL, 0,
14244         "", HFILL }},
14245     { &hf_gsm_map_add_Capability,
14246       { "add-Capability", "gsm_map.add_Capability",
14247         FT_NONE, BASE_NONE, NULL, 0,
14248         "", HFILL }},
14249     { &hf_gsm_map_supportedCamelPhases,
14250       { "supportedCamelPhases", "gsm_map.supportedCamelPhases",
14251         FT_BYTES, BASE_HEX, NULL, 0,
14252         "", HFILL }},
14253     { &hf_gsm_map_solsaSupportIndicator,
14254       { "solsaSupportIndicator", "gsm_map.solsaSupportIndicator",
14255         FT_NONE, BASE_NONE, NULL, 0,
14256         "", HFILL }},
14257     { &hf_gsm_map_istSupportIndicator,
14258       { "istSupportIndicator", "gsm_map.istSupportIndicator",
14259         FT_UINT32, BASE_DEC, VALS(gsm_map_IST_SupportIndicator_vals), 0,
14260         "", HFILL }},
14261     { &hf_gsm_map_superChargerSupportedInServingNetworkEntity,
14262       { "superChargerSupportedInServingNetworkEntity", "gsm_map.superChargerSupportedInServingNetworkEntity",
14263         FT_UINT32, BASE_DEC, VALS(gsm_map_SuperChargerInfo_vals), 0,
14264         "", HFILL }},
14265     { &hf_gsm_map_longFTN_Supported,
14266       { "longFTN-Supported", "gsm_map.longFTN_Supported",
14267         FT_NONE, BASE_NONE, NULL, 0,
14268         "", HFILL }},
14269     { &hf_gsm_map_supportedLCS_CapabilitySets,
14270       { "supportedLCS-CapabilitySets", "gsm_map.supportedLCS_CapabilitySets",
14271         FT_BYTES, BASE_HEX, NULL, 0,
14272         "", HFILL }},
14273     { &hf_gsm_map_offeredCamel4CSIs,
14274       { "offeredCamel4CSIs", "gsm_map.offeredCamel4CSIs",
14275         FT_BYTES, BASE_HEX, NULL, 0,
14276         "", HFILL }},
14277     { &hf_gsm_map_sendSubscriberData,
14278       { "sendSubscriberData", "gsm_map.sendSubscriberData",
14279         FT_NONE, BASE_NONE, NULL, 0,
14280         "SuperChargerInfo/sendSubscriberData", HFILL }},
14281     { &hf_gsm_map_subscriberDataStored,
14282       { "subscriberDataStored", "gsm_map.subscriberDataStored",
14283         FT_BYTES, BASE_HEX, NULL, 0,
14284         "SuperChargerInfo/subscriberDataStored", HFILL }},
14285     { &hf_gsm_map_imeisv,
14286       { "imeisv", "gsm_map.imeisv",
14287         FT_BYTES, BASE_HEX, NULL, 0,
14288         "", HFILL }},
14289     { &hf_gsm_map_skipSubscriberDataUpdate,
14290       { "skipSubscriberDataUpdate", "gsm_map.skipSubscriberDataUpdate",
14291         FT_NONE, BASE_NONE, NULL, 0,
14292         "ADD-Info/skipSubscriberDataUpdate", HFILL }},
14293     { &hf_gsm_map_PrivateExtensionList_item,
14294       { "Item", "gsm_map.PrivateExtensionList_item",
14295         FT_NONE, BASE_NONE, NULL, 0,
14296         "PrivateExtensionList/_item", HFILL }},
14297     { &hf_gsm_map_extId,
14298       { "extId", "gsm_map.extId",
14299         FT_STRING, BASE_NONE, NULL, 0,
14300         "PrivateExtension/extId", HFILL }},
14301     { &hf_gsm_map_extType,
14302       { "extType", "gsm_map.extType",
14303         FT_NONE, BASE_NONE, NULL, 0,
14304         "PrivateExtension/extType", HFILL }},
14305     { &hf_gsm_map_privateExtensionList,
14306       { "privateExtensionList", "gsm_map.privateExtensionList",
14307         FT_NONE, BASE_NONE, NULL, 0,
14308         "", HFILL }},
14309     { &hf_gsm_map_slr_Arg_PCS_Extensions,
14310       { "slr-Arg-PCS-Extensions", "gsm_map.slr_Arg_PCS_Extensions",
14311         FT_NONE, BASE_NONE, NULL, 0,
14312         "SLR-ArgExtensionContainer/slr-Arg-PCS-Extensions", HFILL }},
14313     { &hf_gsm_map_na_ESRK_Request,
14314       { "na-ESRK-Request", "gsm_map.na_ESRK_Request",
14315         FT_NONE, BASE_NONE, NULL, 0,
14316         "SLR-Arg-PCS-Extensions/na-ESRK-Request", HFILL }},
14317     { &hf_gsm_map_identity,
14318       { "identity", "gsm_map.identity",
14319         FT_UINT32, BASE_DEC, VALS(gsm_map_Identity_vals), 0,
14320         "CancelLocationArg/identity", HFILL }},
14321     { &hf_gsm_map_cancellationType,
14322       { "cancellationType", "gsm_map.cancellationType",
14323         FT_UINT32, BASE_DEC, VALS(gsm_map_CancellationType_vals), 0,
14324         "CancelLocationArg/cancellationType", HFILL }},
14325     { &hf_gsm_map_sgsn_Number,
14326       { "sgsn-Number", "gsm_map.sgsn_Number",
14327         FT_BYTES, BASE_HEX, NULL, 0,
14328         "", HFILL }},
14329     { &hf_gsm_map_freezeTMSI,
14330       { "freezeTMSI", "gsm_map.freezeTMSI",
14331         FT_NONE, BASE_NONE, NULL, 0,
14332         "PurgeMSRes/freezeTMSI", HFILL }},
14333     { &hf_gsm_map_freezeP_TMSI,
14334       { "freezeP-TMSI", "gsm_map.freezeP_TMSI",
14335         FT_NONE, BASE_NONE, NULL, 0,
14336         "PurgeMSRes/freezeP-TMSI", HFILL }},
14337     { &hf_gsm_map_tmsi,
14338       { "tmsi", "gsm_map.tmsi",
14339         FT_BYTES, BASE_HEX, NULL, 0,
14340         "", HFILL }},
14341     { &hf_gsm_map_numberOfRequestedVectors,
14342       { "numberOfRequestedVectors", "gsm_map.numberOfRequestedVectors",
14343         FT_UINT32, BASE_DEC, NULL, 0,
14344         "", HFILL }},
14345     { &hf_gsm_map_segmentationProhibited,
14346       { "segmentationProhibited", "gsm_map.segmentationProhibited",
14347         FT_NONE, BASE_NONE, NULL, 0,
14348         "", HFILL }},
14349     { &hf_gsm_map_previous_LAI,
14350       { "previous-LAI", "gsm_map.previous_LAI",
14351         FT_BYTES, BASE_HEX, NULL, 0,
14352         "SendIdentificationArg/previous-LAI", HFILL }},
14353     { &hf_gsm_map_hopCounter,
14354       { "hopCounter", "gsm_map.hopCounter",
14355         FT_UINT32, BASE_DEC, NULL, 0,
14356         "SendIdentificationArg/hopCounter", HFILL }},
14357     { &hf_gsm_map_authenticationSetList,
14358       { "authenticationSetList", "gsm_map.authenticationSetList",
14359         FT_UINT32, BASE_DEC, VALS(gsm_map_AuthenticationSetList_vals), 0,
14360         "", HFILL }},
14361     { &hf_gsm_map_currentSecurityContext,
14362       { "currentSecurityContext", "gsm_map.currentSecurityContext",
14363         FT_UINT32, BASE_DEC, VALS(gsm_map_CurrentSecurityContext_vals), 0,
14364         "SendIdentificationRes/currentSecurityContext", HFILL }},
14365     { &hf_gsm_map_tripletList,
14366       { "tripletList", "gsm_map.tripletList",
14367         FT_NONE, BASE_NONE, NULL, 0,
14368         "AuthenticationSetList/tripletList", HFILL }},
14369     { &hf_gsm_map_quintupletList,
14370       { "quintupletList", "gsm_map.quintupletList",
14371         FT_NONE, BASE_NONE, NULL, 0,
14372         "AuthenticationSetList/quintupletList", HFILL }},
14373     { &hf_gsm_map_TripletList_item,
14374       { "Item", "gsm_map.TripletList_item",
14375         FT_NONE, BASE_NONE, NULL, 0,
14376         "TripletList/_item", HFILL }},
14377     { &hf_gsm_map_QuintupletList_item,
14378       { "Item", "gsm_map.QuintupletList_item",
14379         FT_NONE, BASE_NONE, NULL, 0,
14380         "QuintupletList/_item", HFILL }},
14381     { &hf_gsm_map_rand,
14382       { "rand", "gsm_map.rand",
14383         FT_BYTES, BASE_HEX, NULL, 0,
14384         "", HFILL }},
14385     { &hf_gsm_map_sres,
14386       { "sres", "gsm_map.sres",
14387         FT_BYTES, BASE_HEX, NULL, 0,
14388         "", HFILL }},
14389     { &hf_gsm_map_kc,
14390       { "kc", "gsm_map.kc",
14391         FT_BYTES, BASE_HEX, NULL, 0,
14392         "", HFILL }},
14393     { &hf_gsm_map_xres,
14394       { "xres", "gsm_map.xres",
14395         FT_BYTES, BASE_HEX, NULL, 0,
14396         "AuthenticationQuintuplet/xres", HFILL }},
14397     { &hf_gsm_map_ck,
14398       { "ck", "gsm_map.ck",
14399         FT_BYTES, BASE_HEX, NULL, 0,
14400         "", HFILL }},
14401     { &hf_gsm_map_ik,
14402       { "ik", "gsm_map.ik",
14403         FT_BYTES, BASE_HEX, NULL, 0,
14404         "", HFILL }},
14405     { &hf_gsm_map_autn,
14406       { "autn", "gsm_map.autn",
14407         FT_BYTES, BASE_HEX, NULL, 0,
14408         "AuthenticationQuintuplet/autn", HFILL }},
14409     { &hf_gsm_map_gsm_SecurityContextData,
14410       { "gsm-SecurityContextData", "gsm_map.gsm_SecurityContextData",
14411         FT_NONE, BASE_NONE, NULL, 0,
14412         "CurrentSecurityContext/gsm-SecurityContextData", HFILL }},
14413     { &hf_gsm_map_umts_SecurityContextData,
14414       { "umts-SecurityContextData", "gsm_map.umts_SecurityContextData",
14415         FT_NONE, BASE_NONE, NULL, 0,
14416         "CurrentSecurityContext/umts-SecurityContextData", HFILL }},
14417     { &hf_gsm_map_cksn,
14418       { "cksn", "gsm_map.cksn",
14419         FT_BYTES, BASE_HEX, NULL, 0,
14420         "GSM-SecurityContextData/cksn", HFILL }},
14421     { &hf_gsm_map_ksi,
14422       { "ksi", "gsm_map.ksi",
14423         FT_BYTES, BASE_HEX, NULL, 0,
14424         "UMTS-SecurityContextData/ksi", HFILL }},
14425     { &hf_gsm_map_targetCellId,
14426       { "targetCellId", "gsm_map.targetCellId",
14427         FT_BYTES, BASE_HEX, NULL, 0,
14428         "", HFILL }},
14429     { &hf_gsm_map_ho_NumberNotRequired,
14430       { "ho-NumberNotRequired", "gsm_map.ho_NumberNotRequired",
14431         FT_NONE, BASE_NONE, NULL, 0,
14432         "", HFILL }},
14433     { &hf_gsm_map_bss_APDU,
14434       { "bss-APDU", "gsm_map.bss_APDU",
14435         FT_NONE, BASE_NONE, NULL, 0,
14436         "", HFILL }},
14437     { &hf_gsm_map_targetRNCId,
14438       { "targetRNCId", "gsm_map.targetRNCId",
14439         FT_BYTES, BASE_HEX, NULL, 0,
14440         "", HFILL }},
14441     { &hf_gsm_map_an_APDU,
14442       { "an-APDU", "gsm_map.an_APDU",
14443         FT_NONE, BASE_NONE, NULL, 0,
14444         "", HFILL }},
14445     { &hf_gsm_map_multipleBearerRequested,
14446       { "multipleBearerRequested", "gsm_map.multipleBearerRequested",
14447         FT_NONE, BASE_NONE, NULL, 0,
14448         "PrepareHO-ArgV3/multipleBearerRequested", HFILL }},
14449     { &hf_gsm_map_integrityProtectionInfo,
14450       { "integrityProtectionInfo", "gsm_map.integrityProtectionInfo",
14451         FT_BYTES, BASE_HEX, NULL, 0,
14452         "", HFILL }},
14453     { &hf_gsm_map_encryptionInfo,
14454       { "encryptionInfo", "gsm_map.encryptionInfo",
14455         FT_BYTES, BASE_HEX, NULL, 0,
14456         "", HFILL }},
14457     { &hf_gsm_map_radioResourceInformation,
14458       { "radioResourceInformation", "gsm_map.radioResourceInformation",
14459         FT_BYTES, BASE_HEX, NULL, 0,
14460         "", HFILL }},
14461     { &hf_gsm_map_allowedGSM_Algorithms,
14462       { "allowedGSM-Algorithms", "gsm_map.allowedGSM_Algorithms",
14463         FT_BYTES, BASE_HEX, NULL, 0,
14464         "", HFILL }},
14465     { &hf_gsm_map_allowedUMTS_Algorithms,
14466       { "allowedUMTS-Algorithms", "gsm_map.allowedUMTS_Algorithms",
14467         FT_NONE, BASE_NONE, NULL, 0,
14468         "", HFILL }},
14469     { &hf_gsm_map_radioResourceList,
14470       { "radioResourceList", "gsm_map.radioResourceList",
14471         FT_NONE, BASE_NONE, NULL, 0,
14472         "", HFILL }},
14473     { &hf_gsm_map_rab_Id,
14474       { "rab-Id", "gsm_map.rab_Id",
14475         FT_UINT32, BASE_DEC, NULL, 0,
14476         "", HFILL }},
14477     { &hf_gsm_map_bssmap_ServiceHandover,
14478       { "bssmap-ServiceHandover", "gsm_map.bssmap_ServiceHandover",
14479         FT_BYTES, BASE_HEX, NULL, 0,
14480         "", HFILL }},
14481     { &hf_gsm_map_ranap_ServiceHandover,
14482       { "ranap-ServiceHandover", "gsm_map.ranap_ServiceHandover",
14483         FT_BYTES, BASE_HEX, NULL, 0,
14484         "", HFILL }},
14485     { &hf_gsm_map_bssmap_ServiceHandoverList,
14486       { "bssmap-ServiceHandoverList", "gsm_map.bssmap_ServiceHandoverList",
14487         FT_NONE, BASE_NONE, NULL, 0,
14488         "", HFILL }},
14489     { &hf_gsm_map_asciCallReference,
14490       { "asciCallReference", "gsm_map.asciCallReference",
14491         FT_BYTES, BASE_HEX, NULL, 0,
14492         "", HFILL }},
14493     { &hf_gsm_map_geran_classmark,
14494       { "geran-classmark", "gsm_map.geran_classmark",
14495         FT_BYTES, BASE_HEX, NULL, 0,
14496         "", HFILL }},
14497     { &hf_gsm_map_iuCurrentlyUsedCodec,
14498       { "iuCurrentlyUsedCodec", "gsm_map.iuCurrentlyUsedCodec",
14499         FT_BYTES, BASE_HEX, NULL, 0,
14500         "PrepareHO-ArgV3/iuCurrentlyUsedCodec", HFILL }},
14501     { &hf_gsm_map_iuSupportedCodecsList,
14502       { "iuSupportedCodecsList", "gsm_map.iuSupportedCodecsList",
14503         FT_NONE, BASE_NONE, NULL, 0,
14504         "", HFILL }},
14505     { &hf_gsm_map_rab_ConfigurationIndicator,
14506       { "rab-ConfigurationIndicator", "gsm_map.rab_ConfigurationIndicator",
14507         FT_NONE, BASE_NONE, NULL, 0,
14508         "", HFILL }},
14509     { &hf_gsm_map_uesbi_Iu,
14510       { "uesbi-Iu", "gsm_map.uesbi_Iu",
14511         FT_NONE, BASE_NONE, NULL, 0,
14512         "PrepareHO-ArgV3/uesbi-Iu", HFILL }},
14513     { &hf_gsm_map_BSSMAP_ServiceHandoverList_item,
14514       { "Item", "gsm_map.BSSMAP_ServiceHandoverList_item",
14515         FT_NONE, BASE_NONE, NULL, 0,
14516         "BSSMAP-ServiceHandoverList/_item", HFILL }},
14517     { &hf_gsm_map_RadioResourceList_item,
14518       { "Item", "gsm_map.RadioResourceList_item",
14519         FT_NONE, BASE_NONE, NULL, 0,
14520         "RadioResourceList/_item", HFILL }},
14521     { &hf_gsm_map_handoverNumber,
14522       { "handoverNumber", "gsm_map.handoverNumber",
14523         FT_BYTES, BASE_HEX, NULL, 0,
14524         "", HFILL }},
14525     { &hf_gsm_map_relocationNumberList,
14526       { "relocationNumberList", "gsm_map.relocationNumberList",
14527         FT_NONE, BASE_NONE, NULL, 0,
14528         "PrepareHO-ResV3/relocationNumberList", HFILL }},
14529     { &hf_gsm_map_multicallBearerInfo,
14530       { "multicallBearerInfo", "gsm_map.multicallBearerInfo",
14531         FT_UINT32, BASE_DEC, NULL, 0,
14532         "PrepareHO-ResV3/multicallBearerInfo", HFILL }},
14533     { &hf_gsm_map_multipleBearerNotSupported,
14534       { "multipleBearerNotSupported", "gsm_map.multipleBearerNotSupported",
14535         FT_NONE, BASE_NONE, NULL, 0,
14536         "PrepareHO-ResV3/multipleBearerNotSupported", HFILL }},
14537     { &hf_gsm_map_selectedUMTS_Algorithms,
14538       { "selectedUMTS-Algorithms", "gsm_map.selectedUMTS_Algorithms",
14539         FT_NONE, BASE_NONE, NULL, 0,
14540         "", HFILL }},
14541     { &hf_gsm_map_chosenRadioResourceInformation,
14542       { "chosenRadioResourceInformation", "gsm_map.chosenRadioResourceInformation",
14543         FT_NONE, BASE_NONE, NULL, 0,
14544         "", HFILL }},
14545     { &hf_gsm_map_iuSelectedCodec,
14546       { "iuSelectedCodec", "gsm_map.iuSelectedCodec",
14547         FT_BYTES, BASE_HEX, NULL, 0,
14548         "", HFILL }},
14549     { &hf_gsm_map_iuAvailableCodecsList,
14550       { "iuAvailableCodecsList", "gsm_map.iuAvailableCodecsList",
14551         FT_NONE, BASE_NONE, NULL, 0,
14552         "", HFILL }},
14553     { &hf_gsm_map_integrityProtectionAlgorithm,
14554       { "integrityProtectionAlgorithm", "gsm_map.integrityProtectionAlgorithm",
14555         FT_BYTES, BASE_HEX, NULL, 0,
14556         "SelectedUMTS-Algorithms/integrityProtectionAlgorithm", HFILL }},
14557     { &hf_gsm_map_encryptionAlgorithm,
14558       { "encryptionAlgorithm", "gsm_map.encryptionAlgorithm",
14559         FT_BYTES, BASE_HEX, NULL, 0,
14560         "SelectedUMTS-Algorithms/encryptionAlgorithm", HFILL }},
14561     { &hf_gsm_map_chosenChannelInfo,
14562       { "chosenChannelInfo", "gsm_map.chosenChannelInfo",
14563         FT_BYTES, BASE_HEX, NULL, 0,
14564         "ChosenRadioResourceInformation/chosenChannelInfo", HFILL }},
14565     { &hf_gsm_map_chosenSpeechVersion,
14566       { "chosenSpeechVersion", "gsm_map.chosenSpeechVersion",
14567         FT_BYTES, BASE_HEX, NULL, 0,
14568         "ChosenRadioResourceInformation/chosenSpeechVersion", HFILL }},
14569     { &hf_gsm_map_RelocationNumberList_item,
14570       { "Item", "gsm_map.RelocationNumberList_item",
14571         FT_NONE, BASE_NONE, NULL, 0,
14572         "RelocationNumberList/_item", HFILL }},
14573     { &hf_gsm_map_selectedGSM_Algorithm,
14574       { "selectedGSM-Algorithm", "gsm_map.selectedGSM_Algorithm",
14575         FT_BYTES, BASE_HEX, NULL, 0,
14576         "ProcessAccessSignallingArgV3/selectedGSM-Algorithm", HFILL }},
14577     { &hf_gsm_map_selectedRab_Id,
14578       { "selectedRab-Id", "gsm_map.selectedRab_Id",
14579         FT_UINT32, BASE_DEC, NULL, 0,
14580         "", HFILL }},
14581     { &hf_gsm_map_iUSelectedCodec,
14582       { "iUSelectedCodec", "gsm_map.iUSelectedCodec",
14583         FT_BYTES, BASE_HEX, NULL, 0,
14584         "ProcessAccessSignallingArgV3/iUSelectedCodec", HFILL }},
14585     { &hf_gsm_map_utranCodecList,
14586       { "utranCodecList", "gsm_map.utranCodecList",
14587         FT_NONE, BASE_NONE, NULL, 0,
14588         "SupportedCodecsList/utranCodecList", HFILL }},
14589     { &hf_gsm_map_geranCodecList,
14590       { "geranCodecList", "gsm_map.geranCodecList",
14591         FT_NONE, BASE_NONE, NULL, 0,
14592         "SupportedCodecsList/geranCodecList", HFILL }},
14593     { &hf_gsm_map_codec1,
14594       { "codec1", "gsm_map.codec1",
14595         FT_BYTES, BASE_HEX, NULL, 0,
14596         "CodecList/codec1", HFILL }},
14597     { &hf_gsm_map_codec2,
14598       { "codec2", "gsm_map.codec2",
14599         FT_BYTES, BASE_HEX, NULL, 0,
14600         "CodecList/codec2", HFILL }},
14601     { &hf_gsm_map_codec3,
14602       { "codec3", "gsm_map.codec3",
14603         FT_BYTES, BASE_HEX, NULL, 0,
14604         "CodecList/codec3", HFILL }},
14605     { &hf_gsm_map_codec4,
14606       { "codec4", "gsm_map.codec4",
14607         FT_BYTES, BASE_HEX, NULL, 0,
14608         "CodecList/codec4", HFILL }},
14609     { &hf_gsm_map_codec5,
14610       { "codec5", "gsm_map.codec5",
14611         FT_BYTES, BASE_HEX, NULL, 0,
14612         "CodecList/codec5", HFILL }},
14613     { &hf_gsm_map_codec6,
14614       { "codec6", "gsm_map.codec6",
14615         FT_BYTES, BASE_HEX, NULL, 0,
14616         "CodecList/codec6", HFILL }},
14617     { &hf_gsm_map_codec7,
14618       { "codec7", "gsm_map.codec7",
14619         FT_BYTES, BASE_HEX, NULL, 0,
14620         "CodecList/codec7", HFILL }},
14621     { &hf_gsm_map_codec8,
14622       { "codec8", "gsm_map.codec8",
14623         FT_BYTES, BASE_HEX, NULL, 0,
14624         "CodecList/codec8", HFILL }},
14625     { &hf_gsm_map_keyStatus,
14626       { "keyStatus", "gsm_map.keyStatus",
14627         FT_UINT32, BASE_DEC, VALS(gsm_map_KeyStatus_vals), 0,
14628         "ForwardAccessSignallingArgV3/keyStatus", HFILL }},
14629     { &hf_gsm_map_currentlyUsedCodec,
14630       { "currentlyUsedCodec", "gsm_map.currentlyUsedCodec",
14631         FT_BYTES, BASE_HEX, NULL, 0,
14632         "ForwardAccessSignallingArgV3/currentlyUsedCodec", HFILL }},
14633     { &hf_gsm_map_integrityProtectionAlgorithms,
14634       { "integrityProtectionAlgorithms", "gsm_map.integrityProtectionAlgorithms",
14635         FT_BYTES, BASE_HEX, NULL, 0,
14636         "AllowedUMTS-Algorithms/integrityProtectionAlgorithms", HFILL }},
14637     { &hf_gsm_map_encryptionAlgorithms,
14638       { "encryptionAlgorithms", "gsm_map.encryptionAlgorithms",
14639         FT_BYTES, BASE_HEX, NULL, 0,
14640         "AllowedUMTS-Algorithms/encryptionAlgorithms", HFILL }},
14641     { &hf_gsm_map_targetMSC_Number,
14642       { "targetMSC-Number", "gsm_map.targetMSC_Number",
14643         FT_BYTES, BASE_HEX, NULL, 0,
14644         "", HFILL }},
14645     { &hf_gsm_map_immediateResponsePreferred,
14646       { "immediateResponsePreferred", "gsm_map.immediateResponsePreferred",
14647         FT_NONE, BASE_NONE, NULL, 0,
14648         "SendAuthenticationInfoArgV2/immediateResponsePreferred", HFILL }},
14649     { &hf_gsm_map_re_synchronisationInfo,
14650       { "re-synchronisationInfo", "gsm_map.re_synchronisationInfo",
14651         FT_NONE, BASE_NONE, NULL, 0,
14652         "SendAuthenticationInfoArgV2/re-synchronisationInfo", HFILL }},
14653     { &hf_gsm_map_requestingNodeType,
14654       { "requestingNodeType", "gsm_map.requestingNodeType",
14655         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestingNodeType_vals), 0,
14656         "SendAuthenticationInfoArgV2/requestingNodeType", HFILL }},
14657     { &hf_gsm_map_requestingPLMN_Id,
14658       { "requestingPLMN-Id", "gsm_map.requestingPLMN_Id",
14659         FT_BYTES, BASE_HEX, NULL, 0,
14660         "SendAuthenticationInfoArgV2/requestingPLMN-Id", HFILL }},
14661     { &hf_gsm_map_SendAuthenticationInfoRes_item,
14662       { "Item", "gsm_map.SendAuthenticationInfoRes_item",
14663         FT_NONE, BASE_NONE, NULL, 0,
14664         "SendAuthenticationInfoRes/_item", HFILL }},
14665     { &hf_gsm_map_auts,
14666       { "auts", "gsm_map.auts",
14667         FT_BYTES, BASE_HEX, NULL, 0,
14668         "Re-synchronisationInfo/auts", HFILL }},
14669     { &hf_gsm_map_imei,
14670       { "imei", "gsm_map.imei",
14671         FT_BYTES, BASE_HEX, NULL, 0,
14672         "", HFILL }},
14673     { &hf_gsm_map_requestedEquipmentInfo,
14674       { "requestedEquipmentInfo", "gsm_map.requestedEquipmentInfo",
14675         FT_BYTES, BASE_HEX, NULL, 0,
14676         "CheckIMEIArgV2/requestedEquipmentInfo", HFILL }},
14677     { &hf_gsm_map_equipmentStatus,
14678       { "equipmentStatus", "gsm_map.equipmentStatus",
14679         FT_UINT32, BASE_DEC, VALS(gsm_map_EquipmentStatus_vals), 0,
14680         "CheckIMEIRes/equipmentStatus", HFILL }},
14681     { &hf_gsm_map_bmuef,
14682       { "bmuef", "gsm_map.bmuef",
14683         FT_NONE, BASE_NONE, NULL, 0,
14684         "CheckIMEIRes/bmuef", HFILL }},
14685     { &hf_gsm_map_uesbi_IuA,
14686       { "uesbi-IuA", "gsm_map.uesbi_IuA",
14687         FT_BYTES, BASE_HEX, NULL, 0,
14688         "UESBI-Iu/uesbi-IuA", HFILL }},
14689     { &hf_gsm_map_uesbi_IuB,
14690       { "uesbi-IuB", "gsm_map.uesbi_IuB",
14691         FT_BYTES, BASE_HEX, NULL, 0,
14692         "UESBI-Iu/uesbi-IuB", HFILL }},
14693     { &hf_gsm_map_bearerservice,
14694       { "bearerservice", "gsm_map.bearerservice",
14695         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
14696         "BasicService/bearerservice", HFILL }},
14697     { &hf_gsm_map_teleservice,
14698       { "teleservice", "gsm_map.teleservice",
14699         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
14700         "BasicService/teleservice", HFILL }},
14701     { &hf_gsm_map_BasicServiceGroupList_item,
14702       { "Item", "gsm_map.BasicServiceGroupList_item",
14703         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_vals), 0,
14704         "BasicServiceGroupList/_item", HFILL }},
14705     { &hf_gsm_map_bcsmTriggerDetectionPoint,
14706       { "bcsmTriggerDetectionPoint", "gsm_map.bcsmTriggerDetectionPoint",
14707         FT_UINT32, BASE_DEC, VALS(gsm_map_BcsmTriggerDetectionPoint_vals), 0,
14708         "BcsmCamelTDPData/bcsmTriggerDetectionPoint", HFILL }},
14709     { &hf_gsm_map_serviceKey,
14710       { "serviceKey", "gsm_map.serviceKey",
14711         FT_UINT32, BASE_DEC, NULL, 0,
14712         "", HFILL }},
14713     { &hf_gsm_map_gsmSCFAddress,
14714       { "gsmSCFAddress", "gsm_map.gsmSCFAddress",
14715         FT_BYTES, BASE_HEX, NULL, 0,
14716         "BcsmCamelTDPData/gsmSCFAddress", HFILL }},
14717     { &hf_gsm_map_defaultCallHandling,
14718       { "defaultCallHandling", "gsm_map.defaultCallHandling",
14719         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultCallHandling_vals), 0,
14720         "", HFILL }},
14721     { &hf_gsm_map_BcsmCamelTDPDataList_item,
14722       { "Item", "gsm_map.BcsmCamelTDPDataList_item",
14723         FT_NONE, BASE_NONE, NULL, 0,
14724         "BcsmCamelTDPDataList/_item", HFILL }},
14725     { &hf_gsm_map_o_BcsmCamelTDPDataList,
14726       { "o-BcsmCamelTDPDataList", "gsm_map.o_BcsmCamelTDPDataList",
14727         FT_NONE, BASE_NONE, NULL, 0,
14728         "O-CSI/o-BcsmCamelTDPDataList", HFILL }},
14729     { &hf_gsm_map_camelCapabilityHandling,
14730       { "camelCapabilityHandling", "gsm_map.camelCapabilityHandling",
14731         FT_UINT32, BASE_DEC, NULL, 0,
14732         "", HFILL }},
14733     { &hf_gsm_map_notificationToCSE,
14734       { "notificationToCSE", "gsm_map.notificationToCSE",
14735         FT_NONE, BASE_NONE, NULL, 0,
14736         "", HFILL }},
14737     { &hf_gsm_map_csiActive,
14738       { "csiActive", "gsm_map.csiActive",
14739         FT_NONE, BASE_NONE, NULL, 0,
14740         "O-CSI/csiActive", HFILL }},
14741     { &hf_gsm_map_O_BcsmCamelTDPDataList_item,
14742       { "Item", "gsm_map.O_BcsmCamelTDPDataList_item",
14743         FT_NONE, BASE_NONE, NULL, 0,
14744         "O-BcsmCamelTDPDataList/_item", HFILL }},
14745     { &hf_gsm_map_o_BcsmTriggerDetectionPoint,
14746       { "o-BcsmTriggerDetectionPoint", "gsm_map.o_BcsmTriggerDetectionPoint",
14747         FT_UINT32, BASE_DEC, VALS(gsm_map_O_BcsmTriggerDetectionPoint_vals), 0,
14748         "", HFILL }},
14749     { &hf_gsm_map_gsmSCF_Address,
14750       { "gsmSCF-Address", "gsm_map.gsmSCF_Address",
14751         FT_BYTES, BASE_HEX, NULL, 0,
14752         "", HFILL }},
14753     { &hf_gsm_map_msisdn,
14754       { "msisdn", "gsm_map.msisdn",
14755         FT_BYTES, BASE_HEX, NULL, 0,
14756         "", HFILL }},
14757     { &hf_gsm_map_category,
14758       { "category", "gsm_map.category",
14759         FT_BYTES, BASE_HEX, NULL, 0,
14760         "InsertSubscriberDataArg/category", HFILL }},
14761     { &hf_gsm_map_subscriberStatus,
14762       { "subscriberStatus", "gsm_map.subscriberStatus",
14763         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberStatus_vals), 0,
14764         "InsertSubscriberDataArg/subscriberStatus", HFILL }},
14765     { &hf_gsm_map_bearerserviceList,
14766       { "bearerserviceList", "gsm_map.bearerserviceList",
14767         FT_NONE, BASE_NONE, NULL, 0,
14768         "InsertSubscriberDataArg/bearerserviceList", HFILL }},
14769     { &hf_gsm_map_teleserviceList,
14770       { "teleserviceList", "gsm_map.teleserviceList",
14771         FT_NONE, BASE_NONE, NULL, 0,
14772         "", HFILL }},
14773     { &hf_gsm_map_provisionedSS,
14774       { "provisionedSS", "gsm_map.provisionedSS",
14775         FT_NONE, BASE_NONE, NULL, 0,
14776         "InsertSubscriberDataArg/provisionedSS", HFILL }},
14777     { &hf_gsm_map_odb_Data,
14778       { "odb-Data", "gsm_map.odb_Data",
14779         FT_NONE, BASE_NONE, NULL, 0,
14780         "", HFILL }},
14781     { &hf_gsm_map_roamingRestrictionDueToUnsupportedFeature,
14782       { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.roamingRestrictionDueToUnsupportedFeature",
14783         FT_NONE, BASE_NONE, NULL, 0,
14784         "", HFILL }},
14785     { &hf_gsm_map_regionalSubscriptionData,
14786       { "regionalSubscriptionData", "gsm_map.regionalSubscriptionData",
14787         FT_NONE, BASE_NONE, NULL, 0,
14788         "InsertSubscriberDataArg/regionalSubscriptionData", HFILL }},
14789     { &hf_gsm_map_vbsSubscriptionData,
14790       { "vbsSubscriptionData", "gsm_map.vbsSubscriptionData",
14791         FT_NONE, BASE_NONE, NULL, 0,
14792         "InsertSubscriberDataArg/vbsSubscriptionData", HFILL }},
14793     { &hf_gsm_map_vgcsSubscriptionData,
14794       { "vgcsSubscriptionData", "gsm_map.vgcsSubscriptionData",
14795         FT_NONE, BASE_NONE, NULL, 0,
14796         "InsertSubscriberDataArg/vgcsSubscriptionData", HFILL }},
14797     { &hf_gsm_map_vlrCamelSubscriptionInfo,
14798       { "vlrCamelSubscriptionInfo", "gsm_map.vlrCamelSubscriptionInfo",
14799         FT_NONE, BASE_NONE, NULL, 0,
14800         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo", HFILL }},
14801     { &hf_gsm_map_naea_PreferredCI,
14802       { "naea-PreferredCI", "gsm_map.naea_PreferredCI",
14803         FT_NONE, BASE_NONE, NULL, 0,
14804         "", HFILL }},
14805     { &hf_gsm_map_gprsSubscriptionData,
14806       { "gprsSubscriptionData", "gsm_map.gprsSubscriptionData",
14807         FT_NONE, BASE_NONE, NULL, 0,
14808         "InsertSubscriberDataArg/gprsSubscriptionData", HFILL }},
14809     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature,
14810       { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsupportedFeature",
14811         FT_NONE, BASE_NONE, NULL, 0,
14812         "InsertSubscriberDataArg/roamingRestrictedInSgsnDueToUnsupportedFeature", HFILL }},
14813     { &hf_gsm_map_networkAccessMode,
14814       { "networkAccessMode", "gsm_map.networkAccessMode",
14815         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkAccessMode_vals), 0,
14816         "InsertSubscriberDataArg/networkAccessMode", HFILL }},
14817     { &hf_gsm_map_lsaInformation,
14818       { "lsaInformation", "gsm_map.lsaInformation",
14819         FT_NONE, BASE_NONE, NULL, 0,
14820         "InsertSubscriberDataArg/lsaInformation", HFILL }},
14821     { &hf_gsm_map_lmu_Indicator,
14822       { "lmu-Indicator", "gsm_map.lmu_Indicator",
14823         FT_NONE, BASE_NONE, NULL, 0,
14824         "InsertSubscriberDataArg/lmu-Indicator", HFILL }},
14825     { &hf_gsm_map_lcsInformation,
14826       { "lcsInformation", "gsm_map.lcsInformation",
14827         FT_NONE, BASE_NONE, NULL, 0,
14828         "InsertSubscriberDataArg/lcsInformation", HFILL }},
14829     { &hf_gsm_map_istAlertTimer,
14830       { "istAlertTimer", "gsm_map.istAlertTimer",
14831         FT_UINT32, BASE_DEC, NULL, 0,
14832         "", HFILL }},
14833     { &hf_gsm_map_superChargerSupportedInHLR,
14834       { "superChargerSupportedInHLR", "gsm_map.superChargerSupportedInHLR",
14835         FT_BYTES, BASE_HEX, NULL, 0,
14836         "InsertSubscriberDataArg/superChargerSupportedInHLR", HFILL }},
14837     { &hf_gsm_map_mc_SS_Info,
14838       { "mc-SS-Info", "gsm_map.mc_SS_Info",
14839         FT_NONE, BASE_NONE, NULL, 0,
14840         "InsertSubscriberDataArg/mc-SS-Info", HFILL }},
14841     { &hf_gsm_map_cs_AllocationRetentionPriority,
14842       { "cs-AllocationRetentionPriority", "gsm_map.cs_AllocationRetentionPriority",
14843         FT_BYTES, BASE_HEX, NULL, 0,
14844         "InsertSubscriberDataArg/cs-AllocationRetentionPriority", HFILL }},
14845     { &hf_gsm_map_sgsn_CAMEL_SubscriptionInfo,
14846       { "sgsn-CAMEL-SubscriptionInfo", "gsm_map.sgsn_CAMEL_SubscriptionInfo",
14847         FT_NONE, BASE_NONE, NULL, 0,
14848         "InsertSubscriberDataArg/sgsn-CAMEL-SubscriptionInfo", HFILL }},
14849     { &hf_gsm_map_chargingCharacteristics,
14850       { "chargingCharacteristics", "gsm_map.chargingCharacteristics",
14851         FT_BYTES, BASE_HEX, NULL, 0,
14852         "", HFILL }},
14853     { &hf_gsm_map_accessRestrictionData,
14854       { "accessRestrictionData", "gsm_map.accessRestrictionData",
14855         FT_BYTES, BASE_HEX, NULL, 0,
14856         "InsertSubscriberDataArg/accessRestrictionData", HFILL }},
14857     { &hf_gsm_map_gmlc_List,
14858       { "gmlc-List", "gsm_map.gmlc_List",
14859         FT_NONE, BASE_NONE, NULL, 0,
14860         "LCSInformation/gmlc-List", HFILL }},
14861     { &hf_gsm_map_lcs_PrivacyExceptionList,
14862       { "lcs-PrivacyExceptionList", "gsm_map.lcs_PrivacyExceptionList",
14863         FT_NONE, BASE_NONE, NULL, 0,
14864         "LCSInformation/lcs-PrivacyExceptionList", HFILL }},
14865     { &hf_gsm_map_molr_List,
14866       { "molr-List", "gsm_map.molr_List",
14867         FT_NONE, BASE_NONE, NULL, 0,
14868         "LCSInformation/molr-List", HFILL }},
14869     { &hf_gsm_map_add_lcs_PrivacyExceptionList,
14870       { "add-lcs-PrivacyExceptionList", "gsm_map.add_lcs_PrivacyExceptionList",
14871         FT_NONE, BASE_NONE, NULL, 0,
14872         "LCSInformation/add-lcs-PrivacyExceptionList", HFILL }},
14873     { &hf_gsm_map_GMLC_List_item,
14874       { "Item", "gsm_map.GMLC_List_item",
14875         FT_BYTES, BASE_HEX, NULL, 0,
14876         "GMLC-List/_item", HFILL }},
14877     { &hf_gsm_map_GPRSDataList_item,
14878       { "Item", "gsm_map.GPRSDataList_item",
14879         FT_NONE, BASE_NONE, NULL, 0,
14880         "GPRSDataList/_item", HFILL }},
14881     { &hf_gsm_map_pdp_ContextId,
14882       { "pdp-ContextId", "gsm_map.pdp_ContextId",
14883         FT_UINT32, BASE_DEC, NULL, 0,
14884         "PDP-Context/pdp-ContextId", HFILL }},
14885     { &hf_gsm_map_pdp_Type,
14886       { "pdp-Type", "gsm_map.pdp_Type",
14887         FT_BYTES, BASE_HEX, NULL, 0,
14888         "", HFILL }},
14889     { &hf_gsm_map_pdp_Address,
14890       { "pdp-Address", "gsm_map.pdp_Address",
14891         FT_BYTES, BASE_HEX, NULL, 0,
14892         "", HFILL }},
14893     { &hf_gsm_map_qos_Subscribed,
14894       { "qos-Subscribed", "gsm_map.qos_Subscribed",
14895         FT_BYTES, BASE_HEX, NULL, 0,
14896         "PDP-Context/qos-Subscribed", HFILL }},
14897     { &hf_gsm_map_vplmnAddressAllowed,
14898       { "vplmnAddressAllowed", "gsm_map.vplmnAddressAllowed",
14899         FT_NONE, BASE_NONE, NULL, 0,
14900         "PDP-Context/vplmnAddressAllowed", HFILL }},
14901     { &hf_gsm_map_apn,
14902       { "apn", "gsm_map.apn",
14903         FT_BYTES, BASE_HEX, NULL, 0,
14904         "PDP-Context/apn", HFILL }},
14905     { &hf_gsm_map_ext_QoS_Subscribed,
14906       { "ext-QoS-Subscribed", "gsm_map.ext_QoS_Subscribed",
14907         FT_BYTES, BASE_HEX, NULL, 0,
14908         "PDP-Context/ext-QoS-Subscribed", HFILL }},
14909     { &hf_gsm_map_pdp_ChargingCharacteristics,
14910       { "pdp-ChargingCharacteristics", "gsm_map.pdp_ChargingCharacteristics",
14911         FT_BYTES, BASE_HEX, NULL, 0,
14912         "PDP-Context/pdp-ChargingCharacteristics", HFILL }},
14913     { &hf_gsm_map_ext2_QoS_Subscribed,
14914       { "ext2-QoS-Subscribed", "gsm_map.ext2_QoS_Subscribed",
14915         FT_BYTES, BASE_HEX, NULL, 0,
14916         "PDP-Context/ext2-QoS-Subscribed", HFILL }},
14917     { &hf_gsm_map_completeDataListIncluded,
14918       { "completeDataListIncluded", "gsm_map.completeDataListIncluded",
14919         FT_NONE, BASE_NONE, NULL, 0,
14920         "", HFILL }},
14921     { &hf_gsm_map_gprsDataList,
14922       { "gprsDataList", "gsm_map.gprsDataList",
14923         FT_NONE, BASE_NONE, NULL, 0,
14924         "GPRSSubscriptionData/gprsDataList", HFILL }},
14925     { &hf_gsm_map_gprs_CSI,
14926       { "gprs-CSI", "gsm_map.gprs_CSI",
14927         FT_NONE, BASE_NONE, NULL, 0,
14928         "", HFILL }},
14929     { &hf_gsm_map_mo_sms_CSI,
14930       { "mo-sms-CSI", "gsm_map.mo_sms_CSI",
14931         FT_NONE, BASE_NONE, NULL, 0,
14932         "", HFILL }},
14933     { &hf_gsm_map_mt_sms_CSI,
14934       { "mt-sms-CSI", "gsm_map.mt_sms_CSI",
14935         FT_NONE, BASE_NONE, NULL, 0,
14936         "", HFILL }},
14937     { &hf_gsm_map_mt_smsCAMELTDP_CriteriaList,
14938       { "mt-smsCAMELTDP-CriteriaList", "gsm_map.mt_smsCAMELTDP_CriteriaList",
14939         FT_NONE, BASE_NONE, NULL, 0,
14940         "", HFILL }},
14941     { &hf_gsm_map_mg_csi,
14942       { "mg-csi", "gsm_map.mg_csi",
14943         FT_NONE, BASE_NONE, NULL, 0,
14944         "", HFILL }},
14945     { &hf_gsm_map_gprs_CamelTDPDataList,
14946       { "gprs-CamelTDPDataList", "gsm_map.gprs_CamelTDPDataList",
14947         FT_NONE, BASE_NONE, NULL, 0,
14948         "GPRS-CSI/gprs-CamelTDPDataList", HFILL }},
14949     { &hf_gsm_map_csi_Active,
14950       { "csi-Active", "gsm_map.csi_Active",
14951         FT_NONE, BASE_NONE, NULL, 0,
14952         "", HFILL }},
14953     { &hf_gsm_map_GPRS_CamelTDPDataList_item,
14954       { "Item", "gsm_map.GPRS_CamelTDPDataList_item",
14955         FT_NONE, BASE_NONE, NULL, 0,
14956         "GPRS-CamelTDPDataList/_item", HFILL }},
14957     { &hf_gsm_map_gprs_TriggerDetectionPoint,
14958       { "gprs-TriggerDetectionPoint", "gsm_map.gprs_TriggerDetectionPoint",
14959         FT_UINT32, BASE_DEC, VALS(gsm_map_GPRS_TriggerDetectionPoint_vals), 0,
14960         "GPRS-CamelTDPData/gprs-TriggerDetectionPoint", HFILL }},
14961     { &hf_gsm_map_defaultSessionHandling,
14962       { "defaultSessionHandling", "gsm_map.defaultSessionHandling",
14963         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultGPRS_Handling_vals), 0,
14964         "GPRS-CamelTDPData/defaultSessionHandling", HFILL }},
14965     { &hf_gsm_map_LSADataList_item,
14966       { "Item", "gsm_map.LSADataList_item",
14967         FT_NONE, BASE_NONE, NULL, 0,
14968         "LSADataList/_item", HFILL }},
14969     { &hf_gsm_map_lsaIdentity,
14970       { "lsaIdentity", "gsm_map.lsaIdentity",
14971         FT_BYTES, BASE_HEX, NULL, 0,
14972         "LSAData/lsaIdentity", HFILL }},
14973     { &hf_gsm_map_lsaAttributes,
14974       { "lsaAttributes", "gsm_map.lsaAttributes",
14975         FT_BYTES, BASE_HEX, NULL, 0,
14976         "LSAData/lsaAttributes", HFILL }},
14977     { &hf_gsm_map_lsaActiveModeIndicator,
14978       { "lsaActiveModeIndicator", "gsm_map.lsaActiveModeIndicator",
14979         FT_NONE, BASE_NONE, NULL, 0,
14980         "LSAData/lsaActiveModeIndicator", HFILL }},
14981     { &hf_gsm_map_lsaOnlyAccessIndicator,
14982       { "lsaOnlyAccessIndicator", "gsm_map.lsaOnlyAccessIndicator",
14983         FT_UINT32, BASE_DEC, VALS(gsm_map_LSAOnlyAccessIndicator_vals), 0,
14984         "LSAInformation/lsaOnlyAccessIndicator", HFILL }},
14985     { &hf_gsm_map_lsaDataList,
14986       { "lsaDataList", "gsm_map.lsaDataList",
14987         FT_NONE, BASE_NONE, NULL, 0,
14988         "LSAInformation/lsaDataList", HFILL }},
14989     { &hf_gsm_map_bearerServiceList,
14990       { "bearerServiceList", "gsm_map.bearerServiceList",
14991         FT_NONE, BASE_NONE, NULL, 0,
14992         "InsertSubscriberDataRes/bearerServiceList", HFILL }},
14993     { &hf_gsm_map_ss_List,
14994       { "ss-List", "gsm_map.ss_List",
14995         FT_NONE, BASE_NONE, NULL, 0,
14996         "", HFILL }},
14997     { &hf_gsm_map_odb_GeneralData,
14998       { "odb-GeneralData", "gsm_map.odb_GeneralData",
14999         FT_BYTES, BASE_HEX, NULL, 0,
15000         "", HFILL }},
15001     { &hf_gsm_map_regionalSubscriptionResponse,
15002       { "regionalSubscriptionResponse", "gsm_map.regionalSubscriptionResponse",
15003         FT_UINT32, BASE_DEC, VALS(gsm_map_RegionalSubscriptionResponse_vals), 0,
15004         "", HFILL }},
15005     { &hf_gsm_map_basicServiceList,
15006       { "basicServiceList", "gsm_map.basicServiceList",
15007         FT_NONE, BASE_NONE, NULL, 0,
15008         "DeleteSubscriberDataArg/basicServiceList", HFILL }},
15009     { &hf_gsm_map_regionalSubscriptionIdentifier,
15010       { "regionalSubscriptionIdentifier", "gsm_map.regionalSubscriptionIdentifier",
15011         FT_BYTES, BASE_HEX, NULL, 0,
15012         "DeleteSubscriberDataArg/regionalSubscriptionIdentifier", HFILL }},
15013     { &hf_gsm_map_vbsGroupIndication,
15014       { "vbsGroupIndication", "gsm_map.vbsGroupIndication",
15015         FT_NONE, BASE_NONE, NULL, 0,
15016         "DeleteSubscriberDataArg/vbsGroupIndication", HFILL }},
15017     { &hf_gsm_map_vgcsGroupIndication,
15018       { "vgcsGroupIndication", "gsm_map.vgcsGroupIndication",
15019         FT_NONE, BASE_NONE, NULL, 0,
15020         "DeleteSubscriberDataArg/vgcsGroupIndication", HFILL }},
15021     { &hf_gsm_map_camelSubscriptionInfoWithdraw,
15022       { "camelSubscriptionInfoWithdraw", "gsm_map.camelSubscriptionInfoWithdraw",
15023         FT_NONE, BASE_NONE, NULL, 0,
15024         "DeleteSubscriberDataArg/camelSubscriptionInfoWithdraw", HFILL }},
15025     { &hf_gsm_map_gprsSubscriptionDataWithdraw,
15026       { "gprsSubscriptionDataWithdraw", "gsm_map.gprsSubscriptionDataWithdraw",
15027         FT_UINT32, BASE_DEC, VALS(gsm_map_GPRSSubscriptionDataWithdraw_vals), 0,
15028         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw", HFILL }},
15029     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature,
15030       { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsuppportedFeature",
15031         FT_NONE, BASE_NONE, NULL, 0,
15032         "DeleteSubscriberDataArg/roamingRestrictedInSgsnDueToUnsuppportedFeature", HFILL }},
15033     { &hf_gsm_map_lsaInformationWithdraw,
15034       { "lsaInformationWithdraw", "gsm_map.lsaInformationWithdraw",
15035         FT_UINT32, BASE_DEC, VALS(gsm_map_LSAInformationWithdraw_vals), 0,
15036         "DeleteSubscriberDataArg/lsaInformationWithdraw", HFILL }},
15037     { &hf_gsm_map_gmlc_ListWithdraw,
15038       { "gmlc-ListWithdraw", "gsm_map.gmlc_ListWithdraw",
15039         FT_NONE, BASE_NONE, NULL, 0,
15040         "DeleteSubscriberDataArg/gmlc-ListWithdraw", HFILL }},
15041     { &hf_gsm_map_istInformationWithdraw,
15042       { "istInformationWithdraw", "gsm_map.istInformationWithdraw",
15043         FT_NONE, BASE_NONE, NULL, 0,
15044         "", HFILL }},
15045     { &hf_gsm_map_specificCSI_Withdraw,
15046       { "specificCSI-Withdraw", "gsm_map.specificCSI_Withdraw",
15047         FT_BYTES, BASE_HEX, NULL, 0,
15048         "DeleteSubscriberDataArg/specificCSI-Withdraw", HFILL }},
15049     { &hf_gsm_map_chargingCharacteristicsWithdraw,
15050       { "chargingCharacteristicsWithdraw", "gsm_map.chargingCharacteristicsWithdraw",
15051         FT_NONE, BASE_NONE, NULL, 0,
15052         "DeleteSubscriberDataArg/chargingCharacteristicsWithdraw", HFILL }},
15053     { &hf_gsm_map_allGPRSData,
15054       { "allGPRSData", "gsm_map.allGPRSData",
15055         FT_NONE, BASE_NONE, NULL, 0,
15056         "GPRSSubscriptionDataWithdraw/allGPRSData", HFILL }},
15057     { &hf_gsm_map_contextIdList,
15058       { "contextIdList", "gsm_map.contextIdList",
15059         FT_NONE, BASE_NONE, NULL, 0,
15060         "GPRSSubscriptionDataWithdraw/contextIdList", HFILL }},
15061     { &hf_gsm_map_ContextIdList_item,
15062       { "Item", "gsm_map.ContextIdList_item",
15063         FT_UINT32, BASE_DEC, NULL, 0,
15064         "ContextIdList/_item", HFILL }},
15065     { &hf_gsm_map_allLSAData,
15066       { "allLSAData", "gsm_map.allLSAData",
15067         FT_NONE, BASE_NONE, NULL, 0,
15068         "LSAInformationWithdraw/allLSAData", HFILL }},
15069     { &hf_gsm_map_lsaIdentityList,
15070       { "lsaIdentityList", "gsm_map.lsaIdentityList",
15071         FT_NONE, BASE_NONE, NULL, 0,
15072         "LSAInformationWithdraw/lsaIdentityList", HFILL }},
15073     { &hf_gsm_map_LSAIdentityList_item,
15074       { "Item", "gsm_map.LSAIdentityList_item",
15075         FT_BYTES, BASE_HEX, NULL, 0,
15076         "LSAIdentityList/_item", HFILL }},
15077     { &hf_gsm_map_BasicServiceList_item,
15078       { "Item", "gsm_map.BasicServiceList_item",
15079         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
15080         "BasicServiceList/_item", HFILL }},
15081     { &hf_gsm_map_o_CSI,
15082       { "o-CSI", "gsm_map.o_CSI",
15083         FT_NONE, BASE_NONE, NULL, 0,
15084         "", HFILL }},
15085     { &hf_gsm_map_ss_CSI,
15086       { "ss-CSI", "gsm_map.ss_CSI",
15087         FT_NONE, BASE_NONE, NULL, 0,
15088         "", HFILL }},
15089     { &hf_gsm_map_o_BcsmCamelTDP_CriteriaList,
15090       { "o-BcsmCamelTDP-CriteriaList", "gsm_map.o_BcsmCamelTDP_CriteriaList",
15091         FT_NONE, BASE_NONE, NULL, 0,
15092         "", HFILL }},
15093     { &hf_gsm_map_tif_CSI,
15094       { "tif-CSI", "gsm_map.tif_CSI",
15095         FT_NONE, BASE_NONE, NULL, 0,
15096         "", HFILL }},
15097     { &hf_gsm_map_m_CSI,
15098       { "m-CSI", "gsm_map.m_CSI",
15099         FT_NONE, BASE_NONE, NULL, 0,
15100         "", HFILL }},
15101     { &hf_gsm_map_vt_CSI,
15102       { "vt-CSI", "gsm_map.vt_CSI",
15103         FT_NONE, BASE_NONE, NULL, 0,
15104         "", HFILL }},
15105     { &hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList,
15106       { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.t_BCSM_CAMEL_TDP_CriteriaList",
15107         FT_NONE, BASE_NONE, NULL, 0,
15108         "", HFILL }},
15109     { &hf_gsm_map_d_CSI,
15110       { "d-CSI", "gsm_map.d_CSI",
15111         FT_NONE, BASE_NONE, NULL, 0,
15112         "", HFILL }},
15113     { &hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item,
15114       { "Item", "gsm_map.MT_smsCAMELTDP_CriteriaList_item",
15115         FT_NONE, BASE_NONE, NULL, 0,
15116         "MT-smsCAMELTDP-CriteriaList/_item", HFILL }},
15117     { &hf_gsm_map_sms_TriggerDetectionPoint,
15118       { "sms-TriggerDetectionPoint", "gsm_map.sms_TriggerDetectionPoint",
15119         FT_UINT32, BASE_DEC, VALS(gsm_map_SMS_TriggerDetectionPoint_vals), 0,
15120         "", HFILL }},
15121     { &hf_gsm_map_tpdu_TypeCriterion,
15122       { "tpdu-TypeCriterion", "gsm_map.tpdu_TypeCriterion",
15123         FT_NONE, BASE_NONE, NULL, 0,
15124         "MT-smsCAMELTDP-Criteria/tpdu-TypeCriterion", HFILL }},
15125     { &hf_gsm_map_TPDU_TypeCriterion_item,
15126       { "Item", "gsm_map.TPDU_TypeCriterion_item",
15127         FT_UINT32, BASE_DEC, VALS(gsm_map_MT_SMS_TPDU_Type_vals), 0,
15128         "TPDU-TypeCriterion/_item", HFILL }},
15129     { &hf_gsm_map_dp_AnalysedInfoCriteriaList,
15130       { "dp-AnalysedInfoCriteriaList", "gsm_map.dp_AnalysedInfoCriteriaList",
15131         FT_NONE, BASE_NONE, NULL, 0,
15132         "D-CSI/dp-AnalysedInfoCriteriaList", HFILL }},
15133     { &hf_gsm_map_DP_AnalysedInfoCriteriaList_item,
15134       { "Item", "gsm_map.DP_AnalysedInfoCriteriaList_item",
15135         FT_NONE, BASE_NONE, NULL, 0,
15136         "DP-AnalysedInfoCriteriaList/_item", HFILL }},
15137     { &hf_gsm_map_dialledNumber,
15138       { "dialledNumber", "gsm_map.dialledNumber",
15139         FT_BYTES, BASE_HEX, NULL, 0,
15140         "DP-AnalysedInfoCriterium/dialledNumber", HFILL }},
15141     { &hf_gsm_map_ss_CamelData,
15142       { "ss-CamelData", "gsm_map.ss_CamelData",
15143         FT_NONE, BASE_NONE, NULL, 0,
15144         "SS-CSI/ss-CamelData", HFILL }},
15145     { &hf_gsm_map_ss_EventList,
15146       { "ss-EventList", "gsm_map.ss_EventList",
15147         FT_NONE, BASE_NONE, NULL, 0,
15148         "SS-CamelData/ss-EventList", HFILL }},
15149     { &hf_gsm_map_mobilityTriggers,
15150       { "mobilityTriggers", "gsm_map.mobilityTriggers",
15151         FT_NONE, BASE_NONE, NULL, 0,
15152         "", HFILL }},
15153     { &hf_gsm_map_BearerServiceList_item,
15154       { "Item", "gsm_map.BearerServiceList_item",
15155         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
15156         "BearerServiceList/_item", HFILL }},
15157     { &hf_gsm_map_TeleserviceList_item,
15158       { "Item", "gsm_map.TeleserviceList_item",
15159         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
15160         "TeleserviceList/_item", HFILL }},
15161     { &hf_gsm_map_Ext_SS_InfoList_item,
15162       { "Item", "gsm_map.Ext_SS_InfoList_item",
15163         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_SS_Info_vals), 0,
15164         "Ext-SS-InfoList/_item", HFILL }},
15165     { &hf_gsm_map_ext_forwardingInfo,
15166       { "forwardingInfo", "gsm_map.forwardingInfo",
15167         FT_NONE, BASE_NONE, NULL, 0,
15168         "Ext-SS-Info/forwardingInfo", HFILL }},
15169     { &hf_gsm_map_ext_callBarringInfo,
15170       { "callBarringInfo", "gsm_map.callBarringInfo",
15171         FT_NONE, BASE_NONE, NULL, 0,
15172         "Ext-SS-Info/callBarringInfo", HFILL }},
15173     { &hf_gsm_map_cug_Info,
15174       { "cug-Info", "gsm_map.cug_Info",
15175         FT_NONE, BASE_NONE, NULL, 0,
15176         "Ext-SS-Info/cug-Info", HFILL }},
15177     { &hf_gsm_map_ext_ss_Data,
15178       { "ss-Data", "gsm_map.ss_Data",
15179         FT_NONE, BASE_NONE, NULL, 0,
15180         "Ext-SS-Info/ss-Data", HFILL }},
15181     { &hf_gsm_map_emlpp_Info,
15182       { "emlpp-Info", "gsm_map.emlpp_Info",
15183         FT_NONE, BASE_NONE, NULL, 0,
15184         "Ext-SS-Info/emlpp-Info", HFILL }},
15185     { &hf_gsm_map_ss_Code,
15186       { "ss-Code", "gsm_map.ss_Code",
15187         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
15188         "", HFILL }},
15189     { &hf_gsm_map_ext_forwardingFeatureList,
15190       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
15191         FT_NONE, BASE_NONE, NULL, 0,
15192         "", HFILL }},
15193     { &hf_gsm_map_Ext_ForwFeatureList_item,
15194       { "Item", "gsm_map.Ext_ForwFeatureList_item",
15195         FT_NONE, BASE_NONE, NULL, 0,
15196         "Ext-ForwFeatureList/_item", HFILL }},
15197     { &hf_gsm_map_ext_basicService,
15198       { "basicService", "gsm_map.basicService",
15199         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
15200         "", HFILL }},
15201     { &hf_gsm_map_ext_ss_Status,
15202       { "ss-Status", "gsm_map.ss_Status",
15203         FT_BYTES, BASE_HEX, NULL, 0,
15204         "", HFILL }},
15205     { &hf_gsm_map_forwardedToNumber,
15206       { "forwardedToNumber", "gsm_map.forwardedToNumber",
15207         FT_BYTES, BASE_HEX, NULL, 0,
15208         "", HFILL }},
15209     { &hf_gsm_map_forwardedToSubaddress,
15210       { "forwardedToSubaddress", "gsm_map.forwardedToSubaddress",
15211         FT_BYTES, BASE_HEX, NULL, 0,
15212         "", HFILL }},
15213     { &hf_gsm_map_ext_forwardingOptions,
15214       { "forwardingOptions", "gsm_map.forwardingOptions",
15215         FT_BYTES, BASE_HEX, NULL, 0,
15216         "Ext-ForwFeature/forwardingOptions", HFILL }},
15217     { &hf_gsm_map_ext_noReplyConditionTime,
15218       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
15219         FT_UINT32, BASE_DEC, NULL, 0,
15220         "", HFILL }},
15221     { &hf_gsm_map_longForwardedToNumber,
15222       { "longForwardedToNumber", "gsm_map.longForwardedToNumber",
15223         FT_BYTES, BASE_HEX, NULL, 0,
15224         "", HFILL }},
15225     { &hf_gsm_map_ext_callBarringFeatureList,
15226       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
15227         FT_NONE, BASE_NONE, NULL, 0,
15228         "", HFILL }},
15229     { &hf_gsm_map_Ext_CallBarFeatureList_item,
15230       { "Item", "gsm_map.Ext_CallBarFeatureList_item",
15231         FT_NONE, BASE_NONE, NULL, 0,
15232         "Ext-CallBarFeatureList/_item", HFILL }},
15233     { &hf_gsm_map_ZoneCodeList_item,
15234       { "Item", "gsm_map.ZoneCodeList_item",
15235         FT_BYTES, BASE_HEX, NULL, 0,
15236         "ZoneCodeList/_item", HFILL }},
15237     { &hf_gsm_map_maximumentitledPriority,
15238       { "maximumentitledPriority", "gsm_map.maximumentitledPriority",
15239         FT_UINT32, BASE_DEC, NULL, 0,
15240         "EMLPP-Info/maximumentitledPriority", HFILL }},
15241     { &hf_gsm_map_defaultPriority,
15242       { "defaultPriority", "gsm_map.defaultPriority",
15243         FT_UINT32, BASE_DEC, NULL, 0,
15244         "", HFILL }},
15245     { &hf_gsm_map_cug_SubscriptionList,
15246       { "cug-SubscriptionList", "gsm_map.cug_SubscriptionList",
15247         FT_NONE, BASE_NONE, NULL, 0,
15248         "CUG-Info/cug-SubscriptionList", HFILL }},
15249     { &hf_gsm_map_cug_FeatureList,
15250       { "cug-FeatureList", "gsm_map.cug_FeatureList",
15251         FT_NONE, BASE_NONE, NULL, 0,
15252         "CUG-Info/cug-FeatureList", HFILL }},
15253     { &hf_gsm_map_CUG_SubscriptionList_item,
15254       { "Item", "gsm_map.CUG_SubscriptionList_item",
15255         FT_NONE, BASE_NONE, NULL, 0,
15256         "CUG-SubscriptionList/_item", HFILL }},
15257     { &hf_gsm_map_cug_Index,
15258       { "cug-Index", "gsm_map.cug_Index",
15259         FT_UINT32, BASE_DEC, NULL, 0,
15260         "CUG-Subscription/cug-Index", HFILL }},
15261     { &hf_gsm_map_cug_Interlock,
15262       { "cug-Interlock", "gsm_map.cug_Interlock",
15263         FT_BYTES, BASE_HEX, NULL, 0,
15264         "", HFILL }},
15265     { &hf_gsm_map_intraCUG_Options,
15266       { "intraCUG-Options", "gsm_map.intraCUG_Options",
15267         FT_UINT32, BASE_DEC, VALS(gsm_map_IntraCUG_Options_vals), 0,
15268         "CUG-Subscription/intraCUG-Options", HFILL }},
15269     { &hf_gsm_map_basicServiceGroupList,
15270       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
15271         FT_NONE, BASE_NONE, NULL, 0,
15272         "", HFILL }},
15273     { &hf_gsm_map_CUG_FeatureList_item,
15274       { "Item", "gsm_map.CUG_FeatureList_item",
15275         FT_NONE, BASE_NONE, NULL, 0,
15276         "CUG-FeatureList/_item", HFILL }},
15277     { &hf_gsm_map_Ext_BasicServiceGroupList_item,
15278       { "Item", "gsm_map.Ext_BasicServiceGroupList_item",
15279         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
15280         "Ext-BasicServiceGroupList/_item", HFILL }},
15281     { &hf_gsm_map_preferentialCUG_Indicator,
15282       { "preferentialCUG-Indicator", "gsm_map.preferentialCUG_Indicator",
15283         FT_UINT32, BASE_DEC, NULL, 0,
15284         "CUG-Feature/preferentialCUG-Indicator", HFILL }},
15285     { &hf_gsm_map_interCUG_Restrictions,
15286       { "interCUG-Restrictions", "gsm_map.interCUG_Restrictions",
15287         FT_BYTES, BASE_HEX, NULL, 0,
15288         "CUG-Feature/interCUG-Restrictions", HFILL }},
15289     { &hf_gsm_map_ss_SubscriptionOption,
15290       { "ss-SubscriptionOption", "gsm_map.ss_SubscriptionOption",
15291         FT_UINT32, BASE_DEC, VALS(gsm_map_SS_SubscriptionOption_vals), 0,
15292         "", HFILL }},
15293     { &hf_gsm_map_LCS_PrivacyExceptionList_item,
15294       { "Item", "gsm_map.LCS_PrivacyExceptionList_item",
15295         FT_NONE, BASE_NONE, NULL, 0,
15296         "LCS-PrivacyExceptionList/_item", HFILL }},
15297     { &hf_gsm_map_notificationToMSUser,
15298       { "notificationToMSUser", "gsm_map.notificationToMSUser",
15299         FT_UINT32, BASE_DEC, VALS(gsm_map_NotificationToMSUser_vals), 0,
15300         "", HFILL }},
15301     { &hf_gsm_map_externalClientList,
15302       { "externalClientList", "gsm_map.externalClientList",
15303         FT_NONE, BASE_NONE, NULL, 0,
15304         "LCS-PrivacyClass/externalClientList", HFILL }},
15305     { &hf_gsm_map_plmnClientList,
15306       { "plmnClientList", "gsm_map.plmnClientList",
15307         FT_NONE, BASE_NONE, NULL, 0,
15308         "LCS-PrivacyClass/plmnClientList", HFILL }},
15309     { &hf_gsm_map_ext_externalClientList,
15310       { "ext-externalClientList", "gsm_map.ext_externalClientList",
15311         FT_NONE, BASE_NONE, NULL, 0,
15312         "LCS-PrivacyClass/ext-externalClientList", HFILL }},
15313     { &hf_gsm_map_serviceTypeList,
15314       { "serviceTypeList", "gsm_map.serviceTypeList",
15315         FT_NONE, BASE_NONE, NULL, 0,
15316         "LCS-PrivacyClass/serviceTypeList", HFILL }},
15317     { &hf_gsm_map_ExternalClientList_item,
15318       { "Item", "gsm_map.ExternalClientList_item",
15319         FT_NONE, BASE_NONE, NULL, 0,
15320         "ExternalClientList/_item", HFILL }},
15321     { &hf_gsm_map_PLMNClientList_item,
15322       { "Item", "gsm_map.PLMNClientList_item",
15323         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
15324         "PLMNClientList/_item", HFILL }},
15325     { &hf_gsm_map_Ext_ExternalClientList_item,
15326       { "Item", "gsm_map.Ext_ExternalClientList_item",
15327         FT_NONE, BASE_NONE, NULL, 0,
15328         "Ext-ExternalClientList/_item", HFILL }},
15329     { &hf_gsm_map_clientIdentity,
15330       { "clientIdentity", "gsm_map.clientIdentity",
15331         FT_NONE, BASE_NONE, NULL, 0,
15332         "ExternalClient/clientIdentity", HFILL }},
15333     { &hf_gsm_map_gmlc_Restriction,
15334       { "gmlc-Restriction", "gsm_map.gmlc_Restriction",
15335         FT_UINT32, BASE_DEC, VALS(gsm_map_GMLC_Restriction_vals), 0,
15336         "", HFILL }},
15337     { &hf_gsm_map_ServiceTypeList_item,
15338       { "Item", "gsm_map.ServiceTypeList_item",
15339         FT_NONE, BASE_NONE, NULL, 0,
15340         "ServiceTypeList/_item", HFILL }},
15341     { &hf_gsm_map_serviceTypeIdentity,
15342       { "serviceTypeIdentity", "gsm_map.serviceTypeIdentity",
15343         FT_UINT32, BASE_DEC, NULL, 0,
15344         "ServiceType/serviceTypeIdentity", HFILL }},
15345     { &hf_gsm_map_MOLR_List_item,
15346       { "Item", "gsm_map.MOLR_List_item",
15347         FT_NONE, BASE_NONE, NULL, 0,
15348         "MOLR-List/_item", HFILL }},
15349     { &hf_gsm_map_CallBarringFeatureList_item,
15350       { "Item", "gsm_map.CallBarringFeatureList_item",
15351         FT_NONE, BASE_NONE, NULL, 0,
15352         "CallBarringFeatureList/_item", HFILL }},
15353     { &hf_gsm_map_basicService,
15354       { "basicService", "gsm_map.basicService",
15355         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
15356         "", HFILL }},
15357     { &hf_gsm_map_ss_Status,
15358       { "ss-Status", "gsm_map.ss_Status",
15359         FT_BYTES, BASE_HEX, NULL, 0,
15360         "", HFILL }},
15361     { &hf_gsm_map_ForwardingFeatureList_item,
15362       { "Item", "gsm_map.ForwardingFeatureList_item",
15363         FT_NONE, BASE_NONE, NULL, 0,
15364         "ForwardingFeatureList/_item", HFILL }},
15365     { &hf_gsm_map_forwardingOptions,
15366       { "forwardingOptions", "gsm_map.forwardingOptions",
15367         FT_BYTES, BASE_HEX, NULL, 0,
15368         "", HFILL }},
15369     { &hf_gsm_map_noReplyConditionTime,
15370       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
15371         FT_UINT32, BASE_DEC, NULL, 0,
15372         "", HFILL }},
15373     { &hf_gsm_map_matchType,
15374       { "matchType", "gsm_map.matchType",
15375         FT_UINT32, BASE_DEC, VALS(gsm_map_MatchType_vals), 0,
15376         "DestinationNumberCriteria/matchType", HFILL }},
15377     { &hf_gsm_map_destinationNumberList,
15378       { "destinationNumberList", "gsm_map.destinationNumberList",
15379         FT_NONE, BASE_NONE, NULL, 0,
15380         "DestinationNumberCriteria/destinationNumberList", HFILL }},
15381     { &hf_gsm_map_destinationNumberLengthList,
15382       { "destinationNumberLengthList", "gsm_map.destinationNumberLengthList",
15383         FT_NONE, BASE_NONE, NULL, 0,
15384         "DestinationNumberCriteria/destinationNumberLengthList", HFILL }},
15385     { &hf_gsm_map_DestinationNumberList_item,
15386       { "Item", "gsm_map.DestinationNumberList_item",
15387         FT_BYTES, BASE_HEX, NULL, 0,
15388         "DestinationNumberList/_item", HFILL }},
15389     { &hf_gsm_map_DestinationNumberLengthList_item,
15390       { "Item", "gsm_map.DestinationNumberLengthList_item",
15391         FT_UINT32, BASE_DEC, NULL, 0,
15392         "DestinationNumberLengthList/_item", HFILL }},
15393     { &hf_gsm_map_forwardingFeatureList,
15394       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
15395         FT_NONE, BASE_NONE, NULL, 0,
15396         "", HFILL }},
15397     { &hf_gsm_map_callBarringFeatureList,
15398       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
15399         FT_NONE, BASE_NONE, NULL, 0,
15400         "CallBarringInfo/callBarringFeatureList", HFILL }},
15401     { &hf_gsm_map_nbrSB,
15402       { "nbrSB", "gsm_map.nbrSB",
15403         FT_UINT32, BASE_DEC, NULL, 0,
15404         "", HFILL }},
15405     { &hf_gsm_map_nbrUser,
15406       { "nbrUser", "gsm_map.nbrUser",
15407         FT_UINT32, BASE_DEC, NULL, 0,
15408         "", HFILL }},
15409     { &hf_gsm_map_hlr_List,
15410       { "hlr-List", "gsm_map.hlr_List",
15411         FT_NONE, BASE_NONE, NULL, 0,
15412         "ResetArg/hlr-List", HFILL }},
15413     { &hf_gsm_map_msNotReachable,
15414       { "msNotReachable", "gsm_map.msNotReachable",
15415         FT_NONE, BASE_NONE, NULL, 0,
15416         "RestoreDataRes/msNotReachable", HFILL }},
15417     { &hf_gsm_map_VBSDataList_item,
15418       { "Item", "gsm_map.VBSDataList_item",
15419         FT_NONE, BASE_NONE, NULL, 0,
15420         "VBSDataList/_item", HFILL }},
15421     { &hf_gsm_map_VGCSDataList_item,
15422       { "Item", "gsm_map.VGCSDataList_item",
15423         FT_NONE, BASE_NONE, NULL, 0,
15424         "VGCSDataList/_item", HFILL }},
15425     { &hf_gsm_map_groupId,
15426       { "groupId", "gsm_map.groupId",
15427         FT_BYTES, BASE_HEX, NULL, 0,
15428         "VoiceGroupCallData/groupId", HFILL }},
15429     { &hf_gsm_map_groupid,
15430       { "groupid", "gsm_map.groupid",
15431         FT_BYTES, BASE_HEX, NULL, 0,
15432         "VoiceBroadcastData/groupid", HFILL }},
15433     { &hf_gsm_map_broadcastInitEntitlement,
15434       { "broadcastInitEntitlement", "gsm_map.broadcastInitEntitlement",
15435         FT_NONE, BASE_NONE, NULL, 0,
15436         "VoiceBroadcastData/broadcastInitEntitlement", HFILL }},
15437     { &hf_gsm_map_traceReference,
15438       { "traceReference", "gsm_map.traceReference",
15439         FT_BYTES, BASE_HEX, NULL, 0,
15440         "", HFILL }},
15441     { &hf_gsm_map_traceType,
15442       { "traceType", "gsm_map.traceType",
15443         FT_UINT32, BASE_DEC, NULL, 0,
15444         "ActivateTraceModeArg/traceType", HFILL }},
15445     { &hf_gsm_map_omc_Id,
15446       { "omc-Id", "gsm_map.omc_Id",
15447         FT_BYTES, BASE_HEX, NULL, 0,
15448         "ActivateTraceModeArg/omc-Id", HFILL }},
15449     { &hf_gsm_map_cug_CheckInfo,
15450       { "cug-CheckInfo", "gsm_map.cug_CheckInfo",
15451         FT_NONE, BASE_NONE, NULL, 0,
15452         "", HFILL }},
15453     { &hf_gsm_map_numberOfForwarding,
15454       { "numberOfForwarding", "gsm_map.numberOfForwarding",
15455         FT_UINT32, BASE_DEC, NULL, 0,
15456         "SendRoutingInfoArg/numberOfForwarding", HFILL }},
15457     { &hf_gsm_map_interrogationType,
15458       { "interrogationType", "gsm_map.interrogationType",
15459         FT_UINT32, BASE_DEC, VALS(gsm_map_InterrogationType_vals), 0,
15460         "SendRoutingInfoArg/interrogationType", HFILL }},
15461     { &hf_gsm_map_or_Interrogation,
15462       { "or-Interrogation", "gsm_map.or_Interrogation",
15463         FT_NONE, BASE_NONE, NULL, 0,
15464         "", HFILL }},
15465     { &hf_gsm_map_or_Capability,
15466       { "or-Capability", "gsm_map.or_Capability",
15467         FT_UINT32, BASE_DEC, NULL, 0,
15468         "SendRoutingInfoArg/or-Capability", HFILL }},
15469     { &hf_gsm_map_gmsc_OrGsmSCF_Address,
15470       { "gmsc-OrGsmSCF-Address", "gsm_map.gmsc_OrGsmSCF_Address",
15471         FT_BYTES, BASE_HEX, NULL, 0,
15472         "SendRoutingInfoArg/gmsc-OrGsmSCF-Address", HFILL }},
15473     { &hf_gsm_map_callReferenceNumber,
15474       { "callReferenceNumber", "gsm_map.callReferenceNumber",
15475         FT_BYTES, BASE_HEX, NULL, 0,
15476         "", HFILL }},
15477     { &hf_gsm_map_forwardingReason,
15478       { "forwardingReason", "gsm_map.forwardingReason",
15479         FT_UINT32, BASE_DEC, VALS(gsm_map_ForwardingReason_vals), 0,
15480         "SendRoutingInfoArg/forwardingReason", HFILL }},
15481     { &hf_gsm_map_ext_basicServiceGroup,
15482       { "basicServiceGroup", "gsm_map.basicServiceGroup",
15483         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
15484         "", HFILL }},
15485     { &hf_gsm_map_networkSignalInfo,
15486       { "networkSignalInfo", "gsm_map.networkSignalInfo",
15487         FT_NONE, BASE_NONE, NULL, 0,
15488         "", HFILL }},
15489     { &hf_gsm_map_camelInfo,
15490       { "camelInfo", "gsm_map.camelInfo",
15491         FT_NONE, BASE_NONE, NULL, 0,
15492         "SendRoutingInfoArg/camelInfo", HFILL }},
15493     { &hf_gsm_map_suppressionOfAnnouncement,
15494       { "suppressionOfAnnouncement", "gsm_map.suppressionOfAnnouncement",
15495         FT_NONE, BASE_NONE, NULL, 0,
15496         "", HFILL }},
15497     { &hf_gsm_map_alertingPattern,
15498       { "alertingPattern", "gsm_map.alertingPattern",
15499         FT_BYTES, BASE_HEX, NULL, 0,
15500         "", HFILL }},
15501     { &hf_gsm_map_ccbs_Call,
15502       { "ccbs-Call", "gsm_map.ccbs_Call",
15503         FT_NONE, BASE_NONE, NULL, 0,
15504         "", HFILL }},
15505     { &hf_gsm_map_supportedCCBS_Phase,
15506       { "supportedCCBS-Phase", "gsm_map.supportedCCBS_Phase",
15507         FT_UINT32, BASE_DEC, NULL, 0,
15508         "SendRoutingInfoArg/supportedCCBS-Phase", HFILL }},
15509     { &hf_gsm_map_additionalSignalInfo,
15510       { "additionalSignalInfo", "gsm_map.additionalSignalInfo",
15511         FT_NONE, BASE_NONE, NULL, 0,
15512         "", HFILL }},
15513     { &hf_gsm_map_pre_pagingSupported,
15514       { "pre-pagingSupported", "gsm_map.pre_pagingSupported",
15515         FT_NONE, BASE_NONE, NULL, 0,
15516         "", HFILL }},
15517     { &hf_gsm_map_callDiversionTreatmentIndicator,
15518       { "callDiversionTreatmentIndicator", "gsm_map.callDiversionTreatmentIndicator",
15519         FT_BYTES, BASE_HEX, NULL, 0,
15520         "SendRoutingInfoArg/callDiversionTreatmentIndicator", HFILL }},
15521     { &hf_gsm_map_suppress_VT_CSI,
15522       { "suppress-VT-CSI", "gsm_map.suppress_VT_CSI",
15523         FT_NONE, BASE_NONE, NULL, 0,
15524         "", HFILL }},
15525     { &hf_gsm_map_suppressIncomingCallBarring,
15526       { "suppressIncomingCallBarring", "gsm_map.suppressIncomingCallBarring",
15527         FT_NONE, BASE_NONE, NULL, 0,
15528         "SendRoutingInfoArg/suppressIncomingCallBarring", HFILL }},
15529     { &hf_gsm_map_gsmSCF_InitiatedCall,
15530       { "gsmSCF-InitiatedCall", "gsm_map.gsmSCF_InitiatedCall",
15531         FT_NONE, BASE_NONE, NULL, 0,
15532         "SendRoutingInfoArg/gsmSCF-InitiatedCall", HFILL }},
15533     { &hf_gsm_map_basicServiceGroup2,
15534       { "basicServiceGroup2", "gsm_map.basicServiceGroup2",
15535         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
15536         "", HFILL }},
15537     { &hf_gsm_map_networkSignalInfo2,
15538       { "networkSignalInfo2", "gsm_map.networkSignalInfo2",
15539         FT_NONE, BASE_NONE, NULL, 0,
15540         "SendRoutingInfoArg/networkSignalInfo2", HFILL }},
15541     { &hf_gsm_map_extendedRoutingInfo,
15542       { "extendedRoutingInfo", "gsm_map.extendedRoutingInfo",
15543         FT_UINT32, BASE_DEC, VALS(gsm_map_ExtendedRoutingInfo_vals), 0,
15544         "SendRoutingInfoRes/extendedRoutingInfo", HFILL }},
15545     { &hf_gsm_map_cugSubscriptionFlag,
15546       { "cugSubscriptionFlag", "gsm_map.cugSubscriptionFlag",
15547         FT_NONE, BASE_NONE, NULL, 0,
15548         "SendRoutingInfoRes/cugSubscriptionFlag", HFILL }},
15549     { &hf_gsm_map_subscriberInfo,
15550       { "subscriberInfo", "gsm_map.subscriberInfo",
15551         FT_NONE, BASE_NONE, NULL, 0,
15552         "", HFILL }},
15553     { &hf_gsm_map_forwardingInterrogationRequired,
15554       { "forwardingInterrogationRequired", "gsm_map.forwardingInterrogationRequired",
15555         FT_NONE, BASE_NONE, NULL, 0,
15556         "SendRoutingInfoRes/forwardingInterrogationRequired", HFILL }},
15557     { &hf_gsm_map_vmsc_Address,
15558       { "vmsc-Address", "gsm_map.vmsc_Address",
15559         FT_BYTES, BASE_HEX, NULL, 0,
15560         "SendRoutingInfoRes/vmsc-Address", HFILL }},
15561     { &hf_gsm_map_ccbs_Indicators,
15562       { "ccbs-Indicators", "gsm_map.ccbs_Indicators",
15563         FT_NONE, BASE_NONE, NULL, 0,
15564         "SendRoutingInfoRes/ccbs-Indicators", HFILL }},
15565     { &hf_gsm_map_numberPortabilityStatus,
15566       { "numberPortabilityStatus", "gsm_map.numberPortabilityStatus",
15567         FT_UINT32, BASE_DEC, VALS(gsm_map_NumberPortabilityStatus_vals), 0,
15568         "", HFILL }},
15569     { &hf_gsm_map_supportedCamelPhasesInVMSC,
15570       { "supportedCamelPhasesInVMSC", "gsm_map.supportedCamelPhasesInVMSC",
15571         FT_BYTES, BASE_HEX, NULL, 0,
15572         "SendRoutingInfoRes/supportedCamelPhasesInVMSC", HFILL }},
15573     { &hf_gsm_map_offeredCamel4CSIsInVMSC,
15574       { "offeredCamel4CSIsInVMSC", "gsm_map.offeredCamel4CSIsInVMSC",
15575         FT_BYTES, BASE_HEX, NULL, 0,
15576         "SendRoutingInfoRes/offeredCamel4CSIsInVMSC", HFILL }},
15577     { &hf_gsm_map_routingInfo2,
15578       { "routingInfo2", "gsm_map.routingInfo2",
15579         FT_UINT32, BASE_DEC, VALS(gsm_map_RoutingInfo_vals), 0,
15580         "SendRoutingInfoRes/routingInfo2", HFILL }},
15581     { &hf_gsm_map_ss_List2,
15582       { "ss-List2", "gsm_map.ss_List2",
15583         FT_NONE, BASE_NONE, NULL, 0,
15584         "SendRoutingInfoRes/ss-List2", HFILL }},
15585     { &hf_gsm_map_basicService2,
15586       { "basicService2", "gsm_map.basicService2",
15587         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
15588         "SendRoutingInfoRes/basicService2", HFILL }},
15589     { &hf_gsm_map_allowedServices,
15590       { "allowedServices", "gsm_map.allowedServices",
15591         FT_BYTES, BASE_HEX, NULL, 0,
15592         "SendRoutingInfoRes/allowedServices", HFILL }},
15593     { &hf_gsm_map_unavailabilityCause,
15594       { "unavailabilityCause", "gsm_map.unavailabilityCause",
15595         FT_UINT32, BASE_DEC, VALS(gsm_map_UnavailabilityCause_vals), 0,
15596         "SendRoutingInfoRes/unavailabilityCause", HFILL }},
15597     { &hf_gsm_map_releaseResourcesSupported,
15598       { "releaseResourcesSupported", "gsm_map.releaseResourcesSupported",
15599         FT_NONE, BASE_NONE, NULL, 0,
15600         "", HFILL }},
15601     { &hf_gsm_map_ext_ProtocolId,
15602       { "ext-ProtocolId", "gsm_map.ext_ProtocolId",
15603         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_ProtocolId_vals), 0,
15604         "Ext-ExternalSignalInfo/ext-ProtocolId", HFILL }},
15605     { &hf_gsm_map_accessNetworkProtocolId,
15606       { "accessNetworkProtocolId", "gsm_map.accessNetworkProtocolId",
15607         FT_UINT32, BASE_DEC, VALS(gsm_map_AccessNetworkProtocolId_vals), 0,
15608         "AccessNetworkSignalInfo/accessNetworkProtocolId", HFILL }},
15609     { &hf_gsm_map_longsignalInfo,
15610       { "signalInfo", "gsm_map.signalInfo",
15611         FT_BYTES, BASE_HEX, NULL, 0,
15612         "AccessNetworkSignalInfo/signalInfo", HFILL }},
15613     { &hf_gsm_map_suppress_T_CSI,
15614       { "suppress-T-CSI", "gsm_map.suppress_T_CSI",
15615         FT_NONE, BASE_NONE, NULL, 0,
15616         "CamelInfo/suppress-T-CSI", HFILL }},
15617     { &hf_gsm_map_imsi_WithLMSI,
15618       { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI",
15619         FT_NONE, BASE_NONE, NULL, 0,
15620         "Identity/imsi-WithLMSI", HFILL }},
15621     { &hf_gsm_map_HLR_List_item,
15622       { "Item", "gsm_map.HLR_List_item",
15623         FT_BYTES, BASE_HEX, NULL, 0,
15624         "HLR-List/_item", HFILL }},
15625     { &hf_gsm_map_SS_List_item,
15626       { "Item", "gsm_map.SS_List_item",
15627         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
15628         "SS-List/_item", HFILL }},
15629     { &hf_gsm_map_naea_PreferredCIC,
15630       { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC",
15631         FT_BYTES, BASE_HEX, NULL, 0,
15632         "NAEA-PreferredCI/naea-PreferredCIC", HFILL }},
15633     { &hf_gsm_map_externalAddress,
15634       { "externalAddress", "gsm_map.externalAddress",
15635         FT_BYTES, BASE_HEX, NULL, 0,
15636         "LCSClientExternalID/externalAddress", HFILL }},
15637     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength,
15638       { "cellGlobalIdOrServiceAreaIdFixedLength", "gsm_map.cellGlobalIdOrServiceAreaIdFixedLength",
15639         FT_BYTES, BASE_HEX, NULL, 0,
15640         "CellGlobalIdOrServiceAreaIdOrLAI/cellGlobalIdOrServiceAreaIdFixedLength", HFILL }},
15641     { &hf_gsm_map_laiFixedLength,
15642       { "laiFixedLength", "gsm_map.laiFixedLength",
15643         FT_BYTES, BASE_HEX, NULL, 0,
15644         "CellGlobalIdOrServiceAreaIdOrLAI/laiFixedLength", HFILL }},
15645     { &hf_gsm_map_ccbs_Possible,
15646       { "ccbs-Possible", "gsm_map.ccbs_Possible",
15647         FT_NONE, BASE_NONE, NULL, 0,
15648         "", HFILL }},
15649     { &hf_gsm_map_keepCCBS_CallIndicator,
15650       { "keepCCBS-CallIndicator", "gsm_map.keepCCBS_CallIndicator",
15651         FT_NONE, BASE_NONE, NULL, 0,
15652         "CCBS-Indicators/keepCCBS-CallIndicator", HFILL }},
15653     { &hf_gsm_map_roamingNumber,
15654       { "roamingNumber", "gsm_map.roamingNumber",
15655         FT_BYTES, BASE_HEX, NULL, 0,
15656         "", HFILL }},
15657     { &hf_gsm_map_forwardingData,
15658       { "forwardingData", "gsm_map.forwardingData",
15659         FT_NONE, BASE_NONE, NULL, 0,
15660         "", HFILL }},
15661     { &hf_gsm_map_routingInfo,
15662       { "routingInfo", "gsm_map.routingInfo",
15663         FT_UINT32, BASE_DEC, VALS(gsm_map_RoutingInfo_vals), 0,
15664         "ExtendedRoutingInfo/routingInfo", HFILL }},
15665     { &hf_gsm_map_camelRoutingInfo,
15666       { "camelRoutingInfo", "gsm_map.camelRoutingInfo",
15667         FT_NONE, BASE_NONE, NULL, 0,
15668         "ExtendedRoutingInfo/camelRoutingInfo", HFILL }},
15669     { &hf_gsm_map_gmscCamelSubscriptionInfo,
15670       { "gmscCamelSubscriptionInfo", "gsm_map.gmscCamelSubscriptionInfo",
15671         FT_NONE, BASE_NONE, NULL, 0,
15672         "CamelRoutingInfo/gmscCamelSubscriptionInfo", HFILL }},
15673     { &hf_gsm_map_t_CSI,
15674       { "t-CSI", "gsm_map.t_CSI",
15675         FT_NONE, BASE_NONE, NULL, 0,
15676         "", HFILL }},
15677     { &hf_gsm_map_d_csi,
15678       { "d-csi", "gsm_map.d_csi",
15679         FT_NONE, BASE_NONE, NULL, 0,
15680         "", HFILL }},
15681     { &hf_gsm_map_ageOfLocationInformation,
15682       { "ageOfLocationInformation", "gsm_map.ageOfLocationInformation",
15683         FT_UINT32, BASE_DEC, NULL, 0,
15684         "", HFILL }},
15685     { &hf_gsm_map_geographicalInformation,
15686       { "geographicalInformation", "gsm_map.geographicalInformation",
15687         FT_BYTES, BASE_HEX, NULL, 0,
15688         "", HFILL }},
15689     { &hf_gsm_map_vlr_number,
15690       { "vlr-number", "gsm_map.vlr_number",
15691         FT_BYTES, BASE_HEX, NULL, 0,
15692         "LocationInformation/vlr-number", HFILL }},
15693     { &hf_gsm_map_locationNumber,
15694       { "locationNumber", "gsm_map.locationNumber",
15695         FT_BYTES, BASE_HEX, NULL, 0,
15696         "LocationInformation/locationNumber", HFILL }},
15697     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI,
15698       { "cellGlobalIdOrServiceAreaIdOrLAI", "gsm_map.cellGlobalIdOrServiceAreaIdOrLAI",
15699         FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
15700         "", HFILL }},
15701     { &hf_gsm_map_selectedLSA_Id,
15702       { "selectedLSA-Id", "gsm_map.selectedLSA_Id",
15703         FT_BYTES, BASE_HEX, NULL, 0,
15704         "LocationInformation/selectedLSA-Id", HFILL }},
15705     { &hf_gsm_map_geodeticInformation,
15706       { "geodeticInformation", "gsm_map.geodeticInformation",
15707         FT_BYTES, BASE_HEX, NULL, 0,
15708         "", HFILL }},
15709     { &hf_gsm_map_currentLocationRetrieved,
15710       { "currentLocationRetrieved", "gsm_map.currentLocationRetrieved",
15711         FT_NONE, BASE_NONE, NULL, 0,
15712         "", HFILL }},
15713     { &hf_gsm_map_sai_Present,
15714       { "sai-Present", "gsm_map.sai_Present",
15715         FT_NONE, BASE_NONE, NULL, 0,
15716         "", HFILL }},
15717     { &hf_gsm_map_routeingAreaIdentity,
15718       { "routeingAreaIdentity", "gsm_map.routeingAreaIdentity",
15719         FT_BYTES, BASE_HEX, NULL, 0,
15720         "LocationInformationGPRS/routeingAreaIdentity", HFILL }},
15721     { &hf_gsm_map_selectedLSAIdentity,
15722       { "selectedLSAIdentity", "gsm_map.selectedLSAIdentity",
15723         FT_BYTES, BASE_HEX, NULL, 0,
15724         "LocationInformationGPRS/selectedLSAIdentity", HFILL }},
15725     { &hf_gsm_map_assumedIdle,
15726       { "assumedIdle", "gsm_map.assumedIdle",
15727         FT_NONE, BASE_NONE, NULL, 0,
15728         "SubscriberState/assumedIdle", HFILL }},
15729     { &hf_gsm_map_camelBusy,
15730       { "camelBusy", "gsm_map.camelBusy",
15731         FT_NONE, BASE_NONE, NULL, 0,
15732         "SubscriberState/camelBusy", HFILL }},
15733     { &hf_gsm_map_notProvidedFromVLR,
15734       { "notProvidedFromVLR", "gsm_map.notProvidedFromVLR",
15735         FT_NONE, BASE_NONE, NULL, 0,
15736         "SubscriberState/notProvidedFromVLR", HFILL }},
15737     { &hf_gsm_map_notProvidedFromSGSN,
15738       { "notProvidedFromSGSN", "gsm_map.notProvidedFromSGSN",
15739         FT_NONE, BASE_NONE, NULL, 0,
15740         "PS-SubscriberState/notProvidedFromSGSN", HFILL }},
15741     { &hf_gsm_map_ps_Detached,
15742       { "ps-Detached", "gsm_map.ps_Detached",
15743         FT_NONE, BASE_NONE, NULL, 0,
15744         "PS-SubscriberState/ps-Detached", HFILL }},
15745     { &hf_gsm_map_ps_AttachedNotReachableForPaging,
15746       { "ps-AttachedNotReachableForPaging", "gsm_map.ps_AttachedNotReachableForPaging",
15747         FT_NONE, BASE_NONE, NULL, 0,
15748         "PS-SubscriberState/ps-AttachedNotReachableForPaging", HFILL }},
15749     { &hf_gsm_map_ps_AttachedReachableForPaging,
15750       { "ps-AttachedReachableForPaging", "gsm_map.ps_AttachedReachableForPaging",
15751         FT_NONE, BASE_NONE, NULL, 0,
15752         "PS-SubscriberState/ps-AttachedReachableForPaging", HFILL }},
15753     { &hf_gsm_map_ps_PDP_ActiveNotReachableForPaging,
15754       { "ps-PDP-ActiveNotReachableForPaging", "gsm_map.ps_PDP_ActiveNotReachableForPaging",
15755         FT_NONE, BASE_NONE, NULL, 0,
15756         "PS-SubscriberState/ps-PDP-ActiveNotReachableForPaging", HFILL }},
15757     { &hf_gsm_map_ps_PDP_ActiveReachableForPaging,
15758       { "ps-PDP-ActiveReachableForPaging", "gsm_map.ps_PDP_ActiveReachableForPaging",
15759         FT_NONE, BASE_NONE, NULL, 0,
15760         "PS-SubscriberState/ps-PDP-ActiveReachableForPaging", HFILL }},
15761     { &hf_gsm_map_netDetNotReachable,
15762       { "netDetNotReachable", "gsm_map.netDetNotReachable",
15763         FT_UINT32, BASE_DEC, VALS(gsm_map_NotReachableReason_vals), 0,
15764         "PS-SubscriberState/netDetNotReachable", HFILL }},
15765     { &hf_gsm_map_PDP_ContextInfoList_item,
15766       { "Item", "gsm_map.PDP_ContextInfoList_item",
15767         FT_NONE, BASE_NONE, NULL, 0,
15768         "PDP-ContextInfoList/_item", HFILL }},
15769     { &hf_gsm_map_pdp_ContextIdentifier,
15770       { "pdp-ContextIdentifier", "gsm_map.pdp_ContextIdentifier",
15771         FT_UINT32, BASE_DEC, NULL, 0,
15772         "PDP-ContextInfo/pdp-ContextIdentifier", HFILL }},
15773     { &hf_gsm_map_pdp_ContextActive,
15774       { "pdp-ContextActive", "gsm_map.pdp_ContextActive",
15775         FT_NONE, BASE_NONE, NULL, 0,
15776         "PDP-ContextInfo/pdp-ContextActive", HFILL }},
15777     { &hf_gsm_map_apn_Subscribed,
15778       { "apn-Subscribed", "gsm_map.apn_Subscribed",
15779         FT_BYTES, BASE_HEX, NULL, 0,
15780         "PDP-ContextInfo/apn-Subscribed", HFILL }},
15781     { &hf_gsm_map_apn_InUse,
15782       { "apn-InUse", "gsm_map.apn_InUse",
15783         FT_BYTES, BASE_HEX, NULL, 0,
15784         "PDP-ContextInfo/apn-InUse", HFILL }},
15785     { &hf_gsm_map_nsapi,
15786       { "nsapi", "gsm_map.nsapi",
15787         FT_UINT32, BASE_DEC, NULL, 0,
15788         "PDP-ContextInfo/nsapi", HFILL }},
15789     { &hf_gsm_map_transactionId,
15790       { "transactionId", "gsm_map.transactionId",
15791         FT_BYTES, BASE_HEX, NULL, 0,
15792         "PDP-ContextInfo/transactionId", HFILL }},
15793     { &hf_gsm_map_teid_ForGnAndGp,
15794       { "teid-ForGnAndGp", "gsm_map.teid_ForGnAndGp",
15795         FT_BYTES, BASE_HEX, NULL, 0,
15796         "PDP-ContextInfo/teid-ForGnAndGp", HFILL }},
15797     { &hf_gsm_map_teid_ForIu,
15798       { "teid-ForIu", "gsm_map.teid_ForIu",
15799         FT_BYTES, BASE_HEX, NULL, 0,
15800         "PDP-ContextInfo/teid-ForIu", HFILL }},
15801     { &hf_gsm_map_ggsn_Address,
15802       { "ggsn-Address", "gsm_map.ggsn_Address",
15803         FT_BYTES, BASE_HEX, NULL, 0,
15804         "", HFILL }},
15805     { &hf_gsm_map_ext_qos_Subscribed,
15806       { "qos-Subscribed", "gsm_map.qos_Subscribed",
15807         FT_BYTES, BASE_HEX, NULL, 0,
15808         "PDP-ContextInfo/qos-Subscribed", HFILL }},
15809     { &hf_gsm_map_qos_Requested,
15810       { "qos-Requested", "gsm_map.qos_Requested",
15811         FT_BYTES, BASE_HEX, NULL, 0,
15812         "PDP-ContextInfo/qos-Requested", HFILL }},
15813     { &hf_gsm_map_qos_Negotiated,
15814       { "qos-Negotiated", "gsm_map.qos_Negotiated",
15815         FT_BYTES, BASE_HEX, NULL, 0,
15816         "PDP-ContextInfo/qos-Negotiated", HFILL }},
15817     { &hf_gsm_map_chargingId,
15818       { "chargingId", "gsm_map.chargingId",
15819         FT_BYTES, BASE_HEX, NULL, 0,
15820         "PDP-ContextInfo/chargingId", HFILL }},
15821     { &hf_gsm_map_rnc_Address,
15822       { "rnc-Address", "gsm_map.rnc_Address",
15823         FT_BYTES, BASE_HEX, NULL, 0,
15824         "PDP-ContextInfo/rnc-Address", HFILL }},
15825     { &hf_gsm_map_qos2_Subscribed,
15826       { "qos2-Subscribed", "gsm_map.qos2_Subscribed",
15827         FT_BYTES, BASE_HEX, NULL, 0,
15828         "PDP-ContextInfo/qos2-Subscribed", HFILL }},
15829     { &hf_gsm_map_qos2_Requested,
15830       { "qos2-Requested", "gsm_map.qos2_Requested",
15831         FT_BYTES, BASE_HEX, NULL, 0,
15832         "PDP-ContextInfo/qos2-Requested", HFILL }},
15833     { &hf_gsm_map_qos2_Negotiated,
15834       { "qos2-Negotiated", "gsm_map.qos2_Negotiated",
15835         FT_BYTES, BASE_HEX, NULL, 0,
15836         "PDP-ContextInfo/qos2-Negotiated", HFILL }},
15837     { &hf_gsm_map_cug_OutgoingAccess,
15838       { "cug-OutgoingAccess", "gsm_map.cug_OutgoingAccess",
15839         FT_NONE, BASE_NONE, NULL, 0,
15840         "CUG-CheckInfo/cug-OutgoingAccess", HFILL }},
15841     { &hf_gsm_map_gsm_BearerCapability,
15842       { "gsm-BearerCapability", "gsm_map.gsm_BearerCapability",
15843         FT_NONE, BASE_NONE, NULL, 0,
15844         "", HFILL }},
15845     { &hf_gsm_map_gmsc_Address,
15846       { "gmsc-Address", "gsm_map.gmsc_Address",
15847         FT_BYTES, BASE_HEX, NULL, 0,
15848         "ProvideRoamingNumberArg/gmsc-Address", HFILL }},
15849     { &hf_gsm_map_supportedCamelPhasesInInterrogatingNode,
15850       { "supportedCamelPhasesInInterrogatingNode", "gsm_map.supportedCamelPhasesInInterrogatingNode",
15851         FT_BYTES, BASE_HEX, NULL, 0,
15852         "ProvideRoamingNumberArg/supportedCamelPhasesInInterrogatingNode", HFILL }},
15853     { &hf_gsm_map_orNotSupportedInGMSC,
15854       { "orNotSupportedInGMSC", "gsm_map.orNotSupportedInGMSC",
15855         FT_NONE, BASE_NONE, NULL, 0,
15856         "ProvideRoamingNumberArg/orNotSupportedInGMSC", HFILL }},
15857     { &hf_gsm_map_offeredCamel4CSIsInInterrogatingNode,
15858       { "offeredCamel4CSIsInInterrogatingNode", "gsm_map.offeredCamel4CSIsInInterrogatingNode",
15859         FT_BYTES, BASE_HEX, NULL, 0,
15860         "ProvideRoamingNumberArg/offeredCamel4CSIsInInterrogatingNode", HFILL }},
15861     { &hf_gsm_map_uu_Data,
15862       { "uu-Data", "gsm_map.uu_Data",
15863         FT_NONE, BASE_NONE, NULL, 0,
15864         "ResumeCallHandlingArg/uu-Data", HFILL }},
15865     { &hf_gsm_map_allInformationSent,
15866       { "allInformationSent", "gsm_map.allInformationSent",
15867         FT_NONE, BASE_NONE, NULL, 0,
15868         "", HFILL }},
15869     { &hf_gsm_map_o_BcsmCamelTDPCriteriaList,
15870       { "o-BcsmCamelTDPCriteriaList", "gsm_map.o_BcsmCamelTDPCriteriaList",
15871         FT_NONE, BASE_NONE, NULL, 0,
15872         "ResumeCallHandlingArg/o-BcsmCamelTDPCriteriaList", HFILL }},
15873     { &hf_gsm_map_uuIndicator,
15874       { "uuIndicator", "gsm_map.uuIndicator",
15875         FT_BYTES, BASE_HEX, NULL, 0,
15876         "UU-Data/uuIndicator", HFILL }},
15877     { &hf_gsm_map_uui,
15878       { "uui", "gsm_map.uui",
15879         FT_BYTES, BASE_HEX, NULL, 0,
15880         "UU-Data/uui", HFILL }},
15881     { &hf_gsm_map_uusCFInteraction,
15882       { "uusCFInteraction", "gsm_map.uusCFInteraction",
15883         FT_NONE, BASE_NONE, NULL, 0,
15884         "UU-Data/uusCFInteraction", HFILL }},
15885     { &hf_gsm_map_isdn_BearerCapability,
15886       { "isdn-BearerCapability", "gsm_map.isdn_BearerCapability",
15887         FT_NONE, BASE_NONE, NULL, 0,
15888         "ProvideSIWFSNumberArg/isdn-BearerCapability", HFILL }},
15889     { &hf_gsm_map_call_Direction,
15890       { "call-Direction", "gsm_map.call_Direction",
15891         FT_BYTES, BASE_HEX, NULL, 0,
15892         "ProvideSIWFSNumberArg/call-Direction", HFILL }},
15893     { &hf_gsm_map_b_Subscriber_Address,
15894       { "b-Subscriber-Address", "gsm_map.b_Subscriber_Address",
15895         FT_BYTES, BASE_HEX, NULL, 0,
15896         "ProvideSIWFSNumberArg/b-Subscriber-Address", HFILL }},
15897     { &hf_gsm_map_chosenChannel,
15898       { "chosenChannel", "gsm_map.chosenChannel",
15899         FT_NONE, BASE_NONE, NULL, 0,
15900         "", HFILL }},
15901     { &hf_gsm_map_lowerLayerCompatibility,
15902       { "lowerLayerCompatibility", "gsm_map.lowerLayerCompatibility",
15903         FT_NONE, BASE_NONE, NULL, 0,
15904         "ProvideSIWFSNumberArg/lowerLayerCompatibility", HFILL }},
15905     { &hf_gsm_map_highLayerCompatibility,
15906       { "highLayerCompatibility", "gsm_map.highLayerCompatibility",
15907         FT_NONE, BASE_NONE, NULL, 0,
15908         "ProvideSIWFSNumberArg/highLayerCompatibility", HFILL }},
15909     { &hf_gsm_map_sIWFSNumber,
15910       { "sIWFSNumber", "gsm_map.sIWFSNumber",
15911         FT_BYTES, BASE_HEX, NULL, 0,
15912         "ProvideSIWFSNumberRes/sIWFSNumber", HFILL }},
15913     { &hf_gsm_map_channelType,
15914       { "channelType", "gsm_map.channelType",
15915         FT_NONE, BASE_NONE, NULL, 0,
15916         "", HFILL }},
15917     { &hf_gsm_map_ccbs_Monitoring,
15918       { "ccbs-Monitoring", "gsm_map.ccbs_Monitoring",
15919         FT_UINT32, BASE_DEC, VALS(gsm_map_ReportingState_vals), 0,
15920         "SetReportingStateArg/ccbs-Monitoring", HFILL }},
15921     { &hf_gsm_map_ccbs_SubscriberStatus,
15922       { "ccbs-SubscriberStatus", "gsm_map.ccbs_SubscriberStatus",
15923         FT_UINT32, BASE_DEC, VALS(gsm_map_CCBS_SubscriberStatus_vals), 0,
15924         "", HFILL }},
15925     { &hf_gsm_map_eventReportData,
15926       { "eventReportData", "gsm_map.eventReportData",
15927         FT_NONE, BASE_NONE, NULL, 0,
15928         "StatusReportArg/eventReportData", HFILL }},
15929     { &hf_gsm_map_callReportdata,
15930       { "callReportdata", "gsm_map.callReportdata",
15931         FT_NONE, BASE_NONE, NULL, 0,
15932         "StatusReportArg/callReportdata", HFILL }},
15933     { &hf_gsm_map_monitoringMode,
15934       { "monitoringMode", "gsm_map.monitoringMode",
15935         FT_UINT32, BASE_DEC, VALS(gsm_map_MonitoringMode_vals), 0,
15936         "CallReportData/monitoringMode", HFILL }},
15937     { &hf_gsm_map_callOutcome,
15938       { "callOutcome", "gsm_map.callOutcome",
15939         FT_UINT32, BASE_DEC, VALS(gsm_map_CallOutcome_vals), 0,
15940         "CallReportData/callOutcome", HFILL }},
15941     { &hf_gsm_map_callTerminationIndicator,
15942       { "callTerminationIndicator", "gsm_map.callTerminationIndicator",
15943         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTerminationIndicator_vals), 0,
15944         "IST-AlertRes/callTerminationIndicator", HFILL }},
15945     { &hf_gsm_map_msrn,
15946       { "msrn", "gsm_map.msrn",
15947         FT_BYTES, BASE_HEX, NULL, 0,
15948         "ReleaseResourcesArg/msrn", HFILL }},
15949     { &hf_gsm_map_callInfo,
15950       { "callInfo", "gsm_map.callInfo",
15951         FT_NONE, BASE_NONE, NULL, 0,
15952         "", HFILL }},
15953     { &hf_gsm_map_ccbs_Feature,
15954       { "ccbs-Feature", "gsm_map.ccbs_Feature",
15955         FT_NONE, BASE_NONE, NULL, 0,
15956         "", HFILL }},
15957     { &hf_gsm_map_translatedB_Number,
15958       { "translatedB-Number", "gsm_map.translatedB_Number",
15959         FT_BYTES, BASE_HEX, NULL, 0,
15960         "", HFILL }},
15961     { &hf_gsm_map_replaceB_Number,
15962       { "replaceB-Number", "gsm_map.replaceB_Number",
15963         FT_NONE, BASE_NONE, NULL, 0,
15964         "RemoteUserFreeArg/replaceB-Number", HFILL }},
15965     { &hf_gsm_map_ruf_Outcome,
15966       { "ruf-Outcome", "gsm_map.ruf_Outcome",
15967         FT_UINT32, BASE_DEC, VALS(gsm_map_Ruf_Outcome_vals), 0,
15968         "RemoteUserFreeRes/ruf-Outcome", HFILL }},
15969     { &hf_gsm_map_ext_basicServiceGroupList,
15970       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
15971         FT_NONE, BASE_NONE, NULL, 0,
15972         "", HFILL }},
15973     { &hf_gsm_map_cliRestrictionOption,
15974       { "cliRestrictionOption", "gsm_map.cliRestrictionOption",
15975         FT_UINT32, BASE_DEC, VALS(gsm_map_CliRestrictionOption_vals), 0,
15976         "", HFILL }},
15977     { &hf_gsm_map_overrideCategory,
15978       { "overrideCategory", "gsm_map.overrideCategory",
15979         FT_UINT32, BASE_DEC, VALS(gsm_map_OverrideCategory_vals), 0,
15980         "SS-SubscriptionOption/overrideCategory", HFILL }},
15981     { &hf_gsm_map_forwardedToNumber_addr,
15982       { "forwardedToNumber", "gsm_map.forwardedToNumber",
15983         FT_BYTES, BASE_HEX, NULL, 0,
15984         "", HFILL }},
15985     { &hf_gsm_map_forwardingInfo,
15986       { "forwardingInfo", "gsm_map.forwardingInfo",
15987         FT_NONE, BASE_NONE, NULL, 0,
15988         "SS-Info/forwardingInfo", HFILL }},
15989     { &hf_gsm_map_callBarringInfo,
15990       { "callBarringInfo", "gsm_map.callBarringInfo",
15991         FT_NONE, BASE_NONE, NULL, 0,
15992         "SS-Info/callBarringInfo", HFILL }},
15993     { &hf_gsm_map_ss_Data,
15994       { "ss-Data", "gsm_map.ss_Data",
15995         FT_NONE, BASE_NONE, NULL, 0,
15996         "SS-Info/ss-Data", HFILL }},
15997     { &hf_gsm_map_genericServiceInfo,
15998       { "genericServiceInfo", "gsm_map.genericServiceInfo",
15999         FT_NONE, BASE_NONE, NULL, 0,
16000         "InterrogateSS-Res/genericServiceInfo", HFILL }},
16001     { &hf_gsm_map_ussd_DataCodingScheme,
16002       { "ussd-DataCodingScheme", "gsm_map.ussd_DataCodingScheme",
16003         FT_BYTES, BASE_HEX, NULL, 0,
16004         "", HFILL }},
16005     { &hf_gsm_map_ussd_String,
16006       { "ussd-String", "gsm_map.ussd_String",
16007         FT_BYTES, BASE_HEX, NULL, 0,
16008         "", HFILL }},
16009     { &hf_gsm_map_failureCause,
16010       { "failureCause", "gsm_map.failureCause",
16011         FT_UINT32, BASE_DEC, VALS(gsm_map_FailureCause_vals), 0,
16012         "AuthenticationFailureReportArg/failureCause", HFILL }},
16013     { &hf_gsm_map_re_attempt,
16014       { "re-attempt", "gsm_map.re_attempt",
16015         FT_BOOLEAN, 8, NULL, 0,
16016         "AuthenticationFailureReportArg/re-attempt", HFILL }},
16017     { &hf_gsm_map_accessType,
16018       { "accessType", "gsm_map.accessType",
16019         FT_UINT32, BASE_DEC, VALS(gsm_map_AccessType_vals), 0,
16020         "AuthenticationFailureReportArg/accessType", HFILL }},
16021     { &hf_gsm_map_ccbs_Data,
16022       { "ccbs-Data", "gsm_map.ccbs_Data",
16023         FT_NONE, BASE_NONE, NULL, 0,
16024         "RegisterCC-EntryArg/ccbs-Data", HFILL }},
16025     { &hf_gsm_map_serviceIndicator,
16026       { "serviceIndicator", "gsm_map.serviceIndicator",
16027         FT_BYTES, BASE_HEX, NULL, 0,
16028         "CCBS-Data/serviceIndicator", HFILL }},
16029     { &hf_gsm_map_ccbs_Index,
16030       { "ccbs-Index", "gsm_map.ccbs_Index",
16031         FT_UINT32, BASE_DEC, NULL, 0,
16032         "", HFILL }},
16033     { &hf_gsm_map_sm_RP_PRI,
16034       { "sm-RP-PRI", "gsm_map.sm_RP_PRI",
16035         FT_BOOLEAN, 8, NULL, 0,
16036         "RoutingInfoForSMArg/sm-RP-PRI", HFILL }},
16037     { &hf_gsm_map_serviceCentreAddress,
16038       { "serviceCentreAddress", "gsm_map.serviceCentreAddress",
16039         FT_BYTES, BASE_HEX, NULL, 0,
16040         "", HFILL }},
16041     { &hf_gsm_map_gprsSupportIndicator,
16042       { "gprsSupportIndicator", "gsm_map.gprsSupportIndicator",
16043         FT_NONE, BASE_NONE, NULL, 0,
16044         "", HFILL }},
16045     { &hf_gsm_map_sm_RP_MTI,
16046       { "sm-RP-MTI", "gsm_map.sm_RP_MTI",
16047         FT_UINT32, BASE_DEC, NULL, 0,
16048         "RoutingInfoForSMArg/sm-RP-MTI", HFILL }},
16049     { &hf_gsm_map_sm_RP_SMEA,
16050       { "sm-RP-SMEA", "gsm_map.sm_RP_SMEA",
16051         FT_BYTES, BASE_HEX, NULL, 0,
16052         "RoutingInfoForSMArg/sm-RP-SMEA", HFILL }},
16053     { &hf_gsm_map_locationInfoWithLMSI,
16054       { "locationInfoWithLMSI", "gsm_map.locationInfoWithLMSI",
16055         FT_NONE, BASE_NONE, NULL, 0,
16056         "RoutingInfoForSM-Res/locationInfoWithLMSI", HFILL }},
16057     { &hf_gsm_map_networkNode_Number,
16058       { "networkNode-Number", "gsm_map.networkNode_Number",
16059         FT_BYTES, BASE_HEX, NULL, 0,
16060         "", HFILL }},
16061     { &hf_gsm_map_gprsNodeIndicator,
16062       { "gprsNodeIndicator", "gsm_map.gprsNodeIndicator",
16063         FT_NONE, BASE_NONE, NULL, 0,
16064         "", HFILL }},
16065     { &hf_gsm_map_additional_Number,
16066       { "additional-Number", "gsm_map.additional_Number",
16067         FT_UINT32, BASE_DEC, VALS(gsm_map_Additional_Number_vals), 0,
16068         "", HFILL }},
16069     { &hf_gsm_map_sm_RP_DA,
16070       { "sm-RP-DA", "gsm_map.sm_RP_DA",
16071         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_DA_vals), 0,
16072         "", HFILL }},
16073     { &hf_gsm_map_sm_RP_OA,
16074       { "sm-RP-OA", "gsm_map.sm_RP_OA",
16075         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_OA_vals), 0,
16076         "", HFILL }},
16077     { &hf_gsm_map_sm_RP_UI,
16078       { "sm-RP-UI", "gsm_map.sm_RP_UI",
16079         FT_BYTES, BASE_HEX, NULL, 0,
16080         "", HFILL }},
16081     { &hf_gsm_map_serviceCentreAddressOA,
16082       { "serviceCentreAddressOA", "gsm_map.serviceCentreAddressOA",
16083         FT_BYTES, BASE_HEX, NULL, 0,
16084         "Sm-RP-OA/serviceCentreAddressOA", HFILL }},
16085     { &hf_gsm_map_noSM_RP_OA,
16086       { "noSM-RP-OA", "gsm_map.noSM_RP_OA",
16087         FT_NONE, BASE_NONE, NULL, 0,
16088         "Sm-RP-OA/noSM-RP-OA", HFILL }},
16089     { &hf_gsm_map_serviceCentreAddressDA,
16090       { "serviceCentreAddressDA", "gsm_map.serviceCentreAddressDA",
16091         FT_BYTES, BASE_HEX, NULL, 0,
16092         "Sm-RP-DA/serviceCentreAddressDA", HFILL }},
16093     { &hf_gsm_map_noSM_RP_DA,
16094       { "noSM-RP-DA", "gsm_map.noSM_RP_DA",
16095         FT_NONE, BASE_NONE, NULL, 0,
16096         "Sm-RP-DA/noSM-RP-DA", HFILL }},
16097     { &hf_gsm_map_moreMessagesToSend,
16098       { "moreMessagesToSend", "gsm_map.moreMessagesToSend",
16099         FT_NONE, BASE_NONE, NULL, 0,
16100         "Mt-forwardSM-Arg/moreMessagesToSend", HFILL }},
16101     { &hf_gsm_map_sm_DeliveryOutcome,
16102       { "sm-DeliveryOutcome", "gsm_map.sm_DeliveryOutcome",
16103         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
16104         "ReportSM-DeliveryStatusArg/sm-DeliveryOutcome", HFILL }},
16105     { &hf_gsm_map_absentSubscriberDiagnosticSM,
16106       { "absentSubscriberDiagnosticSM", "gsm_map.absentSubscriberDiagnosticSM",
16107         FT_UINT32, BASE_DEC, NULL, 0,
16108         "", HFILL }},
16109     { &hf_gsm_map_deliveryOutcomeIndicator,
16110       { "deliveryOutcomeIndicator", "gsm_map.deliveryOutcomeIndicator",
16111         FT_NONE, BASE_NONE, NULL, 0,
16112         "ReportSM-DeliveryStatusArg/deliveryOutcomeIndicator", HFILL }},
16113     { &hf_gsm_map_additionalSM_DeliveryOutcome,
16114       { "additionalSM-DeliveryOutcome", "gsm_map.additionalSM_DeliveryOutcome",
16115         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
16116         "ReportSM-DeliveryStatusArg/additionalSM-DeliveryOutcome", HFILL }},
16117     { &hf_gsm_map_additionalAbsentSubscriberDiagnosticSM,
16118       { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.additionalAbsentSubscriberDiagnosticSM",
16119         FT_UINT32, BASE_DEC, NULL, 0,
16120         "", HFILL }},
16121     { &hf_gsm_map_storedMSISDN,
16122       { "storedMSISDN", "gsm_map.storedMSISDN",
16123         FT_BYTES, BASE_HEX, NULL, 0,
16124         "", HFILL }},
16125     { &hf_gsm_map_mw_Status,
16126       { "mw-Status", "gsm_map.mw_Status",
16127         FT_BYTES, BASE_HEX, NULL, 0,
16128         "InformServiceCentreArg/mw-Status", HFILL }},
16129     { &hf_gsm_map_alertReason,
16130       { "alertReason", "gsm_map.alertReason",
16131         FT_UINT32, BASE_DEC, VALS(gsm_map_T_alertReason_vals), 0,
16132         "ReadyForSM-Arg/alertReason", HFILL }},
16133     { &hf_gsm_map_alertReasonIndicator,
16134       { "alertReasonIndicator", "gsm_map.alertReasonIndicator",
16135         FT_NONE, BASE_NONE, NULL, 0,
16136         "ReadyForSM-Arg/alertReasonIndicator", HFILL }},
16137     { &hf_gsm_map_requestedInfo,
16138       { "requestedInfo", "gsm_map.requestedInfo",
16139         FT_NONE, BASE_NONE, NULL, 0,
16140         "", HFILL }},
16141     { &hf_gsm_map_locationInformation,
16142       { "locationInformation", "gsm_map.locationInformation",
16143         FT_NONE, BASE_NONE, NULL, 0,
16144         "", HFILL }},
16145     { &hf_gsm_map_subscriberState,
16146       { "subscriberState", "gsm_map.subscriberState",
16147         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberState_vals), 0,
16148         "SubscriberInfo/subscriberState", HFILL }},
16149     { &hf_gsm_map_locationInformationGPRS,
16150       { "locationInformationGPRS", "gsm_map.locationInformationGPRS",
16151         FT_NONE, BASE_NONE, NULL, 0,
16152         "", HFILL }},
16153     { &hf_gsm_map_ps_SubscriberState,
16154       { "ps-SubscriberState", "gsm_map.ps_SubscriberState",
16155         FT_UINT32, BASE_DEC, VALS(gsm_map_PS_SubscriberState_vals), 0,
16156         "SubscriberInfo/ps-SubscriberState", HFILL }},
16157     { &hf_gsm_map_ms_Classmark2,
16158       { "ms-Classmark2", "gsm_map.ms_Classmark2",
16159         FT_BYTES, BASE_HEX, NULL, 0,
16160         "SubscriberInfo/ms-Classmark2", HFILL }},
16161     { &hf_gsm_map_gprs_MS_Class,
16162       { "gprs-MS-Class", "gsm_map.gprs_MS_Class",
16163         FT_NONE, BASE_NONE, NULL, 0,
16164         "SubscriberInfo/gprs-MS-Class", HFILL }},
16165     { &hf_gsm_map_mnpInfoRes,
16166       { "mnpInfoRes", "gsm_map.mnpInfoRes",
16167         FT_NONE, BASE_NONE, NULL, 0,
16168         "SubscriberInfo/mnpInfoRes", HFILL }},
16169     { &hf_gsm_map_routeingNumber,
16170       { "routeingNumber", "gsm_map.routeingNumber",
16171         FT_BYTES, BASE_HEX, NULL, 0,
16172         "MNPInfoRes/routeingNumber", HFILL }},
16173     { &hf_gsm_map_mSNetworkCapability,
16174       { "mSNetworkCapability", "gsm_map.mSNetworkCapability",
16175         FT_BYTES, BASE_HEX, NULL, 0,
16176         "GPRSMSClass/mSNetworkCapability", HFILL }},
16177     { &hf_gsm_map_mSRadioAccessCapability,
16178       { "mSRadioAccessCapability", "gsm_map.mSRadioAccessCapability",
16179         FT_BYTES, BASE_HEX, NULL, 0,
16180         "GPRSMSClass/mSRadioAccessCapability", HFILL }},
16181     { &hf_gsm_map_locationInformation_flg,
16182       { "locationInformation", "gsm_map.locationInformation",
16183         FT_NONE, BASE_NONE, NULL, 0,
16184         "RequestedInfo/locationInformation", HFILL }},
16185     { &hf_gsm_map_subscriberState_flg,
16186       { "subscriberState", "gsm_map.subscriberState",
16187         FT_NONE, BASE_NONE, NULL, 0,
16188         "RequestedInfo/subscriberState", HFILL }},
16189     { &hf_gsm_map_currentLocation,
16190       { "currentLocation", "gsm_map.currentLocation",
16191         FT_NONE, BASE_NONE, NULL, 0,
16192         "RequestedInfo/currentLocation", HFILL }},
16193     { &hf_gsm_map_requestedDomain,
16194       { "requestedDomain", "gsm_map.requestedDomain",
16195         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestedDomain_vals), 0,
16196         "RequestedInfo/requestedDomain", HFILL }},
16197     { &hf_gsm_map_imei_flg,
16198       { "imei", "gsm_map.imei",
16199         FT_NONE, BASE_NONE, NULL, 0,
16200         "RequestedInfo/imei", HFILL }},
16201     { &hf_gsm_map_ms_classmark,
16202       { "ms-classmark", "gsm_map.ms_classmark",
16203         FT_NONE, BASE_NONE, NULL, 0,
16204         "RequestedInfo/ms-classmark", HFILL }},
16205     { &hf_gsm_map_mnpRequestedInfo,
16206       { "mnpRequestedInfo", "gsm_map.mnpRequestedInfo",
16207         FT_NONE, BASE_NONE, NULL, 0,
16208         "RequestedInfo/mnpRequestedInfo", HFILL }},
16209     { &hf_gsm_map_subscriberIdentity,
16210       { "subscriberIdentity", "gsm_map.subscriberIdentity",
16211         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
16212         "", HFILL }},
16213     { &hf_gsm_map_requestedSubscriptionInfo,
16214       { "requestedSubscriptionInfo", "gsm_map.requestedSubscriptionInfo",
16215         FT_NONE, BASE_NONE, NULL, 0,
16216         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo", HFILL }},
16217     { &hf_gsm_map_callForwardingData,
16218       { "callForwardingData", "gsm_map.callForwardingData",
16219         FT_NONE, BASE_NONE, NULL, 0,
16220         "AnyTimeSubscriptionInterrogationRes/callForwardingData", HFILL }},
16221     { &hf_gsm_map_callBarringData,
16222       { "callBarringData", "gsm_map.callBarringData",
16223         FT_NONE, BASE_NONE, NULL, 0,
16224         "AnyTimeSubscriptionInterrogationRes/callBarringData", HFILL }},
16225     { &hf_gsm_map_odb_Info,
16226       { "odb-Info", "gsm_map.odb_Info",
16227         FT_NONE, BASE_NONE, NULL, 0,
16228         "", HFILL }},
16229     { &hf_gsm_map_camel_SubscriptionInfo,
16230       { "camel-SubscriptionInfo", "gsm_map.camel_SubscriptionInfo",
16231         FT_NONE, BASE_NONE, NULL, 0,
16232         "", HFILL }},
16233     { &hf_gsm_map_supportedVLR_CAMEL_Phases,
16234       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
16235         FT_BYTES, BASE_HEX, NULL, 0,
16236         "AnyTimeSubscriptionInterrogationRes/supportedVLR-CAMEL-Phases", HFILL }},
16237     { &hf_gsm_map_supportedSGSN_CAMEL_Phases,
16238       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
16239         FT_BYTES, BASE_HEX, NULL, 0,
16240         "AnyTimeSubscriptionInterrogationRes/supportedSGSN-CAMEL-Phases", HFILL }},
16241     { &hf_gsm_map_offeredCamel4CSIsInVLR,
16242       { "offeredCamel4CSIsInVLR", "gsm_map.offeredCamel4CSIsInVLR",
16243         FT_BYTES, BASE_HEX, NULL, 0,
16244         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInVLR", HFILL }},
16245     { &hf_gsm_map_offeredCamel4CSIsInSGSN,
16246       { "offeredCamel4CSIsInSGSN", "gsm_map.offeredCamel4CSIsInSGSN",
16247         FT_BYTES, BASE_HEX, NULL, 0,
16248         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInSGSN", HFILL }},
16249     { &hf_gsm_map_requestedSS_Info,
16250       { "requestedSS-Info", "gsm_map.requestedSS_Info",
16251         FT_NONE, BASE_NONE, NULL, 0,
16252         "RequestedSubscriptionInfo/requestedSS-Info", HFILL }},
16253     { &hf_gsm_map_odb,
16254       { "odb", "gsm_map.odb",
16255         FT_NONE, BASE_NONE, NULL, 0,
16256         "RequestedSubscriptionInfo/odb", HFILL }},
16257     { &hf_gsm_map_requestedCAMEL_SubscriptionInfo,
16258       { "requestedCAMEL-SubscriptionInfo", "gsm_map.requestedCAMEL_SubscriptionInfo",
16259         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestedCAMEL_SubscriptionInfo_vals), 0,
16260         "RequestedSubscriptionInfo/requestedCAMEL-SubscriptionInfo", HFILL }},
16261     { &hf_gsm_map_supportedVLR_CAMEL_Phases_flg,
16262       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
16263         FT_NONE, BASE_NONE, NULL, 0,
16264         "RequestedSubscriptionInfo/supportedVLR-CAMEL-Phases", HFILL }},
16265     { &hf_gsm_map_supportedSGSN_CAMEL_Phases_flg,
16266       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
16267         FT_NONE, BASE_NONE, NULL, 0,
16268         "RequestedSubscriptionInfo/supportedSGSN-CAMEL-Phases", HFILL }},
16269     { &hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo,
16270       { "additionalRequestedCAMEL-SubscriptionInfo", "gsm_map.additionalRequestedCAMEL_SubscriptionInfo",
16271         FT_UINT32, BASE_DEC, VALS(gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals), 0,
16272         "", HFILL }},
16273     { &hf_gsm_map_password,
16274       { "password", "gsm_map.password",
16275         FT_STRING, BASE_NONE, NULL, 0,
16276         "", HFILL }},
16277     { &hf_gsm_map_wrongPasswordAttemptsCounter,
16278       { "wrongPasswordAttemptsCounter", "gsm_map.wrongPasswordAttemptsCounter",
16279         FT_UINT32, BASE_DEC, NULL, 0,
16280         "", HFILL }},
16281     { &hf_gsm_map_bearerService,
16282       { "bearerService", "gsm_map.bearerService",
16283         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
16284         "BasicServiceCode/bearerService", HFILL }},
16285     { &hf_gsm_map_teleservice_code,
16286       { "teleservice", "gsm_map.teleservice",
16287         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16288         "BasicServiceCode/teleservice", HFILL }},
16289     { &hf_gsm_map_O_BcsmCamelTDPCriteriaList_item,
16290       { "Item", "gsm_map.O_BcsmCamelTDPCriteriaList_item",
16291         FT_NONE, BASE_NONE, NULL, 0,
16292         "O-BcsmCamelTDPCriteriaList/_item", HFILL }},
16293     { &hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item,
16294       { "Item", "gsm_map.T_BCSM_CAMEL_TDP_CriteriaList_item",
16295         FT_NONE, BASE_NONE, NULL, 0,
16296         "T-BCSM-CAMEL-TDP-CriteriaList/_item", HFILL }},
16297     { &hf_gsm_map_destinationNumberCriteria,
16298       { "destinationNumberCriteria", "gsm_map.destinationNumberCriteria",
16299         FT_NONE, BASE_NONE, NULL, 0,
16300         "O-BcsmCamelTDP-Criteria/destinationNumberCriteria", HFILL }},
16301     { &hf_gsm_map_basicServiceCriteria,
16302       { "basicServiceCriteria", "gsm_map.basicServiceCriteria",
16303         FT_NONE, BASE_NONE, NULL, 0,
16304         "", HFILL }},
16305     { &hf_gsm_map_callTypeCriteria,
16306       { "callTypeCriteria", "gsm_map.callTypeCriteria",
16307         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTypeCriteria_vals), 0,
16308         "O-BcsmCamelTDP-Criteria/callTypeCriteria", HFILL }},
16309     { &hf_gsm_map_o_CauseValueCriteria,
16310       { "o-CauseValueCriteria", "gsm_map.o_CauseValueCriteria",
16311         FT_NONE, BASE_NONE, NULL, 0,
16312         "O-BcsmCamelTDP-Criteria/o-CauseValueCriteria", HFILL }},
16313     { &hf_gsm_map_t_BCSM_TriggerDetectionPoint,
16314       { "t-BCSM-TriggerDetectionPoint", "gsm_map.t_BCSM_TriggerDetectionPoint",
16315         FT_UINT32, BASE_DEC, VALS(gsm_map_T_BcsmTriggerDetectionPoint_vals), 0,
16316         "T-BCSM-CAMEL-TDP-Criteria/t-BCSM-TriggerDetectionPoint", HFILL }},
16317     { &hf_gsm_map_t_CauseValueCriteria,
16318       { "t-CauseValueCriteria", "gsm_map.t_CauseValueCriteria",
16319         FT_NONE, BASE_NONE, NULL, 0,
16320         "T-BCSM-CAMEL-TDP-Criteria/t-CauseValueCriteria", HFILL }},
16321     { &hf_gsm_map_maximumEntitledPriority,
16322       { "maximumEntitledPriority", "gsm_map.maximumEntitledPriority",
16323         FT_UINT32, BASE_DEC, NULL, 0,
16324         "GenericServiceInfo/maximumEntitledPriority", HFILL }},
16325     { &hf_gsm_map_ccbs_FeatureList,
16326       { "ccbs-FeatureList", "gsm_map.ccbs_FeatureList",
16327         FT_NONE, BASE_NONE, NULL, 0,
16328         "GenericServiceInfo/ccbs-FeatureList", HFILL }},
16329     { &hf_gsm_map_nbrSN,
16330       { "nbrSN", "gsm_map.nbrSN",
16331         FT_UINT32, BASE_DEC, NULL, 0,
16332         "GenericServiceInfo/nbrSN", HFILL }},
16333     { &hf_gsm_map_CCBS_FeatureList_item,
16334       { "Item", "gsm_map.CCBS_FeatureList_item",
16335         FT_NONE, BASE_NONE, NULL, 0,
16336         "CCBS-FeatureList/_item", HFILL }},
16337     { &hf_gsm_map_b_subscriberNumber,
16338       { "b-subscriberNumber", "gsm_map.b_subscriberNumber",
16339         FT_BYTES, BASE_HEX, NULL, 0,
16340         "CCBS-Feature/b-subscriberNumber", HFILL }},
16341     { &hf_gsm_map_b_subscriberSubaddress,
16342       { "b-subscriberSubaddress", "gsm_map.b_subscriberSubaddress",
16343         FT_BYTES, BASE_HEX, NULL, 0,
16344         "CCBS-Feature/b-subscriberSubaddress", HFILL }},
16345     { &hf_gsm_map_basicServiceGroup,
16346       { "basicServiceGroup", "gsm_map.basicServiceGroup",
16347         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
16348         "CCBS-Feature/basicServiceGroup", HFILL }},
16349     { &hf_gsm_map_T_CauseValueCriteria_item,
16350       { "Item", "gsm_map.T_CauseValueCriteria_item",
16351         FT_BYTES, BASE_HEX, NULL, 0,
16352         "T-CauseValueCriteria/_item", HFILL }},
16353     { &hf_gsm_map_O_CauseValueCriteria_item,
16354       { "Item", "gsm_map.O_CauseValueCriteria_item",
16355         FT_BYTES, BASE_HEX, NULL, 0,
16356         "O-CauseValueCriteria/_item", HFILL }},
16357     { &hf_gsm_map_BasicServiceCriteria_item,
16358       { "Item", "gsm_map.BasicServiceCriteria_item",
16359         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16360         "BasicServiceCriteria/_item", HFILL }},
16361     { &hf_gsm_map_modificationRequestFor_CF_Info,
16362       { "modificationRequestFor-CF-Info", "gsm_map.modificationRequestFor_CF_Info",
16363         FT_NONE, BASE_NONE, NULL, 0,
16364         "AnyTimeModificationArg/modificationRequestFor-CF-Info", HFILL }},
16365     { &hf_gsm_map_modificationRequestFor_CB_Info,
16366       { "modificationRequestFor-CB-Info", "gsm_map.modificationRequestFor_CB_Info",
16367         FT_NONE, BASE_NONE, NULL, 0,
16368         "AnyTimeModificationArg/modificationRequestFor-CB-Info", HFILL }},
16369     { &hf_gsm_map_modificationRequestFor_CSI,
16370       { "modificationRequestFor-CSI", "gsm_map.modificationRequestFor_CSI",
16371         FT_NONE, BASE_NONE, NULL, 0,
16372         "AnyTimeModificationArg/modificationRequestFor-CSI", HFILL }},
16373     { &hf_gsm_map_modificationRequestFor_ODB_data,
16374       { "modificationRequestFor-ODB-data", "gsm_map.modificationRequestFor_ODB_data",
16375         FT_NONE, BASE_NONE, NULL, 0,
16376         "AnyTimeModificationArg/modificationRequestFor-ODB-data", HFILL }},
16377     { &hf_gsm_map_ss_InfoFor_CSE,
16378       { "ss-InfoFor-CSE", "gsm_map.ss_InfoFor_CSE",
16379         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_SS_InfoFor_CSE_vals), 0,
16380         "AnyTimeModificationRes/ss-InfoFor-CSE", HFILL }},
16381     { &hf_gsm_map_modifyNotificationToCSE,
16382       { "modifyNotificationToCSE", "gsm_map.modifyNotificationToCSE",
16383         FT_UINT32, BASE_DEC, VALS(gsm_map_ModificationInstruction_vals), 0,
16384         "", HFILL }},
16385     { &hf_gsm_map_odb_data,
16386       { "odb-data", "gsm_map.odb_data",
16387         FT_NONE, BASE_NONE, NULL, 0,
16388         "ModificationRequestFor-ODB-data/odb-data", HFILL }},
16389     { &hf_gsm_map_requestedCamel_SubscriptionInfo,
16390       { "requestedCamel-SubscriptionInfo", "gsm_map.requestedCamel_SubscriptionInfo",
16391         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestedCAMEL_SubscriptionInfo_vals), 0,
16392         "ModificationRequestFor-CSI/requestedCamel-SubscriptionInfo", HFILL }},
16393     { &hf_gsm_map_modifyCSI_State,
16394       { "modifyCSI-State", "gsm_map.modifyCSI_State",
16395         FT_UINT32, BASE_DEC, VALS(gsm_map_ModificationInstruction_vals), 0,
16396         "ModificationRequestFor-CSI/modifyCSI-State", HFILL }},
16397     { &hf_gsm_map_forwardingInfoFor_CSE,
16398       { "forwardingInfoFor-CSE", "gsm_map.forwardingInfoFor_CSE",
16399         FT_NONE, BASE_NONE, NULL, 0,
16400         "", HFILL }},
16401     { &hf_gsm_map_callBarringInfoFor_CSE,
16402       { "callBarringInfoFor-CSE", "gsm_map.callBarringInfoFor_CSE",
16403         FT_NONE, BASE_NONE, NULL, 0,
16404         "", HFILL }},
16405     { &hf_gsm_map_eventMet,
16406       { "eventMet", "gsm_map.eventMet",
16407         FT_BYTES, BASE_HEX, NULL, 0,
16408         "NoteMM-EventArg/eventMet", HFILL }},
16409     { &hf_gsm_map_supportedCAMELPhases,
16410       { "supportedCAMELPhases", "gsm_map.supportedCAMELPhases",
16411         FT_BYTES, BASE_HEX, NULL, 0,
16412         "NoteMM-EventArg/supportedCAMELPhases", HFILL }},
16413     { &hf_gsm_map_offeredCamel4Functionalities,
16414       { "offeredCamel4Functionalities", "gsm_map.offeredCamel4Functionalities",
16415         FT_BYTES, BASE_HEX, NULL, 0,
16416         "NoteMM-EventArg/offeredCamel4Functionalities", HFILL }},
16417     { &hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList,
16418       { "vt-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_BCSM_CAMEL_TDP_CriteriaList",
16419         FT_NONE, BASE_NONE, NULL, 0,
16420         "CAMEL-SubscriptionInfo/vt-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
16421     { &hf_gsm_map_tif_CSI_NotificationToCSE,
16422       { "tif-CSI-NotificationToCSE", "gsm_map.tif_CSI_NotificationToCSE",
16423         FT_NONE, BASE_NONE, NULL, 0,
16424         "CAMEL-SubscriptionInfo/tif-CSI-NotificationToCSE", HFILL }},
16425     { &hf_gsm_map_specificCSIDeletedList,
16426       { "specificCSIDeletedList", "gsm_map.specificCSIDeletedList",
16427         FT_BYTES, BASE_HEX, NULL, 0,
16428         "CAMEL-SubscriptionInfo/specificCSIDeletedList", HFILL }},
16429     { &hf_gsm_map_o_IM_CSI,
16430       { "o-IM-CSI", "gsm_map.o_IM_CSI",
16431         FT_NONE, BASE_NONE, NULL, 0,
16432         "CAMEL-SubscriptionInfo/o-IM-CSI", HFILL }},
16433     { &hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList,
16434       { "o-IM-BcsmCamelTDP-CriteriaList", "gsm_map.o_IM_BcsmCamelTDP_CriteriaList",
16435         FT_NONE, BASE_NONE, NULL, 0,
16436         "CAMEL-SubscriptionInfo/o-IM-BcsmCamelTDP-CriteriaList", HFILL }},
16437     { &hf_gsm_map_d_IM_CSI,
16438       { "d-IM-CSI", "gsm_map.d_IM_CSI",
16439         FT_NONE, BASE_NONE, NULL, 0,
16440         "CAMEL-SubscriptionInfo/d-IM-CSI", HFILL }},
16441     { &hf_gsm_map_vt_IM_CSI,
16442       { "vt-IM-CSI", "gsm_map.vt_IM_CSI",
16443         FT_NONE, BASE_NONE, NULL, 0,
16444         "CAMEL-SubscriptionInfo/vt-IM-CSI", HFILL }},
16445     { &hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList,
16446       { "vt-IM-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_IM_BCSM_CAMEL_TDP_CriteriaList",
16447         FT_NONE, BASE_NONE, NULL, 0,
16448         "CAMEL-SubscriptionInfo/vt-IM-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
16449     { &hf_gsm_map_ext_BearerService,
16450       { "ext-BearerService", "gsm_map.ext_BearerService",
16451         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
16452         "Ext-BasicServiceCode/ext-BearerService", HFILL }},
16453     { &hf_gsm_map_ext_Teleservice,
16454       { "ext-Teleservice", "gsm_map.ext_Teleservice",
16455         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16456         "Ext-BasicServiceCode/ext-Teleservice", HFILL }},
16457     { &hf_gsm_map_odb_HPLMN_Data,
16458       { "odb-HPLMN-Data", "gsm_map.odb_HPLMN_Data",
16459         FT_BYTES, BASE_HEX, NULL, 0,
16460         "ODB-Data/odb-HPLMN-Data", HFILL }},
16461     { &hf_gsm_map_SS_EventList_item,
16462       { "Item", "gsm_map.SS_EventList_item",
16463         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
16464         "SS-EventList/_item", HFILL }},
16465     { &hf_gsm_map_t_BcsmCamelTDPDataList,
16466       { "t-BcsmCamelTDPDataList", "gsm_map.t_BcsmCamelTDPDataList",
16467         FT_NONE, BASE_NONE, NULL, 0,
16468         "T-CSI/t-BcsmCamelTDPDataList", HFILL }},
16469     { &hf_gsm_map_T_BcsmCamelTDPDataList_item,
16470       { "Item", "gsm_map.T_BcsmCamelTDPDataList_item",
16471         FT_NONE, BASE_NONE, NULL, 0,
16472         "T-BcsmCamelTDPDataList/_item", HFILL }},
16473     { &hf_gsm_map_t_BcsmTriggerDetectionPoint,
16474       { "t-BcsmTriggerDetectionPoint", "gsm_map.t_BcsmTriggerDetectionPoint",
16475         FT_UINT32, BASE_DEC, VALS(gsm_map_T_BcsmTriggerDetectionPoint_vals), 0,
16476         "T-BcsmCamelTDPData/t-BcsmTriggerDetectionPoint", HFILL }},
16477     { &hf_gsm_map_sms_CAMEL_TDP_DataList,
16478       { "sms-CAMEL-TDP-DataList", "gsm_map.sms_CAMEL_TDP_DataList",
16479         FT_NONE, BASE_NONE, NULL, 0,
16480         "SMS-CSI/sms-CAMEL-TDP-DataList", HFILL }},
16481     { &hf_gsm_map_SMS_CAMEL_TDP_DataList_item,
16482       { "Item", "gsm_map.SMS_CAMEL_TDP_DataList_item",
16483         FT_NONE, BASE_NONE, NULL, 0,
16484         "SMS-CAMEL-TDP-DataList/_item", HFILL }},
16485     { &hf_gsm_map_defaultSMS_Handling,
16486       { "defaultSMS-Handling", "gsm_map.defaultSMS_Handling",
16487         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultSMS_Handling_vals), 0,
16488         "SMS-CAMEL-TDP-Data/defaultSMS-Handling", HFILL }},
16489     { &hf_gsm_map_MobilityTriggers_item,
16490       { "Item", "gsm_map.MobilityTriggers_item",
16491         FT_BYTES, BASE_HEX, NULL, 0,
16492         "MobilityTriggers/_item", HFILL }},
16493     { &hf_gsm_map_ss_Event,
16494       { "ss-Event", "gsm_map.ss_Event",
16495         FT_BYTES, BASE_HEX, NULL, 0,
16496         "Ss-InvocationNotificationArg/ss-Event", HFILL }},
16497     { &hf_gsm_map_ss_EventSpecification,
16498       { "ss-EventSpecification", "gsm_map.ss_EventSpecification",
16499         FT_NONE, BASE_NONE, NULL, 0,
16500         "Ss-InvocationNotificationArg/ss-EventSpecification", HFILL }},
16501     { &hf_gsm_map_ss_EventSpecification_item,
16502       { "Item", "gsm_map.ss_EventSpecification_item",
16503         FT_BYTES, BASE_HEX, NULL, 0,
16504         "Ss-InvocationNotificationArg/ss-EventSpecification/_item", HFILL }},
16505     { &hf_gsm_map_ext_teleservice,
16506       { "teleservice", "gsm_map.teleservice",
16507         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16508         "PrepareGroupCallArg/teleservice", HFILL }},
16509     { &hf_gsm_map_codec_Info,
16510       { "codec-Info", "gsm_map.codec_Info",
16511         FT_BYTES, BASE_HEX, NULL, 0,
16512         "PrepareGroupCallArg/codec-Info", HFILL }},
16513     { &hf_gsm_map_cipheringAlgorithm,
16514       { "cipheringAlgorithm", "gsm_map.cipheringAlgorithm",
16515         FT_BYTES, BASE_HEX, NULL, 0,
16516         "PrepareGroupCallArg/cipheringAlgorithm", HFILL }},
16517     { &hf_gsm_map_groupKeyNumber_Vk_Id,
16518       { "groupKeyNumber-Vk-Id", "gsm_map.groupKeyNumber_Vk_Id",
16519         FT_UINT32, BASE_DEC, NULL, 0,
16520         "PrepareGroupCallArg/groupKeyNumber-Vk-Id", HFILL }},
16521     { &hf_gsm_map_groupKey,
16522       { "groupKey", "gsm_map.groupKey",
16523         FT_BYTES, BASE_HEX, NULL, 0,
16524         "PrepareGroupCallArg/groupKey", HFILL }},
16525     { &hf_gsm_map_priority,
16526       { "priority", "gsm_map.priority",
16527         FT_UINT32, BASE_DEC, NULL, 0,
16528         "PrepareGroupCallArg/priority", HFILL }},
16529     { &hf_gsm_map_uplinkFree,
16530       { "uplinkFree", "gsm_map.uplinkFree",
16531         FT_NONE, BASE_NONE, NULL, 0,
16532         "PrepareGroupCallArg/uplinkFree", HFILL }},
16533     { &hf_gsm_map_vstk,
16534       { "vstk", "gsm_map.vstk",
16535         FT_BYTES, BASE_HEX, NULL, 0,
16536         "PrepareGroupCallArg/vstk", HFILL }},
16537     { &hf_gsm_map_vstk_rand,
16538       { "vstk-rand", "gsm_map.vstk_rand",
16539         FT_BYTES, BASE_HEX, NULL, 0,
16540         "PrepareGroupCallArg/vstk-rand", HFILL }},
16541     { &hf_gsm_map_groupCallNumber,
16542       { "groupCallNumber", "gsm_map.groupCallNumber",
16543         FT_BYTES, BASE_HEX, NULL, 0,
16544         "PrepareGroupCallRes/groupCallNumber", HFILL }},
16545     { &hf_gsm_map_uplinkRequest,
16546       { "uplinkRequest", "gsm_map.uplinkRequest",
16547         FT_NONE, BASE_NONE, NULL, 0,
16548         "ProcessGroupCallSignallingArg/uplinkRequest", HFILL }},
16549     { &hf_gsm_map_uplinkReleaseIndication,
16550       { "uplinkReleaseIndication", "gsm_map.uplinkReleaseIndication",
16551         FT_NONE, BASE_NONE, NULL, 0,
16552         "", HFILL }},
16553     { &hf_gsm_map_releaseGroupCall,
16554       { "releaseGroupCall", "gsm_map.releaseGroupCall",
16555         FT_NONE, BASE_NONE, NULL, 0,
16556         "ProcessGroupCallSignallingArg/releaseGroupCall", HFILL }},
16557     { &hf_gsm_map_uplinkRequestAck,
16558       { "uplinkRequestAck", "gsm_map.uplinkRequestAck",
16559         FT_NONE, BASE_NONE, NULL, 0,
16560         "ForwardGroupCallSignallingArg/uplinkRequestAck", HFILL }},
16561     { &hf_gsm_map_uplinkRejectCommand,
16562       { "uplinkRejectCommand", "gsm_map.uplinkRejectCommand",
16563         FT_NONE, BASE_NONE, NULL, 0,
16564         "ForwardGroupCallSignallingArg/uplinkRejectCommand", HFILL }},
16565     { &hf_gsm_map_uplinkSeizedCommand,
16566       { "uplinkSeizedCommand", "gsm_map.uplinkSeizedCommand",
16567         FT_NONE, BASE_NONE, NULL, 0,
16568         "ForwardGroupCallSignallingArg/uplinkSeizedCommand", HFILL }},
16569     { &hf_gsm_map_uplinkReleaseCommand,
16570       { "uplinkReleaseCommand", "gsm_map.uplinkReleaseCommand",
16571         FT_NONE, BASE_NONE, NULL, 0,
16572         "ForwardGroupCallSignallingArg/uplinkReleaseCommand", HFILL }},
16573     { &hf_gsm_map_sgsn_Address,
16574       { "sgsn-Address", "gsm_map.sgsn_Address",
16575         FT_BYTES, BASE_HEX, NULL, 0,
16576         "", HFILL }},
16577     { &hf_gsm_map_sgsn_Capability,
16578       { "sgsn-Capability", "gsm_map.sgsn_Capability",
16579         FT_NONE, BASE_NONE, NULL, 0,
16580         "UpdateGprsLocationArg/sgsn-Capability", HFILL }},
16581     { &hf_gsm_map_ps_LCS_NotSupportedByUE,
16582       { "ps-LCS-NotSupportedByUE", "gsm_map.ps_LCS_NotSupportedByUE",
16583         FT_NONE, BASE_NONE, NULL, 0,
16584         "UpdateGprsLocationArg/ps-LCS-NotSupportedByUE", HFILL }},
16585     { &hf_gsm_map_gprsEnhancementsSupportIndicator,
16586       { "gprsEnhancementsSupportIndicator", "gsm_map.gprsEnhancementsSupportIndicator",
16587         FT_NONE, BASE_NONE, NULL, 0,
16588         "SGSN-Capability/gprsEnhancementsSupportIndicator", HFILL }},
16589     { &hf_gsm_map_smsCallBarringSupportIndicator,
16590       { "smsCallBarringSupportIndicator", "gsm_map.smsCallBarringSupportIndicator",
16591         FT_NONE, BASE_NONE, NULL, 0,
16592         "SGSN-Capability/smsCallBarringSupportIndicator", HFILL }},
16593     { &hf_gsm_map_ggsn_Number,
16594       { "ggsn-Number", "gsm_map.ggsn_Number",
16595         FT_BYTES, BASE_HEX, NULL, 0,
16596         "", HFILL }},
16597     { &hf_gsm_map_mobileNotReachableReason,
16598       { "mobileNotReachableReason", "gsm_map.mobileNotReachableReason",
16599         FT_UINT32, BASE_DEC, NULL, 0,
16600         "SendRoutingInfoForGprsRes/mobileNotReachableReason", HFILL }},
16601     { &hf_gsm_map_locationType,
16602       { "locationType", "gsm_map.locationType",
16603         FT_NONE, BASE_NONE, NULL, 0,
16604         "ProvideSubscriberLocation-Arg/locationType", HFILL }},
16605     { &hf_gsm_map_mlc_Number,
16606       { "mlc-Number", "gsm_map.mlc_Number",
16607         FT_BYTES, BASE_HEX, NULL, 0,
16608         "ProvideSubscriberLocation-Arg/mlc-Number", HFILL }},
16609     { &hf_gsm_map_lcs_ClientID,
16610       { "lcs-ClientID", "gsm_map.lcs_ClientID",
16611         FT_NONE, BASE_NONE, NULL, 0,
16612         "", HFILL }},
16613     { &hf_gsm_map_privacyOverride,
16614       { "privacyOverride", "gsm_map.privacyOverride",
16615         FT_NONE, BASE_NONE, NULL, 0,
16616         "ProvideSubscriberLocation-Arg/privacyOverride", HFILL }},
16617     { &hf_gsm_map_lcs_Priority,
16618       { "lcs-Priority", "gsm_map.lcs_Priority",
16619         FT_BYTES, BASE_HEX, NULL, 0,
16620         "ProvideSubscriberLocation-Arg/lcs-Priority", HFILL }},
16621     { &hf_gsm_map_lcs_QoS,
16622       { "lcs-QoS", "gsm_map.lcs_QoS",
16623         FT_NONE, BASE_NONE, NULL, 0,
16624         "ProvideSubscriberLocation-Arg/lcs-QoS", HFILL }},
16625     { &hf_gsm_map_supportedGADShapes,
16626       { "supportedGADShapes", "gsm_map.supportedGADShapes",
16627         FT_BYTES, BASE_HEX, NULL, 0,
16628         "ProvideSubscriberLocation-Arg/supportedGADShapes", HFILL }},
16629     { &hf_gsm_map_lcs_ReferenceNumber,
16630       { "lcs-ReferenceNumber", "gsm_map.lcs_ReferenceNumber",
16631         FT_BYTES, BASE_HEX, NULL, 0,
16632         "", HFILL }},
16633     { &hf_gsm_map_lcsServiceTypeID,
16634       { "lcsServiceTypeID", "gsm_map.lcsServiceTypeID",
16635         FT_UINT32, BASE_DEC, NULL, 0,
16636         "", HFILL }},
16637     { &hf_gsm_map_lcsCodeword,
16638       { "lcsCodeword", "gsm_map.lcsCodeword",
16639         FT_NONE, BASE_NONE, NULL, 0,
16640         "ProvideSubscriberLocation-Arg/lcsCodeword", HFILL }},
16641     { &hf_gsm_map_lcs_PrivacyCheck,
16642       { "lcs-PrivacyCheck", "gsm_map.lcs_PrivacyCheck",
16643         FT_NONE, BASE_NONE, NULL, 0,
16644         "ProvideSubscriberLocation-Arg/lcs-PrivacyCheck", HFILL }},
16645     { &hf_gsm_map_areaEventInfo,
16646       { "areaEventInfo", "gsm_map.areaEventInfo",
16647         FT_NONE, BASE_NONE, NULL, 0,
16648         "ProvideSubscriberLocation-Arg/areaEventInfo", HFILL }},
16649     { &hf_gsm_map_h_gmlc_Address,
16650       { "h-gmlc-Address", "gsm_map.h_gmlc_Address",
16651         FT_BYTES, BASE_HEX, NULL, 0,
16652         "", HFILL }},
16653     { &hf_gsm_map_locationEstimateType,
16654       { "locationEstimateType", "gsm_map.locationEstimateType",
16655         FT_UINT32, BASE_DEC, VALS(gsm_map_LocationEstimateType_vals), 0,
16656         "LocationType/locationEstimateType", HFILL }},
16657     { &hf_gsm_map_deferredLocationEventType,
16658       { "deferredLocationEventType", "gsm_map.deferredLocationEventType",
16659         FT_BYTES, BASE_HEX, NULL, 0,
16660         "", HFILL }},
16661     { &hf_gsm_map_lcsClientType,
16662       { "lcsClientType", "gsm_map.lcsClientType",
16663         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientType_vals), 0,
16664         "LCS-ClientID/lcsClientType", HFILL }},
16665     { &hf_gsm_map_lcsClientExternalID,
16666       { "lcsClientExternalID", "gsm_map.lcsClientExternalID",
16667         FT_NONE, BASE_NONE, NULL, 0,
16668         "LCS-ClientID/lcsClientExternalID", HFILL }},
16669     { &hf_gsm_map_lcsClientDialedByMS,
16670       { "lcsClientDialedByMS", "gsm_map.lcsClientDialedByMS",
16671         FT_BYTES, BASE_HEX, NULL, 0,
16672         "LCS-ClientID/lcsClientDialedByMS", HFILL }},
16673     { &hf_gsm_map_lcsClientInternalID,
16674       { "lcsClientInternalID", "gsm_map.lcsClientInternalID",
16675         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
16676         "LCS-ClientID/lcsClientInternalID", HFILL }},
16677     { &hf_gsm_map_lcsClientName,
16678       { "lcsClientName", "gsm_map.lcsClientName",
16679         FT_NONE, BASE_NONE, NULL, 0,
16680         "LCS-ClientID/lcsClientName", HFILL }},
16681     { &hf_gsm_map_lcsAPN,
16682       { "lcsAPN", "gsm_map.lcsAPN",
16683         FT_BYTES, BASE_HEX, NULL, 0,
16684         "LCS-ClientID/lcsAPN", HFILL }},
16685     { &hf_gsm_map_lcsRequestorID,
16686       { "lcsRequestorID", "gsm_map.lcsRequestorID",
16687         FT_NONE, BASE_NONE, NULL, 0,
16688         "LCS-ClientID/lcsRequestorID", HFILL }},
16689     { &hf_gsm_map_dataCodingScheme,
16690       { "dataCodingScheme", "gsm_map.dataCodingScheme",
16691         FT_BYTES, BASE_HEX, NULL, 0,
16692         "", HFILL }},
16693     { &hf_gsm_map_nameString,
16694       { "nameString", "gsm_map.nameString",
16695         FT_BYTES, BASE_HEX, NULL, 0,
16696         "LCSClientName/nameString", HFILL }},
16697     { &hf_gsm_map_lcs_FormatIndicator,
16698       { "lcs-FormatIndicator", "gsm_map.lcs_FormatIndicator",
16699         FT_UINT32, BASE_DEC, VALS(gsm_map_LCS_FormatIndicator_vals), 0,
16700         "", HFILL }},
16701     { &hf_gsm_map_requestorIDString,
16702       { "requestorIDString", "gsm_map.requestorIDString",
16703         FT_BYTES, BASE_HEX, NULL, 0,
16704         "LCSRequestorID/requestorIDString", HFILL }},
16705     { &hf_gsm_map_horizontal_accuracy,
16706       { "horizontal-accuracy", "gsm_map.horizontal_accuracy",
16707         FT_BYTES, BASE_HEX, NULL, 0,
16708         "LCS-QoS/horizontal-accuracy", HFILL }},
16709     { &hf_gsm_map_verticalCoordinateRequest,
16710       { "verticalCoordinateRequest", "gsm_map.verticalCoordinateRequest",
16711         FT_NONE, BASE_NONE, NULL, 0,
16712         "LCS-QoS/verticalCoordinateRequest", HFILL }},
16713     { &hf_gsm_map_vertical_accuracy,
16714       { "vertical-accuracy", "gsm_map.vertical_accuracy",
16715         FT_BYTES, BASE_HEX, NULL, 0,
16716         "LCS-QoS/vertical-accuracy", HFILL }},
16717     { &hf_gsm_map_responseTime,
16718       { "responseTime", "gsm_map.responseTime",
16719         FT_NONE, BASE_NONE, NULL, 0,
16720         "LCS-QoS/responseTime", HFILL }},
16721     { &hf_gsm_map_responseTimeCategory,
16722       { "responseTimeCategory", "gsm_map.responseTimeCategory",
16723         FT_UINT32, BASE_DEC, VALS(gsm_map_ResponseTimeCategory_vals), 0,
16724         "ResponseTime/responseTimeCategory", HFILL }},
16725     { &hf_gsm_map_lcsCodewordString,
16726       { "lcsCodewordString", "gsm_map.lcsCodewordString",
16727         FT_BYTES, BASE_HEX, NULL, 0,
16728         "LCSCodeword/lcsCodewordString", HFILL }},
16729     { &hf_gsm_map_callSessionUnrelated,
16730       { "callSessionUnrelated", "gsm_map.callSessionUnrelated",
16731         FT_UINT32, BASE_DEC, VALS(gsm_map_PrivacyCheckRelatedAction_vals), 0,
16732         "LCS-PrivacyCheck/callSessionUnrelated", HFILL }},
16733     { &hf_gsm_map_callSessionRelated,
16734       { "callSessionRelated", "gsm_map.callSessionRelated",
16735         FT_UINT32, BASE_DEC, VALS(gsm_map_PrivacyCheckRelatedAction_vals), 0,
16736         "LCS-PrivacyCheck/callSessionRelated", HFILL }},
16737     { &hf_gsm_map_areaDefinition,
16738       { "areaDefinition", "gsm_map.areaDefinition",
16739         FT_NONE, BASE_NONE, NULL, 0,
16740         "AreaEventInfo/areaDefinition", HFILL }},
16741     { &hf_gsm_map_occurrenceInfo,
16742       { "occurrenceInfo", "gsm_map.occurrenceInfo",
16743         FT_UINT32, BASE_DEC, VALS(gsm_map_OccurrenceInfo_vals), 0,
16744         "AreaEventInfo/occurrenceInfo", HFILL }},
16745     { &hf_gsm_map_intervalTime,
16746       { "intervalTime", "gsm_map.intervalTime",
16747         FT_UINT32, BASE_DEC, NULL, 0,
16748         "AreaEventInfo/intervalTime", HFILL }},
16749     { &hf_gsm_map_areaList,
16750       { "areaList", "gsm_map.areaList",
16751         FT_NONE, BASE_NONE, NULL, 0,
16752         "AreaDefinition/areaList", HFILL }},
16753     { &hf_gsm_map_AreaList_item,
16754       { "Item", "gsm_map.AreaList_item",
16755         FT_NONE, BASE_NONE, NULL, 0,
16756         "AreaList/_item", HFILL }},
16757     { &hf_gsm_map_areaType,
16758       { "areaType", "gsm_map.areaType",
16759         FT_UINT32, BASE_DEC, VALS(gsm_map_AreaType_vals), 0,
16760         "Area/areaType", HFILL }},
16761     { &hf_gsm_map_areaIdentification,
16762       { "areaIdentification", "gsm_map.areaIdentification",
16763         FT_BYTES, BASE_HEX, NULL, 0,
16764         "Area/areaIdentification", HFILL }},
16765     { &hf_gsm_map_locationEstimate,
16766       { "locationEstimate", "gsm_map.locationEstimate",
16767         FT_BYTES, BASE_HEX, NULL, 0,
16768         "", HFILL }},
16769     { &hf_gsm_map_ageOfLocationEstimate,
16770       { "ageOfLocationEstimate", "gsm_map.ageOfLocationEstimate",
16771         FT_UINT32, BASE_DEC, NULL, 0,
16772         "", HFILL }},
16773     { &hf_gsm_map_add_LocationEstimate,
16774       { "add-LocationEstimate", "gsm_map.add_LocationEstimate",
16775         FT_BYTES, BASE_HEX, NULL, 0,
16776         "", HFILL }},
16777     { &hf_gsm_map_deferredmt_lrResponseIndicator,
16778       { "deferredmt-lrResponseIndicator", "gsm_map.deferredmt_lrResponseIndicator",
16779         FT_NONE, BASE_NONE, NULL, 0,
16780         "ProvideSubscriberLocation-Res/deferredmt-lrResponseIndicator", HFILL }},
16781     { &hf_gsm_map_geranPositioningData,
16782       { "geranPositioningData", "gsm_map.geranPositioningData",
16783         FT_BYTES, BASE_HEX, NULL, 0,
16784         "", HFILL }},
16785     { &hf_gsm_map_utranPositioningData,
16786       { "utranPositioningData", "gsm_map.utranPositioningData",
16787         FT_BYTES, BASE_HEX, NULL, 0,
16788         "", HFILL }},
16789     { &hf_gsm_map_cellIdOrSai,
16790       { "cellIdOrSai", "gsm_map.cellIdOrSai",
16791         FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
16792         "", HFILL }},
16793     { &hf_gsm_map_mlcNumber,
16794       { "mlcNumber", "gsm_map.mlcNumber",
16795         FT_BYTES, BASE_HEX, NULL, 0,
16796         "RoutingInfoForLCS-Arg/mlcNumber", HFILL }},
16797     { &hf_gsm_map_targetMS,
16798       { "targetMS", "gsm_map.targetMS",
16799         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
16800         "", HFILL }},
16801     { &hf_gsm_map_lcsLocationInfo,
16802       { "lcsLocationInfo", "gsm_map.lcsLocationInfo",
16803         FT_NONE, BASE_NONE, NULL, 0,
16804         "", HFILL }},
16805     { &hf_gsm_map_ppr_Address,
16806       { "ppr-Address", "gsm_map.ppr_Address",
16807         FT_BYTES, BASE_HEX, NULL, 0,
16808         "RoutingInfoForLCS-Res/ppr-Address", HFILL }},
16809     { &hf_gsm_map_additional_v_gmlc_Address,
16810       { "additional-v-gmlc-Address", "gsm_map.additional_v_gmlc_Address",
16811         FT_BYTES, BASE_HEX, NULL, 0,
16812         "RoutingInfoForLCS-Res/additional-v-gmlc-Address", HFILL }},
16813     { &hf_gsm_map_additional_LCS_CapabilitySets,
16814       { "additional-LCS-CapabilitySets", "gsm_map.additional_LCS_CapabilitySets",
16815         FT_BYTES, BASE_HEX, NULL, 0,
16816         "LCSLocationInfo/additional-LCS-CapabilitySets", HFILL }},
16817     { &hf_gsm_map_lcs_Event,
16818       { "lcs-Event", "gsm_map.lcs_Event",
16819         FT_UINT32, BASE_DEC, VALS(gsm_map_LCS_Event_vals), 0,
16820         "SubscriberLocationReport-Arg/lcs-Event", HFILL }},
16821     { &hf_gsm_map_na_ESRD,
16822       { "na-ESRD", "gsm_map.na_ESRD",
16823         FT_BYTES, BASE_HEX, NULL, 0,
16824         "", HFILL }},
16825     { &hf_gsm_map_na_ESRK,
16826       { "na-ESRK", "gsm_map.na_ESRK",
16827         FT_BYTES, BASE_HEX, NULL, 0,
16828         "", HFILL }},
16829     { &hf_gsm_map_slr_ArgExtensionContainer,
16830       { "slr-ArgExtensionContainer", "gsm_map.slr_ArgExtensionContainer",
16831         FT_NONE, BASE_NONE, NULL, 0,
16832         "SubscriberLocationReport-Arg/slr-ArgExtensionContainer", HFILL }},
16833     { &hf_gsm_map_deferredmt_lrData,
16834       { "deferredmt-lrData", "gsm_map.deferredmt_lrData",
16835         FT_NONE, BASE_NONE, NULL, 0,
16836         "SubscriberLocationReport-Arg/deferredmt-lrData", HFILL }},
16837     { &hf_gsm_map_pseudonymIndicator,
16838       { "pseudonymIndicator", "gsm_map.pseudonymIndicator",
16839         FT_NONE, BASE_NONE, NULL, 0,
16840         "SubscriberLocationReport-Arg/pseudonymIndicator", HFILL }},
16841     { &hf_gsm_map_terminationCause,
16842       { "terminationCause", "gsm_map.terminationCause",
16843         FT_UINT32, BASE_DEC, VALS(gsm_map_TerminationCause_vals), 0,
16844         "Deferredmt-lrData/terminationCause", HFILL }},
16845     { &hf_gsm_map_securityHeader,
16846       { "securityHeader", "gsm_map.securityHeader",
16847         FT_NONE, BASE_NONE, NULL, 0,
16848         "", HFILL }},
16849     { &hf_gsm_map_protectedPayload,
16850       { "protectedPayload", "gsm_map.protectedPayload",
16851         FT_BYTES, BASE_HEX, NULL, 0,
16852         "", HFILL }},
16853     { &hf_gsm_map_securityParametersIndex,
16854       { "securityParametersIndex", "gsm_map.securityParametersIndex",
16855         FT_BYTES, BASE_HEX, NULL, 0,
16856         "SecurityHeader/securityParametersIndex", HFILL }},
16857     { &hf_gsm_map_originalComponentIdentifier,
16858       { "originalComponentIdentifier", "gsm_map.originalComponentIdentifier",
16859         FT_UINT32, BASE_DEC, VALS(gsm_map_OriginalComponentIdentifier_vals), 0,
16860         "SecurityHeader/originalComponentIdentifier", HFILL }},
16861     { &hf_gsm_map_initialisationVector,
16862       { "initialisationVector", "gsm_map.initialisationVector",
16863         FT_BYTES, BASE_HEX, NULL, 0,
16864         "SecurityHeader/initialisationVector", HFILL }},
16865     { &hf_gsm_map_operationCode,
16866       { "operationCode", "gsm_map.operationCode",
16867         FT_UINT32, BASE_DEC, VALS(gsm_map_OperationCode_vals), 0,
16868         "OriginalComponentIdentifier/operationCode", HFILL }},
16869     { &hf_gsm_map_errorCode,
16870       { "errorCode", "gsm_map.errorCode",
16871         FT_UINT32, BASE_DEC, VALS(gsm_map_ErrorCode_vals), 0,
16872         "OriginalComponentIdentifier/errorCode", HFILL }},
16873     { &hf_gsm_map_userInfo,
16874       { "userInfo", "gsm_map.userInfo",
16875         FT_NONE, BASE_NONE, NULL, 0,
16876         "OriginalComponentIdentifier/userInfo", HFILL }},
16877     { &hf_gsm_map_localValue,
16878       { "localValue", "gsm_map.localValue",
16879         FT_INT32, BASE_DEC, NULL, 0,
16880         "", HFILL }},
16881     { &hf_gsm_map_globalValue,
16882       { "globalValue", "gsm_map.globalValue",
16883         FT_STRING, BASE_NONE, NULL, 0,
16884         "", HFILL }},
16885     { &hf_gsm_map_networkResource,
16886       { "networkResource", "gsm_map.networkResource",
16887         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0,
16888         "", HFILL }},
16889     { &hf_gsm_map_extensibleSystemFailureParam,
16890       { "extensibleSystemFailureParam", "gsm_map.extensibleSystemFailureParam",
16891         FT_NONE, BASE_NONE, NULL, 0,
16892         "SystemFailureParam/extensibleSystemFailureParam", HFILL }},
16893     { &hf_gsm_map_unknownSubscriberDiagnostic,
16894       { "unknownSubscriberDiagnostic", "gsm_map.unknownSubscriberDiagnostic",
16895         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unknownSubscriberDiagnostic_vals), 0,
16896         "UnknownSubscriberParam/unknownSubscriberDiagnostic", HFILL }},
16897     { &hf_gsm_map_roamingNotAllowedCause,
16898       { "roamingNotAllowedCause", "gsm_map.roamingNotAllowedCause",
16899         FT_UINT32, BASE_DEC, VALS(gsm_map_T_roamingNotAllowedCause_vals), 0,
16900         "RoamingNotAllowedParam/roamingNotAllowedCause", HFILL }},
16901     { &hf_gsm_map_absentSubscriberReason,
16902       { "absentSubscriberReason", "gsm_map.absentSubscriberReason",
16903         FT_UINT32, BASE_DEC, VALS(gsm_map_T_absentSubscriberReason_vals), 0,
16904         "AbsentSubscriberParam/absentSubscriberReason", HFILL }},
16905     { &hf_gsm_map_ccbs_Busy,
16906       { "ccbs-Busy", "gsm_map.ccbs_Busy",
16907         FT_NONE, BASE_NONE, NULL, 0,
16908         "BusySubscriberParam/ccbs-Busy", HFILL }},
16909     { &hf_gsm_map_callBarringCause,
16910       { "callBarringCause", "gsm_map.callBarringCause",
16911         FT_UINT32, BASE_DEC, VALS(gsm_map_CallBarringCause_vals), 0,
16912         "", HFILL }},
16913     { &hf_gsm_map_extensibleCallBarredParam,
16914       { "extensibleCallBarredParam", "gsm_map.extensibleCallBarredParam",
16915         FT_NONE, BASE_NONE, NULL, 0,
16916         "CallBarredParam/extensibleCallBarredParam", HFILL }},
16917     { &hf_gsm_map_unauthorisedMessageOriginator,
16918       { "unauthorisedMessageOriginator", "gsm_map.unauthorisedMessageOriginator",
16919         FT_NONE, BASE_NONE, NULL, 0,
16920         "CallBarredParam/extensibleCallBarredParam/unauthorisedMessageOriginator", HFILL }},
16921     { &hf_gsm_map_cug_RejectCause,
16922       { "cug-RejectCause", "gsm_map.cug_RejectCause",
16923         FT_UINT32, BASE_DEC, VALS(gsm_map_T_cug_RejectCause_vals), 0,
16924         "Cug-RejectParam/cug-RejectCause", HFILL }},
16925     { &hf_gsm_map_gprsConnectionSuspended,
16926       { "gprsConnectionSuspended", "gsm_map.gprsConnectionSuspended",
16927         FT_NONE, BASE_NONE, NULL, 0,
16928         "SubBusyForMT-SMS-Param/gprsConnectionSuspended", HFILL }},
16929     { &hf_gsm_map_sm_EnumeratedDeliveryFailureCause,
16930       { "sm-EnumeratedDeliveryFailureCause", "gsm_map.sm_EnumeratedDeliveryFailureCause",
16931         FT_UINT32, BASE_DEC, VALS(gsm_map_T_sm_EnumeratedDeliveryFailureCause_vals), 0,
16932         "Sm-DeliveryFailureCause/sm-EnumeratedDeliveryFailureCause", HFILL }},
16933     { &hf_gsm_map_diagnosticInfo,
16934       { "diagnosticInfo", "gsm_map.diagnosticInfo",
16935         FT_BYTES, BASE_HEX, NULL, 0,
16936         "Sm-DeliveryFailureCause/diagnosticInfo", HFILL }},
16937     { &hf_gsm_map_unauthorizedLCSClient_Diagnostic,
16938       { "unauthorizedLCSClient-Diagnostic", "gsm_map.unauthorizedLCSClient_Diagnostic",
16939         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unauthorizedLCSClient_Diagnostic_vals), 0,
16940         "UnauthorizedLCSClient-Param/unauthorizedLCSClient-Diagnostic", HFILL }},
16941     { &hf_gsm_map_positionMethodFailure_Diagnostic,
16942       { "positionMethodFailure-Diagnostic", "gsm_map.positionMethodFailure_Diagnostic",
16943         FT_UINT32, BASE_DEC, VALS(gsm_map_T_positionMethodFailure_Diagnostic_vals), 0,
16944         "PositionMethodFailure-Param/positionMethodFailure-Diagnostic", HFILL }},
16945     { &hf_gsm_map_pcsExtensions,
16946       { "pcsExtensions", "gsm_map.pcsExtensions",
16947         FT_NONE, BASE_NONE, NULL, 0,
16948         "ExtensionContainer/pcsExtensions", HFILL }},
16949     { &hf_gsm_map_SupportedCamelPhases_phase1,
16950       { "phase1", "gsm_map.phase1",
16951         FT_BOOLEAN, 8, NULL, 0x80,
16952         "", HFILL }},
16953     { &hf_gsm_map_SupportedCamelPhases_phase2,
16954       { "phase2", "gsm_map.phase2",
16955         FT_BOOLEAN, 8, NULL, 0x40,
16956         "", HFILL }},
16957     { &hf_gsm_map_SupportedCamelPhases_phase3,
16958       { "phase3", "gsm_map.phase3",
16959         FT_BOOLEAN, 8, NULL, 0x20,
16960         "", HFILL }},
16961     { &hf_gsm_map_SupportedCamelPhases_phase4,
16962       { "phase4", "gsm_map.phase4",
16963         FT_BOOLEAN, 8, NULL, 0x10,
16964         "", HFILL }},
16965     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1,
16966       { "lcsCapabilitySet1", "gsm_map.lcsCapabilitySet1",
16967         FT_BOOLEAN, 8, NULL, 0x80,
16968         "", HFILL }},
16969     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2,
16970       { "lcsCapabilitySet2", "gsm_map.lcsCapabilitySet2",
16971         FT_BOOLEAN, 8, NULL, 0x40,
16972         "", HFILL }},
16973     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3,
16974       { "lcsCapabilitySet3", "gsm_map.lcsCapabilitySet3",
16975         FT_BOOLEAN, 8, NULL, 0x20,
16976         "", HFILL }},
16977     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4,
16978       { "lcsCapabilitySet4", "gsm_map.lcsCapabilitySet4",
16979         FT_BOOLEAN, 8, NULL, 0x10,
16980         "", HFILL }},
16981     { &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus,
16982       { "equipmentStatus", "gsm_map.equipmentStatus",
16983         FT_BOOLEAN, 8, NULL, 0x80,
16984         "", HFILL }},
16985     { &hf_gsm_map_RequestedEquipmentInfo_bmuef,
16986       { "bmuef", "gsm_map.bmuef",
16987         FT_BOOLEAN, 8, NULL, 0x40,
16988         "", HFILL }},
16989     { &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred,
16990       { "allOG-CallsBarred", "gsm_map.allOG-CallsBarred",
16991         FT_BOOLEAN, 8, NULL, 0x80,
16992         "", HFILL }},
16993     { &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred,
16994       { "internationalOGCallsBarred", "gsm_map.internationalOGCallsBarred",
16995         FT_BOOLEAN, 8, NULL, 0x40,
16996         "", HFILL }},
16997     { &hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred,
16998       { "internationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.internationalOGCallsNotToHPLMN-CountryBarred",
16999         FT_BOOLEAN, 8, NULL, 0x20,
17000         "", HFILL }},
17001     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred,
17002       { "interzonalOGCallsBarred", "gsm_map.interzonalOGCallsBarred",
17003         FT_BOOLEAN, 8, NULL, 0x02,
17004         "", HFILL }},
17005     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred,
17006       { "interzonalOGCallsNotToHPLMN-CountryBarred", "gsm_map.interzonalOGCallsNotToHPLMN-CountryBarred",
17007         FT_BOOLEAN, 8, NULL, 0x01,
17008         "", HFILL }},
17009     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred,
17010       { "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred",
17011         FT_BOOLEAN, 8, NULL, 0x80,
17012         "", HFILL }},
17013     { &hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred,
17014       { "premiumRateInformationOGCallsBarred", "gsm_map.premiumRateInformationOGCallsBarred",
17015         FT_BOOLEAN, 8, NULL, 0x10,
17016         "", HFILL }},
17017     { &hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred,
17018       { "premiumRateEntertainementOGCallsBarred", "gsm_map.premiumRateEntertainementOGCallsBarred",
17019         FT_BOOLEAN, 8, NULL, 0x08,
17020         "", HFILL }},
17021     { &hf_gsm_map_ODB_GeneralData_ss_AccessBarred,
17022       { "ss-AccessBarred", "gsm_map.ss-AccessBarred",
17023         FT_BOOLEAN, 8, NULL, 0x04,
17024         "", HFILL }},
17025     { &hf_gsm_map_ODB_GeneralData_allECT_Barred,
17026       { "allECT-Barred", "gsm_map.allECT-Barred",
17027         FT_BOOLEAN, 8, NULL, 0x40,
17028         "", HFILL }},
17029     { &hf_gsm_map_ODB_GeneralData_chargeableECT_Barred,
17030       { "chargeableECT-Barred", "gsm_map.chargeableECT-Barred",
17031         FT_BOOLEAN, 8, NULL, 0x20,
17032         "", HFILL }},
17033     { &hf_gsm_map_ODB_GeneralData_internationalECT_Barred,
17034       { "internationalECT-Barred", "gsm_map.internationalECT-Barred",
17035         FT_BOOLEAN, 8, NULL, 0x10,
17036         "", HFILL }},
17037     { &hf_gsm_map_ODB_GeneralData_interzonalECT_Barred,
17038       { "interzonalECT-Barred", "gsm_map.interzonalECT-Barred",
17039         FT_BOOLEAN, 8, NULL, 0x08,
17040         "", HFILL }},
17041     { &hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred,
17042       { "doublyChargeableECT-Barred", "gsm_map.doublyChargeableECT-Barred",
17043         FT_BOOLEAN, 8, NULL, 0x04,
17044         "", HFILL }},
17045     { &hf_gsm_map_ODB_GeneralData_multipleECT_Barred,
17046       { "multipleECT-Barred", "gsm_map.multipleECT-Barred",
17047         FT_BOOLEAN, 8, NULL, 0x02,
17048         "", HFILL }},
17049     { &hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred,
17050       { "allPacketOrientedServicesBarred", "gsm_map.allPacketOrientedServicesBarred",
17051         FT_BOOLEAN, 8, NULL, 0x01,
17052         "", HFILL }},
17053     { &hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred,
17054       { "roamerAccessToHPLMN-AP-Barred", "gsm_map.roamerAccessToHPLMN-AP-Barred",
17055         FT_BOOLEAN, 8, NULL, 0x80,
17056         "", HFILL }},
17057     { &hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred,
17058       { "roamerAccessToVPLMN-AP-Barred", "gsm_map.roamerAccessToVPLMN-AP-Barred",
17059         FT_BOOLEAN, 8, NULL, 0x40,
17060         "", HFILL }},
17061     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred,
17062       { "roamingOutsidePLMNOG-CallsBarred", "gsm_map.roamingOutsidePLMNOG-CallsBarred",
17063         FT_BOOLEAN, 8, NULL, 0x20,
17064         "", HFILL }},
17065     { &hf_gsm_map_ODB_GeneralData_allIC_CallsBarred,
17066       { "allIC-CallsBarred", "gsm_map.allIC-CallsBarred",
17067         FT_BOOLEAN, 8, NULL, 0x10,
17068         "", HFILL }},
17069     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred,
17070       { "roamingOutsidePLMNIC-CallsBarred", "gsm_map.roamingOutsidePLMNIC-CallsBarred",
17071         FT_BOOLEAN, 8, NULL, 0x08,
17072         "", HFILL }},
17073     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred,
17074       { "roamingOutsidePLMNICountryIC-CallsBarred", "gsm_map.roamingOutsidePLMNICountryIC-CallsBarred",
17075         FT_BOOLEAN, 8, NULL, 0x04,
17076         "", HFILL }},
17077     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred,
17078       { "roamingOutsidePLMN-Barred", "gsm_map.roamingOutsidePLMN-Barred",
17079         FT_BOOLEAN, 8, NULL, 0x02,
17080         "", HFILL }},
17081     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred,
17082       { "roamingOutsidePLMN-CountryBarred", "gsm_map.roamingOutsidePLMN-CountryBarred",
17083         FT_BOOLEAN, 8, NULL, 0x01,
17084         "", HFILL }},
17085     { &hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred,
17086       { "registrationAllCF-Barred", "gsm_map.registrationAllCF-Barred",
17087         FT_BOOLEAN, 8, NULL, 0x80,
17088         "", HFILL }},
17089     { &hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred,
17090       { "registrationCFNotToHPLMN-Barred", "gsm_map.registrationCFNotToHPLMN-Barred",
17091         FT_BOOLEAN, 8, NULL, 0x40,
17092         "", HFILL }},
17093     { &hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred,
17094       { "registrationInterzonalCF-Barred", "gsm_map.registrationInterzonalCF-Barred",
17095         FT_BOOLEAN, 8, NULL, 0x20,
17096         "", HFILL }},
17097     { &hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred,
17098       { "registrationInterzonalCFNotToHPLMN-Barred", "gsm_map.registrationInterzonalCFNotToHPLMN-Barred",
17099         FT_BOOLEAN, 8, NULL, 0x10,
17100         "", HFILL }},
17101     { &hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred,
17102       { "registrationInternationalCF-Barred", "gsm_map.registrationInternationalCF-Barred",
17103         FT_BOOLEAN, 8, NULL, 0x08,
17104         "", HFILL }},
17105     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1,
17106       { "plmn-SpecificBarringType1", "gsm_map.plmn-SpecificBarringType1",
17107         FT_BOOLEAN, 8, NULL, 0x80,
17108         "", HFILL }},
17109     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2,
17110       { "plmn-SpecificBarringType2", "gsm_map.plmn-SpecificBarringType2",
17111         FT_BOOLEAN, 8, NULL, 0x40,
17112         "", HFILL }},
17113     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3,
17114       { "plmn-SpecificBarringType3", "gsm_map.plmn-SpecificBarringType3",
17115         FT_BOOLEAN, 8, NULL, 0x20,
17116         "", HFILL }},
17117     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4,
17118       { "plmn-SpecificBarringType4", "gsm_map.plmn-SpecificBarringType4",
17119         FT_BOOLEAN, 8, NULL, 0x10,
17120         "", HFILL }},
17121     { &hf_gsm_map_AccessRestrictionData_utranNotAllowed,
17122       { "utranNotAllowed", "gsm_map.utranNotAllowed",
17123         FT_BOOLEAN, 8, NULL, 0x80,
17124         "", HFILL }},
17125     { &hf_gsm_map_AccessRestrictionData_geranNotAllowed,
17126       { "geranNotAllowed", "gsm_map.geranNotAllowed",
17127         FT_BOOLEAN, 8, NULL, 0x40,
17128         "", HFILL }},
17129     { &hf_gsm_map_SpecificCSI_Withdraw_o_csi,
17130       { "o-csi", "gsm_map.o-csi",
17131         FT_BOOLEAN, 8, NULL, 0x80,
17132         "", HFILL }},
17133     { &hf_gsm_map_SpecificCSI_Withdraw_ss_csi,
17134       { "ss-csi", "gsm_map.ss-csi",
17135         FT_BOOLEAN, 8, NULL, 0x40,
17136         "", HFILL }},
17137     { &hf_gsm_map_SpecificCSI_Withdraw_tif_csi,
17138       { "tif-csi", "gsm_map.tif-csi",
17139         FT_BOOLEAN, 8, NULL, 0x20,
17140         "", HFILL }},
17141     { &hf_gsm_map_SpecificCSI_Withdraw_d_csi,
17142       { "d-csi", "gsm_map.d-csi",
17143         FT_BOOLEAN, 8, NULL, 0x10,
17144         "", HFILL }},
17145     { &hf_gsm_map_SpecificCSI_Withdraw_vt_csi,
17146       { "vt-csi", "gsm_map.vt-csi",
17147         FT_BOOLEAN, 8, NULL, 0x08,
17148         "", HFILL }},
17149     { &hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi,
17150       { "mo-sms-csi", "gsm_map.mo-sms-csi",
17151         FT_BOOLEAN, 8, NULL, 0x04,
17152         "", HFILL }},
17153     { &hf_gsm_map_SpecificCSI_Withdraw_m_csi,
17154       { "m-csi", "gsm_map.m-csi",
17155         FT_BOOLEAN, 8, NULL, 0x02,
17156         "", HFILL }},
17157     { &hf_gsm_map_SpecificCSI_Withdraw_gprs_csi,
17158       { "gprs-csi", "gsm_map.gprs-csi",
17159         FT_BOOLEAN, 8, NULL, 0x01,
17160         "", HFILL }},
17161     { &hf_gsm_map_SpecificCSI_Withdraw_t_csi,
17162       { "t-csi", "gsm_map.t-csi",
17163         FT_BOOLEAN, 8, NULL, 0x80,
17164         "", HFILL }},
17165     { &hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi,
17166       { "mt-sms-csi", "gsm_map.mt-sms-csi",
17167         FT_BOOLEAN, 8, NULL, 0x40,
17168         "", HFILL }},
17169     { &hf_gsm_map_SpecificCSI_Withdraw_mg_csi,
17170       { "mg-csi", "gsm_map.mg-csi",
17171         FT_BOOLEAN, 8, NULL, 0x20,
17172         "", HFILL }},
17173     { &hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI,
17174       { "o-IM-CSI", "gsm_map.o-IM-CSI",
17175         FT_BOOLEAN, 8, NULL, 0x10,
17176         "", HFILL }},
17177     { &hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI,
17178       { "d-IM-CSI", "gsm_map.d-IM-CSI",
17179         FT_BOOLEAN, 8, NULL, 0x08,
17180         "", HFILL }},
17181     { &hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI,
17182       { "vt-IM-CSI", "gsm_map.vt-IM-CSI",
17183         FT_BOOLEAN, 8, NULL, 0x04,
17184         "", HFILL }},
17185     { &hf_gsm_map_AllowedServices_firstServiceAllowed,
17186       { "firstServiceAllowed", "gsm_map.firstServiceAllowed",
17187         FT_BOOLEAN, 8, NULL, 0x80,
17188         "", HFILL }},
17189     { &hf_gsm_map_AllowedServices_secondServiceAllowed,
17190       { "secondServiceAllowed", "gsm_map.secondServiceAllowed",
17191         FT_BOOLEAN, 8, NULL, 0x40,
17192         "", HFILL }},
17193     { &hf_gsm_map_ServiceIndicator_clir_invoked,
17194       { "clir-invoked", "gsm_map.clir-invoked",
17195         FT_BOOLEAN, 8, NULL, 0x80,
17196         "", HFILL }},
17197     { &hf_gsm_map_ServiceIndicator_camel_invoked,
17198       { "camel-invoked", "gsm_map.camel-invoked",
17199         FT_BOOLEAN, 8, NULL, 0x40,
17200         "", HFILL }},
17201     { &hf_gsm_map_T_mw_Status_scAddressNotIncluded,
17202       { "scAddressNotIncluded", "gsm_map.scAddressNotIncluded",
17203         FT_BOOLEAN, 8, NULL, 0x80,
17204         "", HFILL }},
17205     { &hf_gsm_map_T_mw_Status_mnrfSet,
17206       { "mnrfSet", "gsm_map.mnrfSet",
17207         FT_BOOLEAN, 8, NULL, 0x40,
17208         "", HFILL }},
17209     { &hf_gsm_map_T_mw_Status_mcefSet,
17210       { "mcefSet", "gsm_map.mcefSet",
17211         FT_BOOLEAN, 8, NULL, 0x20,
17212         "", HFILL }},
17213     { &hf_gsm_map_T_mw_Status_mnrgSet,
17214       { "mnrgSet", "gsm_map.mnrgSet",
17215         FT_BOOLEAN, 8, NULL, 0x10,
17216         "", HFILL }},
17217     { &hf_gsm_map_OfferedCamel4CSIs_o_csi,
17218       { "o-csi", "gsm_map.o-csi",
17219         FT_BOOLEAN, 8, NULL, 0x80,
17220         "", HFILL }},
17221     { &hf_gsm_map_OfferedCamel4CSIs_d_csi,
17222       { "d-csi", "gsm_map.d-csi",
17223         FT_BOOLEAN, 8, NULL, 0x40,
17224         "", HFILL }},
17225     { &hf_gsm_map_OfferedCamel4CSIs_vt_csi,
17226       { "vt-csi", "gsm_map.vt-csi",
17227         FT_BOOLEAN, 8, NULL, 0x20,
17228         "", HFILL }},
17229     { &hf_gsm_map_OfferedCamel4CSIs_t_csi,
17230       { "t-csi", "gsm_map.t-csi",
17231         FT_BOOLEAN, 8, NULL, 0x10,
17232         "", HFILL }},
17233     { &hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi,
17234       { "mt-sms-csi", "gsm_map.mt-sms-csi",
17235         FT_BOOLEAN, 8, NULL, 0x08,
17236         "", HFILL }},
17237     { &hf_gsm_map_OfferedCamel4CSIs_mg_csi,
17238       { "mg-csi", "gsm_map.mg-csi",
17239         FT_BOOLEAN, 8, NULL, 0x04,
17240         "", HFILL }},
17241     { &hf_gsm_map_OfferedCamel4CSIs_psi_enhancements,
17242       { "psi-enhancements", "gsm_map.psi-enhancements",
17243         FT_BOOLEAN, 8, NULL, 0x02,
17244         "", HFILL }},
17245     { &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt,
17246       { "initiateCallAttempt", "gsm_map.initiateCallAttempt",
17247         FT_BOOLEAN, 8, NULL, 0x80,
17248         "", HFILL }},
17249     { &hf_gsm_map_OfferedCamel4Functionalities_splitLeg,
17250       { "splitLeg", "gsm_map.splitLeg",
17251         FT_BOOLEAN, 8, NULL, 0x40,
17252         "", HFILL }},
17253     { &hf_gsm_map_OfferedCamel4Functionalities_moveLeg,
17254       { "moveLeg", "gsm_map.moveLeg",
17255         FT_BOOLEAN, 8, NULL, 0x20,
17256         "", HFILL }},
17257     { &hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg,
17258       { "disconnectLeg", "gsm_map.disconnectLeg",
17259         FT_BOOLEAN, 8, NULL, 0x10,
17260         "", HFILL }},
17261     { &hf_gsm_map_OfferedCamel4Functionalities_entityReleased,
17262       { "entityReleased", "gsm_map.entityReleased",
17263         FT_BOOLEAN, 8, NULL, 0x08,
17264         "", HFILL }},
17265     { &hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument,
17266       { "dfc-WithArgument", "gsm_map.dfc-WithArgument",
17267         FT_BOOLEAN, 8, NULL, 0x04,
17268         "", HFILL }},
17269     { &hf_gsm_map_OfferedCamel4Functionalities_playTone,
17270       { "playTone", "gsm_map.playTone",
17271         FT_BOOLEAN, 8, NULL, 0x02,
17272         "", HFILL }},
17273     { &hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall,
17274       { "dtmf-MidCall", "gsm_map.dtmf-MidCall",
17275         FT_BOOLEAN, 8, NULL, 0x01,
17276         "", HFILL }},
17277     { &hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator,
17278       { "chargingIndicator", "gsm_map.chargingIndicator",
17279         FT_BOOLEAN, 8, NULL, 0x80,
17280         "", HFILL }},
17281     { &hf_gsm_map_OfferedCamel4Functionalities_alertingDP,
17282       { "alertingDP", "gsm_map.alertingDP",
17283         FT_BOOLEAN, 8, NULL, 0x40,
17284         "", HFILL }},
17285     { &hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting,
17286       { "locationAtAlerting", "gsm_map.locationAtAlerting",
17287         FT_BOOLEAN, 8, NULL, 0x20,
17288         "", HFILL }},
17289     { &hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP,
17290       { "changeOfPositionDP", "gsm_map.changeOfPositionDP",
17291         FT_BOOLEAN, 8, NULL, 0x10,
17292         "", HFILL }},
17293     { &hf_gsm_map_OfferedCamel4Functionalities_or_Interactions,
17294       { "or-Interactions", "gsm_map.or-Interactions",
17295         FT_BOOLEAN, 8, NULL, 0x08,
17296         "", HFILL }},
17297     { &hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements,
17298       { "warningToneEnhancements", "gsm_map.warningToneEnhancements",
17299         FT_BOOLEAN, 8, NULL, 0x04,
17300         "", HFILL }},
17301     { &hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements,
17302       { "cf-Enhancements", "gsm_map.cf-Enhancements",
17303         FT_BOOLEAN, 8, NULL, 0x02,
17304         "", HFILL }},
17305     { &hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices,
17306       { "subscribedEnhancedDialledServices", "gsm_map.subscribedEnhancedDialledServices",
17307         FT_BOOLEAN, 8, NULL, 0x01,
17308         "", HFILL }},
17309     { &hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices,
17310       { "servingNetworkEnhancedDialledServices", "gsm_map.servingNetworkEnhancedDialledServices",
17311         FT_BOOLEAN, 8, NULL, 0x80,
17312         "", HFILL }},
17313     { &hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP,
17314       { "criteriaForChangeOfPositionDP", "gsm_map.criteriaForChangeOfPositionDP",
17315         FT_BOOLEAN, 8, NULL, 0x40,
17316         "", HFILL }},
17317     { &hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP,
17318       { "serviceChangeDP", "gsm_map.serviceChangeDP",
17319         FT_BOOLEAN, 8, NULL, 0x20,
17320         "", HFILL }},
17321     { &hf_gsm_map_DeferredLocationEventType_msAvailable,
17322       { "msAvailable", "gsm_map.msAvailable",
17323         FT_BOOLEAN, 8, NULL, 0x80,
17324         "", HFILL }},
17325     { &hf_gsm_map_DeferredLocationEventType_enteringIntoArea,
17326       { "enteringIntoArea", "gsm_map.enteringIntoArea",
17327         FT_BOOLEAN, 8, NULL, 0x40,
17328         "", HFILL }},
17329     { &hf_gsm_map_DeferredLocationEventType_leavingFromArea,
17330       { "leavingFromArea", "gsm_map.leavingFromArea",
17331         FT_BOOLEAN, 8, NULL, 0x20,
17332         "", HFILL }},
17333     { &hf_gsm_map_DeferredLocationEventType_beingInsideArea,
17334       { "beingInsideArea", "gsm_map.beingInsideArea",
17335         FT_BOOLEAN, 8, NULL, 0x10,
17336         "", HFILL }},
17337     { &hf_gsm_map_SupportedGADShapes_ellipsoidPoint,
17338       { "ellipsoidPoint", "gsm_map.ellipsoidPoint",
17339         FT_BOOLEAN, 8, NULL, 0x80,
17340         "", HFILL }},
17341     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle,
17342       { "ellipsoidPointWithUncertaintyCircle", "gsm_map.ellipsoidPointWithUncertaintyCircle",
17343         FT_BOOLEAN, 8, NULL, 0x40,
17344         "", HFILL }},
17345     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse,
17346       { "ellipsoidPointWithUncertaintyEllipse", "gsm_map.ellipsoidPointWithUncertaintyEllipse",
17347         FT_BOOLEAN, 8, NULL, 0x20,
17348         "", HFILL }},
17349     { &hf_gsm_map_SupportedGADShapes_polygon,
17350       { "polygon", "gsm_map.polygon",
17351         FT_BOOLEAN, 8, NULL, 0x10,
17352         "", HFILL }},
17353     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude,
17354       { "ellipsoidPointWithAltitude", "gsm_map.ellipsoidPointWithAltitude",
17355         FT_BOOLEAN, 8, NULL, 0x08,
17356         "", HFILL }},
17357     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid,
17358       { "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", "gsm_map.ellipsoidPointWithAltitudeAndUncertaintyElipsoid",
17359         FT_BOOLEAN, 8, NULL, 0x04,
17360         "", HFILL }},
17361     { &hf_gsm_map_SupportedGADShapes_ellipsoidArc,
17362       { "ellipsoidArc", "gsm_map.ellipsoidArc",
17363         FT_BOOLEAN, 8, NULL, 0x02,
17364         "", HFILL }},
17365
17366 /*--- End of included file: packet-gsm_map-hfarr.c ---*/
17367
17368   };
17369
17370   /* List of subtrees */
17371   static gint *ett[] = {
17372     &ett_gsm_map,
17373     &ett_gsm_map_InvokeId,
17374     &ett_gsm_map_InvokePDU,
17375     &ett_gsm_map_ReturnResultPDU,
17376         &ett_gsm_map_ReturnErrorPDU,
17377     &ett_gsm_map_ReturnResult_result,
17378         &ett_gsm_map_ReturnError_result,
17379     &ett_gsm_map_GSMMAPPDU,
17380
17381 /*--- Included file: packet-gsm_map-ettarr.c ---*/
17382
17383     &ett_gsm_map_Bss_APDU,
17384     &ett_gsm_map_SupportedCamelPhases,
17385     &ett_gsm_map_UpdateLocationArg,
17386     &ett_gsm_map_UpdateLocationRes,
17387     &ett_gsm_map_VLR_Capability,
17388     &ett_gsm_map_SuperChargerInfo,
17389     &ett_gsm_map_SupportedLCS_CapabilitySets,
17390     &ett_gsm_map_ADD_Info,
17391     &ett_gsm_map_PrivateExtensionList,
17392     &ett_gsm_map_PrivateExtension,
17393     &ett_gsm_map_SLR_ArgExtensionContainer,
17394     &ett_gsm_map_PcsExtensions,
17395     &ett_gsm_map_SLR_Arg_PCS_Extensions,
17396     &ett_gsm_map_CancelLocationArg,
17397     &ett_gsm_map_CancelLocationRes,
17398     &ett_gsm_map_PurgeMSArg,
17399     &ett_gsm_map_PurgeMSRes,
17400     &ett_gsm_map_SendIdentificationArg,
17401     &ett_gsm_map_SendIdentificationRes,
17402     &ett_gsm_map_AuthenticationSetList,
17403     &ett_gsm_map_TripletList,
17404     &ett_gsm_map_QuintupletList,
17405     &ett_gsm_map_AuthenticationTriplet,
17406     &ett_gsm_map_AuthenticationQuintuplet,
17407     &ett_gsm_map_CurrentSecurityContext,
17408     &ett_gsm_map_GSM_SecurityContextData,
17409     &ett_gsm_map_UMTS_SecurityContextData,
17410     &ett_gsm_map_PrepareHO_Arg,
17411     &ett_gsm_map_PrepareHO_ArgV3,
17412     &ett_gsm_map_BSSMAP_ServiceHandoverList,
17413     &ett_gsm_map_BSSMAP_ServiceHandoverInfo,
17414     &ett_gsm_map_RadioResourceList,
17415     &ett_gsm_map_RadioResource,
17416     &ett_gsm_map_PrepareHO_Res,
17417     &ett_gsm_map_PrepareHO_ResV3,
17418     &ett_gsm_map_SelectedUMTS_Algorithms,
17419     &ett_gsm_map_ChosenRadioResourceInformation,
17420     &ett_gsm_map_SendEndSignalArgV3,
17421     &ett_gsm_map_SendEndSignalRes,
17422     &ett_gsm_map_RelocationNumberList,
17423     &ett_gsm_map_RelocationNumber,
17424     &ett_gsm_map_ProcessAccessSignallingArgV3,
17425     &ett_gsm_map_SupportedCodecsList,
17426     &ett_gsm_map_CodecList,
17427     &ett_gsm_map_ForwardAccessSignallingArgV3,
17428     &ett_gsm_map_AllowedUMTS_Algorithms,
17429     &ett_gsm_map_PrepareSubsequentHOArg,
17430     &ett_gsm_map_PrepareSubsequentHOArgV3,
17431     &ett_gsm_map_PrepareSubsequentHOResV3,
17432     &ett_gsm_map_SendAuthenticationInfoArgV2,
17433     &ett_gsm_map_SendAuthenticationInfoRes,
17434     &ett_gsm_map_SendAuthenticationInfoRes_item,
17435     &ett_gsm_map_SendAuthenticationInfoResV3,
17436     &ett_gsm_map_Re_synchronisationInfo,
17437     &ett_gsm_map_CheckIMEIArgV2,
17438     &ett_gsm_map_CheckIMEIRes,
17439     &ett_gsm_map_RequestedEquipmentInfo,
17440     &ett_gsm_map_UESBI_Iu,
17441     &ett_gsm_map_BasicService,
17442     &ett_gsm_map_BasicServiceGroupList,
17443     &ett_gsm_map_ODB_GeneralData,
17444     &ett_gsm_map_ODB_HPLMN_Data,
17445     &ett_gsm_map_BcsmCamelTDPData,
17446     &ett_gsm_map_BcsmCamelTDPDataList,
17447     &ett_gsm_map_O_CSI,
17448     &ett_gsm_map_O_BcsmCamelTDPDataList,
17449     &ett_gsm_map_O_BcsmCamelTDPData,
17450     &ett_gsm_map_InsertSubscriberDataArg,
17451     &ett_gsm_map_AccessRestrictionData,
17452     &ett_gsm_map_LCSInformation,
17453     &ett_gsm_map_GMLC_List,
17454     &ett_gsm_map_GPRSDataList,
17455     &ett_gsm_map_PDP_Context,
17456     &ett_gsm_map_GPRSSubscriptionData,
17457     &ett_gsm_map_SGSN_CAMEL_SubscriptionInfo,
17458     &ett_gsm_map_GPRS_CSI,
17459     &ett_gsm_map_GPRS_CamelTDPDataList,
17460     &ett_gsm_map_GPRS_CamelTDPData,
17461     &ett_gsm_map_LSADataList,
17462     &ett_gsm_map_LSAData,
17463     &ett_gsm_map_LSAInformation,
17464     &ett_gsm_map_InsertSubscriberDataRes,
17465     &ett_gsm_map_DeleteSubscriberDataArg,
17466     &ett_gsm_map_DeleteSubscriberDataRes,
17467     &ett_gsm_map_SpecificCSI_Withdraw,
17468     &ett_gsm_map_GPRSSubscriptionDataWithdraw,
17469     &ett_gsm_map_ContextIdList,
17470     &ett_gsm_map_LSAInformationWithdraw,
17471     &ett_gsm_map_LSAIdentityList,
17472     &ett_gsm_map_BasicServiceList,
17473     &ett_gsm_map_VlrCamelSubscriptionInfo,
17474     &ett_gsm_map_MT_smsCAMELTDP_CriteriaList,
17475     &ett_gsm_map_MT_smsCAMELTDP_Criteria,
17476     &ett_gsm_map_TPDU_TypeCriterion,
17477     &ett_gsm_map_D_CSI,
17478     &ett_gsm_map_DP_AnalysedInfoCriteriaList,
17479     &ett_gsm_map_DP_AnalysedInfoCriterium,
17480     &ett_gsm_map_SS_CSI,
17481     &ett_gsm_map_SS_CamelData,
17482     &ett_gsm_map_MG_CSI,
17483     &ett_gsm_map_BearerServiceList,
17484     &ett_gsm_map_TeleserviceList,
17485     &ett_gsm_map_Ext_SS_InfoList,
17486     &ett_gsm_map_Ext_SS_Info,
17487     &ett_gsm_map_Ext_ForwInfo,
17488     &ett_gsm_map_Ext_ForwFeatureList,
17489     &ett_gsm_map_Ext_ForwFeature,
17490     &ett_gsm_map_Ext_CallBarInfo,
17491     &ett_gsm_map_Ext_CallBarFeatureList,
17492     &ett_gsm_map_Ext_CallBarringFeature,
17493     &ett_gsm_map_ZoneCodeList,
17494     &ett_gsm_map_EMLPP_Info,
17495     &ett_gsm_map_CUG_Info,
17496     &ett_gsm_map_CUG_SubscriptionList,
17497     &ett_gsm_map_CUG_Subscription,
17498     &ett_gsm_map_CUG_FeatureList,
17499     &ett_gsm_map_Ext_BasicServiceGroupList,
17500     &ett_gsm_map_CUG_Feature,
17501     &ett_gsm_map_Ext_SS_Data,
17502     &ett_gsm_map_LCS_PrivacyExceptionList,
17503     &ett_gsm_map_LCS_PrivacyClass,
17504     &ett_gsm_map_ExternalClientList,
17505     &ett_gsm_map_PLMNClientList,
17506     &ett_gsm_map_Ext_ExternalClientList,
17507     &ett_gsm_map_ExternalClient,
17508     &ett_gsm_map_ServiceTypeList,
17509     &ett_gsm_map_ServiceType,
17510     &ett_gsm_map_MOLR_List,
17511     &ett_gsm_map_MOLR_Class,
17512     &ett_gsm_map_CallBarringFeatureList,
17513     &ett_gsm_map_CallBarringFeature,
17514     &ett_gsm_map_ForwardingFeatureList,
17515     &ett_gsm_map_ForwardingFeature,
17516     &ett_gsm_map_DestinationNumberCriteria,
17517     &ett_gsm_map_DestinationNumberList,
17518     &ett_gsm_map_DestinationNumberLengthList,
17519     &ett_gsm_map_ForwardingInfo,
17520     &ett_gsm_map_CallBarringInfo,
17521     &ett_gsm_map_MC_SS_Info,
17522     &ett_gsm_map_ResetArg,
17523     &ett_gsm_map_RestoreDataArg,
17524     &ett_gsm_map_RestoreDataRes,
17525     &ett_gsm_map_VBSDataList,
17526     &ett_gsm_map_VGCSDataList,
17527     &ett_gsm_map_VoiceGroupCallData,
17528     &ett_gsm_map_VoiceBroadcastData,
17529     &ett_gsm_map_ActivateTraceModeArg,
17530     &ett_gsm_map_ActivateTraceModeRes,
17531     &ett_gsm_map_DeactivateTraceModeArg,
17532     &ett_gsm_map_DeactivateTraceModeRes,
17533     &ett_gsm_map_SendRoutingInfoArg,
17534     &ett_gsm_map_SendRoutingInfoRes,
17535     &ett_gsm_map_ExternalSignalInfo,
17536     &ett_gsm_map_Ext_ExternalSignalInfo,
17537     &ett_gsm_map_AccessNetworkSignalInfo,
17538     &ett_gsm_map_CamelInfo,
17539     &ett_gsm_map_Identity,
17540     &ett_gsm_map_IMSI_WithLMSI,
17541     &ett_gsm_map_SubscriberId,
17542     &ett_gsm_map_HLR_List,
17543     &ett_gsm_map_SS_List,
17544     &ett_gsm_map_NAEA_PreferredCI,
17545     &ett_gsm_map_SubscriberIdentity,
17546     &ett_gsm_map_LCSClientExternalID,
17547     &ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
17548     &ett_gsm_map_AllowedServices,
17549     &ett_gsm_map_CCBS_Indicators,
17550     &ett_gsm_map_RoutingInfo,
17551     &ett_gsm_map_ExtendedRoutingInfo,
17552     &ett_gsm_map_CamelRoutingInfo,
17553     &ett_gsm_map_GmscCamelSubscriptionInfo,
17554     &ett_gsm_map_LocationInformation,
17555     &ett_gsm_map_LocationInformationGPRS,
17556     &ett_gsm_map_SubscriberState,
17557     &ett_gsm_map_PS_SubscriberState,
17558     &ett_gsm_map_PDP_ContextInfoList,
17559     &ett_gsm_map_PDP_ContextInfo,
17560     &ett_gsm_map_CUG_CheckInfo,
17561     &ett_gsm_map_ForwardingData,
17562     &ett_gsm_map_ProvideRoamingNumberArg,
17563     &ett_gsm_map_ProvideRoamingNumberRes,
17564     &ett_gsm_map_ResumeCallHandlingArg,
17565     &ett_gsm_map_ResumeCallHandlingRes,
17566     &ett_gsm_map_UU_Data,
17567     &ett_gsm_map_ProvideSIWFSNumberArg,
17568     &ett_gsm_map_ProvideSIWFSNumberRes,
17569     &ett_gsm_map_SIWFSSignallingModifyArg,
17570     &ett_gsm_map_SIWFSSignallingModifyRes,
17571     &ett_gsm_map_SetReportingStateArg,
17572     &ett_gsm_map_SetReportingStateRes,
17573     &ett_gsm_map_StatusReportArg,
17574     &ett_gsm_map_StatusReportRes,
17575     &ett_gsm_map_EventReportData,
17576     &ett_gsm_map_CallReportData,
17577     &ett_gsm_map_IST_AlertArg,
17578     &ett_gsm_map_IST_AlertRes,
17579     &ett_gsm_map_IST_CommandArg,
17580     &ett_gsm_map_IST_CommandRes,
17581     &ett_gsm_map_ReleaseResourcesArg,
17582     &ett_gsm_map_ReleaseResourcesRes,
17583     &ett_gsm_map_RemoteUserFreeArg,
17584     &ett_gsm_map_RemoteUserFreeRes,
17585     &ett_gsm_map_SS_Data,
17586     &ett_gsm_map_SS_SubscriptionOption,
17587     &ett_gsm_map_RegisterSS_Arg,
17588     &ett_gsm_map_SS_Info,
17589     &ett_gsm_map_InterrogateSS_Res,
17590     &ett_gsm_map_Ussd_Arg,
17591     &ett_gsm_map_Ussd_Res,
17592     &ett_gsm_map_AuthenticationFailureReportArg,
17593     &ett_gsm_map_AuthenticationFailureReportRes,
17594     &ett_gsm_map_RegisterCC_EntryArg,
17595     &ett_gsm_map_RegisterCC_EntryRes,
17596     &ett_gsm_map_CCBS_Data,
17597     &ett_gsm_map_ServiceIndicator,
17598     &ett_gsm_map_EraseCC_EntryArg,
17599     &ett_gsm_map_EraseCC_EntryRes,
17600     &ett_gsm_map_RoutingInfoForSMArg,
17601     &ett_gsm_map_RoutingInfoForSM_Res,
17602     &ett_gsm_map_LocationInfoWithLMSI,
17603     &ett_gsm_map_Additional_Number,
17604     &ett_gsm_map_Mo_forwardSM_Arg,
17605     &ett_gsm_map_Mo_forwardSM_Res,
17606     &ett_gsm_map_Sm_RP_OA,
17607     &ett_gsm_map_Sm_RP_DA,
17608     &ett_gsm_map_Mt_forwardSM_Arg,
17609     &ett_gsm_map_Mt_forwardSM_Res,
17610     &ett_gsm_map_ReportSM_DeliveryStatusArg,
17611     &ett_gsm_map_ReportSM_DeliveryStatusRes,
17612     &ett_gsm_map_InformServiceCentreArg,
17613     &ett_gsm_map_T_mw_Status,
17614     &ett_gsm_map_AlertServiceCentreArg,
17615     &ett_gsm_map_ReadyForSM_Arg,
17616     &ett_gsm_map_ReadyForSM_Res,
17617     &ett_gsm_map_ProvideSubscriberInfoArg,
17618     &ett_gsm_map_ProvideSubscriberInfoRes,
17619     &ett_gsm_map_SubscriberInfo,
17620     &ett_gsm_map_MNPInfoRes,
17621     &ett_gsm_map_GPRSMSClass,
17622     &ett_gsm_map_RequestedInfo,
17623     &ett_gsm_map_AnyTimeInterrogationArg,
17624     &ett_gsm_map_AnyTimeInterrogationRes,
17625     &ett_gsm_map_AnyTimeSubscriptionInterrogationArg,
17626     &ett_gsm_map_AnyTimeSubscriptionInterrogationRes,
17627     &ett_gsm_map_RequestedSubscriptionInfo,
17628     &ett_gsm_map_CallForwardingData,
17629     &ett_gsm_map_CallBarringData,
17630     &ett_gsm_map_BasicServiceCode,
17631     &ett_gsm_map_O_BcsmCamelTDPCriteriaList,
17632     &ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList,
17633     &ett_gsm_map_O_BcsmCamelTDP_Criteria,
17634     &ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria,
17635     &ett_gsm_map_OfferedCamel4CSIs,
17636     &ett_gsm_map_OfferedCamel4Functionalities,
17637     &ett_gsm_map_SS_ForBS_Code,
17638     &ett_gsm_map_GenericServiceInfo,
17639     &ett_gsm_map_CCBS_FeatureList,
17640     &ett_gsm_map_CCBS_Feature,
17641     &ett_gsm_map_T_CauseValueCriteria,
17642     &ett_gsm_map_O_CauseValueCriteria,
17643     &ett_gsm_map_BasicServiceCriteria,
17644     &ett_gsm_map_AnyTimeModificationArg,
17645     &ett_gsm_map_AnyTimeModificationRes,
17646     &ett_gsm_map_ModificationRequestFor_CF_Info,
17647     &ett_gsm_map_ModificationRequestFor_CB_Info,
17648     &ett_gsm_map_ModificationRequestFor_ODB_data,
17649     &ett_gsm_map_ModificationRequestFor_CSI,
17650     &ett_gsm_map_Ext_SS_InfoFor_CSE,
17651     &ett_gsm_map_NoteSubscriberDataModifiedArg,
17652     &ett_gsm_map_NoteSubscriberDataModifiedRes,
17653     &ett_gsm_map_NoteMM_EventArg,
17654     &ett_gsm_map_NoteMM_EventRes,
17655     &ett_gsm_map_CAMEL_SubscriptionInfo,
17656     &ett_gsm_map_Ext_ForwardingInfoFor_CSE,
17657     &ett_gsm_map_Ext_BasicServiceCode,
17658     &ett_gsm_map_Ext_CallBarringInfoFor_CSE,
17659     &ett_gsm_map_ODB_Info,
17660     &ett_gsm_map_ODB_Data,
17661     &ett_gsm_map_M_CSI,
17662     &ett_gsm_map_SS_EventList,
17663     &ett_gsm_map_T_CSI,
17664     &ett_gsm_map_T_BcsmCamelTDPDataList,
17665     &ett_gsm_map_T_BcsmCamelTDPData,
17666     &ett_gsm_map_SMS_CSI,
17667     &ett_gsm_map_SMS_CAMEL_TDP_DataList,
17668     &ett_gsm_map_SMS_CAMEL_TDP_Data,
17669     &ett_gsm_map_MobilityTriggers,
17670     &ett_gsm_map_Ss_InvocationNotificationArg,
17671     &ett_gsm_map_T_ss_EventSpecification,
17672     &ett_gsm_map_Ss_InvocationNotificationRes,
17673     &ett_gsm_map_PrepareGroupCallArg,
17674     &ett_gsm_map_PrepareGroupCallRes,
17675     &ett_gsm_map_SendGroupCallEndSignalArg,
17676     &ett_gsm_map_SendGroupCallEndSignalRes,
17677     &ett_gsm_map_ProcessGroupCallSignallingArg,
17678     &ett_gsm_map_ForwardGroupCallSignallingArg,
17679     &ett_gsm_map_UpdateGprsLocationArg,
17680     &ett_gsm_map_UpdateGprsLocationRes,
17681     &ett_gsm_map_SGSN_Capability,
17682     &ett_gsm_map_SendRoutingInfoForGprsArg,
17683     &ett_gsm_map_SendRoutingInfoForGprsRes,
17684     &ett_gsm_map_FailureReportArg,
17685     &ett_gsm_map_FailureReportRes,
17686     &ett_gsm_map_NoteMsPresentForGprsArg,
17687     &ett_gsm_map_NoteMsPresentForGprsRes,
17688     &ett_gsm_map_ProvideSubscriberLocation_Arg,
17689     &ett_gsm_map_LocationType,
17690     &ett_gsm_map_DeferredLocationEventType,
17691     &ett_gsm_map_LCS_ClientID,
17692     &ett_gsm_map_LCSClientName,
17693     &ett_gsm_map_LCSRequestorID,
17694     &ett_gsm_map_LCS_QoS,
17695     &ett_gsm_map_ResponseTime,
17696     &ett_gsm_map_SupportedGADShapes,
17697     &ett_gsm_map_LCSCodeword,
17698     &ett_gsm_map_LCS_PrivacyCheck,
17699     &ett_gsm_map_AreaEventInfo,
17700     &ett_gsm_map_AreaDefinition,
17701     &ett_gsm_map_AreaList,
17702     &ett_gsm_map_Area,
17703     &ett_gsm_map_ProvideSubscriberLocation_Res,
17704     &ett_gsm_map_TargetMS,
17705     &ett_gsm_map_RoutingInfoForLCS_Arg,
17706     &ett_gsm_map_RoutingInfoForLCS_Res,
17707     &ett_gsm_map_LCSLocationInfo,
17708     &ett_gsm_map_SubscriberLocationReport_Arg,
17709     &ett_gsm_map_Deferredmt_lrData,
17710     &ett_gsm_map_SubscriberLocationReport_Res,
17711     &ett_gsm_map_SecureTransportArg,
17712     &ett_gsm_map_SecureTransportRes,
17713     &ett_gsm_map_SecurityHeader,
17714     &ett_gsm_map_OriginalComponentIdentifier,
17715     &ett_gsm_map_OperationCode,
17716     &ett_gsm_map_ErrorCode,
17717     &ett_gsm_map_SystemFailureParam,
17718     &ett_gsm_map_T_extensibleSystemFailureParam,
17719     &ett_gsm_map_DataMissingParam,
17720     &ett_gsm_map_UnexpectedDataParam,
17721     &ett_gsm_map_FacilityNotSupParam,
17722     &ett_gsm_map_IncompatibleTerminalParam,
17723     &ett_gsm_map_ResourceLimitationParam,
17724     &ett_gsm_map_UnknownSubscriberParam,
17725     &ett_gsm_map_NumberChangedParam,
17726     &ett_gsm_map_UnidentifiedSubParam,
17727     &ett_gsm_map_RoamingNotAllowedParam,
17728     &ett_gsm_map_IllegalSubscriberParam,
17729     &ett_gsm_map_IllegalEquipmentParam,
17730     &ett_gsm_map_BearerServNotProvParam,
17731     &ett_gsm_map_TeleservNotProvParam,
17732     &ett_gsm_map_TracingBufferFullParam,
17733     &ett_gsm_map_NoRoamingNbParam,
17734     &ett_gsm_map_AbsentSubscriberParam,
17735     &ett_gsm_map_BusySubscriberParam,
17736     &ett_gsm_map_NoSubscriberReplyParam,
17737     &ett_gsm_map_CallBarredParam,
17738     &ett_gsm_map_T_extensibleCallBarredParam,
17739     &ett_gsm_map_ForwardingFailedParam,
17740     &ett_gsm_map_Or_NotAllowedParam,
17741     &ett_gsm_map_ForwardingViolationParam,
17742     &ett_gsm_map_Cug_RejectParam,
17743     &ett_gsm_map_Ati_NotAllowedParam,
17744     &ett_gsm_map_NoGroupCallNbParam,
17745     &ett_gsm_map_SS_IncompatibilityCause,
17746     &ett_gsm_map_ShortTermDenialParam,
17747     &ett_gsm_map_LongTermDenialParam,
17748     &ett_gsm_map_SubBusyForMT_SMS_Param,
17749     &ett_gsm_map_Sm_DeliveryFailureCause,
17750     &ett_gsm_map_MessageWaitListFullParam,
17751     &ett_gsm_map_AbsentSubscriberSM_Param,
17752     &ett_gsm_map_UnauthorizedRequestingNetwork_Param,
17753     &ett_gsm_map_UnauthorizedLCSClient_Param,
17754     &ett_gsm_map_PositionMethodFailure_Param,
17755     &ett_gsm_map_UnknownOrUnreachableLCSClient_Param,
17756     &ett_gsm_map_ExtensionContainer,
17757
17758 /*--- End of included file: packet-gsm_map-ettarr.c ---*/
17759
17760   };
17761
17762   /* Register protocol */
17763   proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
17764 /*XXX  register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map);*/
17765   /* Register fields and subtrees */
17766   proto_register_field_array(proto_gsm_map, hf, array_length(hf));
17767   proto_register_subtree_array(ett, array_length(ett));
17768
17769   sms_dissector_table = register_dissector_table("gsm_map.sms_tpdu", 
17770                                                  "GSM SMS TPDU", FT_UINT8,
17771                                                  BASE_DEC);
17772
17773   gsm_map_tap = register_tap("gsm_map");
17774   /*register_ber_oid_name("0.4.0.0.1.0.1.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version3(3)" );
17775    *
17776    * Register our configuration options, particularly our ssn:s
17777    * Set default SSNs
17778    */
17779   range_convert_str(&global_ssn_range, "6-9", MAX_SSN);
17780   ssn_range = range_empty();
17781
17782
17783   gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);
17784
17785   prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs",
17786                                   "TCAP Subsystem numbers used for GSM MAP",
17787                                   &global_ssn_range, MAX_SSN);
17788 }
17789
17790