Get rid of some GCC warnings about unused code.
[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 #line 1 "packet-gsm_map-template.c"
9 /* packet-gsm_map-template.c
10  * Routines for GSM MobileApplication packet dissection
11  * Copyright 2004 - 2005 , Anders Broman <anders.broman [AT] ericsson.com>
12  * Based on the dissector by:
13  * Felix Fei <felix.fei [AT] utstar.com>
14  * and Michael Lum <mlum [AT] telostech.com>
15  *
16  * $Id$
17  *
18  * Ethereal - Network traffic analyzer
19  * By Gerald Combs <gerald@ethereal.com>
20  * Copyright 1998 Gerald Combs
21  *
22  * This program is free software; you can redistribute it and/or
23  * modify it under the terms of the GNU General Public License
24  * as published by the Free Software Foundation; either version 2
25  * of the License, or (at your option) any later version.
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30  * GNU General Public License for more details.
31  *
32  * You should have received a copy of the GNU General Public License
33  * along with this program; if not, write to the Free Software
34  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
35  * References: ETSI TS 129 002
36  * Updated to ETSI TS 129 002 V6.9.0 (2005-3GPP TS 29.002 version 6.9.0 Release 6)
37  */
38
39 #ifdef HAVE_CONFIG_H
40 # include "config.h"
41 #endif
42
43 #include <glib.h>
44 #include <epan/packet.h>
45 #include <epan/prefs.h>
46 #include <epan/conversation.h>
47 #include <epan/tap.h>
48 #include <epan/emem.h>
49
50 #include <stdio.h>
51 #include <string.h>
52
53 #include "packet-ber.h"
54 #include "packet-q931.h"
55 #include "packet-gsm_map.h"
56 #include "packet-gsm_a.h"
57 #include "packet-tcap.h"
58
59 #define PNAME  "GSM Mobile Application"
60 #define PSNAME "GSM_MAP"
61 #define PFNAME "gsm_map"
62
63 /* Initialize the protocol and registered fields */
64 int proto_gsm_map = -1;
65 /*
66 static int hf_gsm_map_invokeCmd = -1;             / Opcode /
67 static int hf_gsm_map_invokeid = -1;              / INTEGER /
68 static int hf_gsm_map_absent = -1;                / NULL /
69 static int hf_gsm_map_invokeId = -1;              / InvokeId /
70 static int hf_gsm_map_invoke = -1;                / InvokePDU /
71 static int hf_gsm_map_returnResult = -1;          / InvokePDU /
72 static int hf_gsm_map_returnResult_result = -1;
73 static int hf_gsm_map_returnError_result = -1;
74 static int hf_gsm_map_returnError = -1;
75 static int hf_gsm_map_local_errorCode = -1;
76 static int hf_gsm_map_global_errorCode_oid = -1;
77 static int hf_gsm_map_global_errorCode = -1;
78 */
79 static int hf_gsm_map_SendAuthenticationInfoArg = -1;
80 static int hf_gsm_map_SendAuthenticationInfoRes = -1;
81 static int hf_gsm_mapSendEndSignal = -1;
82 static int hf_gsm_map_getPassword = -1;  
83 static int hf_gsm_map_currentPassword = -1;
84 static int hf_gsm_map_extension = -1;
85 static int hf_gsm_map_nature_of_number = -1;
86 static int hf_gsm_map_number_plan = -1;
87 static int hf_gsm_map_isdn_address_digits = -1;
88 static int hf_gsm_map_address_digits = -1;
89 static int hf_gsm_map_servicecentreaddress_digits = -1;
90 static int hf_gsm_map_imsi_digits = -1;
91 static int hf_gsm_map_Ss_Status_unused = -1;
92 static int hf_gsm_map_Ss_Status_q_bit = -1;
93 static int hf_gsm_map_Ss_Status_p_bit = -1;
94 static int hf_gsm_map_Ss_Status_r_bit = -1;
95 static int hf_gsm_map_Ss_Status_a_bit = -1;
96 static int hf_gsm_map_notification_to_forwarding_party = -1;
97 static int hf_gsm_map_redirecting_presentation = -1;
98 static int hf_gsm_map_notification_to_calling_party = -1;
99 static int hf_gsm_map_forwarding_reason = -1;
100 static int hf_gsm_map_pdp_type_org = -1;
101 static int hf_gsm_map_etsi_pdp_type_number = -1;
102 static int hf_gsm_map_ietf_pdp_type_number = -1;
103
104
105 /*--- Included file: packet-gsm_map-hf.c ---*/
106 #line 1 "packet-gsm_map-hf.c"
107 static int hf_gsm_map_Component_PDU = -1;         /* Component */
108 static int hf_gsm_map_invoke = -1;                /* Invoke */
109 static int hf_gsm_map_returnResultLast = -1;      /* ReturnResult */
110 static int hf_gsm_map_returnError = -1;           /* ReturnError */
111 static int hf_gsm_map_reject = -1;                /* Reject */
112 static int hf_gsm_map_invokeID = -1;              /* InvokeIdType */
113 static int hf_gsm_map_linkedID = -1;              /* InvokeIdType */
114 static int hf_gsm_map_opCode = -1;                /* OPERATION */
115 static int hf_gsm_map_invokeparameter = -1;       /* InvokeParameter */
116 static int hf_gsm_map_resultretres = -1;          /* T_resultretres */
117 static int hf_gsm_map_returnparameter = -1;       /* ReturnResultParameter */
118 static int hf_gsm_map_errorCode = -1;             /* ERROR */
119 static int hf_gsm_map_parameter = -1;             /* ReturnErrorParameter */
120 static int hf_gsm_map_invokeIDRej = -1;           /* T_invokeIDRej */
121 static int hf_gsm_map_derivable = -1;             /* InvokeIdType */
122 static int hf_gsm_map_not_derivable = -1;         /* NULL */
123 static int hf_gsm_map_problem = -1;               /* T_problem */
124 static int hf_gsm_map_generalProblem = -1;        /* GeneralProblem */
125 static int hf_gsm_map_invokeProblem = -1;         /* InvokeProblem */
126 static int hf_gsm_map_returnResultProblem = -1;   /* ReturnResultProblem */
127 static int hf_gsm_map_returnErrorProblem = -1;    /* ReturnErrorProblem */
128 static int hf_gsm_map_localValue = -1;            /* OperationLocalvalue */
129 static int hf_gsm_map_globalValue = -1;           /* OBJECT_IDENTIFIER */
130 static int hf_gsm_map_localValue1 = -1;           /* LocalErrorcode */
131 static int hf_gsm_map_protocolId = -1;            /* ProtocolId */
132 static int hf_gsm_map_signalInfo = -1;            /* SignalInfo */
133 static int hf_gsm_map_extensionContainer = -1;    /* ExtensionContainer */
134 static int hf_gsm_map_imsi = -1;                  /* IMSI */
135 static int hf_gsm_map_msc_Number = -1;            /* ISDN_AddressString */
136 static int hf_gsm_map_vlr_Number = -1;            /* ISDN_AddressString */
137 static int hf_gsm_map_lmsi = -1;                  /* LMSI */
138 static int hf_gsm_map_vlr_Capability = -1;        /* VLR_Capability */
139 static int hf_gsm_map_informPreviousNetworkEntity = -1;  /* NULL */
140 static int hf_gsm_map_cs_LCS_NotSupportedByUE = -1;  /* NULL */
141 static int hf_gsm_map_v_gmlc_Address = -1;        /* GSN_Address */
142 static int hf_gsm_map_add_info = -1;              /* ADD_Info */
143 static int hf_gsm_map_hlr_Number = -1;            /* ISDN_AddressString */
144 static int hf_gsm_map_add_Capability = -1;        /* NULL */
145 static int hf_gsm_map_supportedCamelPhases = -1;  /* SupportedCamelPhases */
146 static int hf_gsm_map_solsaSupportIndicator = -1;  /* NULL */
147 static int hf_gsm_map_istSupportIndicator = -1;   /* IST_SupportIndicator */
148 static int hf_gsm_map_superChargerSupportedInServingNetworkEntity = -1;  /* SuperChargerInfo */
149 static int hf_gsm_map_longFTN_Supported = -1;     /* NULL */
150 static int hf_gsm_map_supportedLCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
151 static int hf_gsm_map_offeredCamel4CSIs = -1;     /* OfferedCamel4CSIs */
152 static int hf_gsm_map_sendSubscriberData = -1;    /* NULL */
153 static int hf_gsm_map_subscriberDataStored = -1;  /* AgeIndicator */
154 static int hf_gsm_map_imeisv = -1;                /* IMEI */
155 static int hf_gsm_map_skipSubscriberDataUpdate = -1;  /* NULL */
156 static int hf_gsm_map_PrivateExtensionList_item = -1;  /* PrivateExtension */
157 static int hf_gsm_map_extId = -1;                 /* OBJECT_IDENTIFIER */
158 static int hf_gsm_map_extType = -1;               /* T_extType */
159 static int hf_gsm_map_privateExtensionList = -1;  /* PrivateExtensionList */
160 static int hf_gsm_map_slr_Arg_PCS_Extensions = -1;  /* SLR_Arg_PCS_Extensions */
161 static int hf_gsm_map_na_ESRK_Request = -1;       /* NULL */
162 static int hf_gsm_map_identity = -1;              /* Identity */
163 static int hf_gsm_map_cancellationType = -1;      /* CancellationType */
164 static int hf_gsm_map_imsi_WithLMSI = -1;         /* IMSI_WithLMSI */
165 static int hf_gsm_map_sgsn_Number = -1;           /* ISDN_AddressString */
166 static int hf_gsm_map_freezeTMSI = -1;            /* NULL */
167 static int hf_gsm_map_freezeP_TMSI = -1;          /* NULL */
168 static int hf_gsm_map_tmsi = -1;                  /* TMSI */
169 static int hf_gsm_map_numberOfRequestedVectors = -1;  /* NumberOfRequestedVectors */
170 static int hf_gsm_map_segmentationProhibited = -1;  /* NULL */
171 static int hf_gsm_map_previous_LAI = -1;          /* LAIFixedLength */
172 static int hf_gsm_map_hopCounter = -1;            /* HopCounter */
173 static int hf_gsm_map_authenticationSetList = -1;  /* AuthenticationSetList */
174 static int hf_gsm_map_currentSecurityContext = -1;  /* CurrentSecurityContext */
175 static int hf_gsm_map_tripletList = -1;           /* TripletList */
176 static int hf_gsm_map_quintupletList = -1;        /* QuintupletList */
177 static int hf_gsm_map_TripletList_item = -1;      /* AuthenticationTriplet */
178 static int hf_gsm_map_QuintupletList_item = -1;   /* AuthenticationQuintuplet */
179 static int hf_gsm_map_rand = -1;                  /* RAND */
180 static int hf_gsm_map_sres = -1;                  /* SRES */
181 static int hf_gsm_map_kc = -1;                    /* Kc */
182 static int hf_gsm_map_xres = -1;                  /* XRES */
183 static int hf_gsm_map_ck = -1;                    /* CK */
184 static int hf_gsm_map_ik = -1;                    /* IK */
185 static int hf_gsm_map_autn = -1;                  /* AUTN */
186 static int hf_gsm_map_gsm_SecurityContextData = -1;  /* GSM_SecurityContextData */
187 static int hf_gsm_map_umts_SecurityContextData = -1;  /* UMTS_SecurityContextData */
188 static int hf_gsm_map_cksn = -1;                  /* Cksn */
189 static int hf_gsm_map_ksi = -1;                   /* KSI */
190 static int hf_gsm_map_targetCellId = -1;          /* GlobalCellId */
191 static int hf_gsm_map_ho_NumberNotRequired = -1;  /* NULL */
192 static int hf_gsm_map_bss_APDU = -1;              /* Bss_APDU */
193 static int hf_gsm_map_targetRNCId = -1;           /* RNCId */
194 static int hf_gsm_map_an_APDU = -1;               /* AccessNetworkSignalInfo */
195 static int hf_gsm_map_multipleBearerRequested = -1;  /* NULL */
196 static int hf_gsm_map_integrityProtectionInfo = -1;  /* IntegrityProtectionInformation */
197 static int hf_gsm_map_encryptionInfo = -1;        /* EncryptionInformation */
198 static int hf_gsm_map_radioResourceInformation = -1;  /* RadioResourceInformation */
199 static int hf_gsm_map_allowedGSM_Algorithms = -1;  /* AllowedGSM_Algorithms */
200 static int hf_gsm_map_allowedUMTS_Algorithms = -1;  /* AllowedUMTS_Algorithms */
201 static int hf_gsm_map_radioResourceList = -1;     /* RadioResourceList */
202 static int hf_gsm_map_rab_Id = -1;                /* RAB_Id */
203 static int hf_gsm_map_bssmap_ServiceHandover = -1;  /* BSSMAP_ServiceHandover */
204 static int hf_gsm_map_ranap_ServiceHandover = -1;  /* RANAP_ServiceHandover */
205 static int hf_gsm_map_bssmap_ServiceHandoverList = -1;  /* BSSMAP_ServiceHandoverList */
206 static int hf_gsm_map_asciCallReference = -1;     /* ASCI_CallReference */
207 static int hf_gsm_map_geran_classmark = -1;       /* GERAN_Classmark */
208 static int hf_gsm_map_iuCurrentlyUsedCodec = -1;  /* Codec */
209 static int hf_gsm_map_iuSupportedCodecsList = -1;  /* SupportedCodecsList */
210 static int hf_gsm_map_rab_ConfigurationIndicator = -1;  /* NULL */
211 static int hf_gsm_map_uesbi_Iu = -1;              /* UESBI_Iu */
212 static int hf_gsm_map_BSSMAP_ServiceHandoverList_item = -1;  /* BSSMAP_ServiceHandoverInfo */
213 static int hf_gsm_map_RadioResourceList_item = -1;  /* RadioResource */
214 static int hf_gsm_map_handoverNumber = -1;        /* ISDN_AddressString */
215 static int hf_gsm_map_relocationNumberList = -1;  /* RelocationNumberList */
216 static int hf_gsm_map_multicallBearerInfo = -1;   /* MulticallBearerInfo */
217 static int hf_gsm_map_multipleBearerNotSupported = -1;  /* NULL */
218 static int hf_gsm_map_selectedUMTS_Algorithms = -1;  /* SelectedUMTS_Algorithms */
219 static int hf_gsm_map_chosenRadioResourceInformation = -1;  /* ChosenRadioResourceInformation */
220 static int hf_gsm_map_iuSelectedCodec = -1;       /* Codec */
221 static int hf_gsm_map_iuAvailableCodecsList = -1;  /* CodecList */
222 static int hf_gsm_map_integrityProtectionAlgorithm = -1;  /* ChosenIntegrityProtectionAlgorithm */
223 static int hf_gsm_map_encryptionAlgorithm = -1;   /* ChosenEncryptionAlgorithm */
224 static int hf_gsm_map_chosenChannelInfo = -1;     /* ChosenChannelInfo */
225 static int hf_gsm_map_chosenSpeechVersion = -1;   /* ChosenSpeechVersion */
226 static int hf_gsm_map_RelocationNumberList_item = -1;  /* RelocationNumber */
227 static int hf_gsm_map_selectedGSM_Algorithm = -1;  /* SelectedGSM_Algorithm */
228 static int hf_gsm_map_selectedRab_Id = -1;        /* RAB_Id */
229 static int hf_gsm_map_iUSelectedCodec = -1;       /* Codec */
230 static int hf_gsm_map_utranCodecList = -1;        /* CodecList */
231 static int hf_gsm_map_geranCodecList = -1;        /* CodecList */
232 static int hf_gsm_map_codec1 = -1;                /* Codec */
233 static int hf_gsm_map_codec2 = -1;                /* Codec */
234 static int hf_gsm_map_codec3 = -1;                /* Codec */
235 static int hf_gsm_map_codec4 = -1;                /* Codec */
236 static int hf_gsm_map_codec5 = -1;                /* Codec */
237 static int hf_gsm_map_codec6 = -1;                /* Codec */
238 static int hf_gsm_map_codec7 = -1;                /* Codec */
239 static int hf_gsm_map_codec8 = -1;                /* Codec */
240 static int hf_gsm_map_keyStatus = -1;             /* KeyStatus */
241 static int hf_gsm_map_currentlyUsedCodec = -1;    /* Codec */
242 static int hf_gsm_map_integrityProtectionAlgorithms = -1;  /* PermittedIntegrityProtectionAlgorithms */
243 static int hf_gsm_map_encryptionAlgorithms = -1;  /* PermittedEncryptionAlgorithms */
244 static int hf_gsm_map_targetMSC_Number = -1;      /* ISDN_AddressString */
245 static int hf_gsm_map_immediateResponsePreferred = -1;  /* NULL */
246 static int hf_gsm_map_re_synchronisationInfo = -1;  /* Re_synchronisationInfo */
247 static int hf_gsm_map_requestingNodeType = -1;    /* RequestingNodeType */
248 static int hf_gsm_map_requestingPLMN_Id = -1;     /* PLMN_Id */
249 static int hf_gsm_map_SendAuthenticationInfoRes_item = -1;  /* SendAuthenticationInfoRes_item */
250 static int hf_gsm_map_auts = -1;                  /* AUTS */
251 static int hf_gsm_map_imei = -1;                  /* IMEI */
252 static int hf_gsm_map_requestedEquipmentInfo = -1;  /* RequestedEquipmentInfo */
253 static int hf_gsm_map_equipmentStatus = -1;       /* EquipmentStatus */
254 static int hf_gsm_map_bmuef = -1;                 /* UESBI_Iu */
255 static int hf_gsm_map_uesbi_IuA = -1;             /* UESBI_IuA */
256 static int hf_gsm_map_uesbi_IuB = -1;             /* UESBI_IuB */
257 static int hf_gsm_map_bearerservice = -1;         /* Bearerservice */
258 static int hf_gsm_map_teleservice = -1;           /* Teleservice */
259 static int hf_gsm_map_BasicServiceGroupList_item = -1;  /* BasicService */
260 static int hf_gsm_map_bcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
261 static int hf_gsm_map_serviceKey = -1;            /* ServiceKey */
262 static int hf_gsm_map_gsmSCFAddress = -1;         /* GsmSCF_Address */
263 static int hf_gsm_map_defaultCallHandling = -1;   /* DefaultCallHandling */
264 static int hf_gsm_map_BcsmCamelTDPDataList_item = -1;  /* BcsmCamelTDPData */
265 static int hf_gsm_map_o_BcsmCamelTDPDataList = -1;  /* O_BcsmCamelTDPDataList */
266 static int hf_gsm_map_camelCapabilityHandling = -1;  /* CamelCapabilityHandling */
267 static int hf_gsm_map_notificationToCSE = -1;     /* NULL */
268 static int hf_gsm_map_csiActive = -1;             /* NULL */
269 static int hf_gsm_map_O_BcsmCamelTDPDataList_item = -1;  /* O_BcsmCamelTDPData */
270 static int hf_gsm_map_o_BcsmTriggerDetectionPoint = -1;  /* O_BcsmTriggerDetectionPoint */
271 static int hf_gsm_map_gsmSCF_Address = -1;        /* ISDN_AddressString */
272 static int hf_gsm_map_msisdn = -1;                /* ISDN_AddressString */
273 static int hf_gsm_map_category = -1;              /* Category */
274 static int hf_gsm_map_subscriberStatus = -1;      /* SubscriberStatus */
275 static int hf_gsm_map_bearerserviceList = -1;     /* BearerServiceList */
276 static int hf_gsm_map_teleserviceList = -1;       /* TeleserviceList */
277 static int hf_gsm_map_provisionedSS = -1;         /* Ext_SS_InfoList */
278 static int hf_gsm_map_odb_Data = -1;              /* ODB_Data */
279 static int hf_gsm_map_roamingRestrictionDueToUnsupportedFeature = -1;  /* NULL */
280 static int hf_gsm_map_regionalSubscriptionData = -1;  /* ZoneCodeList */
281 static int hf_gsm_map_vbsSubscriptionData = -1;   /* VBSDataList */
282 static int hf_gsm_map_vgcsSubscriptionData = -1;  /* VGCSDataList */
283 static int hf_gsm_map_vlrCamelSubscriptionInfo = -1;  /* VlrCamelSubscriptionInfo */
284 static int hf_gsm_map_naea_PreferredCI = -1;      /* NAEA_PreferredCI */
285 static int hf_gsm_map_gprsSubscriptionData = -1;  /* GPRSSubscriptionData */
286 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature = -1;  /* NULL */
287 static int hf_gsm_map_networkAccessMode = -1;     /* NetworkAccessMode */
288 static int hf_gsm_map_lsaInformation = -1;        /* LSAInformation */
289 static int hf_gsm_map_lmu_Indicator = -1;         /* NULL */
290 static int hf_gsm_map_lcsInformation = -1;        /* LCSInformation */
291 static int hf_gsm_map_istAlertTimer = -1;         /* IST_AlertTimerValue */
292 static int hf_gsm_map_superChargerSupportedInHLR = -1;  /* AgeIndicator */
293 static int hf_gsm_map_mc_SS_Info = -1;            /* MC_SS_Info */
294 static int hf_gsm_map_cs_AllocationRetentionPriority = -1;  /* CS_AllocationRetentionPriority */
295 static int hf_gsm_map_sgsn_CAMEL_SubscriptionInfo = -1;  /* SGSN_CAMEL_SubscriptionInfo */
296 static int hf_gsm_map_chargingCharacteristics = -1;  /* ChargingCharacteristics */
297 static int hf_gsm_map_accessRestrictionData = -1;  /* AccessRestrictionData */
298 static int hf_gsm_map_gmlc_List = -1;             /* GMLC_List */
299 static int hf_gsm_map_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
300 static int hf_gsm_map_molr_List = -1;             /* MOLR_List */
301 static int hf_gsm_map_add_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
302 static int hf_gsm_map_GMLC_List_item = -1;        /* ISDN_AddressString */
303 static int hf_gsm_map_GPRSDataList_item = -1;     /* PDP_Context */
304 static int hf_gsm_map_pdp_ContextId = -1;         /* ContextId */
305 static int hf_gsm_map_pdp_Type = -1;              /* PDP_Type */
306 static int hf_gsm_map_pdp_Address = -1;           /* PDP_Address */
307 static int hf_gsm_map_qos_Subscribed = -1;        /* QoS_Subscribed */
308 static int hf_gsm_map_vplmnAddressAllowed = -1;   /* NULL */
309 static int hf_gsm_map_apn = -1;                   /* APN */
310 static int hf_gsm_map_ext_QoS_Subscribed = -1;    /* Ext_QoS_Subscribed */
311 static int hf_gsm_map_pdp_ChargingCharacteristics = -1;  /* ChargingCharacteristics */
312 static int hf_gsm_map_ext2_QoS_Subscribed = -1;   /* Ext2_QoS_Subscribed */
313 static int hf_gsm_map_completeDataListIncluded = -1;  /* NULL */
314 static int hf_gsm_map_gprsDataList = -1;          /* GPRSDataList */
315 static int hf_gsm_map_gprs_CSI = -1;              /* GPRS_CSI */
316 static int hf_gsm_map_mo_sms_CSI = -1;            /* SMS_CSI */
317 static int hf_gsm_map_mt_sms_CSI = -1;            /* SMS_CSI */
318 static int hf_gsm_map_mt_smsCAMELTDP_CriteriaList = -1;  /* MT_smsCAMELTDP_CriteriaList */
319 static int hf_gsm_map_mg_csi = -1;                /* MG_CSI */
320 static int hf_gsm_map_gprs_CamelTDPDataList = -1;  /* GPRS_CamelTDPDataList */
321 static int hf_gsm_map_csi_Active = -1;            /* NULL */
322 static int hf_gsm_map_GPRS_CamelTDPDataList_item = -1;  /* GPRS_CamelTDPData */
323 static int hf_gsm_map_gprs_TriggerDetectionPoint = -1;  /* GPRS_TriggerDetectionPoint */
324 static int hf_gsm_map_defaultSessionHandling = -1;  /* DefaultGPRS_Handling */
325 static int hf_gsm_map_LSADataList_item = -1;      /* LSAData */
326 static int hf_gsm_map_lsaIdentity = -1;           /* LSAIdentity */
327 static int hf_gsm_map_lsaAttributes = -1;         /* LSAAttributes */
328 static int hf_gsm_map_lsaActiveModeIndicator = -1;  /* NULL */
329 static int hf_gsm_map_lsaOnlyAccessIndicator = -1;  /* LSAOnlyAccessIndicator */
330 static int hf_gsm_map_lsaDataList = -1;           /* LSADataList */
331 static int hf_gsm_map_bearerServiceList = -1;     /* BearerServiceList */
332 static int hf_gsm_map_ss_List = -1;               /* SS_List */
333 static int hf_gsm_map_odb_GeneralData = -1;       /* ODB_GeneralData */
334 static int hf_gsm_map_regionalSubscriptionResponse = -1;  /* RegionalSubscriptionResponse */
335 static int hf_gsm_map_basicServiceList = -1;      /* BasicServiceList */
336 static int hf_gsm_map_regionalSubscriptionIdentifier = -1;  /* ZoneCode */
337 static int hf_gsm_map_vbsGroupIndication = -1;    /* NULL */
338 static int hf_gsm_map_vgcsGroupIndication = -1;   /* NULL */
339 static int hf_gsm_map_camelSubscriptionInfoWithdraw = -1;  /* NULL */
340 static int hf_gsm_map_gprsSubscriptionDataWithdraw = -1;  /* GPRSSubscriptionDataWithdraw */
341 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1;  /* NULL */
342 static int hf_gsm_map_lsaInformationWithdraw = -1;  /* LSAInformationWithdraw */
343 static int hf_gsm_map_gmlc_ListWithdraw = -1;     /* NULL */
344 static int hf_gsm_map_istInformationWithdraw = -1;  /* NULL */
345 static int hf_gsm_map_specificCSI_Withdraw = -1;  /* SpecificCSI_Withdraw */
346 static int hf_gsm_map_chargingCharacteristicsWithdraw = -1;  /* NULL */
347 static int hf_gsm_map_allGPRSData = -1;           /* NULL */
348 static int hf_gsm_map_contextIdList = -1;         /* ContextIdList */
349 static int hf_gsm_map_ContextIdList_item = -1;    /* ContextId */
350 static int hf_gsm_map_allLSAData = -1;            /* NULL */
351 static int hf_gsm_map_lsaIdentityList = -1;       /* LSAIdentityList */
352 static int hf_gsm_map_LSAIdentityList_item = -1;  /* LSAIdentity */
353 static int hf_gsm_map_BasicServiceList_item = -1;  /* Ext_BasicServiceCode */
354 static int hf_gsm_map_o_CSI = -1;                 /* O_CSI */
355 static int hf_gsm_map_ss_CSI = -1;                /* SS_CSI */
356 static int hf_gsm_map_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
357 static int hf_gsm_map_tif_CSI = -1;               /* NULL */
358 static int hf_gsm_map_m_CSI = -1;                 /* M_CSI */
359 static int hf_gsm_map_vt_CSI = -1;                /* T_CSI */
360 static int hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
361 static int hf_gsm_map_d_CSI = -1;                 /* D_CSI */
362 static int hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item = -1;  /* MT_smsCAMELTDP_Criteria */
363 static int hf_gsm_map_sms_TriggerDetectionPoint = -1;  /* SMS_TriggerDetectionPoint */
364 static int hf_gsm_map_tpdu_TypeCriterion = -1;    /* TPDU_TypeCriterion */
365 static int hf_gsm_map_TPDU_TypeCriterion_item = -1;  /* MT_SMS_TPDU_Type */
366 static int hf_gsm_map_dp_AnalysedInfoCriteriaList = -1;  /* DP_AnalysedInfoCriteriaList */
367 static int hf_gsm_map_DP_AnalysedInfoCriteriaList_item = -1;  /* DP_AnalysedInfoCriterium */
368 static int hf_gsm_map_dialledNumber = -1;         /* ISDN_AddressString */
369 static int hf_gsm_map_ss_CamelData = -1;          /* SS_CamelData */
370 static int hf_gsm_map_ss_EventList = -1;          /* SS_EventList */
371 static int hf_gsm_map_mobilityTriggers = -1;      /* MobilityTriggers */
372 static int hf_gsm_map_BearerServiceList_item = -1;  /* Ext_BearerServiceCode */
373 static int hf_gsm_map_TeleserviceList_item = -1;  /* Ext_TeleserviceCode */
374 static int hf_gsm_map_Ext_SS_InfoList_item = -1;  /* Ext_SS_Info */
375 static int hf_gsm_map_ext_forwardingInfo = -1;    /* Ext_ForwInfo */
376 static int hf_gsm_map_ext_callBarringInfo = -1;   /* Ext_CallBarInfo */
377 static int hf_gsm_map_cug_Info = -1;              /* CUG_Info */
378 static int hf_gsm_map_ext_ss_Data = -1;           /* Ext_SS_Data */
379 static int hf_gsm_map_emlpp_Info = -1;            /* EMLPP_Info */
380 static int hf_gsm_map_ss_Code = -1;               /* SS_Code */
381 static int hf_gsm_map_ext_forwardingFeatureList = -1;  /* Ext_ForwFeatureList */
382 static int hf_gsm_map_Ext_ForwFeatureList_item = -1;  /* Ext_ForwFeature */
383 static int hf_gsm_map_ext_basicService = -1;      /* Ext_BasicServiceCode */
384 static int hf_gsm_map_ext_ss_Status = -1;         /* Ext_SS_Status */
385 static int hf_gsm_map_forwardedToNumber = -1;     /* ISDN_AddressString */
386 static int hf_gsm_map_forwardedToSubaddress = -1;  /* ISDN_SubaddressString */
387 static int hf_gsm_map_ext_forwardingOptions = -1;  /* T_forwardingOptions */
388 static int hf_gsm_map_ext_noReplyConditionTime = -1;  /* Ext_NoRepCondTime */
389 static int hf_gsm_map_longForwardedToNumber = -1;  /* FTN_AddressString */
390 static int hf_gsm_map_ext_callBarringFeatureList = -1;  /* Ext_CallBarFeatureList */
391 static int hf_gsm_map_Ext_CallBarFeatureList_item = -1;  /* Ext_CallBarringFeature */
392 static int hf_gsm_map_ZoneCodeList_item = -1;     /* ZoneCode */
393 static int hf_gsm_map_maximumentitledPriority = -1;  /* EMLPP_Priority */
394 static int hf_gsm_map_defaultPriority = -1;       /* EMLPP_Priority */
395 static int hf_gsm_map_cug_SubscriptionList = -1;  /* CUG_SubscriptionList */
396 static int hf_gsm_map_cug_FeatureList = -1;       /* CUG_FeatureList */
397 static int hf_gsm_map_CUG_SubscriptionList_item = -1;  /* CUG_Subscription */
398 static int hf_gsm_map_cug_Index = -1;             /* CUG_Index */
399 static int hf_gsm_map_cug_Interlock = -1;         /* CUG_Interlock */
400 static int hf_gsm_map_intraCUG_Options = -1;      /* IntraCUG_Options */
401 static int hf_gsm_map_basicServiceGroupList = -1;  /* Ext_BasicServiceGroupList */
402 static int hf_gsm_map_CUG_FeatureList_item = -1;  /* CUG_Feature */
403 static int hf_gsm_map_Ext_BasicServiceGroupList_item = -1;  /* Ext_BasicServiceCode */
404 static int hf_gsm_map_preferentialCUG_Indicator = -1;  /* CUG_Index */
405 static int hf_gsm_map_interCUG_Restrictions = -1;  /* InterCUG_Restrictions */
406 static int hf_gsm_map_ss_SubscriptionOption = -1;  /* SS_SubscriptionOption */
407 static int hf_gsm_map_LCS_PrivacyExceptionList_item = -1;  /* LCS_PrivacyClass */
408 static int hf_gsm_map_notificationToMSUser = -1;  /* NotificationToMSUser */
409 static int hf_gsm_map_externalClientList = -1;    /* ExternalClientList */
410 static int hf_gsm_map_plmnClientList = -1;        /* PLMNClientList */
411 static int hf_gsm_map_ext_externalClientList = -1;  /* Ext_ExternalClientList */
412 static int hf_gsm_map_serviceTypeList = -1;       /* ServiceTypeList */
413 static int hf_gsm_map_ExternalClientList_item = -1;  /* ExternalClient */
414 static int hf_gsm_map_PLMNClientList_item = -1;   /* LCSClientInternalID */
415 static int hf_gsm_map_Ext_ExternalClientList_item = -1;  /* ExternalClient */
416 static int hf_gsm_map_clientIdentity = -1;        /* LCSClientExternalID */
417 static int hf_gsm_map_gmlc_Restriction = -1;      /* GMLC_Restriction */
418 static int hf_gsm_map_ServiceTypeList_item = -1;  /* ServiceType */
419 static int hf_gsm_map_serviceTypeIdentity = -1;   /* LCSServiceTypeID */
420 static int hf_gsm_map_MOLR_List_item = -1;        /* MOLR_Class */
421 static int hf_gsm_map_CallBarringFeatureList_item = -1;  /* CallBarringFeature */
422 static int hf_gsm_map_basicService = -1;          /* BasicServiceCode */
423 static int hf_gsm_map_ss_Status = -1;             /* SS_Status */
424 static int hf_gsm_map_ForwardingFeatureList_item = -1;  /* ForwardingFeature */
425 static int hf_gsm_map_forwardingOptions = -1;     /* ForwardingOptions */
426 static int hf_gsm_map_noReplyConditionTime = -1;  /* NoReplyConditionTime */
427 static int hf_gsm_map_matchType = -1;             /* MatchType */
428 static int hf_gsm_map_destinationNumberList = -1;  /* DestinationNumberList */
429 static int hf_gsm_map_destinationNumberLengthList = -1;  /* DestinationNumberLengthList */
430 static int hf_gsm_map_DestinationNumberList_item = -1;  /* ISDN_AddressString */
431 static int hf_gsm_map_DestinationNumberLengthList_item = -1;  /* INTEGER_1_15 */
432 static int hf_gsm_map_forwardingFeatureList = -1;  /* ForwardingFeatureList */
433 static int hf_gsm_map_callBarringFeatureList = -1;  /* CallBarringFeatureList */
434 static int hf_gsm_map_nbrSB = -1;                 /* MaxMC_Bearers */
435 static int hf_gsm_map_nbrUser = -1;               /* MC_Bearers */
436 static int hf_gsm_map_hlr_List = -1;              /* HLR_List */
437 static int hf_gsm_map_msNotReachable = -1;        /* NULL */
438 static int hf_gsm_map_VBSDataList_item = -1;      /* VoiceBroadcastData */
439 static int hf_gsm_map_VGCSDataList_item = -1;     /* VoiceGroupCallData */
440 static int hf_gsm_map_groupId = -1;               /* GroupId */
441 static int hf_gsm_map_groupid = -1;               /* GroupId */
442 static int hf_gsm_map_broadcastInitEntitlement = -1;  /* NULL */
443 static int hf_gsm_map_traceReference = -1;        /* OCTET_STRING_SIZE_1_2 */
444 static int hf_gsm_map_traceType = -1;             /* INTEGER_0_255 */
445 static int hf_gsm_map_omc_Id = -1;                /* OCTET_STRING_SIZE_1_20 */
446 static int hf_gsm_map_cug_CheckInfo = -1;         /* CUG_CheckInfo */
447 static int hf_gsm_map_numberOfForwarding = -1;    /* NumberOfForwarding */
448 static int hf_gsm_map_interrogationType = -1;     /* InterrogationType */
449 static int hf_gsm_map_or_Interrogation = -1;      /* NULL */
450 static int hf_gsm_map_or_Capability = -1;         /* OR_Phase */
451 static int hf_gsm_map_gmsc_OrGsmSCF_Address = -1;  /* ISDN_AddressString */
452 static int hf_gsm_map_callReferenceNumber = -1;   /* CallReferenceNumber */
453 static int hf_gsm_map_forwardingReason = -1;      /* ForwardingReason */
454 static int hf_gsm_map_ext_basicServiceGroup = -1;  /* Ext_BasicServiceCode */
455 static int hf_gsm_map_networkSignalInfo = -1;     /* ExternalSignalInfo */
456 static int hf_gsm_map_camelInfo = -1;             /* CamelInfo */
457 static int hf_gsm_map_suppressionOfAnnouncement = -1;  /* SuppressionOfAnnouncement */
458 static int hf_gsm_map_alertingPattern = -1;       /* AlertingPattern */
459 static int hf_gsm_map_ccbs_Call = -1;             /* NULL */
460 static int hf_gsm_map_supportedCCBS_Phase = -1;   /* SupportedCCBS_Phase */
461 static int hf_gsm_map_additionalSignalInfo = -1;  /* Ext_ExternalSignalInfo */
462 static int hf_gsm_map_pre_pagingSupported = -1;   /* NULL */
463 static int hf_gsm_map_callDiversionTreatmentIndicator = -1;  /* CallDiversionTreatmentIndicator */
464 static int hf_gsm_map_suppress_VT_CSI = -1;       /* NULL */
465 static int hf_gsm_map_suppressIncomingCallBarring = -1;  /* NULL */
466 static int hf_gsm_map_gsmSCF_InitiatedCall = -1;  /* NULL */
467 static int hf_gsm_map_basicServiceGroup2 = -1;    /* Ext_BasicServiceCode */
468 static int hf_gsm_map_networkSignalInfo2 = -1;    /* ExternalSignalInfo */
469 static int hf_gsm_map_extendedRoutingInfo = -1;   /* ExtendedRoutingInfo */
470 static int hf_gsm_map_cugSubscriptionFlag = -1;   /* NULL */
471 static int hf_gsm_map_subscriberInfo = -1;        /* SubscriberInfo */
472 static int hf_gsm_map_forwardingInterrogationRequired = -1;  /* NULL */
473 static int hf_gsm_map_vmsc_Address = -1;          /* ISDN_AddressString */
474 static int hf_gsm_map_ccbs_Indicators = -1;       /* CCBS_Indicators */
475 static int hf_gsm_map_numberPortabilityStatus = -1;  /* NumberPortabilityStatus */
476 static int hf_gsm_map_supportedCamelPhasesInVMSC = -1;  /* SupportedCamelPhases */
477 static int hf_gsm_map_offeredCamel4CSIsInVMSC = -1;  /* OfferedCamel4CSIs */
478 static int hf_gsm_map_routingInfo2 = -1;          /* RoutingInfo */
479 static int hf_gsm_map_ss_List2 = -1;              /* SS_List */
480 static int hf_gsm_map_basicService2 = -1;         /* Ext_BasicServiceCode */
481 static int hf_gsm_map_allowedServices = -1;       /* AllowedServices */
482 static int hf_gsm_map_unavailabilityCause = -1;   /* UnavailabilityCause */
483 static int hf_gsm_map_releaseResourcesSupported = -1;  /* NULL */
484 static int hf_gsm_map_ext_ProtocolId = -1;        /* Ext_ProtocolId */
485 static int hf_gsm_map_accessNetworkProtocolId = -1;  /* AccessNetworkProtocolId */
486 static int hf_gsm_map_longsignalInfo = -1;        /* LongSignalInfo */
487 static int hf_gsm_map_suppress_T_CSI = -1;        /* NULL */
488 static int hf_gsm_map_HLR_List_item = -1;         /* HLR_Id */
489 static int hf_gsm_map_SS_List_item = -1;          /* SS_Code */
490 static int hf_gsm_map_naea_PreferredCIC = -1;     /* NAEA_CIC */
491 static int hf_gsm_map_externalAddress = -1;       /* ISDN_AddressString */
492 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength = -1;  /* CellGlobalIdOrServiceAreaIdFixedLength */
493 static int hf_gsm_map_laiFixedLength = -1;        /* LAIFixedLength */
494 static int hf_gsm_map_ccbs_Possible = -1;         /* NULL */
495 static int hf_gsm_map_keepCCBS_CallIndicator = -1;  /* NULL */
496 static int hf_gsm_map_roamingNumber = -1;         /* ISDN_AddressString */
497 static int hf_gsm_map_forwardingData = -1;        /* ForwardingData */
498 static int hf_gsm_map_routingInfo = -1;           /* RoutingInfo */
499 static int hf_gsm_map_camelRoutingInfo = -1;      /* CamelRoutingInfo */
500 static int hf_gsm_map_gmscCamelSubscriptionInfo = -1;  /* GmscCamelSubscriptionInfo */
501 static int hf_gsm_map_t_CSI = -1;                 /* T_CSI */
502 static int hf_gsm_map_d_csi = -1;                 /* D_CSI */
503 static int hf_gsm_map_ageOfLocationInformation = -1;  /* AgeOfLocationInformation */
504 static int hf_gsm_map_geographicalInformation = -1;  /* GeographicalInformation */
505 static int hf_gsm_map_vlr_number = -1;            /* ISDN_AddressString */
506 static int hf_gsm_map_locationNumber = -1;        /* LocationNumber */
507 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI = -1;  /* CellGlobalIdOrServiceAreaIdOrLAI */
508 static int hf_gsm_map_selectedLSA_Id = -1;        /* LSAIdentity */
509 static int hf_gsm_map_geodeticInformation = -1;   /* GeodeticInformation */
510 static int hf_gsm_map_currentLocationRetrieved = -1;  /* NULL */
511 static int hf_gsm_map_sai_Present = -1;           /* NULL */
512 static int hf_gsm_map_routeingAreaIdentity = -1;  /* RAIdentity */
513 static int hf_gsm_map_selectedLSAIdentity = -1;   /* LSAIdentity */
514 static int hf_gsm_map_assumedIdle = -1;           /* NULL */
515 static int hf_gsm_map_camelBusy = -1;             /* NULL */
516 static int hf_gsm_map_notProvidedFromVLR = -1;    /* NULL */
517 static int hf_gsm_map_notProvidedFromSGSN = -1;   /* NULL */
518 static int hf_gsm_map_ps_Detached = -1;           /* NULL */
519 static int hf_gsm_map_ps_AttachedNotReachableForPaging = -1;  /* NULL */
520 static int hf_gsm_map_ps_AttachedReachableForPaging = -1;  /* NULL */
521 static int hf_gsm_map_ps_PDP_ActiveNotReachableForPaging = -1;  /* PDP_ContextInfoList */
522 static int hf_gsm_map_ps_PDP_ActiveReachableForPaging = -1;  /* PDP_ContextInfoList */
523 static int hf_gsm_map_netDetNotReachable = -1;    /* NotReachableReason */
524 static int hf_gsm_map_PDP_ContextInfoList_item = -1;  /* PDP_ContextInfo */
525 static int hf_gsm_map_pdp_ContextIdentifier = -1;  /* ContextId */
526 static int hf_gsm_map_pdp_ContextActive = -1;     /* NULL */
527 static int hf_gsm_map_apn_Subscribed = -1;        /* APN */
528 static int hf_gsm_map_apn_InUse = -1;             /* APN */
529 static int hf_gsm_map_nsapi = -1;                 /* NSAPI */
530 static int hf_gsm_map_transactionId = -1;         /* TransactionId */
531 static int hf_gsm_map_teid_ForGnAndGp = -1;       /* TEID */
532 static int hf_gsm_map_teid_ForIu = -1;            /* TEID */
533 static int hf_gsm_map_ggsn_Address = -1;          /* GSN_Address */
534 static int hf_gsm_map_ext_qos_Subscribed = -1;    /* Ext_QoS_Subscribed */
535 static int hf_gsm_map_qos_Requested = -1;         /* Ext_QoS_Subscribed */
536 static int hf_gsm_map_qos_Negotiated = -1;        /* Ext_QoS_Subscribed */
537 static int hf_gsm_map_chargingId = -1;            /* GPRSChargingID */
538 static int hf_gsm_map_rnc_Address = -1;           /* GSN_Address */
539 static int hf_gsm_map_qos2_Subscribed = -1;       /* Ext2_QoS_Subscribed */
540 static int hf_gsm_map_qos2_Requested = -1;        /* Ext2_QoS_Subscribed */
541 static int hf_gsm_map_qos2_Negotiated = -1;       /* Ext2_QoS_Subscribed */
542 static int hf_gsm_map_cug_OutgoingAccess = -1;    /* NULL */
543 static int hf_gsm_map_gsm_BearerCapability = -1;  /* ExternalSignalInfo */
544 static int hf_gsm_map_gmsc_Address = -1;          /* ISDN_AddressString */
545 static int hf_gsm_map_supportedCamelPhasesInInterrogatingNode = -1;  /* SupportedCamelPhases */
546 static int hf_gsm_map_orNotSupportedInGMSC = -1;  /* NULL */
547 static int hf_gsm_map_offeredCamel4CSIsInInterrogatingNode = -1;  /* OfferedCamel4CSIs */
548 static int hf_gsm_map_uu_Data = -1;               /* UU_Data */
549 static int hf_gsm_map_allInformationSent = -1;    /* NULL */
550 static int hf_gsm_map_o_BcsmCamelTDPCriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
551 static int hf_gsm_map_uuIndicator = -1;           /* UUIndicator */
552 static int hf_gsm_map_uui = -1;                   /* UUI */
553 static int hf_gsm_map_uusCFInteraction = -1;      /* NULL */
554 static int hf_gsm_map_isdn_BearerCapability = -1;  /* ExternalSignalInfo */
555 static int hf_gsm_map_call_Direction = -1;        /* CallDirection */
556 static int hf_gsm_map_b_Subscriber_Address = -1;  /* ISDN_AddressString */
557 static int hf_gsm_map_chosenChannel = -1;         /* ExternalSignalInfo */
558 static int hf_gsm_map_lowerLayerCompatibility = -1;  /* ExternalSignalInfo */
559 static int hf_gsm_map_highLayerCompatibility = -1;  /* ExternalSignalInfo */
560 static int hf_gsm_map_sIWFSNumber = -1;           /* ISDN_AddressString */
561 static int hf_gsm_map_channelType = -1;           /* ExternalSignalInfo */
562 static int hf_gsm_map_ccbs_Monitoring = -1;       /* ReportingState */
563 static int hf_gsm_map_ccbs_SubscriberStatus = -1;  /* CCBS_SubscriberStatus */
564 static int hf_gsm_map_eventReportData = -1;       /* EventReportData */
565 static int hf_gsm_map_callReportdata = -1;        /* CallReportData */
566 static int hf_gsm_map_monitoringMode = -1;        /* MonitoringMode */
567 static int hf_gsm_map_callOutcome = -1;           /* CallOutcome */
568 static int hf_gsm_map_callTerminationIndicator = -1;  /* CallTerminationIndicator */
569 static int hf_gsm_map_msrn = -1;                  /* ISDN_AddressString */
570 static int hf_gsm_map_callInfo = -1;              /* ExternalSignalInfo */
571 static int hf_gsm_map_ccbs_Feature = -1;          /* CCBS_Feature */
572 static int hf_gsm_map_translatedB_Number = -1;    /* ISDN_AddressString */
573 static int hf_gsm_map_replaceB_Number = -1;       /* NULL */
574 static int hf_gsm_map_ruf_Outcome = -1;           /* Ruf_Outcome */
575 static int hf_gsm_map_ext_basicServiceGroupList = -1;  /* BasicServiceGroupList */
576 static int hf_gsm_map_cliRestrictionOption = -1;  /* CliRestrictionOption */
577 static int hf_gsm_map_overrideCategory = -1;      /* OverrideCategory */
578 static int hf_gsm_map_forwardedToNumber_addr = -1;  /* AddressString */
579 static int hf_gsm_map_forwardingInfo = -1;        /* ForwardingInfo */
580 static int hf_gsm_map_callBarringInfo = -1;       /* CallBarringInfo */
581 static int hf_gsm_map_ss_Data = -1;               /* SS_Data */
582 static int hf_gsm_map_genericServiceInfo = -1;    /* GenericServiceInfo */
583 static int hf_gsm_map_ussd_DataCodingScheme = -1;  /* USSD_DataCodingScheme */
584 static int hf_gsm_map_ussd_String = -1;           /* USSD_String */
585 static int hf_gsm_map_failureCause = -1;          /* FailureCause */
586 static int hf_gsm_map_re_attempt = -1;            /* BOOLEAN */
587 static int hf_gsm_map_accessType = -1;            /* AccessType */
588 static int hf_gsm_map_ccbs_Data = -1;             /* CCBS_Data */
589 static int hf_gsm_map_serviceIndicator = -1;      /* ServiceIndicator */
590 static int hf_gsm_map_ccbs_Index = -1;            /* CCBS_Index */
591 static int hf_gsm_map_sm_RP_PRI = -1;             /* BOOLEAN */
592 static int hf_gsm_map_serviceCentreAddress = -1;  /* ServiceCentreAddress */
593 static int hf_gsm_map_gprsSupportIndicator = -1;  /* NULL */
594 static int hf_gsm_map_sm_RP_MTI = -1;             /* INTEGER_0_10 */
595 static int hf_gsm_map_sm_RP_SMEA = -1;            /* OCTET_STRING_SIZE_1_12 */
596 static int hf_gsm_map_locationInfoWithLMSI = -1;  /* LocationInfoWithLMSI */
597 static int hf_gsm_map_networkNode_Number = -1;    /* ISDN_AddressString */
598 static int hf_gsm_map_gprsNodeIndicator = -1;     /* NULL */
599 static int hf_gsm_map_additional_Number = -1;     /* Additional_Number */
600 static int hf_gsm_map_sm_RP_DA = -1;              /* Sm_RP_DA */
601 static int hf_gsm_map_sm_RP_OA = -1;              /* Sm_RP_OA */
602 static int hf_gsm_map_sm_RP_UI = -1;              /* Sm_RP_UI */
603 static int hf_gsm_map_serviceCentreAddressOA = -1;  /* ServiceCentreAddress */
604 static int hf_gsm_map_noSM_RP_OA = -1;            /* NULL */
605 static int hf_gsm_map_serviceCentreAddressDA = -1;  /* ServiceCentreAddress */
606 static int hf_gsm_map_noSM_RP_DA = -1;            /* NULL */
607 static int hf_gsm_map_moreMessagesToSend = -1;    /* NULL */
608 static int hf_gsm_map_sm_DeliveryOutcome = -1;    /* Sm_DeliveryOutcome */
609 static int hf_gsm_map_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
610 static int hf_gsm_map_deliveryOutcomeIndicator = -1;  /* NULL */
611 static int hf_gsm_map_additionalSM_DeliveryOutcome = -1;  /* Sm_DeliveryOutcome */
612 static int hf_gsm_map_additionalAbsentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
613 static int hf_gsm_map_storedMSISDN = -1;          /* StoredMSISDN */
614 static int hf_gsm_map_mw_Status = -1;             /* T_mw_Status */
615 static int hf_gsm_map_alertReason = -1;           /* T_alertReason */
616 static int hf_gsm_map_alertReasonIndicator = -1;  /* NULL */
617 static int hf_gsm_map_requestedInfo = -1;         /* RequestedInfo */
618 static int hf_gsm_map_locationInformation = -1;   /* LocationInformation */
619 static int hf_gsm_map_subscriberState = -1;       /* SubscriberState */
620 static int hf_gsm_map_locationInformationGPRS = -1;  /* LocationInformationGPRS */
621 static int hf_gsm_map_ps_SubscriberState = -1;    /* PS_SubscriberState */
622 static int hf_gsm_map_ms_Classmark2 = -1;         /* MS_Classmark2 */
623 static int hf_gsm_map_gprs_MS_Class = -1;         /* GPRSMSClass */
624 static int hf_gsm_map_mnpInfoRes = -1;            /* MNPInfoRes */
625 static int hf_gsm_map_routeingNumber = -1;        /* RouteingNumber */
626 static int hf_gsm_map_mSNetworkCapability = -1;   /* MSNetworkCapability */
627 static int hf_gsm_map_mSRadioAccessCapability = -1;  /* MSRadioAccessCapability */
628 static int hf_gsm_map_locationInformation_flg = -1;  /* NULL */
629 static int hf_gsm_map_subscriberState_flg = -1;   /* NULL */
630 static int hf_gsm_map_currentLocation = -1;       /* NULL */
631 static int hf_gsm_map_requestedDomain = -1;       /* T_requestedDomain */
632 static int hf_gsm_map_imei_flg = -1;              /* NULL */
633 static int hf_gsm_map_ms_classmark = -1;          /* NULL */
634 static int hf_gsm_map_mnpRequestedInfo = -1;      /* NULL */
635 static int hf_gsm_map_subscriberIdentity = -1;    /* SubscriberIdentity */
636 static int hf_gsm_map_requestedSubscriptionInfo = -1;  /* RequestedSubscriptionInfo */
637 static int hf_gsm_map_callForwardingData = -1;    /* CallForwardingData */
638 static int hf_gsm_map_callBarringData = -1;       /* CallBarringData */
639 static int hf_gsm_map_odb_Info = -1;              /* ODB_Info */
640 static int hf_gsm_map_camel_SubscriptionInfo = -1;  /* CAMEL_SubscriptionInfo */
641 static int hf_gsm_map_supportedVLR_CAMEL_Phases = -1;  /* SupportedCamelPhases */
642 static int hf_gsm_map_supportedSGSN_CAMEL_Phases = -1;  /* SupportedCamelPhases */
643 static int hf_gsm_map_offeredCamel4CSIsInVLR = -1;  /* OfferedCamel4CSIs */
644 static int hf_gsm_map_offeredCamel4CSIsInSGSN = -1;  /* OfferedCamel4CSIs */
645 static int hf_gsm_map_requestedSS_Info = -1;      /* SS_ForBS_Code */
646 static int hf_gsm_map_odb = -1;                   /* NULL */
647 static int hf_gsm_map_requestedCAMEL_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
648 static int hf_gsm_map_supportedVLR_CAMEL_Phases_flg = -1;  /* NULL */
649 static int hf_gsm_map_supportedSGSN_CAMEL_Phases_flg = -1;  /* NULL */
650 static int hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo = -1;  /* AdditionalRequestedCAMEL_SubscriptionInfo */
651 static int hf_gsm_map_password = -1;              /* Password */
652 static int hf_gsm_map_wrongPasswordAttemptsCounter = -1;  /* WrongPasswordAttemptsCounter */
653 static int hf_gsm_map_bearerService = -1;         /* BearerServiceCode */
654 static int hf_gsm_map_teleservice_code = -1;      /* TeleserviceCode */
655 static int hf_gsm_map_O_BcsmCamelTDPCriteriaList_item = -1;  /* O_BcsmCamelTDP_Criteria */
656 static int hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_BCSM_CAMEL_TDP_Criteria */
657 static int hf_gsm_map_destinationNumberCriteria = -1;  /* DestinationNumberCriteria */
658 static int hf_gsm_map_basicServiceCriteria = -1;  /* BasicServiceCriteria */
659 static int hf_gsm_map_callTypeCriteria = -1;      /* CallTypeCriteria */
660 static int hf_gsm_map_o_CauseValueCriteria = -1;  /* O_CauseValueCriteria */
661 static int hf_gsm_map_t_BCSM_TriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
662 static int hf_gsm_map_t_CauseValueCriteria = -1;  /* T_CauseValueCriteria */
663 static int hf_gsm_map_maximumEntitledPriority = -1;  /* EMLPP_Priority */
664 static int hf_gsm_map_ccbs_FeatureList = -1;      /* CCBS_FeatureList */
665 static int hf_gsm_map_nbrSN = -1;                 /* MC_Bearers */
666 static int hf_gsm_map_CCBS_FeatureList_item = -1;  /* CCBS_Feature */
667 static int hf_gsm_map_b_subscriberNumber = -1;    /* ISDN_AddressString */
668 static int hf_gsm_map_b_subscriberSubaddress = -1;  /* ISDN_SubaddressString */
669 static int hf_gsm_map_basicServiceGroup = -1;     /* BasicServiceCode */
670 static int hf_gsm_map_T_CauseValueCriteria_item = -1;  /* CauseValue */
671 static int hf_gsm_map_O_CauseValueCriteria_item = -1;  /* CauseValue */
672 static int hf_gsm_map_BasicServiceCriteria_item = -1;  /* Ext_BasicServiceCode */
673 static int hf_gsm_map_modificationRequestFor_CF_Info = -1;  /* ModificationRequestFor_CF_Info */
674 static int hf_gsm_map_modificationRequestFor_CB_Info = -1;  /* ModificationRequestFor_CB_Info */
675 static int hf_gsm_map_modificationRequestFor_CSI = -1;  /* ModificationRequestFor_CSI */
676 static int hf_gsm_map_modificationRequestFor_ODB_data = -1;  /* ModificationRequestFor_ODB_data */
677 static int hf_gsm_map_ss_InfoFor_CSE = -1;        /* Ext_SS_InfoFor_CSE */
678 static int hf_gsm_map_modifyNotificationToCSE = -1;  /* ModificationInstruction */
679 static int hf_gsm_map_odb_data = -1;              /* ODB_Data */
680 static int hf_gsm_map_requestedCamel_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
681 static int hf_gsm_map_modifyCSI_State = -1;       /* ModificationInstruction */
682 static int hf_gsm_map_forwardingInfoFor_CSE = -1;  /* Ext_ForwardingInfoFor_CSE */
683 static int hf_gsm_map_callBarringInfoFor_CSE = -1;  /* Ext_CallBarringInfoFor_CSE */
684 static int hf_gsm_map_eventMet = -1;              /* MM_Code */
685 static int hf_gsm_map_supportedCAMELPhases = -1;  /* SupportedCamelPhases */
686 static int hf_gsm_map_offeredCamel4Functionalities = -1;  /* OfferedCamel4Functionalities */
687 static int hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
688 static int hf_gsm_map_tif_CSI_NotificationToCSE = -1;  /* NULL */
689 static int hf_gsm_map_specificCSIDeletedList = -1;  /* SpecificCSI_Withdraw */
690 static int hf_gsm_map_o_IM_CSI = -1;              /* O_CSI */
691 static int hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
692 static int hf_gsm_map_d_IM_CSI = -1;              /* D_CSI */
693 static int hf_gsm_map_vt_IM_CSI = -1;             /* T_CSI */
694 static int hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
695 static int hf_gsm_map_ext_BearerService = -1;     /* Ext_BearerServiceCode */
696 static int hf_gsm_map_ext_Teleservice = -1;       /* Ext_TeleserviceCode */
697 static int hf_gsm_map_odb_HPLMN_Data = -1;        /* ODB_HPLMN_Data */
698 static int hf_gsm_map_SS_EventList_item = -1;     /* SS_Code */
699 static int hf_gsm_map_t_BcsmCamelTDPDataList = -1;  /* T_BcsmCamelTDPDataList */
700 static int hf_gsm_map_T_BcsmCamelTDPDataList_item = -1;  /* T_BcsmCamelTDPData */
701 static int hf_gsm_map_t_BcsmTriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
702 static int hf_gsm_map_sms_CAMEL_TDP_DataList = -1;  /* SMS_CAMEL_TDP_DataList */
703 static int hf_gsm_map_SMS_CAMEL_TDP_DataList_item = -1;  /* SMS_CAMEL_TDP_Data */
704 static int hf_gsm_map_defaultSMS_Handling = -1;   /* DefaultSMS_Handling */
705 static int hf_gsm_map_MobilityTriggers_item = -1;  /* MM_Code */
706 static int hf_gsm_map_ss_Event = -1;              /* OCTET_STRING_SIZE_1 */
707 static int hf_gsm_map_ss_EventSpecification = -1;  /* T_ss_EventSpecification */
708 static int hf_gsm_map_ss_EventSpecification_item = -1;  /* OCTET_STRING_SIZE_1_20 */
709 static int hf_gsm_map_ext_teleservice = -1;       /* Ext_TeleserviceCode */
710 static int hf_gsm_map_codec_Info = -1;            /* CODEC_Info */
711 static int hf_gsm_map_cipheringAlgorithm = -1;    /* CipheringAlgorithm */
712 static int hf_gsm_map_groupKeyNumber_Vk_Id = -1;  /* GroupKeyNumber */
713 static int hf_gsm_map_groupKey = -1;              /* Kc */
714 static int hf_gsm_map_priority = -1;              /* EMLPP_Priority */
715 static int hf_gsm_map_uplinkFree = -1;            /* NULL */
716 static int hf_gsm_map_vstk = -1;                  /* VSTK */
717 static int hf_gsm_map_vstk_rand = -1;             /* VSTK_RAND */
718 static int hf_gsm_map_groupCallNumber = -1;       /* ISDN_AddressString */
719 static int hf_gsm_map_uplinkRequest = -1;         /* NULL */
720 static int hf_gsm_map_uplinkReleaseIndication = -1;  /* NULL */
721 static int hf_gsm_map_releaseGroupCall = -1;      /* NULL */
722 static int hf_gsm_map_uplinkRequestAck = -1;      /* NULL */
723 static int hf_gsm_map_uplinkRejectCommand = -1;   /* NULL */
724 static int hf_gsm_map_uplinkSeizedCommand = -1;   /* NULL */
725 static int hf_gsm_map_uplinkReleaseCommand = -1;  /* NULL */
726 static int hf_gsm_map_sgsn_Address = -1;          /* GSN_Address */
727 static int hf_gsm_map_sgsn_Capability = -1;       /* SGSN_Capability */
728 static int hf_gsm_map_ps_LCS_NotSupportedByUE = -1;  /* NULL */
729 static int hf_gsm_map_gprsEnhancementsSupportIndicator = -1;  /* NULL */
730 static int hf_gsm_map_smsCallBarringSupportIndicator = -1;  /* NULL */
731 static int hf_gsm_map_ggsn_Number = -1;           /* ISDN_AddressString */
732 static int hf_gsm_map_mobileNotReachableReason = -1;  /* AbsentSubscriberDiagnosticSM */
733 static int hf_gsm_map_locationType = -1;          /* LocationType */
734 static int hf_gsm_map_mlc_Number = -1;            /* ISDN_AddressString */
735 static int hf_gsm_map_lcs_ClientID = -1;          /* LCS_ClientID */
736 static int hf_gsm_map_privacyOverride = -1;       /* NULL */
737 static int hf_gsm_map_lcs_Priority = -1;          /* LCS_Priority */
738 static int hf_gsm_map_lcs_QoS = -1;               /* LCS_QoS */
739 static int hf_gsm_map_supportedGADShapes = -1;    /* SupportedGADShapes */
740 static int hf_gsm_map_lcs_ReferenceNumber = -1;   /* LCS_ReferenceNumber */
741 static int hf_gsm_map_lcsServiceTypeID = -1;      /* LCSServiceTypeID */
742 static int hf_gsm_map_lcsCodeword = -1;           /* LCSCodeword */
743 static int hf_gsm_map_lcs_PrivacyCheck = -1;      /* LCS_PrivacyCheck */
744 static int hf_gsm_map_areaEventInfo = -1;         /* AreaEventInfo */
745 static int hf_gsm_map_h_gmlc_Address = -1;        /* GSN_Address */
746 static int hf_gsm_map_locationEstimateType = -1;  /* LocationEstimateType */
747 static int hf_gsm_map_deferredLocationEventType = -1;  /* DeferredLocationEventType */
748 static int hf_gsm_map_lcsClientType = -1;         /* LCSClientType */
749 static int hf_gsm_map_lcsClientExternalID = -1;   /* LCSClientExternalID */
750 static int hf_gsm_map_lcsClientDialedByMS = -1;   /* AddressString */
751 static int hf_gsm_map_lcsClientInternalID = -1;   /* LCSClientInternalID */
752 static int hf_gsm_map_lcsClientName = -1;         /* LCSClientName */
753 static int hf_gsm_map_lcsAPN = -1;                /* APN */
754 static int hf_gsm_map_lcsRequestorID = -1;        /* LCSRequestorID */
755 static int hf_gsm_map_dataCodingScheme = -1;      /* USSD_DataCodingScheme */
756 static int hf_gsm_map_nameString = -1;            /* NameString */
757 static int hf_gsm_map_lcs_FormatIndicator = -1;   /* LCS_FormatIndicator */
758 static int hf_gsm_map_requestorIDString = -1;     /* RequestorIDString */
759 static int hf_gsm_map_horizontal_accuracy = -1;   /* Horizontal_Accuracy */
760 static int hf_gsm_map_verticalCoordinateRequest = -1;  /* NULL */
761 static int hf_gsm_map_vertical_accuracy = -1;     /* Vertical_Accuracy */
762 static int hf_gsm_map_responseTime = -1;          /* ResponseTime */
763 static int hf_gsm_map_responseTimeCategory = -1;  /* ResponseTimeCategory */
764 static int hf_gsm_map_lcsCodewordString = -1;     /* LCSCodewordString */
765 static int hf_gsm_map_callSessionUnrelated = -1;  /* PrivacyCheckRelatedAction */
766 static int hf_gsm_map_callSessionRelated = -1;    /* PrivacyCheckRelatedAction */
767 static int hf_gsm_map_areaDefinition = -1;        /* AreaDefinition */
768 static int hf_gsm_map_occurrenceInfo = -1;        /* OccurrenceInfo */
769 static int hf_gsm_map_intervalTime = -1;          /* IntervalTime */
770 static int hf_gsm_map_areaList = -1;              /* AreaList */
771 static int hf_gsm_map_AreaList_item = -1;         /* Area */
772 static int hf_gsm_map_areaType = -1;              /* AreaType */
773 static int hf_gsm_map_areaIdentification = -1;    /* AreaIdentification */
774 static int hf_gsm_map_locationEstimate = -1;      /* Ext_GeographicalInformation */
775 static int hf_gsm_map_ageOfLocationEstimate = -1;  /* AgeOfLocationInformation */
776 static int hf_gsm_map_add_LocationEstimate = -1;  /* Add_GeographicalInformation */
777 static int hf_gsm_map_deferredmt_lrResponseIndicator = -1;  /* NULL */
778 static int hf_gsm_map_geranPositioningData = -1;  /* PositioningDataInformation */
779 static int hf_gsm_map_utranPositioningData = -1;  /* UtranPositioningDataInfo */
780 static int hf_gsm_map_cellIdOrSai = -1;           /* CellGlobalIdOrServiceAreaIdOrLAI */
781 static int hf_gsm_map_mlcNumber = -1;             /* ISDN_AddressString */
782 static int hf_gsm_map_targetMS = -1;              /* SubscriberIdentity */
783 static int hf_gsm_map_lcsLocationInfo = -1;       /* LCSLocationInfo */
784 static int hf_gsm_map_ppr_Address = -1;           /* GSN_Address */
785 static int hf_gsm_map_additional_v_gmlc_Address = -1;  /* GSN_Address */
786 static int hf_gsm_map_additional_LCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
787 static int hf_gsm_map_lcs_Event = -1;             /* LCS_Event */
788 static int hf_gsm_map_na_ESRD = -1;               /* ISDN_AddressString */
789 static int hf_gsm_map_na_ESRK = -1;               /* ISDN_AddressString */
790 static int hf_gsm_map_slr_ArgExtensionContainer = -1;  /* SLR_ArgExtensionContainer */
791 static int hf_gsm_map_deferredmt_lrData = -1;     /* Deferredmt_lrData */
792 static int hf_gsm_map_pseudonymIndicator = -1;    /* NULL */
793 static int hf_gsm_map_terminationCause = -1;      /* TerminationCause */
794 static int hf_gsm_map_securityHeader = -1;        /* SecurityHeader */
795 static int hf_gsm_map_protectedPayload = -1;      /* ProtectedPayload */
796 static int hf_gsm_map_securityParametersIndex = -1;  /* SecurityParametersIndex */
797 static int hf_gsm_map_originalComponentIdentifier = -1;  /* OriginalComponentIdentifier */
798 static int hf_gsm_map_initialisationVector = -1;  /* InitialisationVector */
799 static int hf_gsm_map_operationCode = -1;         /* OperationCode */
800 static int hf_gsm_map_errorCode1 = -1;            /* ErrorCode */
801 static int hf_gsm_map_userInfo = -1;              /* NULL */
802 static int hf_gsm_map_localValue2 = -1;           /* INTEGER */
803 static int hf_gsm_map_networkResource = -1;       /* NetworkResource */
804 static int hf_gsm_map_extensibleSystemFailureParam = -1;  /* T_extensibleSystemFailureParam */
805 static int hf_gsm_map_unknownSubscriberDiagnostic = -1;  /* T_unknownSubscriberDiagnostic */
806 static int hf_gsm_map_roamingNotAllowedCause = -1;  /* T_roamingNotAllowedCause */
807 static int hf_gsm_map_absentSubscriberReason = -1;  /* AbsentSubscriberReason */
808 static int hf_gsm_map_ccbs_Busy = -1;             /* NULL */
809 static int hf_gsm_map_gprsConnectionSuspended = -1;  /* NULL */
810 static int hf_gsm_map_callBarringCause = -1;      /* CallBarringCause */
811 static int hf_gsm_map_extensibleCallBarredParam = -1;  /* ExtensibleCallBarredParam */
812 static int hf_gsm_map_unauthorisedMessageOriginator = -1;  /* NULL */
813 static int hf_gsm_map_cug_RejectCause = -1;       /* CUG_RejectCause */
814 static int hf_gsm_map_cug_RejectCause1 = -1;      /* T_cug_RejectCause */
815 static int hf_gsm_map_sm_EnumeratedDeliveryFailureCause = -1;  /* SM_EnumeratedDeliveryFailureCause */
816 static int hf_gsm_map_diagnosticInfo = -1;        /* SignalInfo */
817 static int hf_gsm_map_unauthorizedLCSClient_Diagnostic = -1;  /* T_unauthorizedLCSClient_Diagnostic */
818 static int hf_gsm_map_positionMethodFailure_Diagnostic = -1;  /* PositionMethodFailure_Diagnostic */
819 static int hf_gsm_map_pcsExtensions = -1;         /* PcsExtensions */
820 /* named bits */
821 static int hf_gsm_map_SupportedCamelPhases_phase1 = -1;
822 static int hf_gsm_map_SupportedCamelPhases_phase2 = -1;
823 static int hf_gsm_map_SupportedCamelPhases_phase3 = -1;
824 static int hf_gsm_map_SupportedCamelPhases_phase4 = -1;
825 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1 = -1;
826 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2 = -1;
827 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3 = -1;
828 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4 = -1;
829 static int hf_gsm_map_RequestedEquipmentInfo_equipmentStatus = -1;
830 static int hf_gsm_map_RequestedEquipmentInfo_bmuef = -1;
831 static int hf_gsm_map_ODB_GeneralData_allOG_CallsBarred = -1;
832 static int hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred = -1;
833 static int hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred = -1;
834 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred = -1;
835 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred = -1;
836 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred = -1;
837 static int hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred = -1;
838 static int hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred = -1;
839 static int hf_gsm_map_ODB_GeneralData_ss_AccessBarred = -1;
840 static int hf_gsm_map_ODB_GeneralData_allECT_Barred = -1;
841 static int hf_gsm_map_ODB_GeneralData_chargeableECT_Barred = -1;
842 static int hf_gsm_map_ODB_GeneralData_internationalECT_Barred = -1;
843 static int hf_gsm_map_ODB_GeneralData_interzonalECT_Barred = -1;
844 static int hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred = -1;
845 static int hf_gsm_map_ODB_GeneralData_multipleECT_Barred = -1;
846 static int hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred = -1;
847 static int hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred = -1;
848 static int hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred = -1;
849 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred = -1;
850 static int hf_gsm_map_ODB_GeneralData_allIC_CallsBarred = -1;
851 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred = -1;
852 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred = -1;
853 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred = -1;
854 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred = -1;
855 static int hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred = -1;
856 static int hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred = -1;
857 static int hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred = -1;
858 static int hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred = -1;
859 static int hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred = -1;
860 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1 = -1;
861 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2 = -1;
862 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3 = -1;
863 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4 = -1;
864 static int hf_gsm_map_AccessRestrictionData_utranNotAllowed = -1;
865 static int hf_gsm_map_AccessRestrictionData_geranNotAllowed = -1;
866 static int hf_gsm_map_SpecificCSI_Withdraw_o_csi = -1;
867 static int hf_gsm_map_SpecificCSI_Withdraw_ss_csi = -1;
868 static int hf_gsm_map_SpecificCSI_Withdraw_tif_csi = -1;
869 static int hf_gsm_map_SpecificCSI_Withdraw_d_csi = -1;
870 static int hf_gsm_map_SpecificCSI_Withdraw_vt_csi = -1;
871 static int hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi = -1;
872 static int hf_gsm_map_SpecificCSI_Withdraw_m_csi = -1;
873 static int hf_gsm_map_SpecificCSI_Withdraw_gprs_csi = -1;
874 static int hf_gsm_map_SpecificCSI_Withdraw_t_csi = -1;
875 static int hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi = -1;
876 static int hf_gsm_map_SpecificCSI_Withdraw_mg_csi = -1;
877 static int hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI = -1;
878 static int hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI = -1;
879 static int hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI = -1;
880 static int hf_gsm_map_AllowedServices_firstServiceAllowed = -1;
881 static int hf_gsm_map_AllowedServices_secondServiceAllowed = -1;
882 static int hf_gsm_map_ServiceIndicator_clir_invoked = -1;
883 static int hf_gsm_map_ServiceIndicator_camel_invoked = -1;
884 static int hf_gsm_map_T_mw_Status_scAddressNotIncluded = -1;
885 static int hf_gsm_map_T_mw_Status_mnrfSet = -1;
886 static int hf_gsm_map_T_mw_Status_mcefSet = -1;
887 static int hf_gsm_map_T_mw_Status_mnrgSet = -1;
888 static int hf_gsm_map_OfferedCamel4CSIs_o_csi = -1;
889 static int hf_gsm_map_OfferedCamel4CSIs_d_csi = -1;
890 static int hf_gsm_map_OfferedCamel4CSIs_vt_csi = -1;
891 static int hf_gsm_map_OfferedCamel4CSIs_t_csi = -1;
892 static int hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi = -1;
893 static int hf_gsm_map_OfferedCamel4CSIs_mg_csi = -1;
894 static int hf_gsm_map_OfferedCamel4CSIs_psi_enhancements = -1;
895 static int hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt = -1;
896 static int hf_gsm_map_OfferedCamel4Functionalities_splitLeg = -1;
897 static int hf_gsm_map_OfferedCamel4Functionalities_moveLeg = -1;
898 static int hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg = -1;
899 static int hf_gsm_map_OfferedCamel4Functionalities_entityReleased = -1;
900 static int hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument = -1;
901 static int hf_gsm_map_OfferedCamel4Functionalities_playTone = -1;
902 static int hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall = -1;
903 static int hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator = -1;
904 static int hf_gsm_map_OfferedCamel4Functionalities_alertingDP = -1;
905 static int hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting = -1;
906 static int hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP = -1;
907 static int hf_gsm_map_OfferedCamel4Functionalities_or_Interactions = -1;
908 static int hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements = -1;
909 static int hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements = -1;
910 static int hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices = -1;
911 static int hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices = -1;
912 static int hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP = -1;
913 static int hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP = -1;
914 static int hf_gsm_map_DeferredLocationEventType_msAvailable = -1;
915 static int hf_gsm_map_DeferredLocationEventType_enteringIntoArea = -1;
916 static int hf_gsm_map_DeferredLocationEventType_leavingFromArea = -1;
917 static int hf_gsm_map_DeferredLocationEventType_beingInsideArea = -1;
918 static int hf_gsm_map_SupportedGADShapes_ellipsoidPoint = -1;
919 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle = -1;
920 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse = -1;
921 static int hf_gsm_map_SupportedGADShapes_polygon = -1;
922 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude = -1;
923 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid = -1;
924 static int hf_gsm_map_SupportedGADShapes_ellipsoidArc = -1;
925
926 /*--- End of included file: packet-gsm_map-hf.c ---*/
927 #line 97 "packet-gsm_map-template.c"
928
929 /* Initialize the subtree pointers */
930 static gint ett_gsm_map = -1;
931 static gint ett_gsm_map_InvokeId = -1;
932 static gint ett_gsm_map_InvokePDU = -1;
933 static gint ett_gsm_map_ReturnResultPDU = -1;
934 static gint ett_gsm_map_ReturnErrorPDU = -1;
935 static gint ett_gsm_map_ReturnResult_result = -1;
936 static gint ett_gsm_map_ReturnError_result = -1;
937 static gint ett_gsm_map_GSMMAPPDU = -1;
938
939
940 /*--- Included file: packet-gsm_map-ett.c ---*/
941 #line 1 "packet-gsm_map-ett.c"
942 static gint ett_gsm_map_Component = -1;
943 static gint ett_gsm_map_Invoke = -1;
944 static gint ett_gsm_map_ReturnResult = -1;
945 static gint ett_gsm_map_T_resultretres = -1;
946 static gint ett_gsm_map_ReturnError = -1;
947 static gint ett_gsm_map_Reject = -1;
948 static gint ett_gsm_map_T_invokeIDRej = -1;
949 static gint ett_gsm_map_T_problem = -1;
950 static gint ett_gsm_map_OPERATION = -1;
951 static gint ett_gsm_map_ERROR = -1;
952 static gint ett_gsm_map_Bss_APDU = -1;
953 static gint ett_gsm_map_SupportedCamelPhases = -1;
954 static gint ett_gsm_map_UpdateLocationArg = -1;
955 static gint ett_gsm_map_UpdateLocationRes = -1;
956 static gint ett_gsm_map_VLR_Capability = -1;
957 static gint ett_gsm_map_SuperChargerInfo = -1;
958 static gint ett_gsm_map_SupportedLCS_CapabilitySets = -1;
959 static gint ett_gsm_map_ADD_Info = -1;
960 static gint ett_gsm_map_PrivateExtensionList = -1;
961 static gint ett_gsm_map_PrivateExtension = -1;
962 static gint ett_gsm_map_SLR_ArgExtensionContainer = -1;
963 static gint ett_gsm_map_PcsExtensions = -1;
964 static gint ett_gsm_map_SLR_Arg_PCS_Extensions = -1;
965 static gint ett_gsm_map_CancelLocationArg = -1;
966 static gint ett_gsm_map_CancelLocationArgV2 = -1;
967 static gint ett_gsm_map_CancelLocationRes = -1;
968 static gint ett_gsm_map_PurgeMSArg = -1;
969 static gint ett_gsm_map_PurgeMSRes = -1;
970 static gint ett_gsm_map_SendIdentificationArg = -1;
971 static gint ett_gsm_map_SendIdentificationRes = -1;
972 static gint ett_gsm_map_AuthenticationSetList = -1;
973 static gint ett_gsm_map_TripletList = -1;
974 static gint ett_gsm_map_QuintupletList = -1;
975 static gint ett_gsm_map_AuthenticationTriplet = -1;
976 static gint ett_gsm_map_AuthenticationQuintuplet = -1;
977 static gint ett_gsm_map_CurrentSecurityContext = -1;
978 static gint ett_gsm_map_GSM_SecurityContextData = -1;
979 static gint ett_gsm_map_UMTS_SecurityContextData = -1;
980 static gint ett_gsm_map_PrepareHO_Arg = -1;
981 static gint ett_gsm_map_PrepareHO_ArgV3 = -1;
982 static gint ett_gsm_map_BSSMAP_ServiceHandoverList = -1;
983 static gint ett_gsm_map_BSSMAP_ServiceHandoverInfo = -1;
984 static gint ett_gsm_map_RadioResourceList = -1;
985 static gint ett_gsm_map_RadioResource = -1;
986 static gint ett_gsm_map_PrepareHO_Res = -1;
987 static gint ett_gsm_map_PrepareHO_ResV3 = -1;
988 static gint ett_gsm_map_SelectedUMTS_Algorithms = -1;
989 static gint ett_gsm_map_ChosenRadioResourceInformation = -1;
990 static gint ett_gsm_map_SendEndSignalArgV3 = -1;
991 static gint ett_gsm_map_SendEndSignalRes = -1;
992 static gint ett_gsm_map_RelocationNumberList = -1;
993 static gint ett_gsm_map_RelocationNumber = -1;
994 static gint ett_gsm_map_ProcessAccessSignallingArgV3 = -1;
995 static gint ett_gsm_map_SupportedCodecsList = -1;
996 static gint ett_gsm_map_CodecList = -1;
997 static gint ett_gsm_map_ForwardAccessSignallingArgV3 = -1;
998 static gint ett_gsm_map_AllowedUMTS_Algorithms = -1;
999 static gint ett_gsm_map_PrepareSubsequentHOArg = -1;
1000 static gint ett_gsm_map_PrepareSubsequentHOArgV3 = -1;
1001 static gint ett_gsm_map_PrepareSubsequentHOResV3 = -1;
1002 static gint ett_gsm_map_SendAuthenticationInfoArgV2 = -1;
1003 static gint ett_gsm_map_SendAuthenticationInfoRes = -1;
1004 static gint ett_gsm_map_SendAuthenticationInfoRes_item = -1;
1005 static gint ett_gsm_map_SendAuthenticationInfoResV3 = -1;
1006 static gint ett_gsm_map_Re_synchronisationInfo = -1;
1007 static gint ett_gsm_map_CheckIMEIArgV2 = -1;
1008 static gint ett_gsm_map_CheckIMEIRes = -1;
1009 static gint ett_gsm_map_RequestedEquipmentInfo = -1;
1010 static gint ett_gsm_map_UESBI_Iu = -1;
1011 static gint ett_gsm_map_BasicService = -1;
1012 static gint ett_gsm_map_BasicServiceGroupList = -1;
1013 static gint ett_gsm_map_ODB_GeneralData = -1;
1014 static gint ett_gsm_map_ODB_HPLMN_Data = -1;
1015 static gint ett_gsm_map_BcsmCamelTDPData = -1;
1016 static gint ett_gsm_map_BcsmCamelTDPDataList = -1;
1017 static gint ett_gsm_map_O_CSI = -1;
1018 static gint ett_gsm_map_O_BcsmCamelTDPDataList = -1;
1019 static gint ett_gsm_map_O_BcsmCamelTDPData = -1;
1020 static gint ett_gsm_map_InsertSubscriberDataArg = -1;
1021 static gint ett_gsm_map_AccessRestrictionData = -1;
1022 static gint ett_gsm_map_LCSInformation = -1;
1023 static gint ett_gsm_map_GMLC_List = -1;
1024 static gint ett_gsm_map_GPRSDataList = -1;
1025 static gint ett_gsm_map_PDP_Context = -1;
1026 static gint ett_gsm_map_GPRSSubscriptionData = -1;
1027 static gint ett_gsm_map_SGSN_CAMEL_SubscriptionInfo = -1;
1028 static gint ett_gsm_map_GPRS_CSI = -1;
1029 static gint ett_gsm_map_GPRS_CamelTDPDataList = -1;
1030 static gint ett_gsm_map_GPRS_CamelTDPData = -1;
1031 static gint ett_gsm_map_LSADataList = -1;
1032 static gint ett_gsm_map_LSAData = -1;
1033 static gint ett_gsm_map_LSAInformation = -1;
1034 static gint ett_gsm_map_InsertSubscriberDataRes = -1;
1035 static gint ett_gsm_map_DeleteSubscriberDataArg = -1;
1036 static gint ett_gsm_map_DeleteSubscriberDataRes = -1;
1037 static gint ett_gsm_map_SpecificCSI_Withdraw = -1;
1038 static gint ett_gsm_map_GPRSSubscriptionDataWithdraw = -1;
1039 static gint ett_gsm_map_ContextIdList = -1;
1040 static gint ett_gsm_map_LSAInformationWithdraw = -1;
1041 static gint ett_gsm_map_LSAIdentityList = -1;
1042 static gint ett_gsm_map_BasicServiceList = -1;
1043 static gint ett_gsm_map_VlrCamelSubscriptionInfo = -1;
1044 static gint ett_gsm_map_MT_smsCAMELTDP_CriteriaList = -1;
1045 static gint ett_gsm_map_MT_smsCAMELTDP_Criteria = -1;
1046 static gint ett_gsm_map_TPDU_TypeCriterion = -1;
1047 static gint ett_gsm_map_D_CSI = -1;
1048 static gint ett_gsm_map_DP_AnalysedInfoCriteriaList = -1;
1049 static gint ett_gsm_map_DP_AnalysedInfoCriterium = -1;
1050 static gint ett_gsm_map_SS_CSI = -1;
1051 static gint ett_gsm_map_SS_CamelData = -1;
1052 static gint ett_gsm_map_MG_CSI = -1;
1053 static gint ett_gsm_map_BearerServiceList = -1;
1054 static gint ett_gsm_map_TeleserviceList = -1;
1055 static gint ett_gsm_map_Ext_SS_InfoList = -1;
1056 static gint ett_gsm_map_Ext_SS_Info = -1;
1057 static gint ett_gsm_map_Ext_ForwInfo = -1;
1058 static gint ett_gsm_map_Ext_ForwFeatureList = -1;
1059 static gint ett_gsm_map_Ext_ForwFeature = -1;
1060 static gint ett_gsm_map_Ext_CallBarInfo = -1;
1061 static gint ett_gsm_map_Ext_CallBarFeatureList = -1;
1062 static gint ett_gsm_map_Ext_CallBarringFeature = -1;
1063 static gint ett_gsm_map_ZoneCodeList = -1;
1064 static gint ett_gsm_map_EMLPP_Info = -1;
1065 static gint ett_gsm_map_CUG_Info = -1;
1066 static gint ett_gsm_map_CUG_SubscriptionList = -1;
1067 static gint ett_gsm_map_CUG_Subscription = -1;
1068 static gint ett_gsm_map_CUG_FeatureList = -1;
1069 static gint ett_gsm_map_Ext_BasicServiceGroupList = -1;
1070 static gint ett_gsm_map_CUG_Feature = -1;
1071 static gint ett_gsm_map_Ext_SS_Data = -1;
1072 static gint ett_gsm_map_LCS_PrivacyExceptionList = -1;
1073 static gint ett_gsm_map_LCS_PrivacyClass = -1;
1074 static gint ett_gsm_map_ExternalClientList = -1;
1075 static gint ett_gsm_map_PLMNClientList = -1;
1076 static gint ett_gsm_map_Ext_ExternalClientList = -1;
1077 static gint ett_gsm_map_ExternalClient = -1;
1078 static gint ett_gsm_map_ServiceTypeList = -1;
1079 static gint ett_gsm_map_ServiceType = -1;
1080 static gint ett_gsm_map_MOLR_List = -1;
1081 static gint ett_gsm_map_MOLR_Class = -1;
1082 static gint ett_gsm_map_CallBarringFeatureList = -1;
1083 static gint ett_gsm_map_CallBarringFeature = -1;
1084 static gint ett_gsm_map_ForwardingFeatureList = -1;
1085 static gint ett_gsm_map_ForwardingFeature = -1;
1086 static gint ett_gsm_map_DestinationNumberCriteria = -1;
1087 static gint ett_gsm_map_DestinationNumberList = -1;
1088 static gint ett_gsm_map_DestinationNumberLengthList = -1;
1089 static gint ett_gsm_map_ForwardingInfo = -1;
1090 static gint ett_gsm_map_CallBarringInfo = -1;
1091 static gint ett_gsm_map_MC_SS_Info = -1;
1092 static gint ett_gsm_map_ResetArg = -1;
1093 static gint ett_gsm_map_RestoreDataArg = -1;
1094 static gint ett_gsm_map_RestoreDataRes = -1;
1095 static gint ett_gsm_map_VBSDataList = -1;
1096 static gint ett_gsm_map_VGCSDataList = -1;
1097 static gint ett_gsm_map_VoiceGroupCallData = -1;
1098 static gint ett_gsm_map_VoiceBroadcastData = -1;
1099 static gint ett_gsm_map_ActivateTraceModeArg = -1;
1100 static gint ett_gsm_map_ActivateTraceModeRes = -1;
1101 static gint ett_gsm_map_DeactivateTraceModeArg = -1;
1102 static gint ett_gsm_map_DeactivateTraceModeRes = -1;
1103 static gint ett_gsm_map_SendRoutingInfoArg = -1;
1104 static gint ett_gsm_map_SendRoutingInfoRes = -1;
1105 static gint ett_gsm_map_ExternalSignalInfo = -1;
1106 static gint ett_gsm_map_Ext_ExternalSignalInfo = -1;
1107 static gint ett_gsm_map_AccessNetworkSignalInfo = -1;
1108 static gint ett_gsm_map_CamelInfo = -1;
1109 static gint ett_gsm_map_Identity = -1;
1110 static gint ett_gsm_map_IMSI_WithLMSI = -1;
1111 static gint ett_gsm_map_SubscriberId = -1;
1112 static gint ett_gsm_map_HLR_List = -1;
1113 static gint ett_gsm_map_SS_List = -1;
1114 static gint ett_gsm_map_NAEA_PreferredCI = -1;
1115 static gint ett_gsm_map_SubscriberIdentity = -1;
1116 static gint ett_gsm_map_LCSClientExternalID = -1;
1117 static gint ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI = -1;
1118 static gint ett_gsm_map_AllowedServices = -1;
1119 static gint ett_gsm_map_CCBS_Indicators = -1;
1120 static gint ett_gsm_map_RoutingInfo = -1;
1121 static gint ett_gsm_map_ExtendedRoutingInfo = -1;
1122 static gint ett_gsm_map_CamelRoutingInfo = -1;
1123 static gint ett_gsm_map_GmscCamelSubscriptionInfo = -1;
1124 static gint ett_gsm_map_LocationInformation = -1;
1125 static gint ett_gsm_map_LocationInformationGPRS = -1;
1126 static gint ett_gsm_map_SubscriberState = -1;
1127 static gint ett_gsm_map_PS_SubscriberState = -1;
1128 static gint ett_gsm_map_PDP_ContextInfoList = -1;
1129 static gint ett_gsm_map_PDP_ContextInfo = -1;
1130 static gint ett_gsm_map_CUG_CheckInfo = -1;
1131 static gint ett_gsm_map_ForwardingData = -1;
1132 static gint ett_gsm_map_ProvideRoamingNumberArg = -1;
1133 static gint ett_gsm_map_ProvideRoamingNumberRes = -1;
1134 static gint ett_gsm_map_ResumeCallHandlingArg = -1;
1135 static gint ett_gsm_map_ResumeCallHandlingRes = -1;
1136 static gint ett_gsm_map_UU_Data = -1;
1137 static gint ett_gsm_map_ProvideSIWFSNumberArg = -1;
1138 static gint ett_gsm_map_ProvideSIWFSNumberRes = -1;
1139 static gint ett_gsm_map_SIWFSSignallingModifyArg = -1;
1140 static gint ett_gsm_map_SIWFSSignallingModifyRes = -1;
1141 static gint ett_gsm_map_SetReportingStateArg = -1;
1142 static gint ett_gsm_map_SetReportingStateRes = -1;
1143 static gint ett_gsm_map_StatusReportArg = -1;
1144 static gint ett_gsm_map_StatusReportRes = -1;
1145 static gint ett_gsm_map_EventReportData = -1;
1146 static gint ett_gsm_map_CallReportData = -1;
1147 static gint ett_gsm_map_IST_AlertArg = -1;
1148 static gint ett_gsm_map_IST_AlertRes = -1;
1149 static gint ett_gsm_map_IST_CommandArg = -1;
1150 static gint ett_gsm_map_IST_CommandRes = -1;
1151 static gint ett_gsm_map_ReleaseResourcesArg = -1;
1152 static gint ett_gsm_map_ReleaseResourcesRes = -1;
1153 static gint ett_gsm_map_RemoteUserFreeArg = -1;
1154 static gint ett_gsm_map_RemoteUserFreeRes = -1;
1155 static gint ett_gsm_map_SS_Data = -1;
1156 static gint ett_gsm_map_SS_SubscriptionOption = -1;
1157 static gint ett_gsm_map_RegisterSS_Arg = -1;
1158 static gint ett_gsm_map_SS_Info = -1;
1159 static gint ett_gsm_map_InterrogateSS_Res = -1;
1160 static gint ett_gsm_map_Ussd_Arg = -1;
1161 static gint ett_gsm_map_Ussd_Res = -1;
1162 static gint ett_gsm_map_AuthenticationFailureReportArg = -1;
1163 static gint ett_gsm_map_AuthenticationFailureReportRes = -1;
1164 static gint ett_gsm_map_RegisterCC_EntryArg = -1;
1165 static gint ett_gsm_map_RegisterCC_EntryRes = -1;
1166 static gint ett_gsm_map_CCBS_Data = -1;
1167 static gint ett_gsm_map_ServiceIndicator = -1;
1168 static gint ett_gsm_map_EraseCC_EntryArg = -1;
1169 static gint ett_gsm_map_EraseCC_EntryRes = -1;
1170 static gint ett_gsm_map_RoutingInfoForSMArg = -1;
1171 static gint ett_gsm_map_RoutingInfoForSM_Res = -1;
1172 static gint ett_gsm_map_LocationInfoWithLMSI = -1;
1173 static gint ett_gsm_map_Additional_Number = -1;
1174 static gint ett_gsm_map_Mo_forwardSM_Arg = -1;
1175 static gint ett_gsm_map_Mo_forwardSM_Res = -1;
1176 static gint ett_gsm_map_Sm_RP_OA = -1;
1177 static gint ett_gsm_map_Sm_RP_DA = -1;
1178 static gint ett_gsm_map_Mt_forwardSM_Arg = -1;
1179 static gint ett_gsm_map_Mt_forwardSM_Res = -1;
1180 static gint ett_gsm_map_ReportSM_DeliveryStatusArg = -1;
1181 static gint ett_gsm_map_ReportSM_DeliveryStatusRes = -1;
1182 static gint ett_gsm_map_InformServiceCentreArg = -1;
1183 static gint ett_gsm_map_T_mw_Status = -1;
1184 static gint ett_gsm_map_AlertServiceCentreArg = -1;
1185 static gint ett_gsm_map_ReadyForSM_Arg = -1;
1186 static gint ett_gsm_map_ReadyForSM_Res = -1;
1187 static gint ett_gsm_map_ProvideSubscriberInfoArg = -1;
1188 static gint ett_gsm_map_ProvideSubscriberInfoRes = -1;
1189 static gint ett_gsm_map_SubscriberInfo = -1;
1190 static gint ett_gsm_map_MNPInfoRes = -1;
1191 static gint ett_gsm_map_GPRSMSClass = -1;
1192 static gint ett_gsm_map_RequestedInfo = -1;
1193 static gint ett_gsm_map_AnyTimeInterrogationArg = -1;
1194 static gint ett_gsm_map_AnyTimeInterrogationRes = -1;
1195 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationArg = -1;
1196 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationRes = -1;
1197 static gint ett_gsm_map_RequestedSubscriptionInfo = -1;
1198 static gint ett_gsm_map_CallForwardingData = -1;
1199 static gint ett_gsm_map_CallBarringData = -1;
1200 static gint ett_gsm_map_BasicServiceCode = -1;
1201 static gint ett_gsm_map_O_BcsmCamelTDPCriteriaList = -1;
1202 static gint ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList = -1;
1203 static gint ett_gsm_map_O_BcsmCamelTDP_Criteria = -1;
1204 static gint ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria = -1;
1205 static gint ett_gsm_map_OfferedCamel4CSIs = -1;
1206 static gint ett_gsm_map_OfferedCamel4Functionalities = -1;
1207 static gint ett_gsm_map_SS_ForBS_Code = -1;
1208 static gint ett_gsm_map_GenericServiceInfo = -1;
1209 static gint ett_gsm_map_CCBS_FeatureList = -1;
1210 static gint ett_gsm_map_CCBS_Feature = -1;
1211 static gint ett_gsm_map_T_CauseValueCriteria = -1;
1212 static gint ett_gsm_map_O_CauseValueCriteria = -1;
1213 static gint ett_gsm_map_BasicServiceCriteria = -1;
1214 static gint ett_gsm_map_AnyTimeModificationArg = -1;
1215 static gint ett_gsm_map_AnyTimeModificationRes = -1;
1216 static gint ett_gsm_map_ModificationRequestFor_CF_Info = -1;
1217 static gint ett_gsm_map_ModificationRequestFor_CB_Info = -1;
1218 static gint ett_gsm_map_ModificationRequestFor_ODB_data = -1;
1219 static gint ett_gsm_map_ModificationRequestFor_CSI = -1;
1220 static gint ett_gsm_map_Ext_SS_InfoFor_CSE = -1;
1221 static gint ett_gsm_map_NoteSubscriberDataModifiedArg = -1;
1222 static gint ett_gsm_map_NoteSubscriberDataModifiedRes = -1;
1223 static gint ett_gsm_map_NoteMM_EventArg = -1;
1224 static gint ett_gsm_map_NoteMM_EventRes = -1;
1225 static gint ett_gsm_map_CAMEL_SubscriptionInfo = -1;
1226 static gint ett_gsm_map_Ext_ForwardingInfoFor_CSE = -1;
1227 static gint ett_gsm_map_Ext_BasicServiceCode = -1;
1228 static gint ett_gsm_map_Ext_CallBarringInfoFor_CSE = -1;
1229 static gint ett_gsm_map_ODB_Info = -1;
1230 static gint ett_gsm_map_ODB_Data = -1;
1231 static gint ett_gsm_map_M_CSI = -1;
1232 static gint ett_gsm_map_SS_EventList = -1;
1233 static gint ett_gsm_map_T_CSI = -1;
1234 static gint ett_gsm_map_T_BcsmCamelTDPDataList = -1;
1235 static gint ett_gsm_map_T_BcsmCamelTDPData = -1;
1236 static gint ett_gsm_map_SMS_CSI = -1;
1237 static gint ett_gsm_map_SMS_CAMEL_TDP_DataList = -1;
1238 static gint ett_gsm_map_SMS_CAMEL_TDP_Data = -1;
1239 static gint ett_gsm_map_MobilityTriggers = -1;
1240 static gint ett_gsm_map_Ss_InvocationNotificationArg = -1;
1241 static gint ett_gsm_map_T_ss_EventSpecification = -1;
1242 static gint ett_gsm_map_Ss_InvocationNotificationRes = -1;
1243 static gint ett_gsm_map_PrepareGroupCallArg = -1;
1244 static gint ett_gsm_map_PrepareGroupCallRes = -1;
1245 static gint ett_gsm_map_SendGroupCallEndSignalArg = -1;
1246 static gint ett_gsm_map_SendGroupCallEndSignalRes = -1;
1247 static gint ett_gsm_map_ProcessGroupCallSignallingArg = -1;
1248 static gint ett_gsm_map_ForwardGroupCallSignallingArg = -1;
1249 static gint ett_gsm_map_UpdateGprsLocationArg = -1;
1250 static gint ett_gsm_map_UpdateGprsLocationRes = -1;
1251 static gint ett_gsm_map_SGSN_Capability = -1;
1252 static gint ett_gsm_map_SendRoutingInfoForGprsArg = -1;
1253 static gint ett_gsm_map_SendRoutingInfoForGprsRes = -1;
1254 static gint ett_gsm_map_FailureReportArg = -1;
1255 static gint ett_gsm_map_FailureReportRes = -1;
1256 static gint ett_gsm_map_NoteMsPresentForGprsArg = -1;
1257 static gint ett_gsm_map_NoteMsPresentForGprsRes = -1;
1258 static gint ett_gsm_map_ProvideSubscriberLocation_Arg = -1;
1259 static gint ett_gsm_map_LocationType = -1;
1260 static gint ett_gsm_map_DeferredLocationEventType = -1;
1261 static gint ett_gsm_map_LCS_ClientID = -1;
1262 static gint ett_gsm_map_LCSClientName = -1;
1263 static gint ett_gsm_map_LCSRequestorID = -1;
1264 static gint ett_gsm_map_LCS_QoS = -1;
1265 static gint ett_gsm_map_ResponseTime = -1;
1266 static gint ett_gsm_map_SupportedGADShapes = -1;
1267 static gint ett_gsm_map_LCSCodeword = -1;
1268 static gint ett_gsm_map_LCS_PrivacyCheck = -1;
1269 static gint ett_gsm_map_AreaEventInfo = -1;
1270 static gint ett_gsm_map_AreaDefinition = -1;
1271 static gint ett_gsm_map_AreaList = -1;
1272 static gint ett_gsm_map_Area = -1;
1273 static gint ett_gsm_map_ProvideSubscriberLocation_Res = -1;
1274 static gint ett_gsm_map_TargetMS = -1;
1275 static gint ett_gsm_map_RoutingInfoForLCS_Arg = -1;
1276 static gint ett_gsm_map_RoutingInfoForLCS_Res = -1;
1277 static gint ett_gsm_map_LCSLocationInfo = -1;
1278 static gint ett_gsm_map_SubscriberLocationReport_Arg = -1;
1279 static gint ett_gsm_map_Deferredmt_lrData = -1;
1280 static gint ett_gsm_map_SubscriberLocationReport_Res = -1;
1281 static gint ett_gsm_map_SecureTransportArg = -1;
1282 static gint ett_gsm_map_SecureTransportRes = -1;
1283 static gint ett_gsm_map_SecurityHeader = -1;
1284 static gint ett_gsm_map_OriginalComponentIdentifier = -1;
1285 static gint ett_gsm_map_OperationCode = -1;
1286 static gint ett_gsm_map_ErrorCode = -1;
1287 static gint ett_gsm_map_SystemFailureParam = -1;
1288 static gint ett_gsm_map_T_extensibleSystemFailureParam = -1;
1289 static gint ett_gsm_map_DataMissingParam = -1;
1290 static gint ett_gsm_map_UnexpectedDataParam = -1;
1291 static gint ett_gsm_map_FacilityNotSupParam = -1;
1292 static gint ett_gsm_map_OR_NotAllowedParam = -1;
1293 static gint ett_gsm_map_IncompatibleTerminalParam = -1;
1294 static gint ett_gsm_map_ResourceLimitationParam = -1;
1295 static gint ett_gsm_map_UnknownSubscriberParam = -1;
1296 static gint ett_gsm_map_NumberChangedParam = -1;
1297 static gint ett_gsm_map_UnidentifiedSubParam = -1;
1298 static gint ett_gsm_map_RoamingNotAllowedParam = -1;
1299 static gint ett_gsm_map_IllegalSubscriberParam = -1;
1300 static gint ett_gsm_map_IllegalEquipmentParam = -1;
1301 static gint ett_gsm_map_BearerServNotProvParam = -1;
1302 static gint ett_gsm_map_TeleservNotProvParam = -1;
1303 static gint ett_gsm_map_TracingBufferFullParam = -1;
1304 static gint ett_gsm_map_NoRoamingNbParam = -1;
1305 static gint ett_gsm_map_AbsentSubscriberParam = -1;
1306 static gint ett_gsm_map_BusySubscriberParam = -1;
1307 static gint ett_gsm_map_NoSubscriberReplyParam = -1;
1308 static gint ett_gsm_map_ForwardingViolationParam = -1;
1309 static gint ett_gsm_map_ForwardingFailedParam = -1;
1310 static gint ett_gsm_map_ATI_NotAllowedParam = -1;
1311 static gint ett_gsm_map_ATSI_NotAllowedParam = -1;
1312 static gint ett_gsm_map_ATM_NotAllowedParam = -1;
1313 static gint ett_gsm_map_IllegalSS_OperationParam = -1;
1314 static gint ett_gsm_map_SS_NotAvailableParam = -1;
1315 static gint ett_gsm_map_SS_SubscriptionViolationParam = -1;
1316 static gint ett_gsm_map_InformationNotAvailableParam = -1;
1317 static gint ett_gsm_map_SubBusyForMT_SMS_Param = -1;
1318 static gint ett_gsm_map_CallBarredParam = -1;
1319 static gint ett_gsm_map_ExtensibleCallBarredParam = -1;
1320 static gint ett_gsm_map_CUG_RejectParam = -1;
1321 static gint ett_gsm_map_Or_NotAllowedParam = -1;
1322 static gint ett_gsm_map_Cug_RejectParam = -1;
1323 static gint ett_gsm_map_NoGroupCallNbParam = -1;
1324 static gint ett_gsm_map_SS_IncompatibilityCause = -1;
1325 static gint ett_gsm_map_ShortTermDenialParam = -1;
1326 static gint ett_gsm_map_LongTermDenialParam = -1;
1327 static gint ett_gsm_map_SM_DeliveryFailureCause = -1;
1328 static gint ett_gsm_map_MessageWaitListFullParam = -1;
1329 static gint ett_gsm_map_AbsentSubscriberSM_Param = -1;
1330 static gint ett_gsm_map_UnauthorizedRequestingNetwork_Param = -1;
1331 static gint ett_gsm_map_UnauthorizedLCSClient_Param = -1;
1332 static gint ett_gsm_map_PositionMethodFailure_Param = -1;
1333 static gint ett_gsm_map_UnknownOrUnreachableLCSClient_Param = -1;
1334 static gint ett_gsm_map_MM_EventNotSupported_Param = -1;
1335 static gint ett_gsm_map_TargetCellOutsideGCA_Param = -1;
1336 static gint ett_gsm_map_SecureTransportErrorParam = -1;
1337 static gint ett_gsm_map_ExtensionContainer = -1;
1338
1339 /*--- End of included file: packet-gsm_map-ett.c ---*/
1340 #line 109 "packet-gsm_map-template.c"
1341
1342 static dissector_table_t        sms_dissector_table;    /* SMS TPDU */
1343 static dissector_handle_t data_handle;
1344
1345 /* Preferenc settings default */
1346 #define MAX_SSN 254
1347 static range_t *global_ssn_range;
1348 static range_t *ssn_range;
1349 dissector_handle_t      map_handle;
1350
1351 /* Global variables */
1352 static guint32 opcode=0;
1353 static guint32 errorCode;
1354 static proto_tree *top_tree;
1355 static int application_context_version;
1356 gint protocolId;
1357 gint AccessNetworkProtocolId;
1358 static int gsm_map_tap = -1;
1359
1360 /* Forward declarations */
1361 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
1362 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
1363 static int dissect_returnErrorData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
1364
1365
1366 char*
1367 unpack_digits(tvbuff_t *tvb, int offset){
1368
1369         int length;
1370         guint8 octet;
1371         int i=0;
1372         char *digit_str;
1373
1374         length = tvb_length(tvb);
1375         if (length < offset)
1376                 return "";
1377         digit_str = ep_alloc((length - offset)*2+1);
1378
1379         while ( offset < length ){
1380
1381                 octet = tvb_get_guint8(tvb,offset);
1382                 digit_str[i] = ((octet & 0x0f) + '0');
1383                 i++;
1384
1385                 /*
1386                  * unpack second value in byte
1387                  */
1388                 octet = octet >> 4;
1389
1390                 if (octet == 0x0f)      /* odd number bytes - hit filler */
1391                         break;
1392
1393                 digit_str[i] = ((octet & 0x0f) + '0');
1394                 i++;
1395                 offset++;
1396
1397         }
1398         digit_str[i]= '\0';
1399         return digit_str;
1400 }
1401
1402
1403
1404 /*--- Included file: packet-gsm_map-fn.c ---*/
1405 #line 1 "packet-gsm_map-fn.c"
1406 /*--- Fields for imported types ---*/
1407
1408
1409
1410
1411 static int
1412 dissect_gsm_map_InvokeIdType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1413   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1414                                   NULL);
1415
1416   return offset;
1417 }
1418 static int dissect_invokeID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1419   return dissect_gsm_map_InvokeIdType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeID);
1420 }
1421 static int dissect_linkedID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1422   return dissect_gsm_map_InvokeIdType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_linkedID);
1423 }
1424 static int dissect_derivable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1425   return dissect_gsm_map_InvokeIdType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_derivable);
1426 }
1427
1428
1429 static const value_string gsm_map_OperationLocalvalue_vals[] = {
1430   {   2, "updateLocation" },
1431   {   3, "cancelLocation" },
1432   {   4, "provideRoamingNumber" },
1433   {   5, "noteSubscriberDataModified" },
1434   {   6, "resumeCallHandling" },
1435   {   7, "insertSubscriberData" },
1436   {   8, "deleteSubscriberData" },
1437   {   9, "sendParameters" },
1438   {  10, "registerSS" },
1439   {  11, "eraseSS" },
1440   {  12, "activateSS" },
1441   {  13, "deactivateSS" },
1442   {  14, "interrogateSS" },
1443   {  15, "authenticationFailureReport" },
1444   {  17, "registerPassword" },
1445   {  18, "getPassword" },
1446   {  19, "processUnstructuredSS-Data" },
1447   {  20, "releaseResources" },
1448   {  22, "sendRoutingInfo" },
1449   {  23, "updateGprsLocation" },
1450   {  24, "sendRoutingInfoForGprs" },
1451   {  25, "failureReport" },
1452   {  26, "noteMsPresentForGprs" },
1453   {  28, "performHandover" },
1454   {  29, "sendEndSignal" },
1455   {  30, "performSubsequentHandover" },
1456   {  31, "provideSIWFSNumber" },
1457   {  32, "sIWFSSignallingModify" },
1458   {  33, "processAccessSignalling" },
1459   {  34, "forwardAccessSignalling" },
1460   {  35, "noteInternalHandover" },
1461   {  37, "reset" },
1462   {  38, "forwardCheckSS" },
1463   {  39, "prepareGroupCall" },
1464   {  40, "sendGroupCallEndSignal" },
1465   {  41, "processGroupCallSignalling" },
1466   {  42, "forwardGroupCallSignalling" },
1467   {  43, "checkIMEI" },
1468   {  44, "mt-forwardSM" },
1469   {  45, "sendRoutingInfoForSM" },
1470   {  46, "mo-forwardSM" },
1471   {  47, "reportSM-DeliveryStatus" },
1472   {  48, "noteSubscriberPresent" },
1473   {  49, "alertServiceCentreWithoutResult" },
1474   {  50, "activateTraceMode" },
1475   {  51, "deactivateTraceMode" },
1476   {  52, "traceSubscriberActivity" },
1477   {  54, "beginSubscriberActivity" },
1478   {  55, "sendIdentification" },
1479   {  56, "sendAuthenticationInfo" },
1480   {  57, "restoreData" },
1481   {  58, "sendIMSI" },
1482   {  59, "processUnstructuredSS-Request" },
1483   {  60, "unstructuredSS-Request" },
1484   {  61, "unstructuredSS-Notify" },
1485   {  62, "anyTimeSubscriptionInterrogation" },
1486   {  63, "informServiceCentre" },
1487   {  64, "alertServiceCentre" },
1488   {  65, "anyTimeModification" },
1489   {  66, "readyForSM" },
1490   {  67, "purgeMS" },
1491   {  68, "prepareHandover" },
1492   {  69, "prepareSubsequentHandover" },
1493   {  70, "provideSubscriberInfo" },
1494   {  71, "anyTimeInterrogation" },
1495   {  72, "ss-InvocationNotification" },
1496   {  73, "setReportingState" },
1497   {  74, "statusReport" },
1498   {  75, "remoteUserFree" },
1499   {  76, "registerCC-Entry" },
1500   {  77, "eraseCC-Entry" },
1501   {  78, "secureTransportClass1" },
1502   {  79, "secureTransportClass2" },
1503   {  80, "secureTransportClass3" },
1504   {  81, "secureTransportClass4" },
1505   {  83, "provideSubscriberLocation" },
1506   {  85, "sendRoutingInfoForLCS" },
1507   {  86, "subscriberLocationReport" },
1508   {  87, "ist-Alert" },
1509   {  88, "ist-Command" },
1510   {  89, "noteMM-Event" },
1511   { 0, NULL }
1512 };
1513
1514
1515 static int
1516 dissect_gsm_map_OperationLocalvalue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1517 #line 137 "gsmmap.cnf"
1518
1519   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1520                                   &opcode);
1521  
1522   if (check_col(pinfo->cinfo, COL_INFO)){
1523     col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
1524   }
1525
1526
1527
1528   return offset;
1529 }
1530 static int dissect_localValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1531   return dissect_gsm_map_OperationLocalvalue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue);
1532 }
1533
1534
1535
1536 static int
1537 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_) {
1538   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1539
1540   return offset;
1541 }
1542 static int dissect_globalValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1543   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_globalValue);
1544 }
1545 static int dissect_extId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1546   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extId);
1547 }
1548
1549
1550 static const value_string gsm_map_OPERATION_vals[] = {
1551   {   0, "localValue" },
1552   {   1, "globalValue" },
1553   { 0, NULL }
1554 };
1555
1556 static const ber_choice_t OPERATION_choice[] = {
1557   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue },
1558   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
1559   { 0, 0, 0, 0, NULL }
1560 };
1561
1562 static int
1563 dissect_gsm_map_OPERATION(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1564   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1565                                  OPERATION_choice, hf_index, ett_gsm_map_OPERATION,
1566                                  NULL);
1567
1568   return offset;
1569 }
1570 static int dissect_opCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1571   return dissect_gsm_map_OPERATION(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_opCode);
1572 }
1573
1574
1575
1576 static int
1577 dissect_gsm_map_InvokeParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1578 #line 124 "gsmmap.cnf"
1579         offset = dissect_invokeData(pinfo, tree, tvb, offset);
1580
1581
1582
1583   return offset;
1584 }
1585 static int dissect_invokeparameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1586   return dissect_gsm_map_InvokeParameter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeparameter);
1587 }
1588
1589
1590 static const ber_sequence_t Invoke_sequence[] = {
1591   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeID },
1592   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_linkedID_impl },
1593   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_opCode },
1594   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_invokeparameter },
1595   { 0, 0, 0, NULL }
1596 };
1597
1598 static int
1599 dissect_gsm_map_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1600   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1601                                    Invoke_sequence, hf_index, ett_gsm_map_Invoke);
1602
1603   return offset;
1604 }
1605 static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1606   return dissect_gsm_map_Invoke(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invoke);
1607 }
1608
1609
1610
1611 static int
1612 dissect_gsm_map_ReturnResultParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1613 #line 127 "gsmmap.cnf"
1614         offset = dissect_returnResultData(pinfo, tree, tvb, offset);
1615
1616
1617
1618   return offset;
1619 }
1620 static int dissect_returnparameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1621   return dissect_gsm_map_ReturnResultParameter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_returnparameter);
1622 }
1623
1624
1625 static const ber_sequence_t T_resultretres_sequence[] = {
1626   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_opCode },
1627   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_returnparameter },
1628   { 0, 0, 0, NULL }
1629 };
1630
1631 static int
1632 dissect_gsm_map_T_resultretres(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1633   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1634                                    T_resultretres_sequence, hf_index, ett_gsm_map_T_resultretres);
1635
1636   return offset;
1637 }
1638 static int dissect_resultretres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1639   return dissect_gsm_map_T_resultretres(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_resultretres);
1640 }
1641
1642
1643 static const ber_sequence_t ReturnResult_sequence[] = {
1644   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeID },
1645   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_resultretres },
1646   { 0, 0, 0, NULL }
1647 };
1648
1649 static int
1650 dissect_gsm_map_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1651   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1652                                    ReturnResult_sequence, hf_index, ett_gsm_map_ReturnResult);
1653
1654   return offset;
1655 }
1656 static int dissect_returnResultLast_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1657   return dissect_gsm_map_ReturnResult(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResultLast);
1658 }
1659
1660
1661 static const value_string gsm_map_LocalErrorcode_vals[] = {
1662   {  34, "systemFailure" },
1663   {  35, "dataMissing" },
1664   {  36, "unexpectedDataValue" },
1665   {  21, "facilityNotSupported" },
1666   {  28, "incompatibleTerminal" },
1667   {  51, "resourceLimitation" },
1668   {   1, "unknownSubscriber" },
1669   {  44, "numberChanged" },
1670   {   3, "unknownMSC" },
1671   {   5, "unidentifiedSubscriber" },
1672   {   7, "unknownEquipment" },
1673   {   8, "roamingNotAllowed" },
1674   {   9, "illegalSubscriber" },
1675   {  12, "illegalEquipment" },
1676   {  10, "bearerServiceNotProvisioned" },
1677   {  11, "teleserviceNotProvisioned" },
1678   {  25, "noHandoverNumberAvailable" },
1679   {  26, "subsequentHandoverFailure" },
1680   {  42, "targetCellOutsideGroupCallArea" },
1681   {  40, "tracingBufferFull" },
1682   {  39, "noRoamingNumberAvailable" },
1683   {  27, "absentSubscriber" },
1684   {  45, "busySubscriber" },
1685   {  46, "noSubscriberReply" },
1686   {  13, "callBarred" },
1687   {  14, "forwardingViolation" },
1688   {  47, "forwardingFailed" },
1689   {  15, "cug-Reject" },
1690   {  48, "or-NotAllowed" },
1691   {  49, "ati-NotAllowed" },
1692   {  60, "atsi-NotAllowed" },
1693   {  61, "atm-NotAllowed" },
1694   {  62, "informationNotAvailabl" },
1695   {  16, "illegalSS-Operation" },
1696   {  17, "ss-ErrorStatus" },
1697   {  18, "ss-NotAvailable" },
1698   {  19, "ss-SubscriptionViolatio" },
1699   {  20, "ss-Incompatibility" },
1700   {  71, "unknownAlphabe" },
1701   {  72, "ussd-Busy" },
1702   {  37, "pw-RegistrationFailur" },
1703   {  38, "negativePW-Check" },
1704   {  43, "numberOfPW-AttemptsViolation" },
1705   {  29, "shortTermDenial" },
1706   {  30, "longTermDenial" },
1707   {  31, "subscriberBusyForMT-SMS" },
1708   {  32, "sm-DeliveryFailure" },
1709   {  33, "messageWaitingListFull" },
1710   {   6, "absentSubscriberSM" },
1711   {  50, "noGroupCallNumberAvailable" },
1712   {  52, "unauthorizedRequestingNetwork" },
1713   {  53, "unauthorizedLCSClient" },
1714   {  54, "positionMethodFailure" },
1715   {  58, "unknownOrUnreachableLCSClient" },
1716   {  59, "mm-EventNotSupported" },
1717   {   4, "secureTransportError" },
1718   { 0, NULL }
1719 };
1720
1721
1722 static int
1723 dissect_gsm_map_LocalErrorcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1724   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1725                                   &errorCode);
1726
1727   return offset;
1728 }
1729 static int dissect_localValue1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1730   return dissect_gsm_map_LocalErrorcode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue1);
1731 }
1732
1733
1734 static const value_string gsm_map_ERROR_vals[] = {
1735   {   0, "localValue" },
1736   {   1, "globalValue" },
1737   { 0, NULL }
1738 };
1739
1740 static const ber_choice_t ERROR_choice[] = {
1741   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue1 },
1742   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
1743   { 0, 0, 0, 0, NULL }
1744 };
1745
1746 static int
1747 dissect_gsm_map_ERROR(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1748   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1749                                  ERROR_choice, hf_index, ett_gsm_map_ERROR,
1750                                  NULL);
1751
1752   return offset;
1753 }
1754 static int dissect_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1755   return dissect_gsm_map_ERROR(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_errorCode);
1756 }
1757
1758
1759
1760 static int
1761 dissect_gsm_map_ReturnErrorParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1762 #line 130 "gsmmap.cnf"
1763         offset = dissect_returnErrorData(pinfo, tree, tvb, offset);
1764
1765
1766
1767   return offset;
1768 }
1769 static int dissect_parameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1770   return dissect_gsm_map_ReturnErrorParameter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_parameter);
1771 }
1772
1773
1774 static const ber_sequence_t ReturnError_sequence[] = {
1775   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeID },
1776   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_errorCode },
1777   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_parameter },
1778   { 0, 0, 0, NULL }
1779 };
1780
1781 static int
1782 dissect_gsm_map_ReturnError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1783   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1784                                    ReturnError_sequence, hf_index, ett_gsm_map_ReturnError);
1785
1786   return offset;
1787 }
1788 static int dissect_returnError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1789   return dissect_gsm_map_ReturnError(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnError);
1790 }
1791
1792
1793
1794 static int
1795 dissect_gsm_map_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1796   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
1797
1798   return offset;
1799 }
1800 static int dissect_not_derivable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1801   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_not_derivable);
1802 }
1803 static int dissect_informPreviousNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1804   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_informPreviousNetworkEntity);
1805 }
1806 static int dissect_cs_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1807   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_LCS_NotSupportedByUE);
1808 }
1809 static int dissect_add_Capability(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1810   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_add_Capability);
1811 }
1812 static int dissect_solsaSupportIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1813   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1814 }
1815 static int dissect_solsaSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1816   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1817 }
1818 static int dissect_longFTN_Supported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1819   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longFTN_Supported);
1820 }
1821 static int dissect_sendSubscriberData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1822   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sendSubscriberData);
1823 }
1824 static int dissect_skipSubscriberDataUpdate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1825   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_skipSubscriberDataUpdate);
1826 }
1827 static int dissect_na_ESRK_Request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1828   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK_Request);
1829 }
1830 static int dissect_freezeTMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1831   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeTMSI);
1832 }
1833 static int dissect_freezeP_TMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1834   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeP_TMSI);
1835 }
1836 static int dissect_segmentationProhibited(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1837   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_segmentationProhibited);
1838 }
1839 static int dissect_ho_NumberNotRequired(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1840   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ho_NumberNotRequired);
1841 }
1842 static int dissect_multipleBearerRequested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1843   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerRequested);
1844 }
1845 static int dissect_rab_ConfigurationIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1846   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1847 }
1848 static int dissect_rab_ConfigurationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1849   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1850 }
1851 static int dissect_multipleBearerNotSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1852   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerNotSupported);
1853 }
1854 static int dissect_immediateResponsePreferred_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1855   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_immediateResponsePreferred);
1856 }
1857 static int dissect_notificationToCSE(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1858   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1859 }
1860 static int dissect_notificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1861   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1862 }
1863 static int dissect_csiActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1864   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csiActive);
1865 }
1866 static int dissect_roamingRestrictionDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1867   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictionDueToUnsupportedFeature);
1868 }
1869 static int dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1870   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature);
1871 }
1872 static int dissect_lmu_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1873   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmu_Indicator);
1874 }
1875 static int dissect_vplmnAddressAllowed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1876   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vplmnAddressAllowed);
1877 }
1878 static int dissect_completeDataListIncluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1879   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_completeDataListIncluded);
1880 }
1881 static int dissect_csi_Active_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1882   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csi_Active);
1883 }
1884 static int dissect_lsaActiveModeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1885   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaActiveModeIndicator);
1886 }
1887 static int dissect_vbsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1888   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsGroupIndication);
1889 }
1890 static int dissect_vgcsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1891   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsGroupIndication);
1892 }
1893 static int dissect_camelSubscriptionInfoWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1894   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelSubscriptionInfoWithdraw);
1895 }
1896 static int dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1897   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature);
1898 }
1899 static int dissect_gmlc_ListWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1900   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_ListWithdraw);
1901 }
1902 static int dissect_istInformationWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1903   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_istInformationWithdraw);
1904 }
1905 static int dissect_istInformationWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1906   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istInformationWithdraw);
1907 }
1908 static int dissect_chargingCharacteristicsWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1909   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristicsWithdraw);
1910 }
1911 static int dissect_allGPRSData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1912   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allGPRSData);
1913 }
1914 static int dissect_allLSAData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1915   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allLSAData);
1916 }
1917 static int dissect_tif_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1918   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI);
1919 }
1920 static int dissect_msNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1921   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msNotReachable);
1922 }
1923 static int dissect_broadcastInitEntitlement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1924   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_broadcastInitEntitlement);
1925 }
1926 static int dissect_or_Interrogation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1927   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Interrogation);
1928 }
1929 static int dissect_ccbs_Call_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1930   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Call);
1931 }
1932 static int dissect_pre_pagingSupported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1933   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pre_pagingSupported);
1934 }
1935 static int dissect_suppress_VT_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1936   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_VT_CSI);
1937 }
1938 static int dissect_suppress_VT_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1939   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_VT_CSI);
1940 }
1941 static int dissect_suppressIncomingCallBarring(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1942   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppressIncomingCallBarring);
1943 }
1944 static int dissect_gsmSCF_InitiatedCall(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1945   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_InitiatedCall);
1946 }
1947 static int dissect_cugSubscriptionFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1948   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cugSubscriptionFlag);
1949 }
1950 static int dissect_forwardingInterrogationRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1951   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInterrogationRequired);
1952 }
1953 static int dissect_releaseResourcesSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1954   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_releaseResourcesSupported);
1955 }
1956 static int dissect_releaseResourcesSupported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1957   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseResourcesSupported);
1958 }
1959 static int dissect_suppress_T_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1960   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_T_CSI);
1961 }
1962 static int dissect_ccbs_Possible_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1963   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Possible);
1964 }
1965 static int dissect_keepCCBS_CallIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1966   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_keepCCBS_CallIndicator);
1967 }
1968 static int dissect_currentLocationRetrieved(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1969   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
1970 }
1971 static int dissect_currentLocationRetrieved_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1972   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
1973 }
1974 static int dissect_sai_Present(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1975   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
1976 }
1977 static int dissect_sai_Present_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1978   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
1979 }
1980 static int dissect_assumedIdle_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1981   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_assumedIdle);
1982 }
1983 static int dissect_camelBusy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1984   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelBusy);
1985 }
1986 static int dissect_notProvidedFromVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1987   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromVLR);
1988 }
1989 static int dissect_notProvidedFromSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1990   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromSGSN);
1991 }
1992 static int dissect_ps_Detached_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1993   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_Detached);
1994 }
1995 static int dissect_ps_AttachedNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1996   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedNotReachableForPaging);
1997 }
1998 static int dissect_ps_AttachedReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1999   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedReachableForPaging);
2000 }
2001 static int dissect_pdp_ContextActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2002   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextActive);
2003 }
2004 static int dissect_cug_OutgoingAccess(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2005   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_OutgoingAccess);
2006 }
2007 static int dissect_orNotSupportedInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2008   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_orNotSupportedInGMSC);
2009 }
2010 static int dissect_allInformationSent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2011   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
2012 }
2013 static int dissect_allInformationSent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2014   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
2015 }
2016 static int dissect_uusCFInteraction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2017   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uusCFInteraction);
2018 }
2019 static int dissect_replaceB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2020   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_replaceB_Number);
2021 }
2022 static int dissect_gprsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2023   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSupportIndicator);
2024 }
2025 static int dissect_gprsNodeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2026   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsNodeIndicator);
2027 }
2028 static int dissect_noSM_RP_OA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2029   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_OA);
2030 }
2031 static int dissect_noSM_RP_DA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2032   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_DA);
2033 }
2034 static int dissect_moreMessagesToSend(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2035   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_moreMessagesToSend);
2036 }
2037 static int dissect_deliveryOutcomeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2038   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deliveryOutcomeIndicator);
2039 }
2040 static int dissect_alertReasonIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2041   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReasonIndicator);
2042 }
2043 static int dissect_locationInformation_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2044   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation_flg);
2045 }
2046 static int dissect_subscriberState_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2047   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState_flg);
2048 }
2049 static int dissect_currentLocation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2050   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocation);
2051 }
2052 static int dissect_imei_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2053   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei_flg);
2054 }
2055 static int dissect_ms_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2056   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_classmark);
2057 }
2058 static int dissect_mnpRequestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2059   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpRequestedInfo);
2060 }
2061 static int dissect_odb_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2062   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb);
2063 }
2064 static int dissect_supportedVLR_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2065   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases_flg);
2066 }
2067 static int dissect_supportedSGSN_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2068   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases_flg);
2069 }
2070 static int dissect_tif_CSI_NotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2071   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI_NotificationToCSE);
2072 }
2073 static int dissect_uplinkFree_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2074   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkFree);
2075 }
2076 static int dissect_uplinkRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2077   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequest);
2078 }
2079 static int dissect_uplinkReleaseIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2080   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseIndication);
2081 }
2082 static int dissect_releaseGroupCall_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2083   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseGroupCall);
2084 }
2085 static int dissect_uplinkRequestAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2086   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequestAck);
2087 }
2088 static int dissect_uplinkRejectCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2089   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRejectCommand);
2090 }
2091 static int dissect_uplinkSeizedCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2092   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkSeizedCommand);
2093 }
2094 static int dissect_uplinkReleaseCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2095   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseCommand);
2096 }
2097 static int dissect_ps_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2098   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_LCS_NotSupportedByUE);
2099 }
2100 static int dissect_gprsEnhancementsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2101   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsEnhancementsSupportIndicator);
2102 }
2103 static int dissect_smsCallBarringSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2104   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_smsCallBarringSupportIndicator);
2105 }
2106 static int dissect_privacyOverride_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2107   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privacyOverride);
2108 }
2109 static int dissect_verticalCoordinateRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2110   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_verticalCoordinateRequest);
2111 }
2112 static int dissect_deferredmt_lrResponseIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2113   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredmt_lrResponseIndicator);
2114 }
2115 static int dissect_pseudonymIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2116   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pseudonymIndicator);
2117 }
2118 static int dissect_userInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2119   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_userInfo);
2120 }
2121 static int dissect_ccbs_Busy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2122   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Busy);
2123 }
2124 static int dissect_gprsConnectionSuspended(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2125   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsConnectionSuspended);
2126 }
2127 static int dissect_unauthorisedMessageOriginator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2128   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorisedMessageOriginator);
2129 }
2130
2131
2132 static const value_string gsm_map_T_invokeIDRej_vals[] = {
2133   {   0, "derivable" },
2134   {   1, "not-derivable" },
2135   { 0, NULL }
2136 };
2137
2138 static const ber_choice_t T_invokeIDRej_choice[] = {
2139   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_derivable },
2140   {   1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_not_derivable },
2141   { 0, 0, 0, 0, NULL }
2142 };
2143
2144 static int
2145 dissect_gsm_map_T_invokeIDRej(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2146   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2147                                  T_invokeIDRej_choice, hf_index, ett_gsm_map_T_invokeIDRej,
2148                                  NULL);
2149
2150   return offset;
2151 }
2152 static int dissect_invokeIDRej(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2153   return dissect_gsm_map_T_invokeIDRej(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeIDRej);
2154 }
2155
2156
2157 static const value_string gsm_map_GeneralProblem_vals[] = {
2158   {   0, "unrecognizedComponent" },
2159   {   1, "mistypedComponent" },
2160   {   2, "badlyStructuredComponent" },
2161   { 0, NULL }
2162 };
2163
2164
2165 static int
2166 dissect_gsm_map_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2167   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2168                                   NULL);
2169
2170   return offset;
2171 }
2172 static int dissect_generalProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2173   return dissect_gsm_map_GeneralProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_generalProblem);
2174 }
2175
2176
2177 static const value_string gsm_map_InvokeProblem_vals[] = {
2178   {   0, "duplicateInvokeID" },
2179   {   1, "unrecognizedOperation" },
2180   {   2, "mistypedParameter" },
2181   {   3, "resourceLimitation" },
2182   {   4, "initiatingRelease" },
2183   {   5, "unrecognizedLinkedID" },
2184   {   6, "linkedResponseUnexpected" },
2185   {   7, "unexpectedLinkedOperation" },
2186   { 0, NULL }
2187 };
2188
2189
2190 static int
2191 dissect_gsm_map_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2192   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2193                                   NULL);
2194
2195   return offset;
2196 }
2197 static int dissect_invokeProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2198   return dissect_gsm_map_InvokeProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invokeProblem);
2199 }
2200
2201
2202 static const value_string gsm_map_ReturnResultProblem_vals[] = {
2203   {   0, "unrecognizedInvokeID" },
2204   {   1, "returnResultUnexpected" },
2205   {   2, "mistypedParameter" },
2206   { 0, NULL }
2207 };
2208
2209
2210 static int
2211 dissect_gsm_map_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2212   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2213                                   NULL);
2214
2215   return offset;
2216 }
2217 static int dissect_returnResultProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2218   return dissect_gsm_map_ReturnResultProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResultProblem);
2219 }
2220
2221
2222 static const value_string gsm_map_ReturnErrorProblem_vals[] = {
2223   {   0, "unrecognizedInvokeID" },
2224   {   1, "returnErrorUnexpected" },
2225   {   2, "unrecognizedError" },
2226   {   3, "unexpectedError" },
2227   {   4, "mistypedParameter" },
2228   { 0, NULL }
2229 };
2230
2231
2232 static int
2233 dissect_gsm_map_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2234   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2235                                   NULL);
2236
2237   return offset;
2238 }
2239 static int dissect_returnErrorProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2240   return dissect_gsm_map_ReturnErrorProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnErrorProblem);
2241 }
2242
2243
2244 static const value_string gsm_map_T_problem_vals[] = {
2245   {   0, "generalProblem" },
2246   {   1, "invokeProblem" },
2247   {   2, "returnResultProblem" },
2248   {   3, "returnErrorProblem" },
2249   { 0, NULL }
2250 };
2251
2252 static const ber_choice_t T_problem_choice[] = {
2253   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_generalProblem_impl },
2254   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invokeProblem_impl },
2255   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResultProblem_impl },
2256   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnErrorProblem_impl },
2257   { 0, 0, 0, 0, NULL }
2258 };
2259
2260 static int
2261 dissect_gsm_map_T_problem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2262   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2263                                  T_problem_choice, hf_index, ett_gsm_map_T_problem,
2264                                  NULL);
2265
2266   return offset;
2267 }
2268 static int dissect_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2269   return dissect_gsm_map_T_problem(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_problem);
2270 }
2271
2272
2273 static const ber_sequence_t Reject_sequence[] = {
2274   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeIDRej },
2275   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_problem },
2276   { 0, 0, 0, NULL }
2277 };
2278
2279 static int
2280 dissect_gsm_map_Reject(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2281   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2282                                    Reject_sequence, hf_index, ett_gsm_map_Reject);
2283
2284   return offset;
2285 }
2286 static int dissect_reject_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2287   return dissect_gsm_map_Reject(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_reject);
2288 }
2289
2290
2291 static const value_string gsm_map_Component_vals[] = {
2292   {   1, "invoke" },
2293   {   2, "returnResultLast" },
2294   {   3, "returnError" },
2295   {   4, "reject" },
2296   { 0, NULL }
2297 };
2298
2299 static const ber_choice_t Component_choice[] = {
2300   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl },
2301   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResultLast_impl },
2302   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl },
2303   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl },
2304   { 0, 0, 0, 0, NULL }
2305 };
2306
2307 static int
2308 dissect_gsm_map_Component(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2309   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2310                                  Component_choice, hf_index, ett_gsm_map_Component,
2311                                  NULL);
2312
2313   return offset;
2314 }
2315
2316
2317 static const value_string gsm_map_ProtocolId_vals[] = {
2318   {   1, "gsm-0408" },
2319   {   2, "gsm-0806" },
2320   {   3, "gsm-BSSMAP" },
2321   {   4, "ets-300102-1" },
2322   { 0, NULL }
2323 };
2324
2325
2326 static int
2327 dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2328   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2329                                   &protocolId);
2330
2331   return offset;
2332 }
2333 static int dissect_protocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2334   return dissect_gsm_map_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protocolId);
2335 }
2336
2337
2338
2339 static int
2340 dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2341 #line 333 "gsmmap.cnf"
2342
2343  tvbuff_t       *parameter_tvb;
2344  guint8         octet;
2345  guint8         length;
2346  tvbuff_t       *next_tvb;
2347
2348
2349   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2350                                        &parameter_tvb);
2351
2352
2353  if (!parameter_tvb)
2354         return offset;
2355  switch (protocolId){
2356         /* gsm-0408 */
2357         case 1:
2358                 break;
2359         /* gsm-0806 */
2360         case 2:
2361                 break;
2362         /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/
2363         case 3:
2364                 octet = tvb_get_guint8(parameter_tvb,0);
2365                 length = tvb_get_guint8(parameter_tvb,1);
2366                 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
2367                         next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
2368                         dissect_bssmap(next_tvb, pinfo, tree);
2369                 }
2370                 break;
2371         /* ets-300102-1 (~Q.931 ) */
2372         case 4:
2373                 octet = tvb_get_guint8(parameter_tvb,0);
2374                 length = tvb_get_guint8(parameter_tvb,1);
2375                 if ( octet == 4 )
2376                         dissect_q931_bearer_capability_ie(parameter_tvb, 2, length, tree);
2377                 break;
2378         default:
2379                 break;
2380 }
2381
2382
2383
2384   return offset;
2385 }
2386 static int dissect_signalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2387   return dissect_gsm_map_SignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_signalInfo);
2388 }
2389 static int dissect_diagnosticInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2390   return dissect_gsm_map_SignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_diagnosticInfo);
2391 }
2392
2393
2394
2395 static int
2396 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_) {
2397 #line 408 "gsmmap.cnf"
2398
2399   proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
2400   call_dissector(data_handle, tvb, pinfo, tree);        
2401   offset = tvb_length_remaining(tvb,offset);            
2402
2403
2404
2405   return offset;
2406 }
2407 static int dissect_extType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2408   return dissect_gsm_map_T_extType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extType);
2409 }
2410
2411
2412 static const ber_sequence_t PrivateExtension_sequence[] = {
2413   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extId },
2414   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extType },
2415   { 0, 0, 0, NULL }
2416 };
2417
2418 static int
2419 dissect_gsm_map_PrivateExtension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2420   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2421                                    PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension);
2422
2423   return offset;
2424 }
2425 static int dissect_PrivateExtensionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2426   return dissect_gsm_map_PrivateExtension(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PrivateExtensionList_item);
2427 }
2428
2429
2430 static const ber_sequence_t PrivateExtensionList_sequence_of[1] = {
2431   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PrivateExtensionList_item },
2432 };
2433
2434 static int
2435 dissect_gsm_map_PrivateExtensionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2436   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2437                                       PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList);
2438
2439   return offset;
2440 }
2441 static int dissect_privateExtensionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2442   return dissect_gsm_map_PrivateExtensionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privateExtensionList);
2443 }
2444
2445
2446 static const ber_sequence_t PcsExtensions_sequence[] = {
2447   { 0, 0, 0, NULL }
2448 };
2449
2450 static int
2451 dissect_gsm_map_PcsExtensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2452   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2453                                    PcsExtensions_sequence, hf_index, ett_gsm_map_PcsExtensions);
2454
2455   return offset;
2456 }
2457 static int dissect_pcsExtensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2458   return dissect_gsm_map_PcsExtensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pcsExtensions);
2459 }
2460
2461
2462 static const ber_sequence_t ExtensionContainer_sequence[] = {
2463   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
2464   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pcsExtensions_impl },
2465   { 0, 0, 0, NULL }
2466 };
2467
2468 int
2469 dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2470   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2471                                    ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer);
2472
2473   return offset;
2474 }
2475 static int dissect_extensionContainer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2476   return dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
2477 }
2478 static int dissect_extensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2479   return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
2480 }
2481
2482
2483 static const ber_sequence_t Bss_APDU_sequence[] = {
2484   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
2485   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
2486   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2487   { 0, 0, 0, NULL }
2488 };
2489
2490 static int
2491 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_) {
2492   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2493                                    Bss_APDU_sequence, hf_index, ett_gsm_map_Bss_APDU);
2494
2495   return offset;
2496 }
2497 static int dissect_bss_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2498   return dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bss_APDU);
2499 }
2500
2501
2502
2503 static int
2504 dissect_gsm_map_SignalInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2505   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2506                                        NULL);
2507
2508   return offset;
2509 }
2510
2511
2512 static const asn_namedbit SupportedCamelPhases_bits[] = {
2513   {  0, &hf_gsm_map_SupportedCamelPhases_phase1, -1, -1, "phase1", NULL },
2514   {  1, &hf_gsm_map_SupportedCamelPhases_phase2, -1, -1, "phase2", NULL },
2515   {  2, &hf_gsm_map_SupportedCamelPhases_phase3, -1, -1, "phase3", NULL },
2516   {  3, &hf_gsm_map_SupportedCamelPhases_phase4, -1, -1, "phase4", NULL },
2517   { 0, NULL, 0, 0, NULL, NULL }
2518 };
2519
2520 int
2521 dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2522   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2523                                     SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
2524                                     NULL);
2525
2526   return offset;
2527 }
2528 static int dissect_supportedCamelPhases(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2529   return dissect_gsm_map_SupportedCamelPhases(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
2530 }
2531 static int dissect_supportedCamelPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2532   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
2533 }
2534 static int dissect_supportedCamelPhasesInVMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2535   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInVMSC);
2536 }
2537 static int dissect_supportedCamelPhasesInInterrogatingNode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2538   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInInterrogatingNode);
2539 }
2540 static int dissect_supportedVLR_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2541   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases);
2542 }
2543 static int dissect_supportedSGSN_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2544   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases);
2545 }
2546 static int dissect_supportedCAMELPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2547   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCAMELPhases);
2548 }
2549
2550
2551
2552 int
2553 dissect_gsm_map_IMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2554 #line 171 "gsmmap.cnf"
2555
2556  tvbuff_t       *parameter_tvb;
2557  char           *digit_str;
2558
2559    offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2560                                        &parameter_tvb);
2561
2562
2563  if (!parameter_tvb)
2564         return offset;
2565
2566  digit_str = unpack_digits(parameter_tvb, 0);
2567
2568  proto_tree_add_string(tree, hf_gsm_map_imsi_digits, parameter_tvb, 0, -1, digit_str);
2569  
2570
2571
2572
2573
2574   return offset;
2575 }
2576 static int dissect_imsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2577   return dissect_gsm_map_IMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
2578 }
2579 static int dissect_imsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2580   return dissect_gsm_map_IMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
2581 }
2582
2583
2584
2585 int
2586 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_) {
2587 #line 218 "gsmmap.cnf"
2588
2589  tvbuff_t       *parameter_tvb;
2590  char           *digit_str;
2591
2592   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2593                                        &parameter_tvb);
2594
2595
2596  if (!parameter_tvb)
2597         return offset;
2598
2599  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
2600  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
2601  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
2602
2603  digit_str = unpack_digits(parameter_tvb, 1);
2604
2605  proto_tree_add_string(tree, hf_gsm_map_isdn_address_digits, parameter_tvb, 1, -1, digit_str);
2606
2607  pinfo->p2p_dir = P2P_DIR_RECV;
2608
2609
2610
2611
2612   return offset;
2613 }
2614 static int dissect_msc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2615   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
2616 }
2617 static int dissect_msc_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2618   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
2619 }
2620 static int dissect_vlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2621   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
2622 }
2623 static int dissect_vlr_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2624   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
2625 }
2626 static int dissect_hlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2627   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_Number);
2628 }
2629 static int dissect_sgsn_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2630   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
2631 }
2632 static int dissect_sgsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2633   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
2634 }
2635 static int dissect_handoverNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2636   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
2637 }
2638 static int dissect_handoverNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2639   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
2640 }
2641 static int dissect_targetMSC_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2642   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
2643 }
2644 static int dissect_targetMSC_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2645   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
2646 }
2647 static int dissect_gsmSCF_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2648   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
2649 }
2650 static int dissect_gsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2651   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
2652 }
2653 static int dissect_msisdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2654   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
2655 }
2656 static int dissect_msisdn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2657   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
2658 }
2659 static int dissect_GMLC_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2660   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GMLC_List_item);
2661 }
2662 static int dissect_dialledNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2663   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_dialledNumber);
2664 }
2665 static int dissect_forwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2666   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber);
2667 }
2668 static int dissect_DestinationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2669   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DestinationNumberList_item);
2670 }
2671 static int dissect_gmsc_OrGsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2672   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_OrGsmSCF_Address);
2673 }
2674 static int dissect_vmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2675   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vmsc_Address);
2676 }
2677 static int dissect_externalAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2678   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalAddress);
2679 }
2680 static int dissect_roamingNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2681   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNumber);
2682 }
2683 static int dissect_vlr_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2684   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_number);
2685 }
2686 static int dissect_gmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2687   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_Address);
2688 }
2689 static int dissect_b_Subscriber_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2690   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_Subscriber_Address);
2691 }
2692 static int dissect_sIWFSNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2693   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sIWFSNumber);
2694 }
2695 static int dissect_msrn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2696   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msrn);
2697 }
2698 static int dissect_translatedB_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2699   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
2700 }
2701 static int dissect_translatedB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2702   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
2703 }
2704 static int dissect_networkNode_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2705   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
2706 }
2707 static int dissect_networkNode_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2708   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
2709 }
2710 static int dissect_b_subscriberNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2711   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberNumber);
2712 }
2713 static int dissect_groupCallNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2714   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupCallNumber);
2715 }
2716 static int dissect_ggsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2717   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Number);
2718 }
2719 static int dissect_mlc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2720   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mlc_Number);
2721 }
2722 static int dissect_mlcNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2723   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mlcNumber);
2724 }
2725 static int dissect_na_ESRD_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2726   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRD);
2727 }
2728 static int dissect_na_ESRK_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2729   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK);
2730 }
2731
2732
2733
2734 static int
2735 dissect_gsm_map_LMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2736   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2737                                        NULL);
2738
2739   return offset;
2740 }
2741 static int dissect_lmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2742   return dissect_gsm_map_LMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
2743 }
2744 static int dissect_lmsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2745   return dissect_gsm_map_LMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
2746 }
2747
2748
2749 static const value_string gsm_map_IST_SupportIndicator_vals[] = {
2750   {   0, "basicISTSupported" },
2751   {   1, "istCommandSupported" },
2752   { 0, NULL }
2753 };
2754
2755
2756 static int
2757 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_) {
2758   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2759                                   NULL);
2760
2761   return offset;
2762 }
2763 static int dissect_istSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2764   return dissect_gsm_map_IST_SupportIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istSupportIndicator);
2765 }
2766
2767
2768
2769 static int
2770 dissect_gsm_map_AgeIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2771   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2772                                        NULL);
2773
2774   return offset;
2775 }
2776 static int dissect_subscriberDataStored_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2777   return dissect_gsm_map_AgeIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberDataStored);
2778 }
2779 static int dissect_superChargerSupportedInHLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2780   return dissect_gsm_map_AgeIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInHLR);
2781 }
2782
2783
2784 static const value_string gsm_map_SuperChargerInfo_vals[] = {
2785   {   0, "sendSubscriberData" },
2786   {   1, "subscriberDataStored" },
2787   { 0, NULL }
2788 };
2789
2790 static const ber_choice_t SuperChargerInfo_choice[] = {
2791   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sendSubscriberData_impl },
2792   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_subscriberDataStored_impl },
2793   { 0, 0, 0, 0, NULL }
2794 };
2795
2796 static int
2797 dissect_gsm_map_SuperChargerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2798   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2799                                  SuperChargerInfo_choice, hf_index, ett_gsm_map_SuperChargerInfo,
2800                                  NULL);
2801
2802   return offset;
2803 }
2804 static int dissect_superChargerSupportedInServingNetworkEntity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2805   return dissect_gsm_map_SuperChargerInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
2806 }
2807 static int dissect_superChargerSupportedInServingNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2808   return dissect_gsm_map_SuperChargerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
2809 }
2810
2811
2812 static const asn_namedbit SupportedLCS_CapabilitySets_bits[] = {
2813   {  0, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1, -1, -1, "lcsCapabilitySet1", NULL },
2814   {  1, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2, -1, -1, "lcsCapabilitySet2", NULL },
2815   {  2, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3, -1, -1, "lcsCapabilitySet3", NULL },
2816   {  3, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4, -1, -1, "lcsCapabilitySet4", NULL },
2817   { 0, NULL, 0, 0, NULL, NULL }
2818 };
2819
2820 static int
2821 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_) {
2822   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2823                                     SupportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_SupportedLCS_CapabilitySets,
2824                                     NULL);
2825
2826   return offset;
2827 }
2828 static int dissect_supportedLCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2829   return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedLCS_CapabilitySets);
2830 }
2831 static int dissect_additional_LCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2832   return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_LCS_CapabilitySets);
2833 }
2834
2835
2836 static const asn_namedbit OfferedCamel4CSIs_bits[] = {
2837   {  0, &hf_gsm_map_OfferedCamel4CSIs_o_csi, -1, -1, "o-csi", NULL },
2838   {  1, &hf_gsm_map_OfferedCamel4CSIs_d_csi, -1, -1, "d-csi", NULL },
2839   {  2, &hf_gsm_map_OfferedCamel4CSIs_vt_csi, -1, -1, "vt-csi", NULL },
2840   {  3, &hf_gsm_map_OfferedCamel4CSIs_t_csi, -1, -1, "t-csi", NULL },
2841   {  4, &hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
2842   {  5, &hf_gsm_map_OfferedCamel4CSIs_mg_csi, -1, -1, "mg-csi", NULL },
2843   {  6, &hf_gsm_map_OfferedCamel4CSIs_psi_enhancements, -1, -1, "psi-enhancements", NULL },
2844   { 0, NULL, 0, 0, NULL, NULL }
2845 };
2846
2847 static int
2848 dissect_gsm_map_OfferedCamel4CSIs(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2849   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2850                                     OfferedCamel4CSIs_bits, hf_index, ett_gsm_map_OfferedCamel4CSIs,
2851                                     NULL);
2852
2853   return offset;
2854 }
2855 static int dissect_offeredCamel4CSIs_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2856   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIs);
2857 }
2858 static int dissect_offeredCamel4CSIsInVMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2859   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVMSC);
2860 }
2861 static int dissect_offeredCamel4CSIsInInterrogatingNode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2862   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInInterrogatingNode);
2863 }
2864 static int dissect_offeredCamel4CSIsInVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2865   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVLR);
2866 }
2867 static int dissect_offeredCamel4CSIsInSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2868   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInSGSN);
2869 }
2870
2871
2872 static const ber_sequence_t VLR_Capability_sequence[] = {
2873   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
2874   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2875   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_solsaSupportIndicator_impl },
2876   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
2877   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_superChargerSupportedInServingNetworkEntity },
2878   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
2879   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
2880   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
2881   { 0, 0, 0, NULL }
2882 };
2883
2884 static int
2885 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_) {
2886   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2887                                    VLR_Capability_sequence, hf_index, ett_gsm_map_VLR_Capability);
2888
2889   return offset;
2890 }
2891 static int dissect_vlr_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2892   return dissect_gsm_map_VLR_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Capability);
2893 }
2894
2895
2896
2897 int
2898 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_) {
2899   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2900                                        NULL);
2901
2902   return offset;
2903 }
2904 static int dissect_v_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2905   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
2906 }
2907 static int dissect_v_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2908   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
2909 }
2910 static int dissect_ggsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2911   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Address);
2912 }
2913 static int dissect_rnc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2914   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rnc_Address);
2915 }
2916 static int dissect_sgsn_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2917   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
2918 }
2919 static int dissect_sgsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2920   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
2921 }
2922 static int dissect_h_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2923   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_h_gmlc_Address);
2924 }
2925 static int dissect_h_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2926   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_h_gmlc_Address);
2927 }
2928 static int dissect_ppr_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2929   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ppr_Address);
2930 }
2931 static int dissect_additional_v_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2932   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additional_v_gmlc_Address);
2933 }
2934
2935
2936
2937 static int
2938 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_) {
2939   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2940                                        NULL);
2941
2942   return offset;
2943 }
2944
2945
2946
2947 int
2948 dissect_gsm_map_IMEI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2949   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2950
2951   return offset;
2952 }
2953 static int dissect_imeisv_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2954   return dissect_gsm_map_IMEI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imeisv);
2955 }
2956 static int dissect_imei(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2957   return dissect_gsm_map_IMEI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
2958 }
2959 static int dissect_imei_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2960   return dissect_gsm_map_IMEI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
2961 }
2962
2963
2964 static const ber_sequence_t ADD_Info_sequence[] = {
2965   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
2966   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_skipSubscriberDataUpdate_impl },
2967   { 0, 0, 0, NULL }
2968 };
2969
2970 static int
2971 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_) {
2972   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2973                                    ADD_Info_sequence, hf_index, ett_gsm_map_ADD_Info);
2974
2975   return offset;
2976 }
2977 static int dissect_add_info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2978   return dissect_gsm_map_ADD_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_info);
2979 }
2980
2981
2982 static const ber_sequence_t UpdateLocationArg_sequence[] = {
2983   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2984   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
2985   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_vlr_Number },
2986   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
2987   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2988   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
2989   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
2990   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_LCS_NotSupportedByUE_impl },
2991   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
2992   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
2993   { 0, 0, 0, NULL }
2994 };
2995
2996 static int
2997 dissect_gsm_map_UpdateLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2998   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2999                                    UpdateLocationArg_sequence, hf_index, ett_gsm_map_UpdateLocationArg);
3000
3001   return offset;
3002 }
3003
3004
3005 static const ber_sequence_t UpdateLocationRes_sequence[] = {
3006   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
3007   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3008   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_add_Capability },
3009   { 0, 0, 0, NULL }
3010 };
3011
3012 static int
3013 dissect_gsm_map_UpdateLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3014   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3015                                    UpdateLocationRes_sequence, hf_index, ett_gsm_map_UpdateLocationRes);
3016
3017   return offset;
3018 }
3019
3020
3021 static const ber_sequence_t SLR_Arg_PCS_Extensions_sequence[] = {
3022   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_Request_impl },
3023   { 0, 0, 0, NULL }
3024 };
3025
3026 static int
3027 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_) {
3028   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3029                                    SLR_Arg_PCS_Extensions_sequence, hf_index, ett_gsm_map_SLR_Arg_PCS_Extensions);
3030
3031   return offset;
3032 }
3033 static int dissect_slr_Arg_PCS_Extensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3034   return dissect_gsm_map_SLR_Arg_PCS_Extensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_slr_Arg_PCS_Extensions);
3035 }
3036
3037
3038 static const ber_sequence_t SLR_ArgExtensionContainer_sequence[] = {
3039   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
3040   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_slr_Arg_PCS_Extensions_impl },
3041   { 0, 0, 0, NULL }
3042 };
3043
3044 static int
3045 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_) {
3046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3047                                    SLR_ArgExtensionContainer_sequence, hf_index, ett_gsm_map_SLR_ArgExtensionContainer);
3048
3049   return offset;
3050 }
3051 static int dissect_slr_ArgExtensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3052   return dissect_gsm_map_SLR_ArgExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_slr_ArgExtensionContainer);
3053 }
3054
3055
3056
3057 static int
3058 dissect_gsm_map_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3059   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3060                                        NULL);
3061
3062   return offset;
3063 }
3064 static int dissect_teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3065   return dissect_gsm_map_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
3066 }
3067
3068
3069
3070 static int
3071 dissect_gsm_map_Bearerservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3072   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3073                                        NULL);
3074
3075   return offset;
3076 }
3077 static int dissect_bearerservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3078   return dissect_gsm_map_Bearerservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerservice);
3079 }
3080
3081
3082
3083 static int
3084 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_) {
3085   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3086                                        NULL);
3087
3088   return offset;
3089 }
3090
3091
3092 static const ber_sequence_t IMSI_WithLMSI_sequence[] = {
3093   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3094   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lmsi },
3095   { 0, 0, 0, NULL }
3096 };
3097
3098 static int
3099 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_) {
3100   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3101                                    IMSI_WithLMSI_sequence, hf_index, ett_gsm_map_IMSI_WithLMSI);
3102
3103   return offset;
3104 }
3105 static int dissect_imsi_WithLMSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3106   return dissect_gsm_map_IMSI_WithLMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi_WithLMSI);
3107 }
3108
3109
3110 static const value_string gsm_map_Identity_vals[] = {
3111   {   0, "imsi" },
3112   {   1, "imsi-WithLMSI" },
3113   { 0, NULL }
3114 };
3115
3116 static const ber_choice_t Identity_choice[] = {
3117   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3118   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
3119   { 0, 0, 0, 0, NULL }
3120 };
3121
3122 static int
3123 dissect_gsm_map_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3124   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3125                                  Identity_choice, hf_index, ett_gsm_map_Identity,
3126                                  NULL);
3127
3128   return offset;
3129 }
3130 static int dissect_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3131   return dissect_gsm_map_Identity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_identity);
3132 }
3133
3134
3135 static const value_string gsm_map_CancellationType_vals[] = {
3136   {   0, "updateProcedure" },
3137   {   1, "subscriptionWithdraw" },
3138   { 0, NULL }
3139 };
3140
3141
3142 static int
3143 dissect_gsm_map_CancellationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3144   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3145                                   NULL);
3146
3147   return offset;
3148 }
3149 static int dissect_cancellationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3150   return dissect_gsm_map_CancellationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cancellationType);
3151 }
3152
3153
3154 static const ber_sequence_t CancelLocationArg_sequence[] = {
3155   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
3156   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cancellationType },
3157   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3158   { 0, 0, 0, NULL }
3159 };
3160
3161 static int
3162 dissect_gsm_map_CancelLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3163   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3164                                    CancelLocationArg_sequence, hf_index, ett_gsm_map_CancelLocationArg);
3165
3166   return offset;
3167 }
3168
3169
3170 static const value_string gsm_map_CancelLocationArgV2_vals[] = {
3171   {   0, "imsi" },
3172   {   1, "imsi-WithLMSI" },
3173   { 0, NULL }
3174 };
3175
3176 static const ber_choice_t CancelLocationArgV2_choice[] = {
3177   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3178   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
3179   { 0, 0, 0, 0, NULL }
3180 };
3181
3182 static int
3183 dissect_gsm_map_CancelLocationArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3184   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3185                                  CancelLocationArgV2_choice, hf_index, ett_gsm_map_CancelLocationArgV2,
3186                                  NULL);
3187
3188   return offset;
3189 }
3190
3191
3192 static const ber_sequence_t CancelLocationRes_sequence[] = {
3193   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3194   { 0, 0, 0, NULL }
3195 };
3196
3197 static int
3198 dissect_gsm_map_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3199   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3200                                    CancelLocationRes_sequence, hf_index, ett_gsm_map_CancelLocationRes);
3201
3202   return offset;
3203 }
3204
3205
3206 static const ber_sequence_t PurgeMSArg_sequence[] = {
3207   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3208   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
3209   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
3210   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3211   { 0, 0, 0, NULL }
3212 };
3213
3214 static int
3215 dissect_gsm_map_PurgeMSArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3216   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3217                                    PurgeMSArg_sequence, hf_index, ett_gsm_map_PurgeMSArg);
3218
3219   return offset;
3220 }
3221
3222
3223 static const ber_sequence_t PurgeMSRes_sequence[] = {
3224   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeTMSI_impl },
3225   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeP_TMSI_impl },
3226   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3227   { 0, 0, 0, NULL }
3228 };
3229
3230 static int
3231 dissect_gsm_map_PurgeMSRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3232   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3233                                    PurgeMSRes_sequence, hf_index, ett_gsm_map_PurgeMSRes);
3234
3235   return offset;
3236 }
3237
3238
3239
3240 static int
3241 dissect_gsm_map_TMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3242   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3243                                        NULL);
3244
3245   return offset;
3246 }
3247 static int dissect_tmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3248   return dissect_gsm_map_TMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_tmsi);
3249 }
3250
3251
3252
3253 static int
3254 dissect_gsm_map_NumberOfRequestedVectors(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3255   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3256                                   NULL);
3257
3258   return offset;
3259 }
3260 static int dissect_numberOfRequestedVectors(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3261   return dissect_gsm_map_NumberOfRequestedVectors(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfRequestedVectors);
3262 }
3263
3264
3265
3266 static int
3267 dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3268   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3269                                        NULL);
3270
3271   return offset;
3272 }
3273 static int dissect_previous_LAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3274   return dissect_gsm_map_LAIFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_previous_LAI);
3275 }
3276 static int dissect_laiFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3277   return dissect_gsm_map_LAIFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_laiFixedLength);
3278 }
3279
3280
3281
3282 static int
3283 dissect_gsm_map_HopCounter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3284   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3285                                   NULL);
3286
3287   return offset;
3288 }
3289 static int dissect_hopCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3290   return dissect_gsm_map_HopCounter(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_hopCounter);
3291 }
3292
3293
3294 static const ber_sequence_t SendIdentificationArg_sequence[] = {
3295   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_tmsi },
3296   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
3297   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
3298   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3299   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msc_Number },
3300   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_previous_LAI_impl },
3301   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_hopCounter_impl },
3302   { 0, 0, 0, NULL }
3303 };
3304
3305 static int
3306 dissect_gsm_map_SendIdentificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3307   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3308                                    SendIdentificationArg_sequence, hf_index, ett_gsm_map_SendIdentificationArg);
3309
3310   return offset;
3311 }
3312
3313
3314
3315 static int
3316 dissect_gsm_map_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3317   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3318                                        NULL);
3319
3320   return offset;
3321 }
3322 static int dissect_rand(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3323   return dissect_gsm_map_RAND(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rand);
3324 }
3325
3326
3327
3328 static int
3329 dissect_gsm_map_SRES(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3330   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3331                                        NULL);
3332
3333   return offset;
3334 }
3335 static int dissect_sres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3336   return dissect_gsm_map_SRES(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sres);
3337 }
3338
3339
3340
3341 static int
3342 dissect_gsm_map_Kc(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3343   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3344                                        NULL);
3345
3346   return offset;
3347 }
3348 static int dissect_kc(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3349   return dissect_gsm_map_Kc(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_kc);
3350 }
3351 static int dissect_groupKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3352   return dissect_gsm_map_Kc(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKey);
3353 }
3354
3355
3356 static const ber_sequence_t AuthenticationTriplet_sequence[] = {
3357   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3358   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
3359   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3360   { 0, 0, 0, NULL }
3361 };
3362
3363 static int
3364 dissect_gsm_map_AuthenticationTriplet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3365   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3366                                    AuthenticationTriplet_sequence, hf_index, ett_gsm_map_AuthenticationTriplet);
3367
3368   return offset;
3369 }
3370 static int dissect_TripletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3371   return dissect_gsm_map_AuthenticationTriplet(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TripletList_item);
3372 }
3373
3374
3375 static const ber_sequence_t TripletList_sequence_of[1] = {
3376   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TripletList_item },
3377 };
3378
3379 static int
3380 dissect_gsm_map_TripletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3381   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3382                                       TripletList_sequence_of, hf_index, ett_gsm_map_TripletList);
3383
3384   return offset;
3385 }
3386 static int dissect_tripletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3387   return dissect_gsm_map_TripletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList);
3388 }
3389
3390
3391
3392 static int
3393 dissect_gsm_map_XRES(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3394   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3395                                        NULL);
3396
3397   return offset;
3398 }
3399 static int dissect_xres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3400   return dissect_gsm_map_XRES(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_xres);
3401 }
3402
3403
3404
3405 static int
3406 dissect_gsm_map_CK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3407   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3408                                        NULL);
3409
3410   return offset;
3411 }
3412 static int dissect_ck(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3413   return dissect_gsm_map_CK(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ck);
3414 }
3415
3416
3417
3418 static int
3419 dissect_gsm_map_IK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3420   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3421                                        NULL);
3422
3423   return offset;
3424 }
3425 static int dissect_ik(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3426   return dissect_gsm_map_IK(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ik);
3427 }
3428
3429
3430
3431 static int
3432 dissect_gsm_map_AUTN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3433   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3434                                        NULL);
3435
3436   return offset;
3437 }
3438 static int dissect_autn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3439   return dissect_gsm_map_AUTN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_autn);
3440 }
3441
3442
3443 static const ber_sequence_t AuthenticationQuintuplet_sequence[] = {
3444   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3445   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_xres },
3446   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
3447   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
3448   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_autn },
3449   { 0, 0, 0, NULL }
3450 };
3451
3452 static int
3453 dissect_gsm_map_AuthenticationQuintuplet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3454   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3455                                    AuthenticationQuintuplet_sequence, hf_index, ett_gsm_map_AuthenticationQuintuplet);
3456
3457   return offset;
3458 }
3459 static int dissect_QuintupletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3460   return dissect_gsm_map_AuthenticationQuintuplet(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_QuintupletList_item);
3461 }
3462
3463
3464 static const ber_sequence_t QuintupletList_sequence_of[1] = {
3465   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_QuintupletList_item },
3466 };
3467
3468 static int
3469 dissect_gsm_map_QuintupletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3470   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3471                                       QuintupletList_sequence_of, hf_index, ett_gsm_map_QuintupletList);
3472
3473   return offset;
3474 }
3475 static int dissect_quintupletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3476   return dissect_gsm_map_QuintupletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList);
3477 }
3478
3479
3480 static const value_string gsm_map_AuthenticationSetList_vals[] = {
3481   {   0, "tripletList" },
3482   {   1, "quintupletList" },
3483   { 0, NULL }
3484 };
3485
3486 static const ber_choice_t AuthenticationSetList_choice[] = {
3487   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tripletList_impl },
3488   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_quintupletList_impl },
3489   { 0, 0, 0, 0, NULL }
3490 };
3491
3492 static int
3493 dissect_gsm_map_AuthenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3494   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3495                                  AuthenticationSetList_choice, hf_index, ett_gsm_map_AuthenticationSetList,
3496                                  NULL);
3497
3498   return offset;
3499 }
3500 static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3501   return dissect_gsm_map_AuthenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList);
3502 }
3503
3504
3505
3506 static int
3507 dissect_gsm_map_Cksn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3508   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3509                                        NULL);
3510
3511   return offset;
3512 }
3513 static int dissect_cksn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3514   return dissect_gsm_map_Cksn(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cksn);
3515 }
3516
3517
3518 static const ber_sequence_t GSM_SecurityContextData_sequence[] = {
3519   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3520   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cksn },
3521   { 0, 0, 0, NULL }
3522 };
3523
3524 static int
3525 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_) {
3526   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3527                                    GSM_SecurityContextData_sequence, hf_index, ett_gsm_map_GSM_SecurityContextData);
3528
3529   return offset;
3530 }
3531 static int dissect_gsm_SecurityContextData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3532   return dissect_gsm_map_GSM_SecurityContextData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_SecurityContextData);
3533 }
3534
3535
3536
3537 static int
3538 dissect_gsm_map_KSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3539   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3540                                        NULL);
3541
3542   return offset;
3543 }
3544 static int dissect_ksi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3545   return dissect_gsm_map_KSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ksi);
3546 }
3547
3548
3549 static const ber_sequence_t UMTS_SecurityContextData_sequence[] = {
3550   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
3551   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
3552   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ksi },
3553   { 0, 0, 0, NULL }
3554 };
3555
3556 static int
3557 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_) {
3558   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3559                                    UMTS_SecurityContextData_sequence, hf_index, ett_gsm_map_UMTS_SecurityContextData);
3560
3561   return offset;
3562 }
3563 static int dissect_umts_SecurityContextData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3564   return dissect_gsm_map_UMTS_SecurityContextData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_umts_SecurityContextData);
3565 }
3566
3567
3568 static const value_string gsm_map_CurrentSecurityContext_vals[] = {
3569   {   0, "gsm-SecurityContextData" },
3570   {   1, "umts-SecurityContextData" },
3571   { 0, NULL }
3572 };
3573
3574 static const ber_choice_t CurrentSecurityContext_choice[] = {
3575   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_SecurityContextData_impl },
3576   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_umts_SecurityContextData_impl },
3577   { 0, 0, 0, 0, NULL }
3578 };
3579
3580 static int
3581 dissect_gsm_map_CurrentSecurityContext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3582   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3583                                  CurrentSecurityContext_choice, hf_index, ett_gsm_map_CurrentSecurityContext,
3584                                  NULL);
3585
3586   return offset;
3587 }
3588 static int dissect_currentSecurityContext_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3589   return dissect_gsm_map_CurrentSecurityContext(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentSecurityContext);
3590 }
3591
3592
3593 static const ber_sequence_t SendIdentificationRes_sequence[] = {
3594   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
3595   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
3596   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_currentSecurityContext_impl },
3597   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3598   { 0, 0, 0, NULL }
3599 };
3600
3601 static int
3602 dissect_gsm_map_SendIdentificationRes(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                                    SendIdentificationRes_sequence, hf_index, ett_gsm_map_SendIdentificationRes);
3605
3606   return offset;
3607 }
3608
3609
3610
3611 static int
3612 dissect_gsm_map_AUTS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3613   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3614                                        NULL);
3615
3616   return offset;
3617 }
3618 static int dissect_auts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3619   return dissect_gsm_map_AUTS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_auts);
3620 }
3621
3622
3623
3624 static int
3625 dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3626   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3627                                        NULL);
3628
3629   return offset;
3630 }
3631 static int dissect_targetCellId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3632   return dissect_gsm_map_GlobalCellId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
3633 }
3634 static int dissect_targetCellId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3635   return dissect_gsm_map_GlobalCellId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
3636 }
3637
3638
3639 static const ber_sequence_t PrepareHO_Arg_sequence[] = {
3640   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_targetCellId },
3641   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
3642   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
3643   { 0, 0, 0, NULL }
3644 };
3645
3646 static int
3647 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_) {
3648   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3649                                    PrepareHO_Arg_sequence, hf_index, ett_gsm_map_PrepareHO_Arg);
3650
3651   return offset;
3652 }
3653
3654
3655
3656 static int
3657 dissect_gsm_map_RNCId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3658   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3659                                        NULL);
3660
3661   return offset;
3662 }
3663 static int dissect_targetRNCId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3664   return dissect_gsm_map_RNCId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetRNCId);
3665 }
3666
3667
3668 static const value_string gsm_map_AccessNetworkProtocolId_vals[] = {
3669   {   1, "ts3G-48006" },
3670   {   2, "ts3G-25413" },
3671   { 0, NULL }
3672 };
3673
3674
3675 static int
3676 dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3677   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3678                                   &AccessNetworkProtocolId);
3679
3680   return offset;
3681 }
3682 static int dissect_accessNetworkProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3683   return dissect_gsm_map_AccessNetworkProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessNetworkProtocolId);
3684 }
3685
3686
3687
3688 static int
3689 dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3690 #line 377 "gsmmap.cnf"
3691
3692  tvbuff_t       *parameter_tvb;
3693  guint8         octet;
3694  guint8         length;
3695  tvbuff_t       *next_tvb;
3696
3697
3698   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3699                                        &parameter_tvb);
3700
3701
3702  if (!parameter_tvb)
3703         return offset;
3704  switch (AccessNetworkProtocolId){
3705         /* ts3G-48006 */
3706         case 1:
3707                 octet = tvb_get_guint8(parameter_tvb,0);
3708                 length = tvb_get_guint8(parameter_tvb,1);
3709                 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
3710                         /* gsm-BSSMAP? */
3711                         next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
3712                         dissect_bssmap(next_tvb, pinfo, tree);
3713                 }
3714                 break;
3715         /* ts3G-25413 */
3716         case 2:
3717                 break;
3718         default:
3719                 break;
3720
3721  }
3722
3723
3724   return offset;
3725 }
3726 static int dissect_longsignalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3727   return dissect_gsm_map_LongSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_longsignalInfo);
3728 }
3729
3730
3731 static const ber_sequence_t AccessNetworkSignalInfo_sequence[] = {
3732   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_accessNetworkProtocolId },
3733   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_longsignalInfo },
3734   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3735   { 0, 0, 0, NULL }
3736 };
3737
3738 static int
3739 dissect_gsm_map_AccessNetworkSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3740   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3741                                    AccessNetworkSignalInfo_sequence, hf_index, ett_gsm_map_AccessNetworkSignalInfo);
3742
3743   return offset;
3744 }
3745 static int dissect_an_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3746   return dissect_gsm_map_AccessNetworkSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
3747 }
3748 static int dissect_an_APDU_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3749   return dissect_gsm_map_AccessNetworkSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
3750 }
3751
3752
3753
3754 static int
3755 dissect_gsm_map_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3756   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3757                                        NULL);
3758
3759   return offset;
3760 }
3761 static int dissect_integrityProtectionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3762   return dissect_gsm_map_IntegrityProtectionInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
3763 }
3764 static int dissect_integrityProtectionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3765   return dissect_gsm_map_IntegrityProtectionInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
3766 }
3767
3768
3769
3770 static int
3771 dissect_gsm_map_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3772   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3773                                        NULL);
3774
3775   return offset;
3776 }
3777 static int dissect_encryptionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3778   return dissect_gsm_map_EncryptionInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
3779 }
3780 static int dissect_encryptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3781   return dissect_gsm_map_EncryptionInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
3782 }
3783
3784
3785
3786 static int
3787 dissect_gsm_map_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3788   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3789                                        NULL);
3790
3791   return offset;
3792 }
3793 static int dissect_radioResourceInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3794   return dissect_gsm_map_RadioResourceInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
3795 }
3796 static int dissect_radioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3797   return dissect_gsm_map_RadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
3798 }
3799
3800
3801
3802 static int
3803 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_) {
3804   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3805                                        NULL);
3806
3807   return offset;
3808 }
3809 static int dissect_allowedGSM_Algorithms(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3810   return dissect_gsm_map_AllowedGSM_Algorithms(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
3811 }
3812 static int dissect_allowedGSM_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3813   return dissect_gsm_map_AllowedGSM_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
3814 }
3815
3816
3817
3818 static int
3819 dissect_gsm_map_PermittedIntegrityProtectionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3820   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3821                                        NULL);
3822
3823   return offset;
3824 }
3825 static int dissect_integrityProtectionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3826   return dissect_gsm_map_PermittedIntegrityProtectionAlgorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithms);
3827 }
3828
3829
3830
3831 static int
3832 dissect_gsm_map_PermittedEncryptionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3833   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3834                                        NULL);
3835
3836   return offset;
3837 }
3838 static int dissect_encryptionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3839   return dissect_gsm_map_PermittedEncryptionAlgorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithms);
3840 }
3841
3842
3843 static const ber_sequence_t AllowedUMTS_Algorithms_sequence[] = {
3844   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithms_impl },
3845   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithms_impl },
3846   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3847   { 0, 0, 0, NULL }
3848 };
3849
3850 static int
3851 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_) {
3852   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3853                                    AllowedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_AllowedUMTS_Algorithms);
3854
3855   return offset;
3856 }
3857 static int dissect_allowedUMTS_Algorithms(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3858   return dissect_gsm_map_AllowedUMTS_Algorithms(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
3859 }
3860 static int dissect_allowedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3861   return dissect_gsm_map_AllowedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
3862 }
3863
3864
3865
3866 static int
3867 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_) {
3868   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3869                                   NULL);
3870
3871   return offset;
3872 }
3873 static int dissect_rab_Id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3874   return dissect_gsm_map_RAB_Id(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
3875 }
3876 static int dissect_rab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3877   return dissect_gsm_map_RAB_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
3878 }
3879 static int dissect_selectedRab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3880   return dissect_gsm_map_RAB_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedRab_Id);
3881 }
3882
3883
3884 static const ber_sequence_t RadioResource_sequence[] = {
3885   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_radioResourceInformation },
3886   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
3887   { 0, 0, 0, NULL }
3888 };
3889
3890 static int
3891 dissect_gsm_map_RadioResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3892   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3893                                    RadioResource_sequence, hf_index, ett_gsm_map_RadioResource);
3894
3895   return offset;
3896 }
3897 static int dissect_RadioResourceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3898   return dissect_gsm_map_RadioResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_RadioResourceList_item);
3899 }
3900
3901
3902 static const ber_sequence_t RadioResourceList_sequence_of[1] = {
3903   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RadioResourceList_item },
3904 };
3905
3906 static int
3907 dissect_gsm_map_RadioResourceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3908   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3909                                       RadioResourceList_sequence_of, hf_index, ett_gsm_map_RadioResourceList);
3910
3911   return offset;
3912 }
3913 static int dissect_radioResourceList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3914   return dissect_gsm_map_RadioResourceList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
3915 }
3916 static int dissect_radioResourceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3917   return dissect_gsm_map_RadioResourceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
3918 }
3919
3920
3921
3922 static int
3923 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_) {
3924   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3925                                        NULL);
3926
3927   return offset;
3928 }
3929 static int dissect_bssmap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3930   return dissect_gsm_map_BSSMAP_ServiceHandover(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
3931 }
3932 static int dissect_bssmap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3933   return dissect_gsm_map_BSSMAP_ServiceHandover(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
3934 }
3935
3936
3937
3938 static int
3939 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_) {
3940   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3941                                        NULL);
3942
3943   return offset;
3944 }
3945 static int dissect_ranap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3946   return dissect_gsm_map_RANAP_ServiceHandover(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
3947 }
3948 static int dissect_ranap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3949   return dissect_gsm_map_RANAP_ServiceHandover(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
3950 }
3951
3952
3953 static const ber_sequence_t BSSMAP_ServiceHandoverInfo_sequence[] = {
3954   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_bssmap_ServiceHandover },
3955   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
3956   { 0, 0, 0, NULL }
3957 };
3958
3959 static int
3960 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_) {
3961   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3962                                    BSSMAP_ServiceHandoverInfo_sequence, hf_index, ett_gsm_map_BSSMAP_ServiceHandoverInfo);
3963
3964   return offset;
3965 }
3966 static int dissect_BSSMAP_ServiceHandoverList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3967   return dissect_gsm_map_BSSMAP_ServiceHandoverInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BSSMAP_ServiceHandoverList_item);
3968 }
3969
3970
3971 static const ber_sequence_t BSSMAP_ServiceHandoverList_sequence_of[1] = {
3972   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BSSMAP_ServiceHandoverList_item },
3973 };
3974
3975 static int
3976 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_) {
3977   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3978                                       BSSMAP_ServiceHandoverList_sequence_of, hf_index, ett_gsm_map_BSSMAP_ServiceHandoverList);
3979
3980   return offset;
3981 }
3982 static int dissect_bssmap_ServiceHandoverList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3983   return dissect_gsm_map_BSSMAP_ServiceHandoverList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
3984 }
3985 static int dissect_bssmap_ServiceHandoverList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3986   return dissect_gsm_map_BSSMAP_ServiceHandoverList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
3987 }
3988
3989
3990
3991 static int
3992 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_) {
3993   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3994
3995   return offset;
3996 }
3997 static int dissect_asciCallReference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3998   return dissect_gsm_map_ASCI_CallReference(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
3999 }
4000 static int dissect_asciCallReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4001   return dissect_gsm_map_ASCI_CallReference(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
4002 }
4003
4004
4005
4006 static int
4007 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_) {
4008   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4009                                        NULL);
4010
4011   return offset;
4012 }
4013 static int dissect_geran_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4014   return dissect_gsm_map_GERAN_Classmark(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geran_classmark);
4015 }
4016
4017
4018
4019 static int
4020 dissect_gsm_map_Codec(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4021   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4022                                        NULL);
4023
4024   return offset;
4025 }
4026 static int dissect_iuCurrentlyUsedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4027   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuCurrentlyUsedCodec);
4028 }
4029 static int dissect_iuSelectedCodec(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4030   return dissect_gsm_map_Codec(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuSelectedCodec);
4031 }
4032 static int dissect_iUSelectedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4033   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iUSelectedCodec);
4034 }
4035 static int dissect_codec1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4036   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec1);
4037 }
4038 static int dissect_codec2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4039   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec2);
4040 }
4041 static int dissect_codec3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4042   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec3);
4043 }
4044 static int dissect_codec4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4045   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec4);
4046 }
4047 static int dissect_codec5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4048   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec5);
4049 }
4050 static int dissect_codec6_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4051   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec6);
4052 }
4053 static int dissect_codec7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4054   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec7);
4055 }
4056 static int dissect_codec8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4057   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec8);
4058 }
4059 static int dissect_currentlyUsedCodec(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4060   return dissect_gsm_map_Codec(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentlyUsedCodec);
4061 }
4062
4063
4064 static const ber_sequence_t CodecList_sequence[] = {
4065   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl },
4066   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl },
4067   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl },
4068   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl },
4069   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl },
4070   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl },
4071   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl },
4072   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl },
4073   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4074   { 0, 0, 0, NULL }
4075 };
4076
4077 static int
4078 dissect_gsm_map_CodecList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4079   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4080                                    CodecList_sequence, hf_index, ett_gsm_map_CodecList);
4081
4082   return offset;
4083 }
4084 static int dissect_iuAvailableCodecsList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4085   return dissect_gsm_map_CodecList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
4086 }
4087 static int dissect_iuAvailableCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4088   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
4089 }
4090 static int dissect_utranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4091   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranCodecList);
4092 }
4093 static int dissect_geranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4094   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranCodecList);
4095 }
4096
4097
4098 static const ber_sequence_t SupportedCodecsList_sequence[] = {
4099   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranCodecList_impl },
4100   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranCodecList_impl },
4101   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4102   { 0, 0, 0, NULL }
4103 };
4104
4105 static int
4106 dissect_gsm_map_SupportedCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4107   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4108                                    SupportedCodecsList_sequence, hf_index, ett_gsm_map_SupportedCodecsList);
4109
4110   return offset;
4111 }
4112 static int dissect_iuSupportedCodecsList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4113   return dissect_gsm_map_SupportedCodecsList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
4114 }
4115 static int dissect_iuSupportedCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4116   return dissect_gsm_map_SupportedCodecsList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
4117 }
4118
4119
4120
4121 static int
4122 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_) {
4123   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4124                                     NULL, hf_index, -1,
4125                                     NULL);
4126
4127   return offset;
4128 }
4129 static int dissect_uesbi_IuA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4130   return dissect_gsm_map_UESBI_IuA(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuA);
4131 }
4132
4133
4134
4135 static int
4136 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_) {
4137   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4138                                     NULL, hf_index, -1,
4139                                     NULL);
4140
4141   return offset;
4142 }
4143 static int dissect_uesbi_IuB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4144   return dissect_gsm_map_UESBI_IuB(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuB);
4145 }
4146
4147
4148 static const ber_sequence_t UESBI_Iu_sequence[] = {
4149   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuA_impl },
4150   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuB_impl },
4151   { 0, 0, 0, NULL }
4152 };
4153
4154 static int
4155 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_) {
4156   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4157                                    UESBI_Iu_sequence, hf_index, ett_gsm_map_UESBI_Iu);
4158
4159   return offset;
4160 }
4161 static int dissect_uesbi_Iu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4162   return dissect_gsm_map_UESBI_Iu(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_Iu);
4163 }
4164 static int dissect_bmuef(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4165   return dissect_gsm_map_UESBI_Iu(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bmuef);
4166 }
4167
4168
4169 static const ber_sequence_t PrepareHO_ArgV3_sequence[] = {
4170   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
4171   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
4172   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
4173   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
4174   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multipleBearerRequested_impl },
4175   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4176   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionInfo_impl },
4177   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionInfo_impl },
4178   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceInformation_impl },
4179   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedGSM_Algorithms_impl },
4180   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedUMTS_Algorithms_impl },
4181   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceList_impl },
4182   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4183   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_Id_impl },
4184   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandover_impl },
4185   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ranap_ServiceHandover_impl },
4186   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandoverList_impl },
4187   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_asciCallReference_impl },
4188   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
4189   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuCurrentlyUsedCodec_impl },
4190   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuSupportedCodecsList_impl },
4191   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
4192   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_Iu_impl },
4193   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
4194   { 0, 0, 0, NULL }
4195 };
4196
4197 static int
4198 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_) {
4199   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4200                                    PrepareHO_ArgV3_sequence, hf_index, ett_gsm_map_PrepareHO_ArgV3);
4201
4202   return offset;
4203 }
4204
4205
4206 static const ber_sequence_t PrepareHO_Res_sequence[] = {
4207   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
4208   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
4209   { 0, 0, 0, NULL }
4210 };
4211
4212 static int
4213 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_) {
4214   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4215                                    PrepareHO_Res_sequence, hf_index, ett_gsm_map_PrepareHO_Res);
4216
4217   return offset;
4218 }
4219
4220
4221
4222 static int
4223 dissect_gsm_map_HandoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4224   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4225                                        NULL);
4226
4227   return offset;
4228 }
4229
4230
4231 static const ber_sequence_t RelocationNumber_sequence[] = {
4232   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
4233   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
4234   { 0, 0, 0, NULL }
4235 };
4236
4237 static int
4238 dissect_gsm_map_RelocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4239   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4240                                    RelocationNumber_sequence, hf_index, ett_gsm_map_RelocationNumber);
4241
4242   return offset;
4243 }
4244 static int dissect_RelocationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4245   return dissect_gsm_map_RelocationNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_RelocationNumberList_item);
4246 }
4247
4248
4249 static const ber_sequence_t RelocationNumberList_sequence_of[1] = {
4250   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RelocationNumberList_item },
4251 };
4252
4253 static int
4254 dissect_gsm_map_RelocationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4255   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4256                                       RelocationNumberList_sequence_of, hf_index, ett_gsm_map_RelocationNumberList);
4257
4258   return offset;
4259 }
4260 static int dissect_relocationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4261   return dissect_gsm_map_RelocationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList);
4262 }
4263
4264
4265
4266 static int
4267 dissect_gsm_map_MulticallBearerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4268   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4269                                   NULL);
4270
4271   return offset;
4272 }
4273 static int dissect_multicallBearerInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4274   return dissect_gsm_map_MulticallBearerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multicallBearerInfo);
4275 }
4276
4277
4278
4279 static int
4280 dissect_gsm_map_ChosenIntegrityProtectionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4281   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4282                                        NULL);
4283
4284   return offset;
4285 }
4286 static int dissect_integrityProtectionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4287   return dissect_gsm_map_ChosenIntegrityProtectionAlgorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithm);
4288 }
4289
4290
4291
4292 static int
4293 dissect_gsm_map_ChosenEncryptionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4294   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4295                                        NULL);
4296
4297   return offset;
4298 }
4299 static int dissect_encryptionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4300   return dissect_gsm_map_ChosenEncryptionAlgorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithm);
4301 }
4302
4303
4304 static const ber_sequence_t SelectedUMTS_Algorithms_sequence[] = {
4305   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithm_impl },
4306   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithm_impl },
4307   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4308   { 0, 0, 0, NULL }
4309 };
4310
4311 static int
4312 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_) {
4313   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4314                                    SelectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_SelectedUMTS_Algorithms);
4315
4316   return offset;
4317 }
4318 static int dissect_selectedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4319   return dissect_gsm_map_SelectedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedUMTS_Algorithms);
4320 }
4321
4322
4323
4324 static int
4325 dissect_gsm_map_ChosenChannelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4326   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4327                                        NULL);
4328
4329   return offset;
4330 }
4331 static int dissect_chosenChannelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4332   return dissect_gsm_map_ChosenChannelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannelInfo);
4333 }
4334
4335
4336
4337 static int
4338 dissect_gsm_map_ChosenSpeechVersion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4339   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4340                                        NULL);
4341
4342   return offset;
4343 }
4344 static int dissect_chosenSpeechVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4345   return dissect_gsm_map_ChosenSpeechVersion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenSpeechVersion);
4346 }
4347
4348
4349 static const ber_sequence_t ChosenRadioResourceInformation_sequence[] = {
4350   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannelInfo_impl },
4351   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenSpeechVersion_impl },
4352   { 0, 0, 0, NULL }
4353 };
4354
4355 static int
4356 dissect_gsm_map_ChosenRadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4357   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4358                                    ChosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_ChosenRadioResourceInformation);
4359
4360   return offset;
4361 }
4362 static int dissect_chosenRadioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4363   return dissect_gsm_map_ChosenRadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenRadioResourceInformation);
4364 }
4365
4366
4367 static const ber_sequence_t PrepareHO_ResV3_sequence[] = {
4368   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_handoverNumber_impl },
4369   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_relocationNumberList_impl },
4370   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
4371   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicallBearerInfo_impl },
4372   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_multipleBearerNotSupported },
4373   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
4374   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
4375   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4376   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_iuSelectedCodec },
4377   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_iuAvailableCodecsList },
4378   { 0, 0, 0, NULL }
4379 };
4380
4381 static int
4382 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_) {
4383   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4384                                    PrepareHO_ResV3_sequence, hf_index, ett_gsm_map_PrepareHO_ResV3);
4385
4386   return offset;
4387 }
4388
4389
4390
4391 static int
4392 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_) {
4393   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4394                                        NULL);
4395
4396   return offset;
4397 }
4398
4399
4400
4401 static int
4402 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_) {
4403   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4404                                        NULL);
4405
4406   return offset;
4407 }
4408
4409
4410 static const ber_sequence_t SendEndSignalArgV3_sequence[] = {
4411   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4412   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4413   { 0, 0, 0, NULL }
4414 };
4415
4416 static int
4417 dissect_gsm_map_SendEndSignalArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4418   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4419                                    SendEndSignalArgV3_sequence, hf_index, ett_gsm_map_SendEndSignalArgV3);
4420
4421   return offset;
4422 }
4423
4424
4425 static const ber_sequence_t SendEndSignalRes_sequence[] = {
4426   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4427   { 0, 0, 0, NULL }
4428 };
4429
4430 static int
4431 dissect_gsm_map_SendEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4432   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4433                                    SendEndSignalRes_sequence, hf_index, ett_gsm_map_SendEndSignalRes);
4434
4435   return offset;
4436 }
4437
4438
4439
4440 static int
4441 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_) {
4442   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4443                                        NULL);
4444
4445   return offset;
4446 }
4447 static int dissect_selectedGSM_Algorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4448   return dissect_gsm_map_SelectedGSM_Algorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedGSM_Algorithm);
4449 }
4450
4451
4452 static const ber_sequence_t ProcessAccessSignallingArgV3_sequence[] = {
4453   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4454   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
4455   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedGSM_Algorithm_impl },
4456   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
4457   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedRab_Id_impl },
4458   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4459   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iUSelectedCodec_impl },
4460   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuAvailableCodecsList_impl },
4461   { 0, 0, 0, NULL }
4462 };
4463
4464 static int
4465 dissect_gsm_map_ProcessAccessSignallingArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4466   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4467                                    ProcessAccessSignallingArgV3_sequence, hf_index, ett_gsm_map_ProcessAccessSignallingArgV3);
4468
4469   return offset;
4470 }
4471
4472
4473 static const value_string gsm_map_KeyStatus_vals[] = {
4474   {   0, "old" },
4475   {   1, "new" },
4476   { 0, NULL }
4477 };
4478
4479
4480 static int
4481 dissect_gsm_map_KeyStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4482   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4483                                   NULL);
4484
4485   return offset;
4486 }
4487 static int dissect_keyStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4488   return dissect_gsm_map_KeyStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_keyStatus);
4489 }
4490
4491
4492 static const ber_sequence_t ForwardAccessSignallingArgV3_sequence[] = {
4493   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4494   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_integrityProtectionInfo },
4495   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_encryptionInfo },
4496   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_keyStatus },
4497   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allowedGSM_Algorithms },
4498   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_allowedUMTS_Algorithms },
4499   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_radioResourceInformation },
4500   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
4501   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_radioResourceList },
4502   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_bssmap_ServiceHandover },
4503   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_ranap_ServiceHandover },
4504   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_bssmap_ServiceHandoverList },
4505   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_currentlyUsedCodec },
4506   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_iuSupportedCodecsList },
4507   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_rab_ConfigurationIndicator },
4508   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_iuSelectedCodec },
4509   { 0, 0, 0, NULL }
4510 };
4511
4512 static int
4513 dissect_gsm_map_ForwardAccessSignallingArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4514   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4515                                    ForwardAccessSignallingArgV3_sequence, hf_index, ett_gsm_map_ForwardAccessSignallingArgV3);
4516
4517   return offset;
4518 }
4519
4520
4521 static const ber_sequence_t PrepareSubsequentHOArg_sequence[] = {
4522   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetCellId },
4523   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetMSC_Number },
4524   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
4525   { 0, 0, 0, NULL }
4526 };
4527
4528 static int
4529 dissect_gsm_map_PrepareSubsequentHOArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4530   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4531                                    PrepareSubsequentHOArg_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOArg);
4532
4533   return offset;
4534 }
4535
4536
4537 static const ber_sequence_t PrepareSubsequentHOArgV3_sequence[] = {
4538   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
4539   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_targetMSC_Number_impl },
4540   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
4541   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
4542   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedRab_Id_impl },
4543   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4544   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
4545   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
4546   { 0, 0, 0, NULL }
4547 };
4548
4549 static int
4550 dissect_gsm_map_PrepareSubsequentHOArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4551   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4552                                    PrepareSubsequentHOArgV3_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOArgV3);
4553
4554   return offset;
4555 }
4556
4557
4558 static const ber_sequence_t PrepareSubsequentHOResV3_sequence[] = {
4559   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4560   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4561   { 0, 0, 0, NULL }
4562 };
4563
4564 static int
4565 dissect_gsm_map_PrepareSubsequentHOResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4566   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4567                                    PrepareSubsequentHOResV3_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOResV3);
4568
4569   return offset;
4570 }
4571
4572
4573
4574 static int
4575 dissect_gsm_map_SendAuthenticationInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4576   offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4577
4578   return offset;
4579 }
4580
4581
4582 static const ber_sequence_t Re_synchronisationInfo_sequence[] = {
4583   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
4584   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_auts },
4585   { 0, 0, 0, NULL }
4586 };
4587
4588 static int
4589 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_) {
4590   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4591                                    Re_synchronisationInfo_sequence, hf_index, ett_gsm_map_Re_synchronisationInfo);
4592
4593   return offset;
4594 }
4595 static int dissect_re_synchronisationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4596   return dissect_gsm_map_Re_synchronisationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_synchronisationInfo);
4597 }
4598
4599
4600 static const value_string gsm_map_RequestingNodeType_vals[] = {
4601   {   0, "vlr" },
4602   {   1, "sgsn" },
4603   { 0, NULL }
4604 };
4605
4606
4607 static int
4608 dissect_gsm_map_RequestingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4609   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4610                                   NULL);
4611
4612   return offset;
4613 }
4614 static int dissect_requestingNodeType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4615   return dissect_gsm_map_RequestingNodeType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingNodeType);
4616 }
4617
4618
4619
4620 static int
4621 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_) {
4622   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4623                                        NULL);
4624
4625   return offset;
4626 }
4627 static int dissect_requestingPLMN_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4628   return dissect_gsm_map_PLMN_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingPLMN_Id);
4629 }
4630
4631
4632 static const ber_sequence_t SendAuthenticationInfoArgV2_sequence[] = {
4633   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4634   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
4635   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
4636   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immediateResponsePreferred_impl },
4637   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_synchronisationInfo },
4638   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4639   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingNodeType_impl },
4640   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingPLMN_Id_impl },
4641   { 0, 0, 0, NULL }
4642 };
4643
4644 static int
4645 dissect_gsm_map_SendAuthenticationInfoArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4646   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4647                                    SendAuthenticationInfoArgV2_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoArgV2);
4648
4649   return offset;
4650 }
4651
4652
4653 static const ber_sequence_t SendAuthenticationInfoRes_item_sequence[] = {
4654   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
4655   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
4656   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
4657   { 0, 0, 0, NULL }
4658 };
4659
4660 static int
4661 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_) {
4662   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4663                                    SendAuthenticationInfoRes_item_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoRes_item);
4664
4665   return offset;
4666 }
4667 static int dissect_SendAuthenticationInfoRes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4668   return dissect_gsm_map_SendAuthenticationInfoRes_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes_item);
4669 }
4670
4671
4672 static const ber_sequence_t SendAuthenticationInfoRes_sequence_of[1] = {
4673   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SendAuthenticationInfoRes_item },
4674 };
4675
4676 static int
4677 dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4678   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4679                                       SendAuthenticationInfoRes_sequence_of, hf_index, ett_gsm_map_SendAuthenticationInfoRes);
4680
4681   return offset;
4682 }
4683
4684
4685 static const ber_sequence_t SendAuthenticationInfoResV3_sequence[] = {
4686   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
4687   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4688   { 0, 0, 0, NULL }
4689 };
4690
4691 static int
4692 dissect_gsm_map_SendAuthenticationInfoResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4693   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4694                                    SendAuthenticationInfoResV3_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoResV3);
4695
4696   return offset;
4697 }
4698
4699
4700
4701 static int
4702 dissect_gsm_map_CheckIMEIArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4703   offset = dissect_gsm_map_IMEI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4704
4705   return offset;
4706 }
4707
4708
4709 static const asn_namedbit RequestedEquipmentInfo_bits[] = {
4710   {  0, &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus, -1, -1, "equipmentStatus", NULL },
4711   {  1, &hf_gsm_map_RequestedEquipmentInfo_bmuef, -1, -1, "bmuef", NULL },
4712   { 0, NULL, 0, 0, NULL, NULL }
4713 };
4714
4715 static int
4716 dissect_gsm_map_RequestedEquipmentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4717   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4718                                     RequestedEquipmentInfo_bits, hf_index, ett_gsm_map_RequestedEquipmentInfo,
4719                                     NULL);
4720
4721   return offset;
4722 }
4723 static int dissect_requestedEquipmentInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4724   return dissect_gsm_map_RequestedEquipmentInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_requestedEquipmentInfo);
4725 }
4726
4727
4728 static const ber_sequence_t CheckIMEIArgV2_sequence[] = {
4729   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imei },
4730   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_requestedEquipmentInfo },
4731   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4732   { 0, 0, 0, NULL }
4733 };
4734
4735 static int
4736 dissect_gsm_map_CheckIMEIArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4737   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4738                                    CheckIMEIArgV2_sequence, hf_index, ett_gsm_map_CheckIMEIArgV2);
4739
4740   return offset;
4741 }
4742
4743
4744 static const value_string gsm_map_EquipmentStatus_vals[] = {
4745   {   0, "whiteListed" },
4746   {   1, "blackListed" },
4747   {   2, "greyListed" },
4748   { 0, NULL }
4749 };
4750
4751
4752 static int
4753 dissect_gsm_map_EquipmentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4754   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4755                                   NULL);
4756
4757   return offset;
4758 }
4759 static int dissect_equipmentStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4760   return dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus);
4761 }
4762
4763
4764 static const ber_sequence_t CheckIMEIRes_sequence[] = {
4765   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_equipmentStatus },
4766   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bmuef },
4767   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
4768   { 0, 0, 0, NULL }
4769 };
4770
4771 static int
4772 dissect_gsm_map_CheckIMEIRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4773   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4774                                    CheckIMEIRes_sequence, hf_index, ett_gsm_map_CheckIMEIRes);
4775
4776   return offset;
4777 }
4778
4779
4780 static const value_string gsm_map_OverrideCategory_vals[] = {
4781   {   0, "overrideEnabled" },
4782   {   1, "overrideDisabled" },
4783   { 0, NULL }
4784 };
4785
4786
4787 static int
4788 dissect_gsm_map_OverrideCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4789   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4790                                   NULL);
4791
4792   return offset;
4793 }
4794 static int dissect_overrideCategory_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4795   return dissect_gsm_map_OverrideCategory(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_overrideCategory);
4796 }
4797
4798
4799 static const value_string gsm_map_BasicService_vals[] = {
4800   {   2, "bearerservice" },
4801   {   3, "teleservice" },
4802   { 0, NULL }
4803 };
4804
4805 static const ber_choice_t BasicService_choice[] = {
4806   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerservice_impl },
4807   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
4808   { 0, 0, 0, 0, NULL }
4809 };
4810
4811 static int
4812 dissect_gsm_map_BasicService(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4813   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4814                                  BasicService_choice, hf_index, ett_gsm_map_BasicService,
4815                                  NULL);
4816
4817   return offset;
4818 }
4819 static int dissect_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4820   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceGroupList_item);
4821 }
4822
4823
4824 static const ber_sequence_t BasicServiceGroupList_sequence_of[1] = {
4825   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
4826 };
4827
4828 static int
4829 dissect_gsm_map_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4830   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4831                                       BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_BasicServiceGroupList);
4832
4833   return offset;
4834 }
4835 static int dissect_ext_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4836   return dissect_gsm_map_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
4837 }
4838 static int dissect_ext_basicServiceGroupList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4839   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
4840 }
4841
4842
4843 static const asn_namedbit ODB_GeneralData_bits[] = {
4844   {  0, &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred, -1, -1, "allOG-CallsBarred", NULL },
4845   {  1, &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred, -1, -1, "internationalOGCallsBarred", NULL },
4846   {  2, &hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "internationalOGCallsNotToHPLMN-CountryBarred", NULL },
4847   {  6, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred, -1, -1, "interzonalOGCallsBarred", NULL },
4848   {  7, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsNotToHPLMN-CountryBarred", NULL },
4849   {  8, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", NULL },
4850   {  3, &hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred, -1, -1, "premiumRateInformationOGCallsBarred", NULL },
4851   {  4, &hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred, -1, -1, "premiumRateEntertainementOGCallsBarred", NULL },
4852   {  5, &hf_gsm_map_ODB_GeneralData_ss_AccessBarred, -1, -1, "ss-AccessBarred", NULL },
4853   {  9, &hf_gsm_map_ODB_GeneralData_allECT_Barred, -1, -1, "allECT-Barred", NULL },
4854   { 10, &hf_gsm_map_ODB_GeneralData_chargeableECT_Barred, -1, -1, "chargeableECT-Barred", NULL },
4855   { 11, &hf_gsm_map_ODB_GeneralData_internationalECT_Barred, -1, -1, "internationalECT-Barred", NULL },
4856   { 12, &hf_gsm_map_ODB_GeneralData_interzonalECT_Barred, -1, -1, "interzonalECT-Barred", NULL },
4857   { 13, &hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred, -1, -1, "doublyChargeableECT-Barred", NULL },
4858   { 14, &hf_gsm_map_ODB_GeneralData_multipleECT_Barred, -1, -1, "multipleECT-Barred", NULL },
4859   { 15, &hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred, -1, -1, "allPacketOrientedServicesBarred", NULL },
4860   { 16, &hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred, -1, -1, "roamerAccessToHPLMN-AP-Barred", NULL },
4861   { 17, &hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred, -1, -1, "roamerAccessToVPLMN-AP-Barred", NULL },
4862   { 18, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred, -1, -1, "roamingOutsidePLMNOG-CallsBarred", NULL },
4863   { 19, &hf_gsm_map_ODB_GeneralData_allIC_CallsBarred, -1, -1, "allIC-CallsBarred", NULL },
4864   { 20, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred, -1, -1, "roamingOutsidePLMNIC-CallsBarred", NULL },
4865   { 21, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, -1, -1, "roamingOutsidePLMNICountryIC-CallsBarred", NULL },
4866   { 22, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred, -1, -1, "roamingOutsidePLMN-Barred", NULL },
4867   { 23, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred, -1, -1, "roamingOutsidePLMN-CountryBarred", NULL },
4868   { 24, &hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred, -1, -1, "registrationAllCF-Barred", NULL },
4869   { 25, &hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred, -1, -1, "registrationCFNotToHPLMN-Barred", NULL },
4870   { 26, &hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred, -1, -1, "registrationInterzonalCF-Barred", NULL },
4871   { 27, &hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, -1, -1, "registrationInterzonalCFNotToHPLMN-Barred", NULL },
4872   { 28, &hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred, -1, -1, "registrationInternationalCF-Barred", NULL },
4873   { 0, NULL, 0, 0, NULL, NULL }
4874 };
4875
4876 static int
4877 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_) {
4878   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4879                                     ODB_GeneralData_bits, hf_index, ett_gsm_map_ODB_GeneralData,
4880                                     NULL);
4881
4882   return offset;
4883 }
4884 static int dissect_odb_GeneralData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4885   return dissect_gsm_map_ODB_GeneralData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
4886 }
4887 static int dissect_odb_GeneralData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4888   return dissect_gsm_map_ODB_GeneralData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
4889 }
4890
4891
4892 static const asn_namedbit ODB_HPLMN_Data_bits[] = {
4893   {  0, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1, -1, -1, "plmn-SpecificBarringType1", NULL },
4894   {  1, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2, -1, -1, "plmn-SpecificBarringType2", NULL },
4895   {  2, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3, -1, -1, "plmn-SpecificBarringType3", NULL },
4896   {  3, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4, -1, -1, "plmn-SpecificBarringType4", NULL },
4897   { 0, NULL, 0, 0, NULL, NULL }
4898 };
4899
4900 static int
4901 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_) {
4902   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4903                                     ODB_HPLMN_Data_bits, hf_index, ett_gsm_map_ODB_HPLMN_Data,
4904                                     NULL);
4905
4906   return offset;
4907 }
4908 static int dissect_odb_HPLMN_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4909   return dissect_gsm_map_ODB_HPLMN_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_HPLMN_Data);
4910 }
4911
4912
4913 static const value_string gsm_map_SubscriberStatus_vals[] = {
4914   {   0, "serviceGranted" },
4915   {   1, "operatorDeterminedBarring" },
4916   { 0, NULL }
4917 };
4918
4919
4920 static int
4921 dissect_gsm_map_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4922   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4923                                   NULL);
4924
4925   return offset;
4926 }
4927 static int dissect_subscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4928   return dissect_gsm_map_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStatus);
4929 }
4930
4931
4932 static const value_string gsm_map_BcsmTriggerDetectionPoint_vals[] = {
4933   {   2, "collectedInfo" },
4934   {   4, "routeSelectFailure" },
4935   {  12, "termAttemptAuthorized" },
4936   {  13, "tBusy" },
4937   {  14, "tNoAnswer" },
4938   { 0, NULL }
4939 };
4940
4941
4942 static int
4943 dissect_gsm_map_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4944   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4945                                   NULL);
4946
4947   return offset;
4948 }
4949 static int dissect_bcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4950   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bcsmTriggerDetectionPoint);
4951 }
4952
4953
4954
4955 static int
4956 dissect_gsm_map_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4957   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4958                                   NULL);
4959
4960   return offset;
4961 }
4962 static int dissect_serviceKey(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4963   return dissect_gsm_map_ServiceKey(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
4964 }
4965 static int dissect_serviceKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4966   return dissect_gsm_map_ServiceKey(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
4967 }
4968
4969
4970
4971 static int
4972 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_) {
4973   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4974                                        NULL);
4975
4976   return offset;
4977 }
4978 static int dissect_gsmSCFAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4979   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCFAddress);
4980 }
4981
4982
4983 static const value_string gsm_map_DefaultCallHandling_vals[] = {
4984   {   0, "continueCall" },
4985   {   1, "releaseCall" },
4986   { 0, NULL }
4987 };
4988
4989
4990 static int
4991 dissect_gsm_map_DefaultCallHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4992   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4993                                   NULL);
4994
4995   return offset;
4996 }
4997 static int dissect_defaultCallHandling(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4998   return dissect_gsm_map_DefaultCallHandling(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
4999 }
5000 static int dissect_defaultCallHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5001   return dissect_gsm_map_DefaultCallHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
5002 }
5003
5004
5005 static const ber_sequence_t BcsmCamelTDPData_sequence[] = {
5006   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_bcsmTriggerDetectionPoint },
5007   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5008   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCFAddress_impl },
5009   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
5010   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5011   { 0, 0, 0, NULL }
5012 };
5013
5014 static int
5015 dissect_gsm_map_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5016   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5017                                    BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_BcsmCamelTDPData);
5018
5019   return offset;
5020 }
5021 static int dissect_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5022   return dissect_gsm_map_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BcsmCamelTDPDataList_item);
5023 }
5024
5025
5026 static const ber_sequence_t BcsmCamelTDPDataList_sequence_of[1] = {
5027   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BcsmCamelTDPDataList_item },
5028 };
5029
5030 static int
5031 dissect_gsm_map_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5032   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5033                                       BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_BcsmCamelTDPDataList);
5034
5035   return offset;
5036 }
5037
5038
5039 static const value_string gsm_map_O_BcsmTriggerDetectionPoint_vals[] = {
5040   {   2, "collectedInfo" },
5041   {   4, "routeSelectFailure" },
5042   { 0, NULL }
5043 };
5044
5045
5046 static int
5047 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_) {
5048   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5049                                   NULL);
5050
5051   return offset;
5052 }
5053 static int dissect_o_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5054   return dissect_gsm_map_O_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmTriggerDetectionPoint);
5055 }
5056
5057
5058 static const ber_sequence_t O_BcsmCamelTDPData_sequence[] = {
5059   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
5060   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5061   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
5062   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
5063   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5064   { 0, 0, 0, NULL }
5065 };
5066
5067 static int
5068 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_) {
5069   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5070                                    O_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDPData);
5071
5072   return offset;
5073 }
5074 static int dissect_O_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5075   return dissect_gsm_map_O_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDPDataList_item);
5076 }
5077
5078
5079 static const ber_sequence_t O_BcsmCamelTDPDataList_sequence_of[1] = {
5080   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDPDataList_item },
5081 };
5082
5083 static int
5084 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_) {
5085   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5086                                       O_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDPDataList);
5087
5088   return offset;
5089 }
5090 static int dissect_o_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5091   return dissect_gsm_map_O_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPDataList);
5092 }
5093
5094
5095
5096 static int
5097 dissect_gsm_map_CamelCapabilityHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5098   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5099                                   NULL);
5100
5101   return offset;
5102 }
5103 static int dissect_camelCapabilityHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5104   return dissect_gsm_map_CamelCapabilityHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelCapabilityHandling);
5105 }
5106
5107
5108 static const ber_sequence_t O_CSI_sequence[] = {
5109   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_BcsmCamelTDPDataList },
5110   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5111   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
5112   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5113   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csiActive_impl },
5114   { 0, 0, 0, NULL }
5115 };
5116
5117 static int
5118 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_) {
5119   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5120                                    O_CSI_sequence, hf_index, ett_gsm_map_O_CSI);
5121
5122   return offset;
5123 }
5124 static int dissect_o_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5125   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CSI);
5126 }
5127 static int dissect_o_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5128   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_CSI);
5129 }
5130
5131
5132
5133 static int
5134 dissect_gsm_map_Category(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5135   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5136                                        NULL);
5137
5138   return offset;
5139 }
5140 static int dissect_category_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5141   return dissect_gsm_map_Category(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_category);
5142 }
5143
5144
5145
5146 static int
5147 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_) {
5148   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5149                                        NULL);
5150
5151   return offset;
5152 }
5153 static int dissect_BearerServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5154   return dissect_gsm_map_Ext_BearerServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BearerServiceList_item);
5155 }
5156 static int dissect_ext_BearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5157   return dissect_gsm_map_Ext_BearerServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_BearerService);
5158 }
5159
5160
5161 static const ber_sequence_t BearerServiceList_sequence_of[1] = {
5162   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_BearerServiceList_item },
5163 };
5164
5165 static int
5166 dissect_gsm_map_BearerServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5167   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5168                                       BearerServiceList_sequence_of, hf_index, ett_gsm_map_BearerServiceList);
5169
5170   return offset;
5171 }
5172 static int dissect_bearerserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5173   return dissect_gsm_map_BearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerserviceList);
5174 }
5175 static int dissect_bearerServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5176   return dissect_gsm_map_BearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerServiceList);
5177 }
5178
5179
5180
5181 static int
5182 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_) {
5183   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5184                                        NULL);
5185
5186   return offset;
5187 }
5188 static int dissect_TeleserviceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5189   return dissect_gsm_map_Ext_TeleserviceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TeleserviceList_item);
5190 }
5191 static int dissect_ext_Teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5192   return dissect_gsm_map_Ext_TeleserviceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_Teleservice);
5193 }
5194 static int dissect_ext_teleservice(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5195   return dissect_gsm_map_Ext_TeleserviceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_teleservice);
5196 }
5197
5198
5199 static const ber_sequence_t TeleserviceList_sequence_of[1] = {
5200   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_TeleserviceList_item },
5201 };
5202
5203 static int
5204 dissect_gsm_map_TeleserviceList(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                                       TeleserviceList_sequence_of, hf_index, ett_gsm_map_TeleserviceList);
5207
5208   return offset;
5209 }
5210 static int dissect_teleserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5211   return dissect_gsm_map_TeleserviceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList);
5212 }
5213
5214
5215
5216 int
5217 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_) {
5218   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5219                                        NULL);
5220
5221   return offset;
5222 }
5223 static int dissect_ss_Code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5224   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
5225 }
5226 static int dissect_ss_Code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5227   return dissect_gsm_map_SS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
5228 }
5229 static int dissect_SS_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5230   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SS_List_item);
5231 }
5232 static int dissect_SS_EventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5233   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SS_EventList_item);
5234 }
5235
5236
5237 const value_string gsm_map_Ext_BasicServiceCode_vals[] = {
5238   {   2, "ext-BearerService" },
5239   {   3, "ext-Teleservice" },
5240   { 0, NULL }
5241 };
5242
5243 static const ber_choice_t Ext_BasicServiceCode_choice[] = {
5244   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_BearerService_impl },
5245   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_Teleservice_impl },
5246   { 0, 0, 0, 0, NULL }
5247 };
5248
5249 int
5250 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_) {
5251   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5252                                  Ext_BasicServiceCode_choice, hf_index, ett_gsm_map_Ext_BasicServiceCode,
5253                                  NULL);
5254
5255   return offset;
5256 }
5257 static int dissect_BasicServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5258   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceList_item);
5259 }
5260 static int dissect_ext_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5261   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicService);
5262 }
5263 static int dissect_ext_basicService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5264   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicService);
5265 }
5266 static int dissect_Ext_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5267   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_BasicServiceGroupList_item);
5268 }
5269 static int dissect_ext_basicServiceGroup(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5270   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroup);
5271 }
5272 static int dissect_ext_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5273   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroup);
5274 }
5275 static int dissect_basicServiceGroup2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5276   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup2);
5277 }
5278 static int dissect_basicService2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5279   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicService2);
5280 }
5281 static int dissect_BasicServiceCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5282   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceCriteria_item);
5283 }
5284
5285
5286
5287 static int
5288 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_) {
5289 #line 295 "gsmmap.cnf"
5290  /* Note Ext-SS-Status can have more than one byte */
5291
5292  tvbuff_t       *parameter_tvb;
5293  guint8         octet;
5294
5295   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5296                                        &parameter_tvb);
5297
5298
5299  if (!parameter_tvb)
5300         return offset;
5301
5302  octet = tvb_get_guint8(parameter_tvb,0);
5303
5304  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
5305  if ((octet & 0x01)== 1)        
5306         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
5307                                                                                 
5308  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
5309  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
5310  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
5311
5312
5313
5314
5315   return offset;
5316 }
5317 static int dissect_ext_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5318   return dissect_gsm_map_Ext_SS_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Status);
5319 }
5320 static int dissect_ext_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5321   return dissect_gsm_map_Ext_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Status);
5322 }
5323
5324
5325
5326 int
5327 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_) {
5328   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5329                                        NULL);
5330
5331   return offset;
5332 }
5333 static int dissect_forwardedToSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5334   return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToSubaddress);
5335 }
5336 static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5337   return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberSubaddress);
5338 }
5339
5340
5341
5342 static int
5343 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_) {
5344   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5345                                        NULL);
5346
5347   return offset;
5348 }
5349
5350
5351
5352 static int
5353 dissect_gsm_map_T_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5354   offset = dissect_gsm_map_Ext_ForwOptions(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5355
5356 #line 421 "gsmmap.cnf"
5357
5358         proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
5359         proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
5360         proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
5361         proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
5362
5363
5364   return offset;
5365 }
5366 static int dissect_ext_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5367   return dissect_gsm_map_T_forwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingOptions);
5368 }
5369
5370
5371
5372 static int
5373 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_) {
5374   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5375                                   NULL);
5376
5377   return offset;
5378 }
5379 static int dissect_ext_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5380   return dissect_gsm_map_Ext_NoRepCondTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_noReplyConditionTime);
5381 }
5382
5383
5384
5385 int
5386 dissect_gsm_map_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5387 #line 245 "gsmmap.cnf"
5388
5389  tvbuff_t       *parameter_tvb;
5390  char           *digit_str;
5391
5392   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5393                                        &parameter_tvb);
5394
5395
5396  if (!parameter_tvb)
5397         return offset;
5398
5399  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
5400  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
5401  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
5402
5403  digit_str = unpack_digits(parameter_tvb, 1);
5404
5405  proto_tree_add_string(tree, hf_gsm_map_address_digits, parameter_tvb, 1, -1, digit_str);
5406
5407
5408
5409   return offset;
5410 }
5411 static int dissect_forwardedToNumber_addr_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5412   return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber_addr);
5413 }
5414 static int dissect_lcsClientDialedByMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5415   return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientDialedByMS);
5416 }
5417
5418
5419
5420 static int
5421 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_) {
5422   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5423
5424   return offset;
5425 }
5426 static int dissect_longForwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5427   return dissect_gsm_map_FTN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longForwardedToNumber);
5428 }
5429
5430
5431 static const ber_sequence_t Ext_ForwFeature_sequence[] = {
5432   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
5433   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
5434   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
5435   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
5436   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_forwardingOptions_impl },
5437   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_noReplyConditionTime_impl },
5438   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5439   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
5440   { 0, 0, 0, NULL }
5441 };
5442
5443 static int
5444 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_) {
5445   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5446                                    Ext_ForwFeature_sequence, hf_index, ett_gsm_map_Ext_ForwFeature);
5447
5448   return offset;
5449 }
5450 static int dissect_Ext_ForwFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5451   return dissect_gsm_map_Ext_ForwFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_ForwFeatureList_item);
5452 }
5453
5454
5455 static const ber_sequence_t Ext_ForwFeatureList_sequence_of[1] = {
5456   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_ForwFeatureList_item },
5457 };
5458
5459 static int
5460 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_) {
5461   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5462                                       Ext_ForwFeatureList_sequence_of, hf_index, ett_gsm_map_Ext_ForwFeatureList);
5463
5464   return offset;
5465 }
5466 static int dissect_ext_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5467   return dissect_gsm_map_Ext_ForwFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingFeatureList);
5468 }
5469 static int dissect_ext_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5470   return dissect_gsm_map_Ext_ForwFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingFeatureList);
5471 }
5472
5473
5474 static const ber_sequence_t Ext_ForwInfo_sequence[] = {
5475   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5476   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_forwardingFeatureList },
5477   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5478   { 0, 0, 0, NULL }
5479 };
5480
5481 static int
5482 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_) {
5483   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5484                                    Ext_ForwInfo_sequence, hf_index, ett_gsm_map_Ext_ForwInfo);
5485
5486   return offset;
5487 }
5488 static int dissect_ext_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5489   return dissect_gsm_map_Ext_ForwInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingInfo);
5490 }
5491
5492
5493 static const ber_sequence_t Ext_CallBarringFeature_sequence[] = {
5494   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
5495   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
5496   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5497   { 0, 0, 0, NULL }
5498 };
5499
5500 static int
5501 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_) {
5502   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5503                                    Ext_CallBarringFeature_sequence, hf_index, ett_gsm_map_Ext_CallBarringFeature);
5504
5505   return offset;
5506 }
5507 static int dissect_Ext_CallBarFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5508   return dissect_gsm_map_Ext_CallBarringFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_CallBarFeatureList_item);
5509 }
5510
5511
5512 static const ber_sequence_t Ext_CallBarFeatureList_sequence_of[1] = {
5513   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_CallBarFeatureList_item },
5514 };
5515
5516 static int
5517 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_) {
5518   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5519                                       Ext_CallBarFeatureList_sequence_of, hf_index, ett_gsm_map_Ext_CallBarFeatureList);
5520
5521   return offset;
5522 }
5523 static int dissect_ext_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5524   return dissect_gsm_map_Ext_CallBarFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringFeatureList);
5525 }
5526 static int dissect_ext_callBarringFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5527   return dissect_gsm_map_Ext_CallBarFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringFeatureList);
5528 }
5529
5530
5531 static const ber_sequence_t Ext_CallBarInfo_sequence[] = {
5532   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5533   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_callBarringFeatureList },
5534   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5535   { 0, 0, 0, NULL }
5536 };
5537
5538 static int
5539 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_) {
5540   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5541                                    Ext_CallBarInfo_sequence, hf_index, ett_gsm_map_Ext_CallBarInfo);
5542
5543   return offset;
5544 }
5545 static int dissect_ext_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5546   return dissect_gsm_map_Ext_CallBarInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringInfo);
5547 }
5548
5549
5550
5551 int
5552 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_) {
5553   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5554                                   NULL);
5555
5556   return offset;
5557 }
5558 static int dissect_cug_Index(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5559   return dissect_gsm_map_CUG_Index(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Index);
5560 }
5561 static int dissect_preferentialCUG_Indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5562   return dissect_gsm_map_CUG_Index(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_preferentialCUG_Indicator);
5563 }
5564
5565
5566
5567 int
5568 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_) {
5569   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5570                                        NULL);
5571
5572   return offset;
5573 }
5574 static int dissect_cug_Interlock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5575   return dissect_gsm_map_CUG_Interlock(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Interlock);
5576 }
5577
5578
5579 static const value_string gsm_map_IntraCUG_Options_vals[] = {
5580   {   0, "noCUG-Restrictions" },
5581   {   1, "cugIC-CallBarred" },
5582   {   2, "cugOG-CallBarred" },
5583   { 0, NULL }
5584 };
5585
5586
5587 static int
5588 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_) {
5589   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5590                                   NULL);
5591
5592   return offset;
5593 }
5594 static int dissect_intraCUG_Options(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5595   return dissect_gsm_map_IntraCUG_Options(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_intraCUG_Options);
5596 }
5597
5598
5599 static const ber_sequence_t Ext_BasicServiceGroupList_sequence_of[1] = {
5600   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_BasicServiceGroupList_item },
5601 };
5602
5603 static int
5604 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_) {
5605   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5606                                       Ext_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_Ext_BasicServiceGroupList);
5607
5608   return offset;
5609 }
5610 static int dissect_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5611   return dissect_gsm_map_Ext_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
5612 }
5613
5614
5615 static const ber_sequence_t CUG_Subscription_sequence[] = {
5616   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cug_Index },
5617   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
5618   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_intraCUG_Options },
5619   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
5620   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5621   { 0, 0, 0, NULL }
5622 };
5623
5624 static int
5625 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_) {
5626   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5627                                    CUG_Subscription_sequence, hf_index, ett_gsm_map_CUG_Subscription);
5628
5629   return offset;
5630 }
5631 static int dissect_CUG_SubscriptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5632   return dissect_gsm_map_CUG_Subscription(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CUG_SubscriptionList_item);
5633 }
5634
5635
5636 static const ber_sequence_t CUG_SubscriptionList_sequence_of[1] = {
5637   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CUG_SubscriptionList_item },
5638 };
5639
5640 static int
5641 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_) {
5642   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5643                                       CUG_SubscriptionList_sequence_of, hf_index, ett_gsm_map_CUG_SubscriptionList);
5644
5645   return offset;
5646 }
5647 static int dissect_cug_SubscriptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5648   return dissect_gsm_map_CUG_SubscriptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList);
5649 }
5650
5651
5652
5653 static int
5654 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_) {
5655   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5656                                        NULL);
5657
5658   return offset;
5659 }
5660 static int dissect_interCUG_Restrictions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5661   return dissect_gsm_map_InterCUG_Restrictions(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_interCUG_Restrictions);
5662 }
5663
5664
5665 static const ber_sequence_t CUG_Feature_sequence[] = {
5666   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
5667   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_preferentialCUG_Indicator },
5668   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_interCUG_Restrictions },
5669   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5670   { 0, 0, 0, NULL }
5671 };
5672
5673 static int
5674 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_) {
5675   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5676                                    CUG_Feature_sequence, hf_index, ett_gsm_map_CUG_Feature);
5677
5678   return offset;
5679 }
5680 static int dissect_CUG_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5681   return dissect_gsm_map_CUG_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CUG_FeatureList_item);
5682 }
5683
5684
5685 static const ber_sequence_t CUG_FeatureList_sequence_of[1] = {
5686   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CUG_FeatureList_item },
5687 };
5688
5689 static int
5690 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_) {
5691   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5692                                       CUG_FeatureList_sequence_of, hf_index, ett_gsm_map_CUG_FeatureList);
5693
5694   return offset;
5695 }
5696 static int dissect_cug_FeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5697   return dissect_gsm_map_CUG_FeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList);
5698 }
5699
5700
5701 static const ber_sequence_t CUG_Info_sequence[] = {
5702   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList },
5703   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList },
5704   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5705   { 0, 0, 0, NULL }
5706 };
5707
5708 int
5709 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_) {
5710   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5711                                    CUG_Info_sequence, hf_index, ett_gsm_map_CUG_Info);
5712
5713   return offset;
5714 }
5715 static int dissect_cug_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5716   return dissect_gsm_map_CUG_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Info);
5717 }
5718
5719
5720 static const value_string gsm_map_CliRestrictionOption_vals[] = {
5721   {   0, "permanent" },
5722   {   1, "temporaryDefaultRestricted" },
5723   {   2, "temporaryDefaultAllowed" },
5724   { 0, NULL }
5725 };
5726
5727
5728 static int
5729 dissect_gsm_map_CliRestrictionOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5730   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5731                                   NULL);
5732
5733   return offset;
5734 }
5735 static int dissect_cliRestrictionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5736   return dissect_gsm_map_CliRestrictionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
5737 }
5738 static int dissect_cliRestrictionOption_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5739   return dissect_gsm_map_CliRestrictionOption(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
5740 }
5741
5742
5743 static const value_string gsm_map_SS_SubscriptionOption_vals[] = {
5744   {   2, "cliRestrictionOption" },
5745   {   1, "overrideCategory" },
5746   { 0, NULL }
5747 };
5748
5749 static const ber_choice_t SS_SubscriptionOption_choice[] = {
5750   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
5751   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_overrideCategory_impl },
5752   { 0, 0, 0, 0, NULL }
5753 };
5754
5755 static int
5756 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_) {
5757   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5758                                  SS_SubscriptionOption_choice, hf_index, ett_gsm_map_SS_SubscriptionOption,
5759                                  NULL);
5760
5761   return offset;
5762 }
5763 static int dissect_ss_SubscriptionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5764   return dissect_gsm_map_SS_SubscriptionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_SubscriptionOption);
5765 }
5766
5767
5768 static const ber_sequence_t Ext_SS_Data_sequence[] = {
5769   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5770   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
5771   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
5772   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
5773   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5774   { 0, 0, 0, NULL }
5775 };
5776
5777 static int
5778 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_) {
5779   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5780                                    Ext_SS_Data_sequence, hf_index, ett_gsm_map_Ext_SS_Data);
5781
5782   return offset;
5783 }
5784 static int dissect_ext_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5785   return dissect_gsm_map_Ext_SS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Data);
5786 }
5787
5788
5789
5790 static int
5791 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_) {
5792   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5793                                   NULL);
5794
5795   return offset;
5796 }
5797 static int dissect_maximumentitledPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5798   return dissect_gsm_map_EMLPP_Priority(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_maximumentitledPriority);
5799 }
5800 static int dissect_defaultPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5801   return dissect_gsm_map_EMLPP_Priority(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
5802 }
5803 static int dissect_defaultPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5804   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
5805 }
5806 static int dissect_maximumEntitledPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5807   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_maximumEntitledPriority);
5808 }
5809 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5810   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_priority);
5811 }
5812
5813
5814 static const ber_sequence_t EMLPP_Info_sequence[] = {
5815   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maximumentitledPriority },
5816   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
5817   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5818   { 0, 0, 0, NULL }
5819 };
5820
5821 static int
5822 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_) {
5823   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5824                                    EMLPP_Info_sequence, hf_index, ett_gsm_map_EMLPP_Info);
5825
5826   return offset;
5827 }
5828 static int dissect_emlpp_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5829   return dissect_gsm_map_EMLPP_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_emlpp_Info);
5830 }
5831
5832
5833 static const value_string gsm_map_Ext_SS_Info_vals[] = {
5834   {   0, "forwardingInfo" },
5835   {   1, "callBarringInfo" },
5836   {   2, "cug-Info" },
5837   {   3, "ss-Data" },
5838   {   4, "emlpp-Info" },
5839   { 0, NULL }
5840 };
5841
5842 static const ber_choice_t Ext_SS_Info_choice[] = {
5843   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ext_forwardingInfo_impl },
5844   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_callBarringInfo_impl },
5845   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cug_Info_impl },
5846   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_ss_Data_impl },
5847   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_emlpp_Info_impl },
5848   { 0, 0, 0, 0, NULL }
5849 };
5850
5851 static int
5852 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_) {
5853   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5854                                  Ext_SS_Info_choice, hf_index, ett_gsm_map_Ext_SS_Info,
5855                                  NULL);
5856
5857   return offset;
5858 }
5859 static int dissect_Ext_SS_InfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5860   return dissect_gsm_map_Ext_SS_Info(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_SS_InfoList_item);
5861 }
5862
5863
5864 static const ber_sequence_t Ext_SS_InfoList_sequence_of[1] = {
5865   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_SS_InfoList_item },
5866 };
5867
5868 static int
5869 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_) {
5870   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5871                                       Ext_SS_InfoList_sequence_of, hf_index, ett_gsm_map_Ext_SS_InfoList);
5872
5873   return offset;
5874 }
5875 static int dissect_provisionedSS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5876   return dissect_gsm_map_Ext_SS_InfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS);
5877 }
5878
5879
5880 static const ber_sequence_t ODB_Data_sequence[] = {
5881   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_odb_GeneralData },
5882   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_odb_HPLMN_Data },
5883   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5884   { 0, 0, 0, NULL }
5885 };
5886
5887 static int
5888 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_) {
5889   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5890                                    ODB_Data_sequence, hf_index, ett_gsm_map_ODB_Data);
5891
5892   return offset;
5893 }
5894 static int dissect_odb_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5895   return dissect_gsm_map_ODB_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
5896 }
5897 static int dissect_odb_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5898   return dissect_gsm_map_ODB_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
5899 }
5900 static int dissect_odb_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5901   return dissect_gsm_map_ODB_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_data);
5902 }
5903
5904
5905
5906 static int
5907 dissect_gsm_map_ZoneCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5908   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5909                                        NULL);
5910
5911   return offset;
5912 }
5913 static int dissect_regionalSubscriptionIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5914   return dissect_gsm_map_ZoneCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionIdentifier);
5915 }
5916 static int dissect_ZoneCodeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5917   return dissect_gsm_map_ZoneCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ZoneCodeList_item);
5918 }
5919
5920
5921 static const ber_sequence_t ZoneCodeList_sequence_of[1] = {
5922   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ZoneCodeList_item },
5923 };
5924
5925 static int
5926 dissect_gsm_map_ZoneCodeList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5927   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5928                                       ZoneCodeList_sequence_of, hf_index, ett_gsm_map_ZoneCodeList);
5929
5930   return offset;
5931 }
5932 static int dissect_regionalSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5933   return dissect_gsm_map_ZoneCodeList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData);
5934 }
5935
5936
5937
5938 static int
5939 dissect_gsm_map_GroupId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5940   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5941
5942   return offset;
5943 }
5944 static int dissect_groupId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5945   return dissect_gsm_map_GroupId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupId);
5946 }
5947 static int dissect_groupid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5948   return dissect_gsm_map_GroupId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupid);
5949 }
5950
5951
5952 static const ber_sequence_t VoiceBroadcastData_sequence[] = {
5953   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupid },
5954   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_broadcastInitEntitlement },
5955   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5956   { 0, 0, 0, NULL }
5957 };
5958
5959 static int
5960 dissect_gsm_map_VoiceBroadcastData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5961   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5962                                    VoiceBroadcastData_sequence, hf_index, ett_gsm_map_VoiceBroadcastData);
5963
5964   return offset;
5965 }
5966 static int dissect_VBSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5967   return dissect_gsm_map_VoiceBroadcastData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_VBSDataList_item);
5968 }
5969
5970
5971 static const ber_sequence_t VBSDataList_sequence_of[1] = {
5972   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_VBSDataList_item },
5973 };
5974
5975 static int
5976 dissect_gsm_map_VBSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5977   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5978                                       VBSDataList_sequence_of, hf_index, ett_gsm_map_VBSDataList);
5979
5980   return offset;
5981 }
5982 static int dissect_vbsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5983   return dissect_gsm_map_VBSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData);
5984 }
5985
5986
5987 static const ber_sequence_t VoiceGroupCallData_sequence[] = {
5988   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupId },
5989   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5990   { 0, 0, 0, NULL }
5991 };
5992
5993 static int
5994 dissect_gsm_map_VoiceGroupCallData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5995   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5996                                    VoiceGroupCallData_sequence, hf_index, ett_gsm_map_VoiceGroupCallData);
5997
5998   return offset;
5999 }
6000 static int dissect_VGCSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6001   return dissect_gsm_map_VoiceGroupCallData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_VGCSDataList_item);
6002 }
6003
6004
6005 static const ber_sequence_t VGCSDataList_sequence_of[1] = {
6006   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_VGCSDataList_item },
6007 };
6008
6009 static int
6010 dissect_gsm_map_VGCSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6011   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6012                                       VGCSDataList_sequence_of, hf_index, ett_gsm_map_VGCSDataList);
6013
6014   return offset;
6015 }
6016 static int dissect_vgcsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6017   return dissect_gsm_map_VGCSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData);
6018 }
6019
6020
6021 static const ber_sequence_t SS_EventList_sequence_of[1] = {
6022   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SS_EventList_item },
6023 };
6024
6025 static int
6026 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_) {
6027   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6028                                       SS_EventList_sequence_of, hf_index, ett_gsm_map_SS_EventList);
6029
6030   return offset;
6031 }
6032 static int dissect_ss_EventList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6033   return dissect_gsm_map_SS_EventList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList);
6034 }
6035
6036
6037 static const ber_sequence_t SS_CamelData_sequence[] = {
6038   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_EventList },
6039   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
6040   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6041   { 0, 0, 0, NULL }
6042 };
6043
6044 static int
6045 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_) {
6046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6047                                    SS_CamelData_sequence, hf_index, ett_gsm_map_SS_CamelData);
6048
6049   return offset;
6050 }
6051 static int dissect_ss_CamelData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6052   return dissect_gsm_map_SS_CamelData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CamelData);
6053 }
6054
6055
6056 static const ber_sequence_t SS_CSI_sequence[] = {
6057   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_CamelData },
6058   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6059   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6060   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6061   { 0, 0, 0, NULL }
6062 };
6063
6064 static int
6065 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_) {
6066   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6067                                    SS_CSI_sequence, hf_index, ett_gsm_map_SS_CSI);
6068
6069   return offset;
6070 }
6071 static int dissect_ss_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6072   return dissect_gsm_map_SS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CSI);
6073 }
6074
6075
6076 static const value_string gsm_map_MatchType_vals[] = {
6077   {   0, "inhibiting" },
6078   {   1, "enabling" },
6079   { 0, NULL }
6080 };
6081
6082
6083 static int
6084 dissect_gsm_map_MatchType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6085   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6086                                   NULL);
6087
6088   return offset;
6089 }
6090 static int dissect_matchType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6091   return dissect_gsm_map_MatchType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_matchType);
6092 }
6093
6094
6095 static const ber_sequence_t DestinationNumberList_sequence_of[1] = {
6096   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_DestinationNumberList_item },
6097 };
6098
6099 static int
6100 dissect_gsm_map_DestinationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6101   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6102                                       DestinationNumberList_sequence_of, hf_index, ett_gsm_map_DestinationNumberList);
6103
6104   return offset;
6105 }
6106 static int dissect_destinationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6107   return dissect_gsm_map_DestinationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList);
6108 }
6109
6110
6111
6112 static int
6113 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_) {
6114   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6115                                   NULL);
6116
6117   return offset;
6118 }
6119 static int dissect_DestinationNumberLengthList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6120   return dissect_gsm_map_INTEGER_1_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DestinationNumberLengthList_item);
6121 }
6122
6123
6124 static const ber_sequence_t DestinationNumberLengthList_sequence_of[1] = {
6125   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_DestinationNumberLengthList_item },
6126 };
6127
6128 static int
6129 dissect_gsm_map_DestinationNumberLengthList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6130   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6131                                       DestinationNumberLengthList_sequence_of, hf_index, ett_gsm_map_DestinationNumberLengthList);
6132
6133   return offset;
6134 }
6135 static int dissect_destinationNumberLengthList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6136   return dissect_gsm_map_DestinationNumberLengthList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList);
6137 }
6138
6139
6140 static const ber_sequence_t DestinationNumberCriteria_sequence[] = {
6141   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_matchType_impl },
6142   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberList_impl },
6143   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberLengthList_impl },
6144   { 0, 0, 0, NULL }
6145 };
6146
6147 static int
6148 dissect_gsm_map_DestinationNumberCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6149   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6150                                    DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_DestinationNumberCriteria);
6151
6152   return offset;
6153 }
6154 static int dissect_destinationNumberCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6155   return dissect_gsm_map_DestinationNumberCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberCriteria);
6156 }
6157
6158
6159 static const ber_sequence_t BasicServiceCriteria_sequence_of[1] = {
6160   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceCriteria_item },
6161 };
6162
6163 static int
6164 dissect_gsm_map_BasicServiceCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6165   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6166                                       BasicServiceCriteria_sequence_of, hf_index, ett_gsm_map_BasicServiceCriteria);
6167
6168   return offset;
6169 }
6170 static int dissect_basicServiceCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6171   return dissect_gsm_map_BasicServiceCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceCriteria);
6172 }
6173
6174
6175 static const value_string gsm_map_CallTypeCriteria_vals[] = {
6176   {   0, "forwarded" },
6177   {   1, "notForwarded" },
6178   { 0, NULL }
6179 };
6180
6181
6182 static int
6183 dissect_gsm_map_CallTypeCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6184   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6185                                   NULL);
6186
6187   return offset;
6188 }
6189 static int dissect_callTypeCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6190   return dissect_gsm_map_CallTypeCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTypeCriteria);
6191 }
6192
6193
6194
6195 static int
6196 dissect_gsm_map_CauseValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6197   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6198                                        NULL);
6199
6200   return offset;
6201 }
6202 static int dissect_T_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6203   return dissect_gsm_map_CauseValue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_CauseValueCriteria_item);
6204 }
6205 static int dissect_O_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6206   return dissect_gsm_map_CauseValue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_CauseValueCriteria_item);
6207 }
6208
6209
6210 static const ber_sequence_t O_CauseValueCriteria_sequence_of[1] = {
6211   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_O_CauseValueCriteria_item },
6212 };
6213
6214 static int
6215 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_) {
6216   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6217                                       O_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_O_CauseValueCriteria);
6218
6219   return offset;
6220 }
6221 static int dissect_o_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6222   return dissect_gsm_map_O_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CauseValueCriteria);
6223 }
6224
6225
6226 static const ber_sequence_t O_BcsmCamelTDP_Criteria_sequence[] = {
6227   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
6228   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberCriteria_impl },
6229   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
6230   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTypeCriteria_impl },
6231   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CauseValueCriteria_impl },
6232   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6233   { 0, 0, 0, NULL }
6234 };
6235
6236 static int
6237 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_) {
6238   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6239                                    O_BcsmCamelTDP_Criteria_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDP_Criteria);
6240
6241   return offset;
6242 }
6243 static int dissect_O_BcsmCamelTDPCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6244   return dissect_gsm_map_O_BcsmCamelTDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDPCriteriaList_item);
6245 }
6246
6247
6248 static const ber_sequence_t O_BcsmCamelTDPCriteriaList_sequence_of[1] = {
6249   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDPCriteriaList_item },
6250 };
6251
6252 static int
6253 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_) {
6254   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6255                                       O_BcsmCamelTDPCriteriaList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDPCriteriaList);
6256
6257   return offset;
6258 }
6259 static int dissect_o_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6260   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDP_CriteriaList);
6261 }
6262 static int dissect_o_BcsmCamelTDPCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6263   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPCriteriaList);
6264 }
6265 static int dissect_o_IM_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6266   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList);
6267 }
6268
6269
6270
6271 static int
6272 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_) {
6273   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6274                                        NULL);
6275
6276   return offset;
6277 }
6278 static int dissect_eventMet_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6279   return dissect_gsm_map_MM_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventMet);
6280 }
6281 static int dissect_MobilityTriggers_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6282   return dissect_gsm_map_MM_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MobilityTriggers_item);
6283 }
6284
6285
6286 static const ber_sequence_t MobilityTriggers_sequence_of[1] = {
6287   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_MobilityTriggers_item },
6288 };
6289
6290 static int
6291 dissect_gsm_map_MobilityTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6292   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6293                                       MobilityTriggers_sequence_of, hf_index, ett_gsm_map_MobilityTriggers);
6294
6295   return offset;
6296 }
6297 static int dissect_mobilityTriggers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6298   return dissect_gsm_map_MobilityTriggers(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mobilityTriggers);
6299 }
6300
6301
6302 static const ber_sequence_t M_CSI_sequence[] = {
6303   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
6304   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6305   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
6306   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6307   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6308   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6309   { 0, 0, 0, NULL }
6310 };
6311
6312 static int
6313 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_) {
6314   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6315                                    M_CSI_sequence, hf_index, ett_gsm_map_M_CSI);
6316
6317   return offset;
6318 }
6319 static int dissect_m_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6320   return dissect_gsm_map_M_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_m_CSI);
6321 }
6322
6323
6324 static const value_string gsm_map_SMS_TriggerDetectionPoint_vals[] = {
6325   {   1, "sms-CollectedInfo" },
6326   {   2, "sms-DeliveryRequest" },
6327   { 0, NULL }
6328 };
6329
6330
6331 static int
6332 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_) {
6333   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6334                                   NULL);
6335
6336   return offset;
6337 }
6338 static int dissect_sms_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6339   return dissect_gsm_map_SMS_TriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
6340 }
6341 static int dissect_sms_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6342   return dissect_gsm_map_SMS_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
6343 }
6344
6345
6346 static const value_string gsm_map_DefaultSMS_Handling_vals[] = {
6347   {   0, "continueTransaction" },
6348   {   1, "releaseTransaction" },
6349   { 0, NULL }
6350 };
6351
6352
6353 static int
6354 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_) {
6355   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6356                                   NULL);
6357
6358   return offset;
6359 }
6360 static int dissect_defaultSMS_Handling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6361   return dissect_gsm_map_DefaultSMS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSMS_Handling);
6362 }
6363
6364
6365 static const ber_sequence_t SMS_CAMEL_TDP_Data_sequence[] = {
6366   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sms_TriggerDetectionPoint_impl },
6367   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
6368   { BER_CLASS_CON, 2, 0, dissect_gsmSCF_Address },
6369   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSMS_Handling_impl },
6370   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6371   { 0, 0, 0, NULL }
6372 };
6373
6374 static int
6375 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_) {
6376   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6377                                    SMS_CAMEL_TDP_Data_sequence, hf_index, ett_gsm_map_SMS_CAMEL_TDP_Data);
6378
6379   return offset;
6380 }
6381 static int dissect_SMS_CAMEL_TDP_DataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6382   return dissect_gsm_map_SMS_CAMEL_TDP_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SMS_CAMEL_TDP_DataList_item);
6383 }
6384
6385
6386 static const ber_sequence_t SMS_CAMEL_TDP_DataList_sequence_of[1] = {
6387   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SMS_CAMEL_TDP_DataList_item },
6388 };
6389
6390 static int
6391 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_) {
6392   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6393                                       SMS_CAMEL_TDP_DataList_sequence_of, hf_index, ett_gsm_map_SMS_CAMEL_TDP_DataList);
6394
6395   return offset;
6396 }
6397 static int dissect_sms_CAMEL_TDP_DataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6398   return dissect_gsm_map_SMS_CAMEL_TDP_DataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_CAMEL_TDP_DataList);
6399 }
6400
6401
6402 static const ber_sequence_t SMS_CSI_sequence[] = {
6403   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sms_CAMEL_TDP_DataList_impl },
6404   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6405   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6406   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6407   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6408   { 0, 0, 0, NULL }
6409 };
6410
6411 static int
6412 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_) {
6413   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6414                                    SMS_CSI_sequence, hf_index, ett_gsm_map_SMS_CSI);
6415
6416   return offset;
6417 }
6418 static int dissect_mo_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6419   return dissect_gsm_map_SMS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mo_sms_CSI);
6420 }
6421 static int dissect_mt_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6422   return dissect_gsm_map_SMS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_sms_CSI);
6423 }
6424
6425
6426 static const value_string gsm_map_T_BcsmTriggerDetectionPoint_vals[] = {
6427   {  12, "termAttemptAuthorized" },
6428   {  13, "tBusy" },
6429   {  14, "tNoAnswer" },
6430   { 0, NULL }
6431 };
6432
6433
6434 static int
6435 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_) {
6436   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6437                                   NULL);
6438
6439   return offset;
6440 }
6441 static int dissect_t_BCSM_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6442   return dissect_gsm_map_T_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_TriggerDetectionPoint);
6443 }
6444 static int dissect_t_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6445   return dissect_gsm_map_T_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmTriggerDetectionPoint);
6446 }
6447
6448
6449 static const ber_sequence_t T_BcsmCamelTDPData_sequence[] = {
6450   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BcsmTriggerDetectionPoint },
6451   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6452   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
6453   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
6454   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6455   { 0, 0, 0, NULL }
6456 };
6457
6458 static int
6459 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_) {
6460   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6461                                    T_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_T_BcsmCamelTDPData);
6462
6463   return offset;
6464 }
6465 static int dissect_T_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6466   return dissect_gsm_map_T_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_BcsmCamelTDPDataList_item);
6467 }
6468
6469
6470 static const ber_sequence_t T_BcsmCamelTDPDataList_sequence_of[1] = {
6471   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_T_BcsmCamelTDPDataList_item },
6472 };
6473
6474 static int
6475 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_) {
6476   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6477                                       T_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_T_BcsmCamelTDPDataList);
6478
6479   return offset;
6480 }
6481 static int dissect_t_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6482   return dissect_gsm_map_T_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmCamelTDPDataList);
6483 }
6484
6485
6486 static const ber_sequence_t T_CSI_sequence[] = {
6487   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
6488   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6489   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6490   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6491   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6492   { 0, 0, 0, NULL }
6493 };
6494
6495 static int
6496 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_) {
6497   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6498                                    T_CSI_sequence, hf_index, ett_gsm_map_T_CSI);
6499
6500   return offset;
6501 }
6502 static int dissect_vt_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6503   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_CSI);
6504 }
6505 static int dissect_t_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6506   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CSI);
6507 }
6508 static int dissect_vt_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6509   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_CSI);
6510 }
6511
6512
6513 static const ber_sequence_t T_CauseValueCriteria_sequence_of[1] = {
6514   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_T_CauseValueCriteria_item },
6515 };
6516
6517 static int
6518 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_) {
6519   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6520                                       T_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_T_CauseValueCriteria);
6521
6522   return offset;
6523 }
6524 static int dissect_t_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6525   return dissect_gsm_map_T_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CauseValueCriteria);
6526 }
6527
6528
6529 static const ber_sequence_t T_BCSM_CAMEL_TDP_Criteria_sequence[] = {
6530   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_TriggerDetectionPoint },
6531   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
6532   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CauseValueCriteria_impl },
6533   { 0, 0, 0, NULL }
6534 };
6535
6536 static int
6537 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_) {
6538   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6539                                    T_BCSM_CAMEL_TDP_Criteria_sequence, hf_index, ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria);
6540
6541   return offset;
6542 }
6543 static int dissect_T_BCSM_CAMEL_TDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6544   return dissect_gsm_map_T_BCSM_CAMEL_TDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item);
6545 }
6546
6547
6548 static const ber_sequence_t T_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
6549   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_T_BCSM_CAMEL_TDP_CriteriaList_item },
6550 };
6551
6552 static int
6553 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_) {
6554   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6555                                       T_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList);
6556
6557   return offset;
6558 }
6559 static int dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6560   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList);
6561 }
6562 static int dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6563   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList);
6564 }
6565 static int dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6566   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList);
6567 }
6568
6569
6570 static const ber_sequence_t DP_AnalysedInfoCriterium_sequence[] = {
6571   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dialledNumber },
6572   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6573   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
6574   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_defaultCallHandling },
6575   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6576   { 0, 0, 0, NULL }
6577 };
6578
6579 static int
6580 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_) {
6581   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6582                                    DP_AnalysedInfoCriterium_sequence, hf_index, ett_gsm_map_DP_AnalysedInfoCriterium);
6583
6584   return offset;
6585 }
6586 static int dissect_DP_AnalysedInfoCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6587   return dissect_gsm_map_DP_AnalysedInfoCriterium(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DP_AnalysedInfoCriteriaList_item);
6588 }
6589
6590
6591 static const ber_sequence_t DP_AnalysedInfoCriteriaList_sequence_of[1] = {
6592   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DP_AnalysedInfoCriteriaList_item },
6593 };
6594
6595 static int
6596 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_) {
6597   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6598                                       DP_AnalysedInfoCriteriaList_sequence_of, hf_index, ett_gsm_map_DP_AnalysedInfoCriteriaList);
6599
6600   return offset;
6601 }
6602 static int dissect_dp_AnalysedInfoCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6603   return dissect_gsm_map_DP_AnalysedInfoCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dp_AnalysedInfoCriteriaList);
6604 }
6605
6606
6607 static const ber_sequence_t D_CSI_sequence[] = {
6608   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dp_AnalysedInfoCriteriaList_impl },
6609   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6610   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6611   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6612   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6613   { 0, 0, 0, NULL }
6614 };
6615
6616 static int
6617 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_) {
6618   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6619                                    D_CSI_sequence, hf_index, ett_gsm_map_D_CSI);
6620
6621   return offset;
6622 }
6623 static int dissect_d_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6624   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_CSI);
6625 }
6626 static int dissect_d_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6627   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_csi);
6628 }
6629 static int dissect_d_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6630   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_IM_CSI);
6631 }
6632
6633
6634 static const value_string gsm_map_MT_SMS_TPDU_Type_vals[] = {
6635   {   0, "sms-DELIVER" },
6636   {   1, "sms-SUBMIT-REPORT" },
6637   {   2, "sms-STATUS-REPORT" },
6638   { 0, NULL }
6639 };
6640
6641
6642 static int
6643 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_) {
6644   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6645                                   NULL);
6646
6647   return offset;
6648 }
6649 static int dissect_TPDU_TypeCriterion_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6650   return dissect_gsm_map_MT_SMS_TPDU_Type(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TPDU_TypeCriterion_item);
6651 }
6652
6653
6654 static const ber_sequence_t TPDU_TypeCriterion_sequence_of[1] = {
6655   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_TPDU_TypeCriterion_item },
6656 };
6657
6658 static int
6659 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_) {
6660   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6661                                       TPDU_TypeCriterion_sequence_of, hf_index, ett_gsm_map_TPDU_TypeCriterion);
6662
6663   return offset;
6664 }
6665 static int dissect_tpdu_TypeCriterion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6666   return dissect_gsm_map_TPDU_TypeCriterion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tpdu_TypeCriterion);
6667 }
6668
6669
6670 static const ber_sequence_t MT_smsCAMELTDP_Criteria_sequence[] = {
6671   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sms_TriggerDetectionPoint },
6672   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tpdu_TypeCriterion_impl },
6673   { 0, 0, 0, NULL }
6674 };
6675
6676 static int
6677 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_) {
6678   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6679                                    MT_smsCAMELTDP_Criteria_sequence, hf_index, ett_gsm_map_MT_smsCAMELTDP_Criteria);
6680
6681   return offset;
6682 }
6683 static int dissect_MT_smsCAMELTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6684   return dissect_gsm_map_MT_smsCAMELTDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item);
6685 }
6686
6687
6688 static const ber_sequence_t MT_smsCAMELTDP_CriteriaList_sequence_of[1] = {
6689   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MT_smsCAMELTDP_CriteriaList_item },
6690 };
6691
6692 static int
6693 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_) {
6694   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6695                                       MT_smsCAMELTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_MT_smsCAMELTDP_CriteriaList);
6696
6697   return offset;
6698 }
6699 static int dissect_mt_smsCAMELTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6700   return dissect_gsm_map_MT_smsCAMELTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_smsCAMELTDP_CriteriaList);
6701 }
6702
6703
6704 static const ber_sequence_t VlrCamelSubscriptionInfo_sequence[] = {
6705   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
6706   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6707   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
6708   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
6709   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
6710   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
6711   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
6712   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
6713   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
6714   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
6715   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
6716   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
6717   { 0, 0, 0, NULL }
6718 };
6719
6720 static int
6721 dissect_gsm_map_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6722   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6723                                    VlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_VlrCamelSubscriptionInfo);
6724
6725   return offset;
6726 }
6727 static int dissect_vlrCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6728   return dissect_gsm_map_VlrCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlrCamelSubscriptionInfo);
6729 }
6730
6731
6732
6733 static int
6734 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_) {
6735   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6736                                        NULL);
6737
6738   return offset;
6739 }
6740 static int dissect_naea_PreferredCIC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6741   return dissect_gsm_map_NAEA_CIC(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCIC);
6742 }
6743
6744
6745 static const ber_sequence_t NAEA_PreferredCI_sequence[] = {
6746   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_naea_PreferredCIC_impl },
6747   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6748   { 0, 0, 0, NULL }
6749 };
6750
6751 static int
6752 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_) {
6753   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6754                                    NAEA_PreferredCI_sequence, hf_index, ett_gsm_map_NAEA_PreferredCI);
6755
6756   return offset;
6757 }
6758 static int dissect_naea_PreferredCI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6759   return dissect_gsm_map_NAEA_PreferredCI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCI);
6760 }
6761
6762
6763
6764 static int
6765 dissect_gsm_map_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6766   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6767                                   NULL);
6768
6769   return offset;
6770 }
6771 static int dissect_pdp_ContextId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6772   return dissect_gsm_map_ContextId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextId);
6773 }
6774 static int dissect_ContextIdList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6775   return dissect_gsm_map_ContextId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ContextIdList_item);
6776 }
6777 static int dissect_pdp_ContextIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6778   return dissect_gsm_map_ContextId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextIdentifier);
6779 }
6780
6781
6782
6783 static int
6784 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_) {
6785 #line 432 "gsmmap.cnf"
6786         guint8 pdp_type_org;
6787         tvbuff_t        *parameter_tvb;
6788
6789
6790   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6791                                        &parameter_tvb);
6792
6793
6794  if (!parameter_tvb)
6795         return offset;
6796         proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE);
6797         pdp_type_org = tvb_get_guint8(parameter_tvb,1);
6798         switch (pdp_type_org){
6799                 case 0: /* ETSI */
6800                         proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE);
6801                         break;
6802                 case 1: /* IETF */
6803                         proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE);
6804                         break;
6805                 default:
6806                 break;
6807         }
6808
6809
6810
6811   return offset;
6812 }
6813 static int dissect_pdp_Type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6814   return dissect_gsm_map_PDP_Type(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Type);
6815 }
6816
6817
6818
6819 static int
6820 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_) {
6821   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6822                                        NULL);
6823
6824   return offset;
6825 }
6826 static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6827   return dissect_gsm_map_PDP_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Address);
6828 }
6829
6830
6831
6832 int
6833 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_) {
6834 #line 458 "gsmmap.cnf"
6835
6836         tvbuff_t        *parameter_tvb;
6837
6838
6839   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6840                                        &parameter_tvb);
6841
6842
6843          if (!parameter_tvb)
6844                 return offset;
6845         de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
6846
6847
6848
6849   return offset;
6850 }
6851 static int dissect_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6852   return dissect_gsm_map_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Subscribed);
6853 }
6854
6855
6856
6857 static int
6858 dissect_gsm_map_APN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6859   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6860                                        NULL);
6861
6862   return offset;
6863 }
6864 static int dissect_apn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6865   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn);
6866 }
6867 static int dissect_apn_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6868   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_Subscribed);
6869 }
6870 static int dissect_apn_InUse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6871   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_InUse);
6872 }
6873 static int dissect_lcsAPN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6874   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsAPN);
6875 }
6876
6877
6878
6879 int
6880 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_) {
6881 #line 473 "gsmmap.cnf"
6882
6883         tvbuff_t        *parameter_tvb;
6884
6885
6886   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6887                                        &parameter_tvb);
6888
6889
6890          if (!parameter_tvb)
6891                 return offset;
6892         de_sm_qos(parameter_tvb, tree, 0, 9, NULL, 0);
6893
6894
6895
6896   return offset;
6897 }
6898 static int dissect_ext_QoS_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6899   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_QoS_Subscribed);
6900 }
6901 static int dissect_ext_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6902   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_qos_Subscribed);
6903 }
6904 static int dissect_qos_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6905   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Requested);
6906 }
6907 static int dissect_qos_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6908   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Negotiated);
6909 }
6910
6911
6912
6913 static int
6914 dissect_gsm_map_ChargingCharacteristics(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6915   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6916                                        NULL);
6917
6918   return offset;
6919 }
6920 static int dissect_chargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6921   return dissect_gsm_map_ChargingCharacteristics(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristics);
6922 }
6923 static int dissect_pdp_ChargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6924   return dissect_gsm_map_ChargingCharacteristics(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ChargingCharacteristics);
6925 }
6926
6927
6928
6929 int
6930 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_) {
6931   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6932                                        NULL);
6933
6934   return offset;
6935 }
6936 static int dissect_ext2_QoS_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6937   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext2_QoS_Subscribed);
6938 }
6939 static int dissect_qos2_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6940   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Subscribed);
6941 }
6942 static int dissect_qos2_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6943   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Requested);
6944 }
6945 static int dissect_qos2_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6946   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Negotiated);
6947 }
6948
6949
6950 static const ber_sequence_t PDP_Context_sequence[] = {
6951   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pdp_ContextId },
6952   { BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
6953   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
6954   { BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
6955   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vplmnAddressAllowed_impl },
6956   { BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_apn_impl },
6957   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6958   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_QoS_Subscribed_impl },
6959   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ChargingCharacteristics_impl },
6960   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext2_QoS_Subscribed_impl },
6961   { 0, 0, 0, NULL }
6962 };
6963
6964 static int
6965 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_) {
6966   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6967                                    PDP_Context_sequence, hf_index, ett_gsm_map_PDP_Context);
6968
6969   return offset;
6970 }
6971 static int dissect_GPRSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6972   return dissect_gsm_map_PDP_Context(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GPRSDataList_item);
6973 }
6974
6975
6976 static const ber_sequence_t GPRSDataList_sequence_of[1] = {
6977   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_GPRSDataList_item },
6978 };
6979
6980 static int
6981 dissect_gsm_map_GPRSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6982   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6983                                       GPRSDataList_sequence_of, hf_index, ett_gsm_map_GPRSDataList);
6984
6985   return offset;
6986 }
6987 static int dissect_gprsDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6988   return dissect_gsm_map_GPRSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList);
6989 }
6990
6991
6992 static const ber_sequence_t GPRSSubscriptionData_sequence[] = {
6993   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
6994   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprsDataList_impl },
6995   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6996   { 0, 0, 0, NULL }
6997 };
6998
6999 static int
7000 dissect_gsm_map_GPRSSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7001   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7002                                    GPRSSubscriptionData_sequence, hf_index, ett_gsm_map_GPRSSubscriptionData);
7003
7004   return offset;
7005 }
7006 static int dissect_gprsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7007   return dissect_gsm_map_GPRSSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionData);
7008 }
7009
7010
7011 static const value_string gsm_map_NetworkAccessMode_vals[] = {
7012   {   0, "bothMSCAndSGSN" },
7013   {   1, "onlyMSC" },
7014   {   2, "onlySGSN" },
7015   { 0, NULL }
7016 };
7017
7018
7019 static int
7020 dissect_gsm_map_NetworkAccessMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7021   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7022                                   NULL);
7023
7024   return offset;
7025 }
7026 static int dissect_networkAccessMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7027   return dissect_gsm_map_NetworkAccessMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkAccessMode);
7028 }
7029
7030
7031 static const value_string gsm_map_LSAOnlyAccessIndicator_vals[] = {
7032   {   0, "accessOutsideLSAsAllowed" },
7033   {   1, "accessOutsideLSAsRestricted" },
7034   { 0, NULL }
7035 };
7036
7037
7038 static int
7039 dissect_gsm_map_LSAOnlyAccessIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7040   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7041                                   NULL);
7042
7043   return offset;
7044 }
7045 static int dissect_lsaOnlyAccessIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7046   return dissect_gsm_map_LSAOnlyAccessIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaOnlyAccessIndicator);
7047 }
7048
7049
7050
7051 int
7052 dissect_gsm_map_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7053   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7054                                        NULL);
7055
7056   return offset;
7057 }
7058 static int dissect_lsaIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7059   return dissect_gsm_map_LSAIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentity);
7060 }
7061 static int dissect_LSAIdentityList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7062   return dissect_gsm_map_LSAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LSAIdentityList_item);
7063 }
7064 static int dissect_selectedLSA_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7065   return dissect_gsm_map_LSAIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSA_Id);
7066 }
7067 static int dissect_selectedLSAIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7068   return dissect_gsm_map_LSAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSAIdentity);
7069 }
7070
7071
7072
7073 static int
7074 dissect_gsm_map_LSAAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7075   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7076                                        NULL);
7077
7078   return offset;
7079 }
7080 static int dissect_lsaAttributes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7081   return dissect_gsm_map_LSAAttributes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaAttributes);
7082 }
7083
7084
7085 static const ber_sequence_t LSAData_sequence[] = {
7086   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lsaIdentity_impl },
7087   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lsaAttributes_impl },
7088   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaActiveModeIndicator_impl },
7089   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7090   { 0, 0, 0, NULL }
7091 };
7092
7093 static int
7094 dissect_gsm_map_LSAData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7095   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7096                                    LSAData_sequence, hf_index, ett_gsm_map_LSAData);
7097
7098   return offset;
7099 }
7100 static int dissect_LSADataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7101   return dissect_gsm_map_LSAData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LSADataList_item);
7102 }
7103
7104
7105 static const ber_sequence_t LSADataList_sequence_of[1] = {
7106   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_LSADataList_item },
7107 };
7108
7109 static int
7110 dissect_gsm_map_LSADataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7111   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7112                                       LSADataList_sequence_of, hf_index, ett_gsm_map_LSADataList);
7113
7114   return offset;
7115 }
7116 static int dissect_lsaDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7117   return dissect_gsm_map_LSADataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList);
7118 }
7119
7120
7121 static const ber_sequence_t LSAInformation_sequence[] = {
7122   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
7123   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaOnlyAccessIndicator_impl },
7124   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaDataList_impl },
7125   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7126   { 0, 0, 0, NULL }
7127 };
7128
7129 static int
7130 dissect_gsm_map_LSAInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7131   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7132                                    LSAInformation_sequence, hf_index, ett_gsm_map_LSAInformation);
7133
7134   return offset;
7135 }
7136 static int dissect_lsaInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7137   return dissect_gsm_map_LSAInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformation);
7138 }
7139
7140
7141 static const ber_sequence_t GMLC_List_sequence_of[1] = {
7142   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_GMLC_List_item },
7143 };
7144
7145 static int
7146 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_) {
7147   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7148                                       GMLC_List_sequence_of, hf_index, ett_gsm_map_GMLC_List);
7149
7150   return offset;
7151 }
7152 static int dissect_gmlc_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7153   return dissect_gsm_map_GMLC_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List);
7154 }
7155
7156
7157 const value_string gsm_map_NotificationToMSUser_vals[] = {
7158   {   0, "notifyLocationAllowed" },
7159   {   1, "notifyAndVerify-LocationAllowedIfNoResponse" },
7160   {   2, "notifyAndVerify-LocationNotAllowedIfNoResponse" },
7161   {   3, "locationNotAllowed" },
7162   { 0, NULL }
7163 };
7164
7165
7166 int
7167 dissect_gsm_map_NotificationToMSUser(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7168   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7169                                   NULL);
7170
7171   return offset;
7172 }
7173 static int dissect_notificationToMSUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7174   return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToMSUser);
7175 }
7176
7177
7178 static const ber_sequence_t LCSClientExternalID_sequence[] = {
7179   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
7180   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7181   { 0, 0, 0, NULL }
7182 };
7183
7184 int
7185 dissect_gsm_map_LCSClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7186   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7187                                    LCSClientExternalID_sequence, hf_index, ett_gsm_map_LCSClientExternalID);
7188
7189   return offset;
7190 }
7191 static int dissect_clientIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7192   return dissect_gsm_map_LCSClientExternalID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_clientIdentity);
7193 }
7194 static int dissect_lcsClientExternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7195   return dissect_gsm_map_LCSClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientExternalID);
7196 }
7197
7198
7199 static const value_string gsm_map_GMLC_Restriction_vals[] = {
7200   {   0, "gmlc-List" },
7201   {   1, "home-Country" },
7202   { 0, NULL }
7203 };
7204
7205
7206 static int
7207 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_) {
7208   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7209                                   NULL);
7210
7211   return offset;
7212 }
7213 static int dissect_gmlc_Restriction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7214   return dissect_gsm_map_GMLC_Restriction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_Restriction);
7215 }
7216
7217
7218 static const ber_sequence_t ExternalClient_sequence[] = {
7219   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_clientIdentity },
7220   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
7221   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
7222   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7223   { 0, 0, 0, NULL }
7224 };
7225
7226 static int
7227 dissect_gsm_map_ExternalClient(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7228   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7229                                    ExternalClient_sequence, hf_index, ett_gsm_map_ExternalClient);
7230
7231   return offset;
7232 }
7233 static int dissect_ExternalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7234   return dissect_gsm_map_ExternalClient(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ExternalClientList_item);
7235 }
7236 static int dissect_Ext_ExternalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7237   return dissect_gsm_map_ExternalClient(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_ExternalClientList_item);
7238 }
7239
7240
7241 static const ber_sequence_t ExternalClientList_sequence_of[1] = {
7242   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ExternalClientList_item },
7243 };
7244
7245 static int
7246 dissect_gsm_map_ExternalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7247   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7248                                       ExternalClientList_sequence_of, hf_index, ett_gsm_map_ExternalClientList);
7249
7250   return offset;
7251 }
7252 static int dissect_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7253   return dissect_gsm_map_ExternalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList);
7254 }
7255
7256
7257 static const value_string gsm_map_LCSClientInternalID_vals[] = {
7258   {   0, "broadcastService" },
7259   {   1, "o-andM-HPLMN" },
7260   {   2, "o-andM-VPLMN" },
7261   {   3, "anonymousLocation" },
7262   {   4, "targetMSsubscribedService" },
7263   { 0, NULL }
7264 };
7265
7266
7267 static int
7268 dissect_gsm_map_LCSClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7269   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7270                                   NULL);
7271
7272   return offset;
7273 }
7274 static int dissect_PLMNClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7275   return dissect_gsm_map_LCSClientInternalID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PLMNClientList_item);
7276 }
7277 static int dissect_lcsClientInternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7278   return dissect_gsm_map_LCSClientInternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientInternalID);
7279 }
7280
7281
7282 static const ber_sequence_t PLMNClientList_sequence_of[1] = {
7283   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_PLMNClientList_item },
7284 };
7285
7286 static int
7287 dissect_gsm_map_PLMNClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7288   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7289                                       PLMNClientList_sequence_of, hf_index, ett_gsm_map_PLMNClientList);
7290
7291   return offset;
7292 }
7293 static int dissect_plmnClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7294   return dissect_gsm_map_PLMNClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList);
7295 }
7296
7297
7298 static const ber_sequence_t Ext_ExternalClientList_sequence_of[1] = {
7299   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_ExternalClientList_item },
7300 };
7301
7302 static int
7303 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_) {
7304   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7305                                       Ext_ExternalClientList_sequence_of, hf_index, ett_gsm_map_Ext_ExternalClientList);
7306
7307   return offset;
7308 }
7309 static int dissect_ext_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7310   return dissect_gsm_map_Ext_ExternalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_externalClientList);
7311 }
7312
7313
7314
7315 int
7316 dissect_gsm_map_LCSServiceTypeID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7317   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7318                                   NULL);
7319
7320   return offset;
7321 }
7322 static int dissect_serviceTypeIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7323   return dissect_gsm_map_LCSServiceTypeID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceTypeIdentity);
7324 }
7325 static int dissect_lcsServiceTypeID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7326   return dissect_gsm_map_LCSServiceTypeID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsServiceTypeID);
7327 }
7328
7329
7330 static const ber_sequence_t ServiceType_sequence[] = {
7331   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceTypeIdentity },
7332   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
7333   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
7334   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7335   { 0, 0, 0, NULL }
7336 };
7337
7338 static int
7339 dissect_gsm_map_ServiceType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7340   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7341                                    ServiceType_sequence, hf_index, ett_gsm_map_ServiceType);
7342
7343   return offset;
7344 }
7345 static int dissect_ServiceTypeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7346   return dissect_gsm_map_ServiceType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ServiceTypeList_item);
7347 }
7348
7349
7350 static const ber_sequence_t ServiceTypeList_sequence_of[1] = {
7351   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ServiceTypeList_item },
7352 };
7353
7354 static int
7355 dissect_gsm_map_ServiceTypeList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7356   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7357                                       ServiceTypeList_sequence_of, hf_index, ett_gsm_map_ServiceTypeList);
7358
7359   return offset;
7360 }
7361 static int dissect_serviceTypeList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7362   return dissect_gsm_map_ServiceTypeList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceTypeList);
7363 }
7364
7365
7366 static const ber_sequence_t LCS_PrivacyClass_sequence[] = {
7367   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7368   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_ss_Status },
7369   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
7370   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalClientList_impl },
7371   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_plmnClientList_impl },
7372   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7373   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_externalClientList_impl },
7374   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceTypeList_impl },
7375   { 0, 0, 0, NULL }
7376 };
7377
7378 static int
7379 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_) {
7380   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7381                                    LCS_PrivacyClass_sequence, hf_index, ett_gsm_map_LCS_PrivacyClass);
7382
7383   return offset;
7384 }
7385 static int dissect_LCS_PrivacyExceptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7386   return dissect_gsm_map_LCS_PrivacyClass(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LCS_PrivacyExceptionList_item);
7387 }
7388
7389
7390 static const ber_sequence_t LCS_PrivacyExceptionList_sequence_of[1] = {
7391   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_LCS_PrivacyExceptionList_item },
7392 };
7393
7394 static int
7395 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_) {
7396   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7397                                       LCS_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_LCS_PrivacyExceptionList);
7398
7399   return offset;
7400 }
7401 static int dissect_lcs_PrivacyExceptionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7402   return dissect_gsm_map_LCS_PrivacyExceptionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList);
7403 }
7404 static int dissect_add_lcs_PrivacyExceptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7405   return dissect_gsm_map_LCS_PrivacyExceptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_add_lcs_PrivacyExceptionList);
7406 }
7407
7408
7409 static const ber_sequence_t MOLR_Class_sequence[] = {
7410   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7411   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_ss_Status },
7412   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7413   { 0, 0, 0, NULL }
7414 };
7415
7416 static int
7417 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_) {
7418   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7419                                    MOLR_Class_sequence, hf_index, ett_gsm_map_MOLR_Class);
7420
7421   return offset;
7422 }
7423 static int dissect_MOLR_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7424   return dissect_gsm_map_MOLR_Class(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MOLR_List_item);
7425 }
7426
7427
7428 static const ber_sequence_t MOLR_List_sequence_of[1] = {
7429   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MOLR_List_item },
7430 };
7431
7432 static int
7433 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_) {
7434   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7435                                       MOLR_List_sequence_of, hf_index, ett_gsm_map_MOLR_List);
7436
7437   return offset;
7438 }
7439 static int dissect_molr_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7440   return dissect_gsm_map_MOLR_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List);
7441 }
7442
7443
7444 static const ber_sequence_t LCSInformation_sequence[] = {
7445   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_List_impl },
7446   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyExceptionList_impl },
7447   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_molr_List_impl },
7448   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_add_lcs_PrivacyExceptionList },
7449   { 0, 0, 0, NULL }
7450 };
7451
7452 static int
7453 dissect_gsm_map_LCSInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7454   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7455                                    LCSInformation_sequence, hf_index, ett_gsm_map_LCSInformation);
7456
7457   return offset;
7458 }
7459 static int dissect_lcsInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7460   return dissect_gsm_map_LCSInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsInformation);
7461 }
7462
7463
7464
7465 static int
7466 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_) {
7467   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7468                                   NULL);
7469
7470   return offset;
7471 }
7472 static int dissect_istAlertTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7473   return dissect_gsm_map_IST_AlertTimerValue(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istAlertTimer);
7474 }
7475
7476
7477
7478 static int
7479 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_) {
7480   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7481                                   NULL);
7482
7483   return offset;
7484 }
7485 static int dissect_nbrSB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7486   return dissect_gsm_map_MaxMC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrSB);
7487 }
7488
7489
7490
7491 static int
7492 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_) {
7493   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7494                                   NULL);
7495
7496   return offset;
7497 }
7498 static int dissect_nbrUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7499   return dissect_gsm_map_MC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrUser);
7500 }
7501 static int dissect_nbrSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7502   return dissect_gsm_map_MC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrSN);
7503 }
7504
7505
7506 static const ber_sequence_t MC_SS_Info_sequence[] = {
7507   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
7508   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
7509   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nbrSB_impl },
7510   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
7511   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7512   { 0, 0, 0, NULL }
7513 };
7514
7515 static int
7516 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_) {
7517   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7518                                    MC_SS_Info_sequence, hf_index, ett_gsm_map_MC_SS_Info);
7519
7520   return offset;
7521 }
7522 static int dissect_mc_SS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7523   return dissect_gsm_map_MC_SS_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mc_SS_Info);
7524 }
7525
7526
7527
7528 static int
7529 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_) {
7530   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7531                                        NULL);
7532
7533   return offset;
7534 }
7535 static int dissect_cs_AllocationRetentionPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7536   return dissect_gsm_map_CS_AllocationRetentionPriority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_AllocationRetentionPriority);
7537 }
7538
7539
7540 static const value_string gsm_map_GPRS_TriggerDetectionPoint_vals[] = {
7541   {   1, "attach" },
7542   {   2, "attachChangeOfPosition" },
7543   {  11, "pdp-ContextEstablishment" },
7544   {  12, "pdp-ContextEstablishmentAcknowledgement" },
7545   {  14, "pdp-ContextChangeOfPosition" },
7546   { 0, NULL }
7547 };
7548
7549
7550 static int
7551 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_) {
7552   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7553                                   NULL);
7554
7555   return offset;
7556 }
7557 static int dissect_gprs_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7558   return dissect_gsm_map_GPRS_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_TriggerDetectionPoint);
7559 }
7560
7561
7562 static const value_string gsm_map_DefaultGPRS_Handling_vals[] = {
7563   {   0, "continueTransaction" },
7564   {   1, "releaseTransaction" },
7565   { 0, NULL }
7566 };
7567
7568
7569 static int
7570 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_) {
7571   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7572                                   NULL);
7573
7574   return offset;
7575 }
7576 static int dissect_defaultSessionHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7577   return dissect_gsm_map_DefaultGPRS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSessionHandling);
7578 }
7579
7580
7581 static const ber_sequence_t GPRS_CamelTDPData_sequence[] = {
7582   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprs_TriggerDetectionPoint_impl },
7583   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
7584   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
7585   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSessionHandling_impl },
7586   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7587   { 0, 0, 0, NULL }
7588 };
7589
7590 static int
7591 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_) {
7592   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7593                                    GPRS_CamelTDPData_sequence, hf_index, ett_gsm_map_GPRS_CamelTDPData);
7594
7595   return offset;
7596 }
7597 static int dissect_GPRS_CamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7598   return dissect_gsm_map_GPRS_CamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GPRS_CamelTDPDataList_item);
7599 }
7600
7601
7602 static const ber_sequence_t GPRS_CamelTDPDataList_sequence_of[1] = {
7603   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_GPRS_CamelTDPDataList_item },
7604 };
7605
7606 static int
7607 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_) {
7608   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7609                                       GPRS_CamelTDPDataList_sequence_of, hf_index, ett_gsm_map_GPRS_CamelTDPDataList);
7610
7611   return offset;
7612 }
7613 static int dissect_gprs_CamelTDPDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7614   return dissect_gsm_map_GPRS_CamelTDPDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CamelTDPDataList);
7615 }
7616
7617
7618 static const ber_sequence_t GPRS_CSI_sequence[] = {
7619   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CamelTDPDataList_impl },
7620   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
7621   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7622   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
7623   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
7624   { 0, 0, 0, NULL }
7625 };
7626
7627 static int
7628 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_) {
7629   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7630                                    GPRS_CSI_sequence, hf_index, ett_gsm_map_GPRS_CSI);
7631
7632   return offset;
7633 }
7634 static int dissect_gprs_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7635   return dissect_gsm_map_GPRS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CSI);
7636 }
7637
7638
7639 static const ber_sequence_t MG_CSI_sequence[] = {
7640   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
7641   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
7642   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
7643   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7644   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
7645   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
7646   { 0, 0, 0, NULL }
7647 };
7648
7649 static int
7650 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_) {
7651   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7652                                    MG_CSI_sequence, hf_index, ett_gsm_map_MG_CSI);
7653
7654   return offset;
7655 }
7656 static int dissect_mg_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7657   return dissect_gsm_map_MG_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mg_csi);
7658 }
7659
7660
7661 static const ber_sequence_t SGSN_CAMEL_SubscriptionInfo_sequence[] = {
7662   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
7663   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
7664   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7665   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
7666   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
7667   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
7668   { 0, 0, 0, NULL }
7669 };
7670
7671 static int
7672 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_) {
7673   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7674                                    SGSN_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_SGSN_CAMEL_SubscriptionInfo);
7675
7676   return offset;
7677 }
7678 static int dissect_sgsn_CAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7679   return dissect_gsm_map_SGSN_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_CAMEL_SubscriptionInfo);
7680 }
7681
7682
7683 static const asn_namedbit AccessRestrictionData_bits[] = {
7684   {  0, &hf_gsm_map_AccessRestrictionData_utranNotAllowed, -1, -1, "utranNotAllowed", NULL },
7685   {  1, &hf_gsm_map_AccessRestrictionData_geranNotAllowed, -1, -1, "geranNotAllowed", NULL },
7686   { 0, NULL, 0, 0, NULL, NULL }
7687 };
7688
7689 static int
7690 dissect_gsm_map_AccessRestrictionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7691   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7692                                     AccessRestrictionData_bits, hf_index, ett_gsm_map_AccessRestrictionData,
7693                                     NULL);
7694
7695   return offset;
7696 }
7697 static int dissect_accessRestrictionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7698   return dissect_gsm_map_AccessRestrictionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_accessRestrictionData);
7699 }
7700
7701
7702 static const ber_sequence_t InsertSubscriberDataArg_sequence[] = {
7703   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7704   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
7705   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_category_impl },
7706   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStatus_impl },
7707   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerserviceList_impl },
7708   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
7709   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_provisionedSS_impl },
7710   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Data_impl },
7711   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
7712   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionData_impl },
7713   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsSubscriptionData_impl },
7714   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsSubscriptionData_impl },
7715   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlrCamelSubscriptionInfo_impl },
7716   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7717   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
7718   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSubscriptionData_impl },
7719   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl },
7720   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkAccessMode_impl },
7721   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaInformation_impl },
7722   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmu_Indicator_impl },
7723   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsInformation_impl },
7724   { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
7725   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_superChargerSupportedInHLR_impl },
7726   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mc_SS_Info_impl },
7727   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_AllocationRetentionPriority_impl },
7728   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_CAMEL_SubscriptionInfo_impl },
7729   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
7730   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_accessRestrictionData_impl },
7731   { 0, 0, 0, NULL }
7732 };
7733
7734 static int
7735 dissect_gsm_map_InsertSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7736   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7737                                    InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_InsertSubscriberDataArg);
7738
7739   return offset;
7740 }
7741
7742
7743 static const ber_sequence_t SS_List_sequence_of[1] = {
7744   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SS_List_item },
7745 };
7746
7747 static int
7748 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_) {
7749   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7750                                       SS_List_sequence_of, hf_index, ett_gsm_map_SS_List);
7751
7752   return offset;
7753 }
7754 static int dissect_ss_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7755   return dissect_gsm_map_SS_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List);
7756 }
7757 static int dissect_ss_List2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7758   return dissect_gsm_map_SS_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List2);
7759 }
7760
7761
7762 static const value_string gsm_map_RegionalSubscriptionResponse_vals[] = {
7763   {   0, "networkNodeAreaRestricted" },
7764   {   1, "tooManyZoneCodes" },
7765   {   2, "zoneCodesConflict" },
7766   {   3, "regionalSubscNotSupported" },
7767   { 0, NULL }
7768 };
7769
7770
7771 static int
7772 dissect_gsm_map_RegionalSubscriptionResponse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7773   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7774                                   NULL);
7775
7776   return offset;
7777 }
7778 static int dissect_regionalSubscriptionResponse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7779   return dissect_gsm_map_RegionalSubscriptionResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionResponse);
7780 }
7781
7782
7783 static const ber_sequence_t InsertSubscriberDataRes_sequence[] = {
7784   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
7785   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerServiceList_impl },
7786   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
7787   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_GeneralData_impl },
7788   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
7789   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
7790   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7791   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
7792   { 0, 0, 0, NULL }
7793 };
7794
7795 static int
7796 dissect_gsm_map_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7797   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7798                                    InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_InsertSubscriberDataRes);
7799
7800   return offset;
7801 }
7802
7803
7804 static const ber_sequence_t BasicServiceList_sequence_of[1] = {
7805   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceList_item },
7806 };
7807
7808 static int
7809 dissect_gsm_map_BasicServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7810   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7811                                       BasicServiceList_sequence_of, hf_index, ett_gsm_map_BasicServiceList);
7812
7813   return offset;
7814 }
7815 static int dissect_basicServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7816   return dissect_gsm_map_BasicServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceList);
7817 }
7818
7819
7820 static const ber_sequence_t ContextIdList_sequence_of[1] = {
7821   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_ContextIdList_item },
7822 };
7823
7824 static int
7825 dissect_gsm_map_ContextIdList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7826   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7827                                       ContextIdList_sequence_of, hf_index, ett_gsm_map_ContextIdList);
7828
7829   return offset;
7830 }
7831 static int dissect_contextIdList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7832   return dissect_gsm_map_ContextIdList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList);
7833 }
7834
7835
7836 static const value_string gsm_map_GPRSSubscriptionDataWithdraw_vals[] = {
7837   {   0, "allGPRSData" },
7838   {   1, "contextIdList" },
7839   { 0, NULL }
7840 };
7841
7842 static const ber_choice_t GPRSSubscriptionDataWithdraw_choice[] = {
7843   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allGPRSData },
7844   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextIdList },
7845   { 0, 0, 0, 0, NULL }
7846 };
7847
7848 static int
7849 dissect_gsm_map_GPRSSubscriptionDataWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7850   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7851                                  GPRSSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_GPRSSubscriptionDataWithdraw,
7852                                  NULL);
7853
7854   return offset;
7855 }
7856 static int dissect_gprsSubscriptionDataWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7857   return dissect_gsm_map_GPRSSubscriptionDataWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionDataWithdraw);
7858 }
7859
7860
7861 static const ber_sequence_t LSAIdentityList_sequence_of[1] = {
7862   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_LSAIdentityList_item },
7863 };
7864
7865 static int
7866 dissect_gsm_map_LSAIdentityList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7867   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7868                                       LSAIdentityList_sequence_of, hf_index, ett_gsm_map_LSAIdentityList);
7869
7870   return offset;
7871 }
7872 static int dissect_lsaIdentityList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7873   return dissect_gsm_map_LSAIdentityList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList);
7874 }
7875
7876
7877 static const value_string gsm_map_LSAInformationWithdraw_vals[] = {
7878   {   0, "allLSAData" },
7879   {   1, "lsaIdentityList" },
7880   { 0, NULL }
7881 };
7882
7883 static const ber_choice_t LSAInformationWithdraw_choice[] = {
7884   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allLSAData },
7885   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList },
7886   { 0, 0, 0, 0, NULL }
7887 };
7888
7889 static int
7890 dissect_gsm_map_LSAInformationWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7891   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7892                                  LSAInformationWithdraw_choice, hf_index, ett_gsm_map_LSAInformationWithdraw,
7893                                  NULL);
7894
7895   return offset;
7896 }
7897 static int dissect_lsaInformationWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7898   return dissect_gsm_map_LSAInformationWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformationWithdraw);
7899 }
7900
7901
7902 static const asn_namedbit SpecificCSI_Withdraw_bits[] = {
7903   {  0, &hf_gsm_map_SpecificCSI_Withdraw_o_csi, -1, -1, "o-csi", NULL },
7904   {  1, &hf_gsm_map_SpecificCSI_Withdraw_ss_csi, -1, -1, "ss-csi", NULL },
7905   {  2, &hf_gsm_map_SpecificCSI_Withdraw_tif_csi, -1, -1, "tif-csi", NULL },
7906   {  3, &hf_gsm_map_SpecificCSI_Withdraw_d_csi, -1, -1, "d-csi", NULL },
7907   {  4, &hf_gsm_map_SpecificCSI_Withdraw_vt_csi, -1, -1, "vt-csi", NULL },
7908   {  5, &hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi, -1, -1, "mo-sms-csi", NULL },
7909   {  6, &hf_gsm_map_SpecificCSI_Withdraw_m_csi, -1, -1, "m-csi", NULL },
7910   {  7, &hf_gsm_map_SpecificCSI_Withdraw_gprs_csi, -1, -1, "gprs-csi", NULL },
7911   {  8, &hf_gsm_map_SpecificCSI_Withdraw_t_csi, -1, -1, "t-csi", NULL },
7912   {  9, &hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
7913   { 10, &hf_gsm_map_SpecificCSI_Withdraw_mg_csi, -1, -1, "mg-csi", NULL },
7914   { 11, &hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI, -1, -1, "o-IM-CSI", NULL },
7915   { 12, &hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI, -1, -1, "d-IM-CSI", NULL },
7916   { 13, &hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI, -1, -1, "vt-IM-CSI", NULL },
7917   { 0, NULL, 0, 0, NULL, NULL }
7918 };
7919
7920 static int
7921 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_) {
7922   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7923                                     SpecificCSI_Withdraw_bits, hf_index, ett_gsm_map_SpecificCSI_Withdraw,
7924                                     NULL);
7925
7926   return offset;
7927 }
7928 static int dissect_specificCSI_Withdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7929   return dissect_gsm_map_SpecificCSI_Withdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSI_Withdraw);
7930 }
7931 static int dissect_specificCSIDeletedList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7932   return dissect_gsm_map_SpecificCSI_Withdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSIDeletedList);
7933 }
7934
7935
7936 static const ber_sequence_t DeleteSubscriberDataArg_sequence[] = {
7937   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7938   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceList_impl },
7939   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
7940   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
7941   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionIdentifier_impl },
7942   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsGroupIndication_impl },
7943   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsGroupIndication_impl },
7944   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelSubscriptionInfoWithdraw_impl },
7945   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7946   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprsSubscriptionDataWithdraw_impl },
7947   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl },
7948   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_lsaInformationWithdraw_impl },
7949   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_ListWithdraw_impl },
7950   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_istInformationWithdraw },
7951   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSI_Withdraw_impl },
7952   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristicsWithdraw_impl },
7953   { 0, 0, 0, NULL }
7954 };
7955
7956 static int
7957 dissect_gsm_map_DeleteSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7958   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7959                                    DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataArg);
7960
7961   return offset;
7962 }
7963
7964
7965 static const ber_sequence_t DeleteSubscriberDataRes_sequence[] = {
7966   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
7967   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7968   { 0, 0, 0, NULL }
7969 };
7970
7971 static int
7972 dissect_gsm_map_DeleteSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7973   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7974                                    DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataRes);
7975
7976   return offset;
7977 }
7978
7979
7980
7981 int
7982 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_) {
7983 #line 268 "gsmmap.cnf"
7984
7985  tvbuff_t       *parameter_tvb;
7986  guint8         octet;
7987
7988   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7989                                        &parameter_tvb);
7990
7991
7992  if (!parameter_tvb)
7993         return offset;
7994
7995  octet = tvb_get_guint8(parameter_tvb,0);
7996
7997  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
7998  if ((octet & 0x01)== 1)        
7999         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
8000                                                                                 
8001  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
8002  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
8003  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
8004
8005
8006
8007
8008   return offset;
8009 }
8010 static int dissect_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8011   return dissect_gsm_map_SS_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
8012 }
8013 static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8014   return dissect_gsm_map_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
8015 }
8016
8017
8018
8019 static int
8020 dissect_gsm_map_BearerServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8021   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8022                                        NULL);
8023
8024   return offset;
8025 }
8026 static int dissect_bearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8027   return dissect_gsm_map_BearerServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerService);
8028 }
8029
8030
8031
8032 static int
8033 dissect_gsm_map_TeleserviceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8034   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8035                                        NULL);
8036
8037   return offset;
8038 }
8039 static int dissect_teleservice_code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8040   return dissect_gsm_map_TeleserviceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice_code);
8041 }
8042
8043
8044 static const value_string gsm_map_BasicServiceCode_vals[] = {
8045   {   2, "bearerService" },
8046   {   3, "teleservice" },
8047   { 0, NULL }
8048 };
8049
8050 static const ber_choice_t BasicServiceCode_choice[] = {
8051   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerService_impl },
8052   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_code_impl },
8053   { 0, 0, 0, 0, NULL }
8054 };
8055
8056 static int
8057 dissect_gsm_map_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8058   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8059                                  BasicServiceCode_choice, hf_index, ett_gsm_map_BasicServiceCode,
8060                                  NULL);
8061
8062   return offset;
8063 }
8064 static int dissect_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8065   return dissect_gsm_map_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicService);
8066 }
8067 static int dissect_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8068   return dissect_gsm_map_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup);
8069 }
8070
8071
8072 static const ber_sequence_t CallBarringFeature_sequence[] = {
8073   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
8074   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
8075   { 0, 0, 0, NULL }
8076 };
8077
8078 static int
8079 dissect_gsm_map_CallBarringFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8080   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8081                                    CallBarringFeature_sequence, hf_index, ett_gsm_map_CallBarringFeature);
8082
8083   return offset;
8084 }
8085 static int dissect_CallBarringFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8086   return dissect_gsm_map_CallBarringFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CallBarringFeatureList_item);
8087 }
8088
8089
8090 static const ber_sequence_t CallBarringFeatureList_sequence_of[1] = {
8091   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CallBarringFeatureList_item },
8092 };
8093
8094 static int
8095 dissect_gsm_map_CallBarringFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8096   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8097                                       CallBarringFeatureList_sequence_of, hf_index, ett_gsm_map_CallBarringFeatureList);
8098
8099   return offset;
8100 }
8101 static int dissect_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8102   return dissect_gsm_map_CallBarringFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringFeatureList);
8103 }
8104
8105
8106
8107 static int
8108 dissect_gsm_map_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8109   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8110                                        NULL);
8111
8112 #line 415 "gsmmap.cnf"
8113
8114         proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
8115         proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
8116         proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
8117         proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
8118
8119   return offset;
8120 }
8121 static int dissect_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8122   return dissect_gsm_map_ForwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingOptions);
8123 }
8124
8125
8126
8127 static int
8128 dissect_gsm_map_NoReplyConditionTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8129   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8130                                   NULL);
8131
8132   return offset;
8133 }
8134 static int dissect_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8135   return dissect_gsm_map_NoReplyConditionTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noReplyConditionTime);
8136 }
8137
8138
8139 static const ber_sequence_t ForwardingFeature_sequence[] = {
8140   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
8141   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
8142   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
8143   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
8144   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
8145   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
8146   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
8147   { 0, 0, 0, NULL }
8148 };
8149
8150 static int
8151 dissect_gsm_map_ForwardingFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8152   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8153                                    ForwardingFeature_sequence, hf_index, ett_gsm_map_ForwardingFeature);
8154
8155   return offset;
8156 }
8157 static int dissect_ForwardingFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8158   return dissect_gsm_map_ForwardingFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ForwardingFeatureList_item);
8159 }
8160
8161
8162 static const ber_sequence_t ForwardingFeatureList_sequence_of[1] = {
8163   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ForwardingFeatureList_item },
8164 };
8165
8166 static int
8167 dissect_gsm_map_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8168   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8169                                       ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_ForwardingFeatureList);
8170
8171   return offset;
8172 }
8173 static int dissect_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8174   return dissect_gsm_map_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
8175 }
8176 static int dissect_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8177   return dissect_gsm_map_ForwardingFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
8178 }
8179
8180
8181
8182 static int
8183 dissect_gsm_map_LongForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8184   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8185                                        NULL);
8186
8187   return offset;
8188 }
8189
8190
8191 static const ber_sequence_t ForwardingInfo_sequence[] = {
8192   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
8193   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList },
8194   { 0, 0, 0, NULL }
8195 };
8196
8197 static int
8198 dissect_gsm_map_ForwardingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8199   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8200                                    ForwardingInfo_sequence, hf_index, ett_gsm_map_ForwardingInfo);
8201
8202   return offset;
8203 }
8204 static int dissect_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8205   return dissect_gsm_map_ForwardingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfo);
8206 }
8207
8208
8209 static const ber_sequence_t CallBarringInfo_sequence[] = {
8210   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
8211   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList },
8212   { 0, 0, 0, NULL }
8213 };
8214
8215 static int
8216 dissect_gsm_map_CallBarringInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8217   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8218                                    CallBarringInfo_sequence, hf_index, ett_gsm_map_CallBarringInfo);
8219
8220   return offset;
8221 }
8222 static int dissect_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8223   return dissect_gsm_map_CallBarringInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfo);
8224 }
8225
8226
8227
8228 static int
8229 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_) {
8230   offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
8231
8232   return offset;
8233 }
8234 static int dissect_HLR_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8235   return dissect_gsm_map_HLR_Id(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_HLR_List_item);
8236 }
8237
8238
8239 static const ber_sequence_t HLR_List_sequence_of[1] = {
8240   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_HLR_List_item },
8241 };
8242
8243 static int
8244 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_) {
8245   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8246                                       HLR_List_sequence_of, hf_index, ett_gsm_map_HLR_List);
8247
8248   return offset;
8249 }
8250 static int dissect_hlr_List(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8251   return dissect_gsm_map_HLR_List(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List);
8252 }
8253
8254
8255 static const ber_sequence_t ResetArg_sequence[] = {
8256   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
8257   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_hlr_List },
8258   { 0, 0, 0, NULL }
8259 };
8260
8261 static int
8262 dissect_gsm_map_ResetArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8263   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8264                                    ResetArg_sequence, hf_index, ett_gsm_map_ResetArg);
8265
8266   return offset;
8267 }
8268
8269
8270
8271 static int
8272 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_) {
8273   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8274                                        NULL);
8275
8276   return offset;
8277 }
8278
8279
8280 static const ber_sequence_t RestoreDataArg_sequence[] = {
8281   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
8282   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
8283   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8284   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
8285   { 0, 0, 0, NULL }
8286 };
8287
8288 static int
8289 dissect_gsm_map_RestoreDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8290   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8291                                    RestoreDataArg_sequence, hf_index, ett_gsm_map_RestoreDataArg);
8292
8293   return offset;
8294 }
8295
8296
8297 static const ber_sequence_t RestoreDataRes_sequence[] = {
8298   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
8299   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msNotReachable },
8300   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8301   { 0, 0, 0, NULL }
8302 };
8303
8304 static int
8305 dissect_gsm_map_RestoreDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8306   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8307                                    RestoreDataRes_sequence, hf_index, ett_gsm_map_RestoreDataRes);
8308
8309   return offset;
8310 }
8311
8312
8313
8314 static int
8315 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_) {
8316   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8317                                        NULL);
8318
8319   return offset;
8320 }
8321 static int dissect_traceReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8322   return dissect_gsm_map_OCTET_STRING_SIZE_1_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceReference);
8323 }
8324
8325
8326
8327 static int
8328 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_) {
8329   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8330                                   NULL);
8331
8332   return offset;
8333 }
8334 static int dissect_traceType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8335   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceType);
8336 }
8337
8338
8339
8340 static int
8341 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_) {
8342   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8343                                        NULL);
8344
8345   return offset;
8346 }
8347 static int dissect_omc_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8348   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_omc_Id);
8349 }
8350 static int dissect_ss_EventSpecification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8351   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification_item);
8352 }
8353
8354
8355 static const ber_sequence_t ActivateTraceModeArg_sequence[] = {
8356   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8357   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
8358   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_traceType_impl },
8359   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_omc_Id_impl },
8360   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8361   { 0, 0, 0, NULL }
8362 };
8363
8364 static int
8365 dissect_gsm_map_ActivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8366   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8367                                    ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_ActivateTraceModeArg);
8368
8369   return offset;
8370 }
8371
8372
8373 static const ber_sequence_t ActivateTraceModeRes_sequence[] = {
8374   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8375   { 0, 0, 0, NULL }
8376 };
8377
8378 static int
8379 dissect_gsm_map_ActivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8380   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8381                                    ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_ActivateTraceModeRes);
8382
8383   return offset;
8384 }
8385
8386
8387 static const ber_sequence_t DeactivateTraceModeArg_sequence[] = {
8388   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8389   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
8390   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8391   { 0, 0, 0, NULL }
8392 };
8393
8394 static int
8395 dissect_gsm_map_DeactivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8396   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8397                                    DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_DeactivateTraceModeArg);
8398
8399   return offset;
8400 }
8401
8402
8403 static const ber_sequence_t DeactivateTraceModeRes_sequence[] = {
8404   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8405   { 0, 0, 0, NULL }
8406 };
8407
8408 static int
8409 dissect_gsm_map_DeactivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8410   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8411                                    DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_DeactivateTraceModeRes);
8412
8413   return offset;
8414 }
8415
8416
8417 static const ber_sequence_t CUG_CheckInfo_sequence[] = {
8418   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
8419   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_OutgoingAccess },
8420   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8421   { 0, 0, 0, NULL }
8422 };
8423
8424 static int
8425 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_) {
8426   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8427                                    CUG_CheckInfo_sequence, hf_index, ett_gsm_map_CUG_CheckInfo);
8428
8429   return offset;
8430 }
8431 static int dissect_cug_CheckInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8432   return dissect_gsm_map_CUG_CheckInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_CheckInfo);
8433 }
8434
8435
8436
8437 static int
8438 dissect_gsm_map_NumberOfForwarding(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8439   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8440                                   NULL);
8441
8442   return offset;
8443 }
8444 static int dissect_numberOfForwarding_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8445   return dissect_gsm_map_NumberOfForwarding(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfForwarding);
8446 }
8447
8448
8449 static const value_string gsm_map_InterrogationType_vals[] = {
8450   {   0, "basicCall" },
8451   {   1, "forwarding" },
8452   { 0, NULL }
8453 };
8454
8455
8456 static int
8457 dissect_gsm_map_InterrogationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8458   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8459                                   NULL);
8460
8461   return offset;
8462 }
8463 static int dissect_interrogationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8464   return dissect_gsm_map_InterrogationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_interrogationType);
8465 }
8466
8467
8468
8469 static int
8470 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_) {
8471   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8472                                   NULL);
8473
8474   return offset;
8475 }
8476 static int dissect_or_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8477   return dissect_gsm_map_OR_Phase(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Capability);
8478 }
8479
8480
8481
8482 static int
8483 dissect_gsm_map_CallReferenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8484   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8485                                        NULL);
8486
8487   return offset;
8488 }
8489 static int dissect_callReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8490   return dissect_gsm_map_CallReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReferenceNumber);
8491 }
8492
8493
8494 static const value_string gsm_map_ForwardingReason_vals[] = {
8495   {   0, "notReachable" },
8496   {   1, "busy" },
8497   {   2, "noReply" },
8498   { 0, NULL }
8499 };
8500
8501
8502 static int
8503 dissect_gsm_map_ForwardingReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8504   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8505                                   NULL);
8506
8507   return offset;
8508 }
8509 static int dissect_forwardingReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8510   return dissect_gsm_map_ForwardingReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingReason);
8511 }
8512
8513
8514 static const ber_sequence_t ExternalSignalInfo_sequence[] = {
8515   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
8516   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
8517   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8518   { 0, 0, 0, NULL }
8519 };
8520
8521 static int
8522 dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8523   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8524                                    ExternalSignalInfo_sequence, hf_index, ett_gsm_map_ExternalSignalInfo);
8525
8526   return offset;
8527 }
8528 static int dissect_networkSignalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8529   return dissect_gsm_map_ExternalSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
8530 }
8531 static int dissect_networkSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8532   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
8533 }
8534 static int dissect_networkSignalInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8535   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo2);
8536 }
8537 static int dissect_gsm_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8538   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_BearerCapability);
8539 }
8540 static int dissect_isdn_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8541   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_isdn_BearerCapability);
8542 }
8543 static int dissect_chosenChannel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8544   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannel);
8545 }
8546 static int dissect_lowerLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8547   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lowerLayerCompatibility);
8548 }
8549 static int dissect_highLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8550   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_highLayerCompatibility);
8551 }
8552 static int dissect_channelType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8553   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_channelType);
8554 }
8555 static int dissect_callInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8556   return dissect_gsm_map_ExternalSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
8557 }
8558 static int dissect_callInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8559   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
8560 }
8561
8562
8563 static const ber_sequence_t CamelInfo_sequence[] = {
8564   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_supportedCamelPhases },
8565   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_suppress_T_CSI },
8566   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8567   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
8568   { 0, 0, 0, NULL }
8569 };
8570
8571 static int
8572 dissect_gsm_map_CamelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8573   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8574                                    CamelInfo_sequence, hf_index, ett_gsm_map_CamelInfo);
8575
8576   return offset;
8577 }
8578 static int dissect_camelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8579   return dissect_gsm_map_CamelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelInfo);
8580 }
8581
8582
8583
8584 static int
8585 dissect_gsm_map_SuppressionOfAnnouncement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8586   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
8587
8588   return offset;
8589 }
8590 static int dissect_suppressionOfAnnouncement_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8591   return dissect_gsm_map_SuppressionOfAnnouncement(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppressionOfAnnouncement);
8592 }
8593
8594
8595
8596 int
8597 dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8598   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8599                                        NULL);
8600
8601   return offset;
8602 }
8603 static int dissect_alertingPattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8604   return dissect_gsm_map_AlertingPattern(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
8605 }
8606 static int dissect_alertingPattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8607   return dissect_gsm_map_AlertingPattern(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
8608 }
8609
8610
8611
8612 static int
8613 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_) {
8614   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8615                                   NULL);
8616
8617   return offset;
8618 }
8619 static int dissect_supportedCCBS_Phase_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8620   return dissect_gsm_map_SupportedCCBS_Phase(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCCBS_Phase);
8621 }
8622
8623
8624 static const value_string gsm_map_Ext_ProtocolId_vals[] = {
8625   {   1, "ets-300356" },
8626   { 0, NULL }
8627 };
8628
8629
8630 static int
8631 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_) {
8632   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8633                                   NULL);
8634
8635   return offset;
8636 }
8637 static int dissect_ext_ProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8638   return dissect_gsm_map_Ext_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ProtocolId);
8639 }
8640
8641
8642 static const ber_sequence_t Ext_ExternalSignalInfo_sequence[] = {
8643   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_ext_ProtocolId },
8644   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
8645   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8646   { 0, 0, 0, NULL }
8647 };
8648
8649 static int
8650 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_) {
8651   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8652                                    Ext_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_Ext_ExternalSignalInfo);
8653
8654   return offset;
8655 }
8656 static int dissect_additionalSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8657   return dissect_gsm_map_Ext_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSignalInfo);
8658 }
8659
8660
8661
8662 static int
8663 dissect_gsm_map_CallDiversionTreatmentIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8664   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8665                                        NULL);
8666
8667   return offset;
8668 }
8669 static int dissect_callDiversionTreatmentIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8670   return dissect_gsm_map_CallDiversionTreatmentIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callDiversionTreatmentIndicator);
8671 }
8672
8673
8674 static const ber_sequence_t SendRoutingInfoArg_sequence[] = {
8675   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8676   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
8677   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberOfForwarding_impl },
8678   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_interrogationType_impl },
8679   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
8680   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Capability_impl },
8681   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gmsc_OrGsmSCF_Address_impl },
8682   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
8683   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingReason_impl },
8684   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicServiceGroup_impl },
8685   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
8686   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelInfo_impl },
8687   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
8688   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8689   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
8690   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
8691   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCCBS_Phase_impl },
8692   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
8693   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
8694   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pre_pagingSupported_impl },
8695   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callDiversionTreatmentIndicator_impl },
8696   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
8697   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_suppress_VT_CSI },
8698   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_suppressIncomingCallBarring },
8699   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_gsmSCF_InitiatedCall },
8700   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup2_impl },
8701   { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo2_impl },
8702   { 0, 0, 0, NULL }
8703 };
8704
8705 static int
8706 dissect_gsm_map_SendRoutingInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8707   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8708                                    SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoArg);
8709
8710   return offset;
8711 }
8712
8713
8714 static const ber_sequence_t ForwardingData_sequence[] = {
8715   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
8716   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
8717   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
8718   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8719   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
8720   { 0, 0, 0, NULL }
8721 };
8722
8723 static int
8724 dissect_gsm_map_ForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8725   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8726                                    ForwardingData_sequence, hf_index, ett_gsm_map_ForwardingData);
8727
8728   return offset;
8729 }
8730 static int dissect_forwardingData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8731   return dissect_gsm_map_ForwardingData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
8732 }
8733 static int dissect_forwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8734   return dissect_gsm_map_ForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
8735 }
8736
8737
8738 static const value_string gsm_map_RoutingInfo_vals[] = {
8739   {   0, "roamingNumber" },
8740   {   1, "forwardingData" },
8741   { 0, NULL }
8742 };
8743
8744 static const ber_choice_t RoutingInfo_choice[] = {
8745   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
8746   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingData },
8747   { 0, 0, 0, 0, NULL }
8748 };
8749
8750 static int
8751 dissect_gsm_map_RoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8752   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8753                                  RoutingInfo_choice, hf_index, ett_gsm_map_RoutingInfo,
8754                                  NULL);
8755
8756   return offset;
8757 }
8758 static int dissect_routingInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8759   return dissect_gsm_map_RoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo2);
8760 }
8761 static int dissect_routingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8762   return dissect_gsm_map_RoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo);
8763 }
8764
8765
8766 static const ber_sequence_t GmscCamelSubscriptionInfo_sequence[] = {
8767   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
8768   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
8769   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8770   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
8771   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
8772   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_csi_impl },
8773   { 0, 0, 0, NULL }
8774 };
8775
8776 static int
8777 dissect_gsm_map_GmscCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8778   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8779                                    GmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_GmscCamelSubscriptionInfo);
8780
8781   return offset;
8782 }
8783 static int dissect_gmscCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8784   return dissect_gsm_map_GmscCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmscCamelSubscriptionInfo);
8785 }
8786
8787
8788 static const ber_sequence_t CamelRoutingInfo_sequence[] = {
8789   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_forwardingData },
8790   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gmscCamelSubscriptionInfo_impl },
8791   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8792   { 0, 0, 0, NULL }
8793 };
8794
8795 static int
8796 dissect_gsm_map_CamelRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8797   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8798                                    CamelRoutingInfo_sequence, hf_index, ett_gsm_map_CamelRoutingInfo);
8799
8800   return offset;
8801 }
8802 static int dissect_camelRoutingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8803   return dissect_gsm_map_CamelRoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelRoutingInfo);
8804 }
8805
8806
8807 static const value_string gsm_map_ExtendedRoutingInfo_vals[] = {
8808   {   0, "routingInfo" },
8809   {   1, "camelRoutingInfo" },
8810   { 0, NULL }
8811 };
8812
8813 static const ber_choice_t ExtendedRoutingInfo_choice[] = {
8814   {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
8815   {   1, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_camelRoutingInfo_impl },
8816   { 0, 0, 0, 0, NULL }
8817 };
8818
8819 static int
8820 dissect_gsm_map_ExtendedRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8821   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8822                                  ExtendedRoutingInfo_choice, hf_index, ett_gsm_map_ExtendedRoutingInfo,
8823                                  NULL);
8824
8825   return offset;
8826 }
8827 static int dissect_extendedRoutingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8828   return dissect_gsm_map_ExtendedRoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extendedRoutingInfo);
8829 }
8830
8831
8832
8833 int
8834 dissect_gsm_map_AgeOfLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8835   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8836                                   NULL);
8837
8838   return offset;
8839 }
8840 static int dissect_ageOfLocationInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8841   return dissect_gsm_map_AgeOfLocationInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationInformation);
8842 }
8843 static int dissect_ageOfLocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8844   return dissect_gsm_map_AgeOfLocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationEstimate);
8845 }
8846
8847
8848
8849 int
8850 dissect_gsm_map_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8851   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8852                                        NULL);
8853
8854   return offset;
8855 }
8856 static int dissect_geographicalInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8857   return dissect_gsm_map_GeographicalInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
8858 }
8859 static int dissect_geographicalInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8860   return dissect_gsm_map_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
8861 }
8862
8863
8864
8865 static int
8866 dissect_gsm_map_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8867   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8868                                        NULL);
8869
8870   return offset;
8871 }
8872 static int dissect_locationNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8873   return dissect_gsm_map_LocationNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationNumber);
8874 }
8875
8876
8877
8878 int
8879 dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8880   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8881                                        NULL);
8882
8883   return offset;
8884 }
8885 static int dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8886   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength);
8887 }
8888
8889
8890 static const value_string gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals[] = {
8891   {   0, "cellGlobalIdOrServiceAreaIdFixedLength" },
8892   {   1, "laiFixedLength" },
8893   { 0, NULL }
8894 };
8895
8896 static const ber_choice_t CellGlobalIdOrServiceAreaIdOrLAI_choice[] = {
8897   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl },
8898   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_laiFixedLength_impl },
8899   { 0, 0, 0, 0, NULL }
8900 };
8901
8902 static int
8903 dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8904   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8905                                  CellGlobalIdOrServiceAreaIdOrLAI_choice, hf_index, ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
8906                                  NULL);
8907
8908   return offset;
8909 }
8910 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8911   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
8912 }
8913 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8914   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
8915 }
8916 static int dissect_cellIdOrSai_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8917   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdOrSai);
8918 }
8919
8920
8921
8922 static int
8923 dissect_gsm_map_GeodeticInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8924   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8925                                        NULL);
8926
8927   return offset;
8928 }
8929 static int dissect_geodeticInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8930   return dissect_gsm_map_GeodeticInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
8931 }
8932 static int dissect_geodeticInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8933   return dissect_gsm_map_GeodeticInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
8934 }
8935
8936
8937 static const ber_sequence_t LocationInformation_sequence[] = {
8938   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ageOfLocationInformation },
8939   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geographicalInformation_impl },
8940   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_number_impl },
8941   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationNumber_impl },
8942   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl },
8943   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8944   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedLSA_Id_impl },
8945   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
8946   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geodeticInformation_impl },
8947   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocationRetrieved_impl },
8948   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
8949   { 0, 0, 0, NULL }
8950 };
8951
8952 int
8953 dissect_gsm_map_LocationInformation(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                                    LocationInformation_sequence, hf_index, ett_gsm_map_LocationInformation);
8956
8957   return offset;
8958 }
8959 static int dissect_locationInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8960   return dissect_gsm_map_LocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation);
8961 }
8962
8963
8964 const value_string gsm_map_SubscriberState_vals[] = {
8965   {   0, "assumedIdle" },
8966   {   1, "camelBusy" },
8967   {   2, "notProvidedFromVLR" },
8968   { 0, NULL }
8969 };
8970
8971 static const ber_choice_t SubscriberState_choice[] = {
8972   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_assumedIdle_impl },
8973   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_camelBusy_impl },
8974   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_notProvidedFromVLR_impl },
8975   { 0, 0, 0, 0, NULL }
8976 };
8977
8978 int
8979 dissect_gsm_map_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8980   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8981                                  SubscriberState_choice, hf_index, ett_gsm_map_SubscriberState,
8982                                  NULL);
8983
8984   return offset;
8985 }
8986 static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8987   return dissect_gsm_map_SubscriberState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState);
8988 }
8989
8990
8991
8992 int
8993 dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8994   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8995                                        NULL);
8996
8997   return offset;
8998 }
8999 static int dissect_routeingAreaIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9000   return dissect_gsm_map_RAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routeingAreaIdentity);
9001 }
9002
9003
9004 static const ber_sequence_t LocationInformationGPRS_sequence[] = {
9005   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_cellGlobalIdOrServiceAreaIdOrLAI },
9006   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_routeingAreaIdentity },
9007   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_geographicalInformation },
9008   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_sgsn_Number },
9009   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_selectedLSAIdentity },
9010   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
9011   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_sai_Present },
9012   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_geodeticInformation },
9013   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_currentLocationRetrieved },
9014   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_ageOfLocationInformation },
9015   { 0, 0, 0, NULL }
9016 };
9017
9018 static int
9019 dissect_gsm_map_LocationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9020   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9021                                    LocationInformationGPRS_sequence, hf_index, ett_gsm_map_LocationInformationGPRS);
9022
9023   return offset;
9024 }
9025 static int dissect_locationInformationGPRS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9026   return dissect_gsm_map_LocationInformationGPRS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
9027 }
9028 static int dissect_locationInformationGPRS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9029   return dissect_gsm_map_LocationInformationGPRS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
9030 }
9031
9032
9033
9034 static int
9035 dissect_gsm_map_NSAPI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9036   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9037                                   NULL);
9038
9039   return offset;
9040 }
9041 static int dissect_nsapi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9042   return dissect_gsm_map_NSAPI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nsapi);
9043 }
9044
9045
9046
9047 static int
9048 dissect_gsm_map_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9049   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9050                                        NULL);
9051
9052   return offset;
9053 }
9054 static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9055   return dissect_gsm_map_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_transactionId);
9056 }
9057
9058
9059
9060 static int
9061 dissect_gsm_map_TEID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9062   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9063                                        NULL);
9064
9065   return offset;
9066 }
9067 static int dissect_teid_ForGnAndGp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9068   return dissect_gsm_map_TEID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForGnAndGp);
9069 }
9070 static int dissect_teid_ForIu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9071   return dissect_gsm_map_TEID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForIu);
9072 }
9073
9074
9075
9076 int
9077 dissect_gsm_map_GPRSChargingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9078   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9079                                        NULL);
9080
9081   return offset;
9082 }
9083 static int dissect_chargingId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9084   return dissect_gsm_map_GPRSChargingID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingId);
9085 }
9086
9087
9088 static const ber_sequence_t PDP_ContextInfo_sequence[] = {
9089   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pdp_ContextIdentifier_impl },
9090   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ContextActive_impl },
9091   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
9092   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
9093   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_Subscribed_impl },
9094   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_InUse_impl },
9095   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nsapi_impl },
9096   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
9097   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForGnAndGp_impl },
9098   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForIu_impl },
9099   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9100   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_qos_Subscribed_impl },
9101   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Requested_impl },
9102   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Negotiated_impl },
9103   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingId_impl },
9104   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
9105   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rnc_Address_impl },
9106   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9107   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Subscribed_impl },
9108   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Requested_impl },
9109   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Negotiated_impl },
9110   { 0, 0, 0, NULL }
9111 };
9112
9113 static int
9114 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_) {
9115   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9116                                    PDP_ContextInfo_sequence, hf_index, ett_gsm_map_PDP_ContextInfo);
9117
9118   return offset;
9119 }
9120 static int dissect_PDP_ContextInfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9121   return dissect_gsm_map_PDP_ContextInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PDP_ContextInfoList_item);
9122 }
9123
9124
9125 static const ber_sequence_t PDP_ContextInfoList_sequence_of[1] = {
9126   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PDP_ContextInfoList_item },
9127 };
9128
9129 static int
9130 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_) {
9131   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
9132                                       PDP_ContextInfoList_sequence_of, hf_index, ett_gsm_map_PDP_ContextInfoList);
9133
9134   return offset;
9135 }
9136 static int dissect_ps_PDP_ActiveNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9137   return dissect_gsm_map_PDP_ContextInfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveNotReachableForPaging);
9138 }
9139 static int dissect_ps_PDP_ActiveReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9140   return dissect_gsm_map_PDP_ContextInfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveReachableForPaging);
9141 }
9142
9143
9144 static const value_string gsm_map_NotReachableReason_vals[] = {
9145   {   0, "msPurged" },
9146   {   1, "imsiDetached" },
9147   {   2, "restrictedArea" },
9148   {   3, "notRegistered" },
9149   { 0, NULL }
9150 };
9151
9152
9153 static int
9154 dissect_gsm_map_NotReachableReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9155   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9156                                   NULL);
9157
9158   return offset;
9159 }
9160 static int dissect_netDetNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9161   return dissect_gsm_map_NotReachableReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_netDetNotReachable);
9162 }
9163
9164
9165 static const value_string gsm_map_PS_SubscriberState_vals[] = {
9166   {   0, "notProvidedFromSGSN" },
9167   {   1, "ps-Detached" },
9168   {   2, "ps-AttachedNotReachableForPaging" },
9169   {   3, "ps-AttachedReachableForPaging" },
9170   {   4, "ps-PDP-ActiveNotReachableForPaging" },
9171   {   5, "ps-PDP-ActiveReachableForPaging" },
9172   {   6, "netDetNotReachable" },
9173   { 0, NULL }
9174 };
9175
9176 static const ber_choice_t PS_SubscriberState_choice[] = {
9177   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notProvidedFromSGSN_impl },
9178   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ps_Detached_impl },
9179   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ps_AttachedNotReachableForPaging_impl },
9180   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ps_AttachedReachableForPaging_impl },
9181   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveNotReachableForPaging_impl },
9182   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveReachableForPaging_impl },
9183   {   6, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_netDetNotReachable },
9184   { 0, 0, 0, 0, NULL }
9185 };
9186
9187 static int
9188 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_) {
9189   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9190                                  PS_SubscriberState_choice, hf_index, ett_gsm_map_PS_SubscriberState,
9191                                  NULL);
9192
9193   return offset;
9194 }
9195 static int dissect_ps_SubscriberState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9196   return dissect_gsm_map_PS_SubscriberState(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_SubscriberState);
9197 }
9198
9199
9200
9201 int
9202 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_) {
9203   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9204                                        NULL);
9205
9206   return offset;
9207 }
9208 static int dissect_ms_Classmark2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9209   return dissect_gsm_map_MS_Classmark2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_Classmark2);
9210 }
9211
9212
9213
9214 static int
9215 dissect_gsm_map_MSNetworkCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9216   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9217                                        NULL);
9218
9219   return offset;
9220 }
9221 static int dissect_mSNetworkCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9222   return dissect_gsm_map_MSNetworkCapability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSNetworkCapability);
9223 }
9224
9225
9226
9227 static int
9228 dissect_gsm_map_MSRadioAccessCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9229   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9230                                        NULL);
9231
9232   return offset;
9233 }
9234 static int dissect_mSRadioAccessCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9235   return dissect_gsm_map_MSRadioAccessCapability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSRadioAccessCapability);
9236 }
9237
9238
9239 static const ber_sequence_t GPRSMSClass_sequence[] = {
9240   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mSNetworkCapability_impl },
9241   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mSRadioAccessCapability_impl },
9242   { 0, 0, 0, NULL }
9243 };
9244
9245 static int
9246 dissect_gsm_map_GPRSMSClass(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9247   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9248                                    GPRSMSClass_sequence, hf_index, ett_gsm_map_GPRSMSClass);
9249
9250   return offset;
9251 }
9252 static int dissect_gprs_MS_Class_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9253   return dissect_gsm_map_GPRSMSClass(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_MS_Class);
9254 }
9255
9256
9257
9258 static int
9259 dissect_gsm_map_RouteingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9260   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
9261
9262   return offset;
9263 }
9264 static int dissect_routeingNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9265   return dissect_gsm_map_RouteingNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routeingNumber);
9266 }
9267
9268
9269 static const value_string gsm_map_NumberPortabilityStatus_vals[] = {
9270   {   0, "notKnownToBePorted" },
9271   {   1, "ownNumberPortedOut" },
9272   {   2, "foreignNumberPortedToForeignNetwork" },
9273   {   4, "ownNumberNotPortedOut" },
9274   {   5, "foreignNumberPortedIn" },
9275   { 0, NULL }
9276 };
9277
9278
9279 static int
9280 dissect_gsm_map_NumberPortabilityStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9281   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9282                                   NULL);
9283
9284   return offset;
9285 }
9286 static int dissect_numberPortabilityStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9287   return dissect_gsm_map_NumberPortabilityStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberPortabilityStatus);
9288 }
9289
9290
9291 static const ber_sequence_t MNPInfoRes_sequence[] = {
9292   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_routeingNumber_impl },
9293   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9294   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9295   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
9296   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9297   { 0, 0, 0, NULL }
9298 };
9299
9300 static int
9301 dissect_gsm_map_MNPInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9302   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9303                                    MNPInfoRes_sequence, hf_index, ett_gsm_map_MNPInfoRes);
9304
9305   return offset;
9306 }
9307 static int dissect_mnpInfoRes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9308   return dissect_gsm_map_MNPInfoRes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpInfoRes);
9309 }
9310
9311
9312 static const ber_sequence_t SubscriberInfo_sequence[] = {
9313   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
9314   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_subscriberState },
9315   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9316   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformationGPRS_impl },
9317   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ps_SubscriberState_impl },
9318   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
9319   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_Classmark2_impl },
9320   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_MS_Class_impl },
9321   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpInfoRes_impl },
9322   { 0, 0, 0, NULL }
9323 };
9324
9325 static int
9326 dissect_gsm_map_SubscriberInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9327   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9328                                    SubscriberInfo_sequence, hf_index, ett_gsm_map_SubscriberInfo);
9329
9330   return offset;
9331 }
9332 static int dissect_subscriberInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9333   return dissect_gsm_map_SubscriberInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
9334 }
9335 static int dissect_subscriberInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9336   return dissect_gsm_map_SubscriberInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
9337 }
9338
9339
9340 static const ber_sequence_t CCBS_Indicators_sequence[] = {
9341   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
9342   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepCCBS_CallIndicator_impl },
9343   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9344   { 0, 0, 0, NULL }
9345 };
9346
9347 static int
9348 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_) {
9349   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9350                                    CCBS_Indicators_sequence, hf_index, ett_gsm_map_CCBS_Indicators);
9351
9352   return offset;
9353 }
9354 static int dissect_ccbs_Indicators_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9355   return dissect_gsm_map_CCBS_Indicators(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Indicators);
9356 }
9357
9358
9359 static const asn_namedbit AllowedServices_bits[] = {
9360   {  0, &hf_gsm_map_AllowedServices_firstServiceAllowed, -1, -1, "firstServiceAllowed", NULL },
9361   {  1, &hf_gsm_map_AllowedServices_secondServiceAllowed, -1, -1, "secondServiceAllowed", NULL },
9362   { 0, NULL, 0, 0, NULL, NULL }
9363 };
9364
9365 static int
9366 dissect_gsm_map_AllowedServices(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9367   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
9368                                     AllowedServices_bits, hf_index, ett_gsm_map_AllowedServices,
9369                                     NULL);
9370
9371   return offset;
9372 }
9373 static int dissect_allowedServices_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9374   return dissect_gsm_map_AllowedServices(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedServices);
9375 }
9376
9377
9378 static const value_string gsm_map_UnavailabilityCause_vals[] = {
9379   {   1, "bearerServiceNotProvisioned" },
9380   {   2, "teleserviceNotProvisioned" },
9381   {   3, "absentSubscriber" },
9382   {   4, "busySubscriber" },
9383   {   5, "callBarred" },
9384   {   6, "cug-Reject" },
9385   { 0, NULL }
9386 };
9387
9388
9389 static int
9390 dissect_gsm_map_UnavailabilityCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9391   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9392                                   NULL);
9393
9394   return offset;
9395 }
9396 static int dissect_unavailabilityCause_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9397   return dissect_gsm_map_UnavailabilityCause(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unavailabilityCause);
9398 }
9399
9400
9401 static const ber_sequence_t SendRoutingInfoRes_sequence[] = {
9402   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9403   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
9404   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
9405   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cugSubscriptionFlag_impl },
9406   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberInfo_impl },
9407   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
9408   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
9409   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInterrogationRequired_impl },
9410   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vmsc_Address_impl },
9411   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9412   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
9413   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Indicators_impl },
9414   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9415   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
9416   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
9417   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInVMSC_impl },
9418   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVMSC_impl },
9419   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_routingInfo2_impl },
9420   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List2_impl },
9421   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService2_impl },
9422   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedServices_impl },
9423   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unavailabilityCause_impl },
9424   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseResourcesSupported_impl },
9425   { 0, 0, 0, NULL }
9426 };
9427
9428 static int
9429 dissect_gsm_map_SendRoutingInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9430   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9431                                    SendRoutingInfoRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoRes);
9432
9433   return offset;
9434 }
9435
9436
9437 static const value_string gsm_map_SubscriberId_vals[] = {
9438   {   0, "imsi" },
9439   {   1, "tmsi" },
9440   { 0, NULL }
9441 };
9442
9443 static const ber_choice_t SubscriberId_choice[] = {
9444   {   0, BER_CLASS_CON, 0, 0, dissect_imsi },
9445   {   1, BER_CLASS_CON, 1, 0, dissect_tmsi },
9446   { 0, 0, 0, 0, NULL }
9447 };
9448
9449 static int
9450 dissect_gsm_map_SubscriberId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9451   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9452                                  SubscriberId_choice, hf_index, ett_gsm_map_SubscriberId,
9453                                  NULL);
9454
9455   return offset;
9456 }
9457
9458
9459 static const value_string gsm_map_SubscriberIdentity_vals[] = {
9460   {   0, "imsi" },
9461   {   1, "msisdn" },
9462   { 0, NULL }
9463 };
9464
9465 static const ber_choice_t SubscriberIdentity_choice[] = {
9466   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9467   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9468   { 0, 0, 0, 0, NULL }
9469 };
9470
9471 static int
9472 dissect_gsm_map_SubscriberIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9473   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9474                                  SubscriberIdentity_choice, hf_index, ett_gsm_map_SubscriberIdentity,
9475                                  NULL);
9476
9477   return offset;
9478 }
9479 static int dissect_subscriberIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9480   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
9481 }
9482 static int dissect_subscriberIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9483   return dissect_gsm_map_SubscriberIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
9484 }
9485 static int dissect_targetMS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9486   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
9487 }
9488 static int dissect_targetMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9489   return dissect_gsm_map_SubscriberIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
9490 }
9491
9492
9493 static const value_string gsm_map_NetDetNotReachable_vals[] = {
9494   {   0, "msPurged" },
9495   {   1, "imsiDetached" },
9496   {   2, "restrictedArea" },
9497   {   3, "notRegistered" },
9498   { 0, NULL }
9499 };
9500
9501
9502 static int
9503 dissect_gsm_map_NetDetNotReachable(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9504   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9505                                   NULL);
9506
9507   return offset;
9508 }
9509
9510
9511
9512 static int
9513 dissect_gsm_map_RoamingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9514   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9515                                        NULL);
9516
9517   return offset;
9518 }
9519
9520
9521
9522 static int
9523 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_) {
9524   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9525                                        NULL);
9526
9527   return offset;
9528 }
9529
9530
9531
9532 static int
9533 dissect_gsm_map_ExtSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9534   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9535                                        NULL);
9536
9537   return offset;
9538 }
9539
9540
9541
9542 static int
9543 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_) {
9544   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9545                                        NULL);
9546
9547   return offset;
9548 }
9549
9550
9551 static const ber_sequence_t ProvideRoamingNumberArg_sequence[] = {
9552   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9553   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
9554   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9555   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
9556   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
9557   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
9558   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
9559   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
9560   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
9561   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
9562   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9563   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
9564   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
9565   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInInterrogatingNode_impl },
9566   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
9567   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_orNotSupportedInGMSC_impl },
9568   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pre_pagingSupported_impl },
9569   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
9570   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppress_VT_CSI_impl },
9571   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInInterrogatingNode_impl },
9572   { 0, 0, 0, NULL }
9573 };
9574
9575 static int
9576 dissect_gsm_map_ProvideRoamingNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9577   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9578                                    ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberArg);
9579
9580   return offset;
9581 }
9582
9583
9584 static const ber_sequence_t ProvideRoamingNumberRes_sequence[] = {
9585   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
9586   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9587   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_releaseResourcesSupported },
9588   { 0, 0, 0, NULL }
9589 };
9590
9591 static int
9592 dissect_gsm_map_ProvideRoamingNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9593   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9594                                    ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberRes);
9595
9596   return offset;
9597 }
9598
9599
9600
9601 static int
9602 dissect_gsm_map_UUIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9603   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9604                                        NULL);
9605
9606   return offset;
9607 }
9608 static int dissect_uuIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9609   return dissect_gsm_map_UUIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uuIndicator);
9610 }
9611
9612
9613
9614 static int
9615 dissect_gsm_map_UUI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9616   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9617                                        NULL);
9618
9619   return offset;
9620 }
9621 static int dissect_uui_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9622   return dissect_gsm_map_UUI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uui);
9623 }
9624
9625
9626 static const ber_sequence_t UU_Data_sequence[] = {
9627   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uuIndicator_impl },
9628   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uui_impl },
9629   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uusCFInteraction_impl },
9630   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9631   { 0, 0, 0, NULL }
9632 };
9633
9634 int
9635 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_) {
9636   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9637                                    UU_Data_sequence, hf_index, ett_gsm_map_UU_Data);
9638
9639   return offset;
9640 }
9641 static int dissect_uu_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9642   return dissect_gsm_map_UU_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uu_Data);
9643 }
9644
9645
9646 static const ber_sequence_t ResumeCallHandlingArg_sequence[] = {
9647   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
9648   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_ext_basicServiceGroup },
9649   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingData_impl },
9650   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9651   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
9652   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
9653   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9654   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
9655   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9656   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uu_Data_impl },
9657   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allInformationSent_impl },
9658   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_csi_impl },
9659   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDPCriteriaList_impl },
9660   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup2_impl },
9661   { 0, 0, 0, NULL }
9662 };
9663
9664 static int
9665 dissect_gsm_map_ResumeCallHandlingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9666   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9667                                    ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ResumeCallHandlingArg);
9668
9669   return offset;
9670 }
9671
9672
9673 static const ber_sequence_t ResumeCallHandlingRes_sequence[] = {
9674   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9675   { 0, 0, 0, NULL }
9676 };
9677
9678 static int
9679 dissect_gsm_map_ResumeCallHandlingRes(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                                    ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ResumeCallHandlingRes);
9682
9683   return offset;
9684 }
9685
9686
9687
9688 static int
9689 dissect_gsm_map_CallDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9690   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9691                                        NULL);
9692
9693   return offset;
9694 }
9695 static int dissect_call_Direction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9696   return dissect_gsm_map_CallDirection(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_call_Direction);
9697 }
9698
9699
9700 static const ber_sequence_t ProvideSIWFSNumberArg_sequence[] = {
9701   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
9702   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_BearerCapability_impl },
9703   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_call_Direction_impl },
9704   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_b_Subscriber_Address_impl },
9705   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
9706   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lowerLayerCompatibility_impl },
9707   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_highLayerCompatibility_impl },
9708   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9709   { 0, 0, 0, NULL }
9710 };
9711
9712 static int
9713 dissect_gsm_map_ProvideSIWFSNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9714   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9715                                    ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberArg);
9716
9717   return offset;
9718 }
9719
9720
9721 static const ber_sequence_t ProvideSIWFSNumberRes_sequence[] = {
9722   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sIWFSNumber_impl },
9723   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9724   { 0, 0, 0, NULL }
9725 };
9726
9727 static int
9728 dissect_gsm_map_ProvideSIWFSNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9729   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9730                                    ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberRes);
9731
9732   return offset;
9733 }
9734
9735
9736 static const ber_sequence_t SIWFSSignallingModifyArg_sequence[] = {
9737   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
9738   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
9739   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9740   { 0, 0, 0, NULL }
9741 };
9742
9743 static int
9744 dissect_gsm_map_SIWFSSignallingModifyArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9745   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9746                                    SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyArg);
9747
9748   return offset;
9749 }
9750
9751
9752 static const ber_sequence_t SIWFSSignallingModifyRes_sequence[] = {
9753   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
9754   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9755   { 0, 0, 0, NULL }
9756 };
9757
9758 static int
9759 dissect_gsm_map_SIWFSSignallingModifyRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9760   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9761                                    SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyRes);
9762
9763   return offset;
9764 }
9765
9766
9767 static const value_string gsm_map_Ccbs_Monitoring_vals[] = {
9768   {   0, "stopMonitoring" },
9769   {   1, "startMonitoring" },
9770   { 0, NULL }
9771 };
9772
9773
9774 static int
9775 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_) {
9776   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9777                                   NULL);
9778
9779   return offset;
9780 }
9781
9782
9783 static const value_string gsm_map_ReportingState_vals[] = {
9784   {   0, "stopMonitoring" },
9785   {   1, "startMonitoring" },
9786   { 0, NULL }
9787 };
9788
9789
9790 static int
9791 dissect_gsm_map_ReportingState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9792   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9793                                   NULL);
9794
9795   return offset;
9796 }
9797 static int dissect_ccbs_Monitoring(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9798   return dissect_gsm_map_ReportingState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Monitoring);
9799 }
9800
9801
9802 static const ber_sequence_t SetReportingStateArg_sequence[] = {
9803   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_imsi },
9804   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_lmsi },
9805   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_ccbs_Monitoring },
9806   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
9807   { 0, 0, 0, NULL }
9808 };
9809
9810 static int
9811 dissect_gsm_map_SetReportingStateArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9812   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9813                                    SetReportingStateArg_sequence, hf_index, ett_gsm_map_SetReportingStateArg);
9814
9815   return offset;
9816 }
9817
9818
9819 static const value_string gsm_map_CCBS_SubscriberStatus_vals[] = {
9820   {   0, "ccbsNotIdle" },
9821   {   1, "ccbsIdle" },
9822   {   2, "ccbsNotReachable" },
9823   { 0, NULL }
9824 };
9825
9826
9827 static int
9828 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_) {
9829   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9830                                   NULL);
9831
9832   return offset;
9833 }
9834 static int dissect_ccbs_SubscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9835   return dissect_gsm_map_CCBS_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_SubscriberStatus);
9836 }
9837
9838
9839 static const ber_sequence_t SetReportingStateRes_sequence[] = {
9840   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
9841   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9842   { 0, 0, 0, NULL }
9843 };
9844
9845 static int
9846 dissect_gsm_map_SetReportingStateRes(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                                    SetReportingStateRes_sequence, hf_index, ett_gsm_map_SetReportingStateRes);
9849
9850   return offset;
9851 }
9852
9853
9854 static const ber_sequence_t EventReportData_sequence[] = {
9855   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
9856   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9857   { 0, 0, 0, NULL }
9858 };
9859
9860 static int
9861 dissect_gsm_map_EventReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9862   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9863                                    EventReportData_sequence, hf_index, ett_gsm_map_EventReportData);
9864
9865   return offset;
9866 }
9867 static int dissect_eventReportData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9868   return dissect_gsm_map_EventReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventReportData);
9869 }
9870
9871
9872 static const value_string gsm_map_MonitoringMode_vals[] = {
9873   {   0, "a-side" },
9874   {   1, "b-side" },
9875   { 0, NULL }
9876 };
9877
9878
9879 static int
9880 dissect_gsm_map_MonitoringMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9881   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9882                                   NULL);
9883
9884   return offset;
9885 }
9886 static int dissect_monitoringMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9887   return dissect_gsm_map_MonitoringMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_monitoringMode);
9888 }
9889
9890
9891 static const value_string gsm_map_CallOutcome_vals[] = {
9892   {   0, "success" },
9893   {   1, "failure" },
9894   {   2, "busy" },
9895   { 0, NULL }
9896 };
9897
9898
9899 static int
9900 dissect_gsm_map_CallOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9901   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9902                                   NULL);
9903
9904   return offset;
9905 }
9906 static int dissect_callOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9907   return dissect_gsm_map_CallOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callOutcome);
9908 }
9909
9910
9911 static const ber_sequence_t CallReportData_sequence[] = {
9912   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_monitoringMode_impl },
9913   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOutcome_impl },
9914   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9915   { 0, 0, 0, NULL }
9916 };
9917
9918 static int
9919 dissect_gsm_map_CallReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9920   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9921                                    CallReportData_sequence, hf_index, ett_gsm_map_CallReportData);
9922
9923   return offset;
9924 }
9925 static int dissect_callReportdata_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9926   return dissect_gsm_map_CallReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReportdata);
9927 }
9928
9929
9930 static const ber_sequence_t StatusReportArg_sequence[] = {
9931   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9932   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventReportData_impl },
9933   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReportdata_impl },
9934   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9935   { 0, 0, 0, NULL }
9936 };
9937
9938 static int
9939 dissect_gsm_map_StatusReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9940   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9941                                    StatusReportArg_sequence, hf_index, ett_gsm_map_StatusReportArg);
9942
9943   return offset;
9944 }
9945
9946
9947 static const ber_sequence_t StatusReportRes_sequence[] = {
9948   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9949   { 0, 0, 0, NULL }
9950 };
9951
9952 static int
9953 dissect_gsm_map_StatusReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9954   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9955                                    StatusReportRes_sequence, hf_index, ett_gsm_map_StatusReportRes);
9956
9957   return offset;
9958 }
9959
9960
9961 static const value_string gsm_map_Ruf_Outcome_vals[] = {
9962   {   0, "accepted" },
9963   {   1, "rejected" },
9964   {   2, "noResponseFromFreeMS" },
9965   {   3, "noResponseFromBusyMS" },
9966   {   4, "udubFromFreeMS" },
9967   {   5, "udubFromBusyMS" },
9968   { 0, NULL }
9969 };
9970
9971
9972 static int
9973 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_) {
9974   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9975                                   NULL);
9976
9977   return offset;
9978 }
9979 static int dissect_ruf_Outcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9980   return dissect_gsm_map_Ruf_Outcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ruf_Outcome);
9981 }
9982
9983
9984 static const ber_sequence_t IST_AlertArg_sequence[] = {
9985   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9986   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9987   { 0, 0, 0, NULL }
9988 };
9989
9990 static int
9991 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_) {
9992   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9993                                    IST_AlertArg_sequence, hf_index, ett_gsm_map_IST_AlertArg);
9994
9995   return offset;
9996 }
9997
9998
9999 static const value_string gsm_map_CallTerminationIndicator_vals[] = {
10000   {   0, "terminateCallActivityReferred" },
10001   {   1, "terminateAllCallActivities" },
10002   { 0, NULL }
10003 };
10004
10005
10006 static int
10007 dissect_gsm_map_CallTerminationIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10008   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10009                                   NULL);
10010
10011   return offset;
10012 }
10013 static int dissect_callTerminationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10014   return dissect_gsm_map_CallTerminationIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTerminationIndicator);
10015 }
10016
10017
10018 static const ber_sequence_t IST_AlertRes_sequence[] = {
10019   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
10020   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istInformationWithdraw_impl },
10021   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTerminationIndicator_impl },
10022   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10023   { 0, 0, 0, NULL }
10024 };
10025
10026 static int
10027 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_) {
10028   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10029                                    IST_AlertRes_sequence, hf_index, ett_gsm_map_IST_AlertRes);
10030
10031   return offset;
10032 }
10033
10034
10035 static const ber_sequence_t IST_CommandArg_sequence[] = {
10036   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10037   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10038   { 0, 0, 0, NULL }
10039 };
10040
10041 static int
10042 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_) {
10043   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10044                                    IST_CommandArg_sequence, hf_index, ett_gsm_map_IST_CommandArg);
10045
10046   return offset;
10047 }
10048
10049
10050 static const ber_sequence_t IST_CommandRes_sequence[] = {
10051   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10052   { 0, 0, 0, NULL }
10053 };
10054
10055 static int
10056 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_) {
10057   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10058                                    IST_CommandRes_sequence, hf_index, ett_gsm_map_IST_CommandRes);
10059
10060   return offset;
10061 }
10062
10063
10064 static const ber_sequence_t ReleaseResourcesArg_sequence[] = {
10065   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msrn },
10066   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10067   { 0, 0, 0, NULL }
10068 };
10069
10070 static int
10071 dissect_gsm_map_ReleaseResourcesArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10072   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10073                                    ReleaseResourcesArg_sequence, hf_index, ett_gsm_map_ReleaseResourcesArg);
10074
10075   return offset;
10076 }
10077
10078
10079 static const ber_sequence_t ReleaseResourcesRes_sequence[] = {
10080   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10081   { 0, 0, 0, NULL }
10082 };
10083
10084 static int
10085 dissect_gsm_map_ReleaseResourcesRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10086   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10087                                    ReleaseResourcesRes_sequence, hf_index, ett_gsm_map_ReleaseResourcesRes);
10088
10089   return offset;
10090 }
10091
10092
10093
10094 static int
10095 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_) {
10096   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10097                                   NULL);
10098
10099   return offset;
10100 }
10101 static int dissect_ccbs_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10102   return dissect_gsm_map_CCBS_Index(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Index);
10103 }
10104
10105
10106 static const ber_sequence_t CCBS_Feature_sequence[] = {
10107   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
10108   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
10109   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
10110   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup_impl },
10111   { 0, 0, 0, NULL }
10112 };
10113
10114 int
10115 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_) {
10116   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10117                                    CCBS_Feature_sequence, hf_index, ett_gsm_map_CCBS_Feature);
10118
10119   return offset;
10120 }
10121 static int dissect_ccbs_Feature(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10122   return dissect_gsm_map_CCBS_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
10123 }
10124 static int dissect_ccbs_Feature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10125   return dissect_gsm_map_CCBS_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
10126 }
10127 static int dissect_CCBS_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10128   return dissect_gsm_map_CCBS_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CCBS_FeatureList_item);
10129 }
10130
10131
10132 static const ber_sequence_t RemoteUserFreeArg_sequence[] = {
10133   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10134   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
10135   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
10136   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
10137   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replaceB_Number_impl },
10138   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
10139   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10140   { 0, 0, 0, NULL }
10141 };
10142
10143 static int
10144 dissect_gsm_map_RemoteUserFreeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10145   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10146                                    RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_RemoteUserFreeArg);
10147
10148   return offset;
10149 }
10150
10151
10152 static const ber_sequence_t RemoteUserFreeRes_sequence[] = {
10153   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ruf_Outcome_impl },
10154   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10155   { 0, 0, 0, NULL }
10156 };
10157
10158 static int
10159 dissect_gsm_map_RemoteUserFreeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10160   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10161                                    RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_RemoteUserFreeRes);
10162
10163   return offset;
10164 }
10165
10166
10167
10168 static int
10169 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_) {
10170   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10171                                        NULL);
10172
10173   return offset;
10174 }
10175
10176
10177 static const ber_sequence_t SS_Data_sequence[] = {
10178   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
10179   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10180   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
10181   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ext_basicServiceGroupList },
10182   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
10183   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
10184   { 0, 0, 0, NULL }
10185 };
10186
10187 static int
10188 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_) {
10189   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10190                                    SS_Data_sequence, hf_index, ett_gsm_map_SS_Data);
10191
10192   return offset;
10193 }
10194 static int dissect_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10195   return dissect_gsm_map_SS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Data);
10196 }
10197
10198
10199 static const ber_sequence_t RegisterSS_Arg_sequence[] = {
10200   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
10201   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
10202   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
10203   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
10204   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
10205   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
10206   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
10207   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
10208   { 0, 0, 0, NULL }
10209 };
10210
10211 int
10212 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_) {
10213   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10214                                    RegisterSS_Arg_sequence, hf_index, ett_gsm_map_RegisterSS_Arg);
10215
10216   return offset;
10217 }
10218
10219
10220 const value_string gsm_map_SS_Info_vals[] = {
10221   {   0, "forwardingInfo" },
10222   {   1, "callBarringInfo" },
10223   {   3, "ss-Data" },
10224   { 0, NULL }
10225 };
10226
10227 static const ber_choice_t SS_Info_choice[] = {
10228   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
10229   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
10230   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data_impl },
10231   { 0, 0, 0, 0, NULL }
10232 };
10233
10234 int
10235 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_) {
10236   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10237                                  SS_Info_choice, hf_index, ett_gsm_map_SS_Info,
10238                                  NULL);
10239
10240   return offset;
10241 }
10242
10243
10244
10245 static int
10246 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_) {
10247   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10248                                        NULL);
10249
10250   return offset;
10251 }
10252
10253
10254 static const ber_sequence_t CCBS_FeatureList_sequence_of[1] = {
10255   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CCBS_FeatureList_item },
10256 };
10257
10258 static int
10259 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_) {
10260   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
10261                                       CCBS_FeatureList_sequence_of, hf_index, ett_gsm_map_CCBS_FeatureList);
10262
10263   return offset;
10264 }
10265 static int dissect_ccbs_FeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10266   return dissect_gsm_map_CCBS_FeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList);
10267 }
10268
10269
10270 static const ber_sequence_t GenericServiceInfo_sequence[] = {
10271   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
10272   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cliRestrictionOption },
10273   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximumEntitledPriority_impl },
10274   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
10275   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_FeatureList_impl },
10276   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrSB_impl },
10277   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
10278   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrSN_impl },
10279   { 0, 0, 0, NULL }
10280 };
10281
10282 static int
10283 dissect_gsm_map_GenericServiceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10284   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10285                                    GenericServiceInfo_sequence, hf_index, ett_gsm_map_GenericServiceInfo);
10286
10287   return offset;
10288 }
10289 static int dissect_genericServiceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10290   return dissect_gsm_map_GenericServiceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_genericServiceInfo);
10291 }
10292
10293
10294 const value_string gsm_map_InterrogateSS_Res_vals[] = {
10295   {   0, "ss-Status" },
10296   {   2, "basicServiceGroupList" },
10297   {   3, "forwardingFeatureList" },
10298   {   4, "genericServiceInfo" },
10299   { 0, NULL }
10300 };
10301
10302 static const ber_choice_t InterrogateSS_Res_choice[] = {
10303   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10304   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_basicServiceGroupList_impl },
10305   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_forwardingFeatureList_impl },
10306   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_genericServiceInfo_impl },
10307   { 0, 0, 0, 0, NULL }
10308 };
10309
10310 int
10311 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_) {
10312   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10313                                  InterrogateSS_Res_choice, hf_index, ett_gsm_map_InterrogateSS_Res,
10314                                  NULL);
10315
10316   return offset;
10317 }
10318
10319
10320
10321 int
10322 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_) {
10323   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10324                                        NULL);
10325
10326   return offset;
10327 }
10328 static int dissect_ussd_DataCodingScheme(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10329   return dissect_gsm_map_USSD_DataCodingScheme(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_DataCodingScheme);
10330 }
10331 static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10332   return dissect_gsm_map_USSD_DataCodingScheme(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dataCodingScheme);
10333 }
10334
10335
10336
10337 int
10338 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_) {
10339   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10340                                        NULL);
10341
10342   return offset;
10343 }
10344 static int dissect_ussd_String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10345   return dissect_gsm_map_USSD_String(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_String);
10346 }
10347
10348
10349 static const ber_sequence_t Ussd_Arg_sequence[] = {
10350   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
10351   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
10352   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertingPattern },
10353   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10354   { 0, 0, 0, NULL }
10355 };
10356
10357 int
10358 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_) {
10359   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10360                                    Ussd_Arg_sequence, hf_index, ett_gsm_map_Ussd_Arg);
10361
10362   return offset;
10363 }
10364
10365
10366 static const ber_sequence_t Ussd_Res_sequence[] = {
10367   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
10368   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
10369   { 0, 0, 0, NULL }
10370 };
10371
10372 int
10373 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_) {
10374   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10375                                    Ussd_Res_sequence, hf_index, ett_gsm_map_Ussd_Res);
10376
10377   return offset;
10378 }
10379
10380
10381 static const value_string gsm_map_FailureCause_vals[] = {
10382   {   0, "wrongUserResponse" },
10383   {   1, "wrongNetworkSignature" },
10384   { 0, NULL }
10385 };
10386
10387
10388 static int
10389 dissect_gsm_map_FailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10390   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10391                                   NULL);
10392
10393   return offset;
10394 }
10395 static int dissect_failureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10396   return dissect_gsm_map_FailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_failureCause);
10397 }
10398
10399
10400
10401 static int
10402 dissect_gsm_map_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10403   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
10404
10405   return offset;
10406 }
10407 static int dissect_re_attempt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10408   return dissect_gsm_map_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_attempt);
10409 }
10410 static int dissect_sm_RP_PRI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10411   return dissect_gsm_map_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_PRI);
10412 }
10413
10414
10415 static const value_string gsm_map_AccessType_vals[] = {
10416   {   0, "call" },
10417   {   1, "emergencyCall" },
10418   {   2, "locationUpdating" },
10419   {   3, "supplementaryService" },
10420   {   4, "shortMessage" },
10421   {   5, "gprsAttach" },
10422   {   6, "routingAreaUpdating" },
10423   {   7, "serviceRequest" },
10424   {   8, "pdpContextActivation" },
10425   {   9, "pdpContextDeactivation" },
10426   {  10, "gprsDetach" },
10427   { 0, NULL }
10428 };
10429
10430
10431 static int
10432 dissect_gsm_map_AccessType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10433   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10434                                   NULL);
10435
10436   return offset;
10437 }
10438 static int dissect_accessType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10439   return dissect_gsm_map_AccessType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessType);
10440 }
10441
10442
10443 static const ber_sequence_t AuthenticationFailureReportArg_sequence[] = {
10444   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
10445   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_failureCause },
10446   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10447   { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_attempt },
10448   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_accessType },
10449   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_rand },
10450   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
10451   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
10452   { 0, 0, 0, NULL }
10453 };
10454
10455 static int
10456 dissect_gsm_map_AuthenticationFailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10457   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10458                                    AuthenticationFailureReportArg_sequence, hf_index, ett_gsm_map_AuthenticationFailureReportArg);
10459
10460   return offset;
10461 }
10462
10463
10464 static const ber_sequence_t AuthenticationFailureReportRes_sequence[] = {
10465   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10466   { 0, 0, 0, NULL }
10467 };
10468
10469 static int
10470 dissect_gsm_map_AuthenticationFailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10471   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10472                                    AuthenticationFailureReportRes_sequence, hf_index, ett_gsm_map_AuthenticationFailureReportRes);
10473
10474   return offset;
10475 }
10476
10477
10478
10479 int
10480 dissect_gsm_map_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10481   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
10482                                             pinfo, tree, tvb, offset, hf_index,
10483                                             NULL);
10484
10485   return offset;
10486 }
10487
10488
10489 const value_string gsm_map_GetPasswordArg_vals[] = {
10490   {   0, "enterPW" },
10491   {   1, "enterNewPW" },
10492   {   2, "enterNewPW-Again" },
10493   { 0, NULL }
10494 };
10495
10496
10497 int
10498 dissect_gsm_map_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10499   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10500                                   NULL);
10501
10502   return offset;
10503 }
10504
10505
10506
10507 int
10508 dissect_gsm_map_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10509   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
10510                                             pinfo, tree, tvb, offset, hf_index,
10511                                             NULL);
10512
10513   return offset;
10514 }
10515
10516
10517 static const asn_namedbit ServiceIndicator_bits[] = {
10518   {  0, &hf_gsm_map_ServiceIndicator_clir_invoked, -1, -1, "clir-invoked", NULL },
10519   {  1, &hf_gsm_map_ServiceIndicator_camel_invoked, -1, -1, "camel-invoked", NULL },
10520   { 0, NULL, 0, 0, NULL, NULL }
10521 };
10522
10523 static int
10524 dissect_gsm_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10525   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
10526                                     ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
10527                                     NULL);
10528
10529   return offset;
10530 }
10531 static int dissect_serviceIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10532   return dissect_gsm_map_ServiceIndicator(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceIndicator);
10533 }
10534
10535
10536 static const ber_sequence_t CCBS_Data_sequence[] = {
10537   { BER_CLASS_CON, 0, 0, dissect_ccbs_Feature },
10538   { BER_CLASS_CON, 1, 0, dissect_translatedB_Number },
10539   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_serviceIndicator },
10540   { BER_CLASS_CON, 3, 0, dissect_callInfo },
10541   { BER_CLASS_CON, 4, 0, dissect_networkSignalInfo },
10542   { 0, 0, 0, NULL }
10543 };
10544
10545 static int
10546 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_) {
10547   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10548                                    CCBS_Data_sequence, hf_index, ett_gsm_map_CCBS_Data);
10549
10550   return offset;
10551 }
10552 static int dissect_ccbs_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10553   return dissect_gsm_map_CCBS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Data);
10554 }
10555
10556
10557 static const ber_sequence_t RegisterCC_EntryArg_sequence[] = {
10558   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10559   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Data_impl },
10560   { 0, 0, 0, NULL }
10561 };
10562
10563 static int
10564 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_) {
10565   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10566                                    RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_RegisterCC_EntryArg);
10567
10568   return offset;
10569 }
10570
10571
10572 static const ber_sequence_t RegisterCC_EntryRes_sequence[] = {
10573   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
10574   { 0, 0, 0, NULL }
10575 };
10576
10577 int
10578 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_) {
10579   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10580                                    RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_RegisterCC_EntryRes);
10581
10582   return offset;
10583 }
10584
10585
10586 static const ber_sequence_t EraseCC_EntryArg_sequence[] = {
10587   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10588   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
10589   { 0, 0, 0, NULL }
10590 };
10591
10592 int
10593 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_) {
10594   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10595                                    EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_EraseCC_EntryArg);
10596
10597   return offset;
10598 }
10599
10600
10601 static const ber_sequence_t EraseCC_EntryRes_sequence[] = {
10602   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10603   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10604   { 0, 0, 0, NULL }
10605 };
10606
10607 int
10608 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_) {
10609   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10610                                    EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_EraseCC_EntryRes);
10611
10612   return offset;
10613 }
10614
10615
10616
10617 static int
10618 dissect_gsm_map_ServiceCentreAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10619 #line 193 "gsmmap.cnf"
10620
10621  tvbuff_t       *parameter_tvb;
10622  char           *digit_str;
10623
10624    offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10625                                        &parameter_tvb);
10626
10627
10628  if (!parameter_tvb)
10629         return offset;
10630
10631  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
10632  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
10633  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
10634
10635  digit_str = unpack_digits(parameter_tvb, 1);
10636
10637  proto_tree_add_string(tree, hf_gsm_map_servicecentreaddress_digits, parameter_tvb, 1, -1, digit_str);
10638  pinfo->p2p_dir = P2P_DIR_SENT;
10639
10640
10641
10642   return offset;
10643 }
10644 static int dissect_serviceCentreAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10645   return dissect_gsm_map_ServiceCentreAddress(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
10646 }
10647 static int dissect_serviceCentreAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10648   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
10649 }
10650 static int dissect_serviceCentreAddressOA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10651   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressOA);
10652 }
10653 static int dissect_serviceCentreAddressDA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10654   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressDA);
10655 }
10656
10657
10658
10659 static int
10660 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_) {
10661   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10662                                   NULL);
10663
10664   return offset;
10665 }
10666 static int dissect_sm_RP_MTI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10667   return dissect_gsm_map_INTEGER_0_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_MTI);
10668 }
10669
10670
10671
10672 static int
10673 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_) {
10674   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10675                                        NULL);
10676
10677   return offset;
10678 }
10679 static int dissect_sm_RP_SMEA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10680   return dissect_gsm_map_OCTET_STRING_SIZE_1_12(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_SMEA);
10681 }
10682
10683
10684 static const ber_sequence_t RoutingInfoForSMArg_sequence[] = {
10685   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10686   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sm_RP_PRI_impl },
10687   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddress_impl },
10688   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10689   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
10690   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_MTI_impl },
10691   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_SMEA_impl },
10692   { 0, 0, 0, NULL }
10693 };
10694
10695 static int
10696 dissect_gsm_map_RoutingInfoForSMArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10697   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10698                                    RoutingInfoForSMArg_sequence, hf_index, ett_gsm_map_RoutingInfoForSMArg);
10699
10700   return offset;
10701 }
10702
10703
10704 static const value_string gsm_map_Additional_Number_vals[] = {
10705   {   0, "msc-Number" },
10706   {   1, "sgsn-Number" },
10707   { 0, NULL }
10708 };
10709
10710 static const ber_choice_t Additional_Number_choice[] = {
10711   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
10712   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
10713   { 0, 0, 0, 0, NULL }
10714 };
10715
10716 static int
10717 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_) {
10718   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10719                                  Additional_Number_choice, hf_index, ett_gsm_map_Additional_Number,
10720                                  NULL);
10721
10722   return offset;
10723 }
10724 static int dissect_additional_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10725   return dissect_gsm_map_Additional_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_Number);
10726 }
10727
10728
10729 static const ber_sequence_t LocationInfoWithLMSI_sequence[] = {
10730   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_networkNode_Number_impl },
10731   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
10732   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10733   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
10734   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_additional_Number_impl },
10735   { 0, 0, 0, NULL }
10736 };
10737
10738 static int
10739 dissect_gsm_map_LocationInfoWithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10740   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10741                                    LocationInfoWithLMSI_sequence, hf_index, ett_gsm_map_LocationInfoWithLMSI);
10742
10743   return offset;
10744 }
10745 static int dissect_locationInfoWithLMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10746   return dissect_gsm_map_LocationInfoWithLMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInfoWithLMSI);
10747 }
10748
10749
10750 static const ber_sequence_t RoutingInfoForSM_Res_sequence[] = {
10751   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
10752   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationInfoWithLMSI_impl },
10753   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10754   { 0, 0, 0, NULL }
10755 };
10756
10757 static int
10758 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_) {
10759   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10760                                    RoutingInfoForSM_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForSM_Res);
10761
10762   return offset;
10763 }
10764
10765
10766 static const value_string gsm_map_Sm_RP_DA_vals[] = {
10767   {   0, "imsi" },
10768   {   1, "lmsi" },
10769   {   4, "serviceCentreAddressDA" },
10770   {   5, "noSM-RP-DA" },
10771   { 0, NULL }
10772 };
10773
10774 static const ber_choice_t Sm_RP_DA_choice[] = {
10775   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10776   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
10777   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressDA_impl },
10778   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_DA_impl },
10779   { 0, 0, 0, 0, NULL }
10780 };
10781
10782 static int
10783 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_) {
10784   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10785                                  Sm_RP_DA_choice, hf_index, ett_gsm_map_Sm_RP_DA,
10786                                  NULL);
10787
10788   return offset;
10789 }
10790 static int dissect_sm_RP_DA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10791   return dissect_gsm_map_Sm_RP_DA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_DA);
10792 }
10793
10794
10795 static const value_string gsm_map_Sm_RP_OA_vals[] = {
10796   {   2, "msisdn" },
10797   {   4, "serviceCentreAddressOA" },
10798   {   5, "noSM-RP-OA" },
10799   { 0, NULL }
10800 };
10801
10802 static const ber_choice_t Sm_RP_OA_choice[] = {
10803   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10804   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressOA_impl },
10805   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_OA_impl },
10806   { 0, 0, 0, 0, NULL }
10807 };
10808
10809 static int
10810 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_) {
10811   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10812                                  Sm_RP_OA_choice, hf_index, ett_gsm_map_Sm_RP_OA,
10813                                  NULL);
10814
10815   return offset;
10816 }
10817 static int dissect_sm_RP_OA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10818   return dissect_gsm_map_Sm_RP_OA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_OA);
10819 }
10820
10821
10822
10823 static int
10824 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_) {
10825 #line 152 "gsmmap.cnf"
10826
10827   tvbuff_t      *tpdu_tvb;
10828         
10829     offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10830                                        &tpdu_tvb);
10831
10832
10833     /*
10834      * dissect the embedded TPDU message
10835      */
10836  if (!tpdu_tvb)
10837         return offset;
10838
10839     dissector_try_port(sms_dissector_table, 0, tpdu_tvb, pinfo, top_tree);
10840
10841
10842   return offset;
10843 }
10844 static int dissect_sm_RP_UI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10845   return dissect_gsm_map_Sm_RP_UI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_UI);
10846 }
10847
10848
10849 static const ber_sequence_t Mo_forwardSM_Arg_sequence[] = {
10850   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
10851   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
10852   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10853   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10854   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
10855   { 0, 0, 0, NULL }
10856 };
10857
10858 static int
10859 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_) {
10860   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10861                                    Mo_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Arg);
10862
10863   return offset;
10864 }
10865
10866
10867 static const ber_sequence_t Mo_forwardSM_Res_sequence[] = {
10868   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10869   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10870   { 0, 0, 0, NULL }
10871 };
10872
10873 static int
10874 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_) {
10875   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10876                                    Mo_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Res);
10877
10878   return offset;
10879 }
10880
10881
10882 static const ber_sequence_t Mt_forwardSM_Arg_sequence[] = {
10883   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
10884   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
10885   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10886   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_moreMessagesToSend },
10887   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10888   { 0, 0, 0, NULL }
10889 };
10890
10891 static int
10892 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_) {
10893   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10894                                    Mt_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Arg);
10895
10896   return offset;
10897 }
10898
10899
10900 static const ber_sequence_t Mt_forwardSM_Res_sequence[] = {
10901   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10902   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10903   { 0, 0, 0, NULL }
10904 };
10905
10906 static int
10907 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_) {
10908   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10909                                    Mt_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Res);
10910
10911   return offset;
10912 }
10913
10914
10915
10916 static int
10917 dissect_gsm_map_StoredMSISDN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10918   offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
10919
10920   return offset;
10921 }
10922 static int dissect_storedMSISDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10923   return dissect_gsm_map_StoredMSISDN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_storedMSISDN);
10924 }
10925
10926
10927 static const value_string gsm_map_Sm_DeliveryOutcome_vals[] = {
10928   {   0, "memoryCapacityExceeded" },
10929   {   1, "absentSubscriber" },
10930   {   2, "successfulTransfer" },
10931   { 0, NULL }
10932 };
10933
10934
10935 static int
10936 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_) {
10937   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10938                                   NULL);
10939
10940   return offset;
10941 }
10942 static int dissect_sm_DeliveryOutcome(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10943   return dissect_gsm_map_Sm_DeliveryOutcome(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_DeliveryOutcome);
10944 }
10945 static int dissect_additionalSM_DeliveryOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10946   return dissect_gsm_map_Sm_DeliveryOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSM_DeliveryOutcome);
10947 }
10948
10949
10950
10951 static int
10952 dissect_gsm_map_AbsentSubscriberDiagnosticSM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10953   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10954                                   NULL);
10955
10956   return offset;
10957 }
10958 static int dissect_absentSubscriberDiagnosticSM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10959   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
10960 }
10961 static int dissect_absentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10962   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
10963 }
10964 static int dissect_additionalAbsentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10965   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalAbsentSubscriberDiagnosticSM);
10966 }
10967 static int dissect_mobileNotReachableReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10968   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mobileNotReachableReason);
10969 }
10970
10971
10972 static const ber_sequence_t ReportSM_DeliveryStatusArg_sequence[] = {
10973   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
10974   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
10975   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_DeliveryOutcome },
10976   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberDiagnosticSM_impl },
10977   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10978   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
10979   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deliveryOutcomeIndicator_impl },
10980   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSM_DeliveryOutcome_impl },
10981   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
10982   { 0, 0, 0, NULL }
10983 };
10984
10985 static int
10986 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_) {
10987   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10988                                    ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusArg);
10989
10990   return offset;
10991 }
10992
10993
10994 static const ber_sequence_t ReportSM_DeliveryStatusRes_sequence[] = {
10995   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
10996   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10997   { 0, 0, 0, NULL }
10998 };
10999
11000 static int
11001 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_) {
11002   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11003                                    ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusRes);
11004
11005   return offset;
11006 }
11007
11008
11009 static const asn_namedbit T_mw_Status_bits[] = {
11010   {  0, &hf_gsm_map_T_mw_Status_scAddressNotIncluded, -1, -1, "scAddressNotIncluded", NULL },
11011   {  1, &hf_gsm_map_T_mw_Status_mnrfSet, -1, -1, "mnrfSet", NULL },
11012   {  2, &hf_gsm_map_T_mw_Status_mcefSet, -1, -1, "mcefSet", NULL },
11013   {  3, &hf_gsm_map_T_mw_Status_mnrgSet, -1, -1, "mnrgSet", NULL },
11014   { 0, NULL, 0, 0, NULL, NULL }
11015 };
11016
11017 static int
11018 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_) {
11019   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
11020                                     T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
11021                                     NULL);
11022
11023   return offset;
11024 }
11025 static int dissect_mw_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11026   return dissect_gsm_map_T_mw_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mw_Status);
11027 }
11028
11029
11030 static const ber_sequence_t InformServiceCentreArg_sequence[] = {
11031   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
11032   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mw_Status },
11033   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11034   { 0, 0, 0, NULL }
11035 };
11036
11037 static int
11038 dissect_gsm_map_InformServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11039   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11040                                    InformServiceCentreArg_sequence, hf_index, ett_gsm_map_InformServiceCentreArg);
11041
11042   return offset;
11043 }
11044
11045
11046 static const ber_sequence_t AlertServiceCentreArg_sequence[] = {
11047   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
11048   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
11049   { 0, 0, 0, NULL }
11050 };
11051
11052 static int
11053 dissect_gsm_map_AlertServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11054   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11055                                    AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_AlertServiceCentreArg);
11056
11057   return offset;
11058 }
11059
11060
11061 static const value_string gsm_map_T_alertReason_vals[] = {
11062   {   0, "msPresent" },
11063   {   1, "memoryAvailable" },
11064   { 0, NULL }
11065 };
11066
11067
11068 static int
11069 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_) {
11070   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11071                                   NULL);
11072
11073   return offset;
11074 }
11075 static int dissect_alertReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11076   return dissect_gsm_map_T_alertReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReason);
11077 }
11078
11079
11080 static const ber_sequence_t ReadyForSM_Arg_sequence[] = {
11081   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11082   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_alertReason },
11083   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertReasonIndicator },
11084   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11085   { 0, 0, 0, NULL }
11086 };
11087
11088 static int
11089 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_) {
11090   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11091                                    ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_ReadyForSM_Arg);
11092
11093   return offset;
11094 }
11095
11096
11097 static const ber_sequence_t ReadyForSM_Res_sequence[] = {
11098   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11099   { 0, 0, 0, NULL }
11100 };
11101
11102 static int
11103 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_) {
11104   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11105                                    ReadyForSM_Res_sequence, hf_index, ett_gsm_map_ReadyForSM_Res);
11106
11107   return offset;
11108 }
11109
11110
11111 static const value_string gsm_map_T_requestedDomain_vals[] = {
11112   {   0, "cs-Domain" },
11113   {   1, "ps-Domain" },
11114   { 0, NULL }
11115 };
11116
11117
11118 static int
11119 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_) {
11120   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11121                                   NULL);
11122
11123   return offset;
11124 }
11125 static int dissect_requestedDomain_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11126   return dissect_gsm_map_T_requestedDomain(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedDomain);
11127 }
11128
11129
11130 static const ber_sequence_t RequestedInfo_sequence[] = {
11131   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_flg_impl },
11132   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberState_flg_impl },
11133   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11134   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocation_impl },
11135   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedDomain_impl },
11136   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_flg_impl },
11137   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_classmark_impl },
11138   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpRequestedInfo_impl },
11139   { 0, 0, 0, NULL }
11140 };
11141
11142 static int
11143 dissect_gsm_map_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11144   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11145                                    RequestedInfo_sequence, hf_index, ett_gsm_map_RequestedInfo);
11146
11147   return offset;
11148 }
11149 static int dissect_requestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11150   return dissect_gsm_map_RequestedInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedInfo);
11151 }
11152
11153
11154 static const ber_sequence_t ProvideSubscriberInfoArg_sequence[] = {
11155   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11156   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
11157   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
11158   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11159   { 0, 0, 0, NULL }
11160 };
11161
11162 static int
11163 dissect_gsm_map_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11164   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11165                                    ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoArg);
11166
11167   return offset;
11168 }
11169
11170
11171 static const ber_sequence_t ProvideSubscriberInfoRes_sequence[] = {
11172   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
11173   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11174   { 0, 0, 0, NULL }
11175 };
11176
11177 static int
11178 dissect_gsm_map_ProvideSubscriberInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11179   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11180                                    ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoRes);
11181
11182   return offset;
11183 }
11184
11185
11186 static const ber_sequence_t AnyTimeInterrogationArg_sequence[] = {
11187   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity },
11188   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
11189   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
11190   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11191   { 0, 0, 0, NULL }
11192 };
11193
11194 static int
11195 dissect_gsm_map_AnyTimeInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11196   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11197                                    AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationArg);
11198
11199   return offset;
11200 }
11201
11202
11203 static const ber_sequence_t AnyTimeInterrogationRes_sequence[] = {
11204   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
11205   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11206   { 0, 0, 0, NULL }
11207 };
11208
11209 static int
11210 dissect_gsm_map_AnyTimeInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11211   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11212                                    AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationRes);
11213
11214   return offset;
11215 }
11216
11217
11218 static const ber_sequence_t SS_ForBS_Code_sequence[] = {
11219   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
11220   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
11221   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
11222   { 0, 0, 0, NULL }
11223 };
11224
11225 int
11226 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_) {
11227   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11228                                    SS_ForBS_Code_sequence, hf_index, ett_gsm_map_SS_ForBS_Code);
11229
11230   return offset;
11231 }
11232 static int dissect_requestedSS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11233   return dissect_gsm_map_SS_ForBS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSS_Info);
11234 }
11235
11236
11237 static const value_string gsm_map_RequestedCAMEL_SubscriptionInfo_vals[] = {
11238   {   0, "o-CSI" },
11239   {   1, "t-CSI" },
11240   {   2, "vt-CSI" },
11241   {   3, "tif-CSI" },
11242   {   4, "gprs-CSI" },
11243   {   5, "mo-sms-CSI" },
11244   {   6, "ss-CSI" },
11245   {   7, "m-CSI" },
11246   {   8, "d-csi" },
11247   { 0, NULL }
11248 };
11249
11250
11251 static int
11252 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_) {
11253   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11254                                   NULL);
11255
11256   return offset;
11257 }
11258 static int dissect_requestedCAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11259   return dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCAMEL_SubscriptionInfo);
11260 }
11261 static int dissect_requestedCamel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11262   return dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCamel_SubscriptionInfo);
11263 }
11264
11265
11266 static const value_string gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals[] = {
11267   {   0, "mt-sms-CSI" },
11268   {   1, "mg-csi" },
11269   {   2, "o-IM-CSI" },
11270   {   3, "d-IM-CSI" },
11271   {   4, "vt-IM-CSI" },
11272   { 0, NULL }
11273 };
11274
11275
11276 static int
11277 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_) {
11278   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11279                                   NULL);
11280
11281   return offset;
11282 }
11283 static int dissect_additionalRequestedCAMEL_SubscriptionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11284   return dissect_gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo);
11285 }
11286
11287
11288 static const ber_sequence_t RequestedSubscriptionInfo_sequence[] = {
11289   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedSS_Info_impl },
11290   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_impl },
11291   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedCAMEL_SubscriptionInfo_impl },
11292   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_flg_impl },
11293   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_flg_impl },
11294   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11295   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_additionalRequestedCAMEL_SubscriptionInfo },
11296   { 0, 0, 0, NULL }
11297 };
11298
11299 static int
11300 dissect_gsm_map_RequestedSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11301   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11302                                    RequestedSubscriptionInfo_sequence, hf_index, ett_gsm_map_RequestedSubscriptionInfo);
11303
11304   return offset;
11305 }
11306 static int dissect_requestedSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11307   return dissect_gsm_map_RequestedSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSubscriptionInfo);
11308 }
11309
11310
11311 static const ber_sequence_t AnyTimeSubscriptionInterrogationArg_sequence[] = {
11312   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity_impl },
11313   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedSubscriptionInfo_impl },
11314   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
11315   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11316   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
11317   { 0, 0, 0, NULL }
11318 };
11319
11320 static int
11321 dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11322   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11323                                    AnyTimeSubscriptionInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationArg);
11324
11325   return offset;
11326 }
11327
11328
11329 static const ber_sequence_t CallForwardingData_sequence[] = {
11330   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_forwardingFeatureList },
11331   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
11332   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11333   { 0, 0, 0, NULL }
11334 };
11335
11336 static int
11337 dissect_gsm_map_CallForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11338   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11339                                    CallForwardingData_sequence, hf_index, ett_gsm_map_CallForwardingData);
11340
11341   return offset;
11342 }
11343 static int dissect_callForwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11344   return dissect_gsm_map_CallForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callForwardingData);
11345 }
11346
11347
11348
11349 static int
11350 dissect_gsm_map_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11351   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
11352                                             pinfo, tree, tvb, offset, hf_index,
11353                                             NULL);
11354
11355   return offset;
11356 }
11357 static int dissect_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11358   return dissect_gsm_map_Password(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_password);
11359 }
11360 static int dissect_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11361   return dissect_gsm_map_Password(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_password);
11362 }
11363
11364
11365
11366 static int
11367 dissect_gsm_map_WrongPasswordAttemptsCounter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11368   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11369                                   NULL);
11370
11371   return offset;
11372 }
11373 static int dissect_wrongPasswordAttemptsCounter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11374   return dissect_gsm_map_WrongPasswordAttemptsCounter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
11375 }
11376 static int dissect_wrongPasswordAttemptsCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11377   return dissect_gsm_map_WrongPasswordAttemptsCounter(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
11378 }
11379
11380
11381 static const ber_sequence_t CallBarringData_sequence[] = {
11382   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_callBarringFeatureList },
11383   { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_password },
11384   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_wrongPasswordAttemptsCounter },
11385   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
11386   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11387   { 0, 0, 0, NULL }
11388 };
11389
11390 static int
11391 dissect_gsm_map_CallBarringData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11392   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11393                                    CallBarringData_sequence, hf_index, ett_gsm_map_CallBarringData);
11394
11395   return offset;
11396 }
11397 static int dissect_callBarringData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11398   return dissect_gsm_map_CallBarringData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringData);
11399 }
11400
11401
11402 static const ber_sequence_t ODB_Info_sequence[] = {
11403   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_odb_Data },
11404   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
11405   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11406   { 0, 0, 0, NULL }
11407 };
11408
11409 static int
11410 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_) {
11411   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11412                                    ODB_Info_sequence, hf_index, ett_gsm_map_ODB_Info);
11413
11414   return offset;
11415 }
11416 static int dissect_odb_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11417   return dissect_gsm_map_ODB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Info);
11418 }
11419
11420
11421 static const ber_sequence_t CAMEL_SubscriptionInfo_sequence[] = {
11422   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
11423   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
11424   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
11425   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
11426   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
11427   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
11428   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl },
11429   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
11430   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_NotificationToCSE_impl },
11431   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
11432   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
11433   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
11434   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
11435   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11436   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSIDeletedList_impl },
11437   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
11438   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
11439   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
11440   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_CSI_impl },
11441   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_BcsmCamelTDP_CriteriaList_impl },
11442   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_IM_CSI_impl },
11443   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_CSI_impl },
11444   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl },
11445   { 0, 0, 0, NULL }
11446 };
11447
11448 static int
11449 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_) {
11450   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11451                                    CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_CAMEL_SubscriptionInfo);
11452
11453   return offset;
11454 }
11455 static int dissect_camel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11456   return dissect_gsm_map_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camel_SubscriptionInfo);
11457 }
11458
11459
11460 static const ber_sequence_t AnyTimeSubscriptionInterrogationRes_sequence[] = {
11461   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callForwardingData_impl },
11462   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringData_impl },
11463   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
11464   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
11465   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_impl },
11466   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_impl },
11467   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11468   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVLR_impl },
11469   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInSGSN_impl },
11470   { 0, 0, 0, NULL }
11471 };
11472
11473 static int
11474 dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11475   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11476                                    AnyTimeSubscriptionInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationRes);
11477
11478   return offset;
11479 }
11480
11481
11482 static const asn_namedbit OfferedCamel4Functionalities_bits[] = {
11483   {  0, &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt, -1, -1, "initiateCallAttempt", NULL },
11484   {  1, &hf_gsm_map_OfferedCamel4Functionalities_splitLeg, -1, -1, "splitLeg", NULL },
11485   {  2, &hf_gsm_map_OfferedCamel4Functionalities_moveLeg, -1, -1, "moveLeg", NULL },
11486   {  3, &hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg, -1, -1, "disconnectLeg", NULL },
11487   {  4, &hf_gsm_map_OfferedCamel4Functionalities_entityReleased, -1, -1, "entityReleased", NULL },
11488   {  5, &hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument, -1, -1, "dfc-WithArgument", NULL },
11489   {  6, &hf_gsm_map_OfferedCamel4Functionalities_playTone, -1, -1, "playTone", NULL },
11490   {  7, &hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall, -1, -1, "dtmf-MidCall", NULL },
11491   {  8, &hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator, -1, -1, "chargingIndicator", NULL },
11492   {  9, &hf_gsm_map_OfferedCamel4Functionalities_alertingDP, -1, -1, "alertingDP", NULL },
11493   { 10, &hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting, -1, -1, "locationAtAlerting", NULL },
11494   { 11, &hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP, -1, -1, "changeOfPositionDP", NULL },
11495   { 12, &hf_gsm_map_OfferedCamel4Functionalities_or_Interactions, -1, -1, "or-Interactions", NULL },
11496   { 13, &hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements, -1, -1, "warningToneEnhancements", NULL },
11497   { 14, &hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements, -1, -1, "cf-Enhancements", NULL },
11498   { 15, &hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices, -1, -1, "subscribedEnhancedDialledServices", NULL },
11499   { 16, &hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices, -1, -1, "servingNetworkEnhancedDialledServices", NULL },
11500   { 17, &hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP, -1, -1, "criteriaForChangeOfPositionDP", NULL },
11501   { 18, &hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP, -1, -1, "serviceChangeDP", NULL },
11502   { 0, NULL, 0, 0, NULL, NULL }
11503 };
11504
11505 int
11506 dissect_gsm_map_OfferedCamel4Functionalities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11507   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
11508                                     OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_OfferedCamel4Functionalities,
11509                                     NULL);
11510
11511   return offset;
11512 }
11513 static int dissect_offeredCamel4Functionalities(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11514   return dissect_gsm_map_OfferedCamel4Functionalities(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4Functionalities);
11515 }
11516
11517
11518 static const value_string gsm_map_ModificationInstruction_vals[] = {
11519   {   0, "deactivate" },
11520   {   1, "activate" },
11521   { 0, NULL }
11522 };
11523
11524
11525 static int
11526 dissect_gsm_map_ModificationInstruction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11527   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11528                                   NULL);
11529
11530   return offset;
11531 }
11532 static int dissect_modifyNotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11533   return dissect_gsm_map_ModificationInstruction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyNotificationToCSE);
11534 }
11535 static int dissect_modifyCSI_State_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11536   return dissect_gsm_map_ModificationInstruction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyCSI_State);
11537 }
11538
11539
11540 static const ber_sequence_t ModificationRequestFor_CF_Info_sequence[] = {
11541   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11542   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
11543   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
11544   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
11545   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
11546   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_noReplyConditionTime_impl },
11547   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11548   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11549   { 0, 0, 0, NULL }
11550 };
11551
11552 static int
11553 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_) {
11554   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11555                                    ModificationRequestFor_CF_Info_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CF_Info);
11556
11557   return offset;
11558 }
11559 static int dissect_modificationRequestFor_CF_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11560   return dissect_gsm_map_ModificationRequestFor_CF_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CF_Info);
11561 }
11562
11563
11564 static const ber_sequence_t ModificationRequestFor_CB_Info_sequence[] = {
11565   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11566   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
11567   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
11568   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
11569   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
11570   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11571   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11572   { 0, 0, 0, NULL }
11573 };
11574
11575 static int
11576 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_) {
11577   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11578                                    ModificationRequestFor_CB_Info_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CB_Info);
11579
11580   return offset;
11581 }
11582 static int dissect_modificationRequestFor_CB_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11583   return dissect_gsm_map_ModificationRequestFor_CB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CB_Info);
11584 }
11585
11586
11587 static const ber_sequence_t ModificationRequestFor_CSI_sequence[] = {
11588   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestedCamel_SubscriptionInfo_impl },
11589   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11590   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyCSI_State_impl },
11591   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11592   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_additionalRequestedCAMEL_SubscriptionInfo },
11593   { 0, 0, 0, NULL }
11594 };
11595
11596 static int
11597 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_) {
11598   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11599                                    ModificationRequestFor_CSI_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CSI);
11600
11601   return offset;
11602 }
11603 static int dissect_modificationRequestFor_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11604   return dissect_gsm_map_ModificationRequestFor_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CSI);
11605 }
11606
11607
11608 static const ber_sequence_t ModificationRequestFor_ODB_data_sequence[] = {
11609   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_data_impl },
11610   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11611   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11612   { 0, 0, 0, NULL }
11613 };
11614
11615 static int
11616 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_) {
11617   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11618                                    ModificationRequestFor_ODB_data_sequence, hf_index, ett_gsm_map_ModificationRequestFor_ODB_data);
11619
11620   return offset;
11621 }
11622 static int dissect_modificationRequestFor_ODB_data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11623   return dissect_gsm_map_ModificationRequestFor_ODB_data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_ODB_data);
11624 }
11625
11626
11627 static const ber_sequence_t AnyTimeModificationArg_sequence[] = {
11628   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity_impl },
11629   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
11630   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CF_Info_impl },
11631   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CB_Info_impl },
11632   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CSI_impl },
11633   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11634   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
11635   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_modificationRequestFor_ODB_data },
11636   { 0, 0, 0, NULL }
11637 };
11638
11639 static int
11640 dissect_gsm_map_AnyTimeModificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11641   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11642                                    AnyTimeModificationArg_sequence, hf_index, ett_gsm_map_AnyTimeModificationArg);
11643
11644   return offset;
11645 }
11646
11647
11648 static const ber_sequence_t Ext_ForwardingInfoFor_CSE_sequence[] = {
11649   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11650   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_forwardingFeatureList_impl },
11651   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
11652   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11653   { 0, 0, 0, NULL }
11654 };
11655
11656 static int
11657 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_) {
11658   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11659                                    Ext_ForwardingInfoFor_CSE_sequence, hf_index, ett_gsm_map_Ext_ForwardingInfoFor_CSE);
11660
11661   return offset;
11662 }
11663 static int dissect_forwardingInfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11664   return dissect_gsm_map_Ext_ForwardingInfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfoFor_CSE);
11665 }
11666
11667
11668 static const ber_sequence_t Ext_CallBarringInfoFor_CSE_sequence[] = {
11669   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11670   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_callBarringFeatureList_impl },
11671   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
11672   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
11673   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
11674   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11675   { 0, 0, 0, NULL }
11676 };
11677
11678 static int
11679 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_) {
11680   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11681                                    Ext_CallBarringInfoFor_CSE_sequence, hf_index, ett_gsm_map_Ext_CallBarringInfoFor_CSE);
11682
11683   return offset;
11684 }
11685 static int dissect_callBarringInfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11686   return dissect_gsm_map_Ext_CallBarringInfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfoFor_CSE);
11687 }
11688
11689
11690 static const value_string gsm_map_Ext_SS_InfoFor_CSE_vals[] = {
11691   {   0, "forwardingInfoFor-CSE" },
11692   {   1, "callBarringInfoFor-CSE" },
11693   { 0, NULL }
11694 };
11695
11696 static const ber_choice_t Ext_SS_InfoFor_CSE_choice[] = {
11697   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfoFor_CSE_impl },
11698   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfoFor_CSE_impl },
11699   { 0, 0, 0, 0, NULL }
11700 };
11701
11702 static int
11703 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_) {
11704   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
11705                                  Ext_SS_InfoFor_CSE_choice, hf_index, ett_gsm_map_Ext_SS_InfoFor_CSE,
11706                                  NULL);
11707
11708   return offset;
11709 }
11710 static int dissect_ss_InfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11711   return dissect_gsm_map_Ext_SS_InfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_InfoFor_CSE);
11712 }
11713
11714
11715 static const ber_sequence_t AnyTimeModificationRes_sequence[] = {
11716   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_InfoFor_CSE_impl },
11717   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
11718   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11719   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
11720   { 0, 0, 0, NULL }
11721 };
11722
11723 static int
11724 dissect_gsm_map_AnyTimeModificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11725   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11726                                    AnyTimeModificationRes_sequence, hf_index, ett_gsm_map_AnyTimeModificationRes);
11727
11728   return offset;
11729 }
11730
11731
11732 static const ber_sequence_t NoteSubscriberDataModifiedArg_sequence[] = {
11733   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
11734   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
11735   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInfoFor_CSE_impl },
11736   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringInfoFor_CSE_impl },
11737   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
11738   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
11739   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allInformationSent },
11740   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11741   { 0, 0, 0, NULL }
11742 };
11743
11744 static int
11745 dissect_gsm_map_NoteSubscriberDataModifiedArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11746   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11747                                    NoteSubscriberDataModifiedArg_sequence, hf_index, ett_gsm_map_NoteSubscriberDataModifiedArg);
11748
11749   return offset;
11750 }
11751
11752
11753 static const ber_sequence_t NoteSubscriberDataModifiedRes_sequence[] = {
11754   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11755   { 0, 0, 0, NULL }
11756 };
11757
11758 static int
11759 dissect_gsm_map_NoteSubscriberDataModifiedRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11760   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11761                                    NoteSubscriberDataModifiedRes_sequence, hf_index, ett_gsm_map_NoteSubscriberDataModifiedRes);
11762
11763   return offset;
11764 }
11765
11766
11767 static const ber_sequence_t NoteMM_EventArg_sequence[] = {
11768   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
11769   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventMet_impl },
11770   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11771   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11772   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
11773   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCAMELPhases_impl },
11774   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11775   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_locationInformationGPRS },
11776   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_offeredCamel4Functionalities },
11777   { 0, 0, 0, NULL }
11778 };
11779
11780 static int
11781 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_) {
11782   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11783                                    NoteMM_EventArg_sequence, hf_index, ett_gsm_map_NoteMM_EventArg);
11784
11785   return offset;
11786 }
11787
11788
11789 static const ber_sequence_t NoteMM_EventRes_sequence[] = {
11790   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11791   { 0, 0, 0, NULL }
11792 };
11793
11794 static int
11795 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_) {
11796   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11797                                    NoteMM_EventRes_sequence, hf_index, ett_gsm_map_NoteMM_EventRes);
11798
11799   return offset;
11800 }
11801
11802
11803 static const value_string gsm_map_ModifyNotificationToCSE_vals[] = {
11804   {   0, "deactivate" },
11805   {   1, "activate" },
11806   { 0, NULL }
11807 };
11808
11809
11810 static int
11811 dissect_gsm_map_ModifyNotificationToCSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11812   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11813                                   NULL);
11814
11815   return offset;
11816 }
11817
11818
11819
11820 static int
11821 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_) {
11822   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11823                                        NULL);
11824
11825   return offset;
11826 }
11827 static int dissect_ss_Event_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11828   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Event);
11829 }
11830
11831
11832 static const ber_sequence_t T_ss_EventSpecification_sequence_of[1] = {
11833   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventSpecification_item },
11834 };
11835
11836 static int
11837 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_) {
11838   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
11839                                       T_ss_EventSpecification_sequence_of, hf_index, ett_gsm_map_T_ss_EventSpecification);
11840
11841   return offset;
11842 }
11843 static int dissect_ss_EventSpecification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11844   return dissect_gsm_map_T_ss_EventSpecification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification);
11845 }
11846
11847
11848 static const ber_sequence_t Ss_InvocationNotificationArg_sequence[] = {
11849   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11850   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11851   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ss_Event_impl },
11852   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_EventSpecification_impl },
11853   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11854   { 0, 0, 0, NULL }
11855 };
11856
11857 static int
11858 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_) {
11859   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11860                                    Ss_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationArg);
11861
11862   return offset;
11863 }
11864
11865
11866 static const ber_sequence_t Ss_InvocationNotificationRes_sequence[] = {
11867   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11868   { 0, 0, 0, NULL }
11869 };
11870
11871 static int
11872 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_) {
11873   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11874                                    Ss_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationRes);
11875
11876   return offset;
11877 }
11878
11879
11880
11881 static int
11882 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_) {
11883   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11884                                        NULL);
11885
11886   return offset;
11887 }
11888 static int dissect_codec_Info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11889   return dissect_gsm_map_CODEC_Info(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_codec_Info);
11890 }
11891
11892
11893
11894 static int
11895 dissect_gsm_map_CipheringAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11896   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11897                                        NULL);
11898
11899   return offset;
11900 }
11901 static int dissect_cipheringAlgorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11902   return dissect_gsm_map_CipheringAlgorithm(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cipheringAlgorithm);
11903 }
11904
11905
11906
11907 static int
11908 dissect_gsm_map_GroupKeyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11909   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11910                                   NULL);
11911
11912   return offset;
11913 }
11914 static int dissect_groupKeyNumber_Vk_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11915   return dissect_gsm_map_GroupKeyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKeyNumber_Vk_Id);
11916 }
11917
11918
11919
11920 static int
11921 dissect_gsm_map_VSTK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11922   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11923                                        NULL);
11924
11925   return offset;
11926 }
11927 static int dissect_vstk_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11928   return dissect_gsm_map_VSTK(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vstk);
11929 }
11930
11931
11932
11933 static int
11934 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_) {
11935   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11936                                        NULL);
11937
11938   return offset;
11939 }
11940 static int dissect_vstk_rand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11941   return dissect_gsm_map_VSTK_RAND(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vstk_rand);
11942 }
11943
11944
11945 static const ber_sequence_t PrepareGroupCallArg_sequence[] = {
11946   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_teleservice },
11947   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_asciCallReference },
11948   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_codec_Info },
11949   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cipheringAlgorithm },
11950   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKeyNumber_Vk_Id_impl },
11951   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKey_impl },
11952   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
11953   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkFree_impl },
11954   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11955   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vstk_impl },
11956   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vstk_rand_impl },
11957   { 0, 0, 0, NULL }
11958 };
11959
11960 static int
11961 dissect_gsm_map_PrepareGroupCallArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11962   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11963                                    PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_PrepareGroupCallArg);
11964
11965   return offset;
11966 }
11967
11968
11969 static const ber_sequence_t PrepareGroupCallRes_sequence[] = {
11970   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupCallNumber },
11971   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11972   { 0, 0, 0, NULL }
11973 };
11974
11975 static int
11976 dissect_gsm_map_PrepareGroupCallRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11977   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11978                                    PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_PrepareGroupCallRes);
11979
11980   return offset;
11981 }
11982
11983
11984 static const ber_sequence_t SendGroupCallEndSignalArg_sequence[] = {
11985   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
11986   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11987   { 0, 0, 0, NULL }
11988 };
11989
11990 static int
11991 dissect_gsm_map_SendGroupCallEndSignalArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11992   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11993                                    SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalArg);
11994
11995   return offset;
11996 }
11997
11998
11999 static const ber_sequence_t SendGroupCallEndSignalRes_sequence[] = {
12000   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12001   { 0, 0, 0, NULL }
12002 };
12003
12004 static int
12005 dissect_gsm_map_SendGroupCallEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12006   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12007                                    SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalRes);
12008
12009   return offset;
12010 }
12011
12012
12013 static const ber_sequence_t ProcessGroupCallSignallingArg_sequence[] = {
12014   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequest_impl },
12015   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
12016   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseGroupCall_impl },
12017   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12018   { 0, 0, 0, NULL }
12019 };
12020
12021 static int
12022 dissect_gsm_map_ProcessGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12023   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12024                                    ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ProcessGroupCallSignallingArg);
12025
12026   return offset;
12027 }
12028
12029
12030 static const ber_sequence_t ForwardGroupCallSignallingArg_sequence[] = {
12031   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
12032   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequestAck_impl },
12033   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
12034   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRejectCommand_impl },
12035   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkSeizedCommand_impl },
12036   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseCommand_impl },
12037   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12038   { 0, 0, 0, NULL }
12039 };
12040
12041 static int
12042 dissect_gsm_map_ForwardGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12043   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12044                                    ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ForwardGroupCallSignallingArg);
12045
12046   return offset;
12047 }
12048
12049
12050 static const ber_sequence_t SGSN_Capability_sequence[] = {
12051   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_solsaSupportIndicator },
12052   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12053   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_superChargerSupportedInServingNetworkEntity_impl },
12054   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsEnhancementsSupportIndicator_impl },
12055   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
12056   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
12057   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
12058   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_smsCallBarringSupportIndicator_impl },
12059   { 0, 0, 0, NULL }
12060 };
12061
12062 static int
12063 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_) {
12064   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12065                                    SGSN_Capability_sequence, hf_index, ett_gsm_map_SGSN_Capability);
12066
12067   return offset;
12068 }
12069 static int dissect_sgsn_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12070   return dissect_gsm_map_SGSN_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Capability);
12071 }
12072
12073
12074 static const ber_sequence_t UpdateGprsLocationArg_sequence[] = {
12075   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
12076   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Number },
12077   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Address },
12078   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12079   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Capability_impl },
12080   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
12081   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ps_LCS_NotSupportedByUE_impl },
12082   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
12083   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
12084   { 0, 0, 0, NULL }
12085 };
12086
12087 static int
12088 dissect_gsm_map_UpdateGprsLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12089   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12090                                    UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_UpdateGprsLocationArg);
12091
12092   return offset;
12093 }
12094
12095
12096 static const ber_sequence_t UpdateGprsLocationRes_sequence[] = {
12097   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
12098   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12099   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_add_Capability },
12100   { 0, 0, 0, NULL }
12101 };
12102
12103 static int
12104 dissect_gsm_map_UpdateGprsLocationRes(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                                    UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_UpdateGprsLocationRes);
12107
12108   return offset;
12109 }
12110
12111
12112 static const ber_sequence_t SendRoutingInfoForGprsArg_sequence[] = {
12113   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12114   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12115   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
12116   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12117   { 0, 0, 0, NULL }
12118 };
12119
12120 static int
12121 dissect_gsm_map_SendRoutingInfoForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12122   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12123                                    SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsArg);
12124
12125   return offset;
12126 }
12127
12128
12129 static const ber_sequence_t SendRoutingInfoForGprsRes_sequence[] = {
12130   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
12131   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12132   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mobileNotReachableReason_impl },
12133   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12134   { 0, 0, 0, NULL }
12135 };
12136
12137 static int
12138 dissect_gsm_map_SendRoutingInfoForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12139   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12140                                    SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsRes);
12141
12142   return offset;
12143 }
12144
12145
12146 static const ber_sequence_t FailureReportArg_sequence[] = {
12147   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12148   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
12149   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12150   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12151   { 0, 0, 0, NULL }
12152 };
12153
12154 static int
12155 dissect_gsm_map_FailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12156   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12157                                    FailureReportArg_sequence, hf_index, ett_gsm_map_FailureReportArg);
12158
12159   return offset;
12160 }
12161
12162
12163 static const ber_sequence_t FailureReportRes_sequence[] = {
12164   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12165   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12166   { 0, 0, 0, NULL }
12167 };
12168
12169 static int
12170 dissect_gsm_map_FailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12171   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12172                                    FailureReportRes_sequence, hf_index, ett_gsm_map_FailureReportRes);
12173
12174   return offset;
12175 }
12176
12177
12178 static const ber_sequence_t NoteMsPresentForGprsArg_sequence[] = {
12179   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12180   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
12181   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12182   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12183   { 0, 0, 0, NULL }
12184 };
12185
12186 static int
12187 dissect_gsm_map_NoteMsPresentForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12188   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12189                                    NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsArg);
12190
12191   return offset;
12192 }
12193
12194
12195 static const ber_sequence_t NoteMsPresentForGprsRes_sequence[] = {
12196   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12197   { 0, 0, 0, NULL }
12198 };
12199
12200 static int
12201 dissect_gsm_map_NoteMsPresentForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12202   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12203                                    NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsRes);
12204
12205   return offset;
12206 }
12207
12208
12209 static const value_string gsm_map_LocationEstimateType_vals[] = {
12210   {   0, "currentLocation" },
12211   {   1, "currentOrLastKnownLocation" },
12212   {   2, "initialLocation" },
12213   {   3, "activateDeferredLocation" },
12214   {   4, "cancelDeferredLocation" },
12215   { 0, NULL }
12216 };
12217
12218
12219 static int
12220 dissect_gsm_map_LocationEstimateType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12221   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12222                                   NULL);
12223
12224   return offset;
12225 }
12226 static int dissect_locationEstimateType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12227   return dissect_gsm_map_LocationEstimateType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
12228 }
12229
12230
12231 static const asn_namedbit DeferredLocationEventType_bits[] = {
12232   {  0, &hf_gsm_map_DeferredLocationEventType_msAvailable, -1, -1, "msAvailable", NULL },
12233   {  1, &hf_gsm_map_DeferredLocationEventType_enteringIntoArea, -1, -1, "enteringIntoArea", NULL },
12234   {  2, &hf_gsm_map_DeferredLocationEventType_leavingFromArea, -1, -1, "leavingFromArea", NULL },
12235   {  3, &hf_gsm_map_DeferredLocationEventType_beingInsideArea, -1, -1, "beingInsideArea", NULL },
12236   { 0, NULL, 0, 0, NULL, NULL }
12237 };
12238
12239 int
12240 dissect_gsm_map_DeferredLocationEventType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12241   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
12242                                     DeferredLocationEventType_bits, hf_index, ett_gsm_map_DeferredLocationEventType,
12243                                     NULL);
12244
12245   return offset;
12246 }
12247 static int dissect_deferredLocationEventType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12248   return dissect_gsm_map_DeferredLocationEventType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
12249 }
12250 static int dissect_deferredLocationEventType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12251   return dissect_gsm_map_DeferredLocationEventType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
12252 }
12253
12254
12255 static const ber_sequence_t LocationType_sequence[] = {
12256   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationEstimateType_impl },
12257   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredLocationEventType_impl },
12258   { 0, 0, 0, NULL }
12259 };
12260
12261 int
12262 dissect_gsm_map_LocationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12263   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12264                                    LocationType_sequence, hf_index, ett_gsm_map_LocationType);
12265
12266   return offset;
12267 }
12268 static int dissect_locationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12269   return dissect_gsm_map_LocationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationType);
12270 }
12271
12272
12273 static const value_string gsm_map_LCSClientType_vals[] = {
12274   {   0, "emergencyServices" },
12275   {   1, "valueAddedServices" },
12276   {   2, "plmnOperatorServices" },
12277   {   3, "lawfulInterceptServices" },
12278   { 0, NULL }
12279 };
12280
12281
12282 static int
12283 dissect_gsm_map_LCSClientType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12284   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12285                                   NULL);
12286
12287   return offset;
12288 }
12289 static int dissect_lcsClientType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12290   return dissect_gsm_map_LCSClientType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientType);
12291 }
12292
12293
12294
12295 static int
12296 dissect_gsm_map_NameString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12297   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
12298
12299   return offset;
12300 }
12301 static int dissect_nameString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12302   return dissect_gsm_map_NameString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nameString);
12303 }
12304
12305
12306 static const value_string gsm_map_LCS_FormatIndicator_vals[] = {
12307   {   0, "logicalName" },
12308   {   1, "e-mailAddress" },
12309   {   2, "msisdn" },
12310   {   3, "url" },
12311   {   4, "sipUrl" },
12312   { 0, NULL }
12313 };
12314
12315
12316 static int
12317 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_) {
12318   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12319                                   NULL);
12320
12321   return offset;
12322 }
12323 static int dissect_lcs_FormatIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12324   return dissect_gsm_map_LCS_FormatIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_FormatIndicator);
12325 }
12326
12327
12328 static const ber_sequence_t LCSClientName_sequence[] = {
12329   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
12330   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
12331   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_FormatIndicator_impl },
12332   { 0, 0, 0, NULL }
12333 };
12334
12335 int
12336 dissect_gsm_map_LCSClientName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12337   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12338                                    LCSClientName_sequence, hf_index, ett_gsm_map_LCSClientName);
12339
12340   return offset;
12341 }
12342 static int dissect_lcsClientName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12343   return dissect_gsm_map_LCSClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientName);
12344 }
12345
12346
12347
12348 static int
12349 dissect_gsm_map_RequestorIDString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12350   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
12351
12352   return offset;
12353 }
12354 static int dissect_requestorIDString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12355   return dissect_gsm_map_RequestorIDString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestorIDString);
12356 }
12357
12358
12359 static const ber_sequence_t LCSRequestorID_sequence[] = {
12360   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
12361   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestorIDString_impl },
12362   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_FormatIndicator_impl },
12363   { 0, 0, 0, NULL }
12364 };
12365
12366 int
12367 dissect_gsm_map_LCSRequestorID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12368   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12369                                    LCSRequestorID_sequence, hf_index, ett_gsm_map_LCSRequestorID);
12370
12371   return offset;
12372 }
12373 static int dissect_lcsRequestorID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12374   return dissect_gsm_map_LCSRequestorID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsRequestorID);
12375 }
12376
12377
12378 static const ber_sequence_t LCS_ClientID_sequence[] = {
12379   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lcsClientType_impl },
12380   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
12381   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientDialedByMS_impl },
12382   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientInternalID_impl },
12383   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
12384   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsAPN_impl },
12385   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsRequestorID_impl },
12386   { 0, 0, 0, NULL }
12387 };
12388
12389 static int
12390 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_) {
12391   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12392                                    LCS_ClientID_sequence, hf_index, ett_gsm_map_LCS_ClientID);
12393
12394   return offset;
12395 }
12396 static int dissect_lcs_ClientID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12397   return dissect_gsm_map_LCS_ClientID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
12398 }
12399 static int dissect_lcs_ClientID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12400   return dissect_gsm_map_LCS_ClientID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
12401 }
12402
12403
12404
12405 static int
12406 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_) {
12407   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12408                                        NULL);
12409
12410   return offset;
12411 }
12412 static int dissect_lcs_Priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12413   return dissect_gsm_map_LCS_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Priority);
12414 }
12415
12416
12417
12418 static int
12419 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_) {
12420   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12421                                        NULL);
12422
12423   return offset;
12424 }
12425 static int dissect_horizontal_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12426   return dissect_gsm_map_Horizontal_Accuracy(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_horizontal_accuracy);
12427 }
12428
12429
12430
12431 static int
12432 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_) {
12433   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12434                                        NULL);
12435
12436   return offset;
12437 }
12438 static int dissect_vertical_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12439   return dissect_gsm_map_Vertical_Accuracy(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vertical_accuracy);
12440 }
12441
12442
12443 static const value_string gsm_map_ResponseTimeCategory_vals[] = {
12444   {   0, "lowdelay" },
12445   {   1, "delaytolerant" },
12446   { 0, NULL }
12447 };
12448
12449
12450 static int
12451 dissect_gsm_map_ResponseTimeCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12452   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12453                                   NULL);
12454
12455   return offset;
12456 }
12457 static int dissect_responseTimeCategory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12458   return dissect_gsm_map_ResponseTimeCategory(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_responseTimeCategory);
12459 }
12460
12461
12462 static const ber_sequence_t ResponseTime_sequence[] = {
12463   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_responseTimeCategory },
12464   { 0, 0, 0, NULL }
12465 };
12466
12467 static int
12468 dissect_gsm_map_ResponseTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12469   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12470                                    ResponseTime_sequence, hf_index, ett_gsm_map_ResponseTime);
12471
12472   return offset;
12473 }
12474 static int dissect_responseTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12475   return dissect_gsm_map_ResponseTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_responseTime);
12476 }
12477
12478
12479 static const ber_sequence_t LCS_QoS_sequence[] = {
12480   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_horizontal_accuracy_impl },
12481   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verticalCoordinateRequest_impl },
12482   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vertical_accuracy_impl },
12483   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_responseTime_impl },
12484   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12485   { 0, 0, 0, NULL }
12486 };
12487
12488 int
12489 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_) {
12490   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12491                                    LCS_QoS_sequence, hf_index, ett_gsm_map_LCS_QoS);
12492
12493   return offset;
12494 }
12495 static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12496   return dissect_gsm_map_LCS_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_QoS);
12497 }
12498
12499
12500 static const asn_namedbit SupportedGADShapes_bits[] = {
12501   {  0, &hf_gsm_map_SupportedGADShapes_ellipsoidPoint, -1, -1, "ellipsoidPoint", NULL },
12502   {  1, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, -1, -1, "ellipsoidPointWithUncertaintyCircle", NULL },
12503   {  2, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse, -1, -1, "ellipsoidPointWithUncertaintyEllipse", NULL },
12504   {  3, &hf_gsm_map_SupportedGADShapes_polygon, -1, -1, "polygon", NULL },
12505   {  4, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude, -1, -1, "ellipsoidPointWithAltitude", NULL },
12506   {  5, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid, -1, -1, "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", NULL },
12507   {  6, &hf_gsm_map_SupportedGADShapes_ellipsoidArc, -1, -1, "ellipsoidArc", NULL },
12508   { 0, NULL, 0, 0, NULL, NULL }
12509 };
12510
12511 int
12512 dissect_gsm_map_SupportedGADShapes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12513   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
12514                                     SupportedGADShapes_bits, hf_index, ett_gsm_map_SupportedGADShapes,
12515                                     NULL);
12516
12517   return offset;
12518 }
12519 static int dissect_supportedGADShapes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12520   return dissect_gsm_map_SupportedGADShapes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedGADShapes);
12521 }
12522
12523
12524
12525 int
12526 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_) {
12527   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12528                                        NULL);
12529
12530   return offset;
12531 }
12532 static int dissect_lcs_ReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12533   return dissect_gsm_map_LCS_ReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ReferenceNumber);
12534 }
12535
12536
12537
12538 static int
12539 dissect_gsm_map_LCSCodewordString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12540   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
12541
12542   return offset;
12543 }
12544 static int dissect_lcsCodewordString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12545   return dissect_gsm_map_LCSCodewordString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsCodewordString);
12546 }
12547
12548
12549 static const ber_sequence_t LCSCodeword_sequence[] = {
12550   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
12551   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lcsCodewordString_impl },
12552   { 0, 0, 0, NULL }
12553 };
12554
12555 int
12556 dissect_gsm_map_LCSCodeword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12557   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12558                                    LCSCodeword_sequence, hf_index, ett_gsm_map_LCSCodeword);
12559
12560   return offset;
12561 }
12562 static int dissect_lcsCodeword_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12563   return dissect_gsm_map_LCSCodeword(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsCodeword);
12564 }
12565
12566
12567 static const value_string gsm_map_PrivacyCheckRelatedAction_vals[] = {
12568   {   0, "allowedWithoutNotification" },
12569   {   1, "allowedWithNotification" },
12570   {   2, "allowedIfNoResponse" },
12571   {   3, "restrictedIfNoResponse" },
12572   {   4, "notAllowed" },
12573   { 0, NULL }
12574 };
12575
12576
12577 static int
12578 dissect_gsm_map_PrivacyCheckRelatedAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12579   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12580                                   NULL);
12581
12582   return offset;
12583 }
12584 static int dissect_callSessionUnrelated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12585   return dissect_gsm_map_PrivacyCheckRelatedAction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callSessionUnrelated);
12586 }
12587 static int dissect_callSessionRelated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12588   return dissect_gsm_map_PrivacyCheckRelatedAction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callSessionRelated);
12589 }
12590
12591
12592 static const ber_sequence_t LCS_PrivacyCheck_sequence[] = {
12593   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_callSessionUnrelated_impl },
12594   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callSessionRelated_impl },
12595   { 0, 0, 0, NULL }
12596 };
12597
12598 static int
12599 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_) {
12600   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12601                                    LCS_PrivacyCheck_sequence, hf_index, ett_gsm_map_LCS_PrivacyCheck);
12602
12603   return offset;
12604 }
12605 static int dissect_lcs_PrivacyCheck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12606   return dissect_gsm_map_LCS_PrivacyCheck(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyCheck);
12607 }
12608
12609
12610 static const value_string gsm_map_AreaType_vals[] = {
12611   {   0, "countryCode" },
12612   {   1, "plmnId" },
12613   {   2, "locationAreaId" },
12614   {   3, "routingAreaId" },
12615   {   4, "cellGlobalId" },
12616   { 0, NULL }
12617 };
12618
12619
12620 static int
12621 dissect_gsm_map_AreaType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12622   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12623                                   NULL);
12624
12625   return offset;
12626 }
12627 static int dissect_areaType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12628   return dissect_gsm_map_AreaType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaType);
12629 }
12630
12631
12632
12633 static int
12634 dissect_gsm_map_AreaIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12635   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12636                                        NULL);
12637
12638   return offset;
12639 }
12640 static int dissect_areaIdentification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12641   return dissect_gsm_map_AreaIdentification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaIdentification);
12642 }
12643
12644
12645 static const ber_sequence_t Area_sequence[] = {
12646   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaType_impl },
12647   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_areaIdentification_impl },
12648   { 0, 0, 0, NULL }
12649 };
12650
12651 static int
12652 dissect_gsm_map_Area(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12653   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12654                                    Area_sequence, hf_index, ett_gsm_map_Area);
12655
12656   return offset;
12657 }
12658 static int dissect_AreaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12659   return dissect_gsm_map_Area(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_AreaList_item);
12660 }
12661
12662
12663 static const ber_sequence_t AreaList_sequence_of[1] = {
12664   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_AreaList_item },
12665 };
12666
12667 static int
12668 dissect_gsm_map_AreaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12669   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
12670                                       AreaList_sequence_of, hf_index, ett_gsm_map_AreaList);
12671
12672   return offset;
12673 }
12674 static int dissect_areaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12675   return dissect_gsm_map_AreaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaList);
12676 }
12677
12678
12679 static const ber_sequence_t AreaDefinition_sequence[] = {
12680   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaList_impl },
12681   { 0, 0, 0, NULL }
12682 };
12683
12684 static int
12685 dissect_gsm_map_AreaDefinition(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12686   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12687                                    AreaDefinition_sequence, hf_index, ett_gsm_map_AreaDefinition);
12688
12689   return offset;
12690 }
12691 static int dissect_areaDefinition_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12692   return dissect_gsm_map_AreaDefinition(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaDefinition);
12693 }
12694
12695
12696 static const value_string gsm_map_OccurrenceInfo_vals[] = {
12697   {   0, "oneTimeEvent" },
12698   {   1, "multipleTimeEvent" },
12699   { 0, NULL }
12700 };
12701
12702
12703 static int
12704 dissect_gsm_map_OccurrenceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12705   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12706                                   NULL);
12707
12708   return offset;
12709 }
12710 static int dissect_occurrenceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12711   return dissect_gsm_map_OccurrenceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_occurrenceInfo);
12712 }
12713
12714
12715
12716 static int
12717 dissect_gsm_map_IntervalTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12718   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12719                                   NULL);
12720
12721   return offset;
12722 }
12723 static int dissect_intervalTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12724   return dissect_gsm_map_IntervalTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_intervalTime);
12725 }
12726
12727
12728 static const ber_sequence_t AreaEventInfo_sequence[] = {
12729   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaDefinition_impl },
12730   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_occurrenceInfo_impl },
12731   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_intervalTime_impl },
12732   { 0, 0, 0, NULL }
12733 };
12734
12735 int
12736 dissect_gsm_map_AreaEventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12737   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12738                                    AreaEventInfo_sequence, hf_index, ett_gsm_map_AreaEventInfo);
12739
12740   return offset;
12741 }
12742 static int dissect_areaEventInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12743   return dissect_gsm_map_AreaEventInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaEventInfo);
12744 }
12745
12746
12747 static const ber_sequence_t ProvideSubscriberLocation_Arg_sequence[] = {
12748   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_locationType },
12749   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_mlc_Number },
12750   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ClientID_impl },
12751   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privacyOverride_impl },
12752   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12753   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
12754   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
12755   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
12756   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_Priority_impl },
12757   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
12758   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12759   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedGADShapes_impl },
12760   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ReferenceNumber_impl },
12761   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
12762   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsCodeword_impl },
12763   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyCheck_impl },
12764   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_areaEventInfo_impl },
12765   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h_gmlc_Address_impl },
12766   { 0, 0, 0, NULL }
12767 };
12768
12769 static int
12770 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_) {
12771   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12772                                    ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Arg);
12773
12774   return offset;
12775 }
12776
12777
12778
12779 int
12780 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_) {
12781   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12782                                        NULL);
12783
12784   return offset;
12785 }
12786 static int dissect_locationEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12787   return dissect_gsm_map_Ext_GeographicalInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
12788 }
12789 static int dissect_locationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12790   return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
12791 }
12792
12793
12794
12795 int
12796 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_) {
12797   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12798                                        NULL);
12799
12800   return offset;
12801 }
12802 static int dissect_add_LocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12803   return dissect_gsm_map_Add_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_LocationEstimate);
12804 }
12805
12806
12807
12808 static int
12809 dissect_gsm_map_PositioningDataInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12810   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12811                                        NULL);
12812
12813   return offset;
12814 }
12815 static int dissect_geranPositioningData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12816   return dissect_gsm_map_PositioningDataInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranPositioningData);
12817 }
12818
12819
12820
12821 static int
12822 dissect_gsm_map_UtranPositioningDataInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12823   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12824                                        NULL);
12825
12826   return offset;
12827 }
12828 static int dissect_utranPositioningData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12829   return dissect_gsm_map_UtranPositioningDataInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranPositioningData);
12830 }
12831
12832
12833 static const ber_sequence_t ProvideSubscriberLocation_Res_sequence[] = {
12834   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_locationEstimate },
12835   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
12836   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12837   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
12838   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredmt_lrResponseIndicator_impl },
12839   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranPositioningData_impl },
12840   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranPositioningData_impl },
12841   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellIdOrSai_impl },
12842   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
12843   { 0, 0, 0, NULL }
12844 };
12845
12846 static int
12847 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_) {
12848   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12849                                    ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Res);
12850
12851   return offset;
12852 }
12853
12854
12855 static const value_string gsm_map_TargetMS_vals[] = {
12856   {   0, "imsi" },
12857   {   1, "msisdn" },
12858   { 0, NULL }
12859 };
12860
12861 static const ber_choice_t TargetMS_choice[] = {
12862   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12863   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
12864   { 0, 0, 0, 0, NULL }
12865 };
12866
12867 static int
12868 dissect_gsm_map_TargetMS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12869   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
12870                                  TargetMS_choice, hf_index, ett_gsm_map_TargetMS,
12871                                  NULL);
12872
12873   return offset;
12874 }
12875
12876
12877 static const ber_sequence_t RoutingInfoForLCS_Arg_sequence[] = {
12878   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mlcNumber_impl },
12879   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_targetMS_impl },
12880   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12881   { 0, 0, 0, NULL }
12882 };
12883
12884 static int
12885 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_) {
12886   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12887                                    RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Arg);
12888
12889   return offset;
12890 }
12891
12892
12893 static const ber_sequence_t LCSLocationInfo_sequence[] = {
12894   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_networkNode_Number },
12895   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
12896   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12897   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
12898   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_additional_Number_impl },
12899   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
12900   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additional_LCS_CapabilitySets_impl },
12901   { 0, 0, 0, NULL }
12902 };
12903
12904 static int
12905 dissect_gsm_map_LCSLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12906   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12907                                    LCSLocationInfo_sequence, hf_index, ett_gsm_map_LCSLocationInfo);
12908
12909   return offset;
12910 }
12911 static int dissect_lcsLocationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12912   return dissect_gsm_map_LCSLocationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
12913 }
12914 static int dissect_lcsLocationInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12915   return dissect_gsm_map_LCSLocationInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
12916 }
12917
12918
12919 static const ber_sequence_t RoutingInfoForLCS_Res_sequence[] = {
12920   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
12921   { BER_CLASS_CON, 1, 0, dissect_lcsLocationInfo },
12922   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
12923   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_v_gmlc_Address },
12924   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_h_gmlc_Address },
12925   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_ppr_Address },
12926   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_additional_v_gmlc_Address },
12927   { 0, 0, 0, NULL }
12928 };
12929
12930 static int
12931 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_) {
12932   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12933                                    RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Res);
12934
12935   return offset;
12936 }
12937
12938
12939 static const value_string gsm_map_LCS_Event_vals[] = {
12940   {   0, "emergencyCallOrigination" },
12941   {   1, "emergencyCallRelease" },
12942   {   2, "mo-lr" },
12943   {   3, "deferredmt-lrResponse" },
12944   { 0, NULL }
12945 };
12946
12947
12948 static int
12949 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_) {
12950   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12951                                   NULL);
12952
12953   return offset;
12954 }
12955 static int dissect_lcs_Event(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12956   return dissect_gsm_map_LCS_Event(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Event);
12957 }
12958
12959
12960 static const value_string gsm_map_TerminationCause_vals[] = {
12961   {   0, "normal" },
12962   {   1, "errorundefined" },
12963   {   2, "internalTimeout" },
12964   {   3, "congestion" },
12965   {   4, "mt-lrRestart" },
12966   {   5, "privacyViolation" },
12967   {   6, "shapeOfLocationEstimateNotSupported" },
12968   { 0, NULL }
12969 };
12970
12971
12972 static int
12973 dissect_gsm_map_TerminationCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12974   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12975                                   NULL);
12976
12977   return offset;
12978 }
12979 static int dissect_terminationCause_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12980   return dissect_gsm_map_TerminationCause(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_terminationCause);
12981 }
12982
12983
12984 static const ber_sequence_t Deferredmt_lrData_sequence[] = {
12985   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_deferredLocationEventType },
12986   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationCause_impl },
12987   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsLocationInfo_impl },
12988   { 0, 0, 0, NULL }
12989 };
12990
12991 static int
12992 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_) {
12993   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12994                                    Deferredmt_lrData_sequence, hf_index, ett_gsm_map_Deferredmt_lrData);
12995
12996   return offset;
12997 }
12998 static int dissect_deferredmt_lrData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12999   return dissect_gsm_map_Deferredmt_lrData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredmt_lrData);
13000 }
13001
13002
13003 static const ber_sequence_t SubscriberLocationReport_Arg_sequence[] = {
13004   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_lcs_Event },
13005   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_ClientID },
13006   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcsLocationInfo },
13007   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
13008   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
13009   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
13010   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
13011   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
13012   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
13013   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
13014   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_slr_ArgExtensionContainer_impl },
13015   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
13016   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredmt_lrData_impl },
13017   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ReferenceNumber_impl },
13018   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranPositioningData_impl },
13019   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranPositioningData_impl },
13020   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellIdOrSai_impl },
13021   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h_gmlc_Address_impl },
13022   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
13023   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
13024   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pseudonymIndicator_impl },
13025   { 0, 0, 0, NULL }
13026 };
13027
13028 static int
13029 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_) {
13030   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13031                                    SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Arg);
13032
13033   return offset;
13034 }
13035
13036
13037 static const ber_sequence_t SubscriberLocationReport_Res_sequence[] = {
13038   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13039   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
13040   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
13041   { 0, 0, 0, NULL }
13042 };
13043
13044 static int
13045 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_) {
13046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13047                                    SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Res);
13048
13049   return offset;
13050 }
13051
13052
13053
13054 static int
13055 dissect_gsm_map_SecurityParametersIndex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13056   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13057                                        NULL);
13058
13059   return offset;
13060 }
13061 static int dissect_securityParametersIndex(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13062   return dissect_gsm_map_SecurityParametersIndex(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_securityParametersIndex);
13063 }
13064
13065
13066
13067 static int
13068 dissect_gsm_map_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13069   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13070                                   NULL);
13071
13072   return offset;
13073 }
13074 static int dissect_localValue2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13075   return dissect_gsm_map_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue2);
13076 }
13077
13078
13079 static const value_string gsm_map_OperationCode_vals[] = {
13080   {   0, "localValue" },
13081   {   1, "globalValue" },
13082   { 0, NULL }
13083 };
13084
13085 static const ber_choice_t OperationCode_choice[] = {
13086   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue2 },
13087   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
13088   { 0, 0, 0, 0, NULL }
13089 };
13090
13091 static int
13092 dissect_gsm_map_OperationCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13093   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13094                                  OperationCode_choice, hf_index, ett_gsm_map_OperationCode,
13095                                  NULL);
13096
13097   return offset;
13098 }
13099 static int dissect_operationCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13100   return dissect_gsm_map_OperationCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_operationCode);
13101 }
13102
13103
13104 static const value_string gsm_map_ErrorCode_vals[] = {
13105   {   0, "localValue" },
13106   {   1, "globalValue" },
13107   { 0, NULL }
13108 };
13109
13110 static const ber_choice_t ErrorCode_choice[] = {
13111   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue2 },
13112   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
13113   { 0, 0, 0, 0, NULL }
13114 };
13115
13116 static int
13117 dissect_gsm_map_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13118   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13119                                  ErrorCode_choice, hf_index, ett_gsm_map_ErrorCode,
13120                                  NULL);
13121
13122   return offset;
13123 }
13124 static int dissect_errorCode1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13125   return dissect_gsm_map_ErrorCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_errorCode1);
13126 }
13127
13128
13129 static const value_string gsm_map_OriginalComponentIdentifier_vals[] = {
13130   {   0, "operationCode" },
13131   {   1, "errorCode" },
13132   {   2, "userInfo" },
13133   { 0, NULL }
13134 };
13135
13136 static const ber_choice_t OriginalComponentIdentifier_choice[] = {
13137   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_operationCode_impl },
13138   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_errorCode1_impl },
13139   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_userInfo_impl },
13140   { 0, 0, 0, 0, NULL }
13141 };
13142
13143 static int
13144 dissect_gsm_map_OriginalComponentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13145   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13146                                  OriginalComponentIdentifier_choice, hf_index, ett_gsm_map_OriginalComponentIdentifier,
13147                                  NULL);
13148
13149   return offset;
13150 }
13151 static int dissect_originalComponentIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13152   return dissect_gsm_map_OriginalComponentIdentifier(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_originalComponentIdentifier);
13153 }
13154
13155
13156
13157 static int
13158 dissect_gsm_map_InitialisationVector(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13159   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13160                                        NULL);
13161
13162   return offset;
13163 }
13164 static int dissect_initialisationVector(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13165   return dissect_gsm_map_InitialisationVector(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_initialisationVector);
13166 }
13167
13168
13169 static const ber_sequence_t SecurityHeader_sequence[] = {
13170   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_securityParametersIndex },
13171   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_originalComponentIdentifier },
13172   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_initialisationVector },
13173   { 0, 0, 0, NULL }
13174 };
13175
13176 int
13177 dissect_gsm_map_SecurityHeader(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13178   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13179                                    SecurityHeader_sequence, hf_index, ett_gsm_map_SecurityHeader);
13180
13181   return offset;
13182 }
13183 static int dissect_securityHeader(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13184   return dissect_gsm_map_SecurityHeader(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_securityHeader);
13185 }
13186
13187
13188
13189 int
13190 dissect_gsm_map_ProtectedPayload(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13191   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13192                                        NULL);
13193
13194   return offset;
13195 }
13196 static int dissect_protectedPayload(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13197   return dissect_gsm_map_ProtectedPayload(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protectedPayload);
13198 }
13199
13200
13201 static const ber_sequence_t SecureTransportArg_sequence[] = {
13202   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
13203   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
13204   { 0, 0, 0, NULL }
13205 };
13206
13207 static int
13208 dissect_gsm_map_SecureTransportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13209   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13210                                    SecureTransportArg_sequence, hf_index, ett_gsm_map_SecureTransportArg);
13211
13212   return offset;
13213 }
13214
13215
13216 static const ber_sequence_t SecureTransportRes_sequence[] = {
13217   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
13218   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
13219   { 0, 0, 0, NULL }
13220 };
13221
13222 static int
13223 dissect_gsm_map_SecureTransportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13224   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13225                                    SecureTransportRes_sequence, hf_index, ett_gsm_map_SecureTransportRes);
13226
13227   return offset;
13228 }
13229
13230
13231 static const value_string gsm_map_NetworkResource_vals[] = {
13232   {   0, "plmn" },
13233   {   1, "hlr" },
13234   {   2, "vlr" },
13235   {   3, "pvlr" },
13236   {   4, "controllingMSC" },
13237   {   5, "vmsc" },
13238   {   6, "eir" },
13239   {   7, "rss" },
13240   { 0, NULL }
13241 };
13242
13243
13244 static int
13245 dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13246   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13247                                   NULL);
13248
13249   return offset;
13250 }
13251 static int dissect_networkResource(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13252   return dissect_gsm_map_NetworkResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkResource);
13253 }
13254
13255
13256 static const ber_sequence_t T_extensibleSystemFailureParam_sequence[] = {
13257   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_networkResource },
13258   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13259   { 0, 0, 0, NULL }
13260 };
13261
13262 static int
13263 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_) {
13264   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13265                                    T_extensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_T_extensibleSystemFailureParam);
13266
13267   return offset;
13268 }
13269 static int dissect_extensibleSystemFailureParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13270   return dissect_gsm_map_T_extensibleSystemFailureParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleSystemFailureParam);
13271 }
13272
13273
13274 static const value_string gsm_map_SystemFailureParam_vals[] = {
13275   {   0, "networkResource" },
13276   {   1, "extensibleSystemFailureParam" },
13277   { 0, NULL }
13278 };
13279
13280 static const ber_choice_t SystemFailureParam_choice[] = {
13281   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_networkResource },
13282   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleSystemFailureParam },
13283   { 0, 0, 0, 0, NULL }
13284 };
13285
13286 static int
13287 dissect_gsm_map_SystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13288   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13289                                  SystemFailureParam_choice, hf_index, ett_gsm_map_SystemFailureParam,
13290                                  NULL);
13291
13292   return offset;
13293 }
13294
13295
13296 static const ber_sequence_t DataMissingParam_sequence[] = {
13297   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13298   { 0, 0, 0, NULL }
13299 };
13300
13301 static int
13302 dissect_gsm_map_DataMissingParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13303   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13304                                    DataMissingParam_sequence, hf_index, ett_gsm_map_DataMissingParam);
13305
13306   return offset;
13307 }
13308
13309
13310 static const ber_sequence_t UnexpectedDataParam_sequence[] = {
13311   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13312   { 0, 0, 0, NULL }
13313 };
13314
13315 static int
13316 dissect_gsm_map_UnexpectedDataParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13317   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13318                                    UnexpectedDataParam_sequence, hf_index, ett_gsm_map_UnexpectedDataParam);
13319
13320   return offset;
13321 }
13322
13323
13324 static const ber_sequence_t FacilityNotSupParam_sequence[] = {
13325   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13326   { 0, 0, 0, NULL }
13327 };
13328
13329 static int
13330 dissect_gsm_map_FacilityNotSupParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13331   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13332                                    FacilityNotSupParam_sequence, hf_index, ett_gsm_map_FacilityNotSupParam);
13333
13334   return offset;
13335 }
13336
13337
13338 static const ber_sequence_t OR_NotAllowedParam_sequence[] = {
13339   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13340   { 0, 0, 0, NULL }
13341 };
13342
13343 static int
13344 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_) {
13345   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13346                                    OR_NotAllowedParam_sequence, hf_index, ett_gsm_map_OR_NotAllowedParam);
13347
13348   return offset;
13349 }
13350
13351
13352 static const ber_sequence_t IncompatibleTerminalParam_sequence[] = {
13353   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13354   { 0, 0, 0, NULL }
13355 };
13356
13357 static int
13358 dissect_gsm_map_IncompatibleTerminalParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13359   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13360                                    IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_IncompatibleTerminalParam);
13361
13362   return offset;
13363 }
13364
13365
13366 static const ber_sequence_t ResourceLimitationParam_sequence[] = {
13367   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13368   { 0, 0, 0, NULL }
13369 };
13370
13371 static int
13372 dissect_gsm_map_ResourceLimitationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13373   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13374                                    ResourceLimitationParam_sequence, hf_index, ett_gsm_map_ResourceLimitationParam);
13375
13376   return offset;
13377 }
13378
13379
13380 static const value_string gsm_map_T_unknownSubscriberDiagnostic_vals[] = {
13381   {   0, "imsiUnknown" },
13382   {   1, "gprsSubscriptionUnknown" },
13383   { 0, NULL }
13384 };
13385
13386
13387 static int
13388 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_) {
13389   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13390                                   NULL);
13391
13392   return offset;
13393 }
13394 static int dissect_unknownSubscriberDiagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13395   return dissect_gsm_map_T_unknownSubscriberDiagnostic(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unknownSubscriberDiagnostic);
13396 }
13397
13398
13399 static const ber_sequence_t UnknownSubscriberParam_sequence[] = {
13400   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13401   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_unknownSubscriberDiagnostic },
13402   { 0, 0, 0, NULL }
13403 };
13404
13405 static int
13406 dissect_gsm_map_UnknownSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13407   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13408                                    UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_UnknownSubscriberParam);
13409
13410   return offset;
13411 }
13412
13413
13414 static const ber_sequence_t NumberChangedParam_sequence[] = {
13415   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13416   { 0, 0, 0, NULL }
13417 };
13418
13419 static int
13420 dissect_gsm_map_NumberChangedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13421   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13422                                    NumberChangedParam_sequence, hf_index, ett_gsm_map_NumberChangedParam);
13423
13424   return offset;
13425 }
13426
13427
13428 static const ber_sequence_t UnidentifiedSubParam_sequence[] = {
13429   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13430   { 0, 0, 0, NULL }
13431 };
13432
13433 static int
13434 dissect_gsm_map_UnidentifiedSubParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13435   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13436                                    UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_UnidentifiedSubParam);
13437
13438   return offset;
13439 }
13440
13441
13442 static const value_string gsm_map_T_roamingNotAllowedCause_vals[] = {
13443   {   0, "plmnRoamingNotAllowed" },
13444   {   3, "operatorDeterminedBarring" },
13445   { 0, NULL }
13446 };
13447
13448
13449 static int
13450 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_) {
13451   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13452                                   NULL);
13453
13454   return offset;
13455 }
13456 static int dissect_roamingNotAllowedCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13457   return dissect_gsm_map_T_roamingNotAllowedCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNotAllowedCause);
13458 }
13459
13460
13461 static const ber_sequence_t RoamingNotAllowedParam_sequence[] = {
13462   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_roamingNotAllowedCause },
13463   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13464   { 0, 0, 0, NULL }
13465 };
13466
13467 static int
13468 dissect_gsm_map_RoamingNotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13469   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13470                                    RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_RoamingNotAllowedParam);
13471
13472   return offset;
13473 }
13474
13475
13476 static const ber_sequence_t IllegalSubscriberParam_sequence[] = {
13477   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13478   { 0, 0, 0, NULL }
13479 };
13480
13481 static int
13482 dissect_gsm_map_IllegalSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13483   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13484                                    IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_IllegalSubscriberParam);
13485
13486   return offset;
13487 }
13488
13489
13490 static const ber_sequence_t IllegalEquipmentParam_sequence[] = {
13491   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13492   { 0, 0, 0, NULL }
13493 };
13494
13495 static int
13496 dissect_gsm_map_IllegalEquipmentParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13497   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13498                                    IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_IllegalEquipmentParam);
13499
13500   return offset;
13501 }
13502
13503
13504 static const ber_sequence_t BearerServNotProvParam_sequence[] = {
13505   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13506   { 0, 0, 0, NULL }
13507 };
13508
13509 static int
13510 dissect_gsm_map_BearerServNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13511   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13512                                    BearerServNotProvParam_sequence, hf_index, ett_gsm_map_BearerServNotProvParam);
13513
13514   return offset;
13515 }
13516
13517
13518 static const ber_sequence_t TeleservNotProvParam_sequence[] = {
13519   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13520   { 0, 0, 0, NULL }
13521 };
13522
13523 static int
13524 dissect_gsm_map_TeleservNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13525   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13526                                    TeleservNotProvParam_sequence, hf_index, ett_gsm_map_TeleservNotProvParam);
13527
13528   return offset;
13529 }
13530
13531
13532 static const ber_sequence_t TracingBufferFullParam_sequence[] = {
13533   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13534   { 0, 0, 0, NULL }
13535 };
13536
13537 static int
13538 dissect_gsm_map_TracingBufferFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13539   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13540                                    TracingBufferFullParam_sequence, hf_index, ett_gsm_map_TracingBufferFullParam);
13541
13542   return offset;
13543 }
13544
13545
13546 static const ber_sequence_t NoRoamingNbParam_sequence[] = {
13547   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13548   { 0, 0, 0, NULL }
13549 };
13550
13551 static int
13552 dissect_gsm_map_NoRoamingNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13553   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13554                                    NoRoamingNbParam_sequence, hf_index, ett_gsm_map_NoRoamingNbParam);
13555
13556   return offset;
13557 }
13558
13559
13560 static const value_string gsm_map_AbsentSubscriberReason_vals[] = {
13561   {   0, "imsiDetach" },
13562   {   1, "restrictedArea" },
13563   {   2, "noPageResponse" },
13564   {   3, "purgedMS" },
13565   { 0, NULL }
13566 };
13567
13568
13569 static int
13570 dissect_gsm_map_AbsentSubscriberReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13571   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13572                                   NULL);
13573
13574   return offset;
13575 }
13576 static int dissect_absentSubscriberReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13577   return dissect_gsm_map_AbsentSubscriberReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberReason);
13578 }
13579
13580
13581 static const ber_sequence_t AbsentSubscriberParam_sequence[] = {
13582   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13583   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_absentSubscriberReason },
13584   { 0, 0, 0, NULL }
13585 };
13586
13587 static int
13588 dissect_gsm_map_AbsentSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13589   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13590                                    AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_AbsentSubscriberParam);
13591
13592   return offset;
13593 }
13594
13595
13596 static const ber_sequence_t BusySubscriberParam_sequence[] = {
13597   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13598   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
13599   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Busy_impl },
13600   { 0, 0, 0, NULL }
13601 };
13602
13603 static int
13604 dissect_gsm_map_BusySubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13605   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13606                                    BusySubscriberParam_sequence, hf_index, ett_gsm_map_BusySubscriberParam);
13607
13608   return offset;
13609 }
13610
13611
13612 static const ber_sequence_t NoSubscriberReplyParam_sequence[] = {
13613   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13614   { 0, 0, 0, NULL }
13615 };
13616
13617 static int
13618 dissect_gsm_map_NoSubscriberReplyParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13619   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13620                                    NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_NoSubscriberReplyParam);
13621
13622   return offset;
13623 }
13624
13625
13626 static const ber_sequence_t ForwardingViolationParam_sequence[] = {
13627   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13628   { 0, 0, 0, NULL }
13629 };
13630
13631 static int
13632 dissect_gsm_map_ForwardingViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13633   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13634                                    ForwardingViolationParam_sequence, hf_index, ett_gsm_map_ForwardingViolationParam);
13635
13636   return offset;
13637 }
13638
13639
13640 static const ber_sequence_t ForwardingFailedParam_sequence[] = {
13641   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13642   { 0, 0, 0, NULL }
13643 };
13644
13645 static int
13646 dissect_gsm_map_ForwardingFailedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13647   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13648                                    ForwardingFailedParam_sequence, hf_index, ett_gsm_map_ForwardingFailedParam);
13649
13650   return offset;
13651 }
13652
13653
13654 static const ber_sequence_t ATI_NotAllowedParam_sequence[] = {
13655   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13656   { 0, 0, 0, NULL }
13657 };
13658
13659 static int
13660 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_) {
13661   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13662                                    ATI_NotAllowedParam_sequence, hf_index, ett_gsm_map_ATI_NotAllowedParam);
13663
13664   return offset;
13665 }
13666
13667
13668 static const ber_sequence_t ATSI_NotAllowedParam_sequence[] = {
13669   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13670   { 0, 0, 0, NULL }
13671 };
13672
13673 static int
13674 dissect_gsm_map_ATSI_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13675   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13676                                    ATSI_NotAllowedParam_sequence, hf_index, ett_gsm_map_ATSI_NotAllowedParam);
13677
13678   return offset;
13679 }
13680
13681
13682 static const ber_sequence_t ATM_NotAllowedParam_sequence[] = {
13683   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13684   { 0, 0, 0, NULL }
13685 };
13686
13687 static int
13688 dissect_gsm_map_ATM_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13689   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13690                                    ATM_NotAllowedParam_sequence, hf_index, ett_gsm_map_ATM_NotAllowedParam);
13691
13692   return offset;
13693 }
13694
13695
13696 static const ber_sequence_t IllegalSS_OperationParam_sequence[] = {
13697   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13698   { 0, 0, 0, NULL }
13699 };
13700
13701 static int
13702 dissect_gsm_map_IllegalSS_OperationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13703   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13704                                    IllegalSS_OperationParam_sequence, hf_index, ett_gsm_map_IllegalSS_OperationParam);
13705
13706   return offset;
13707 }
13708
13709
13710 static const ber_sequence_t SS_NotAvailableParam_sequence[] = {
13711   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13712   { 0, 0, 0, NULL }
13713 };
13714
13715 static int
13716 dissect_gsm_map_SS_NotAvailableParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13717   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13718                                    SS_NotAvailableParam_sequence, hf_index, ett_gsm_map_SS_NotAvailableParam);
13719
13720   return offset;
13721 }
13722
13723
13724 static const ber_sequence_t SS_SubscriptionViolationParam_sequence[] = {
13725   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13726   { 0, 0, 0, NULL }
13727 };
13728
13729 static int
13730 dissect_gsm_map_SS_SubscriptionViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13731   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13732                                    SS_SubscriptionViolationParam_sequence, hf_index, ett_gsm_map_SS_SubscriptionViolationParam);
13733
13734   return offset;
13735 }
13736
13737
13738 static const ber_sequence_t InformationNotAvailableParam_sequence[] = {
13739   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13740   { 0, 0, 0, NULL }
13741 };
13742
13743 static int
13744 dissect_gsm_map_InformationNotAvailableParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13745   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13746                                    InformationNotAvailableParam_sequence, hf_index, ett_gsm_map_InformationNotAvailableParam);
13747
13748   return offset;
13749 }
13750
13751
13752 static const ber_sequence_t SubBusyForMT_SMS_Param_sequence[] = {
13753   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13754   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gprsConnectionSuspended },
13755   { 0, 0, 0, NULL }
13756 };
13757
13758 static int
13759 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_) {
13760   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13761                                    SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_SubBusyForMT_SMS_Param);
13762
13763   return offset;
13764 }
13765
13766
13767 static const value_string gsm_map_CallBarringCause_vals[] = {
13768   {   0, "barringServiceActive" },
13769   {   1, "operatorBarring" },
13770   { 0, NULL }
13771 };
13772
13773
13774 static int
13775 dissect_gsm_map_CallBarringCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13776   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13777                                   NULL);
13778
13779   return offset;
13780 }
13781 static int dissect_callBarringCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13782   return dissect_gsm_map_CallBarringCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringCause);
13783 }
13784
13785
13786 static const ber_sequence_t ExtensibleCallBarredParam_sequence[] = {
13787   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
13788   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13789   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_unauthorisedMessageOriginator },
13790   { 0, 0, 0, NULL }
13791 };
13792
13793 static int
13794 dissect_gsm_map_ExtensibleCallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13795   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13796                                    ExtensibleCallBarredParam_sequence, hf_index, ett_gsm_map_ExtensibleCallBarredParam);
13797
13798   return offset;
13799 }
13800 static int dissect_extensibleCallBarredParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13801   return dissect_gsm_map_ExtensibleCallBarredParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleCallBarredParam);
13802 }
13803
13804
13805 static const value_string gsm_map_CallBarredParam_vals[] = {
13806   {   0, "callBarringCause" },
13807   {   1, "extensibleCallBarredParam" },
13808   { 0, NULL }
13809 };
13810
13811 static const ber_choice_t CallBarredParam_choice[] = {
13812   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
13813   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleCallBarredParam },
13814   { 0, 0, 0, 0, NULL }
13815 };
13816
13817 static int
13818 dissect_gsm_map_CallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13819   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13820                                  CallBarredParam_choice, hf_index, ett_gsm_map_CallBarredParam,
13821                                  NULL);
13822
13823   return offset;
13824 }
13825
13826
13827 static const value_string gsm_map_CUG_RejectCause_vals[] = {
13828   {   0, "incomingCallsBarredWithinCUG" },
13829   {   1, "subscriberNotMemberOfCUG" },
13830   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
13831   {   7, "calledPartySS-InteractionViolation" },
13832   { 0, NULL }
13833 };
13834
13835
13836 static int
13837 dissect_gsm_map_CUG_RejectCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13838   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13839                                   NULL);
13840
13841   return offset;
13842 }
13843 static int dissect_cug_RejectCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13844   return dissect_gsm_map_CUG_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause);
13845 }
13846
13847
13848 static const ber_sequence_t CUG_RejectParam_sequence[] = {
13849   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause },
13850   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13851   { 0, 0, 0, NULL }
13852 };
13853
13854 static int
13855 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_) {
13856   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13857                                    CUG_RejectParam_sequence, hf_index, ett_gsm_map_CUG_RejectParam);
13858
13859   return offset;
13860 }
13861
13862
13863 static const ber_sequence_t Or_NotAllowedParam_sequence[] = {
13864   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13865   { 0, 0, 0, NULL }
13866 };
13867
13868 static int
13869 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_) {
13870   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13871                                    Or_NotAllowedParam_sequence, hf_index, ett_gsm_map_Or_NotAllowedParam);
13872
13873   return offset;
13874 }
13875
13876
13877 static const value_string gsm_map_T_cug_RejectCause_vals[] = {
13878   {   0, "incomingCallsBarredWithinCUG" },
13879   {   1, "subscriberNotMemberOfCUG" },
13880   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
13881   {   7, "calledPartySS-InteractionViolation" },
13882   { 0, NULL }
13883 };
13884
13885
13886 static int
13887 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_) {
13888   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13889                                   NULL);
13890
13891   return offset;
13892 }
13893 static int dissect_cug_RejectCause1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13894   return dissect_gsm_map_T_cug_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause1);
13895 }
13896
13897
13898 static const ber_sequence_t Cug_RejectParam_sequence[] = {
13899   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause1 },
13900   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13901   { 0, 0, 0, NULL }
13902 };
13903
13904 static int
13905 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_) {
13906   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13907                                    Cug_RejectParam_sequence, hf_index, ett_gsm_map_Cug_RejectParam);
13908
13909   return offset;
13910 }
13911
13912
13913 static const ber_sequence_t NoGroupCallNbParam_sequence[] = {
13914   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13915   { 0, 0, 0, NULL }
13916 };
13917
13918 static int
13919 dissect_gsm_map_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13920   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13921                                    NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_NoGroupCallNbParam);
13922
13923   return offset;
13924 }
13925
13926
13927 static const ber_sequence_t SS_IncompatibilityCause_sequence[] = {
13928   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
13929   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
13930   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
13931   { 0, 0, 0, NULL }
13932 };
13933
13934 static int
13935 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_) {
13936   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13937                                    SS_IncompatibilityCause_sequence, hf_index, ett_gsm_map_SS_IncompatibilityCause);
13938
13939   return offset;
13940 }
13941
13942
13943 static const value_string gsm_map_PW_RegistrationFailureCause_vals[] = {
13944   {   0, "undetermined" },
13945   {   1, "invalidFormat" },
13946   {   2, "newPasswordsMismatch" },
13947   { 0, NULL }
13948 };
13949
13950
13951 static int
13952 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_) {
13953   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13954                                   NULL);
13955
13956   return offset;
13957 }
13958
13959
13960 static const ber_sequence_t ShortTermDenialParam_sequence[] = {
13961   { 0, 0, 0, NULL }
13962 };
13963
13964 static int
13965 dissect_gsm_map_ShortTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13966   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13967                                    ShortTermDenialParam_sequence, hf_index, ett_gsm_map_ShortTermDenialParam);
13968
13969   return offset;
13970 }
13971
13972
13973 static const ber_sequence_t LongTermDenialParam_sequence[] = {
13974   { 0, 0, 0, NULL }
13975 };
13976
13977 static int
13978 dissect_gsm_map_LongTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13979   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13980                                    LongTermDenialParam_sequence, hf_index, ett_gsm_map_LongTermDenialParam);
13981
13982   return offset;
13983 }
13984
13985
13986 static const value_string gsm_map_SM_EnumeratedDeliveryFailureCause_vals[] = {
13987   {   0, "memoryCapacityExceeded" },
13988   {   1, "equipmentProtocolError" },
13989   {   2, "equipmentNotSM-Equipped" },
13990   {   3, "unknownServiceCentre" },
13991   {   4, "sc-Congestion" },
13992   {   5, "invalidSME-Address" },
13993   {   6, "subscriberNotSC-Subscriber" },
13994   { 0, NULL }
13995 };
13996
13997
13998 static int
13999 dissect_gsm_map_SM_EnumeratedDeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14000   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14001                                   NULL);
14002
14003   return offset;
14004 }
14005 static int dissect_sm_EnumeratedDeliveryFailureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14006   return dissect_gsm_map_SM_EnumeratedDeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_EnumeratedDeliveryFailureCause);
14007 }
14008
14009
14010 static const ber_sequence_t SM_DeliveryFailureCause_sequence[] = {
14011   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_EnumeratedDeliveryFailureCause },
14012   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnosticInfo },
14013   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14014   { 0, 0, 0, NULL }
14015 };
14016
14017 static int
14018 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_) {
14019   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14020                                    SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_SM_DeliveryFailureCause);
14021
14022   return offset;
14023 }
14024
14025
14026 static const ber_sequence_t MessageWaitListFullParam_sequence[] = {
14027   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14028   { 0, 0, 0, NULL }
14029 };
14030
14031 static int
14032 dissect_gsm_map_MessageWaitListFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14033   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14034                                    MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_MessageWaitListFullParam);
14035
14036   return offset;
14037 }
14038
14039
14040 static const ber_sequence_t AbsentSubscriberSM_Param_sequence[] = {
14041   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_absentSubscriberDiagnosticSM },
14042   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14043   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
14044   { 0, 0, 0, NULL }
14045 };
14046
14047 static int
14048 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_) {
14049   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14050                                    AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_AbsentSubscriberSM_Param);
14051
14052   return offset;
14053 }
14054
14055
14056 static const ber_sequence_t UnauthorizedRequestingNetwork_Param_sequence[] = {
14057   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14058   { 0, 0, 0, NULL }
14059 };
14060
14061 static int
14062 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_) {
14063   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14064                                    UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_UnauthorizedRequestingNetwork_Param);
14065
14066   return offset;
14067 }
14068
14069
14070 static const value_string gsm_map_T_unauthorizedLCSClient_Diagnostic_vals[] = {
14071   {   0, "noAdditionalInformation" },
14072   {   1, "clientNotInMSPrivacyExceptionList" },
14073   {   2, "callToClientNotSetup" },
14074   {   3, "privacyOverrideNotApplicable" },
14075   {   4, "disallowedByLocalRegulatoryRequirements" },
14076   { 0, NULL }
14077 };
14078
14079
14080 static int
14081 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_) {
14082   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14083                                   NULL);
14084
14085   return offset;
14086 }
14087 static int dissect_unauthorizedLCSClient_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14088   return dissect_gsm_map_T_unauthorizedLCSClient_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorizedLCSClient_Diagnostic);
14089 }
14090
14091
14092 static const ber_sequence_t UnauthorizedLCSClient_Param_sequence[] = {
14093   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorizedLCSClient_Diagnostic_impl },
14094   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
14095   { 0, 0, 0, NULL }
14096 };
14097
14098 static int
14099 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_) {
14100   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14101                                    UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_UnauthorizedLCSClient_Param);
14102
14103   return offset;
14104 }
14105
14106
14107 static const value_string gsm_map_PositionMethodFailure_Diagnostic_vals[] = {
14108   {   0, "congestion" },
14109   {   1, "insufficientResources" },
14110   {   2, "insufficientMeasurementData" },
14111   {   3, "inconsistentMeasurementData" },
14112   {   4, "locationProcedureNotCompleted" },
14113   {   5, "locationProcedureNotSupportedByTargetMS" },
14114   {   6, "qoSNotAttainable" },
14115   {   7, "positionMethodNotAvailableInNetwork" },
14116   {   8, "positionMethodNotAvailableInLocationArea" },
14117   { 0, NULL }
14118 };
14119
14120
14121 static int
14122 dissect_gsm_map_PositionMethodFailure_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14123   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14124                                   NULL);
14125
14126   return offset;
14127 }
14128 static int dissect_positionMethodFailure_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14129   return dissect_gsm_map_PositionMethodFailure_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_positionMethodFailure_Diagnostic);
14130 }
14131
14132
14133 static const ber_sequence_t PositionMethodFailure_Param_sequence[] = {
14134   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_positionMethodFailure_Diagnostic_impl },
14135   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
14136   { 0, 0, 0, NULL }
14137 };
14138
14139 static int
14140 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_) {
14141   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14142                                    PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_PositionMethodFailure_Param);
14143
14144   return offset;
14145 }
14146
14147
14148 static const ber_sequence_t UnknownOrUnreachableLCSClient_Param_sequence[] = {
14149   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14150   { 0, 0, 0, NULL }
14151 };
14152
14153 static int
14154 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_) {
14155   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14156                                    UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_UnknownOrUnreachableLCSClient_Param);
14157
14158   return offset;
14159 }
14160
14161
14162 static const ber_sequence_t MM_EventNotSupported_Param_sequence[] = {
14163   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14164   { 0, 0, 0, NULL }
14165 };
14166
14167 static int
14168 dissect_gsm_map_MM_EventNotSupported_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14169   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14170                                    MM_EventNotSupported_Param_sequence, hf_index, ett_gsm_map_MM_EventNotSupported_Param);
14171
14172   return offset;
14173 }
14174
14175
14176 static const ber_sequence_t TargetCellOutsideGCA_Param_sequence[] = {
14177   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14178   { 0, 0, 0, NULL }
14179 };
14180
14181 static int
14182 dissect_gsm_map_TargetCellOutsideGCA_Param(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14183   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14184                                    TargetCellOutsideGCA_Param_sequence, hf_index, ett_gsm_map_TargetCellOutsideGCA_Param);
14185
14186   return offset;
14187 }
14188
14189
14190 static const ber_sequence_t SecureTransportErrorParam_sequence[] = {
14191   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
14192   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
14193   { 0, 0, 0, NULL }
14194 };
14195
14196 static int
14197 dissect_gsm_map_SecureTransportErrorParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14198   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14199                                    SecureTransportErrorParam_sequence, hf_index, ett_gsm_map_SecureTransportErrorParam);
14200
14201   return offset;
14202 }
14203
14204 /*--- PDUs ---*/
14205
14206 static void dissect_Component_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
14207   dissect_gsm_map_Component(FALSE, tvb, 0, pinfo, tree, hf_gsm_map_Component_PDU);
14208 }
14209
14210
14211 /*--- End of included file: packet-gsm_map-fn.c ---*/
14212 #line 172 "packet-gsm_map-template.c"
14213
14214 const value_string gsm_map_opr_code_strings[] = {
14215   {   2, "updateLocation" },
14216   {   3, "cancelLocation" },
14217   {   4, "provideRoamingNumber" },
14218   {       5, "noteSubscriberDataModified" },    
14219   {   6, "resumeCallHandling" },
14220   {   7, "insertSubscriberData" },
14221   {   8, "deleteSubscriberData" },
14222   {   9, "sendParameters" },                                    /* map-ac infoRetrieval (14) version1 (1)*/
14223   {  10, "registerSS" },
14224   {  11, "eraseSS" },
14225   {  12, "activateSS" },
14226   {  13, "deactivateSS" },
14227   {  14, "interrogateSS" },
14228   {      15, "authenticationFailureReport" },   
14229   {  17, "registerPassword" },
14230   {  18, "getPassword" },
14231   {  19, "processUnstructuredSS-Data" },                /* map-ac networkFunctionalSs (18) version1 (1) */
14232   {  20, "releaseResources" },
14233   {  22, "sendRoutingInfo" },
14234   {  23, "updateGprsLocation" },
14235   {  24, "sendRoutingInfoForGprs" },
14236   {  25, "failureReport" },
14237   {  26, "noteMsPresentForGprs" },
14238   {  28, "performHandover" },                                   /* map-ac handoverControl (11) version1 (1)*/
14239   {  29, "sendEndSignal" },
14240   {  30, "performSubsequentHandover" },                 /* map-ac handoverControl (11) version1 (1) */
14241   {  31, "provideSIWFSNumber" },
14242   {  32, "sIWFSSignallingModify" },
14243   {  33, "processAccessSignalling" },
14244   {  34, "forwardAccessSignalling" },
14245   {  35, "noteInternalHandover" },                              /* map-ac handoverControl (11) version1 (1) */
14246   {  37, "reset" },
14247   {  38, "forwardCheckSS-Indication" },
14248   {  39, "prepareGroupCall" },
14249   {  40, "sendGroupCallEndSignal" },
14250   {  41, "processGroupCallSignalling" },
14251   {  42, "forwardGroupCallSignalling" },
14252   {  43, "checkIMEI" },
14253   {  44, "mt-forwardSM" },
14254   {  45, "sendRoutingInfoForSM" },
14255   {  46, "mo-forwardSM" },
14256   {  47, "reportSM-DeliveryStatus" },
14257   {  48, "noteSubscriberPresent" },                             /* map-ac mwdMngt (24) version1 (1) */
14258   {  49, "alertServiceCentreWithoutResult" },   /* map-ac shortMsgAlert (23) version1 (1) */
14259   {  50, "activateTraceMode" },
14260   {  51, "deactivateTraceMode" },
14261   {  52, "traceSubscriberActivity" },                   /* map-ac handoverControl (11) version1 (1) */
14262   {  54, "beginSubscriberActivity" },                   /* map-ac networkFunctionalSs (18) version1 (1) */
14263   {  55, "sendIdentification" },
14264   {  56, "sendAuthenticationInfo" },
14265   {  57, "restoreData" },
14266   {  58, "sendIMSI" },
14267   {  59, "processUnstructuredSS-Request" },
14268   {  60, "unstructuredSS-Request" },
14269   {  61, "unstructuredSS-Notify" },
14270   {  62, "anyTimeSubscriptionInterrogation" },
14271   {  63, "informServiceCentre" },
14272   {  64, "alertServiceCentre" },
14273   {  65, "anyTimeModification" },
14274   {  66, "readyForSM" },
14275   {  67, "purgeMS" },
14276   {  68, "prepareHandover" },
14277   {  69, "prepareSubsequentHandover" },
14278   {  70, "provideSubscriberInfo" },
14279   {  71, "anyTimeInterrogation" },
14280   {  72, "ss-InvocationNotification" },
14281   {  73, "setReportingState" },
14282   {  74, "statusReport" },
14283   {  75, "remoteUserFree" },
14284   {  76, "registerCC-Entry" },
14285   {  77, "eraseCC-Entry" },
14286   {  78, "secureTransportClass1" },
14287   {  79, "secureTransportClass2" },
14288   {  80, "secureTransportClass3" },
14289   {  81, "secureTransportClass4" },
14290   {  83, "provideSubscriberLocation" },
14291   {  85, "sendRoutingInfoForLCS" },
14292   {  86, "subscriberLocationReport" },
14293   {      87, "ist-Alert" },
14294   {      88, "ist-Command" },
14295   {  89, "noteMM-Event" },
14296   { 0, NULL }
14297 };
14298 static const value_string gsm_map_err_code_string_vals[] = {
14299     { 1,        "Unknown Subscriber" },
14300     { 3,        "Unknown MSC" },
14301     { 5,        "Unidentified Subscriber" },
14302     { 6,        "Absent Subscriber SM" },
14303     { 7,        "Unknown Equipment" },
14304     { 8,        "Roaming Not Allowed" },
14305     { 9,        "Illegal Subscriber" },
14306     { 10,       "Bearer Service Not Provisioned" },
14307     { 11,       "Teleservice Not Provisioned" },
14308     { 12,       "Illegal Equipment" },
14309     { 13,       "Call Barred" },
14310     { 14,       "Forwarding Violation" },
14311     { 15,       "CUG Reject" },
14312     { 16,       "Illegal SS Operation" },
14313     { 17,       "SS Error Status" },
14314     { 18,       "SS Not Available" },
14315     { 19,       "SS Subscription Violation" },
14316     { 20,       "SS Incompatibility" },
14317     { 21,       "Facility Not Supported" },
14318     { 25,       "No Handover Number Available" },
14319     { 26,       "Subsequent Handover Failure" },
14320     { 27,       "Absent Subscriber" },
14321     { 28,       "Incompatible Terminal" },
14322     { 29,       "Short Term Denial" },
14323     { 30,       "Long Term Denial" },
14324     { 31,       "Subscriber Busy For MT SMS" },
14325     { 32,       "SM Delivery Failure" },
14326     { 33,       "Message Waiting List Full" },
14327     { 34,       "System Failure" },
14328     { 35,       "Data Missing" },
14329     { 36,       "Unexpected Data Value" },
14330     { 37,       "PW Registration Failure" },
14331     { 38,       "Negative PW Check" },
14332     { 39,       "No Roaming Number Available" },
14333     { 40,       "Tracing Buffer Full" },
14334     { 42,       "Target Cell Outside Group Call Area" },
14335     { 43,       "Number Of PW Attempts Violation" },
14336     { 44,       "Number Changed" },
14337     { 45,       "Busy Subscriber" },
14338     { 46,       "No Subscriber Reply" },
14339     { 47,       "Forwarding Failed" },
14340     { 48,       "OR Not Allowed" },
14341     { 49,       "ATI Not Allowed" },
14342     { 50,       "No Group Call Number Available" },
14343     { 51,       "Resource Limitation" },
14344     { 52,       "Unauthorized Requesting Network" },
14345     { 53,       "Unauthorized LCS Client" },
14346     { 54,       "Position Method Failure" },
14347     { 58,       "Unknown Or Unreachable LCS Client" },
14348     { 59,       "MM Event Not Supported" },
14349     { 60,       "ATSI Not Allowed" },
14350     { 61,       "ATM Not Allowed" },
14351     { 62,       "Information Not Available" },
14352     { 71,       "Unknown Alphabet" },
14353     { 72,       "USSD Busy" },
14354     { 120,      "Nbr Sb Exceeded" },
14355     { 121,      "Rejected By User" },
14356     { 122,      "Rejected By Network" },
14357     { 123,      "Deflection To Served Subscriber" },
14358     { 124,      "Special Service Code" },
14359     { 125,      "Invalid Deflected To Number" },
14360     { 126,      "Max Number Of MPTY Participants Exceeded" },
14361     { 127,      "Resources Not Available" },
14362     { 0, NULL }
14363 };
14364 static const true_false_string gsm_map_extension_value = {
14365   "No Extension",
14366   "Extension"
14367 };
14368 static const value_string gsm_map_nature_of_number_values[] = {
14369         {   0x00,       "unknown" },
14370         {   0x01,       "International Number" },
14371         {   0x02,       "National Significant Number" },
14372         {   0x03,       "Network Specific Number" },
14373         {   0x04,       "Subscriber Number" },
14374         {   0x05,       "Reserved" },
14375         {   0x06,       "Abbreviated Number" },
14376         {   0x07,       "Reserved for extension" },
14377         { 0, NULL }
14378 };
14379 static const value_string gsm_map_number_plan_values[] = {
14380         {   0x00,       "unknown" },
14381         {   0x01,       "ISDN/Telephony Numbering (Rec ITU-T E.164)" },
14382         {   0x02,       "spare" },
14383         {   0x03,       "Data Numbering (ITU-T Rec. X.121)" },
14384         {   0x04,       "Telex Numbering (ITU-T Rec. F.69)" },
14385         {   0x05,       "spare" },
14386         {   0x06,       "Land Mobile Numbering (ITU-T Rec. E.212)" },
14387         {   0x07,       "spare" },
14388         {   0x08,       "National Numbering" },
14389         {   0x09,       "Private Numbering" },
14390         {   0x0f,       "Reserved for extension" },
14391         { 0, NULL }
14392 };
14393
14394 static const true_false_string gsm_map_Ss_Status_q_bit_values = {
14395   "Quiescent",
14396   "Operative"
14397 };
14398 static const true_false_string gsm_map_Ss_Status_p_values = {
14399   "Provisioned",
14400   "Not Provisioned"
14401 };
14402 static const true_false_string gsm_map_Ss_Status_r_values = {
14403   "Registered",
14404   "Not Registered"
14405 };
14406 static const true_false_string gsm_map_Ss_Status_a_values = {
14407   "Active",
14408   "not Active"
14409 };
14410
14411
14412 static int
14413 dissect_gsm_map_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
14414   offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
14415
14416   if (check_col(pinfo->cinfo, COL_INFO)){
14417     col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
14418   }
14419
14420   return offset;
14421 }
14422
14423 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14424
14425   guint8 octet;
14426
14427   switch(opcode){
14428   case  2: /*updateLocation*/   
14429           offset=dissect_gsm_map_UpdateLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
14430     break;
14431   case  3: /*cancelLocation*/
14432         octet = tvb_get_guint8(tvb,0) & 0xf;
14433         if ( octet == 3){ /*   */
14434                 offset = offset +2;
14435                 offset=dissect_gsm_map_CancelLocationArg(TRUE, tvb, offset, pinfo, tree, -1);
14436         }else{
14437     offset=dissect_gsm_map_CancelLocationArgV2(FALSE, tvb, offset, pinfo, tree, -1);
14438         }
14439     break;
14440   case  4: /*provideRoamingNumber*/
14441     offset=dissect_gsm_map_ProvideRoamingNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
14442     break;
14443   case  6: /*resumeCallHandling*/
14444     offset=dissect_gsm_map_ResumeCallHandlingArg(FALSE, tvb, offset, pinfo, tree, -1);
14445     break;
14446   case  7: /*insertSubscriberData*/
14447     offset=dissect_gsm_map_InsertSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14448     break;
14449   case  8: /*deleteSubscriberData*/
14450     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14451     break;
14452         /* TODO find out why this isn't in the ASN1 file
14453   case  9: sendParameters
14454     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14455     break;
14456         */
14457   case  10: /*registerSS*/
14458     offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14459     break;
14460   case  11: /*eraseSS*/
14461     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14462     break;
14463   case 12: /*activateSS*/
14464     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14465     break;
14466   case 13: /*deactivateSS*/
14467     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14468     break;
14469   case 14: /*interrogateSS*/
14470     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14471     break;
14472   case 15: /*authenticationFailureReport*/
14473           offset=dissect_gsm_map_AuthenticationFailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
14474           break;
14475   case 17: /*registerPassword*/
14476     offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
14477     break;
14478   case 18: /*getPassword*/
14479     offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_getPassword);
14480     break;
14481   case 20: /*releaseResources*/
14482     offset=dissect_gsm_map_ReleaseResourcesArg(FALSE, tvb, offset, pinfo, tree, -1);
14483     break;
14484   case 22: /*sendRoutingInfo*/
14485     offset=dissect_gsm_map_SendRoutingInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
14486     break;
14487   case 23: /*updateGprsLocation*/
14488     offset=dissect_gsm_map_UpdateGprsLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
14489     break;
14490   case 24: /*sendRoutingInfoForGprs*/
14491     offset=dissect_gsm_map_SendRoutingInfoForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
14492     break;
14493   case 25: /*failureReport*/
14494     offset=dissect_gsm_map_FailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
14495     break;
14496   case 26: /*noteMsPresentForGprs*/
14497     offset=dissect_gsm_map_NoteMsPresentForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
14498     break;
14499   case 29: /*sendEndSignal*/
14500         octet = tvb_get_guint8(tvb,0) & 0xf;
14501         if ( octet == 3){ /* This is a V3 message ??? */
14502                 offset = offset +2;
14503                 offset=dissect_gsm_map_SendEndSignalArgV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14504         }else{
14505                 offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14506         }
14507     break;
14508   case 31: /*provideSIWFSNumbe*/
14509     offset=dissect_gsm_map_ProvideSIWFSNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
14510     break;
14511   case 32: /*sIWFSSignallingModify*/
14512     offset=dissect_gsm_map_SIWFSSignallingModifyArg(FALSE, tvb, offset, pinfo, tree, -1);
14513     break;
14514   case 33: /*processAccessSignalling*/
14515         octet = tvb_get_guint8(tvb,0) & 0xf;
14516         if ( octet == 3){ /* This is a V3 message ??? */
14517                 offset = offset +2;
14518                 offset = dissect_gsm_map_ProcessAccessSignallingArgV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14519         }else{
14520     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
14521         }
14522     break;
14523   case 34: /*forwardAccessSignalling*/
14524         octet = tvb_get_guint8(tvb,0) & 0xf;
14525         if ( octet == 3){ /* This is a V3 message ??? */
14526                 offset = offset +2;
14527                 offset=dissect_gsm_map_ForwardAccessSignallingArgV3(TRUE, tvb, offset, pinfo, tree, -1);
14528         }else{
14529                  offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
14530         }
14531     break;
14532   case 37: /*reset*/
14533     offset=dissect_gsm_map_ResetArg(FALSE, tvb, offset, pinfo, tree, -1);
14534     break;
14535   case 38: /*forwardCheckSS-Indication*/
14536     return offset;
14537     break;
14538   case 39: /*prepareGroupCall*/
14539     offset=dissect_gsm_map_PrepareGroupCallArg(FALSE, tvb, offset, pinfo, tree, -1);
14540     break;
14541   case 40: /*sendGroupCallEndSignal*/
14542     dissect_gsm_map_SendGroupCallEndSignalArg(FALSE, tvb, offset, pinfo, tree, -1);
14543     break;
14544   case 42: /*processGroupCallSignalling*/
14545     offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1);
14546     break;
14547   case 43: /*checkIMEI*/
14548           if (application_context_version < 2 ){
14549                   offset=dissect_gsm_map_CheckIMEIArgV2(FALSE, tvb, offset, pinfo, tree, -1);
14550           }else{
14551                   offset=dissect_gsm_map_CheckIMEIArgV2(FALSE, tvb, offset, pinfo, tree, -1);
14552           }
14553     break;
14554   case 44: /*mt-forwardSM*/
14555     offset=dissect_gsm_map_Mt_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14556     break;
14557   case 45: /*sendRoutingInfoForSM*/
14558     offset=dissect_gsm_map_RoutingInfoForSMArg(FALSE, tvb, offset, pinfo, tree, -1);
14559     break;
14560   case 46: /*mo-forwardSM*/
14561     offset=dissect_gsm_map_Mo_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14562     break;
14563   case 47: /*reportSM-DeliveryStatus*/
14564     offset=dissect_gsm_map_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, pinfo, tree, -1);
14565     break;
14566   case 50: /*activateTraceMode*/
14567     offset=dissect_gsm_map_ActivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
14568     break;
14569   case 51: /*deactivateTraceMode*/
14570     offset=dissect_gsm_map_DeactivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
14571     break;
14572   case 55: /*sendIdentification*/
14573     offset=dissect_gsm_map_SendIdentificationArg(FALSE, tvb, offset, pinfo, tree, -1);
14574     break;
14575   case 56: /*sendAuthenticationInfo*/
14576           if (application_context_version < 3 ){
14577                   offset=dissect_gsm_map_SendAuthenticationInfoArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
14578           }else{
14579                   offset=dissect_gsm_map_SendAuthenticationInfoArgV2(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoArg);
14580           }
14581         break;
14582   case 57: /*restoreData*/
14583         offset=dissect_gsm_map_RestoreDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14584         break;
14585   case 58: /*sendIMSI*/
14586         offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, -1);
14587         break;
14588   case 59: /*processUnstructuredSS-Request*/
14589     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14590     break;
14591   case 60: /*unstructuredSS-Request*/
14592     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14593     break;
14594   case 61: /*unstructuredSS-Notify*/
14595     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14596     break;
14597   case 62: /*AnyTimeSubscriptionInterrogation*/
14598           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
14599           break;
14600   case 63: /*informServiceCentre*/
14601     offset=dissect_gsm_map_InformServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
14602     break;
14603   case 64: /*alertServiceCentre*/
14604     offset=dissect_gsm_map_AlertServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
14605     break;
14606   case 65: /*AnyTimeModification*/
14607           offset=dissect_gsm_map_AnyTimeModificationArg(FALSE, tvb, offset, pinfo, tree, -1);
14608           break;
14609   case 66: /*readyForSM*/
14610     offset=dissect_gsm_map_ReadyForSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14611     break;
14612   case 67: /*purgeMS*/
14613     offset=dissect_gsm_map_PurgeMSArg(FALSE, tvb, offset, pinfo, tree, -1);
14614     break;
14615   case 68: /*prepareHandover*/
14616         octet = tvb_get_guint8(tvb,0) & 0xf;
14617         if ( octet == 3){ /* This is a V3 message ??? */
14618                 offset = offset +2;
14619                 offset=dissect_gsm_map_PrepareHO_ArgV3(TRUE, tvb, offset, pinfo, tree, -1);
14620         }else{
14621                 offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14622         }
14623     break;
14624   case 69: /*prepareSubsequentHandover*/
14625     offset=dissect_gsm_map_PrepareSubsequentHOArg(FALSE, tvb, offset, pinfo, tree, -1);
14626     break;
14627   case 70: /*provideSubscriberInfo*/
14628     offset=dissect_gsm_map_ProvideSubscriberInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
14629     break;
14630   case 71: /*anyTimeInterrogation*/
14631     offset=dissect_gsm_map_AnyTimeInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
14632     break;
14633   case 72: /*ss-InvocationNotificatio*/
14634     offset=dissect_gsm_map_Ss_InvocationNotificationArg(FALSE, tvb, offset, pinfo, tree, -1);
14635     break;
14636   case 73: /*setReportingState*/
14637     offset=dissect_gsm_map_SetReportingStateArg(FALSE, tvb, offset, pinfo, tree, -1);
14638     break;
14639   case 74: /*statusReport*/
14640     offset=dissect_gsm_map_StatusReportArg(FALSE, tvb, offset, pinfo, tree, -1);
14641     break;
14642   case 75: /*remoteUserFree*/
14643     offset=dissect_gsm_map_RemoteUserFreeArg(FALSE, tvb, offset, pinfo, tree, -1);
14644     break;
14645   case 76: /*registerCC-Entry*/
14646     offset=dissect_gsm_map_RegisterCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
14647     break;
14648   case 77: /*eraseCC-Entry*/
14649     offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
14650     break;
14651   case 78: /*secureTransportClass1*/
14652   case 79: /*secureTransportClass1*/
14653   case 80: /*secureTransportClass1*/
14654   case 81: /*secureTransportClass1*/
14655     offset=dissect_gsm_map_SecureTransportArg(FALSE, tvb, offset, pinfo, tree, -1);
14656     break;
14657   case 83: /*provideSubscriberLocation*/
14658     offset=dissect_gsm_map_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14659     break;
14660   case 85: /*sendRoutingInfoForLCS*/
14661     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14662     break;
14663   case 86: /*subscriberLocationReport*/
14664     offset=dissect_gsm_map_SubscriberLocationReport_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14665     break;
14666   case 87: /*ist-Alert*/
14667     offset=dissect_gsm_map_IST_AlertArg(FALSE, tvb, offset, pinfo, tree, -1);
14668     break;
14669   case 88: /*ist-Command*/
14670     offset=dissect_gsm_map_IST_CommandArg(FALSE, tvb, offset, pinfo, tree, -1);
14671     break;
14672   case 89: /*noteMM-Event*/
14673     offset=dissect_gsm_map_NoteMM_EventArg(FALSE, tvb, offset, pinfo, tree, -1);
14674     break;
14675   default:
14676     proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
14677   }
14678   return offset;
14679 }
14680
14681
14682 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14683         
14684   guint8 octet;
14685   switch(opcode){
14686   case  2: /*updateLocation*/
14687           octet = tvb_get_guint8(tvb,offset);
14688           /* As it seems like SEQUENCE OF sometimes is omitted, find out if it's there */
14689           if ( octet == 0x30 ){ /* Class 0 Univerasl, P/C 1 Constructed,Tag 16 Sequence OF */
14690     offset=dissect_gsm_map_UpdateLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
14691           }else{ /* Try decoding with IMPLICIT flag set */ 
14692                   offset=dissect_gsm_map_UpdateLocationRes(TRUE, tvb, offset, pinfo, tree, -1);
14693           }
14694     break;
14695   case  3: /*cancelLocation*/
14696     offset=dissect_gsm_map_CancelLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
14697     break;
14698   case  4: /*provideRoamingNumber*/
14699     offset=dissect_gsm_map_ProvideRoamingNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
14700     break;
14701   case  6: /*resumeCallHandling*/
14702     offset=dissect_gsm_map_ResumeCallHandlingRes(FALSE, tvb, offset, pinfo, tree, -1);
14703     break;
14704   case  7: /*insertSubscriberData*/
14705     offset=dissect_gsm_map_InsertSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
14706     break;
14707   case  8: /*deleteSubscriberData*/
14708     offset=dissect_gsm_map_DeleteSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
14709     break;
14710         /* TODO find out why this isn't in the ASN1 file
14711   case  9: sendParameters
14712     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14713     break;
14714         */
14715   case  10: /*registerSS*/
14716     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14717     break;
14718   case  11: /*eraseSS*/
14719     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14720     break;
14721   case 12: /*activateSS*/
14722     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14723     break;
14724   case 13: /*deactivateSS*/
14725     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14726     break;
14727   case 14: /*interrogateSS*/
14728     offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
14729     break;
14730   case 15: /*authenticationFailureReport*/
14731           offset=dissect_gsm_map_AuthenticationFailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
14732           break;
14733   case 17: /*registerPassword*/
14734     offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
14735     break;
14736   case 18: /*getPassword*/
14737     offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentPassword);
14738     break;
14739   case 20: /*releaseResources*/
14740     offset=dissect_gsm_map_ReleaseResourcesRes(FALSE, tvb, offset, pinfo, tree, -1);
14741     break;
14742   case 22: /*sendRoutingInfo*/
14743           /* This is done to get around a problem with IMPLICIT tag:s */
14744     offset = offset +2;
14745     offset=dissect_gsm_map_SendRoutingInfoRes(TRUE, tvb, offset, pinfo, tree, -1);
14746     break;
14747   case 23: /*updateGprsLocation*/
14748     offset=dissect_gsm_map_UpdateGprsLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
14749     break;
14750   case 24: /*sendRoutingInfoForGprs*/
14751     offset=dissect_gsm_map_SendRoutingInfoForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
14752     break;
14753   case 25: /*failureReport*/
14754     offset=dissect_gsm_map_FailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
14755     break;
14756   case 26: /*noteMsPresentForGprs*/
14757     offset=dissect_gsm_map_NoteMsPresentForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
14758     break;
14759   case 29: /*sendEndSignal*/
14760           /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain 
14761            * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) }
14762            */
14763     offset=dissect_gsm_map_SendEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
14764     break;
14765   case 31: /*provideSIWFSNumbe*/
14766     offset=dissect_gsm_map_ProvideSIWFSNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
14767     break;
14768   case 32: /*provideSIWFSNumbe*/
14769     offset=dissect_gsm_map_SIWFSSignallingModifyRes(FALSE, tvb, offset, pinfo, tree, -1);
14770     break;
14771   case 39: /*prepareGroupCall*/
14772     offset=dissect_gsm_map_PrepareGroupCallRes(FALSE, tvb, offset, pinfo, tree, -1);
14773     break;
14774   case 40: /*sendGroupCallEndSignal*/
14775     dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
14776     break;
14777   case 43: /*checkIMEI*/
14778     offset=dissect_gsm_map_CheckIMEIRes(FALSE, tvb, offset, pinfo, tree, -1);
14779     break;
14780   case 44: /*mt-forwardSM*/
14781     offset=dissect_gsm_map_Mt_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14782     break;
14783   case 45: /*sendRoutingInfoForSM*/
14784     offset=dissect_gsm_map_RoutingInfoForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14785     break;
14786   case 46: /*mo-forwardSM*/
14787     offset=dissect_gsm_map_Mo_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14788     break;
14789   case 48: /*reportSM-DeliveryStatus*/
14790     offset=dissect_gsm_map_ReportSM_DeliveryStatusRes(FALSE, tvb, offset, pinfo, tree, -1);
14791     break;
14792   case 50: /*activateTraceMode*/
14793     offset=dissect_gsm_map_ActivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
14794     break;
14795   case 51: /*deactivateTraceMode*/
14796     offset=dissect_gsm_map_DeactivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
14797     break;
14798   case 55: /*sendIdentification
14799                         * In newer versions IMSI and authenticationSetList is OPTIONAL and two new parameters added
14800                         * however if the tag (3) is stripped of it should work with the 'new' def.(?) 
14801                         */
14802         octet = tvb_get_guint8(tvb,0) & 0xf;
14803         if ( octet == 3){ /* This is a V3 message ??? */
14804                 offset = offset +2;
14805         }
14806         offset=dissect_gsm_map_SendIdentificationRes(TRUE, tvb, offset, pinfo, tree, -1);
14807     break;
14808   case 56: /*sendAuthenticationInfo*/
14809         octet = tvb_get_guint8(tvb,0) & 0xf;
14810         if ( octet == 3){ /* This is a V3 message ??? */
14811                 offset = offset +2;
14812                 offset=dissect_gsm_map_SendAuthenticationInfoResV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes);
14813         }else{
14814                 offset=dissect_gsm_map_SendAuthenticationInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
14815         }
14816         break;
14817   case 57: /*restoreData*/
14818     offset=dissect_gsm_map_RestoreDataRes(FALSE, tvb, offset, pinfo, tree, -1);
14819     break;
14820   case 58: /*sendIMSI*/
14821     offset=dissect_gsm_map_IMSI(FALSE, tvb, offset, pinfo, tree,hf_gsm_map_imsi);
14822     break;
14823   case 59: /*unstructuredSS-Request*/
14824     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
14825     break;
14826   case 60: /*unstructuredSS-Request*/
14827     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
14828     break;
14829   case 61: /*unstructuredSS-Notify*/
14830     /* TRUE ? */
14831     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
14832     break;
14833   case 62: /*AnyTimeSubscriptionInterrogation*/
14834           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
14835           break;
14836   case 65: /*AnyTimeModification*/
14837           offset=dissect_gsm_map_AnyTimeModificationRes(FALSE, tvb, offset, pinfo, tree, -1);
14838           break;
14839   case 66: /*readyForSM*/
14840     offset=dissect_gsm_map_ReadyForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14841     break;
14842   case 67: /*purgeMS*/
14843     offset=dissect_gsm_map_PurgeMSRes(FALSE, tvb, offset, pinfo, tree, -1);
14844     break;
14845   case 68: /*prepareHandover*/
14846         octet = tvb_get_guint8(tvb,0) & 0xf;
14847         if ( octet == 3){ /* This is a V3 message ??? */
14848                 offset = offset +2;
14849                 offset=dissect_gsm_map_PrepareHO_ResV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14850         }else{
14851                 offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1);
14852         }
14853     break;
14854   case 69: /*prepareSubsequentHandover*/
14855      offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
14856     break;
14857   case 70: /*provideSubscriberInfo*/
14858     offset=dissect_gsm_map_ProvideSubscriberInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
14859     break;
14860   case 71: /*anyTimeInterrogation*/
14861     offset=dissect_gsm_map_AnyTimeInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
14862     break;
14863   case 72: /*ss-InvocationNotificatio*/
14864     offset=dissect_gsm_map_Ss_InvocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
14865     break;
14866   case 73: /*setReportingState*/
14867     offset=dissect_gsm_map_SetReportingStateRes(FALSE, tvb, offset, pinfo, tree, -1);
14868     break;
14869   case 74: /*statusReport*/
14870     offset=dissect_gsm_map_StatusReportRes(FALSE, tvb, offset, pinfo, tree, -1);
14871     break;
14872   case 75: /*remoteUserFree*/
14873     offset=dissect_gsm_map_RemoteUserFreeRes(FALSE, tvb, offset, pinfo, tree, -1);
14874     break;
14875   case 76: /*registerCC-Entry*/
14876     offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
14877     break;
14878   case 77: /*eraseCC-Entry*/
14879     offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
14880     break;
14881   case 78: /*secureTransportClass1*/
14882   case 79: /*secureTransportClass2*/
14883   case 80: /*secureTransportClass3*/
14884   case 81: /*secureTransportClass4*/
14885     offset=dissect_gsm_map_SecureTransportRes(FALSE, tvb, offset, pinfo, tree, -1);
14886     break;
14887   case 83: /*provideSubscriberLocation*/
14888     offset=dissect_gsm_map_ProvideSubscriberLocation_Res(FALSE, tvb, offset, pinfo, tree, -1);
14889     break;
14890   case 85: /*sendRoutingInfoForLCS*/
14891     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14892     break;
14893   case 86: /*subscriberLocationReport*/
14894     offset=dissect_gsm_map_SubscriberLocationReport_Res(FALSE, tvb, offset, pinfo, tree, -1);
14895     break;
14896   case 87: /*ist-Alert*/
14897     offset=dissect_gsm_map_IST_AlertRes(FALSE, tvb, offset, pinfo, tree, -1);
14898     break;
14899   case 88: /*ist-Command*/
14900     offset=dissect_gsm_map_IST_CommandRes(FALSE, tvb, offset, pinfo, tree, -1);
14901     break;
14902   case 89: /*noteMM-Event*/
14903     offset=dissect_gsm_map_NoteMM_EventRes(FALSE, tvb, offset, pinfo, tree, -1);
14904     break;
14905  default:
14906     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
14907   }
14908   return offset;
14909 }
14910
14911
14912
14913 static int dissect_returnErrorData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14914         
14915   switch(errorCode){
14916   case 1: /* UnknownSubscriberParam */
14917           offset=dissect_gsm_map_UnknownSubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
14918           break;
14919   case 4: /* SecureTransportErrorParam */
14920           offset=dissect_gsm_map_SecureTransportErrorParam(FALSE, tvb, offset, pinfo, tree, -1);
14921           break;
14922   case 5: /* UnidentifiedSubParam */
14923           offset=dissect_gsm_map_UnidentifiedSubParam(FALSE, tvb, offset, pinfo, tree, -1);
14924           break;
14925   case 6: /* AbsentSubscriberSM-Param */
14926           offset=dissect_gsm_map_AbsentSubscriberSM_Param(FALSE, tvb, offset, pinfo, tree, -1);
14927           break;
14928   case 8: /* RoamingNotAllowedParam */
14929           offset=dissect_gsm_map_RoamingNotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
14930           break;
14931   case 9: /* IllegalSubscriberParam */
14932           offset=dissect_gsm_map_IllegalSubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
14933           break;
14934   case 10: /* BearerServNotProvParam */
14935           offset=dissect_gsm_map_BearerServNotProvParam(FALSE, tvb, offset, pinfo, tree, -1);
14936           break;
14937   case 11: /* TeleservNotProvParam */
14938           offset=dissect_gsm_map_TeleservNotProvParam(FALSE, tvb, offset, pinfo, tree, -1);
14939           break;
14940   case 12: /* IllegalEquipmentParam */
14941           offset=dissect_gsm_map_IllegalEquipmentParam(FALSE, tvb, offset, pinfo, tree, -1);
14942           break;
14943   case 13: /* CallBarredParam */
14944           offset=dissect_gsm_map_CallBarredParam(FALSE, tvb, offset, pinfo, tree, -1);
14945           break;
14946   case 14: /* ForwardingViolationParam */
14947           offset=dissect_gsm_map_ForwardingViolationParam(FALSE, tvb, offset, pinfo, tree, -1);
14948           break;
14949   case 15: /* CUG-RejectParam */
14950           offset=dissect_gsm_map_CUG_RejectParam(FALSE, tvb, offset, pinfo, tree, -1);
14951           break;
14952   case 16: /* IllegalSS-OperationParam */
14953           offset=dissect_gsm_map_IllegalSS_OperationParam(FALSE, tvb, offset, pinfo, tree, -1);
14954           break;
14955   case 18: /* SS-NotAvailableParam */
14956           offset=dissect_gsm_map_SS_NotAvailableParam(FALSE, tvb, offset, pinfo, tree, -1);
14957           break;
14958   case 19: /* SS-SubscriptionViolationParam */
14959           offset=dissect_gsm_map_SS_SubscriptionViolationParam(FALSE, tvb, offset, pinfo, tree, -1);
14960           break;
14961   case 20: /* SS-IncompatibilityCause */
14962           offset=dissect_gsm_map_SS_IncompatibilityCause(FALSE, tvb, offset, pinfo, tree, -1);
14963           break;
14964   case 21: /* FacilityNotSupParam */
14965           offset=dissect_gsm_map_FacilityNotSupParam(FALSE, tvb, offset, pinfo, tree, -1);
14966           break;
14967   case 27: /* AbsentSubscriberParam */
14968           offset=dissect_gsm_map_AbsentSubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
14969           break;
14970   case 28: /* IncompatibleTerminalParam */
14971           offset=dissect_gsm_map_IncompatibleTerminalParam(FALSE, tvb, offset, pinfo, tree, -1);
14972           break;
14973   case 29: /* ShortTermDenialParam */
14974           offset=dissect_gsm_map_ShortTermDenialParam(FALSE, tvb, offset, pinfo, tree, -1);
14975           break;
14976   case 30: /* LongTermDenialParam */
14977           offset=dissect_gsm_map_LongTermDenialParam(FALSE, tvb, offset, pinfo, tree, -1);
14978           break;
14979   case 31: /* SubBusyForMT-SMS-Param */
14980           offset=dissect_gsm_map_SubBusyForMT_SMS_Param(FALSE, tvb, offset, pinfo, tree, -1);
14981           break;
14982   case 32: /* SM-DeliveryFailureCause */
14983           offset=dissect_gsm_map_SM_DeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, -1);
14984           break;
14985   case 33: /* MessageWaitListFullParam */
14986           offset=dissect_gsm_map_MessageWaitListFullParam(FALSE, tvb, offset, pinfo, tree, -1);
14987           break;
14988   case 34: /* SystemFailureParam */
14989           offset=dissect_gsm_map_SystemFailureParam(FALSE, tvb, offset, pinfo, tree, -1);
14990           break;
14991   case 35: /* DataMissingParam */
14992           offset=dissect_gsm_map_DataMissingParam(FALSE, tvb, offset, pinfo, tree, -1);
14993           break;
14994   case 36: /* UnexpectedDataParam */
14995           offset=dissect_gsm_map_UnexpectedDataParam(FALSE, tvb, offset, pinfo, tree, -1);
14996           break;
14997   case 37: /* PW-RegistrationFailureCause */
14998           offset=dissect_gsm_map_PW_RegistrationFailureCause(FALSE, tvb, offset, pinfo, tree, -1);
14999           break;
15000   case 39: /* NoRoamingNbParam */
15001           offset=dissect_gsm_map_NoRoamingNbParam(FALSE, tvb, offset, pinfo, tree, -1);
15002           break;
15003   case 40: /* TracingBufferFullParam */
15004           offset=dissect_gsm_map_TracingBufferFullParam(FALSE, tvb, offset, pinfo, tree, -1);
15005           break;
15006   case 42: /* TargetCellOutsideGCA-Param */
15007           offset=dissect_gsm_map_TargetCellOutsideGCA_Param(FALSE, tvb, offset, pinfo, tree, -1);
15008           break;
15009   case 44: /* NumberChangedParam */
15010           offset=dissect_gsm_map_NumberChangedParam(FALSE, tvb, offset, pinfo, tree, -1);
15011           break;
15012   case 45: /* BusySubscriberParam */
15013           offset=dissect_gsm_map_BusySubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
15014           break;
15015   case 46: /* NoSubscriberReplyParam */
15016           offset=dissect_gsm_map_NoSubscriberReplyParam(FALSE, tvb, offset, pinfo, tree, -1);
15017           break;
15018   case 47: /* ForwardingFailedParam */
15019           offset=dissect_gsm_map_ForwardingFailedParam(FALSE, tvb, offset, pinfo, tree, -1);
15020           break;
15021   case 48: /* OR-NotAllowedParam */
15022           offset=dissect_gsm_map_OR_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15023           break;
15024   case 49: /* ATI-NotAllowedParam */
15025           offset=dissect_gsm_map_ATI_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15026           break;
15027   case 50: /* NoGroupCallNbParam */
15028           offset=dissect_gsm_map_NoGroupCallNbParam(FALSE, tvb, offset, pinfo, tree, -1);
15029           break;
15030   case 51: /* ResourceLimitationParam */
15031           offset=dissect_gsm_map_ResourceLimitationParam(FALSE, tvb, offset, pinfo, tree, -1);
15032           break;
15033   case 52: /* UnauthorizedRequestingNetwork-Param */
15034           offset=dissect_gsm_map_UnauthorizedRequestingNetwork_Param(FALSE, tvb, offset, pinfo, tree, -1);
15035           break;
15036   case 53: /* UnauthorizedLCSClient-Param */
15037           offset=dissect_gsm_map_UnauthorizedLCSClient_Param(FALSE, tvb, offset, pinfo, tree, -1);
15038           break;
15039   case 54: /* PositionMethodFailure-Param */
15040           offset=dissect_gsm_map_PositionMethodFailure_Param(FALSE, tvb, offset, pinfo, tree, -1);
15041           break;
15042   case 58: /* UnknownOrUnreachableLCSClient-Param */
15043           offset=dissect_gsm_map_UnknownOrUnreachableLCSClient_Param(FALSE, tvb, offset, pinfo, tree, -1);
15044           break;
15045   case 59: /* MM-EventNotSupported-Param */
15046           offset=dissect_gsm_map_MM_EventNotSupported_Param(FALSE, tvb, offset, pinfo, tree, -1);
15047           break;
15048   case 60: /* ATSI-NotAllowedParam */
15049           offset=dissect_gsm_map_ATSI_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15050           break;
15051   case 61: /* ATM-NotAllowedParam */
15052           offset=dissect_gsm_map_ATM_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15053           break;
15054   case 62: /* InformationNotAvailableParam */
15055           offset=dissect_gsm_map_InformationNotAvailableParam(FALSE, tvb, offset, pinfo, tree, -1);
15056           break;
15057   default:
15058           proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob");
15059           break;
15060   }
15061   return offset;
15062 }
15063 static guint8 gsmmap_pdu_type = 0;
15064 static guint8 gsm_map_pdu_size = 0;
15065
15066 static int
15067 dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) {
15068
15069   char *version_ptr;
15070
15071   opcode = 0;
15072   application_context_version = 0;
15073   if (pinfo->private_data != NULL){
15074     version_ptr = strrchr(pinfo->private_data,'.');
15075         if (version_ptr) {
15076                 application_context_version = atoi(version_ptr+1);
15077         }
15078   }
15079
15080   gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
15081   /* Get the length and add 2 */
15082   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
15083
15084   if (check_col(pinfo->cinfo, COL_INFO)){
15085     col_set_str(pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_map_Component_vals, "Unknown GSM-MAP PDU (%u)"));
15086   }
15087   offset = dissect_gsm_map_Component(FALSE, tvb, 0, pinfo, tree, hf_gsm_map_Component_PDU);
15088   return offset;
15089 /*
15090   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
15091                               GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU, NULL);
15092 */
15093
15094   return offset;
15095 }
15096
15097
15098
15099
15100 static void
15101 dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
15102 {
15103     proto_item          *item=NULL;
15104     proto_tree          *tree=NULL;
15105     /* Used for gsm_map TAP */
15106     static              gsm_map_tap_rec_t tap_rec;
15107     gint                op_idx;
15108
15109
15110     if (check_col(pinfo->cinfo, COL_PROTOCOL))
15111     {
15112         col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP");
15113     }
15114
15115     top_tree = parent_tree;
15116
15117     /* create display subtree for the protocol */
15118     if(parent_tree){
15119         item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
15120         tree = proto_item_add_subtree(item, ett_gsm_map);
15121     }
15122
15123     dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, pinfo, tree, -1);
15124     match_strval_idx(opcode, gsm_map_opr_code_strings, &op_idx);
15125
15126     tap_rec.invoke = FALSE;
15127     if ( gsmmap_pdu_type  == 1 )
15128         tap_rec.invoke = TRUE;
15129     tap_rec.opr_code_idx = op_idx;
15130     tap_rec.size = gsm_map_pdu_size;
15131
15132     tap_queue_packet(gsm_map_tap, pinfo, &tap_rec);
15133 }
15134
15135 const value_string ssCode_vals[] = {
15136   { 0x00, "allSS - all SS" },
15137   { 0x10 ,"allLineIdentificationSS - all line identification SS" },
15138   { 0x11 ,"clip - calling line identification presentation" },
15139   { 0x12 ,"clir - calling line identification restriction" },
15140   { 0x13 ,"colp - connected line identification presentation" },
15141   { 0x14 ,"colr - connected line identification restriction" },
15142   { 0x15 ,"mci - malicious call identification" },
15143   { 0x18 ,"allNameIdentificationSS - all name indentification SS" },
15144   { 0x19 ,"cnap - calling name presentation" },
15145   { 0x20 ,"allForwardingSS - all forwarding SS" },
15146   { 0x21 ,"cfu - call forwarding unconditional" },
15147   { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" },
15148   { 0x29 ,"cfb - call forwarding busy" },
15149   { 0x2a ,"cfnry - call forwarding on no reply" },
15150   { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" },
15151   { 0x24 ,"cd - call deflection" },
15152   { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" },
15153   { 0x31 ,"ect - explicit call transfer" },
15154   { 0x32 ,"mah - mobile access hunting" },
15155   { 0x40 ,"allCallCompletionSS - all Call completion SS" },
15156   { 0x41 ,"cw - call waiting" },
15157   { 0x42 ,"hold - call hold" },
15158   { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" },
15159   { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" },
15160   { 0x45 ,"mc - multicall" },
15161   { 0x50 ,"allMultiPartySS - all multiparty SS" },
15162   { 0x51 ,"multiPTY - multiparty" },
15163   { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" },
15164   { 0x61 ,"cug - closed user group" },
15165   { 0x70 ,"allChargingSS - all charging SS" },
15166   { 0x71 ,"aoci - advice of charge information" },
15167   { 0x72 ,"aocc - advice of charge charging" },
15168   { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" },
15169   { 0x81 ,"uus1 - UUS1 user-to-user signalling" },
15170   { 0x82 ,"uus2 - UUS2 user-to-user signalling" },
15171   { 0x83 ,"uus3 - UUS3 user-to-user signalling" },
15172   { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" },
15173   { 0x91 ,"barringOfOutgoingCalls" },
15174   { 0x92 ,"baoc - barring of all outgoing calls" },
15175   { 0x93 ,"boic - barring of outgoing international calls" },
15176   { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" },
15177   { 0x99 ,"barringOfIncomingCalls" },
15178   { 0x9a ,"baic - barring of all incoming calls" },
15179   { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" },
15180   { 0xf0 ,"allPLMN-specificSS" },
15181   { 0xa0 ,"allCallPrioritySS - all call priority SS" },
15182   { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" },
15183   { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" },
15184   { 0xb1 ,"universal - allow location by any LCS client" },
15185   { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" },
15186   { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" },
15187   { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" },
15188   { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" },
15189   { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" },
15190   { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" },
15191   { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" },
15192
15193   { 0xf1 ,"plmn-specificSS-1" },
15194   { 0xf2 ,"plmn-specificSS-2" },
15195   { 0xf3 ,"plmn-specificSS-3" },
15196   { 0xf4 ,"plmn-specificSS-4" },
15197   { 0xf5 ,"plmn-specificSS-5" },
15198   { 0xf6 ,"plmn-specificSS-6" },
15199   { 0xf7 ,"plmn-specificSS-7" },
15200   { 0xf8 ,"plmn-specificSS-8" },
15201   { 0xf9 ,"plmn-specificSS-9" },
15202   { 0xfa ,"plmn-specificSS-a" },
15203   { 0xfb ,"plmn-specificSS-b" },
15204   { 0xfc ,"plmn-specificSS-c" },
15205   { 0xfd ,"plmn-specificSS-d" },
15206   { 0xfe ,"plmn-specificSS-e" },
15207   { 0xff ,"plmn-specificSS-f" },
15208   { 0, NULL }
15209 };
15210
15211 static const value_string Teleservice_vals[] = {
15212 {0x00, "allTeleservices" },
15213 {0x10, "allSpeechTransmissionServices" },
15214 {0x11, "telephony" },
15215 {0x12, "emergencyCalls" },
15216 {0x20, "allShortMessageServices" },
15217 {0x21, "shortMessageMT-PP" },
15218 {0x22, "shortMessageMO-PP" },
15219 {0x60, "allFacsimileTransmissionServices" },
15220 {0x61, "facsimileGroup3AndAlterSpeech" },
15221 {0x62, "automaticFacsimileGroup3" },
15222 {0x63, "facsimileGroup4" },
15223
15224 {0x70, "allDataTeleservices" },
15225 {0x80, "allTeleservices-ExeptSMS" },
15226
15227 {0x90, "allVoiceGroupCallServices" },
15228 {0x91, "voiceGroupCall" },
15229 {0x92, "voiceBroadcastCall" },
15230
15231 {0xd0, "allPLMN-specificTS" },
15232 {0xd1, "plmn-specificTS-1" },
15233 {0xd2, "plmn-specificTS-2" },
15234 {0xd3, "plmn-specificTS-3" },
15235 {0xd4, "plmn-specificTS-4" },
15236 {0xd5, "plmn-specificTS-5" },
15237 {0xd6, "plmn-specificTS-6" },
15238 {0xd7, "plmn-specificTS-7" },
15239 {0xd8, "plmn-specificTS-8" },
15240 {0xd9, "plmn-specificTS-9" },
15241 {0xda, "plmn-specificTS-A" },
15242 {0xdb, "plmn-specificTS-B" },
15243 {0xdc, "plmn-specificTS-C" },
15244 {0xdd, "plmn-specificTS-D" },
15245 {0xde, "plmn-specificTS-E" },
15246 {0xdf, "plmn-specificTS-F" },
15247   { 0, NULL }
15248 };
15249
15250 static const value_string Bearerservice_vals[] = {
15251 {0x00, "allBearerServices" },
15252 {0x10, "allDataCDA-Services" },
15253 {0x11, "dataCDA-300bps" },
15254 {0x12, "dataCDA-1200bps" },
15255 {0x13, "dataCDA-1200-75bps" },
15256 {0x14, "dataCDA-2400bps" },
15257 {0x15, "dataCDA-4800bps" },
15258 {0x16, "dataCDA-9600bps" },
15259 {0x17, "general-dataCDA" },
15260
15261 {0x18, "allDataCDS-Services" },
15262 {0x1A, "dataCDS-1200bps" },
15263 {0x1C, "dataCDS-2400bps" },
15264 {0x1D, "dataCDS-4800bps" },
15265 {0x1E, "dataCDS-9600bps" },
15266 {0x1F, "general-dataCDS" },
15267
15268 {0x20, "allPadAccessCA-Services" },
15269 {0x21, "padAccessCA-300bps" },
15270 {0x22, "padAccessCA-1200bps" },
15271 {0x23, "padAccessCA-1200-75bps" },
15272 {0x24, "padAccessCA-2400bps" },
15273 {0x25, "padAccessCA-4800bps" },
15274 {0x26, "padAccessCA-9600bps" },
15275 {0x27, "general-padAccessCA" },
15276
15277 {0x28, "allDataPDS-Services" },
15278 {0x2C, "dataPDS-2400bps" },
15279 {0x2D, "dataPDS-4800bps" },
15280 {0x2E, "dataPDS-9600bps" },
15281 {0x2F, "general-dataPDS" },
15282
15283 {0x30, "allAlternateSpeech-DataCDA" },
15284 {0x38, "allAlternateSpeech-DataCDS" },
15285 {0x40, "allSpeechFollowedByDataCDA" },
15286 {0x48, "allSpeechFollowedByDataCDS" },
15287
15288 {0x50, "allDataCircuitAsynchronous" },
15289 {0x60, "allAsynchronousServices" },
15290 {0x58, "allDataCircuitSynchronous" },
15291 {0x68, "allSynchronousServices" },
15292
15293 {0xD0, "allPLMN-specificBS" },
15294 {0xD1, "plmn-specificBS-1" },
15295 {0xD2, "plmn-specificBS-2" },
15296 {0xD3, "plmn-specificBS-3" },
15297 {0xD4, "plmn-specificBS-4" },
15298 {0xD5, "plmn-specificBS-5" },
15299 {0xD6, "plmn-specificBS-6" },
15300 {0xD7, "plmn-specificBS-7" },
15301 {0xD8, "plmn-specificBS-8" },
15302 {0xD9, "plmn-specificBS-9" },
15303 {0xDA, "plmn-specificBS-A" },
15304 {0xDB, "plmn-specificBS-B" },
15305 {0xDC, "plmn-specificBS-C" },
15306 {0xDD, "plmn-specificBS-D" },
15307 {0xDE, "plmn-specificBS-E" },
15308 {0xDF, "plmn-specificBS-F" },
15309
15310 { 0, NULL }
15311 };
15312
15313 /* ForwardingOptions 
15314
15315 -- bit 8: notification to forwarding party
15316 -- 0 no notification
15317 -- 1 notification
15318 */
15319 static const true_false_string notification_value  = {
15320   "Notification",
15321   "No notification"
15322 };
15323 /*
15324 -- bit 7: redirecting presentation
15325 -- 0 no presentation
15326 -- 1 presentation
15327 */
15328 static const true_false_string redirecting_presentation_value  = {
15329   "Presentation",
15330   "No presentationn"
15331 };
15332 /*
15333 -- bit 6: notification to calling party
15334 -- 0 no notification
15335 -- 1 notification
15336 */
15337 /*
15338 -- bit 5: 0 (unused)
15339 -- bits 43: forwarding reason
15340 -- 00 ms not reachable
15341 -- 01 ms busy
15342 -- 10 no reply
15343 -- 11 unconditional when used in a SRI Result,
15344 -- or call deflection when used in a RCH Argument
15345 */
15346 static const value_string forwarding_reason_values[] = {
15347 {0x0, "ms not reachable" },
15348 {0x1, "ms busy" },
15349 {0x2, "no reply" },
15350 {0x3, "unconditional when used in a SRI Result or call deflection when used in a RCH Argument" },
15351 { 0, NULL }
15352 };
15353 /*
15354 -- bits 21: 00 (unused)
15355 */
15356
15357 static const value_string pdp_type_org_values[] = {
15358 {0x0, "ETSI" },
15359 {0x1, "IETF" },
15360 {0xf, "Empty PDP type" },
15361 { 0, NULL }
15362 };
15363
15364 static const value_string etsi_pdp_type_number_values[] = {
15365 {0x0, "Reserved, used in earlier version of this protocol" },
15366 {0x1, "PPP" },
15367 { 0, NULL }
15368 };
15369
15370 static const value_string ietf_pdp_type_number_values[] = {
15371 {0x21, "IPv4 Address" },
15372 {0x57, "IPv6 Address" },
15373 { 0, NULL }
15374 };
15375
15376 /*
15377 ChargingCharacteristics ::= OCTET STRING (SIZE (2))
15378 -- Octets are coded according to 3GPP TS 32.015.
15379 -- From 3GPP TS 32.015.
15380 --
15381 -- Descriptions for the bits of the flag set:
15382 --
15383 -- Bit 1: H (Hot billing) := '00000001'B
15384 -- Bit 2: F (Flat rate) := '00000010'B
15385 -- Bit 3: P (Prepaid service) := '00000100'B
15386 -- Bit 4: N (Normal billing) := '00001000'B
15387 -- Bit 5: - (Reserved, set to 0) := '00010000'B
15388 -- Bit 6: - (Reserved, set to 0) := '00100000'B
15389 -- Bit 7: - (Reserved, set to 0) := '01000000'B
15390 -- Bit 8: - (Reserved, set to 0) := '10000000'B
15391 */
15392 static const value_string chargingcharacteristics_values[] = {
15393 {0x1, "H (Hot billing)" },
15394 {0x2, "F (Flat rate)" },
15395 {0x4, "P (Prepaid service)" },
15396 {0x8, "N (Normal billing)" },
15397 { 0, NULL }
15398 };
15399 /*--- proto_reg_handoff_gsm_map ---------------------------------------*/
15400 static void range_delete_callback(guint32 ssn)
15401 {
15402     if (ssn) {
15403         delete_itu_tcap_subdissector(ssn, map_handle);
15404     }
15405 }
15406
15407 static void range_add_callback(guint32 ssn)
15408 {
15409     if (ssn) {
15410         add_itu_tcap_subdissector(ssn, map_handle);
15411     }
15412 }
15413
15414 void proto_reg_handoff_gsm_map(void) {
15415
15416     static int map_prefs_initialized = FALSE;
15417     data_handle = find_dissector("data");
15418
15419     if (!map_prefs_initialized) {
15420         map_prefs_initialized = TRUE;
15421         map_handle = create_dissector_handle(dissect_gsm_map, proto_gsm_map);
15422   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)");  
15423   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)" );
15424   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)" );
15425   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)" );
15426   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)" );
15427   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)" );
15428   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)" );
15429   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)" );
15430   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)" );
15431   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)" );
15432   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)" );
15433   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)" );
15434   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)" );
15435   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)" );
15436   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)" );
15437   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)" );
15438   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)" );
15439   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)" );
15440   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)" );
15441   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)" );
15442   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)" );
15443   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)" );
15444   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)" );
15445   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)" );
15446   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)" );
15447   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) version1(1)" );
15448   register_ber_oid_dissector_handle("0.4.0.0.1.0.15.2", 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)" );
15449   register_ber_oid_dissector_handle("0.4.0.0.1.0.15.3", map_handle, proto_gsm_map,"itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version3(3)" );
15450   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)" );
15451   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)" );
15452   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)" );
15453   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)" );
15454   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)" );
15455   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)" );
15456   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)" );
15457   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)" );
15458   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)" );
15459   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)" );
15460   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)" );
15461   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)" );
15462   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)" );
15463   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)" );
15464   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)" );
15465   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)" );
15466   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)" );
15467   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)" );
15468   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)" );
15469   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)" );
15470   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)" );
15471   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)" );
15472   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)" );
15473   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)" );
15474   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)" );
15475   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)" );
15476   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)" );
15477   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)" );
15478   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)" );
15479   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)" );
15480   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)" );
15481   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)" );
15482   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)" );
15483   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)" );
15484     }
15485     else {
15486         range_foreach(ssn_range, range_delete_callback);
15487     }
15488
15489     g_free(ssn_range);
15490     ssn_range = range_copy(global_ssn_range);
15491
15492     range_foreach(ssn_range, range_add_callback);
15493
15494 }
15495
15496 /*--- proto_register_gsm_map -------------------------------------------*/
15497 void proto_register_gsm_map(void) {
15498         module_t *gsm_map_module;
15499
15500   /* List of fields */
15501   static hf_register_info hf[] = {
15502           /*
15503     { &hf_gsm_map_invokeCmd,
15504       { "invokeCmd", "gsm_map.invokeCmd",
15505         FT_UINT32, BASE_DEC, VALS(gsm_map_opr_code_strings), 0,
15506         "InvokePDU/invokeCmd", HFILL }},
15507     { &hf_gsm_map_invokeid,
15508       { "invokeid", "gsm_map.invokeid",
15509         FT_INT32, BASE_DEC, NULL, 0,
15510         "InvokeId/invokeid", HFILL }},
15511     { &hf_gsm_map_absent,
15512       { "absent", "gsm_map.absent",
15513         FT_NONE, BASE_NONE, NULL, 0,
15514         "InvokeId/absent", HFILL }},
15515     { &hf_gsm_map_invokeId,
15516       { "invokeId", "gsm_map.invokeId",
15517         FT_UINT32, BASE_DEC, VALS(InvokeId_vals), 0,
15518         "InvokePDU/invokeId", HFILL }},
15519     { &hf_gsm_map_invoke,
15520       { "invoke", "gsm_map.invoke",
15521         FT_NONE, BASE_NONE, NULL, 0,
15522         "GSMMAPPDU/invoke", HFILL }},
15523     { &hf_gsm_map_returnResult,
15524       { "returnResult", "gsm_map.returnResult",
15525         FT_NONE, BASE_NONE, NULL, 0,
15526         "GSMMAPPDU/returnResult", HFILL }},
15527         {&hf_gsm_map_returnResult_result,
15528       { "returnResult_result", "gsm_map.returnresultresult",
15529         FT_BYTES, BASE_NONE, NULL, 0,
15530         "returnResult_result", HFILL }},
15531         {&hf_gsm_map_returnError_result,
15532       { "returnError_result", "gsm_map.returnerrorresult",
15533         FT_UINT32, BASE_DEC, NULL, 0,
15534         "returnError_result", HFILL }},
15535         {&hf_gsm_map_returnError,
15536       { "returnError", "gsm_map.returnError",
15537         FT_NONE, BASE_NONE, NULL, 0,
15538         "GSMMAPPDU/returnError", HFILL }},
15539         {&hf_gsm_map_local_errorCode,
15540       { "Local Error Code", "gsm_map.localerrorCode",
15541         FT_UINT32, BASE_DEC, VALS(gsm_map_err_code_string_vals), 0,
15542         "localerrorCode", HFILL }},
15543         {&hf_gsm_map_global_errorCode_oid,
15544       { "Global Error Code OID", "gsm_map.hlobalerrorCodeoid",
15545         FT_STRING, BASE_NONE, NULL, 0,
15546         "globalerrorCodeoid", HFILL }},
15547         {&hf_gsm_map_global_errorCode,
15548       { "Global Error Code", "gsm_map.globalerrorCode",
15549         FT_UINT32, BASE_DEC, NULL, 0,
15550         "globalerrorCode", HFILL }},
15551     { &hf_gsm_map_getPassword,
15552       { "Password", "gsm_map.password",
15553         FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0,
15554         "Password", HFILL }},
15555
15556                 */
15557         { &hf_gsm_map_SendAuthenticationInfoArg,
15558       { "SendAuthenticationInfoArg", "gsm_map.SendAuthenticationInfoArg",
15559         FT_BYTES, BASE_NONE, NULL, 0,
15560         "SendAuthenticationInfoArg", HFILL }},
15561         { &hf_gsm_map_SendAuthenticationInfoRes,
15562       { "SendAuthenticationInfoRes", "gsm_map.SendAuthenticationInfoRes",
15563         FT_BYTES, BASE_NONE, NULL, 0,
15564         "SendAuthenticationInfoRes", HFILL }},
15565     { &hf_gsm_map_currentPassword,
15566       { "currentPassword", "gsm_map.currentPassword",
15567         FT_STRING, BASE_NONE, NULL, 0,
15568         "", HFILL }},
15569         { &hf_gsm_mapSendEndSignal,
15570       { "mapSendEndSignalArg", "gsm_map.mapsendendsignalarg",
15571         FT_BYTES, BASE_NONE, NULL, 0,
15572         "mapSendEndSignalArg", HFILL }},
15573     { &hf_gsm_map_extension,
15574       { "Extension", "gsm_map.extension",
15575         FT_BOOLEAN, 8, TFS(&gsm_map_extension_value), 0x80,
15576         "Extension", HFILL }},
15577     { &hf_gsm_map_nature_of_number,
15578       { "Nature of number", "gsm_map.nature_of_number",
15579         FT_UINT8, BASE_HEX, VALS(gsm_map_nature_of_number_values), 0x70,
15580         "Nature of number", HFILL }},
15581     { &hf_gsm_map_number_plan,
15582       { "Number plan", "gsm_map.number_plan",
15583         FT_UINT8, BASE_HEX, VALS(gsm_map_number_plan_values), 0x0f,
15584         "Number plan", HFILL }},
15585         { &hf_gsm_map_isdn_address_digits,
15586       { "ISDN Address digits", "gsm_map.isdn.adress.digits",
15587         FT_STRING, BASE_NONE, NULL, 0,
15588         "ISDN Address digits", HFILL }},
15589         { &hf_gsm_map_address_digits,
15590       { "Address digits", "gsm_map.adress.digits",
15591         FT_STRING, BASE_NONE, NULL, 0,
15592         "Address digits", HFILL }},
15593         { &hf_gsm_map_servicecentreaddress_digits,
15594       { "ServiceCentreAddress digits", "gsm_map.servicecentreaddress_digits",
15595         FT_STRING, BASE_NONE, NULL, 0,
15596         "ServiceCentreAddress digits", HFILL }},
15597         { &hf_gsm_map_imsi_digits,
15598       { "Imsi digits", "gsm_map.imsi_digits",
15599         FT_STRING, BASE_NONE, NULL, 0,
15600         "Imsi digits", HFILL }},
15601         { &hf_gsm_map_Ss_Status_unused,
15602       { "Unused", "gsm_map.unused",
15603         FT_UINT8, BASE_HEX, NULL, 0xf0,
15604         "Unused", HFILL }},
15605         { &hf_gsm_map_Ss_Status_q_bit,
15606       { "Q bit", "gsm_map.ss_status_q_bit",
15607         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08,
15608         "Q bit", HFILL }},
15609         { &hf_gsm_map_Ss_Status_p_bit,
15610       { "P bit", "gsm_map.ss_status_p_bit",
15611         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04,
15612         "P bit", HFILL }},
15613         { &hf_gsm_map_Ss_Status_r_bit,
15614       { "R bit", "gsm_map.ss_status_r_bit",
15615         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02,
15616         "R bit", HFILL }},
15617         { &hf_gsm_map_Ss_Status_a_bit,
15618       { "A bit", "gsm_map.ss_status_a_bit",
15619         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
15620         "A bit", HFILL }},
15621         { &hf_gsm_map_notification_to_forwarding_party,
15622       { "Notification to forwarding party", "gsm_map.notification_to_forwarding_party",
15623         FT_BOOLEAN, 8, TFS(&notification_value), 0x80,
15624         "Notification to forwarding party", HFILL }},
15625         { &hf_gsm_map_redirecting_presentation,
15626       { "Redirecting presentation", "gsm_map.redirecting_presentation",
15627         FT_BOOLEAN, 8, TFS(&redirecting_presentation_value), 0x40,
15628         "Redirecting presentation", HFILL }},
15629         { &hf_gsm_map_notification_to_calling_party,
15630       { "Notification to calling party", "gsm_map.notification_to_clling_party",
15631         FT_BOOLEAN, 8, TFS(&notification_value), 0x20,
15632         "Notification to calling party", HFILL }},
15633     { &hf_gsm_map_forwarding_reason,
15634       { "Forwarding reason", "gsm_map.forwarding_reason",
15635         FT_UINT8, BASE_HEX, VALS(forwarding_reason_values), 0x0c,
15636         "forwarding reason", HFILL }},
15637     { &hf_gsm_map_pdp_type_org,
15638       { "PDP Type Organization", "gsm_map.pdp_type_org",
15639         FT_UINT8, BASE_HEX, VALS(pdp_type_org_values), 0x0f,
15640         "PDP Type Organization", HFILL }},
15641     { &hf_gsm_map_etsi_pdp_type_number,
15642       { "PDP Type Number", "gsm_map.pdp_type_org",
15643         FT_UINT8, BASE_HEX, VALS(etsi_pdp_type_number_values), 0,
15644         "ETSI PDP Type Number", HFILL }},
15645     { &hf_gsm_map_ietf_pdp_type_number,
15646       { "PDP Type Number", "gsm_map.ietf_pdp_type_number",
15647         FT_UINT8, BASE_HEX, VALS(ietf_pdp_type_number_values), 0,
15648         "IETF PDP Type Number", HFILL }},
15649         
15650
15651
15652 /*--- Included file: packet-gsm_map-hfarr.c ---*/
15653 #line 1 "packet-gsm_map-hfarr.c"
15654     { &hf_gsm_map_Component_PDU,
15655       { "Component", "gsm_map.Component",
15656         FT_UINT32, BASE_DEC, VALS(gsm_map_Component_vals), 0,
15657         "Component", HFILL }},
15658     { &hf_gsm_map_invoke,
15659       { "invoke", "gsm_map.invoke",
15660         FT_NONE, BASE_NONE, NULL, 0,
15661         "Component/invoke", HFILL }},
15662     { &hf_gsm_map_returnResultLast,
15663       { "returnResultLast", "gsm_map.returnResultLast",
15664         FT_NONE, BASE_NONE, NULL, 0,
15665         "Component/returnResultLast", HFILL }},
15666     { &hf_gsm_map_returnError,
15667       { "returnError", "gsm_map.returnError",
15668         FT_NONE, BASE_NONE, NULL, 0,
15669         "Component/returnError", HFILL }},
15670     { &hf_gsm_map_reject,
15671       { "reject", "gsm_map.reject",
15672         FT_NONE, BASE_NONE, NULL, 0,
15673         "Component/reject", HFILL }},
15674     { &hf_gsm_map_invokeID,
15675       { "invokeID", "gsm_map.invokeID",
15676         FT_INT32, BASE_DEC, NULL, 0,
15677         "", HFILL }},
15678     { &hf_gsm_map_linkedID,
15679       { "linkedID", "gsm_map.linkedID",
15680         FT_INT32, BASE_DEC, NULL, 0,
15681         "Invoke/linkedID", HFILL }},
15682     { &hf_gsm_map_opCode,
15683       { "opCode", "gsm_map.opCode",
15684         FT_UINT32, BASE_DEC, VALS(gsm_map_OPERATION_vals), 0,
15685         "", HFILL }},
15686     { &hf_gsm_map_invokeparameter,
15687       { "invokeparameter", "gsm_map.invokeparameter",
15688         FT_NONE, BASE_NONE, NULL, 0,
15689         "Invoke/invokeparameter", HFILL }},
15690     { &hf_gsm_map_resultretres,
15691       { "resultretres", "gsm_map.resultretres",
15692         FT_NONE, BASE_NONE, NULL, 0,
15693         "ReturnResult/resultretres", HFILL }},
15694     { &hf_gsm_map_returnparameter,
15695       { "returnparameter", "gsm_map.returnparameter",
15696         FT_NONE, BASE_NONE, NULL, 0,
15697         "ReturnResult/resultretres/returnparameter", HFILL }},
15698     { &hf_gsm_map_errorCode,
15699       { "errorCode", "gsm_map.errorCode",
15700         FT_UINT32, BASE_DEC, VALS(gsm_map_ERROR_vals), 0,
15701         "ReturnError/errorCode", HFILL }},
15702     { &hf_gsm_map_parameter,
15703       { "parameter", "gsm_map.parameter",
15704         FT_NONE, BASE_NONE, NULL, 0,
15705         "ReturnError/parameter", HFILL }},
15706     { &hf_gsm_map_invokeIDRej,
15707       { "invokeIDRej", "gsm_map.invokeIDRej",
15708         FT_UINT32, BASE_DEC, VALS(gsm_map_T_invokeIDRej_vals), 0,
15709         "Reject/invokeIDRej", HFILL }},
15710     { &hf_gsm_map_derivable,
15711       { "derivable", "gsm_map.derivable",
15712         FT_INT32, BASE_DEC, NULL, 0,
15713         "Reject/invokeIDRej/derivable", HFILL }},
15714     { &hf_gsm_map_not_derivable,
15715       { "not-derivable", "gsm_map.not_derivable",
15716         FT_NONE, BASE_NONE, NULL, 0,
15717         "Reject/invokeIDRej/not-derivable", HFILL }},
15718     { &hf_gsm_map_problem,
15719       { "problem", "gsm_map.problem",
15720         FT_UINT32, BASE_DEC, VALS(gsm_map_T_problem_vals), 0,
15721         "Reject/problem", HFILL }},
15722     { &hf_gsm_map_generalProblem,
15723       { "generalProblem", "gsm_map.generalProblem",
15724         FT_INT32, BASE_DEC, VALS(gsm_map_GeneralProblem_vals), 0,
15725         "Reject/problem/generalProblem", HFILL }},
15726     { &hf_gsm_map_invokeProblem,
15727       { "invokeProblem", "gsm_map.invokeProblem",
15728         FT_INT32, BASE_DEC, VALS(gsm_map_InvokeProblem_vals), 0,
15729         "Reject/problem/invokeProblem", HFILL }},
15730     { &hf_gsm_map_returnResultProblem,
15731       { "returnResultProblem", "gsm_map.returnResultProblem",
15732         FT_INT32, BASE_DEC, VALS(gsm_map_ReturnResultProblem_vals), 0,
15733         "Reject/problem/returnResultProblem", HFILL }},
15734     { &hf_gsm_map_returnErrorProblem,
15735       { "returnErrorProblem", "gsm_map.returnErrorProblem",
15736         FT_INT32, BASE_DEC, VALS(gsm_map_ReturnErrorProblem_vals), 0,
15737         "Reject/problem/returnErrorProblem", HFILL }},
15738     { &hf_gsm_map_localValue,
15739       { "localValue", "gsm_map.localValue",
15740         FT_INT32, BASE_DEC, VALS(gsm_map_OperationLocalvalue_vals), 0,
15741         "OPERATION/localValue", HFILL }},
15742     { &hf_gsm_map_globalValue,
15743       { "globalValue", "gsm_map.globalValue",
15744         FT_OID, BASE_NONE, NULL, 0,
15745         "", HFILL }},
15746     { &hf_gsm_map_localValue1,
15747       { "localValue", "gsm_map.localValue",
15748         FT_INT32, BASE_DEC, VALS(gsm_map_LocalErrorcode_vals), 0,
15749         "ERROR/localValue", HFILL }},
15750     { &hf_gsm_map_protocolId,
15751       { "protocolId", "gsm_map.protocolId",
15752         FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0,
15753         "", HFILL }},
15754     { &hf_gsm_map_signalInfo,
15755       { "signalInfo", "gsm_map.signalInfo",
15756         FT_BYTES, BASE_HEX, NULL, 0,
15757         "", HFILL }},
15758     { &hf_gsm_map_extensionContainer,
15759       { "extensionContainer", "gsm_map.extensionContainer",
15760         FT_NONE, BASE_NONE, NULL, 0,
15761         "", HFILL }},
15762     { &hf_gsm_map_imsi,
15763       { "imsi", "gsm_map.imsi",
15764         FT_BYTES, BASE_HEX, NULL, 0,
15765         "", HFILL }},
15766     { &hf_gsm_map_msc_Number,
15767       { "msc-Number", "gsm_map.msc_Number",
15768         FT_BYTES, BASE_HEX, NULL, 0,
15769         "", HFILL }},
15770     { &hf_gsm_map_vlr_Number,
15771       { "vlr-Number", "gsm_map.vlr_Number",
15772         FT_BYTES, BASE_HEX, NULL, 0,
15773         "", HFILL }},
15774     { &hf_gsm_map_lmsi,
15775       { "lmsi", "gsm_map.lmsi",
15776         FT_BYTES, BASE_HEX, NULL, 0,
15777         "", HFILL }},
15778     { &hf_gsm_map_vlr_Capability,
15779       { "vlr-Capability", "gsm_map.vlr_Capability",
15780         FT_NONE, BASE_NONE, NULL, 0,
15781         "", HFILL }},
15782     { &hf_gsm_map_informPreviousNetworkEntity,
15783       { "informPreviousNetworkEntity", "gsm_map.informPreviousNetworkEntity",
15784         FT_NONE, BASE_NONE, NULL, 0,
15785         "", HFILL }},
15786     { &hf_gsm_map_cs_LCS_NotSupportedByUE,
15787       { "cs-LCS-NotSupportedByUE", "gsm_map.cs_LCS_NotSupportedByUE",
15788         FT_NONE, BASE_NONE, NULL, 0,
15789         "UpdateLocationArg/cs-LCS-NotSupportedByUE", HFILL }},
15790     { &hf_gsm_map_v_gmlc_Address,
15791       { "v-gmlc-Address", "gsm_map.v_gmlc_Address",
15792         FT_BYTES, BASE_HEX, NULL, 0,
15793         "", HFILL }},
15794     { &hf_gsm_map_add_info,
15795       { "add-info", "gsm_map.add_info",
15796         FT_NONE, BASE_NONE, NULL, 0,
15797         "", HFILL }},
15798     { &hf_gsm_map_hlr_Number,
15799       { "hlr-Number", "gsm_map.hlr_Number",
15800         FT_BYTES, BASE_HEX, NULL, 0,
15801         "", HFILL }},
15802     { &hf_gsm_map_add_Capability,
15803       { "add-Capability", "gsm_map.add_Capability",
15804         FT_NONE, BASE_NONE, NULL, 0,
15805         "", HFILL }},
15806     { &hf_gsm_map_supportedCamelPhases,
15807       { "supportedCamelPhases", "gsm_map.supportedCamelPhases",
15808         FT_BYTES, BASE_HEX, NULL, 0,
15809         "", HFILL }},
15810     { &hf_gsm_map_solsaSupportIndicator,
15811       { "solsaSupportIndicator", "gsm_map.solsaSupportIndicator",
15812         FT_NONE, BASE_NONE, NULL, 0,
15813         "", HFILL }},
15814     { &hf_gsm_map_istSupportIndicator,
15815       { "istSupportIndicator", "gsm_map.istSupportIndicator",
15816         FT_UINT32, BASE_DEC, VALS(gsm_map_IST_SupportIndicator_vals), 0,
15817         "", HFILL }},
15818     { &hf_gsm_map_superChargerSupportedInServingNetworkEntity,
15819       { "superChargerSupportedInServingNetworkEntity", "gsm_map.superChargerSupportedInServingNetworkEntity",
15820         FT_UINT32, BASE_DEC, VALS(gsm_map_SuperChargerInfo_vals), 0,
15821         "", HFILL }},
15822     { &hf_gsm_map_longFTN_Supported,
15823       { "longFTN-Supported", "gsm_map.longFTN_Supported",
15824         FT_NONE, BASE_NONE, NULL, 0,
15825         "", HFILL }},
15826     { &hf_gsm_map_supportedLCS_CapabilitySets,
15827       { "supportedLCS-CapabilitySets", "gsm_map.supportedLCS_CapabilitySets",
15828         FT_BYTES, BASE_HEX, NULL, 0,
15829         "", HFILL }},
15830     { &hf_gsm_map_offeredCamel4CSIs,
15831       { "offeredCamel4CSIs", "gsm_map.offeredCamel4CSIs",
15832         FT_BYTES, BASE_HEX, NULL, 0,
15833         "", HFILL }},
15834     { &hf_gsm_map_sendSubscriberData,
15835       { "sendSubscriberData", "gsm_map.sendSubscriberData",
15836         FT_NONE, BASE_NONE, NULL, 0,
15837         "SuperChargerInfo/sendSubscriberData", HFILL }},
15838     { &hf_gsm_map_subscriberDataStored,
15839       { "subscriberDataStored", "gsm_map.subscriberDataStored",
15840         FT_BYTES, BASE_HEX, NULL, 0,
15841         "SuperChargerInfo/subscriberDataStored", HFILL }},
15842     { &hf_gsm_map_imeisv,
15843       { "imeisv", "gsm_map.imeisv",
15844         FT_BYTES, BASE_HEX, NULL, 0,
15845         "", HFILL }},
15846     { &hf_gsm_map_skipSubscriberDataUpdate,
15847       { "skipSubscriberDataUpdate", "gsm_map.skipSubscriberDataUpdate",
15848         FT_NONE, BASE_NONE, NULL, 0,
15849         "ADD-Info/skipSubscriberDataUpdate", HFILL }},
15850     { &hf_gsm_map_PrivateExtensionList_item,
15851       { "Item", "gsm_map.PrivateExtensionList_item",
15852         FT_NONE, BASE_NONE, NULL, 0,
15853         "PrivateExtensionList/_item", HFILL }},
15854     { &hf_gsm_map_extId,
15855       { "extId", "gsm_map.extId",
15856         FT_OID, BASE_NONE, NULL, 0,
15857         "PrivateExtension/extId", HFILL }},
15858     { &hf_gsm_map_extType,
15859       { "extType", "gsm_map.extType",
15860         FT_NONE, BASE_NONE, NULL, 0,
15861         "PrivateExtension/extType", HFILL }},
15862     { &hf_gsm_map_privateExtensionList,
15863       { "privateExtensionList", "gsm_map.privateExtensionList",
15864         FT_UINT32, BASE_DEC, NULL, 0,
15865         "", HFILL }},
15866     { &hf_gsm_map_slr_Arg_PCS_Extensions,
15867       { "slr-Arg-PCS-Extensions", "gsm_map.slr_Arg_PCS_Extensions",
15868         FT_NONE, BASE_NONE, NULL, 0,
15869         "SLR-ArgExtensionContainer/slr-Arg-PCS-Extensions", HFILL }},
15870     { &hf_gsm_map_na_ESRK_Request,
15871       { "na-ESRK-Request", "gsm_map.na_ESRK_Request",
15872         FT_NONE, BASE_NONE, NULL, 0,
15873         "SLR-Arg-PCS-Extensions/na-ESRK-Request", HFILL }},
15874     { &hf_gsm_map_identity,
15875       { "identity", "gsm_map.identity",
15876         FT_UINT32, BASE_DEC, VALS(gsm_map_Identity_vals), 0,
15877         "CancelLocationArg/identity", HFILL }},
15878     { &hf_gsm_map_cancellationType,
15879       { "cancellationType", "gsm_map.cancellationType",
15880         FT_UINT32, BASE_DEC, VALS(gsm_map_CancellationType_vals), 0,
15881         "CancelLocationArg/cancellationType", HFILL }},
15882     { &hf_gsm_map_imsi_WithLMSI,
15883       { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI",
15884         FT_NONE, BASE_NONE, NULL, 0,
15885         "", HFILL }},
15886     { &hf_gsm_map_sgsn_Number,
15887       { "sgsn-Number", "gsm_map.sgsn_Number",
15888         FT_BYTES, BASE_HEX, NULL, 0,
15889         "", HFILL }},
15890     { &hf_gsm_map_freezeTMSI,
15891       { "freezeTMSI", "gsm_map.freezeTMSI",
15892         FT_NONE, BASE_NONE, NULL, 0,
15893         "PurgeMSRes/freezeTMSI", HFILL }},
15894     { &hf_gsm_map_freezeP_TMSI,
15895       { "freezeP-TMSI", "gsm_map.freezeP_TMSI",
15896         FT_NONE, BASE_NONE, NULL, 0,
15897         "PurgeMSRes/freezeP-TMSI", HFILL }},
15898     { &hf_gsm_map_tmsi,
15899       { "tmsi", "gsm_map.tmsi",
15900         FT_BYTES, BASE_HEX, NULL, 0,
15901         "", HFILL }},
15902     { &hf_gsm_map_numberOfRequestedVectors,
15903       { "numberOfRequestedVectors", "gsm_map.numberOfRequestedVectors",
15904         FT_UINT32, BASE_DEC, NULL, 0,
15905         "", HFILL }},
15906     { &hf_gsm_map_segmentationProhibited,
15907       { "segmentationProhibited", "gsm_map.segmentationProhibited",
15908         FT_NONE, BASE_NONE, NULL, 0,
15909         "", HFILL }},
15910     { &hf_gsm_map_previous_LAI,
15911       { "previous-LAI", "gsm_map.previous_LAI",
15912         FT_BYTES, BASE_HEX, NULL, 0,
15913         "SendIdentificationArg/previous-LAI", HFILL }},
15914     { &hf_gsm_map_hopCounter,
15915       { "hopCounter", "gsm_map.hopCounter",
15916         FT_UINT32, BASE_DEC, NULL, 0,
15917         "SendIdentificationArg/hopCounter", HFILL }},
15918     { &hf_gsm_map_authenticationSetList,
15919       { "authenticationSetList", "gsm_map.authenticationSetList",
15920         FT_UINT32, BASE_DEC, VALS(gsm_map_AuthenticationSetList_vals), 0,
15921         "", HFILL }},
15922     { &hf_gsm_map_currentSecurityContext,
15923       { "currentSecurityContext", "gsm_map.currentSecurityContext",
15924         FT_UINT32, BASE_DEC, VALS(gsm_map_CurrentSecurityContext_vals), 0,
15925         "SendIdentificationRes/currentSecurityContext", HFILL }},
15926     { &hf_gsm_map_tripletList,
15927       { "tripletList", "gsm_map.tripletList",
15928         FT_UINT32, BASE_DEC, NULL, 0,
15929         "AuthenticationSetList/tripletList", HFILL }},
15930     { &hf_gsm_map_quintupletList,
15931       { "quintupletList", "gsm_map.quintupletList",
15932         FT_UINT32, BASE_DEC, NULL, 0,
15933         "AuthenticationSetList/quintupletList", HFILL }},
15934     { &hf_gsm_map_TripletList_item,
15935       { "Item", "gsm_map.TripletList_item",
15936         FT_NONE, BASE_NONE, NULL, 0,
15937         "TripletList/_item", HFILL }},
15938     { &hf_gsm_map_QuintupletList_item,
15939       { "Item", "gsm_map.QuintupletList_item",
15940         FT_NONE, BASE_NONE, NULL, 0,
15941         "QuintupletList/_item", HFILL }},
15942     { &hf_gsm_map_rand,
15943       { "rand", "gsm_map.rand",
15944         FT_BYTES, BASE_HEX, NULL, 0,
15945         "", HFILL }},
15946     { &hf_gsm_map_sres,
15947       { "sres", "gsm_map.sres",
15948         FT_BYTES, BASE_HEX, NULL, 0,
15949         "", HFILL }},
15950     { &hf_gsm_map_kc,
15951       { "kc", "gsm_map.kc",
15952         FT_BYTES, BASE_HEX, NULL, 0,
15953         "", HFILL }},
15954     { &hf_gsm_map_xres,
15955       { "xres", "gsm_map.xres",
15956         FT_BYTES, BASE_HEX, NULL, 0,
15957         "AuthenticationQuintuplet/xres", HFILL }},
15958     { &hf_gsm_map_ck,
15959       { "ck", "gsm_map.ck",
15960         FT_BYTES, BASE_HEX, NULL, 0,
15961         "", HFILL }},
15962     { &hf_gsm_map_ik,
15963       { "ik", "gsm_map.ik",
15964         FT_BYTES, BASE_HEX, NULL, 0,
15965         "", HFILL }},
15966     { &hf_gsm_map_autn,
15967       { "autn", "gsm_map.autn",
15968         FT_BYTES, BASE_HEX, NULL, 0,
15969         "AuthenticationQuintuplet/autn", HFILL }},
15970     { &hf_gsm_map_gsm_SecurityContextData,
15971       { "gsm-SecurityContextData", "gsm_map.gsm_SecurityContextData",
15972         FT_NONE, BASE_NONE, NULL, 0,
15973         "CurrentSecurityContext/gsm-SecurityContextData", HFILL }},
15974     { &hf_gsm_map_umts_SecurityContextData,
15975       { "umts-SecurityContextData", "gsm_map.umts_SecurityContextData",
15976         FT_NONE, BASE_NONE, NULL, 0,
15977         "CurrentSecurityContext/umts-SecurityContextData", HFILL }},
15978     { &hf_gsm_map_cksn,
15979       { "cksn", "gsm_map.cksn",
15980         FT_BYTES, BASE_HEX, NULL, 0,
15981         "GSM-SecurityContextData/cksn", HFILL }},
15982     { &hf_gsm_map_ksi,
15983       { "ksi", "gsm_map.ksi",
15984         FT_BYTES, BASE_HEX, NULL, 0,
15985         "UMTS-SecurityContextData/ksi", HFILL }},
15986     { &hf_gsm_map_targetCellId,
15987       { "targetCellId", "gsm_map.targetCellId",
15988         FT_BYTES, BASE_HEX, NULL, 0,
15989         "", HFILL }},
15990     { &hf_gsm_map_ho_NumberNotRequired,
15991       { "ho-NumberNotRequired", "gsm_map.ho_NumberNotRequired",
15992         FT_NONE, BASE_NONE, NULL, 0,
15993         "", HFILL }},
15994     { &hf_gsm_map_bss_APDU,
15995       { "bss-APDU", "gsm_map.bss_APDU",
15996         FT_NONE, BASE_NONE, NULL, 0,
15997         "", HFILL }},
15998     { &hf_gsm_map_targetRNCId,
15999       { "targetRNCId", "gsm_map.targetRNCId",
16000         FT_BYTES, BASE_HEX, NULL, 0,
16001         "", HFILL }},
16002     { &hf_gsm_map_an_APDU,
16003       { "an-APDU", "gsm_map.an_APDU",
16004         FT_NONE, BASE_NONE, NULL, 0,
16005         "", HFILL }},
16006     { &hf_gsm_map_multipleBearerRequested,
16007       { "multipleBearerRequested", "gsm_map.multipleBearerRequested",
16008         FT_NONE, BASE_NONE, NULL, 0,
16009         "PrepareHO-ArgV3/multipleBearerRequested", HFILL }},
16010     { &hf_gsm_map_integrityProtectionInfo,
16011       { "integrityProtectionInfo", "gsm_map.integrityProtectionInfo",
16012         FT_BYTES, BASE_HEX, NULL, 0,
16013         "", HFILL }},
16014     { &hf_gsm_map_encryptionInfo,
16015       { "encryptionInfo", "gsm_map.encryptionInfo",
16016         FT_BYTES, BASE_HEX, NULL, 0,
16017         "", HFILL }},
16018     { &hf_gsm_map_radioResourceInformation,
16019       { "radioResourceInformation", "gsm_map.radioResourceInformation",
16020         FT_BYTES, BASE_HEX, NULL, 0,
16021         "", HFILL }},
16022     { &hf_gsm_map_allowedGSM_Algorithms,
16023       { "allowedGSM-Algorithms", "gsm_map.allowedGSM_Algorithms",
16024         FT_BYTES, BASE_HEX, NULL, 0,
16025         "", HFILL }},
16026     { &hf_gsm_map_allowedUMTS_Algorithms,
16027       { "allowedUMTS-Algorithms", "gsm_map.allowedUMTS_Algorithms",
16028         FT_NONE, BASE_NONE, NULL, 0,
16029         "", HFILL }},
16030     { &hf_gsm_map_radioResourceList,
16031       { "radioResourceList", "gsm_map.radioResourceList",
16032         FT_UINT32, BASE_DEC, NULL, 0,
16033         "", HFILL }},
16034     { &hf_gsm_map_rab_Id,
16035       { "rab-Id", "gsm_map.rab_Id",
16036         FT_UINT32, BASE_DEC, NULL, 0,
16037         "", HFILL }},
16038     { &hf_gsm_map_bssmap_ServiceHandover,
16039       { "bssmap-ServiceHandover", "gsm_map.bssmap_ServiceHandover",
16040         FT_BYTES, BASE_HEX, NULL, 0,
16041         "", HFILL }},
16042     { &hf_gsm_map_ranap_ServiceHandover,
16043       { "ranap-ServiceHandover", "gsm_map.ranap_ServiceHandover",
16044         FT_BYTES, BASE_HEX, NULL, 0,
16045         "", HFILL }},
16046     { &hf_gsm_map_bssmap_ServiceHandoverList,
16047       { "bssmap-ServiceHandoverList", "gsm_map.bssmap_ServiceHandoverList",
16048         FT_UINT32, BASE_DEC, NULL, 0,
16049         "", HFILL }},
16050     { &hf_gsm_map_asciCallReference,
16051       { "asciCallReference", "gsm_map.asciCallReference",
16052         FT_BYTES, BASE_HEX, NULL, 0,
16053         "", HFILL }},
16054     { &hf_gsm_map_geran_classmark,
16055       { "geran-classmark", "gsm_map.geran_classmark",
16056         FT_BYTES, BASE_HEX, NULL, 0,
16057         "", HFILL }},
16058     { &hf_gsm_map_iuCurrentlyUsedCodec,
16059       { "iuCurrentlyUsedCodec", "gsm_map.iuCurrentlyUsedCodec",
16060         FT_BYTES, BASE_HEX, NULL, 0,
16061         "PrepareHO-ArgV3/iuCurrentlyUsedCodec", HFILL }},
16062     { &hf_gsm_map_iuSupportedCodecsList,
16063       { "iuSupportedCodecsList", "gsm_map.iuSupportedCodecsList",
16064         FT_NONE, BASE_NONE, NULL, 0,
16065         "", HFILL }},
16066     { &hf_gsm_map_rab_ConfigurationIndicator,
16067       { "rab-ConfigurationIndicator", "gsm_map.rab_ConfigurationIndicator",
16068         FT_NONE, BASE_NONE, NULL, 0,
16069         "", HFILL }},
16070     { &hf_gsm_map_uesbi_Iu,
16071       { "uesbi-Iu", "gsm_map.uesbi_Iu",
16072         FT_NONE, BASE_NONE, NULL, 0,
16073         "PrepareHO-ArgV3/uesbi-Iu", HFILL }},
16074     { &hf_gsm_map_BSSMAP_ServiceHandoverList_item,
16075       { "Item", "gsm_map.BSSMAP_ServiceHandoverList_item",
16076         FT_NONE, BASE_NONE, NULL, 0,
16077         "BSSMAP-ServiceHandoverList/_item", HFILL }},
16078     { &hf_gsm_map_RadioResourceList_item,
16079       { "Item", "gsm_map.RadioResourceList_item",
16080         FT_NONE, BASE_NONE, NULL, 0,
16081         "RadioResourceList/_item", HFILL }},
16082     { &hf_gsm_map_handoverNumber,
16083       { "handoverNumber", "gsm_map.handoverNumber",
16084         FT_BYTES, BASE_HEX, NULL, 0,
16085         "", HFILL }},
16086     { &hf_gsm_map_relocationNumberList,
16087       { "relocationNumberList", "gsm_map.relocationNumberList",
16088         FT_UINT32, BASE_DEC, NULL, 0,
16089         "PrepareHO-ResV3/relocationNumberList", HFILL }},
16090     { &hf_gsm_map_multicallBearerInfo,
16091       { "multicallBearerInfo", "gsm_map.multicallBearerInfo",
16092         FT_UINT32, BASE_DEC, NULL, 0,
16093         "PrepareHO-ResV3/multicallBearerInfo", HFILL }},
16094     { &hf_gsm_map_multipleBearerNotSupported,
16095       { "multipleBearerNotSupported", "gsm_map.multipleBearerNotSupported",
16096         FT_NONE, BASE_NONE, NULL, 0,
16097         "PrepareHO-ResV3/multipleBearerNotSupported", HFILL }},
16098     { &hf_gsm_map_selectedUMTS_Algorithms,
16099       { "selectedUMTS-Algorithms", "gsm_map.selectedUMTS_Algorithms",
16100         FT_NONE, BASE_NONE, NULL, 0,
16101         "", HFILL }},
16102     { &hf_gsm_map_chosenRadioResourceInformation,
16103       { "chosenRadioResourceInformation", "gsm_map.chosenRadioResourceInformation",
16104         FT_NONE, BASE_NONE, NULL, 0,
16105         "", HFILL }},
16106     { &hf_gsm_map_iuSelectedCodec,
16107       { "iuSelectedCodec", "gsm_map.iuSelectedCodec",
16108         FT_BYTES, BASE_HEX, NULL, 0,
16109         "", HFILL }},
16110     { &hf_gsm_map_iuAvailableCodecsList,
16111       { "iuAvailableCodecsList", "gsm_map.iuAvailableCodecsList",
16112         FT_NONE, BASE_NONE, NULL, 0,
16113         "", HFILL }},
16114     { &hf_gsm_map_integrityProtectionAlgorithm,
16115       { "integrityProtectionAlgorithm", "gsm_map.integrityProtectionAlgorithm",
16116         FT_BYTES, BASE_HEX, NULL, 0,
16117         "SelectedUMTS-Algorithms/integrityProtectionAlgorithm", HFILL }},
16118     { &hf_gsm_map_encryptionAlgorithm,
16119       { "encryptionAlgorithm", "gsm_map.encryptionAlgorithm",
16120         FT_BYTES, BASE_HEX, NULL, 0,
16121         "SelectedUMTS-Algorithms/encryptionAlgorithm", HFILL }},
16122     { &hf_gsm_map_chosenChannelInfo,
16123       { "chosenChannelInfo", "gsm_map.chosenChannelInfo",
16124         FT_BYTES, BASE_HEX, NULL, 0,
16125         "ChosenRadioResourceInformation/chosenChannelInfo", HFILL }},
16126     { &hf_gsm_map_chosenSpeechVersion,
16127       { "chosenSpeechVersion", "gsm_map.chosenSpeechVersion",
16128         FT_BYTES, BASE_HEX, NULL, 0,
16129         "ChosenRadioResourceInformation/chosenSpeechVersion", HFILL }},
16130     { &hf_gsm_map_RelocationNumberList_item,
16131       { "Item", "gsm_map.RelocationNumberList_item",
16132         FT_NONE, BASE_NONE, NULL, 0,
16133         "RelocationNumberList/_item", HFILL }},
16134     { &hf_gsm_map_selectedGSM_Algorithm,
16135       { "selectedGSM-Algorithm", "gsm_map.selectedGSM_Algorithm",
16136         FT_BYTES, BASE_HEX, NULL, 0,
16137         "ProcessAccessSignallingArgV3/selectedGSM-Algorithm", HFILL }},
16138     { &hf_gsm_map_selectedRab_Id,
16139       { "selectedRab-Id", "gsm_map.selectedRab_Id",
16140         FT_UINT32, BASE_DEC, NULL, 0,
16141         "", HFILL }},
16142     { &hf_gsm_map_iUSelectedCodec,
16143       { "iUSelectedCodec", "gsm_map.iUSelectedCodec",
16144         FT_BYTES, BASE_HEX, NULL, 0,
16145         "ProcessAccessSignallingArgV3/iUSelectedCodec", HFILL }},
16146     { &hf_gsm_map_utranCodecList,
16147       { "utranCodecList", "gsm_map.utranCodecList",
16148         FT_NONE, BASE_NONE, NULL, 0,
16149         "SupportedCodecsList/utranCodecList", HFILL }},
16150     { &hf_gsm_map_geranCodecList,
16151       { "geranCodecList", "gsm_map.geranCodecList",
16152         FT_NONE, BASE_NONE, NULL, 0,
16153         "SupportedCodecsList/geranCodecList", HFILL }},
16154     { &hf_gsm_map_codec1,
16155       { "codec1", "gsm_map.codec1",
16156         FT_BYTES, BASE_HEX, NULL, 0,
16157         "CodecList/codec1", HFILL }},
16158     { &hf_gsm_map_codec2,
16159       { "codec2", "gsm_map.codec2",
16160         FT_BYTES, BASE_HEX, NULL, 0,
16161         "CodecList/codec2", HFILL }},
16162     { &hf_gsm_map_codec3,
16163       { "codec3", "gsm_map.codec3",
16164         FT_BYTES, BASE_HEX, NULL, 0,
16165         "CodecList/codec3", HFILL }},
16166     { &hf_gsm_map_codec4,
16167       { "codec4", "gsm_map.codec4",
16168         FT_BYTES, BASE_HEX, NULL, 0,
16169         "CodecList/codec4", HFILL }},
16170     { &hf_gsm_map_codec5,
16171       { "codec5", "gsm_map.codec5",
16172         FT_BYTES, BASE_HEX, NULL, 0,
16173         "CodecList/codec5", HFILL }},
16174     { &hf_gsm_map_codec6,
16175       { "codec6", "gsm_map.codec6",
16176         FT_BYTES, BASE_HEX, NULL, 0,
16177         "CodecList/codec6", HFILL }},
16178     { &hf_gsm_map_codec7,
16179       { "codec7", "gsm_map.codec7",
16180         FT_BYTES, BASE_HEX, NULL, 0,
16181         "CodecList/codec7", HFILL }},
16182     { &hf_gsm_map_codec8,
16183       { "codec8", "gsm_map.codec8",
16184         FT_BYTES, BASE_HEX, NULL, 0,
16185         "CodecList/codec8", HFILL }},
16186     { &hf_gsm_map_keyStatus,
16187       { "keyStatus", "gsm_map.keyStatus",
16188         FT_UINT32, BASE_DEC, VALS(gsm_map_KeyStatus_vals), 0,
16189         "ForwardAccessSignallingArgV3/keyStatus", HFILL }},
16190     { &hf_gsm_map_currentlyUsedCodec,
16191       { "currentlyUsedCodec", "gsm_map.currentlyUsedCodec",
16192         FT_BYTES, BASE_HEX, NULL, 0,
16193         "ForwardAccessSignallingArgV3/currentlyUsedCodec", HFILL }},
16194     { &hf_gsm_map_integrityProtectionAlgorithms,
16195       { "integrityProtectionAlgorithms", "gsm_map.integrityProtectionAlgorithms",
16196         FT_BYTES, BASE_HEX, NULL, 0,
16197         "AllowedUMTS-Algorithms/integrityProtectionAlgorithms", HFILL }},
16198     { &hf_gsm_map_encryptionAlgorithms,
16199       { "encryptionAlgorithms", "gsm_map.encryptionAlgorithms",
16200         FT_BYTES, BASE_HEX, NULL, 0,
16201         "AllowedUMTS-Algorithms/encryptionAlgorithms", HFILL }},
16202     { &hf_gsm_map_targetMSC_Number,
16203       { "targetMSC-Number", "gsm_map.targetMSC_Number",
16204         FT_BYTES, BASE_HEX, NULL, 0,
16205         "", HFILL }},
16206     { &hf_gsm_map_immediateResponsePreferred,
16207       { "immediateResponsePreferred", "gsm_map.immediateResponsePreferred",
16208         FT_NONE, BASE_NONE, NULL, 0,
16209         "SendAuthenticationInfoArgV2/immediateResponsePreferred", HFILL }},
16210     { &hf_gsm_map_re_synchronisationInfo,
16211       { "re-synchronisationInfo", "gsm_map.re_synchronisationInfo",
16212         FT_NONE, BASE_NONE, NULL, 0,
16213         "SendAuthenticationInfoArgV2/re-synchronisationInfo", HFILL }},
16214     { &hf_gsm_map_requestingNodeType,
16215       { "requestingNodeType", "gsm_map.requestingNodeType",
16216         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestingNodeType_vals), 0,
16217         "SendAuthenticationInfoArgV2/requestingNodeType", HFILL }},
16218     { &hf_gsm_map_requestingPLMN_Id,
16219       { "requestingPLMN-Id", "gsm_map.requestingPLMN_Id",
16220         FT_BYTES, BASE_HEX, NULL, 0,
16221         "SendAuthenticationInfoArgV2/requestingPLMN-Id", HFILL }},
16222     { &hf_gsm_map_SendAuthenticationInfoRes_item,
16223       { "Item", "gsm_map.SendAuthenticationInfoRes_item",
16224         FT_NONE, BASE_NONE, NULL, 0,
16225         "SendAuthenticationInfoRes/_item", HFILL }},
16226     { &hf_gsm_map_auts,
16227       { "auts", "gsm_map.auts",
16228         FT_BYTES, BASE_HEX, NULL, 0,
16229         "Re-synchronisationInfo/auts", HFILL }},
16230     { &hf_gsm_map_imei,
16231       { "imei", "gsm_map.imei",
16232         FT_BYTES, BASE_HEX, NULL, 0,
16233         "", HFILL }},
16234     { &hf_gsm_map_requestedEquipmentInfo,
16235       { "requestedEquipmentInfo", "gsm_map.requestedEquipmentInfo",
16236         FT_BYTES, BASE_HEX, NULL, 0,
16237         "CheckIMEIArgV2/requestedEquipmentInfo", HFILL }},
16238     { &hf_gsm_map_equipmentStatus,
16239       { "equipmentStatus", "gsm_map.equipmentStatus",
16240         FT_UINT32, BASE_DEC, VALS(gsm_map_EquipmentStatus_vals), 0,
16241         "CheckIMEIRes/equipmentStatus", HFILL }},
16242     { &hf_gsm_map_bmuef,
16243       { "bmuef", "gsm_map.bmuef",
16244         FT_NONE, BASE_NONE, NULL, 0,
16245         "CheckIMEIRes/bmuef", HFILL }},
16246     { &hf_gsm_map_uesbi_IuA,
16247       { "uesbi-IuA", "gsm_map.uesbi_IuA",
16248         FT_BYTES, BASE_HEX, NULL, 0,
16249         "UESBI-Iu/uesbi-IuA", HFILL }},
16250     { &hf_gsm_map_uesbi_IuB,
16251       { "uesbi-IuB", "gsm_map.uesbi_IuB",
16252         FT_BYTES, BASE_HEX, NULL, 0,
16253         "UESBI-Iu/uesbi-IuB", HFILL }},
16254     { &hf_gsm_map_bearerservice,
16255       { "bearerservice", "gsm_map.bearerservice",
16256         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
16257         "BasicService/bearerservice", HFILL }},
16258     { &hf_gsm_map_teleservice,
16259       { "teleservice", "gsm_map.teleservice",
16260         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16261         "BasicService/teleservice", HFILL }},
16262     { &hf_gsm_map_BasicServiceGroupList_item,
16263       { "Item", "gsm_map.BasicServiceGroupList_item",
16264         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_vals), 0,
16265         "BasicServiceGroupList/_item", HFILL }},
16266     { &hf_gsm_map_bcsmTriggerDetectionPoint,
16267       { "bcsmTriggerDetectionPoint", "gsm_map.bcsmTriggerDetectionPoint",
16268         FT_UINT32, BASE_DEC, VALS(gsm_map_BcsmTriggerDetectionPoint_vals), 0,
16269         "BcsmCamelTDPData/bcsmTriggerDetectionPoint", HFILL }},
16270     { &hf_gsm_map_serviceKey,
16271       { "serviceKey", "gsm_map.serviceKey",
16272         FT_UINT32, BASE_DEC, NULL, 0,
16273         "", HFILL }},
16274     { &hf_gsm_map_gsmSCFAddress,
16275       { "gsmSCFAddress", "gsm_map.gsmSCFAddress",
16276         FT_BYTES, BASE_HEX, NULL, 0,
16277         "BcsmCamelTDPData/gsmSCFAddress", HFILL }},
16278     { &hf_gsm_map_defaultCallHandling,
16279       { "defaultCallHandling", "gsm_map.defaultCallHandling",
16280         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultCallHandling_vals), 0,
16281         "", HFILL }},
16282     { &hf_gsm_map_BcsmCamelTDPDataList_item,
16283       { "Item", "gsm_map.BcsmCamelTDPDataList_item",
16284         FT_NONE, BASE_NONE, NULL, 0,
16285         "BcsmCamelTDPDataList/_item", HFILL }},
16286     { &hf_gsm_map_o_BcsmCamelTDPDataList,
16287       { "o-BcsmCamelTDPDataList", "gsm_map.o_BcsmCamelTDPDataList",
16288         FT_UINT32, BASE_DEC, NULL, 0,
16289         "O-CSI/o-BcsmCamelTDPDataList", HFILL }},
16290     { &hf_gsm_map_camelCapabilityHandling,
16291       { "camelCapabilityHandling", "gsm_map.camelCapabilityHandling",
16292         FT_UINT32, BASE_DEC, NULL, 0,
16293         "", HFILL }},
16294     { &hf_gsm_map_notificationToCSE,
16295       { "notificationToCSE", "gsm_map.notificationToCSE",
16296         FT_NONE, BASE_NONE, NULL, 0,
16297         "", HFILL }},
16298     { &hf_gsm_map_csiActive,
16299       { "csiActive", "gsm_map.csiActive",
16300         FT_NONE, BASE_NONE, NULL, 0,
16301         "O-CSI/csiActive", HFILL }},
16302     { &hf_gsm_map_O_BcsmCamelTDPDataList_item,
16303       { "Item", "gsm_map.O_BcsmCamelTDPDataList_item",
16304         FT_NONE, BASE_NONE, NULL, 0,
16305         "O-BcsmCamelTDPDataList/_item", HFILL }},
16306     { &hf_gsm_map_o_BcsmTriggerDetectionPoint,
16307       { "o-BcsmTriggerDetectionPoint", "gsm_map.o_BcsmTriggerDetectionPoint",
16308         FT_UINT32, BASE_DEC, VALS(gsm_map_O_BcsmTriggerDetectionPoint_vals), 0,
16309         "", HFILL }},
16310     { &hf_gsm_map_gsmSCF_Address,
16311       { "gsmSCF-Address", "gsm_map.gsmSCF_Address",
16312         FT_BYTES, BASE_HEX, NULL, 0,
16313         "", HFILL }},
16314     { &hf_gsm_map_msisdn,
16315       { "msisdn", "gsm_map.msisdn",
16316         FT_BYTES, BASE_HEX, NULL, 0,
16317         "", HFILL }},
16318     { &hf_gsm_map_category,
16319       { "category", "gsm_map.category",
16320         FT_BYTES, BASE_HEX, NULL, 0,
16321         "InsertSubscriberDataArg/category", HFILL }},
16322     { &hf_gsm_map_subscriberStatus,
16323       { "subscriberStatus", "gsm_map.subscriberStatus",
16324         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberStatus_vals), 0,
16325         "InsertSubscriberDataArg/subscriberStatus", HFILL }},
16326     { &hf_gsm_map_bearerserviceList,
16327       { "bearerserviceList", "gsm_map.bearerserviceList",
16328         FT_UINT32, BASE_DEC, NULL, 0,
16329         "InsertSubscriberDataArg/bearerserviceList", HFILL }},
16330     { &hf_gsm_map_teleserviceList,
16331       { "teleserviceList", "gsm_map.teleserviceList",
16332         FT_UINT32, BASE_DEC, NULL, 0,
16333         "", HFILL }},
16334     { &hf_gsm_map_provisionedSS,
16335       { "provisionedSS", "gsm_map.provisionedSS",
16336         FT_UINT32, BASE_DEC, NULL, 0,
16337         "InsertSubscriberDataArg/provisionedSS", HFILL }},
16338     { &hf_gsm_map_odb_Data,
16339       { "odb-Data", "gsm_map.odb_Data",
16340         FT_NONE, BASE_NONE, NULL, 0,
16341         "", HFILL }},
16342     { &hf_gsm_map_roamingRestrictionDueToUnsupportedFeature,
16343       { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.roamingRestrictionDueToUnsupportedFeature",
16344         FT_NONE, BASE_NONE, NULL, 0,
16345         "", HFILL }},
16346     { &hf_gsm_map_regionalSubscriptionData,
16347       { "regionalSubscriptionData", "gsm_map.regionalSubscriptionData",
16348         FT_UINT32, BASE_DEC, NULL, 0,
16349         "InsertSubscriberDataArg/regionalSubscriptionData", HFILL }},
16350     { &hf_gsm_map_vbsSubscriptionData,
16351       { "vbsSubscriptionData", "gsm_map.vbsSubscriptionData",
16352         FT_UINT32, BASE_DEC, NULL, 0,
16353         "InsertSubscriberDataArg/vbsSubscriptionData", HFILL }},
16354     { &hf_gsm_map_vgcsSubscriptionData,
16355       { "vgcsSubscriptionData", "gsm_map.vgcsSubscriptionData",
16356         FT_UINT32, BASE_DEC, NULL, 0,
16357         "InsertSubscriberDataArg/vgcsSubscriptionData", HFILL }},
16358     { &hf_gsm_map_vlrCamelSubscriptionInfo,
16359       { "vlrCamelSubscriptionInfo", "gsm_map.vlrCamelSubscriptionInfo",
16360         FT_NONE, BASE_NONE, NULL, 0,
16361         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo", HFILL }},
16362     { &hf_gsm_map_naea_PreferredCI,
16363       { "naea-PreferredCI", "gsm_map.naea_PreferredCI",
16364         FT_NONE, BASE_NONE, NULL, 0,
16365         "", HFILL }},
16366     { &hf_gsm_map_gprsSubscriptionData,
16367       { "gprsSubscriptionData", "gsm_map.gprsSubscriptionData",
16368         FT_NONE, BASE_NONE, NULL, 0,
16369         "InsertSubscriberDataArg/gprsSubscriptionData", HFILL }},
16370     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature,
16371       { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsupportedFeature",
16372         FT_NONE, BASE_NONE, NULL, 0,
16373         "InsertSubscriberDataArg/roamingRestrictedInSgsnDueToUnsupportedFeature", HFILL }},
16374     { &hf_gsm_map_networkAccessMode,
16375       { "networkAccessMode", "gsm_map.networkAccessMode",
16376         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkAccessMode_vals), 0,
16377         "InsertSubscriberDataArg/networkAccessMode", HFILL }},
16378     { &hf_gsm_map_lsaInformation,
16379       { "lsaInformation", "gsm_map.lsaInformation",
16380         FT_NONE, BASE_NONE, NULL, 0,
16381         "InsertSubscriberDataArg/lsaInformation", HFILL }},
16382     { &hf_gsm_map_lmu_Indicator,
16383       { "lmu-Indicator", "gsm_map.lmu_Indicator",
16384         FT_NONE, BASE_NONE, NULL, 0,
16385         "InsertSubscriberDataArg/lmu-Indicator", HFILL }},
16386     { &hf_gsm_map_lcsInformation,
16387       { "lcsInformation", "gsm_map.lcsInformation",
16388         FT_NONE, BASE_NONE, NULL, 0,
16389         "InsertSubscriberDataArg/lcsInformation", HFILL }},
16390     { &hf_gsm_map_istAlertTimer,
16391       { "istAlertTimer", "gsm_map.istAlertTimer",
16392         FT_UINT32, BASE_DEC, NULL, 0,
16393         "", HFILL }},
16394     { &hf_gsm_map_superChargerSupportedInHLR,
16395       { "superChargerSupportedInHLR", "gsm_map.superChargerSupportedInHLR",
16396         FT_BYTES, BASE_HEX, NULL, 0,
16397         "InsertSubscriberDataArg/superChargerSupportedInHLR", HFILL }},
16398     { &hf_gsm_map_mc_SS_Info,
16399       { "mc-SS-Info", "gsm_map.mc_SS_Info",
16400         FT_NONE, BASE_NONE, NULL, 0,
16401         "InsertSubscriberDataArg/mc-SS-Info", HFILL }},
16402     { &hf_gsm_map_cs_AllocationRetentionPriority,
16403       { "cs-AllocationRetentionPriority", "gsm_map.cs_AllocationRetentionPriority",
16404         FT_BYTES, BASE_HEX, NULL, 0,
16405         "InsertSubscriberDataArg/cs-AllocationRetentionPriority", HFILL }},
16406     { &hf_gsm_map_sgsn_CAMEL_SubscriptionInfo,
16407       { "sgsn-CAMEL-SubscriptionInfo", "gsm_map.sgsn_CAMEL_SubscriptionInfo",
16408         FT_NONE, BASE_NONE, NULL, 0,
16409         "InsertSubscriberDataArg/sgsn-CAMEL-SubscriptionInfo", HFILL }},
16410     { &hf_gsm_map_chargingCharacteristics,
16411       { "chargingCharacteristics", "gsm_map.chargingCharacteristics",
16412         FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00,
16413         "", HFILL }},
16414     { &hf_gsm_map_accessRestrictionData,
16415       { "accessRestrictionData", "gsm_map.accessRestrictionData",
16416         FT_BYTES, BASE_HEX, NULL, 0,
16417         "InsertSubscriberDataArg/accessRestrictionData", HFILL }},
16418     { &hf_gsm_map_gmlc_List,
16419       { "gmlc-List", "gsm_map.gmlc_List",
16420         FT_UINT32, BASE_DEC, NULL, 0,
16421         "LCSInformation/gmlc-List", HFILL }},
16422     { &hf_gsm_map_lcs_PrivacyExceptionList,
16423       { "lcs-PrivacyExceptionList", "gsm_map.lcs_PrivacyExceptionList",
16424         FT_UINT32, BASE_DEC, NULL, 0,
16425         "LCSInformation/lcs-PrivacyExceptionList", HFILL }},
16426     { &hf_gsm_map_molr_List,
16427       { "molr-List", "gsm_map.molr_List",
16428         FT_UINT32, BASE_DEC, NULL, 0,
16429         "LCSInformation/molr-List", HFILL }},
16430     { &hf_gsm_map_add_lcs_PrivacyExceptionList,
16431       { "add-lcs-PrivacyExceptionList", "gsm_map.add_lcs_PrivacyExceptionList",
16432         FT_UINT32, BASE_DEC, NULL, 0,
16433         "LCSInformation/add-lcs-PrivacyExceptionList", HFILL }},
16434     { &hf_gsm_map_GMLC_List_item,
16435       { "Item", "gsm_map.GMLC_List_item",
16436         FT_BYTES, BASE_HEX, NULL, 0,
16437         "GMLC-List/_item", HFILL }},
16438     { &hf_gsm_map_GPRSDataList_item,
16439       { "Item", "gsm_map.GPRSDataList_item",
16440         FT_NONE, BASE_NONE, NULL, 0,
16441         "GPRSDataList/_item", HFILL }},
16442     { &hf_gsm_map_pdp_ContextId,
16443       { "pdp-ContextId", "gsm_map.pdp_ContextId",
16444         FT_UINT32, BASE_DEC, NULL, 0,
16445         "PDP-Context/pdp-ContextId", HFILL }},
16446     { &hf_gsm_map_pdp_Type,
16447       { "pdp-Type", "gsm_map.pdp_Type",
16448         FT_BYTES, BASE_HEX, NULL, 0,
16449         "", HFILL }},
16450     { &hf_gsm_map_pdp_Address,
16451       { "pdp-Address", "gsm_map.pdp_Address",
16452         FT_BYTES, BASE_HEX, NULL, 0,
16453         "", HFILL }},
16454     { &hf_gsm_map_qos_Subscribed,
16455       { "qos-Subscribed", "gsm_map.qos_Subscribed",
16456         FT_BYTES, BASE_HEX, NULL, 0,
16457         "PDP-Context/qos-Subscribed", HFILL }},
16458     { &hf_gsm_map_vplmnAddressAllowed,
16459       { "vplmnAddressAllowed", "gsm_map.vplmnAddressAllowed",
16460         FT_NONE, BASE_NONE, NULL, 0,
16461         "PDP-Context/vplmnAddressAllowed", HFILL }},
16462     { &hf_gsm_map_apn,
16463       { "apn", "gsm_map.apn",
16464         FT_BYTES, BASE_HEX, NULL, 0,
16465         "PDP-Context/apn", HFILL }},
16466     { &hf_gsm_map_ext_QoS_Subscribed,
16467       { "ext-QoS-Subscribed", "gsm_map.ext_QoS_Subscribed",
16468         FT_BYTES, BASE_HEX, NULL, 0,
16469         "PDP-Context/ext-QoS-Subscribed", HFILL }},
16470     { &hf_gsm_map_pdp_ChargingCharacteristics,
16471       { "pdp-ChargingCharacteristics", "gsm_map.pdp_ChargingCharacteristics",
16472         FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00,
16473         "PDP-Context/pdp-ChargingCharacteristics", HFILL }},
16474     { &hf_gsm_map_ext2_QoS_Subscribed,
16475       { "ext2-QoS-Subscribed", "gsm_map.ext2_QoS_Subscribed",
16476         FT_BYTES, BASE_HEX, NULL, 0,
16477         "PDP-Context/ext2-QoS-Subscribed", HFILL }},
16478     { &hf_gsm_map_completeDataListIncluded,
16479       { "completeDataListIncluded", "gsm_map.completeDataListIncluded",
16480         FT_NONE, BASE_NONE, NULL, 0,
16481         "", HFILL }},
16482     { &hf_gsm_map_gprsDataList,
16483       { "gprsDataList", "gsm_map.gprsDataList",
16484         FT_UINT32, BASE_DEC, NULL, 0,
16485         "GPRSSubscriptionData/gprsDataList", HFILL }},
16486     { &hf_gsm_map_gprs_CSI,
16487       { "gprs-CSI", "gsm_map.gprs_CSI",
16488         FT_NONE, BASE_NONE, NULL, 0,
16489         "", HFILL }},
16490     { &hf_gsm_map_mo_sms_CSI,
16491       { "mo-sms-CSI", "gsm_map.mo_sms_CSI",
16492         FT_NONE, BASE_NONE, NULL, 0,
16493         "", HFILL }},
16494     { &hf_gsm_map_mt_sms_CSI,
16495       { "mt-sms-CSI", "gsm_map.mt_sms_CSI",
16496         FT_NONE, BASE_NONE, NULL, 0,
16497         "", HFILL }},
16498     { &hf_gsm_map_mt_smsCAMELTDP_CriteriaList,
16499       { "mt-smsCAMELTDP-CriteriaList", "gsm_map.mt_smsCAMELTDP_CriteriaList",
16500         FT_UINT32, BASE_DEC, NULL, 0,
16501         "", HFILL }},
16502     { &hf_gsm_map_mg_csi,
16503       { "mg-csi", "gsm_map.mg_csi",
16504         FT_NONE, BASE_NONE, NULL, 0,
16505         "", HFILL }},
16506     { &hf_gsm_map_gprs_CamelTDPDataList,
16507       { "gprs-CamelTDPDataList", "gsm_map.gprs_CamelTDPDataList",
16508         FT_UINT32, BASE_DEC, NULL, 0,
16509         "GPRS-CSI/gprs-CamelTDPDataList", HFILL }},
16510     { &hf_gsm_map_csi_Active,
16511       { "csi-Active", "gsm_map.csi_Active",
16512         FT_NONE, BASE_NONE, NULL, 0,
16513         "", HFILL }},
16514     { &hf_gsm_map_GPRS_CamelTDPDataList_item,
16515       { "Item", "gsm_map.GPRS_CamelTDPDataList_item",
16516         FT_NONE, BASE_NONE, NULL, 0,
16517         "GPRS-CamelTDPDataList/_item", HFILL }},
16518     { &hf_gsm_map_gprs_TriggerDetectionPoint,
16519       { "gprs-TriggerDetectionPoint", "gsm_map.gprs_TriggerDetectionPoint",
16520         FT_UINT32, BASE_DEC, VALS(gsm_map_GPRS_TriggerDetectionPoint_vals), 0,
16521         "GPRS-CamelTDPData/gprs-TriggerDetectionPoint", HFILL }},
16522     { &hf_gsm_map_defaultSessionHandling,
16523       { "defaultSessionHandling", "gsm_map.defaultSessionHandling",
16524         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultGPRS_Handling_vals), 0,
16525         "GPRS-CamelTDPData/defaultSessionHandling", HFILL }},
16526     { &hf_gsm_map_LSADataList_item,
16527       { "Item", "gsm_map.LSADataList_item",
16528         FT_NONE, BASE_NONE, NULL, 0,
16529         "LSADataList/_item", HFILL }},
16530     { &hf_gsm_map_lsaIdentity,
16531       { "lsaIdentity", "gsm_map.lsaIdentity",
16532         FT_BYTES, BASE_HEX, NULL, 0,
16533         "LSAData/lsaIdentity", HFILL }},
16534     { &hf_gsm_map_lsaAttributes,
16535       { "lsaAttributes", "gsm_map.lsaAttributes",
16536         FT_BYTES, BASE_HEX, NULL, 0,
16537         "LSAData/lsaAttributes", HFILL }},
16538     { &hf_gsm_map_lsaActiveModeIndicator,
16539       { "lsaActiveModeIndicator", "gsm_map.lsaActiveModeIndicator",
16540         FT_NONE, BASE_NONE, NULL, 0,
16541         "LSAData/lsaActiveModeIndicator", HFILL }},
16542     { &hf_gsm_map_lsaOnlyAccessIndicator,
16543       { "lsaOnlyAccessIndicator", "gsm_map.lsaOnlyAccessIndicator",
16544         FT_UINT32, BASE_DEC, VALS(gsm_map_LSAOnlyAccessIndicator_vals), 0,
16545         "LSAInformation/lsaOnlyAccessIndicator", HFILL }},
16546     { &hf_gsm_map_lsaDataList,
16547       { "lsaDataList", "gsm_map.lsaDataList",
16548         FT_UINT32, BASE_DEC, NULL, 0,
16549         "LSAInformation/lsaDataList", HFILL }},
16550     { &hf_gsm_map_bearerServiceList,
16551       { "bearerServiceList", "gsm_map.bearerServiceList",
16552         FT_UINT32, BASE_DEC, NULL, 0,
16553         "InsertSubscriberDataRes/bearerServiceList", HFILL }},
16554     { &hf_gsm_map_ss_List,
16555       { "ss-List", "gsm_map.ss_List",
16556         FT_UINT32, BASE_DEC, NULL, 0,
16557         "", HFILL }},
16558     { &hf_gsm_map_odb_GeneralData,
16559       { "odb-GeneralData", "gsm_map.odb_GeneralData",
16560         FT_BYTES, BASE_HEX, NULL, 0,
16561         "", HFILL }},
16562     { &hf_gsm_map_regionalSubscriptionResponse,
16563       { "regionalSubscriptionResponse", "gsm_map.regionalSubscriptionResponse",
16564         FT_UINT32, BASE_DEC, VALS(gsm_map_RegionalSubscriptionResponse_vals), 0,
16565         "", HFILL }},
16566     { &hf_gsm_map_basicServiceList,
16567       { "basicServiceList", "gsm_map.basicServiceList",
16568         FT_UINT32, BASE_DEC, NULL, 0,
16569         "DeleteSubscriberDataArg/basicServiceList", HFILL }},
16570     { &hf_gsm_map_regionalSubscriptionIdentifier,
16571       { "regionalSubscriptionIdentifier", "gsm_map.regionalSubscriptionIdentifier",
16572         FT_BYTES, BASE_HEX, NULL, 0,
16573         "DeleteSubscriberDataArg/regionalSubscriptionIdentifier", HFILL }},
16574     { &hf_gsm_map_vbsGroupIndication,
16575       { "vbsGroupIndication", "gsm_map.vbsGroupIndication",
16576         FT_NONE, BASE_NONE, NULL, 0,
16577         "DeleteSubscriberDataArg/vbsGroupIndication", HFILL }},
16578     { &hf_gsm_map_vgcsGroupIndication,
16579       { "vgcsGroupIndication", "gsm_map.vgcsGroupIndication",
16580         FT_NONE, BASE_NONE, NULL, 0,
16581         "DeleteSubscriberDataArg/vgcsGroupIndication", HFILL }},
16582     { &hf_gsm_map_camelSubscriptionInfoWithdraw,
16583       { "camelSubscriptionInfoWithdraw", "gsm_map.camelSubscriptionInfoWithdraw",
16584         FT_NONE, BASE_NONE, NULL, 0,
16585         "DeleteSubscriberDataArg/camelSubscriptionInfoWithdraw", HFILL }},
16586     { &hf_gsm_map_gprsSubscriptionDataWithdraw,
16587       { "gprsSubscriptionDataWithdraw", "gsm_map.gprsSubscriptionDataWithdraw",
16588         FT_UINT32, BASE_DEC, VALS(gsm_map_GPRSSubscriptionDataWithdraw_vals), 0,
16589         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw", HFILL }},
16590     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature,
16591       { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsuppportedFeature",
16592         FT_NONE, BASE_NONE, NULL, 0,
16593         "DeleteSubscriberDataArg/roamingRestrictedInSgsnDueToUnsuppportedFeature", HFILL }},
16594     { &hf_gsm_map_lsaInformationWithdraw,
16595       { "lsaInformationWithdraw", "gsm_map.lsaInformationWithdraw",
16596         FT_UINT32, BASE_DEC, VALS(gsm_map_LSAInformationWithdraw_vals), 0,
16597         "DeleteSubscriberDataArg/lsaInformationWithdraw", HFILL }},
16598     { &hf_gsm_map_gmlc_ListWithdraw,
16599       { "gmlc-ListWithdraw", "gsm_map.gmlc_ListWithdraw",
16600         FT_NONE, BASE_NONE, NULL, 0,
16601         "DeleteSubscriberDataArg/gmlc-ListWithdraw", HFILL }},
16602     { &hf_gsm_map_istInformationWithdraw,
16603       { "istInformationWithdraw", "gsm_map.istInformationWithdraw",
16604         FT_NONE, BASE_NONE, NULL, 0,
16605         "", HFILL }},
16606     { &hf_gsm_map_specificCSI_Withdraw,
16607       { "specificCSI-Withdraw", "gsm_map.specificCSI_Withdraw",
16608         FT_BYTES, BASE_HEX, NULL, 0,
16609         "DeleteSubscriberDataArg/specificCSI-Withdraw", HFILL }},
16610     { &hf_gsm_map_chargingCharacteristicsWithdraw,
16611       { "chargingCharacteristicsWithdraw", "gsm_map.chargingCharacteristicsWithdraw",
16612         FT_NONE, BASE_NONE, NULL, 0,
16613         "DeleteSubscriberDataArg/chargingCharacteristicsWithdraw", HFILL }},
16614     { &hf_gsm_map_allGPRSData,
16615       { "allGPRSData", "gsm_map.allGPRSData",
16616         FT_NONE, BASE_NONE, NULL, 0,
16617         "GPRSSubscriptionDataWithdraw/allGPRSData", HFILL }},
16618     { &hf_gsm_map_contextIdList,
16619       { "contextIdList", "gsm_map.contextIdList",
16620         FT_UINT32, BASE_DEC, NULL, 0,
16621         "GPRSSubscriptionDataWithdraw/contextIdList", HFILL }},
16622     { &hf_gsm_map_ContextIdList_item,
16623       { "Item", "gsm_map.ContextIdList_item",
16624         FT_UINT32, BASE_DEC, NULL, 0,
16625         "ContextIdList/_item", HFILL }},
16626     { &hf_gsm_map_allLSAData,
16627       { "allLSAData", "gsm_map.allLSAData",
16628         FT_NONE, BASE_NONE, NULL, 0,
16629         "LSAInformationWithdraw/allLSAData", HFILL }},
16630     { &hf_gsm_map_lsaIdentityList,
16631       { "lsaIdentityList", "gsm_map.lsaIdentityList",
16632         FT_UINT32, BASE_DEC, NULL, 0,
16633         "LSAInformationWithdraw/lsaIdentityList", HFILL }},
16634     { &hf_gsm_map_LSAIdentityList_item,
16635       { "Item", "gsm_map.LSAIdentityList_item",
16636         FT_BYTES, BASE_HEX, NULL, 0,
16637         "LSAIdentityList/_item", HFILL }},
16638     { &hf_gsm_map_BasicServiceList_item,
16639       { "Item", "gsm_map.BasicServiceList_item",
16640         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16641         "BasicServiceList/_item", HFILL }},
16642     { &hf_gsm_map_o_CSI,
16643       { "o-CSI", "gsm_map.o_CSI",
16644         FT_NONE, BASE_NONE, NULL, 0,
16645         "", HFILL }},
16646     { &hf_gsm_map_ss_CSI,
16647       { "ss-CSI", "gsm_map.ss_CSI",
16648         FT_NONE, BASE_NONE, NULL, 0,
16649         "", HFILL }},
16650     { &hf_gsm_map_o_BcsmCamelTDP_CriteriaList,
16651       { "o-BcsmCamelTDP-CriteriaList", "gsm_map.o_BcsmCamelTDP_CriteriaList",
16652         FT_UINT32, BASE_DEC, NULL, 0,
16653         "", HFILL }},
16654     { &hf_gsm_map_tif_CSI,
16655       { "tif-CSI", "gsm_map.tif_CSI",
16656         FT_NONE, BASE_NONE, NULL, 0,
16657         "", HFILL }},
16658     { &hf_gsm_map_m_CSI,
16659       { "m-CSI", "gsm_map.m_CSI",
16660         FT_NONE, BASE_NONE, NULL, 0,
16661         "", HFILL }},
16662     { &hf_gsm_map_vt_CSI,
16663       { "vt-CSI", "gsm_map.vt_CSI",
16664         FT_NONE, BASE_NONE, NULL, 0,
16665         "", HFILL }},
16666     { &hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList,
16667       { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.t_BCSM_CAMEL_TDP_CriteriaList",
16668         FT_UINT32, BASE_DEC, NULL, 0,
16669         "", HFILL }},
16670     { &hf_gsm_map_d_CSI,
16671       { "d-CSI", "gsm_map.d_CSI",
16672         FT_NONE, BASE_NONE, NULL, 0,
16673         "", HFILL }},
16674     { &hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item,
16675       { "Item", "gsm_map.MT_smsCAMELTDP_CriteriaList_item",
16676         FT_NONE, BASE_NONE, NULL, 0,
16677         "MT-smsCAMELTDP-CriteriaList/_item", HFILL }},
16678     { &hf_gsm_map_sms_TriggerDetectionPoint,
16679       { "sms-TriggerDetectionPoint", "gsm_map.sms_TriggerDetectionPoint",
16680         FT_UINT32, BASE_DEC, VALS(gsm_map_SMS_TriggerDetectionPoint_vals), 0,
16681         "", HFILL }},
16682     { &hf_gsm_map_tpdu_TypeCriterion,
16683       { "tpdu-TypeCriterion", "gsm_map.tpdu_TypeCriterion",
16684         FT_UINT32, BASE_DEC, NULL, 0,
16685         "MT-smsCAMELTDP-Criteria/tpdu-TypeCriterion", HFILL }},
16686     { &hf_gsm_map_TPDU_TypeCriterion_item,
16687       { "Item", "gsm_map.TPDU_TypeCriterion_item",
16688         FT_UINT32, BASE_DEC, VALS(gsm_map_MT_SMS_TPDU_Type_vals), 0,
16689         "TPDU-TypeCriterion/_item", HFILL }},
16690     { &hf_gsm_map_dp_AnalysedInfoCriteriaList,
16691       { "dp-AnalysedInfoCriteriaList", "gsm_map.dp_AnalysedInfoCriteriaList",
16692         FT_UINT32, BASE_DEC, NULL, 0,
16693         "D-CSI/dp-AnalysedInfoCriteriaList", HFILL }},
16694     { &hf_gsm_map_DP_AnalysedInfoCriteriaList_item,
16695       { "Item", "gsm_map.DP_AnalysedInfoCriteriaList_item",
16696         FT_NONE, BASE_NONE, NULL, 0,
16697         "DP-AnalysedInfoCriteriaList/_item", HFILL }},
16698     { &hf_gsm_map_dialledNumber,
16699       { "dialledNumber", "gsm_map.dialledNumber",
16700         FT_BYTES, BASE_HEX, NULL, 0,
16701         "DP-AnalysedInfoCriterium/dialledNumber", HFILL }},
16702     { &hf_gsm_map_ss_CamelData,
16703       { "ss-CamelData", "gsm_map.ss_CamelData",
16704         FT_NONE, BASE_NONE, NULL, 0,
16705         "SS-CSI/ss-CamelData", HFILL }},
16706     { &hf_gsm_map_ss_EventList,
16707       { "ss-EventList", "gsm_map.ss_EventList",
16708         FT_UINT32, BASE_DEC, NULL, 0,
16709         "SS-CamelData/ss-EventList", HFILL }},
16710     { &hf_gsm_map_mobilityTriggers,
16711       { "mobilityTriggers", "gsm_map.mobilityTriggers",
16712         FT_UINT32, BASE_DEC, NULL, 0,
16713         "", HFILL }},
16714     { &hf_gsm_map_BearerServiceList_item,
16715       { "Item", "gsm_map.BearerServiceList_item",
16716         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
16717         "BearerServiceList/_item", HFILL }},
16718     { &hf_gsm_map_TeleserviceList_item,
16719       { "Item", "gsm_map.TeleserviceList_item",
16720         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16721         "TeleserviceList/_item", HFILL }},
16722     { &hf_gsm_map_Ext_SS_InfoList_item,
16723       { "Item", "gsm_map.Ext_SS_InfoList_item",
16724         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_SS_Info_vals), 0,
16725         "Ext-SS-InfoList/_item", HFILL }},
16726     { &hf_gsm_map_ext_forwardingInfo,
16727       { "forwardingInfo", "gsm_map.forwardingInfo",
16728         FT_NONE, BASE_NONE, NULL, 0,
16729         "Ext-SS-Info/forwardingInfo", HFILL }},
16730     { &hf_gsm_map_ext_callBarringInfo,
16731       { "callBarringInfo", "gsm_map.callBarringInfo",
16732         FT_NONE, BASE_NONE, NULL, 0,
16733         "Ext-SS-Info/callBarringInfo", HFILL }},
16734     { &hf_gsm_map_cug_Info,
16735       { "cug-Info", "gsm_map.cug_Info",
16736         FT_NONE, BASE_NONE, NULL, 0,
16737         "Ext-SS-Info/cug-Info", HFILL }},
16738     { &hf_gsm_map_ext_ss_Data,
16739       { "ss-Data", "gsm_map.ss_Data",
16740         FT_NONE, BASE_NONE, NULL, 0,
16741         "Ext-SS-Info/ss-Data", HFILL }},
16742     { &hf_gsm_map_emlpp_Info,
16743       { "emlpp-Info", "gsm_map.emlpp_Info",
16744         FT_NONE, BASE_NONE, NULL, 0,
16745         "Ext-SS-Info/emlpp-Info", HFILL }},
16746     { &hf_gsm_map_ss_Code,
16747       { "ss-Code", "gsm_map.ss_Code",
16748         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
16749         "", HFILL }},
16750     { &hf_gsm_map_ext_forwardingFeatureList,
16751       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
16752         FT_UINT32, BASE_DEC, NULL, 0,
16753         "", HFILL }},
16754     { &hf_gsm_map_Ext_ForwFeatureList_item,
16755       { "Item", "gsm_map.Ext_ForwFeatureList_item",
16756         FT_NONE, BASE_NONE, NULL, 0,
16757         "Ext-ForwFeatureList/_item", HFILL }},
16758     { &hf_gsm_map_ext_basicService,
16759       { "basicService", "gsm_map.basicService",
16760         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16761         "", HFILL }},
16762     { &hf_gsm_map_ext_ss_Status,
16763       { "ss-Status", "gsm_map.ss_Status",
16764         FT_BYTES, BASE_HEX, NULL, 0,
16765         "", HFILL }},
16766     { &hf_gsm_map_forwardedToNumber,
16767       { "forwardedToNumber", "gsm_map.forwardedToNumber",
16768         FT_BYTES, BASE_HEX, NULL, 0,
16769         "", HFILL }},
16770     { &hf_gsm_map_forwardedToSubaddress,
16771       { "forwardedToSubaddress", "gsm_map.forwardedToSubaddress",
16772         FT_BYTES, BASE_HEX, NULL, 0,
16773         "", HFILL }},
16774     { &hf_gsm_map_ext_forwardingOptions,
16775       { "forwardingOptions", "gsm_map.forwardingOptions",
16776         FT_BYTES, BASE_HEX, NULL, 0,
16777         "Ext-ForwFeature/forwardingOptions", HFILL }},
16778     { &hf_gsm_map_ext_noReplyConditionTime,
16779       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
16780         FT_UINT32, BASE_DEC, NULL, 0,
16781         "", HFILL }},
16782     { &hf_gsm_map_longForwardedToNumber,
16783       { "longForwardedToNumber", "gsm_map.longForwardedToNumber",
16784         FT_BYTES, BASE_HEX, NULL, 0,
16785         "", HFILL }},
16786     { &hf_gsm_map_ext_callBarringFeatureList,
16787       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
16788         FT_UINT32, BASE_DEC, NULL, 0,
16789         "", HFILL }},
16790     { &hf_gsm_map_Ext_CallBarFeatureList_item,
16791       { "Item", "gsm_map.Ext_CallBarFeatureList_item",
16792         FT_NONE, BASE_NONE, NULL, 0,
16793         "Ext-CallBarFeatureList/_item", HFILL }},
16794     { &hf_gsm_map_ZoneCodeList_item,
16795       { "Item", "gsm_map.ZoneCodeList_item",
16796         FT_BYTES, BASE_HEX, NULL, 0,
16797         "ZoneCodeList/_item", HFILL }},
16798     { &hf_gsm_map_maximumentitledPriority,
16799       { "maximumentitledPriority", "gsm_map.maximumentitledPriority",
16800         FT_UINT32, BASE_DEC, NULL, 0,
16801         "EMLPP-Info/maximumentitledPriority", HFILL }},
16802     { &hf_gsm_map_defaultPriority,
16803       { "defaultPriority", "gsm_map.defaultPriority",
16804         FT_UINT32, BASE_DEC, NULL, 0,
16805         "", HFILL }},
16806     { &hf_gsm_map_cug_SubscriptionList,
16807       { "cug-SubscriptionList", "gsm_map.cug_SubscriptionList",
16808         FT_UINT32, BASE_DEC, NULL, 0,
16809         "CUG-Info/cug-SubscriptionList", HFILL }},
16810     { &hf_gsm_map_cug_FeatureList,
16811       { "cug-FeatureList", "gsm_map.cug_FeatureList",
16812         FT_UINT32, BASE_DEC, NULL, 0,
16813         "CUG-Info/cug-FeatureList", HFILL }},
16814     { &hf_gsm_map_CUG_SubscriptionList_item,
16815       { "Item", "gsm_map.CUG_SubscriptionList_item",
16816         FT_NONE, BASE_NONE, NULL, 0,
16817         "CUG-SubscriptionList/_item", HFILL }},
16818     { &hf_gsm_map_cug_Index,
16819       { "cug-Index", "gsm_map.cug_Index",
16820         FT_UINT32, BASE_DEC, NULL, 0,
16821         "CUG-Subscription/cug-Index", HFILL }},
16822     { &hf_gsm_map_cug_Interlock,
16823       { "cug-Interlock", "gsm_map.cug_Interlock",
16824         FT_BYTES, BASE_HEX, NULL, 0,
16825         "", HFILL }},
16826     { &hf_gsm_map_intraCUG_Options,
16827       { "intraCUG-Options", "gsm_map.intraCUG_Options",
16828         FT_UINT32, BASE_DEC, VALS(gsm_map_IntraCUG_Options_vals), 0,
16829         "CUG-Subscription/intraCUG-Options", HFILL }},
16830     { &hf_gsm_map_basicServiceGroupList,
16831       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
16832         FT_UINT32, BASE_DEC, NULL, 0,
16833         "", HFILL }},
16834     { &hf_gsm_map_CUG_FeatureList_item,
16835       { "Item", "gsm_map.CUG_FeatureList_item",
16836         FT_NONE, BASE_NONE, NULL, 0,
16837         "CUG-FeatureList/_item", HFILL }},
16838     { &hf_gsm_map_Ext_BasicServiceGroupList_item,
16839       { "Item", "gsm_map.Ext_BasicServiceGroupList_item",
16840         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16841         "Ext-BasicServiceGroupList/_item", HFILL }},
16842     { &hf_gsm_map_preferentialCUG_Indicator,
16843       { "preferentialCUG-Indicator", "gsm_map.preferentialCUG_Indicator",
16844         FT_UINT32, BASE_DEC, NULL, 0,
16845         "CUG-Feature/preferentialCUG-Indicator", HFILL }},
16846     { &hf_gsm_map_interCUG_Restrictions,
16847       { "interCUG-Restrictions", "gsm_map.interCUG_Restrictions",
16848         FT_BYTES, BASE_HEX, NULL, 0,
16849         "CUG-Feature/interCUG-Restrictions", HFILL }},
16850     { &hf_gsm_map_ss_SubscriptionOption,
16851       { "ss-SubscriptionOption", "gsm_map.ss_SubscriptionOption",
16852         FT_UINT32, BASE_DEC, VALS(gsm_map_SS_SubscriptionOption_vals), 0,
16853         "", HFILL }},
16854     { &hf_gsm_map_LCS_PrivacyExceptionList_item,
16855       { "Item", "gsm_map.LCS_PrivacyExceptionList_item",
16856         FT_NONE, BASE_NONE, NULL, 0,
16857         "LCS-PrivacyExceptionList/_item", HFILL }},
16858     { &hf_gsm_map_notificationToMSUser,
16859       { "notificationToMSUser", "gsm_map.notificationToMSUser",
16860         FT_UINT32, BASE_DEC, VALS(gsm_map_NotificationToMSUser_vals), 0,
16861         "", HFILL }},
16862     { &hf_gsm_map_externalClientList,
16863       { "externalClientList", "gsm_map.externalClientList",
16864         FT_UINT32, BASE_DEC, NULL, 0,
16865         "LCS-PrivacyClass/externalClientList", HFILL }},
16866     { &hf_gsm_map_plmnClientList,
16867       { "plmnClientList", "gsm_map.plmnClientList",
16868         FT_UINT32, BASE_DEC, NULL, 0,
16869         "LCS-PrivacyClass/plmnClientList", HFILL }},
16870     { &hf_gsm_map_ext_externalClientList,
16871       { "ext-externalClientList", "gsm_map.ext_externalClientList",
16872         FT_UINT32, BASE_DEC, NULL, 0,
16873         "LCS-PrivacyClass/ext-externalClientList", HFILL }},
16874     { &hf_gsm_map_serviceTypeList,
16875       { "serviceTypeList", "gsm_map.serviceTypeList",
16876         FT_UINT32, BASE_DEC, NULL, 0,
16877         "LCS-PrivacyClass/serviceTypeList", HFILL }},
16878     { &hf_gsm_map_ExternalClientList_item,
16879       { "Item", "gsm_map.ExternalClientList_item",
16880         FT_NONE, BASE_NONE, NULL, 0,
16881         "ExternalClientList/_item", HFILL }},
16882     { &hf_gsm_map_PLMNClientList_item,
16883       { "Item", "gsm_map.PLMNClientList_item",
16884         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
16885         "PLMNClientList/_item", HFILL }},
16886     { &hf_gsm_map_Ext_ExternalClientList_item,
16887       { "Item", "gsm_map.Ext_ExternalClientList_item",
16888         FT_NONE, BASE_NONE, NULL, 0,
16889         "Ext-ExternalClientList/_item", HFILL }},
16890     { &hf_gsm_map_clientIdentity,
16891       { "clientIdentity", "gsm_map.clientIdentity",
16892         FT_NONE, BASE_NONE, NULL, 0,
16893         "ExternalClient/clientIdentity", HFILL }},
16894     { &hf_gsm_map_gmlc_Restriction,
16895       { "gmlc-Restriction", "gsm_map.gmlc_Restriction",
16896         FT_UINT32, BASE_DEC, VALS(gsm_map_GMLC_Restriction_vals), 0,
16897         "", HFILL }},
16898     { &hf_gsm_map_ServiceTypeList_item,
16899       { "Item", "gsm_map.ServiceTypeList_item",
16900         FT_NONE, BASE_NONE, NULL, 0,
16901         "ServiceTypeList/_item", HFILL }},
16902     { &hf_gsm_map_serviceTypeIdentity,
16903       { "serviceTypeIdentity", "gsm_map.serviceTypeIdentity",
16904         FT_UINT32, BASE_DEC, NULL, 0,
16905         "ServiceType/serviceTypeIdentity", HFILL }},
16906     { &hf_gsm_map_MOLR_List_item,
16907       { "Item", "gsm_map.MOLR_List_item",
16908         FT_NONE, BASE_NONE, NULL, 0,
16909         "MOLR-List/_item", HFILL }},
16910     { &hf_gsm_map_CallBarringFeatureList_item,
16911       { "Item", "gsm_map.CallBarringFeatureList_item",
16912         FT_NONE, BASE_NONE, NULL, 0,
16913         "CallBarringFeatureList/_item", HFILL }},
16914     { &hf_gsm_map_basicService,
16915       { "basicService", "gsm_map.basicService",
16916         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
16917         "", HFILL }},
16918     { &hf_gsm_map_ss_Status,
16919       { "ss-Status", "gsm_map.ss_Status",
16920         FT_BYTES, BASE_HEX, NULL, 0,
16921         "", HFILL }},
16922     { &hf_gsm_map_ForwardingFeatureList_item,
16923       { "Item", "gsm_map.ForwardingFeatureList_item",
16924         FT_NONE, BASE_NONE, NULL, 0,
16925         "ForwardingFeatureList/_item", HFILL }},
16926     { &hf_gsm_map_forwardingOptions,
16927       { "forwardingOptions", "gsm_map.forwardingOptions",
16928         FT_BYTES, BASE_HEX, NULL, 0,
16929         "", HFILL }},
16930     { &hf_gsm_map_noReplyConditionTime,
16931       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
16932         FT_UINT32, BASE_DEC, NULL, 0,
16933         "", HFILL }},
16934     { &hf_gsm_map_matchType,
16935       { "matchType", "gsm_map.matchType",
16936         FT_UINT32, BASE_DEC, VALS(gsm_map_MatchType_vals), 0,
16937         "DestinationNumberCriteria/matchType", HFILL }},
16938     { &hf_gsm_map_destinationNumberList,
16939       { "destinationNumberList", "gsm_map.destinationNumberList",
16940         FT_UINT32, BASE_DEC, NULL, 0,
16941         "DestinationNumberCriteria/destinationNumberList", HFILL }},
16942     { &hf_gsm_map_destinationNumberLengthList,
16943       { "destinationNumberLengthList", "gsm_map.destinationNumberLengthList",
16944         FT_UINT32, BASE_DEC, NULL, 0,
16945         "DestinationNumberCriteria/destinationNumberLengthList", HFILL }},
16946     { &hf_gsm_map_DestinationNumberList_item,
16947       { "Item", "gsm_map.DestinationNumberList_item",
16948         FT_BYTES, BASE_HEX, NULL, 0,
16949         "DestinationNumberList/_item", HFILL }},
16950     { &hf_gsm_map_DestinationNumberLengthList_item,
16951       { "Item", "gsm_map.DestinationNumberLengthList_item",
16952         FT_UINT32, BASE_DEC, NULL, 0,
16953         "DestinationNumberLengthList/_item", HFILL }},
16954     { &hf_gsm_map_forwardingFeatureList,
16955       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
16956         FT_UINT32, BASE_DEC, NULL, 0,
16957         "", HFILL }},
16958     { &hf_gsm_map_callBarringFeatureList,
16959       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
16960         FT_UINT32, BASE_DEC, NULL, 0,
16961         "CallBarringInfo/callBarringFeatureList", HFILL }},
16962     { &hf_gsm_map_nbrSB,
16963       { "nbrSB", "gsm_map.nbrSB",
16964         FT_UINT32, BASE_DEC, NULL, 0,
16965         "", HFILL }},
16966     { &hf_gsm_map_nbrUser,
16967       { "nbrUser", "gsm_map.nbrUser",
16968         FT_UINT32, BASE_DEC, NULL, 0,
16969         "", HFILL }},
16970     { &hf_gsm_map_hlr_List,
16971       { "hlr-List", "gsm_map.hlr_List",
16972         FT_UINT32, BASE_DEC, NULL, 0,
16973         "ResetArg/hlr-List", HFILL }},
16974     { &hf_gsm_map_msNotReachable,
16975       { "msNotReachable", "gsm_map.msNotReachable",
16976         FT_NONE, BASE_NONE, NULL, 0,
16977         "RestoreDataRes/msNotReachable", HFILL }},
16978     { &hf_gsm_map_VBSDataList_item,
16979       { "Item", "gsm_map.VBSDataList_item",
16980         FT_NONE, BASE_NONE, NULL, 0,
16981         "VBSDataList/_item", HFILL }},
16982     { &hf_gsm_map_VGCSDataList_item,
16983       { "Item", "gsm_map.VGCSDataList_item",
16984         FT_NONE, BASE_NONE, NULL, 0,
16985         "VGCSDataList/_item", HFILL }},
16986     { &hf_gsm_map_groupId,
16987       { "groupId", "gsm_map.groupId",
16988         FT_BYTES, BASE_HEX, NULL, 0,
16989         "VoiceGroupCallData/groupId", HFILL }},
16990     { &hf_gsm_map_groupid,
16991       { "groupid", "gsm_map.groupid",
16992         FT_BYTES, BASE_HEX, NULL, 0,
16993         "VoiceBroadcastData/groupid", HFILL }},
16994     { &hf_gsm_map_broadcastInitEntitlement,
16995       { "broadcastInitEntitlement", "gsm_map.broadcastInitEntitlement",
16996         FT_NONE, BASE_NONE, NULL, 0,
16997         "VoiceBroadcastData/broadcastInitEntitlement", HFILL }},
16998     { &hf_gsm_map_traceReference,
16999       { "traceReference", "gsm_map.traceReference",
17000         FT_BYTES, BASE_HEX, NULL, 0,
17001         "", HFILL }},
17002     { &hf_gsm_map_traceType,
17003       { "traceType", "gsm_map.traceType",
17004         FT_UINT32, BASE_DEC, NULL, 0,
17005         "ActivateTraceModeArg/traceType", HFILL }},
17006     { &hf_gsm_map_omc_Id,
17007       { "omc-Id", "gsm_map.omc_Id",
17008         FT_BYTES, BASE_HEX, NULL, 0,
17009         "ActivateTraceModeArg/omc-Id", HFILL }},
17010     { &hf_gsm_map_cug_CheckInfo,
17011       { "cug-CheckInfo", "gsm_map.cug_CheckInfo",
17012         FT_NONE, BASE_NONE, NULL, 0,
17013         "", HFILL }},
17014     { &hf_gsm_map_numberOfForwarding,
17015       { "numberOfForwarding", "gsm_map.numberOfForwarding",
17016         FT_UINT32, BASE_DEC, NULL, 0,
17017         "SendRoutingInfoArg/numberOfForwarding", HFILL }},
17018     { &hf_gsm_map_interrogationType,
17019       { "interrogationType", "gsm_map.interrogationType",
17020         FT_UINT32, BASE_DEC, VALS(gsm_map_InterrogationType_vals), 0,
17021         "SendRoutingInfoArg/interrogationType", HFILL }},
17022     { &hf_gsm_map_or_Interrogation,
17023       { "or-Interrogation", "gsm_map.or_Interrogation",
17024         FT_NONE, BASE_NONE, NULL, 0,
17025         "", HFILL }},
17026     { &hf_gsm_map_or_Capability,
17027       { "or-Capability", "gsm_map.or_Capability",
17028         FT_UINT32, BASE_DEC, NULL, 0,
17029         "SendRoutingInfoArg/or-Capability", HFILL }},
17030     { &hf_gsm_map_gmsc_OrGsmSCF_Address,
17031       { "gmsc-OrGsmSCF-Address", "gsm_map.gmsc_OrGsmSCF_Address",
17032         FT_BYTES, BASE_HEX, NULL, 0,
17033         "SendRoutingInfoArg/gmsc-OrGsmSCF-Address", HFILL }},
17034     { &hf_gsm_map_callReferenceNumber,
17035       { "callReferenceNumber", "gsm_map.callReferenceNumber",
17036         FT_BYTES, BASE_HEX, NULL, 0,
17037         "", HFILL }},
17038     { &hf_gsm_map_forwardingReason,
17039       { "forwardingReason", "gsm_map.forwardingReason",
17040         FT_UINT32, BASE_DEC, VALS(gsm_map_ForwardingReason_vals), 0,
17041         "SendRoutingInfoArg/forwardingReason", HFILL }},
17042     { &hf_gsm_map_ext_basicServiceGroup,
17043       { "basicServiceGroup", "gsm_map.basicServiceGroup",
17044         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17045         "", HFILL }},
17046     { &hf_gsm_map_networkSignalInfo,
17047       { "networkSignalInfo", "gsm_map.networkSignalInfo",
17048         FT_NONE, BASE_NONE, NULL, 0,
17049         "", HFILL }},
17050     { &hf_gsm_map_camelInfo,
17051       { "camelInfo", "gsm_map.camelInfo",
17052         FT_NONE, BASE_NONE, NULL, 0,
17053         "SendRoutingInfoArg/camelInfo", HFILL }},
17054     { &hf_gsm_map_suppressionOfAnnouncement,
17055       { "suppressionOfAnnouncement", "gsm_map.suppressionOfAnnouncement",
17056         FT_NONE, BASE_NONE, NULL, 0,
17057         "", HFILL }},
17058     { &hf_gsm_map_alertingPattern,
17059       { "alertingPattern", "gsm_map.alertingPattern",
17060         FT_BYTES, BASE_HEX, NULL, 0,
17061         "", HFILL }},
17062     { &hf_gsm_map_ccbs_Call,
17063       { "ccbs-Call", "gsm_map.ccbs_Call",
17064         FT_NONE, BASE_NONE, NULL, 0,
17065         "", HFILL }},
17066     { &hf_gsm_map_supportedCCBS_Phase,
17067       { "supportedCCBS-Phase", "gsm_map.supportedCCBS_Phase",
17068         FT_UINT32, BASE_DEC, NULL, 0,
17069         "SendRoutingInfoArg/supportedCCBS-Phase", HFILL }},
17070     { &hf_gsm_map_additionalSignalInfo,
17071       { "additionalSignalInfo", "gsm_map.additionalSignalInfo",
17072         FT_NONE, BASE_NONE, NULL, 0,
17073         "", HFILL }},
17074     { &hf_gsm_map_pre_pagingSupported,
17075       { "pre-pagingSupported", "gsm_map.pre_pagingSupported",
17076         FT_NONE, BASE_NONE, NULL, 0,
17077         "", HFILL }},
17078     { &hf_gsm_map_callDiversionTreatmentIndicator,
17079       { "callDiversionTreatmentIndicator", "gsm_map.callDiversionTreatmentIndicator",
17080         FT_BYTES, BASE_HEX, NULL, 0,
17081         "SendRoutingInfoArg/callDiversionTreatmentIndicator", HFILL }},
17082     { &hf_gsm_map_suppress_VT_CSI,
17083       { "suppress-VT-CSI", "gsm_map.suppress_VT_CSI",
17084         FT_NONE, BASE_NONE, NULL, 0,
17085         "", HFILL }},
17086     { &hf_gsm_map_suppressIncomingCallBarring,
17087       { "suppressIncomingCallBarring", "gsm_map.suppressIncomingCallBarring",
17088         FT_NONE, BASE_NONE, NULL, 0,
17089         "SendRoutingInfoArg/suppressIncomingCallBarring", HFILL }},
17090     { &hf_gsm_map_gsmSCF_InitiatedCall,
17091       { "gsmSCF-InitiatedCall", "gsm_map.gsmSCF_InitiatedCall",
17092         FT_NONE, BASE_NONE, NULL, 0,
17093         "SendRoutingInfoArg/gsmSCF-InitiatedCall", HFILL }},
17094     { &hf_gsm_map_basicServiceGroup2,
17095       { "basicServiceGroup2", "gsm_map.basicServiceGroup2",
17096         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17097         "", HFILL }},
17098     { &hf_gsm_map_networkSignalInfo2,
17099       { "networkSignalInfo2", "gsm_map.networkSignalInfo2",
17100         FT_NONE, BASE_NONE, NULL, 0,
17101         "SendRoutingInfoArg/networkSignalInfo2", HFILL }},
17102     { &hf_gsm_map_extendedRoutingInfo,
17103       { "extendedRoutingInfo", "gsm_map.extendedRoutingInfo",
17104         FT_UINT32, BASE_DEC, VALS(gsm_map_ExtendedRoutingInfo_vals), 0,
17105         "SendRoutingInfoRes/extendedRoutingInfo", HFILL }},
17106     { &hf_gsm_map_cugSubscriptionFlag,
17107       { "cugSubscriptionFlag", "gsm_map.cugSubscriptionFlag",
17108         FT_NONE, BASE_NONE, NULL, 0,
17109         "SendRoutingInfoRes/cugSubscriptionFlag", HFILL }},
17110     { &hf_gsm_map_subscriberInfo,
17111       { "subscriberInfo", "gsm_map.subscriberInfo",
17112         FT_NONE, BASE_NONE, NULL, 0,
17113         "", HFILL }},
17114     { &hf_gsm_map_forwardingInterrogationRequired,
17115       { "forwardingInterrogationRequired", "gsm_map.forwardingInterrogationRequired",
17116         FT_NONE, BASE_NONE, NULL, 0,
17117         "SendRoutingInfoRes/forwardingInterrogationRequired", HFILL }},
17118     { &hf_gsm_map_vmsc_Address,
17119       { "vmsc-Address", "gsm_map.vmsc_Address",
17120         FT_BYTES, BASE_HEX, NULL, 0,
17121         "SendRoutingInfoRes/vmsc-Address", HFILL }},
17122     { &hf_gsm_map_ccbs_Indicators,
17123       { "ccbs-Indicators", "gsm_map.ccbs_Indicators",
17124         FT_NONE, BASE_NONE, NULL, 0,
17125         "SendRoutingInfoRes/ccbs-Indicators", HFILL }},
17126     { &hf_gsm_map_numberPortabilityStatus,
17127       { "numberPortabilityStatus", "gsm_map.numberPortabilityStatus",
17128         FT_UINT32, BASE_DEC, VALS(gsm_map_NumberPortabilityStatus_vals), 0,
17129         "", HFILL }},
17130     { &hf_gsm_map_supportedCamelPhasesInVMSC,
17131       { "supportedCamelPhasesInVMSC", "gsm_map.supportedCamelPhasesInVMSC",
17132         FT_BYTES, BASE_HEX, NULL, 0,
17133         "SendRoutingInfoRes/supportedCamelPhasesInVMSC", HFILL }},
17134     { &hf_gsm_map_offeredCamel4CSIsInVMSC,
17135       { "offeredCamel4CSIsInVMSC", "gsm_map.offeredCamel4CSIsInVMSC",
17136         FT_BYTES, BASE_HEX, NULL, 0,
17137         "SendRoutingInfoRes/offeredCamel4CSIsInVMSC", HFILL }},
17138     { &hf_gsm_map_routingInfo2,
17139       { "routingInfo2", "gsm_map.routingInfo2",
17140         FT_UINT32, BASE_DEC, VALS(gsm_map_RoutingInfo_vals), 0,
17141         "SendRoutingInfoRes/routingInfo2", HFILL }},
17142     { &hf_gsm_map_ss_List2,
17143       { "ss-List2", "gsm_map.ss_List2",
17144         FT_UINT32, BASE_DEC, NULL, 0,
17145         "SendRoutingInfoRes/ss-List2", HFILL }},
17146     { &hf_gsm_map_basicService2,
17147       { "basicService2", "gsm_map.basicService2",
17148         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17149         "SendRoutingInfoRes/basicService2", HFILL }},
17150     { &hf_gsm_map_allowedServices,
17151       { "allowedServices", "gsm_map.allowedServices",
17152         FT_BYTES, BASE_HEX, NULL, 0,
17153         "SendRoutingInfoRes/allowedServices", HFILL }},
17154     { &hf_gsm_map_unavailabilityCause,
17155       { "unavailabilityCause", "gsm_map.unavailabilityCause",
17156         FT_UINT32, BASE_DEC, VALS(gsm_map_UnavailabilityCause_vals), 0,
17157         "SendRoutingInfoRes/unavailabilityCause", HFILL }},
17158     { &hf_gsm_map_releaseResourcesSupported,
17159       { "releaseResourcesSupported", "gsm_map.releaseResourcesSupported",
17160         FT_NONE, BASE_NONE, NULL, 0,
17161         "", HFILL }},
17162     { &hf_gsm_map_ext_ProtocolId,
17163       { "ext-ProtocolId", "gsm_map.ext_ProtocolId",
17164         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_ProtocolId_vals), 0,
17165         "Ext-ExternalSignalInfo/ext-ProtocolId", HFILL }},
17166     { &hf_gsm_map_accessNetworkProtocolId,
17167       { "accessNetworkProtocolId", "gsm_map.accessNetworkProtocolId",
17168         FT_UINT32, BASE_DEC, VALS(gsm_map_AccessNetworkProtocolId_vals), 0,
17169         "AccessNetworkSignalInfo/accessNetworkProtocolId", HFILL }},
17170     { &hf_gsm_map_longsignalInfo,
17171       { "signalInfo", "gsm_map.signalInfo",
17172         FT_BYTES, BASE_HEX, NULL, 0,
17173         "AccessNetworkSignalInfo/signalInfo", HFILL }},
17174     { &hf_gsm_map_suppress_T_CSI,
17175       { "suppress-T-CSI", "gsm_map.suppress_T_CSI",
17176         FT_NONE, BASE_NONE, NULL, 0,
17177         "CamelInfo/suppress-T-CSI", HFILL }},
17178     { &hf_gsm_map_HLR_List_item,
17179       { "Item", "gsm_map.HLR_List_item",
17180         FT_BYTES, BASE_HEX, NULL, 0,
17181         "HLR-List/_item", HFILL }},
17182     { &hf_gsm_map_SS_List_item,
17183       { "Item", "gsm_map.SS_List_item",
17184         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
17185         "SS-List/_item", HFILL }},
17186     { &hf_gsm_map_naea_PreferredCIC,
17187       { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC",
17188         FT_BYTES, BASE_HEX, NULL, 0,
17189         "NAEA-PreferredCI/naea-PreferredCIC", HFILL }},
17190     { &hf_gsm_map_externalAddress,
17191       { "externalAddress", "gsm_map.externalAddress",
17192         FT_BYTES, BASE_HEX, NULL, 0,
17193         "LCSClientExternalID/externalAddress", HFILL }},
17194     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength,
17195       { "cellGlobalIdOrServiceAreaIdFixedLength", "gsm_map.cellGlobalIdOrServiceAreaIdFixedLength",
17196         FT_BYTES, BASE_HEX, NULL, 0,
17197         "CellGlobalIdOrServiceAreaIdOrLAI/cellGlobalIdOrServiceAreaIdFixedLength", HFILL }},
17198     { &hf_gsm_map_laiFixedLength,
17199       { "laiFixedLength", "gsm_map.laiFixedLength",
17200         FT_BYTES, BASE_HEX, NULL, 0,
17201         "CellGlobalIdOrServiceAreaIdOrLAI/laiFixedLength", HFILL }},
17202     { &hf_gsm_map_ccbs_Possible,
17203       { "ccbs-Possible", "gsm_map.ccbs_Possible",
17204         FT_NONE, BASE_NONE, NULL, 0,
17205         "", HFILL }},
17206     { &hf_gsm_map_keepCCBS_CallIndicator,
17207       { "keepCCBS-CallIndicator", "gsm_map.keepCCBS_CallIndicator",
17208         FT_NONE, BASE_NONE, NULL, 0,
17209         "CCBS-Indicators/keepCCBS-CallIndicator", HFILL }},
17210     { &hf_gsm_map_roamingNumber,
17211       { "roamingNumber", "gsm_map.roamingNumber",
17212         FT_BYTES, BASE_HEX, NULL, 0,
17213         "", HFILL }},
17214     { &hf_gsm_map_forwardingData,
17215       { "forwardingData", "gsm_map.forwardingData",
17216         FT_NONE, BASE_NONE, NULL, 0,
17217         "", HFILL }},
17218     { &hf_gsm_map_routingInfo,
17219       { "routingInfo", "gsm_map.routingInfo",
17220         FT_UINT32, BASE_DEC, VALS(gsm_map_RoutingInfo_vals), 0,
17221         "ExtendedRoutingInfo/routingInfo", HFILL }},
17222     { &hf_gsm_map_camelRoutingInfo,
17223       { "camelRoutingInfo", "gsm_map.camelRoutingInfo",
17224         FT_NONE, BASE_NONE, NULL, 0,
17225         "ExtendedRoutingInfo/camelRoutingInfo", HFILL }},
17226     { &hf_gsm_map_gmscCamelSubscriptionInfo,
17227       { "gmscCamelSubscriptionInfo", "gsm_map.gmscCamelSubscriptionInfo",
17228         FT_NONE, BASE_NONE, NULL, 0,
17229         "CamelRoutingInfo/gmscCamelSubscriptionInfo", HFILL }},
17230     { &hf_gsm_map_t_CSI,
17231       { "t-CSI", "gsm_map.t_CSI",
17232         FT_NONE, BASE_NONE, NULL, 0,
17233         "", HFILL }},
17234     { &hf_gsm_map_d_csi,
17235       { "d-csi", "gsm_map.d_csi",
17236         FT_NONE, BASE_NONE, NULL, 0,
17237         "", HFILL }},
17238     { &hf_gsm_map_ageOfLocationInformation,
17239       { "ageOfLocationInformation", "gsm_map.ageOfLocationInformation",
17240         FT_UINT32, BASE_DEC, NULL, 0,
17241         "", HFILL }},
17242     { &hf_gsm_map_geographicalInformation,
17243       { "geographicalInformation", "gsm_map.geographicalInformation",
17244         FT_BYTES, BASE_HEX, NULL, 0,
17245         "", HFILL }},
17246     { &hf_gsm_map_vlr_number,
17247       { "vlr-number", "gsm_map.vlr_number",
17248         FT_BYTES, BASE_HEX, NULL, 0,
17249         "LocationInformation/vlr-number", HFILL }},
17250     { &hf_gsm_map_locationNumber,
17251       { "locationNumber", "gsm_map.locationNumber",
17252         FT_BYTES, BASE_HEX, NULL, 0,
17253         "LocationInformation/locationNumber", HFILL }},
17254     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI,
17255       { "cellGlobalIdOrServiceAreaIdOrLAI", "gsm_map.cellGlobalIdOrServiceAreaIdOrLAI",
17256         FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
17257         "", HFILL }},
17258     { &hf_gsm_map_selectedLSA_Id,
17259       { "selectedLSA-Id", "gsm_map.selectedLSA_Id",
17260         FT_BYTES, BASE_HEX, NULL, 0,
17261         "LocationInformation/selectedLSA-Id", HFILL }},
17262     { &hf_gsm_map_geodeticInformation,
17263       { "geodeticInformation", "gsm_map.geodeticInformation",
17264         FT_BYTES, BASE_HEX, NULL, 0,
17265         "", HFILL }},
17266     { &hf_gsm_map_currentLocationRetrieved,
17267       { "currentLocationRetrieved", "gsm_map.currentLocationRetrieved",
17268         FT_NONE, BASE_NONE, NULL, 0,
17269         "", HFILL }},
17270     { &hf_gsm_map_sai_Present,
17271       { "sai-Present", "gsm_map.sai_Present",
17272         FT_NONE, BASE_NONE, NULL, 0,
17273         "", HFILL }},
17274     { &hf_gsm_map_routeingAreaIdentity,
17275       { "routeingAreaIdentity", "gsm_map.routeingAreaIdentity",
17276         FT_BYTES, BASE_HEX, NULL, 0,
17277         "LocationInformationGPRS/routeingAreaIdentity", HFILL }},
17278     { &hf_gsm_map_selectedLSAIdentity,
17279       { "selectedLSAIdentity", "gsm_map.selectedLSAIdentity",
17280         FT_BYTES, BASE_HEX, NULL, 0,
17281         "LocationInformationGPRS/selectedLSAIdentity", HFILL }},
17282     { &hf_gsm_map_assumedIdle,
17283       { "assumedIdle", "gsm_map.assumedIdle",
17284         FT_NONE, BASE_NONE, NULL, 0,
17285         "SubscriberState/assumedIdle", HFILL }},
17286     { &hf_gsm_map_camelBusy,
17287       { "camelBusy", "gsm_map.camelBusy",
17288         FT_NONE, BASE_NONE, NULL, 0,
17289         "SubscriberState/camelBusy", HFILL }},
17290     { &hf_gsm_map_notProvidedFromVLR,
17291       { "notProvidedFromVLR", "gsm_map.notProvidedFromVLR",
17292         FT_NONE, BASE_NONE, NULL, 0,
17293         "SubscriberState/notProvidedFromVLR", HFILL }},
17294     { &hf_gsm_map_notProvidedFromSGSN,
17295       { "notProvidedFromSGSN", "gsm_map.notProvidedFromSGSN",
17296         FT_NONE, BASE_NONE, NULL, 0,
17297         "PS-SubscriberState/notProvidedFromSGSN", HFILL }},
17298     { &hf_gsm_map_ps_Detached,
17299       { "ps-Detached", "gsm_map.ps_Detached",
17300         FT_NONE, BASE_NONE, NULL, 0,
17301         "PS-SubscriberState/ps-Detached", HFILL }},
17302     { &hf_gsm_map_ps_AttachedNotReachableForPaging,
17303       { "ps-AttachedNotReachableForPaging", "gsm_map.ps_AttachedNotReachableForPaging",
17304         FT_NONE, BASE_NONE, NULL, 0,
17305         "PS-SubscriberState/ps-AttachedNotReachableForPaging", HFILL }},
17306     { &hf_gsm_map_ps_AttachedReachableForPaging,
17307       { "ps-AttachedReachableForPaging", "gsm_map.ps_AttachedReachableForPaging",
17308         FT_NONE, BASE_NONE, NULL, 0,
17309         "PS-SubscriberState/ps-AttachedReachableForPaging", HFILL }},
17310     { &hf_gsm_map_ps_PDP_ActiveNotReachableForPaging,
17311       { "ps-PDP-ActiveNotReachableForPaging", "gsm_map.ps_PDP_ActiveNotReachableForPaging",
17312         FT_UINT32, BASE_DEC, NULL, 0,
17313         "PS-SubscriberState/ps-PDP-ActiveNotReachableForPaging", HFILL }},
17314     { &hf_gsm_map_ps_PDP_ActiveReachableForPaging,
17315       { "ps-PDP-ActiveReachableForPaging", "gsm_map.ps_PDP_ActiveReachableForPaging",
17316         FT_UINT32, BASE_DEC, NULL, 0,
17317         "PS-SubscriberState/ps-PDP-ActiveReachableForPaging", HFILL }},
17318     { &hf_gsm_map_netDetNotReachable,
17319       { "netDetNotReachable", "gsm_map.netDetNotReachable",
17320         FT_UINT32, BASE_DEC, VALS(gsm_map_NotReachableReason_vals), 0,
17321         "PS-SubscriberState/netDetNotReachable", HFILL }},
17322     { &hf_gsm_map_PDP_ContextInfoList_item,
17323       { "Item", "gsm_map.PDP_ContextInfoList_item",
17324         FT_NONE, BASE_NONE, NULL, 0,
17325         "PDP-ContextInfoList/_item", HFILL }},
17326     { &hf_gsm_map_pdp_ContextIdentifier,
17327       { "pdp-ContextIdentifier", "gsm_map.pdp_ContextIdentifier",
17328         FT_UINT32, BASE_DEC, NULL, 0,
17329         "PDP-ContextInfo/pdp-ContextIdentifier", HFILL }},
17330     { &hf_gsm_map_pdp_ContextActive,
17331       { "pdp-ContextActive", "gsm_map.pdp_ContextActive",
17332         FT_NONE, BASE_NONE, NULL, 0,
17333         "PDP-ContextInfo/pdp-ContextActive", HFILL }},
17334     { &hf_gsm_map_apn_Subscribed,
17335       { "apn-Subscribed", "gsm_map.apn_Subscribed",
17336         FT_BYTES, BASE_HEX, NULL, 0,
17337         "PDP-ContextInfo/apn-Subscribed", HFILL }},
17338     { &hf_gsm_map_apn_InUse,
17339       { "apn-InUse", "gsm_map.apn_InUse",
17340         FT_BYTES, BASE_HEX, NULL, 0,
17341         "PDP-ContextInfo/apn-InUse", HFILL }},
17342     { &hf_gsm_map_nsapi,
17343       { "nsapi", "gsm_map.nsapi",
17344         FT_UINT32, BASE_DEC, NULL, 0,
17345         "PDP-ContextInfo/nsapi", HFILL }},
17346     { &hf_gsm_map_transactionId,
17347       { "transactionId", "gsm_map.transactionId",
17348         FT_BYTES, BASE_HEX, NULL, 0,
17349         "PDP-ContextInfo/transactionId", HFILL }},
17350     { &hf_gsm_map_teid_ForGnAndGp,
17351       { "teid-ForGnAndGp", "gsm_map.teid_ForGnAndGp",
17352         FT_BYTES, BASE_HEX, NULL, 0,
17353         "PDP-ContextInfo/teid-ForGnAndGp", HFILL }},
17354     { &hf_gsm_map_teid_ForIu,
17355       { "teid-ForIu", "gsm_map.teid_ForIu",
17356         FT_BYTES, BASE_HEX, NULL, 0,
17357         "PDP-ContextInfo/teid-ForIu", HFILL }},
17358     { &hf_gsm_map_ggsn_Address,
17359       { "ggsn-Address", "gsm_map.ggsn_Address",
17360         FT_BYTES, BASE_HEX, NULL, 0,
17361         "", HFILL }},
17362     { &hf_gsm_map_ext_qos_Subscribed,
17363       { "qos-Subscribed", "gsm_map.qos_Subscribed",
17364         FT_BYTES, BASE_HEX, NULL, 0,
17365         "PDP-ContextInfo/qos-Subscribed", HFILL }},
17366     { &hf_gsm_map_qos_Requested,
17367       { "qos-Requested", "gsm_map.qos_Requested",
17368         FT_BYTES, BASE_HEX, NULL, 0,
17369         "PDP-ContextInfo/qos-Requested", HFILL }},
17370     { &hf_gsm_map_qos_Negotiated,
17371       { "qos-Negotiated", "gsm_map.qos_Negotiated",
17372         FT_BYTES, BASE_HEX, NULL, 0,
17373         "PDP-ContextInfo/qos-Negotiated", HFILL }},
17374     { &hf_gsm_map_chargingId,
17375       { "chargingId", "gsm_map.chargingId",
17376         FT_BYTES, BASE_HEX, NULL, 0,
17377         "PDP-ContextInfo/chargingId", HFILL }},
17378     { &hf_gsm_map_rnc_Address,
17379       { "rnc-Address", "gsm_map.rnc_Address",
17380         FT_BYTES, BASE_HEX, NULL, 0,
17381         "PDP-ContextInfo/rnc-Address", HFILL }},
17382     { &hf_gsm_map_qos2_Subscribed,
17383       { "qos2-Subscribed", "gsm_map.qos2_Subscribed",
17384         FT_BYTES, BASE_HEX, NULL, 0,
17385         "PDP-ContextInfo/qos2-Subscribed", HFILL }},
17386     { &hf_gsm_map_qos2_Requested,
17387       { "qos2-Requested", "gsm_map.qos2_Requested",
17388         FT_BYTES, BASE_HEX, NULL, 0,
17389         "PDP-ContextInfo/qos2-Requested", HFILL }},
17390     { &hf_gsm_map_qos2_Negotiated,
17391       { "qos2-Negotiated", "gsm_map.qos2_Negotiated",
17392         FT_BYTES, BASE_HEX, NULL, 0,
17393         "PDP-ContextInfo/qos2-Negotiated", HFILL }},
17394     { &hf_gsm_map_cug_OutgoingAccess,
17395       { "cug-OutgoingAccess", "gsm_map.cug_OutgoingAccess",
17396         FT_NONE, BASE_NONE, NULL, 0,
17397         "CUG-CheckInfo/cug-OutgoingAccess", HFILL }},
17398     { &hf_gsm_map_gsm_BearerCapability,
17399       { "gsm-BearerCapability", "gsm_map.gsm_BearerCapability",
17400         FT_NONE, BASE_NONE, NULL, 0,
17401         "", HFILL }},
17402     { &hf_gsm_map_gmsc_Address,
17403       { "gmsc-Address", "gsm_map.gmsc_Address",
17404         FT_BYTES, BASE_HEX, NULL, 0,
17405         "ProvideRoamingNumberArg/gmsc-Address", HFILL }},
17406     { &hf_gsm_map_supportedCamelPhasesInInterrogatingNode,
17407       { "supportedCamelPhasesInInterrogatingNode", "gsm_map.supportedCamelPhasesInInterrogatingNode",
17408         FT_BYTES, BASE_HEX, NULL, 0,
17409         "ProvideRoamingNumberArg/supportedCamelPhasesInInterrogatingNode", HFILL }},
17410     { &hf_gsm_map_orNotSupportedInGMSC,
17411       { "orNotSupportedInGMSC", "gsm_map.orNotSupportedInGMSC",
17412         FT_NONE, BASE_NONE, NULL, 0,
17413         "ProvideRoamingNumberArg/orNotSupportedInGMSC", HFILL }},
17414     { &hf_gsm_map_offeredCamel4CSIsInInterrogatingNode,
17415       { "offeredCamel4CSIsInInterrogatingNode", "gsm_map.offeredCamel4CSIsInInterrogatingNode",
17416         FT_BYTES, BASE_HEX, NULL, 0,
17417         "ProvideRoamingNumberArg/offeredCamel4CSIsInInterrogatingNode", HFILL }},
17418     { &hf_gsm_map_uu_Data,
17419       { "uu-Data", "gsm_map.uu_Data",
17420         FT_NONE, BASE_NONE, NULL, 0,
17421         "ResumeCallHandlingArg/uu-Data", HFILL }},
17422     { &hf_gsm_map_allInformationSent,
17423       { "allInformationSent", "gsm_map.allInformationSent",
17424         FT_NONE, BASE_NONE, NULL, 0,
17425         "", HFILL }},
17426     { &hf_gsm_map_o_BcsmCamelTDPCriteriaList,
17427       { "o-BcsmCamelTDPCriteriaList", "gsm_map.o_BcsmCamelTDPCriteriaList",
17428         FT_UINT32, BASE_DEC, NULL, 0,
17429         "ResumeCallHandlingArg/o-BcsmCamelTDPCriteriaList", HFILL }},
17430     { &hf_gsm_map_uuIndicator,
17431       { "uuIndicator", "gsm_map.uuIndicator",
17432         FT_BYTES, BASE_HEX, NULL, 0,
17433         "UU-Data/uuIndicator", HFILL }},
17434     { &hf_gsm_map_uui,
17435       { "uui", "gsm_map.uui",
17436         FT_BYTES, BASE_HEX, NULL, 0,
17437         "UU-Data/uui", HFILL }},
17438     { &hf_gsm_map_uusCFInteraction,
17439       { "uusCFInteraction", "gsm_map.uusCFInteraction",
17440         FT_NONE, BASE_NONE, NULL, 0,
17441         "UU-Data/uusCFInteraction", HFILL }},
17442     { &hf_gsm_map_isdn_BearerCapability,
17443       { "isdn-BearerCapability", "gsm_map.isdn_BearerCapability",
17444         FT_NONE, BASE_NONE, NULL, 0,
17445         "ProvideSIWFSNumberArg/isdn-BearerCapability", HFILL }},
17446     { &hf_gsm_map_call_Direction,
17447       { "call-Direction", "gsm_map.call_Direction",
17448         FT_BYTES, BASE_HEX, NULL, 0,
17449         "ProvideSIWFSNumberArg/call-Direction", HFILL }},
17450     { &hf_gsm_map_b_Subscriber_Address,
17451       { "b-Subscriber-Address", "gsm_map.b_Subscriber_Address",
17452         FT_BYTES, BASE_HEX, NULL, 0,
17453         "ProvideSIWFSNumberArg/b-Subscriber-Address", HFILL }},
17454     { &hf_gsm_map_chosenChannel,
17455       { "chosenChannel", "gsm_map.chosenChannel",
17456         FT_NONE, BASE_NONE, NULL, 0,
17457         "", HFILL }},
17458     { &hf_gsm_map_lowerLayerCompatibility,
17459       { "lowerLayerCompatibility", "gsm_map.lowerLayerCompatibility",
17460         FT_NONE, BASE_NONE, NULL, 0,
17461         "ProvideSIWFSNumberArg/lowerLayerCompatibility", HFILL }},
17462     { &hf_gsm_map_highLayerCompatibility,
17463       { "highLayerCompatibility", "gsm_map.highLayerCompatibility",
17464         FT_NONE, BASE_NONE, NULL, 0,
17465         "ProvideSIWFSNumberArg/highLayerCompatibility", HFILL }},
17466     { &hf_gsm_map_sIWFSNumber,
17467       { "sIWFSNumber", "gsm_map.sIWFSNumber",
17468         FT_BYTES, BASE_HEX, NULL, 0,
17469         "ProvideSIWFSNumberRes/sIWFSNumber", HFILL }},
17470     { &hf_gsm_map_channelType,
17471       { "channelType", "gsm_map.channelType",
17472         FT_NONE, BASE_NONE, NULL, 0,
17473         "", HFILL }},
17474     { &hf_gsm_map_ccbs_Monitoring,
17475       { "ccbs-Monitoring", "gsm_map.ccbs_Monitoring",
17476         FT_UINT32, BASE_DEC, VALS(gsm_map_ReportingState_vals), 0,
17477         "SetReportingStateArg/ccbs-Monitoring", HFILL }},
17478     { &hf_gsm_map_ccbs_SubscriberStatus,
17479       { "ccbs-SubscriberStatus", "gsm_map.ccbs_SubscriberStatus",
17480         FT_UINT32, BASE_DEC, VALS(gsm_map_CCBS_SubscriberStatus_vals), 0,
17481         "", HFILL }},
17482     { &hf_gsm_map_eventReportData,
17483       { "eventReportData", "gsm_map.eventReportData",
17484         FT_NONE, BASE_NONE, NULL, 0,
17485         "StatusReportArg/eventReportData", HFILL }},
17486     { &hf_gsm_map_callReportdata,
17487       { "callReportdata", "gsm_map.callReportdata",
17488         FT_NONE, BASE_NONE, NULL, 0,
17489         "StatusReportArg/callReportdata", HFILL }},
17490     { &hf_gsm_map_monitoringMode,
17491       { "monitoringMode", "gsm_map.monitoringMode",
17492         FT_UINT32, BASE_DEC, VALS(gsm_map_MonitoringMode_vals), 0,
17493         "CallReportData/monitoringMode", HFILL }},
17494     { &hf_gsm_map_callOutcome,
17495       { "callOutcome", "gsm_map.callOutcome",
17496         FT_UINT32, BASE_DEC, VALS(gsm_map_CallOutcome_vals), 0,
17497         "CallReportData/callOutcome", HFILL }},
17498     { &hf_gsm_map_callTerminationIndicator,
17499       { "callTerminationIndicator", "gsm_map.callTerminationIndicator",
17500         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTerminationIndicator_vals), 0,
17501         "IST-AlertRes/callTerminationIndicator", HFILL }},
17502     { &hf_gsm_map_msrn,
17503       { "msrn", "gsm_map.msrn",
17504         FT_BYTES, BASE_HEX, NULL, 0,
17505         "ReleaseResourcesArg/msrn", HFILL }},
17506     { &hf_gsm_map_callInfo,
17507       { "callInfo", "gsm_map.callInfo",
17508         FT_NONE, BASE_NONE, NULL, 0,
17509         "", HFILL }},
17510     { &hf_gsm_map_ccbs_Feature,
17511       { "ccbs-Feature", "gsm_map.ccbs_Feature",
17512         FT_NONE, BASE_NONE, NULL, 0,
17513         "", HFILL }},
17514     { &hf_gsm_map_translatedB_Number,
17515       { "translatedB-Number", "gsm_map.translatedB_Number",
17516         FT_BYTES, BASE_HEX, NULL, 0,
17517         "", HFILL }},
17518     { &hf_gsm_map_replaceB_Number,
17519       { "replaceB-Number", "gsm_map.replaceB_Number",
17520         FT_NONE, BASE_NONE, NULL, 0,
17521         "RemoteUserFreeArg/replaceB-Number", HFILL }},
17522     { &hf_gsm_map_ruf_Outcome,
17523       { "ruf-Outcome", "gsm_map.ruf_Outcome",
17524         FT_UINT32, BASE_DEC, VALS(gsm_map_Ruf_Outcome_vals), 0,
17525         "RemoteUserFreeRes/ruf-Outcome", HFILL }},
17526     { &hf_gsm_map_ext_basicServiceGroupList,
17527       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
17528         FT_UINT32, BASE_DEC, NULL, 0,
17529         "", HFILL }},
17530     { &hf_gsm_map_cliRestrictionOption,
17531       { "cliRestrictionOption", "gsm_map.cliRestrictionOption",
17532         FT_UINT32, BASE_DEC, VALS(gsm_map_CliRestrictionOption_vals), 0,
17533         "", HFILL }},
17534     { &hf_gsm_map_overrideCategory,
17535       { "overrideCategory", "gsm_map.overrideCategory",
17536         FT_UINT32, BASE_DEC, VALS(gsm_map_OverrideCategory_vals), 0,
17537         "SS-SubscriptionOption/overrideCategory", HFILL }},
17538     { &hf_gsm_map_forwardedToNumber_addr,
17539       { "forwardedToNumber", "gsm_map.forwardedToNumber",
17540         FT_BYTES, BASE_HEX, NULL, 0,
17541         "", HFILL }},
17542     { &hf_gsm_map_forwardingInfo,
17543       { "forwardingInfo", "gsm_map.forwardingInfo",
17544         FT_NONE, BASE_NONE, NULL, 0,
17545         "SS-Info/forwardingInfo", HFILL }},
17546     { &hf_gsm_map_callBarringInfo,
17547       { "callBarringInfo", "gsm_map.callBarringInfo",
17548         FT_NONE, BASE_NONE, NULL, 0,
17549         "SS-Info/callBarringInfo", HFILL }},
17550     { &hf_gsm_map_ss_Data,
17551       { "ss-Data", "gsm_map.ss_Data",
17552         FT_NONE, BASE_NONE, NULL, 0,
17553         "SS-Info/ss-Data", HFILL }},
17554     { &hf_gsm_map_genericServiceInfo,
17555       { "genericServiceInfo", "gsm_map.genericServiceInfo",
17556         FT_NONE, BASE_NONE, NULL, 0,
17557         "InterrogateSS-Res/genericServiceInfo", HFILL }},
17558     { &hf_gsm_map_ussd_DataCodingScheme,
17559       { "ussd-DataCodingScheme", "gsm_map.ussd_DataCodingScheme",
17560         FT_BYTES, BASE_HEX, NULL, 0,
17561         "", HFILL }},
17562     { &hf_gsm_map_ussd_String,
17563       { "ussd-String", "gsm_map.ussd_String",
17564         FT_BYTES, BASE_HEX, NULL, 0,
17565         "", HFILL }},
17566     { &hf_gsm_map_failureCause,
17567       { "failureCause", "gsm_map.failureCause",
17568         FT_UINT32, BASE_DEC, VALS(gsm_map_FailureCause_vals), 0,
17569         "AuthenticationFailureReportArg/failureCause", HFILL }},
17570     { &hf_gsm_map_re_attempt,
17571       { "re-attempt", "gsm_map.re_attempt",
17572         FT_BOOLEAN, 8, NULL, 0,
17573         "AuthenticationFailureReportArg/re-attempt", HFILL }},
17574     { &hf_gsm_map_accessType,
17575       { "accessType", "gsm_map.accessType",
17576         FT_UINT32, BASE_DEC, VALS(gsm_map_AccessType_vals), 0,
17577         "AuthenticationFailureReportArg/accessType", HFILL }},
17578     { &hf_gsm_map_ccbs_Data,
17579       { "ccbs-Data", "gsm_map.ccbs_Data",
17580         FT_NONE, BASE_NONE, NULL, 0,
17581         "RegisterCC-EntryArg/ccbs-Data", HFILL }},
17582     { &hf_gsm_map_serviceIndicator,
17583       { "serviceIndicator", "gsm_map.serviceIndicator",
17584         FT_BYTES, BASE_HEX, NULL, 0,
17585         "CCBS-Data/serviceIndicator", HFILL }},
17586     { &hf_gsm_map_ccbs_Index,
17587       { "ccbs-Index", "gsm_map.ccbs_Index",
17588         FT_UINT32, BASE_DEC, NULL, 0,
17589         "", HFILL }},
17590     { &hf_gsm_map_sm_RP_PRI,
17591       { "sm-RP-PRI", "gsm_map.sm_RP_PRI",
17592         FT_BOOLEAN, 8, NULL, 0,
17593         "RoutingInfoForSMArg/sm-RP-PRI", HFILL }},
17594     { &hf_gsm_map_serviceCentreAddress,
17595       { "serviceCentreAddress", "gsm_map.serviceCentreAddress",
17596         FT_BYTES, BASE_HEX, NULL, 0,
17597         "", HFILL }},
17598     { &hf_gsm_map_gprsSupportIndicator,
17599       { "gprsSupportIndicator", "gsm_map.gprsSupportIndicator",
17600         FT_NONE, BASE_NONE, NULL, 0,
17601         "", HFILL }},
17602     { &hf_gsm_map_sm_RP_MTI,
17603       { "sm-RP-MTI", "gsm_map.sm_RP_MTI",
17604         FT_UINT32, BASE_DEC, NULL, 0,
17605         "RoutingInfoForSMArg/sm-RP-MTI", HFILL }},
17606     { &hf_gsm_map_sm_RP_SMEA,
17607       { "sm-RP-SMEA", "gsm_map.sm_RP_SMEA",
17608         FT_BYTES, BASE_HEX, NULL, 0,
17609         "RoutingInfoForSMArg/sm-RP-SMEA", HFILL }},
17610     { &hf_gsm_map_locationInfoWithLMSI,
17611       { "locationInfoWithLMSI", "gsm_map.locationInfoWithLMSI",
17612         FT_NONE, BASE_NONE, NULL, 0,
17613         "RoutingInfoForSM-Res/locationInfoWithLMSI", HFILL }},
17614     { &hf_gsm_map_networkNode_Number,
17615       { "networkNode-Number", "gsm_map.networkNode_Number",
17616         FT_BYTES, BASE_HEX, NULL, 0,
17617         "", HFILL }},
17618     { &hf_gsm_map_gprsNodeIndicator,
17619       { "gprsNodeIndicator", "gsm_map.gprsNodeIndicator",
17620         FT_NONE, BASE_NONE, NULL, 0,
17621         "", HFILL }},
17622     { &hf_gsm_map_additional_Number,
17623       { "additional-Number", "gsm_map.additional_Number",
17624         FT_UINT32, BASE_DEC, VALS(gsm_map_Additional_Number_vals), 0,
17625         "", HFILL }},
17626     { &hf_gsm_map_sm_RP_DA,
17627       { "sm-RP-DA", "gsm_map.sm_RP_DA",
17628         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_DA_vals), 0,
17629         "", HFILL }},
17630     { &hf_gsm_map_sm_RP_OA,
17631       { "sm-RP-OA", "gsm_map.sm_RP_OA",
17632         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_OA_vals), 0,
17633         "", HFILL }},
17634     { &hf_gsm_map_sm_RP_UI,
17635       { "sm-RP-UI", "gsm_map.sm_RP_UI",
17636         FT_BYTES, BASE_HEX, NULL, 0,
17637         "", HFILL }},
17638     { &hf_gsm_map_serviceCentreAddressOA,
17639       { "serviceCentreAddressOA", "gsm_map.serviceCentreAddressOA",
17640         FT_BYTES, BASE_HEX, NULL, 0,
17641         "Sm-RP-OA/serviceCentreAddressOA", HFILL }},
17642     { &hf_gsm_map_noSM_RP_OA,
17643       { "noSM-RP-OA", "gsm_map.noSM_RP_OA",
17644         FT_NONE, BASE_NONE, NULL, 0,
17645         "Sm-RP-OA/noSM-RP-OA", HFILL }},
17646     { &hf_gsm_map_serviceCentreAddressDA,
17647       { "serviceCentreAddressDA", "gsm_map.serviceCentreAddressDA",
17648         FT_BYTES, BASE_HEX, NULL, 0,
17649         "Sm-RP-DA/serviceCentreAddressDA", HFILL }},
17650     { &hf_gsm_map_noSM_RP_DA,
17651       { "noSM-RP-DA", "gsm_map.noSM_RP_DA",
17652         FT_NONE, BASE_NONE, NULL, 0,
17653         "Sm-RP-DA/noSM-RP-DA", HFILL }},
17654     { &hf_gsm_map_moreMessagesToSend,
17655       { "moreMessagesToSend", "gsm_map.moreMessagesToSend",
17656         FT_NONE, BASE_NONE, NULL, 0,
17657         "Mt-forwardSM-Arg/moreMessagesToSend", HFILL }},
17658     { &hf_gsm_map_sm_DeliveryOutcome,
17659       { "sm-DeliveryOutcome", "gsm_map.sm_DeliveryOutcome",
17660         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
17661         "ReportSM-DeliveryStatusArg/sm-DeliveryOutcome", HFILL }},
17662     { &hf_gsm_map_absentSubscriberDiagnosticSM,
17663       { "absentSubscriberDiagnosticSM", "gsm_map.absentSubscriberDiagnosticSM",
17664         FT_UINT32, BASE_DEC, NULL, 0,
17665         "", HFILL }},
17666     { &hf_gsm_map_deliveryOutcomeIndicator,
17667       { "deliveryOutcomeIndicator", "gsm_map.deliveryOutcomeIndicator",
17668         FT_NONE, BASE_NONE, NULL, 0,
17669         "ReportSM-DeliveryStatusArg/deliveryOutcomeIndicator", HFILL }},
17670     { &hf_gsm_map_additionalSM_DeliveryOutcome,
17671       { "additionalSM-DeliveryOutcome", "gsm_map.additionalSM_DeliveryOutcome",
17672         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
17673         "ReportSM-DeliveryStatusArg/additionalSM-DeliveryOutcome", HFILL }},
17674     { &hf_gsm_map_additionalAbsentSubscriberDiagnosticSM,
17675       { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.additionalAbsentSubscriberDiagnosticSM",
17676         FT_UINT32, BASE_DEC, NULL, 0,
17677         "", HFILL }},
17678     { &hf_gsm_map_storedMSISDN,
17679       { "storedMSISDN", "gsm_map.storedMSISDN",
17680         FT_BYTES, BASE_HEX, NULL, 0,
17681         "", HFILL }},
17682     { &hf_gsm_map_mw_Status,
17683       { "mw-Status", "gsm_map.mw_Status",
17684         FT_BYTES, BASE_HEX, NULL, 0,
17685         "InformServiceCentreArg/mw-Status", HFILL }},
17686     { &hf_gsm_map_alertReason,
17687       { "alertReason", "gsm_map.alertReason",
17688         FT_UINT32, BASE_DEC, VALS(gsm_map_T_alertReason_vals), 0,
17689         "ReadyForSM-Arg/alertReason", HFILL }},
17690     { &hf_gsm_map_alertReasonIndicator,
17691       { "alertReasonIndicator", "gsm_map.alertReasonIndicator",
17692         FT_NONE, BASE_NONE, NULL, 0,
17693         "ReadyForSM-Arg/alertReasonIndicator", HFILL }},
17694     { &hf_gsm_map_requestedInfo,
17695       { "requestedInfo", "gsm_map.requestedInfo",
17696         FT_NONE, BASE_NONE, NULL, 0,
17697         "", HFILL }},
17698     { &hf_gsm_map_locationInformation,
17699       { "locationInformation", "gsm_map.locationInformation",
17700         FT_NONE, BASE_NONE, NULL, 0,
17701         "", HFILL }},
17702     { &hf_gsm_map_subscriberState,
17703       { "subscriberState", "gsm_map.subscriberState",
17704         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberState_vals), 0,
17705         "SubscriberInfo/subscriberState", HFILL }},
17706     { &hf_gsm_map_locationInformationGPRS,
17707       { "locationInformationGPRS", "gsm_map.locationInformationGPRS",
17708         FT_NONE, BASE_NONE, NULL, 0,
17709         "", HFILL }},
17710     { &hf_gsm_map_ps_SubscriberState,
17711       { "ps-SubscriberState", "gsm_map.ps_SubscriberState",
17712         FT_UINT32, BASE_DEC, VALS(gsm_map_PS_SubscriberState_vals), 0,
17713         "SubscriberInfo/ps-SubscriberState", HFILL }},
17714     { &hf_gsm_map_ms_Classmark2,
17715       { "ms-Classmark2", "gsm_map.ms_Classmark2",
17716         FT_BYTES, BASE_HEX, NULL, 0,
17717         "SubscriberInfo/ms-Classmark2", HFILL }},
17718     { &hf_gsm_map_gprs_MS_Class,
17719       { "gprs-MS-Class", "gsm_map.gprs_MS_Class",
17720         FT_NONE, BASE_NONE, NULL, 0,
17721         "SubscriberInfo/gprs-MS-Class", HFILL }},
17722     { &hf_gsm_map_mnpInfoRes,
17723       { "mnpInfoRes", "gsm_map.mnpInfoRes",
17724         FT_NONE, BASE_NONE, NULL, 0,
17725         "SubscriberInfo/mnpInfoRes", HFILL }},
17726     { &hf_gsm_map_routeingNumber,
17727       { "routeingNumber", "gsm_map.routeingNumber",
17728         FT_BYTES, BASE_HEX, NULL, 0,
17729         "MNPInfoRes/routeingNumber", HFILL }},
17730     { &hf_gsm_map_mSNetworkCapability,
17731       { "mSNetworkCapability", "gsm_map.mSNetworkCapability",
17732         FT_BYTES, BASE_HEX, NULL, 0,
17733         "GPRSMSClass/mSNetworkCapability", HFILL }},
17734     { &hf_gsm_map_mSRadioAccessCapability,
17735       { "mSRadioAccessCapability", "gsm_map.mSRadioAccessCapability",
17736         FT_BYTES, BASE_HEX, NULL, 0,
17737         "GPRSMSClass/mSRadioAccessCapability", HFILL }},
17738     { &hf_gsm_map_locationInformation_flg,
17739       { "locationInformation", "gsm_map.locationInformation",
17740         FT_NONE, BASE_NONE, NULL, 0,
17741         "RequestedInfo/locationInformation", HFILL }},
17742     { &hf_gsm_map_subscriberState_flg,
17743       { "subscriberState", "gsm_map.subscriberState",
17744         FT_NONE, BASE_NONE, NULL, 0,
17745         "RequestedInfo/subscriberState", HFILL }},
17746     { &hf_gsm_map_currentLocation,
17747       { "currentLocation", "gsm_map.currentLocation",
17748         FT_NONE, BASE_NONE, NULL, 0,
17749         "RequestedInfo/currentLocation", HFILL }},
17750     { &hf_gsm_map_requestedDomain,
17751       { "requestedDomain", "gsm_map.requestedDomain",
17752         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestedDomain_vals), 0,
17753         "RequestedInfo/requestedDomain", HFILL }},
17754     { &hf_gsm_map_imei_flg,
17755       { "imei", "gsm_map.imei",
17756         FT_NONE, BASE_NONE, NULL, 0,
17757         "RequestedInfo/imei", HFILL }},
17758     { &hf_gsm_map_ms_classmark,
17759       { "ms-classmark", "gsm_map.ms_classmark",
17760         FT_NONE, BASE_NONE, NULL, 0,
17761         "RequestedInfo/ms-classmark", HFILL }},
17762     { &hf_gsm_map_mnpRequestedInfo,
17763       { "mnpRequestedInfo", "gsm_map.mnpRequestedInfo",
17764         FT_NONE, BASE_NONE, NULL, 0,
17765         "RequestedInfo/mnpRequestedInfo", HFILL }},
17766     { &hf_gsm_map_subscriberIdentity,
17767       { "subscriberIdentity", "gsm_map.subscriberIdentity",
17768         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
17769         "", HFILL }},
17770     { &hf_gsm_map_requestedSubscriptionInfo,
17771       { "requestedSubscriptionInfo", "gsm_map.requestedSubscriptionInfo",
17772         FT_NONE, BASE_NONE, NULL, 0,
17773         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo", HFILL }},
17774     { &hf_gsm_map_callForwardingData,
17775       { "callForwardingData", "gsm_map.callForwardingData",
17776         FT_NONE, BASE_NONE, NULL, 0,
17777         "AnyTimeSubscriptionInterrogationRes/callForwardingData", HFILL }},
17778     { &hf_gsm_map_callBarringData,
17779       { "callBarringData", "gsm_map.callBarringData",
17780         FT_NONE, BASE_NONE, NULL, 0,
17781         "AnyTimeSubscriptionInterrogationRes/callBarringData", HFILL }},
17782     { &hf_gsm_map_odb_Info,
17783       { "odb-Info", "gsm_map.odb_Info",
17784         FT_NONE, BASE_NONE, NULL, 0,
17785         "", HFILL }},
17786     { &hf_gsm_map_camel_SubscriptionInfo,
17787       { "camel-SubscriptionInfo", "gsm_map.camel_SubscriptionInfo",
17788         FT_NONE, BASE_NONE, NULL, 0,
17789         "", HFILL }},
17790     { &hf_gsm_map_supportedVLR_CAMEL_Phases,
17791       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
17792         FT_BYTES, BASE_HEX, NULL, 0,
17793         "AnyTimeSubscriptionInterrogationRes/supportedVLR-CAMEL-Phases", HFILL }},
17794     { &hf_gsm_map_supportedSGSN_CAMEL_Phases,
17795       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
17796         FT_BYTES, BASE_HEX, NULL, 0,
17797         "AnyTimeSubscriptionInterrogationRes/supportedSGSN-CAMEL-Phases", HFILL }},
17798     { &hf_gsm_map_offeredCamel4CSIsInVLR,
17799       { "offeredCamel4CSIsInVLR", "gsm_map.offeredCamel4CSIsInVLR",
17800         FT_BYTES, BASE_HEX, NULL, 0,
17801         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInVLR", HFILL }},
17802     { &hf_gsm_map_offeredCamel4CSIsInSGSN,
17803       { "offeredCamel4CSIsInSGSN", "gsm_map.offeredCamel4CSIsInSGSN",
17804         FT_BYTES, BASE_HEX, NULL, 0,
17805         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInSGSN", HFILL }},
17806     { &hf_gsm_map_requestedSS_Info,
17807       { "requestedSS-Info", "gsm_map.requestedSS_Info",
17808         FT_NONE, BASE_NONE, NULL, 0,
17809         "RequestedSubscriptionInfo/requestedSS-Info", HFILL }},
17810     { &hf_gsm_map_odb,
17811       { "odb", "gsm_map.odb",
17812         FT_NONE, BASE_NONE, NULL, 0,
17813         "RequestedSubscriptionInfo/odb", HFILL }},
17814     { &hf_gsm_map_requestedCAMEL_SubscriptionInfo,
17815       { "requestedCAMEL-SubscriptionInfo", "gsm_map.requestedCAMEL_SubscriptionInfo",
17816         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestedCAMEL_SubscriptionInfo_vals), 0,
17817         "RequestedSubscriptionInfo/requestedCAMEL-SubscriptionInfo", HFILL }},
17818     { &hf_gsm_map_supportedVLR_CAMEL_Phases_flg,
17819       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
17820         FT_NONE, BASE_NONE, NULL, 0,
17821         "RequestedSubscriptionInfo/supportedVLR-CAMEL-Phases", HFILL }},
17822     { &hf_gsm_map_supportedSGSN_CAMEL_Phases_flg,
17823       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
17824         FT_NONE, BASE_NONE, NULL, 0,
17825         "RequestedSubscriptionInfo/supportedSGSN-CAMEL-Phases", HFILL }},
17826     { &hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo,
17827       { "additionalRequestedCAMEL-SubscriptionInfo", "gsm_map.additionalRequestedCAMEL_SubscriptionInfo",
17828         FT_UINT32, BASE_DEC, VALS(gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals), 0,
17829         "", HFILL }},
17830     { &hf_gsm_map_password,
17831       { "password", "gsm_map.password",
17832         FT_STRING, BASE_NONE, NULL, 0,
17833         "", HFILL }},
17834     { &hf_gsm_map_wrongPasswordAttemptsCounter,
17835       { "wrongPasswordAttemptsCounter", "gsm_map.wrongPasswordAttemptsCounter",
17836         FT_UINT32, BASE_DEC, NULL, 0,
17837         "", HFILL }},
17838     { &hf_gsm_map_bearerService,
17839       { "bearerService", "gsm_map.bearerService",
17840         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
17841         "BasicServiceCode/bearerService", HFILL }},
17842     { &hf_gsm_map_teleservice_code,
17843       { "teleservice", "gsm_map.teleservice",
17844         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
17845         "BasicServiceCode/teleservice", HFILL }},
17846     { &hf_gsm_map_O_BcsmCamelTDPCriteriaList_item,
17847       { "Item", "gsm_map.O_BcsmCamelTDPCriteriaList_item",
17848         FT_NONE, BASE_NONE, NULL, 0,
17849         "O-BcsmCamelTDPCriteriaList/_item", HFILL }},
17850     { &hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item,
17851       { "Item", "gsm_map.T_BCSM_CAMEL_TDP_CriteriaList_item",
17852         FT_NONE, BASE_NONE, NULL, 0,
17853         "T-BCSM-CAMEL-TDP-CriteriaList/_item", HFILL }},
17854     { &hf_gsm_map_destinationNumberCriteria,
17855       { "destinationNumberCriteria", "gsm_map.destinationNumberCriteria",
17856         FT_NONE, BASE_NONE, NULL, 0,
17857         "O-BcsmCamelTDP-Criteria/destinationNumberCriteria", HFILL }},
17858     { &hf_gsm_map_basicServiceCriteria,
17859       { "basicServiceCriteria", "gsm_map.basicServiceCriteria",
17860         FT_UINT32, BASE_DEC, NULL, 0,
17861         "", HFILL }},
17862     { &hf_gsm_map_callTypeCriteria,
17863       { "callTypeCriteria", "gsm_map.callTypeCriteria",
17864         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTypeCriteria_vals), 0,
17865         "O-BcsmCamelTDP-Criteria/callTypeCriteria", HFILL }},
17866     { &hf_gsm_map_o_CauseValueCriteria,
17867       { "o-CauseValueCriteria", "gsm_map.o_CauseValueCriteria",
17868         FT_UINT32, BASE_DEC, NULL, 0,
17869         "O-BcsmCamelTDP-Criteria/o-CauseValueCriteria", HFILL }},
17870     { &hf_gsm_map_t_BCSM_TriggerDetectionPoint,
17871       { "t-BCSM-TriggerDetectionPoint", "gsm_map.t_BCSM_TriggerDetectionPoint",
17872         FT_UINT32, BASE_DEC, VALS(gsm_map_T_BcsmTriggerDetectionPoint_vals), 0,
17873         "T-BCSM-CAMEL-TDP-Criteria/t-BCSM-TriggerDetectionPoint", HFILL }},
17874     { &hf_gsm_map_t_CauseValueCriteria,
17875       { "t-CauseValueCriteria", "gsm_map.t_CauseValueCriteria",
17876         FT_UINT32, BASE_DEC, NULL, 0,
17877         "T-BCSM-CAMEL-TDP-Criteria/t-CauseValueCriteria", HFILL }},
17878     { &hf_gsm_map_maximumEntitledPriority,
17879       { "maximumEntitledPriority", "gsm_map.maximumEntitledPriority",
17880         FT_UINT32, BASE_DEC, NULL, 0,
17881         "GenericServiceInfo/maximumEntitledPriority", HFILL }},
17882     { &hf_gsm_map_ccbs_FeatureList,
17883       { "ccbs-FeatureList", "gsm_map.ccbs_FeatureList",
17884         FT_UINT32, BASE_DEC, NULL, 0,
17885         "GenericServiceInfo/ccbs-FeatureList", HFILL }},
17886     { &hf_gsm_map_nbrSN,
17887       { "nbrSN", "gsm_map.nbrSN",
17888         FT_UINT32, BASE_DEC, NULL, 0,
17889         "GenericServiceInfo/nbrSN", HFILL }},
17890     { &hf_gsm_map_CCBS_FeatureList_item,
17891       { "Item", "gsm_map.CCBS_FeatureList_item",
17892         FT_NONE, BASE_NONE, NULL, 0,
17893         "CCBS-FeatureList/_item", HFILL }},
17894     { &hf_gsm_map_b_subscriberNumber,
17895       { "b-subscriberNumber", "gsm_map.b_subscriberNumber",
17896         FT_BYTES, BASE_HEX, NULL, 0,
17897         "CCBS-Feature/b-subscriberNumber", HFILL }},
17898     { &hf_gsm_map_b_subscriberSubaddress,
17899       { "b-subscriberSubaddress", "gsm_map.b_subscriberSubaddress",
17900         FT_BYTES, BASE_HEX, NULL, 0,
17901         "CCBS-Feature/b-subscriberSubaddress", HFILL }},
17902     { &hf_gsm_map_basicServiceGroup,
17903       { "basicServiceGroup", "gsm_map.basicServiceGroup",
17904         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
17905         "CCBS-Feature/basicServiceGroup", HFILL }},
17906     { &hf_gsm_map_T_CauseValueCriteria_item,
17907       { "Item", "gsm_map.T_CauseValueCriteria_item",
17908         FT_BYTES, BASE_HEX, NULL, 0,
17909         "T-CauseValueCriteria/_item", HFILL }},
17910     { &hf_gsm_map_O_CauseValueCriteria_item,
17911       { "Item", "gsm_map.O_CauseValueCriteria_item",
17912         FT_BYTES, BASE_HEX, NULL, 0,
17913         "O-CauseValueCriteria/_item", HFILL }},
17914     { &hf_gsm_map_BasicServiceCriteria_item,
17915       { "Item", "gsm_map.BasicServiceCriteria_item",
17916         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17917         "BasicServiceCriteria/_item", HFILL }},
17918     { &hf_gsm_map_modificationRequestFor_CF_Info,
17919       { "modificationRequestFor-CF-Info", "gsm_map.modificationRequestFor_CF_Info",
17920         FT_NONE, BASE_NONE, NULL, 0,
17921         "AnyTimeModificationArg/modificationRequestFor-CF-Info", HFILL }},
17922     { &hf_gsm_map_modificationRequestFor_CB_Info,
17923       { "modificationRequestFor-CB-Info", "gsm_map.modificationRequestFor_CB_Info",
17924         FT_NONE, BASE_NONE, NULL, 0,
17925         "AnyTimeModificationArg/modificationRequestFor-CB-Info", HFILL }},
17926     { &hf_gsm_map_modificationRequestFor_CSI,
17927       { "modificationRequestFor-CSI", "gsm_map.modificationRequestFor_CSI",
17928         FT_NONE, BASE_NONE, NULL, 0,
17929         "AnyTimeModificationArg/modificationRequestFor-CSI", HFILL }},
17930     { &hf_gsm_map_modificationRequestFor_ODB_data,
17931       { "modificationRequestFor-ODB-data", "gsm_map.modificationRequestFor_ODB_data",
17932         FT_NONE, BASE_NONE, NULL, 0,
17933         "AnyTimeModificationArg/modificationRequestFor-ODB-data", HFILL }},
17934     { &hf_gsm_map_ss_InfoFor_CSE,
17935       { "ss-InfoFor-CSE", "gsm_map.ss_InfoFor_CSE",
17936         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_SS_InfoFor_CSE_vals), 0,
17937         "AnyTimeModificationRes/ss-InfoFor-CSE", HFILL }},
17938     { &hf_gsm_map_modifyNotificationToCSE,
17939       { "modifyNotificationToCSE", "gsm_map.modifyNotificationToCSE",
17940         FT_UINT32, BASE_DEC, VALS(gsm_map_ModificationInstruction_vals), 0,
17941         "", HFILL }},
17942     { &hf_gsm_map_odb_data,
17943       { "odb-data", "gsm_map.odb_data",
17944         FT_NONE, BASE_NONE, NULL, 0,
17945         "ModificationRequestFor-ODB-data/odb-data", HFILL }},
17946     { &hf_gsm_map_requestedCamel_SubscriptionInfo,
17947       { "requestedCamel-SubscriptionInfo", "gsm_map.requestedCamel_SubscriptionInfo",
17948         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestedCAMEL_SubscriptionInfo_vals), 0,
17949         "ModificationRequestFor-CSI/requestedCamel-SubscriptionInfo", HFILL }},
17950     { &hf_gsm_map_modifyCSI_State,
17951       { "modifyCSI-State", "gsm_map.modifyCSI_State",
17952         FT_UINT32, BASE_DEC, VALS(gsm_map_ModificationInstruction_vals), 0,
17953         "ModificationRequestFor-CSI/modifyCSI-State", HFILL }},
17954     { &hf_gsm_map_forwardingInfoFor_CSE,
17955       { "forwardingInfoFor-CSE", "gsm_map.forwardingInfoFor_CSE",
17956         FT_NONE, BASE_NONE, NULL, 0,
17957         "", HFILL }},
17958     { &hf_gsm_map_callBarringInfoFor_CSE,
17959       { "callBarringInfoFor-CSE", "gsm_map.callBarringInfoFor_CSE",
17960         FT_NONE, BASE_NONE, NULL, 0,
17961         "", HFILL }},
17962     { &hf_gsm_map_eventMet,
17963       { "eventMet", "gsm_map.eventMet",
17964         FT_BYTES, BASE_HEX, NULL, 0,
17965         "NoteMM-EventArg/eventMet", HFILL }},
17966     { &hf_gsm_map_supportedCAMELPhases,
17967       { "supportedCAMELPhases", "gsm_map.supportedCAMELPhases",
17968         FT_BYTES, BASE_HEX, NULL, 0,
17969         "NoteMM-EventArg/supportedCAMELPhases", HFILL }},
17970     { &hf_gsm_map_offeredCamel4Functionalities,
17971       { "offeredCamel4Functionalities", "gsm_map.offeredCamel4Functionalities",
17972         FT_BYTES, BASE_HEX, NULL, 0,
17973         "NoteMM-EventArg/offeredCamel4Functionalities", HFILL }},
17974     { &hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList,
17975       { "vt-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_BCSM_CAMEL_TDP_CriteriaList",
17976         FT_UINT32, BASE_DEC, NULL, 0,
17977         "CAMEL-SubscriptionInfo/vt-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
17978     { &hf_gsm_map_tif_CSI_NotificationToCSE,
17979       { "tif-CSI-NotificationToCSE", "gsm_map.tif_CSI_NotificationToCSE",
17980         FT_NONE, BASE_NONE, NULL, 0,
17981         "CAMEL-SubscriptionInfo/tif-CSI-NotificationToCSE", HFILL }},
17982     { &hf_gsm_map_specificCSIDeletedList,
17983       { "specificCSIDeletedList", "gsm_map.specificCSIDeletedList",
17984         FT_BYTES, BASE_HEX, NULL, 0,
17985         "CAMEL-SubscriptionInfo/specificCSIDeletedList", HFILL }},
17986     { &hf_gsm_map_o_IM_CSI,
17987       { "o-IM-CSI", "gsm_map.o_IM_CSI",
17988         FT_NONE, BASE_NONE, NULL, 0,
17989         "CAMEL-SubscriptionInfo/o-IM-CSI", HFILL }},
17990     { &hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList,
17991       { "o-IM-BcsmCamelTDP-CriteriaList", "gsm_map.o_IM_BcsmCamelTDP_CriteriaList",
17992         FT_UINT32, BASE_DEC, NULL, 0,
17993         "CAMEL-SubscriptionInfo/o-IM-BcsmCamelTDP-CriteriaList", HFILL }},
17994     { &hf_gsm_map_d_IM_CSI,
17995       { "d-IM-CSI", "gsm_map.d_IM_CSI",
17996         FT_NONE, BASE_NONE, NULL, 0,
17997         "CAMEL-SubscriptionInfo/d-IM-CSI", HFILL }},
17998     { &hf_gsm_map_vt_IM_CSI,
17999       { "vt-IM-CSI", "gsm_map.vt_IM_CSI",
18000         FT_NONE, BASE_NONE, NULL, 0,
18001         "CAMEL-SubscriptionInfo/vt-IM-CSI", HFILL }},
18002     { &hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList,
18003       { "vt-IM-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_IM_BCSM_CAMEL_TDP_CriteriaList",
18004         FT_UINT32, BASE_DEC, NULL, 0,
18005         "CAMEL-SubscriptionInfo/vt-IM-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
18006     { &hf_gsm_map_ext_BearerService,
18007       { "ext-BearerService", "gsm_map.ext_BearerService",
18008         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
18009         "Ext-BasicServiceCode/ext-BearerService", HFILL }},
18010     { &hf_gsm_map_ext_Teleservice,
18011       { "ext-Teleservice", "gsm_map.ext_Teleservice",
18012         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
18013         "Ext-BasicServiceCode/ext-Teleservice", HFILL }},
18014     { &hf_gsm_map_odb_HPLMN_Data,
18015       { "odb-HPLMN-Data", "gsm_map.odb_HPLMN_Data",
18016         FT_BYTES, BASE_HEX, NULL, 0,
18017         "ODB-Data/odb-HPLMN-Data", HFILL }},
18018     { &hf_gsm_map_SS_EventList_item,
18019       { "Item", "gsm_map.SS_EventList_item",
18020         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
18021         "SS-EventList/_item", HFILL }},
18022     { &hf_gsm_map_t_BcsmCamelTDPDataList,
18023       { "t-BcsmCamelTDPDataList", "gsm_map.t_BcsmCamelTDPDataList",
18024         FT_UINT32, BASE_DEC, NULL, 0,
18025         "T-CSI/t-BcsmCamelTDPDataList", HFILL }},
18026     { &hf_gsm_map_T_BcsmCamelTDPDataList_item,
18027       { "Item", "gsm_map.T_BcsmCamelTDPDataList_item",
18028         FT_NONE, BASE_NONE, NULL, 0,
18029         "T-BcsmCamelTDPDataList/_item", HFILL }},
18030     { &hf_gsm_map_t_BcsmTriggerDetectionPoint,
18031       { "t-BcsmTriggerDetectionPoint", "gsm_map.t_BcsmTriggerDetectionPoint",
18032         FT_UINT32, BASE_DEC, VALS(gsm_map_T_BcsmTriggerDetectionPoint_vals), 0,
18033         "T-BcsmCamelTDPData/t-BcsmTriggerDetectionPoint", HFILL }},
18034     { &hf_gsm_map_sms_CAMEL_TDP_DataList,
18035       { "sms-CAMEL-TDP-DataList", "gsm_map.sms_CAMEL_TDP_DataList",
18036         FT_UINT32, BASE_DEC, NULL, 0,
18037         "SMS-CSI/sms-CAMEL-TDP-DataList", HFILL }},
18038     { &hf_gsm_map_SMS_CAMEL_TDP_DataList_item,
18039       { "Item", "gsm_map.SMS_CAMEL_TDP_DataList_item",
18040         FT_NONE, BASE_NONE, NULL, 0,
18041         "SMS-CAMEL-TDP-DataList/_item", HFILL }},
18042     { &hf_gsm_map_defaultSMS_Handling,
18043       { "defaultSMS-Handling", "gsm_map.defaultSMS_Handling",
18044         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultSMS_Handling_vals), 0,
18045         "SMS-CAMEL-TDP-Data/defaultSMS-Handling", HFILL }},
18046     { &hf_gsm_map_MobilityTriggers_item,
18047       { "Item", "gsm_map.MobilityTriggers_item",
18048         FT_BYTES, BASE_HEX, NULL, 0,
18049         "MobilityTriggers/_item", HFILL }},
18050     { &hf_gsm_map_ss_Event,
18051       { "ss-Event", "gsm_map.ss_Event",
18052         FT_BYTES, BASE_HEX, NULL, 0,
18053         "Ss-InvocationNotificationArg/ss-Event", HFILL }},
18054     { &hf_gsm_map_ss_EventSpecification,
18055       { "ss-EventSpecification", "gsm_map.ss_EventSpecification",
18056         FT_UINT32, BASE_DEC, NULL, 0,
18057         "Ss-InvocationNotificationArg/ss-EventSpecification", HFILL }},
18058     { &hf_gsm_map_ss_EventSpecification_item,
18059       { "Item", "gsm_map.ss_EventSpecification_item",
18060         FT_BYTES, BASE_HEX, NULL, 0,
18061         "Ss-InvocationNotificationArg/ss-EventSpecification/_item", HFILL }},
18062     { &hf_gsm_map_ext_teleservice,
18063       { "teleservice", "gsm_map.teleservice",
18064         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
18065         "PrepareGroupCallArg/teleservice", HFILL }},
18066     { &hf_gsm_map_codec_Info,
18067       { "codec-Info", "gsm_map.codec_Info",
18068         FT_BYTES, BASE_HEX, NULL, 0,
18069         "PrepareGroupCallArg/codec-Info", HFILL }},
18070     { &hf_gsm_map_cipheringAlgorithm,
18071       { "cipheringAlgorithm", "gsm_map.cipheringAlgorithm",
18072         FT_BYTES, BASE_HEX, NULL, 0,
18073         "PrepareGroupCallArg/cipheringAlgorithm", HFILL }},
18074     { &hf_gsm_map_groupKeyNumber_Vk_Id,
18075       { "groupKeyNumber-Vk-Id", "gsm_map.groupKeyNumber_Vk_Id",
18076         FT_UINT32, BASE_DEC, NULL, 0,
18077         "PrepareGroupCallArg/groupKeyNumber-Vk-Id", HFILL }},
18078     { &hf_gsm_map_groupKey,
18079       { "groupKey", "gsm_map.groupKey",
18080         FT_BYTES, BASE_HEX, NULL, 0,
18081         "PrepareGroupCallArg/groupKey", HFILL }},
18082     { &hf_gsm_map_priority,
18083       { "priority", "gsm_map.priority",
18084         FT_UINT32, BASE_DEC, NULL, 0,
18085         "PrepareGroupCallArg/priority", HFILL }},
18086     { &hf_gsm_map_uplinkFree,
18087       { "uplinkFree", "gsm_map.uplinkFree",
18088         FT_NONE, BASE_NONE, NULL, 0,
18089         "PrepareGroupCallArg/uplinkFree", HFILL }},
18090     { &hf_gsm_map_vstk,
18091       { "vstk", "gsm_map.vstk",
18092         FT_BYTES, BASE_HEX, NULL, 0,
18093         "PrepareGroupCallArg/vstk", HFILL }},
18094     { &hf_gsm_map_vstk_rand,
18095       { "vstk-rand", "gsm_map.vstk_rand",
18096         FT_BYTES, BASE_HEX, NULL, 0,
18097         "PrepareGroupCallArg/vstk-rand", HFILL }},
18098     { &hf_gsm_map_groupCallNumber,
18099       { "groupCallNumber", "gsm_map.groupCallNumber",
18100         FT_BYTES, BASE_HEX, NULL, 0,
18101         "PrepareGroupCallRes/groupCallNumber", HFILL }},
18102     { &hf_gsm_map_uplinkRequest,
18103       { "uplinkRequest", "gsm_map.uplinkRequest",
18104         FT_NONE, BASE_NONE, NULL, 0,
18105         "ProcessGroupCallSignallingArg/uplinkRequest", HFILL }},
18106     { &hf_gsm_map_uplinkReleaseIndication,
18107       { "uplinkReleaseIndication", "gsm_map.uplinkReleaseIndication",
18108         FT_NONE, BASE_NONE, NULL, 0,
18109         "", HFILL }},
18110     { &hf_gsm_map_releaseGroupCall,
18111       { "releaseGroupCall", "gsm_map.releaseGroupCall",
18112         FT_NONE, BASE_NONE, NULL, 0,
18113         "ProcessGroupCallSignallingArg/releaseGroupCall", HFILL }},
18114     { &hf_gsm_map_uplinkRequestAck,
18115       { "uplinkRequestAck", "gsm_map.uplinkRequestAck",
18116         FT_NONE, BASE_NONE, NULL, 0,
18117         "ForwardGroupCallSignallingArg/uplinkRequestAck", HFILL }},
18118     { &hf_gsm_map_uplinkRejectCommand,
18119       { "uplinkRejectCommand", "gsm_map.uplinkRejectCommand",
18120         FT_NONE, BASE_NONE, NULL, 0,
18121         "ForwardGroupCallSignallingArg/uplinkRejectCommand", HFILL }},
18122     { &hf_gsm_map_uplinkSeizedCommand,
18123       { "uplinkSeizedCommand", "gsm_map.uplinkSeizedCommand",
18124         FT_NONE, BASE_NONE, NULL, 0,
18125         "ForwardGroupCallSignallingArg/uplinkSeizedCommand", HFILL }},
18126     { &hf_gsm_map_uplinkReleaseCommand,
18127       { "uplinkReleaseCommand", "gsm_map.uplinkReleaseCommand",
18128         FT_NONE, BASE_NONE, NULL, 0,
18129         "ForwardGroupCallSignallingArg/uplinkReleaseCommand", HFILL }},
18130     { &hf_gsm_map_sgsn_Address,
18131       { "sgsn-Address", "gsm_map.sgsn_Address",
18132         FT_BYTES, BASE_HEX, NULL, 0,
18133         "", HFILL }},
18134     { &hf_gsm_map_sgsn_Capability,
18135       { "sgsn-Capability", "gsm_map.sgsn_Capability",
18136         FT_NONE, BASE_NONE, NULL, 0,
18137         "UpdateGprsLocationArg/sgsn-Capability", HFILL }},
18138     { &hf_gsm_map_ps_LCS_NotSupportedByUE,
18139       { "ps-LCS-NotSupportedByUE", "gsm_map.ps_LCS_NotSupportedByUE",
18140         FT_NONE, BASE_NONE, NULL, 0,
18141         "UpdateGprsLocationArg/ps-LCS-NotSupportedByUE", HFILL }},
18142     { &hf_gsm_map_gprsEnhancementsSupportIndicator,
18143       { "gprsEnhancementsSupportIndicator", "gsm_map.gprsEnhancementsSupportIndicator",
18144         FT_NONE, BASE_NONE, NULL, 0,
18145         "SGSN-Capability/gprsEnhancementsSupportIndicator", HFILL }},
18146     { &hf_gsm_map_smsCallBarringSupportIndicator,
18147       { "smsCallBarringSupportIndicator", "gsm_map.smsCallBarringSupportIndicator",
18148         FT_NONE, BASE_NONE, NULL, 0,
18149         "SGSN-Capability/smsCallBarringSupportIndicator", HFILL }},
18150     { &hf_gsm_map_ggsn_Number,
18151       { "ggsn-Number", "gsm_map.ggsn_Number",
18152         FT_BYTES, BASE_HEX, NULL, 0,
18153         "", HFILL }},
18154     { &hf_gsm_map_mobileNotReachableReason,
18155       { "mobileNotReachableReason", "gsm_map.mobileNotReachableReason",
18156         FT_UINT32, BASE_DEC, NULL, 0,
18157         "SendRoutingInfoForGprsRes/mobileNotReachableReason", HFILL }},
18158     { &hf_gsm_map_locationType,
18159       { "locationType", "gsm_map.locationType",
18160         FT_NONE, BASE_NONE, NULL, 0,
18161         "ProvideSubscriberLocation-Arg/locationType", HFILL }},
18162     { &hf_gsm_map_mlc_Number,
18163       { "mlc-Number", "gsm_map.mlc_Number",
18164         FT_BYTES, BASE_HEX, NULL, 0,
18165         "ProvideSubscriberLocation-Arg/mlc-Number", HFILL }},
18166     { &hf_gsm_map_lcs_ClientID,
18167       { "lcs-ClientID", "gsm_map.lcs_ClientID",
18168         FT_NONE, BASE_NONE, NULL, 0,
18169         "", HFILL }},
18170     { &hf_gsm_map_privacyOverride,
18171       { "privacyOverride", "gsm_map.privacyOverride",
18172         FT_NONE, BASE_NONE, NULL, 0,
18173         "ProvideSubscriberLocation-Arg/privacyOverride", HFILL }},
18174     { &hf_gsm_map_lcs_Priority,
18175       { "lcs-Priority", "gsm_map.lcs_Priority",
18176         FT_BYTES, BASE_HEX, NULL, 0,
18177         "ProvideSubscriberLocation-Arg/lcs-Priority", HFILL }},
18178     { &hf_gsm_map_lcs_QoS,
18179       { "lcs-QoS", "gsm_map.lcs_QoS",
18180         FT_NONE, BASE_NONE, NULL, 0,
18181         "ProvideSubscriberLocation-Arg/lcs-QoS", HFILL }},
18182     { &hf_gsm_map_supportedGADShapes,
18183       { "supportedGADShapes", "gsm_map.supportedGADShapes",
18184         FT_BYTES, BASE_HEX, NULL, 0,
18185         "ProvideSubscriberLocation-Arg/supportedGADShapes", HFILL }},
18186     { &hf_gsm_map_lcs_ReferenceNumber,
18187       { "lcs-ReferenceNumber", "gsm_map.lcs_ReferenceNumber",
18188         FT_BYTES, BASE_HEX, NULL, 0,
18189         "", HFILL }},
18190     { &hf_gsm_map_lcsServiceTypeID,
18191       { "lcsServiceTypeID", "gsm_map.lcsServiceTypeID",
18192         FT_UINT32, BASE_DEC, NULL, 0,
18193         "", HFILL }},
18194     { &hf_gsm_map_lcsCodeword,
18195       { "lcsCodeword", "gsm_map.lcsCodeword",
18196         FT_NONE, BASE_NONE, NULL, 0,
18197         "ProvideSubscriberLocation-Arg/lcsCodeword", HFILL }},
18198     { &hf_gsm_map_lcs_PrivacyCheck,
18199       { "lcs-PrivacyCheck", "gsm_map.lcs_PrivacyCheck",
18200         FT_NONE, BASE_NONE, NULL, 0,
18201         "ProvideSubscriberLocation-Arg/lcs-PrivacyCheck", HFILL }},
18202     { &hf_gsm_map_areaEventInfo,
18203       { "areaEventInfo", "gsm_map.areaEventInfo",
18204         FT_NONE, BASE_NONE, NULL, 0,
18205         "ProvideSubscriberLocation-Arg/areaEventInfo", HFILL }},
18206     { &hf_gsm_map_h_gmlc_Address,
18207       { "h-gmlc-Address", "gsm_map.h_gmlc_Address",
18208         FT_BYTES, BASE_HEX, NULL, 0,
18209         "", HFILL }},
18210     { &hf_gsm_map_locationEstimateType,
18211       { "locationEstimateType", "gsm_map.locationEstimateType",
18212         FT_UINT32, BASE_DEC, VALS(gsm_map_LocationEstimateType_vals), 0,
18213         "LocationType/locationEstimateType", HFILL }},
18214     { &hf_gsm_map_deferredLocationEventType,
18215       { "deferredLocationEventType", "gsm_map.deferredLocationEventType",
18216         FT_BYTES, BASE_HEX, NULL, 0,
18217         "", HFILL }},
18218     { &hf_gsm_map_lcsClientType,
18219       { "lcsClientType", "gsm_map.lcsClientType",
18220         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientType_vals), 0,
18221         "LCS-ClientID/lcsClientType", HFILL }},
18222     { &hf_gsm_map_lcsClientExternalID,
18223       { "lcsClientExternalID", "gsm_map.lcsClientExternalID",
18224         FT_NONE, BASE_NONE, NULL, 0,
18225         "LCS-ClientID/lcsClientExternalID", HFILL }},
18226     { &hf_gsm_map_lcsClientDialedByMS,
18227       { "lcsClientDialedByMS", "gsm_map.lcsClientDialedByMS",
18228         FT_BYTES, BASE_HEX, NULL, 0,
18229         "LCS-ClientID/lcsClientDialedByMS", HFILL }},
18230     { &hf_gsm_map_lcsClientInternalID,
18231       { "lcsClientInternalID", "gsm_map.lcsClientInternalID",
18232         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
18233         "LCS-ClientID/lcsClientInternalID", HFILL }},
18234     { &hf_gsm_map_lcsClientName,
18235       { "lcsClientName", "gsm_map.lcsClientName",
18236         FT_NONE, BASE_NONE, NULL, 0,
18237         "LCS-ClientID/lcsClientName", HFILL }},
18238     { &hf_gsm_map_lcsAPN,
18239       { "lcsAPN", "gsm_map.lcsAPN",
18240         FT_BYTES, BASE_HEX, NULL, 0,
18241         "LCS-ClientID/lcsAPN", HFILL }},
18242     { &hf_gsm_map_lcsRequestorID,
18243       { "lcsRequestorID", "gsm_map.lcsRequestorID",
18244         FT_NONE, BASE_NONE, NULL, 0,
18245         "LCS-ClientID/lcsRequestorID", HFILL }},
18246     { &hf_gsm_map_dataCodingScheme,
18247       { "dataCodingScheme", "gsm_map.dataCodingScheme",
18248         FT_BYTES, BASE_HEX, NULL, 0,
18249         "", HFILL }},
18250     { &hf_gsm_map_nameString,
18251       { "nameString", "gsm_map.nameString",
18252         FT_BYTES, BASE_HEX, NULL, 0,
18253         "LCSClientName/nameString", HFILL }},
18254     { &hf_gsm_map_lcs_FormatIndicator,
18255       { "lcs-FormatIndicator", "gsm_map.lcs_FormatIndicator",
18256         FT_UINT32, BASE_DEC, VALS(gsm_map_LCS_FormatIndicator_vals), 0,
18257         "", HFILL }},
18258     { &hf_gsm_map_requestorIDString,
18259       { "requestorIDString", "gsm_map.requestorIDString",
18260         FT_BYTES, BASE_HEX, NULL, 0,
18261         "LCSRequestorID/requestorIDString", HFILL }},
18262     { &hf_gsm_map_horizontal_accuracy,
18263       { "horizontal-accuracy", "gsm_map.horizontal_accuracy",
18264         FT_BYTES, BASE_HEX, NULL, 0,
18265         "LCS-QoS/horizontal-accuracy", HFILL }},
18266     { &hf_gsm_map_verticalCoordinateRequest,
18267       { "verticalCoordinateRequest", "gsm_map.verticalCoordinateRequest",
18268         FT_NONE, BASE_NONE, NULL, 0,
18269         "LCS-QoS/verticalCoordinateRequest", HFILL }},
18270     { &hf_gsm_map_vertical_accuracy,
18271       { "vertical-accuracy", "gsm_map.vertical_accuracy",
18272         FT_BYTES, BASE_HEX, NULL, 0,
18273         "LCS-QoS/vertical-accuracy", HFILL }},
18274     { &hf_gsm_map_responseTime,
18275       { "responseTime", "gsm_map.responseTime",
18276         FT_NONE, BASE_NONE, NULL, 0,
18277         "LCS-QoS/responseTime", HFILL }},
18278     { &hf_gsm_map_responseTimeCategory,
18279       { "responseTimeCategory", "gsm_map.responseTimeCategory",
18280         FT_UINT32, BASE_DEC, VALS(gsm_map_ResponseTimeCategory_vals), 0,
18281         "ResponseTime/responseTimeCategory", HFILL }},
18282     { &hf_gsm_map_lcsCodewordString,
18283       { "lcsCodewordString", "gsm_map.lcsCodewordString",
18284         FT_BYTES, BASE_HEX, NULL, 0,
18285         "LCSCodeword/lcsCodewordString", HFILL }},
18286     { &hf_gsm_map_callSessionUnrelated,
18287       { "callSessionUnrelated", "gsm_map.callSessionUnrelated",
18288         FT_UINT32, BASE_DEC, VALS(gsm_map_PrivacyCheckRelatedAction_vals), 0,
18289         "LCS-PrivacyCheck/callSessionUnrelated", HFILL }},
18290     { &hf_gsm_map_callSessionRelated,
18291       { "callSessionRelated", "gsm_map.callSessionRelated",
18292         FT_UINT32, BASE_DEC, VALS(gsm_map_PrivacyCheckRelatedAction_vals), 0,
18293         "LCS-PrivacyCheck/callSessionRelated", HFILL }},
18294     { &hf_gsm_map_areaDefinition,
18295       { "areaDefinition", "gsm_map.areaDefinition",
18296         FT_NONE, BASE_NONE, NULL, 0,
18297         "AreaEventInfo/areaDefinition", HFILL }},
18298     { &hf_gsm_map_occurrenceInfo,
18299       { "occurrenceInfo", "gsm_map.occurrenceInfo",
18300         FT_UINT32, BASE_DEC, VALS(gsm_map_OccurrenceInfo_vals), 0,
18301         "AreaEventInfo/occurrenceInfo", HFILL }},
18302     { &hf_gsm_map_intervalTime,
18303       { "intervalTime", "gsm_map.intervalTime",
18304         FT_UINT32, BASE_DEC, NULL, 0,
18305         "AreaEventInfo/intervalTime", HFILL }},
18306     { &hf_gsm_map_areaList,
18307       { "areaList", "gsm_map.areaList",
18308         FT_UINT32, BASE_DEC, NULL, 0,
18309         "AreaDefinition/areaList", HFILL }},
18310     { &hf_gsm_map_AreaList_item,
18311       { "Item", "gsm_map.AreaList_item",
18312         FT_NONE, BASE_NONE, NULL, 0,
18313         "AreaList/_item", HFILL }},
18314     { &hf_gsm_map_areaType,
18315       { "areaType", "gsm_map.areaType",
18316         FT_UINT32, BASE_DEC, VALS(gsm_map_AreaType_vals), 0,
18317         "Area/areaType", HFILL }},
18318     { &hf_gsm_map_areaIdentification,
18319       { "areaIdentification", "gsm_map.areaIdentification",
18320         FT_BYTES, BASE_HEX, NULL, 0,
18321         "Area/areaIdentification", HFILL }},
18322     { &hf_gsm_map_locationEstimate,
18323       { "locationEstimate", "gsm_map.locationEstimate",
18324         FT_BYTES, BASE_HEX, NULL, 0,
18325         "", HFILL }},
18326     { &hf_gsm_map_ageOfLocationEstimate,
18327       { "ageOfLocationEstimate", "gsm_map.ageOfLocationEstimate",
18328         FT_UINT32, BASE_DEC, NULL, 0,
18329         "", HFILL }},
18330     { &hf_gsm_map_add_LocationEstimate,
18331       { "add-LocationEstimate", "gsm_map.add_LocationEstimate",
18332         FT_BYTES, BASE_HEX, NULL, 0,
18333         "", HFILL }},
18334     { &hf_gsm_map_deferredmt_lrResponseIndicator,
18335       { "deferredmt-lrResponseIndicator", "gsm_map.deferredmt_lrResponseIndicator",
18336         FT_NONE, BASE_NONE, NULL, 0,
18337         "ProvideSubscriberLocation-Res/deferredmt-lrResponseIndicator", HFILL }},
18338     { &hf_gsm_map_geranPositioningData,
18339       { "geranPositioningData", "gsm_map.geranPositioningData",
18340         FT_BYTES, BASE_HEX, NULL, 0,
18341         "", HFILL }},
18342     { &hf_gsm_map_utranPositioningData,
18343       { "utranPositioningData", "gsm_map.utranPositioningData",
18344         FT_BYTES, BASE_HEX, NULL, 0,
18345         "", HFILL }},
18346     { &hf_gsm_map_cellIdOrSai,
18347       { "cellIdOrSai", "gsm_map.cellIdOrSai",
18348         FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
18349         "", HFILL }},
18350     { &hf_gsm_map_mlcNumber,
18351       { "mlcNumber", "gsm_map.mlcNumber",
18352         FT_BYTES, BASE_HEX, NULL, 0,
18353         "RoutingInfoForLCS-Arg/mlcNumber", HFILL }},
18354     { &hf_gsm_map_targetMS,
18355       { "targetMS", "gsm_map.targetMS",
18356         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
18357         "", HFILL }},
18358     { &hf_gsm_map_lcsLocationInfo,
18359       { "lcsLocationInfo", "gsm_map.lcsLocationInfo",
18360         FT_NONE, BASE_NONE, NULL, 0,
18361         "", HFILL }},
18362     { &hf_gsm_map_ppr_Address,
18363       { "ppr-Address", "gsm_map.ppr_Address",
18364         FT_BYTES, BASE_HEX, NULL, 0,
18365         "RoutingInfoForLCS-Res/ppr-Address", HFILL }},
18366     { &hf_gsm_map_additional_v_gmlc_Address,
18367       { "additional-v-gmlc-Address", "gsm_map.additional_v_gmlc_Address",
18368         FT_BYTES, BASE_HEX, NULL, 0,
18369         "RoutingInfoForLCS-Res/additional-v-gmlc-Address", HFILL }},
18370     { &hf_gsm_map_additional_LCS_CapabilitySets,
18371       { "additional-LCS-CapabilitySets", "gsm_map.additional_LCS_CapabilitySets",
18372         FT_BYTES, BASE_HEX, NULL, 0,
18373         "LCSLocationInfo/additional-LCS-CapabilitySets", HFILL }},
18374     { &hf_gsm_map_lcs_Event,
18375       { "lcs-Event", "gsm_map.lcs_Event",
18376         FT_UINT32, BASE_DEC, VALS(gsm_map_LCS_Event_vals), 0,
18377         "SubscriberLocationReport-Arg/lcs-Event", HFILL }},
18378     { &hf_gsm_map_na_ESRD,
18379       { "na-ESRD", "gsm_map.na_ESRD",
18380         FT_BYTES, BASE_HEX, NULL, 0,
18381         "", HFILL }},
18382     { &hf_gsm_map_na_ESRK,
18383       { "na-ESRK", "gsm_map.na_ESRK",
18384         FT_BYTES, BASE_HEX, NULL, 0,
18385         "", HFILL }},
18386     { &hf_gsm_map_slr_ArgExtensionContainer,
18387       { "slr-ArgExtensionContainer", "gsm_map.slr_ArgExtensionContainer",
18388         FT_NONE, BASE_NONE, NULL, 0,
18389         "SubscriberLocationReport-Arg/slr-ArgExtensionContainer", HFILL }},
18390     { &hf_gsm_map_deferredmt_lrData,
18391       { "deferredmt-lrData", "gsm_map.deferredmt_lrData",
18392         FT_NONE, BASE_NONE, NULL, 0,
18393         "SubscriberLocationReport-Arg/deferredmt-lrData", HFILL }},
18394     { &hf_gsm_map_pseudonymIndicator,
18395       { "pseudonymIndicator", "gsm_map.pseudonymIndicator",
18396         FT_NONE, BASE_NONE, NULL, 0,
18397         "SubscriberLocationReport-Arg/pseudonymIndicator", HFILL }},
18398     { &hf_gsm_map_terminationCause,
18399       { "terminationCause", "gsm_map.terminationCause",
18400         FT_UINT32, BASE_DEC, VALS(gsm_map_TerminationCause_vals), 0,
18401         "Deferredmt-lrData/terminationCause", HFILL }},
18402     { &hf_gsm_map_securityHeader,
18403       { "securityHeader", "gsm_map.securityHeader",
18404         FT_NONE, BASE_NONE, NULL, 0,
18405         "", HFILL }},
18406     { &hf_gsm_map_protectedPayload,
18407       { "protectedPayload", "gsm_map.protectedPayload",
18408         FT_BYTES, BASE_HEX, NULL, 0,
18409         "", HFILL }},
18410     { &hf_gsm_map_securityParametersIndex,
18411       { "securityParametersIndex", "gsm_map.securityParametersIndex",
18412         FT_BYTES, BASE_HEX, NULL, 0,
18413         "SecurityHeader/securityParametersIndex", HFILL }},
18414     { &hf_gsm_map_originalComponentIdentifier,
18415       { "originalComponentIdentifier", "gsm_map.originalComponentIdentifier",
18416         FT_UINT32, BASE_DEC, VALS(gsm_map_OriginalComponentIdentifier_vals), 0,
18417         "SecurityHeader/originalComponentIdentifier", HFILL }},
18418     { &hf_gsm_map_initialisationVector,
18419       { "initialisationVector", "gsm_map.initialisationVector",
18420         FT_BYTES, BASE_HEX, NULL, 0,
18421         "SecurityHeader/initialisationVector", HFILL }},
18422     { &hf_gsm_map_operationCode,
18423       { "operationCode", "gsm_map.operationCode",
18424         FT_UINT32, BASE_DEC, VALS(gsm_map_OperationCode_vals), 0,
18425         "OriginalComponentIdentifier/operationCode", HFILL }},
18426     { &hf_gsm_map_errorCode1,
18427       { "errorCode", "gsm_map.errorCode",
18428         FT_UINT32, BASE_DEC, VALS(gsm_map_ErrorCode_vals), 0,
18429         "OriginalComponentIdentifier/errorCode", HFILL }},
18430     { &hf_gsm_map_userInfo,
18431       { "userInfo", "gsm_map.userInfo",
18432         FT_NONE, BASE_NONE, NULL, 0,
18433         "OriginalComponentIdentifier/userInfo", HFILL }},
18434     { &hf_gsm_map_localValue2,
18435       { "localValue", "gsm_map.localValue",
18436         FT_INT32, BASE_DEC, NULL, 0,
18437         "", HFILL }},
18438     { &hf_gsm_map_networkResource,
18439       { "networkResource", "gsm_map.networkResource",
18440         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0,
18441         "", HFILL }},
18442     { &hf_gsm_map_extensibleSystemFailureParam,
18443       { "extensibleSystemFailureParam", "gsm_map.extensibleSystemFailureParam",
18444         FT_NONE, BASE_NONE, NULL, 0,
18445         "SystemFailureParam/extensibleSystemFailureParam", HFILL }},
18446     { &hf_gsm_map_unknownSubscriberDiagnostic,
18447       { "unknownSubscriberDiagnostic", "gsm_map.unknownSubscriberDiagnostic",
18448         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unknownSubscriberDiagnostic_vals), 0,
18449         "UnknownSubscriberParam/unknownSubscriberDiagnostic", HFILL }},
18450     { &hf_gsm_map_roamingNotAllowedCause,
18451       { "roamingNotAllowedCause", "gsm_map.roamingNotAllowedCause",
18452         FT_UINT32, BASE_DEC, VALS(gsm_map_T_roamingNotAllowedCause_vals), 0,
18453         "RoamingNotAllowedParam/roamingNotAllowedCause", HFILL }},
18454     { &hf_gsm_map_absentSubscriberReason,
18455       { "absentSubscriberReason", "gsm_map.absentSubscriberReason",
18456         FT_UINT32, BASE_DEC, VALS(gsm_map_AbsentSubscriberReason_vals), 0,
18457         "AbsentSubscriberParam/absentSubscriberReason", HFILL }},
18458     { &hf_gsm_map_ccbs_Busy,
18459       { "ccbs-Busy", "gsm_map.ccbs_Busy",
18460         FT_NONE, BASE_NONE, NULL, 0,
18461         "BusySubscriberParam/ccbs-Busy", HFILL }},
18462     { &hf_gsm_map_gprsConnectionSuspended,
18463       { "gprsConnectionSuspended", "gsm_map.gprsConnectionSuspended",
18464         FT_NONE, BASE_NONE, NULL, 0,
18465         "SubBusyForMT-SMS-Param/gprsConnectionSuspended", HFILL }},
18466     { &hf_gsm_map_callBarringCause,
18467       { "callBarringCause", "gsm_map.callBarringCause",
18468         FT_UINT32, BASE_DEC, VALS(gsm_map_CallBarringCause_vals), 0,
18469         "", HFILL }},
18470     { &hf_gsm_map_extensibleCallBarredParam,
18471       { "extensibleCallBarredParam", "gsm_map.extensibleCallBarredParam",
18472         FT_NONE, BASE_NONE, NULL, 0,
18473         "CallBarredParam/extensibleCallBarredParam", HFILL }},
18474     { &hf_gsm_map_unauthorisedMessageOriginator,
18475       { "unauthorisedMessageOriginator", "gsm_map.unauthorisedMessageOriginator",
18476         FT_NONE, BASE_NONE, NULL, 0,
18477         "ExtensibleCallBarredParam/unauthorisedMessageOriginator", HFILL }},
18478     { &hf_gsm_map_cug_RejectCause,
18479       { "cug-RejectCause", "gsm_map.cug_RejectCause",
18480         FT_UINT32, BASE_DEC, VALS(gsm_map_CUG_RejectCause_vals), 0,
18481         "CUG-RejectParam/cug-RejectCause", HFILL }},
18482     { &hf_gsm_map_cug_RejectCause1,
18483       { "cug-RejectCause", "gsm_map.cug_RejectCause",
18484         FT_UINT32, BASE_DEC, VALS(gsm_map_T_cug_RejectCause_vals), 0,
18485         "Cug-RejectParam/cug-RejectCause", HFILL }},
18486     { &hf_gsm_map_sm_EnumeratedDeliveryFailureCause,
18487       { "sm-EnumeratedDeliveryFailureCause", "gsm_map.sm_EnumeratedDeliveryFailureCause",
18488         FT_UINT32, BASE_DEC, VALS(gsm_map_SM_EnumeratedDeliveryFailureCause_vals), 0,
18489         "SM-DeliveryFailureCause/sm-EnumeratedDeliveryFailureCause", HFILL }},
18490     { &hf_gsm_map_diagnosticInfo,
18491       { "diagnosticInfo", "gsm_map.diagnosticInfo",
18492         FT_BYTES, BASE_HEX, NULL, 0,
18493         "SM-DeliveryFailureCause/diagnosticInfo", HFILL }},
18494     { &hf_gsm_map_unauthorizedLCSClient_Diagnostic,
18495       { "unauthorizedLCSClient-Diagnostic", "gsm_map.unauthorizedLCSClient_Diagnostic",
18496         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unauthorizedLCSClient_Diagnostic_vals), 0,
18497         "UnauthorizedLCSClient-Param/unauthorizedLCSClient-Diagnostic", HFILL }},
18498     { &hf_gsm_map_positionMethodFailure_Diagnostic,
18499       { "positionMethodFailure-Diagnostic", "gsm_map.positionMethodFailure_Diagnostic",
18500         FT_UINT32, BASE_DEC, VALS(gsm_map_PositionMethodFailure_Diagnostic_vals), 0,
18501         "PositionMethodFailure-Param/positionMethodFailure-Diagnostic", HFILL }},
18502     { &hf_gsm_map_pcsExtensions,
18503       { "pcsExtensions", "gsm_map.pcsExtensions",
18504         FT_NONE, BASE_NONE, NULL, 0,
18505         "ExtensionContainer/pcsExtensions", HFILL }},
18506     { &hf_gsm_map_SupportedCamelPhases_phase1,
18507       { "phase1", "gsm_map.phase1",
18508         FT_BOOLEAN, 8, NULL, 0x80,
18509         "", HFILL }},
18510     { &hf_gsm_map_SupportedCamelPhases_phase2,
18511       { "phase2", "gsm_map.phase2",
18512         FT_BOOLEAN, 8, NULL, 0x40,
18513         "", HFILL }},
18514     { &hf_gsm_map_SupportedCamelPhases_phase3,
18515       { "phase3", "gsm_map.phase3",
18516         FT_BOOLEAN, 8, NULL, 0x20,
18517         "", HFILL }},
18518     { &hf_gsm_map_SupportedCamelPhases_phase4,
18519       { "phase4", "gsm_map.phase4",
18520         FT_BOOLEAN, 8, NULL, 0x10,
18521         "", HFILL }},
18522     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1,
18523       { "lcsCapabilitySet1", "gsm_map.lcsCapabilitySet1",
18524         FT_BOOLEAN, 8, NULL, 0x80,
18525         "", HFILL }},
18526     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2,
18527       { "lcsCapabilitySet2", "gsm_map.lcsCapabilitySet2",
18528         FT_BOOLEAN, 8, NULL, 0x40,
18529         "", HFILL }},
18530     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3,
18531       { "lcsCapabilitySet3", "gsm_map.lcsCapabilitySet3",
18532         FT_BOOLEAN, 8, NULL, 0x20,
18533         "", HFILL }},
18534     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4,
18535       { "lcsCapabilitySet4", "gsm_map.lcsCapabilitySet4",
18536         FT_BOOLEAN, 8, NULL, 0x10,
18537         "", HFILL }},
18538     { &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus,
18539       { "equipmentStatus", "gsm_map.equipmentStatus",
18540         FT_BOOLEAN, 8, NULL, 0x80,
18541         "", HFILL }},
18542     { &hf_gsm_map_RequestedEquipmentInfo_bmuef,
18543       { "bmuef", "gsm_map.bmuef",
18544         FT_BOOLEAN, 8, NULL, 0x40,
18545         "", HFILL }},
18546     { &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred,
18547       { "allOG-CallsBarred", "gsm_map.allOG-CallsBarred",
18548         FT_BOOLEAN, 8, NULL, 0x80,
18549         "", HFILL }},
18550     { &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred,
18551       { "internationalOGCallsBarred", "gsm_map.internationalOGCallsBarred",
18552         FT_BOOLEAN, 8, NULL, 0x40,
18553         "", HFILL }},
18554     { &hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred,
18555       { "internationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.internationalOGCallsNotToHPLMN-CountryBarred",
18556         FT_BOOLEAN, 8, NULL, 0x20,
18557         "", HFILL }},
18558     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred,
18559       { "interzonalOGCallsBarred", "gsm_map.interzonalOGCallsBarred",
18560         FT_BOOLEAN, 8, NULL, 0x02,
18561         "", HFILL }},
18562     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred,
18563       { "interzonalOGCallsNotToHPLMN-CountryBarred", "gsm_map.interzonalOGCallsNotToHPLMN-CountryBarred",
18564         FT_BOOLEAN, 8, NULL, 0x01,
18565         "", HFILL }},
18566     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred,
18567       { "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred",
18568         FT_BOOLEAN, 8, NULL, 0x80,
18569         "", HFILL }},
18570     { &hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred,
18571       { "premiumRateInformationOGCallsBarred", "gsm_map.premiumRateInformationOGCallsBarred",
18572         FT_BOOLEAN, 8, NULL, 0x10,
18573         "", HFILL }},
18574     { &hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred,
18575       { "premiumRateEntertainementOGCallsBarred", "gsm_map.premiumRateEntertainementOGCallsBarred",
18576         FT_BOOLEAN, 8, NULL, 0x08,
18577         "", HFILL }},
18578     { &hf_gsm_map_ODB_GeneralData_ss_AccessBarred,
18579       { "ss-AccessBarred", "gsm_map.ss-AccessBarred",
18580         FT_BOOLEAN, 8, NULL, 0x04,
18581         "", HFILL }},
18582     { &hf_gsm_map_ODB_GeneralData_allECT_Barred,
18583       { "allECT-Barred", "gsm_map.allECT-Barred",
18584         FT_BOOLEAN, 8, NULL, 0x40,
18585         "", HFILL }},
18586     { &hf_gsm_map_ODB_GeneralData_chargeableECT_Barred,
18587       { "chargeableECT-Barred", "gsm_map.chargeableECT-Barred",
18588         FT_BOOLEAN, 8, NULL, 0x20,
18589         "", HFILL }},
18590     { &hf_gsm_map_ODB_GeneralData_internationalECT_Barred,
18591       { "internationalECT-Barred", "gsm_map.internationalECT-Barred",
18592         FT_BOOLEAN, 8, NULL, 0x10,
18593         "", HFILL }},
18594     { &hf_gsm_map_ODB_GeneralData_interzonalECT_Barred,
18595       { "interzonalECT-Barred", "gsm_map.interzonalECT-Barred",
18596         FT_BOOLEAN, 8, NULL, 0x08,
18597         "", HFILL }},
18598     { &hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred,
18599       { "doublyChargeableECT-Barred", "gsm_map.doublyChargeableECT-Barred",
18600         FT_BOOLEAN, 8, NULL, 0x04,
18601         "", HFILL }},
18602     { &hf_gsm_map_ODB_GeneralData_multipleECT_Barred,
18603       { "multipleECT-Barred", "gsm_map.multipleECT-Barred",
18604         FT_BOOLEAN, 8, NULL, 0x02,
18605         "", HFILL }},
18606     { &hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred,
18607       { "allPacketOrientedServicesBarred", "gsm_map.allPacketOrientedServicesBarred",
18608         FT_BOOLEAN, 8, NULL, 0x01,
18609         "", HFILL }},
18610     { &hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred,
18611       { "roamerAccessToHPLMN-AP-Barred", "gsm_map.roamerAccessToHPLMN-AP-Barred",
18612         FT_BOOLEAN, 8, NULL, 0x80,
18613         "", HFILL }},
18614     { &hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred,
18615       { "roamerAccessToVPLMN-AP-Barred", "gsm_map.roamerAccessToVPLMN-AP-Barred",
18616         FT_BOOLEAN, 8, NULL, 0x40,
18617         "", HFILL }},
18618     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred,
18619       { "roamingOutsidePLMNOG-CallsBarred", "gsm_map.roamingOutsidePLMNOG-CallsBarred",
18620         FT_BOOLEAN, 8, NULL, 0x20,
18621         "", HFILL }},
18622     { &hf_gsm_map_ODB_GeneralData_allIC_CallsBarred,
18623       { "allIC-CallsBarred", "gsm_map.allIC-CallsBarred",
18624         FT_BOOLEAN, 8, NULL, 0x10,
18625         "", HFILL }},
18626     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred,
18627       { "roamingOutsidePLMNIC-CallsBarred", "gsm_map.roamingOutsidePLMNIC-CallsBarred",
18628         FT_BOOLEAN, 8, NULL, 0x08,
18629         "", HFILL }},
18630     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred,
18631       { "roamingOutsidePLMNICountryIC-CallsBarred", "gsm_map.roamingOutsidePLMNICountryIC-CallsBarred",
18632         FT_BOOLEAN, 8, NULL, 0x04,
18633         "", HFILL }},
18634     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred,
18635       { "roamingOutsidePLMN-Barred", "gsm_map.roamingOutsidePLMN-Barred",
18636         FT_BOOLEAN, 8, NULL, 0x02,
18637         "", HFILL }},
18638     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred,
18639       { "roamingOutsidePLMN-CountryBarred", "gsm_map.roamingOutsidePLMN-CountryBarred",
18640         FT_BOOLEAN, 8, NULL, 0x01,
18641         "", HFILL }},
18642     { &hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred,
18643       { "registrationAllCF-Barred", "gsm_map.registrationAllCF-Barred",
18644         FT_BOOLEAN, 8, NULL, 0x80,
18645         "", HFILL }},
18646     { &hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred,
18647       { "registrationCFNotToHPLMN-Barred", "gsm_map.registrationCFNotToHPLMN-Barred",
18648         FT_BOOLEAN, 8, NULL, 0x40,
18649         "", HFILL }},
18650     { &hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred,
18651       { "registrationInterzonalCF-Barred", "gsm_map.registrationInterzonalCF-Barred",
18652         FT_BOOLEAN, 8, NULL, 0x20,
18653         "", HFILL }},
18654     { &hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred,
18655       { "registrationInterzonalCFNotToHPLMN-Barred", "gsm_map.registrationInterzonalCFNotToHPLMN-Barred",
18656         FT_BOOLEAN, 8, NULL, 0x10,
18657         "", HFILL }},
18658     { &hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred,
18659       { "registrationInternationalCF-Barred", "gsm_map.registrationInternationalCF-Barred",
18660         FT_BOOLEAN, 8, NULL, 0x08,
18661         "", HFILL }},
18662     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1,
18663       { "plmn-SpecificBarringType1", "gsm_map.plmn-SpecificBarringType1",
18664         FT_BOOLEAN, 8, NULL, 0x80,
18665         "", HFILL }},
18666     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2,
18667       { "plmn-SpecificBarringType2", "gsm_map.plmn-SpecificBarringType2",
18668         FT_BOOLEAN, 8, NULL, 0x40,
18669         "", HFILL }},
18670     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3,
18671       { "plmn-SpecificBarringType3", "gsm_map.plmn-SpecificBarringType3",
18672         FT_BOOLEAN, 8, NULL, 0x20,
18673         "", HFILL }},
18674     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4,
18675       { "plmn-SpecificBarringType4", "gsm_map.plmn-SpecificBarringType4",
18676         FT_BOOLEAN, 8, NULL, 0x10,
18677         "", HFILL }},
18678     { &hf_gsm_map_AccessRestrictionData_utranNotAllowed,
18679       { "utranNotAllowed", "gsm_map.utranNotAllowed",
18680         FT_BOOLEAN, 8, NULL, 0x80,
18681         "", HFILL }},
18682     { &hf_gsm_map_AccessRestrictionData_geranNotAllowed,
18683       { "geranNotAllowed", "gsm_map.geranNotAllowed",
18684         FT_BOOLEAN, 8, NULL, 0x40,
18685         "", HFILL }},
18686     { &hf_gsm_map_SpecificCSI_Withdraw_o_csi,
18687       { "o-csi", "gsm_map.o-csi",
18688         FT_BOOLEAN, 8, NULL, 0x80,
18689         "", HFILL }},
18690     { &hf_gsm_map_SpecificCSI_Withdraw_ss_csi,
18691       { "ss-csi", "gsm_map.ss-csi",
18692         FT_BOOLEAN, 8, NULL, 0x40,
18693         "", HFILL }},
18694     { &hf_gsm_map_SpecificCSI_Withdraw_tif_csi,
18695       { "tif-csi", "gsm_map.tif-csi",
18696         FT_BOOLEAN, 8, NULL, 0x20,
18697         "", HFILL }},
18698     { &hf_gsm_map_SpecificCSI_Withdraw_d_csi,
18699       { "d-csi", "gsm_map.d-csi",
18700         FT_BOOLEAN, 8, NULL, 0x10,
18701         "", HFILL }},
18702     { &hf_gsm_map_SpecificCSI_Withdraw_vt_csi,
18703       { "vt-csi", "gsm_map.vt-csi",
18704         FT_BOOLEAN, 8, NULL, 0x08,
18705         "", HFILL }},
18706     { &hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi,
18707       { "mo-sms-csi", "gsm_map.mo-sms-csi",
18708         FT_BOOLEAN, 8, NULL, 0x04,
18709         "", HFILL }},
18710     { &hf_gsm_map_SpecificCSI_Withdraw_m_csi,
18711       { "m-csi", "gsm_map.m-csi",
18712         FT_BOOLEAN, 8, NULL, 0x02,
18713         "", HFILL }},
18714     { &hf_gsm_map_SpecificCSI_Withdraw_gprs_csi,
18715       { "gprs-csi", "gsm_map.gprs-csi",
18716         FT_BOOLEAN, 8, NULL, 0x01,
18717         "", HFILL }},
18718     { &hf_gsm_map_SpecificCSI_Withdraw_t_csi,
18719       { "t-csi", "gsm_map.t-csi",
18720         FT_BOOLEAN, 8, NULL, 0x80,
18721         "", HFILL }},
18722     { &hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi,
18723       { "mt-sms-csi", "gsm_map.mt-sms-csi",
18724         FT_BOOLEAN, 8, NULL, 0x40,
18725         "", HFILL }},
18726     { &hf_gsm_map_SpecificCSI_Withdraw_mg_csi,
18727       { "mg-csi", "gsm_map.mg-csi",
18728         FT_BOOLEAN, 8, NULL, 0x20,
18729         "", HFILL }},
18730     { &hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI,
18731       { "o-IM-CSI", "gsm_map.o-IM-CSI",
18732         FT_BOOLEAN, 8, NULL, 0x10,
18733         "", HFILL }},
18734     { &hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI,
18735       { "d-IM-CSI", "gsm_map.d-IM-CSI",
18736         FT_BOOLEAN, 8, NULL, 0x08,
18737         "", HFILL }},
18738     { &hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI,
18739       { "vt-IM-CSI", "gsm_map.vt-IM-CSI",
18740         FT_BOOLEAN, 8, NULL, 0x04,
18741         "", HFILL }},
18742     { &hf_gsm_map_AllowedServices_firstServiceAllowed,
18743       { "firstServiceAllowed", "gsm_map.firstServiceAllowed",
18744         FT_BOOLEAN, 8, NULL, 0x80,
18745         "", HFILL }},
18746     { &hf_gsm_map_AllowedServices_secondServiceAllowed,
18747       { "secondServiceAllowed", "gsm_map.secondServiceAllowed",
18748         FT_BOOLEAN, 8, NULL, 0x40,
18749         "", HFILL }},
18750     { &hf_gsm_map_ServiceIndicator_clir_invoked,
18751       { "clir-invoked", "gsm_map.clir-invoked",
18752         FT_BOOLEAN, 8, NULL, 0x80,
18753         "", HFILL }},
18754     { &hf_gsm_map_ServiceIndicator_camel_invoked,
18755       { "camel-invoked", "gsm_map.camel-invoked",
18756         FT_BOOLEAN, 8, NULL, 0x40,
18757         "", HFILL }},
18758     { &hf_gsm_map_T_mw_Status_scAddressNotIncluded,
18759       { "scAddressNotIncluded", "gsm_map.scAddressNotIncluded",
18760         FT_BOOLEAN, 8, NULL, 0x80,
18761         "", HFILL }},
18762     { &hf_gsm_map_T_mw_Status_mnrfSet,
18763       { "mnrfSet", "gsm_map.mnrfSet",
18764         FT_BOOLEAN, 8, NULL, 0x40,
18765         "", HFILL }},
18766     { &hf_gsm_map_T_mw_Status_mcefSet,
18767       { "mcefSet", "gsm_map.mcefSet",
18768         FT_BOOLEAN, 8, NULL, 0x20,
18769         "", HFILL }},
18770     { &hf_gsm_map_T_mw_Status_mnrgSet,
18771       { "mnrgSet", "gsm_map.mnrgSet",
18772         FT_BOOLEAN, 8, NULL, 0x10,
18773         "", HFILL }},
18774     { &hf_gsm_map_OfferedCamel4CSIs_o_csi,
18775       { "o-csi", "gsm_map.o-csi",
18776         FT_BOOLEAN, 8, NULL, 0x80,
18777         "", HFILL }},
18778     { &hf_gsm_map_OfferedCamel4CSIs_d_csi,
18779       { "d-csi", "gsm_map.d-csi",
18780         FT_BOOLEAN, 8, NULL, 0x40,
18781         "", HFILL }},
18782     { &hf_gsm_map_OfferedCamel4CSIs_vt_csi,
18783       { "vt-csi", "gsm_map.vt-csi",
18784         FT_BOOLEAN, 8, NULL, 0x20,
18785         "", HFILL }},
18786     { &hf_gsm_map_OfferedCamel4CSIs_t_csi,
18787       { "t-csi", "gsm_map.t-csi",
18788         FT_BOOLEAN, 8, NULL, 0x10,
18789         "", HFILL }},
18790     { &hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi,
18791       { "mt-sms-csi", "gsm_map.mt-sms-csi",
18792         FT_BOOLEAN, 8, NULL, 0x08,
18793         "", HFILL }},
18794     { &hf_gsm_map_OfferedCamel4CSIs_mg_csi,
18795       { "mg-csi", "gsm_map.mg-csi",
18796         FT_BOOLEAN, 8, NULL, 0x04,
18797         "", HFILL }},
18798     { &hf_gsm_map_OfferedCamel4CSIs_psi_enhancements,
18799       { "psi-enhancements", "gsm_map.psi-enhancements",
18800         FT_BOOLEAN, 8, NULL, 0x02,
18801         "", HFILL }},
18802     { &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt,
18803       { "initiateCallAttempt", "gsm_map.initiateCallAttempt",
18804         FT_BOOLEAN, 8, NULL, 0x80,
18805         "", HFILL }},
18806     { &hf_gsm_map_OfferedCamel4Functionalities_splitLeg,
18807       { "splitLeg", "gsm_map.splitLeg",
18808         FT_BOOLEAN, 8, NULL, 0x40,
18809         "", HFILL }},
18810     { &hf_gsm_map_OfferedCamel4Functionalities_moveLeg,
18811       { "moveLeg", "gsm_map.moveLeg",
18812         FT_BOOLEAN, 8, NULL, 0x20,
18813         "", HFILL }},
18814     { &hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg,
18815       { "disconnectLeg", "gsm_map.disconnectLeg",
18816         FT_BOOLEAN, 8, NULL, 0x10,
18817         "", HFILL }},
18818     { &hf_gsm_map_OfferedCamel4Functionalities_entityReleased,
18819       { "entityReleased", "gsm_map.entityReleased",
18820         FT_BOOLEAN, 8, NULL, 0x08,
18821         "", HFILL }},
18822     { &hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument,
18823       { "dfc-WithArgument", "gsm_map.dfc-WithArgument",
18824         FT_BOOLEAN, 8, NULL, 0x04,
18825         "", HFILL }},
18826     { &hf_gsm_map_OfferedCamel4Functionalities_playTone,
18827       { "playTone", "gsm_map.playTone",
18828         FT_BOOLEAN, 8, NULL, 0x02,
18829         "", HFILL }},
18830     { &hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall,
18831       { "dtmf-MidCall", "gsm_map.dtmf-MidCall",
18832         FT_BOOLEAN, 8, NULL, 0x01,
18833         "", HFILL }},
18834     { &hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator,
18835       { "chargingIndicator", "gsm_map.chargingIndicator",
18836         FT_BOOLEAN, 8, NULL, 0x80,
18837         "", HFILL }},
18838     { &hf_gsm_map_OfferedCamel4Functionalities_alertingDP,
18839       { "alertingDP", "gsm_map.alertingDP",
18840         FT_BOOLEAN, 8, NULL, 0x40,
18841         "", HFILL }},
18842     { &hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting,
18843       { "locationAtAlerting", "gsm_map.locationAtAlerting",
18844         FT_BOOLEAN, 8, NULL, 0x20,
18845         "", HFILL }},
18846     { &hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP,
18847       { "changeOfPositionDP", "gsm_map.changeOfPositionDP",
18848         FT_BOOLEAN, 8, NULL, 0x10,
18849         "", HFILL }},
18850     { &hf_gsm_map_OfferedCamel4Functionalities_or_Interactions,
18851       { "or-Interactions", "gsm_map.or-Interactions",
18852         FT_BOOLEAN, 8, NULL, 0x08,
18853         "", HFILL }},
18854     { &hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements,
18855       { "warningToneEnhancements", "gsm_map.warningToneEnhancements",
18856         FT_BOOLEAN, 8, NULL, 0x04,
18857         "", HFILL }},
18858     { &hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements,
18859       { "cf-Enhancements", "gsm_map.cf-Enhancements",
18860         FT_BOOLEAN, 8, NULL, 0x02,
18861         "", HFILL }},
18862     { &hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices,
18863       { "subscribedEnhancedDialledServices", "gsm_map.subscribedEnhancedDialledServices",
18864         FT_BOOLEAN, 8, NULL, 0x01,
18865         "", HFILL }},
18866     { &hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices,
18867       { "servingNetworkEnhancedDialledServices", "gsm_map.servingNetworkEnhancedDialledServices",
18868         FT_BOOLEAN, 8, NULL, 0x80,
18869         "", HFILL }},
18870     { &hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP,
18871       { "criteriaForChangeOfPositionDP", "gsm_map.criteriaForChangeOfPositionDP",
18872         FT_BOOLEAN, 8, NULL, 0x40,
18873         "", HFILL }},
18874     { &hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP,
18875       { "serviceChangeDP", "gsm_map.serviceChangeDP",
18876         FT_BOOLEAN, 8, NULL, 0x20,
18877         "", HFILL }},
18878     { &hf_gsm_map_DeferredLocationEventType_msAvailable,
18879       { "msAvailable", "gsm_map.msAvailable",
18880         FT_BOOLEAN, 8, NULL, 0x80,
18881         "", HFILL }},
18882     { &hf_gsm_map_DeferredLocationEventType_enteringIntoArea,
18883       { "enteringIntoArea", "gsm_map.enteringIntoArea",
18884         FT_BOOLEAN, 8, NULL, 0x40,
18885         "", HFILL }},
18886     { &hf_gsm_map_DeferredLocationEventType_leavingFromArea,
18887       { "leavingFromArea", "gsm_map.leavingFromArea",
18888         FT_BOOLEAN, 8, NULL, 0x20,
18889         "", HFILL }},
18890     { &hf_gsm_map_DeferredLocationEventType_beingInsideArea,
18891       { "beingInsideArea", "gsm_map.beingInsideArea",
18892         FT_BOOLEAN, 8, NULL, 0x10,
18893         "", HFILL }},
18894     { &hf_gsm_map_SupportedGADShapes_ellipsoidPoint,
18895       { "ellipsoidPoint", "gsm_map.ellipsoidPoint",
18896         FT_BOOLEAN, 8, NULL, 0x80,
18897         "", HFILL }},
18898     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle,
18899       { "ellipsoidPointWithUncertaintyCircle", "gsm_map.ellipsoidPointWithUncertaintyCircle",
18900         FT_BOOLEAN, 8, NULL, 0x40,
18901         "", HFILL }},
18902     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse,
18903       { "ellipsoidPointWithUncertaintyEllipse", "gsm_map.ellipsoidPointWithUncertaintyEllipse",
18904         FT_BOOLEAN, 8, NULL, 0x20,
18905         "", HFILL }},
18906     { &hf_gsm_map_SupportedGADShapes_polygon,
18907       { "polygon", "gsm_map.polygon",
18908         FT_BOOLEAN, 8, NULL, 0x10,
18909         "", HFILL }},
18910     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude,
18911       { "ellipsoidPointWithAltitude", "gsm_map.ellipsoidPointWithAltitude",
18912         FT_BOOLEAN, 8, NULL, 0x08,
18913         "", HFILL }},
18914     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid,
18915       { "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", "gsm_map.ellipsoidPointWithAltitudeAndUncertaintyElipsoid",
18916         FT_BOOLEAN, 8, NULL, 0x04,
18917         "", HFILL }},
18918     { &hf_gsm_map_SupportedGADShapes_ellipsoidArc,
18919       { "ellipsoidArc", "gsm_map.ellipsoidArc",
18920         FT_BOOLEAN, 8, NULL, 0x02,
18921         "", HFILL }},
18922
18923 /*--- End of included file: packet-gsm_map-hfarr.c ---*/
18924 #line 1611 "packet-gsm_map-template.c"
18925   };
18926
18927   /* List of subtrees */
18928   static gint *ett[] = {
18929     &ett_gsm_map,
18930     &ett_gsm_map_InvokeId,
18931     &ett_gsm_map_InvokePDU,
18932     &ett_gsm_map_ReturnResultPDU,
18933         &ett_gsm_map_ReturnErrorPDU,
18934     &ett_gsm_map_ReturnResult_result,
18935         &ett_gsm_map_ReturnError_result,
18936     &ett_gsm_map_GSMMAPPDU,
18937
18938 /*--- Included file: packet-gsm_map-ettarr.c ---*/
18939 #line 1 "packet-gsm_map-ettarr.c"
18940     &ett_gsm_map_Component,
18941     &ett_gsm_map_Invoke,
18942     &ett_gsm_map_ReturnResult,
18943     &ett_gsm_map_T_resultretres,
18944     &ett_gsm_map_ReturnError,
18945     &ett_gsm_map_Reject,
18946     &ett_gsm_map_T_invokeIDRej,
18947     &ett_gsm_map_T_problem,
18948     &ett_gsm_map_OPERATION,
18949     &ett_gsm_map_ERROR,
18950     &ett_gsm_map_Bss_APDU,
18951     &ett_gsm_map_SupportedCamelPhases,
18952     &ett_gsm_map_UpdateLocationArg,
18953     &ett_gsm_map_UpdateLocationRes,
18954     &ett_gsm_map_VLR_Capability,
18955     &ett_gsm_map_SuperChargerInfo,
18956     &ett_gsm_map_SupportedLCS_CapabilitySets,
18957     &ett_gsm_map_ADD_Info,
18958     &ett_gsm_map_PrivateExtensionList,
18959     &ett_gsm_map_PrivateExtension,
18960     &ett_gsm_map_SLR_ArgExtensionContainer,
18961     &ett_gsm_map_PcsExtensions,
18962     &ett_gsm_map_SLR_Arg_PCS_Extensions,
18963     &ett_gsm_map_CancelLocationArg,
18964     &ett_gsm_map_CancelLocationArgV2,
18965     &ett_gsm_map_CancelLocationRes,
18966     &ett_gsm_map_PurgeMSArg,
18967     &ett_gsm_map_PurgeMSRes,
18968     &ett_gsm_map_SendIdentificationArg,
18969     &ett_gsm_map_SendIdentificationRes,
18970     &ett_gsm_map_AuthenticationSetList,
18971     &ett_gsm_map_TripletList,
18972     &ett_gsm_map_QuintupletList,
18973     &ett_gsm_map_AuthenticationTriplet,
18974     &ett_gsm_map_AuthenticationQuintuplet,
18975     &ett_gsm_map_CurrentSecurityContext,
18976     &ett_gsm_map_GSM_SecurityContextData,
18977     &ett_gsm_map_UMTS_SecurityContextData,
18978     &ett_gsm_map_PrepareHO_Arg,
18979     &ett_gsm_map_PrepareHO_ArgV3,
18980     &ett_gsm_map_BSSMAP_ServiceHandoverList,
18981     &ett_gsm_map_BSSMAP_ServiceHandoverInfo,
18982     &ett_gsm_map_RadioResourceList,
18983     &ett_gsm_map_RadioResource,
18984     &ett_gsm_map_PrepareHO_Res,
18985     &ett_gsm_map_PrepareHO_ResV3,
18986     &ett_gsm_map_SelectedUMTS_Algorithms,
18987     &ett_gsm_map_ChosenRadioResourceInformation,
18988     &ett_gsm_map_SendEndSignalArgV3,
18989     &ett_gsm_map_SendEndSignalRes,
18990     &ett_gsm_map_RelocationNumberList,
18991     &ett_gsm_map_RelocationNumber,
18992     &ett_gsm_map_ProcessAccessSignallingArgV3,
18993     &ett_gsm_map_SupportedCodecsList,
18994     &ett_gsm_map_CodecList,
18995     &ett_gsm_map_ForwardAccessSignallingArgV3,
18996     &ett_gsm_map_AllowedUMTS_Algorithms,
18997     &ett_gsm_map_PrepareSubsequentHOArg,
18998     &ett_gsm_map_PrepareSubsequentHOArgV3,
18999     &ett_gsm_map_PrepareSubsequentHOResV3,
19000     &ett_gsm_map_SendAuthenticationInfoArgV2,
19001     &ett_gsm_map_SendAuthenticationInfoRes,
19002     &ett_gsm_map_SendAuthenticationInfoRes_item,
19003     &ett_gsm_map_SendAuthenticationInfoResV3,
19004     &ett_gsm_map_Re_synchronisationInfo,
19005     &ett_gsm_map_CheckIMEIArgV2,
19006     &ett_gsm_map_CheckIMEIRes,
19007     &ett_gsm_map_RequestedEquipmentInfo,
19008     &ett_gsm_map_UESBI_Iu,
19009     &ett_gsm_map_BasicService,
19010     &ett_gsm_map_BasicServiceGroupList,
19011     &ett_gsm_map_ODB_GeneralData,
19012     &ett_gsm_map_ODB_HPLMN_Data,
19013     &ett_gsm_map_BcsmCamelTDPData,
19014     &ett_gsm_map_BcsmCamelTDPDataList,
19015     &ett_gsm_map_O_CSI,
19016     &ett_gsm_map_O_BcsmCamelTDPDataList,
19017     &ett_gsm_map_O_BcsmCamelTDPData,
19018     &ett_gsm_map_InsertSubscriberDataArg,
19019     &ett_gsm_map_AccessRestrictionData,
19020     &ett_gsm_map_LCSInformation,
19021     &ett_gsm_map_GMLC_List,
19022     &ett_gsm_map_GPRSDataList,
19023     &ett_gsm_map_PDP_Context,
19024     &ett_gsm_map_GPRSSubscriptionData,
19025     &ett_gsm_map_SGSN_CAMEL_SubscriptionInfo,
19026     &ett_gsm_map_GPRS_CSI,
19027     &ett_gsm_map_GPRS_CamelTDPDataList,
19028     &ett_gsm_map_GPRS_CamelTDPData,
19029     &ett_gsm_map_LSADataList,
19030     &ett_gsm_map_LSAData,
19031     &ett_gsm_map_LSAInformation,
19032     &ett_gsm_map_InsertSubscriberDataRes,
19033     &ett_gsm_map_DeleteSubscriberDataArg,
19034     &ett_gsm_map_DeleteSubscriberDataRes,
19035     &ett_gsm_map_SpecificCSI_Withdraw,
19036     &ett_gsm_map_GPRSSubscriptionDataWithdraw,
19037     &ett_gsm_map_ContextIdList,
19038     &ett_gsm_map_LSAInformationWithdraw,
19039     &ett_gsm_map_LSAIdentityList,
19040     &ett_gsm_map_BasicServiceList,
19041     &ett_gsm_map_VlrCamelSubscriptionInfo,
19042     &ett_gsm_map_MT_smsCAMELTDP_CriteriaList,
19043     &ett_gsm_map_MT_smsCAMELTDP_Criteria,
19044     &ett_gsm_map_TPDU_TypeCriterion,
19045     &ett_gsm_map_D_CSI,
19046     &ett_gsm_map_DP_AnalysedInfoCriteriaList,
19047     &ett_gsm_map_DP_AnalysedInfoCriterium,
19048     &ett_gsm_map_SS_CSI,
19049     &ett_gsm_map_SS_CamelData,
19050     &ett_gsm_map_MG_CSI,
19051     &ett_gsm_map_BearerServiceList,
19052     &ett_gsm_map_TeleserviceList,
19053     &ett_gsm_map_Ext_SS_InfoList,
19054     &ett_gsm_map_Ext_SS_Info,
19055     &ett_gsm_map_Ext_ForwInfo,
19056     &ett_gsm_map_Ext_ForwFeatureList,
19057     &ett_gsm_map_Ext_ForwFeature,
19058     &ett_gsm_map_Ext_CallBarInfo,
19059     &ett_gsm_map_Ext_CallBarFeatureList,
19060     &ett_gsm_map_Ext_CallBarringFeature,
19061     &ett_gsm_map_ZoneCodeList,
19062     &ett_gsm_map_EMLPP_Info,
19063     &ett_gsm_map_CUG_Info,
19064     &ett_gsm_map_CUG_SubscriptionList,
19065     &ett_gsm_map_CUG_Subscription,
19066     &ett_gsm_map_CUG_FeatureList,
19067     &ett_gsm_map_Ext_BasicServiceGroupList,
19068     &ett_gsm_map_CUG_Feature,
19069     &ett_gsm_map_Ext_SS_Data,
19070     &ett_gsm_map_LCS_PrivacyExceptionList,
19071     &ett_gsm_map_LCS_PrivacyClass,
19072     &ett_gsm_map_ExternalClientList,
19073     &ett_gsm_map_PLMNClientList,
19074     &ett_gsm_map_Ext_ExternalClientList,
19075     &ett_gsm_map_ExternalClient,
19076     &ett_gsm_map_ServiceTypeList,
19077     &ett_gsm_map_ServiceType,
19078     &ett_gsm_map_MOLR_List,
19079     &ett_gsm_map_MOLR_Class,
19080     &ett_gsm_map_CallBarringFeatureList,
19081     &ett_gsm_map_CallBarringFeature,
19082     &ett_gsm_map_ForwardingFeatureList,
19083     &ett_gsm_map_ForwardingFeature,
19084     &ett_gsm_map_DestinationNumberCriteria,
19085     &ett_gsm_map_DestinationNumberList,
19086     &ett_gsm_map_DestinationNumberLengthList,
19087     &ett_gsm_map_ForwardingInfo,
19088     &ett_gsm_map_CallBarringInfo,
19089     &ett_gsm_map_MC_SS_Info,
19090     &ett_gsm_map_ResetArg,
19091     &ett_gsm_map_RestoreDataArg,
19092     &ett_gsm_map_RestoreDataRes,
19093     &ett_gsm_map_VBSDataList,
19094     &ett_gsm_map_VGCSDataList,
19095     &ett_gsm_map_VoiceGroupCallData,
19096     &ett_gsm_map_VoiceBroadcastData,
19097     &ett_gsm_map_ActivateTraceModeArg,
19098     &ett_gsm_map_ActivateTraceModeRes,
19099     &ett_gsm_map_DeactivateTraceModeArg,
19100     &ett_gsm_map_DeactivateTraceModeRes,
19101     &ett_gsm_map_SendRoutingInfoArg,
19102     &ett_gsm_map_SendRoutingInfoRes,
19103     &ett_gsm_map_ExternalSignalInfo,
19104     &ett_gsm_map_Ext_ExternalSignalInfo,
19105     &ett_gsm_map_AccessNetworkSignalInfo,
19106     &ett_gsm_map_CamelInfo,
19107     &ett_gsm_map_Identity,
19108     &ett_gsm_map_IMSI_WithLMSI,
19109     &ett_gsm_map_SubscriberId,
19110     &ett_gsm_map_HLR_List,
19111     &ett_gsm_map_SS_List,
19112     &ett_gsm_map_NAEA_PreferredCI,
19113     &ett_gsm_map_SubscriberIdentity,
19114     &ett_gsm_map_LCSClientExternalID,
19115     &ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
19116     &ett_gsm_map_AllowedServices,
19117     &ett_gsm_map_CCBS_Indicators,
19118     &ett_gsm_map_RoutingInfo,
19119     &ett_gsm_map_ExtendedRoutingInfo,
19120     &ett_gsm_map_CamelRoutingInfo,
19121     &ett_gsm_map_GmscCamelSubscriptionInfo,
19122     &ett_gsm_map_LocationInformation,
19123     &ett_gsm_map_LocationInformationGPRS,
19124     &ett_gsm_map_SubscriberState,
19125     &ett_gsm_map_PS_SubscriberState,
19126     &ett_gsm_map_PDP_ContextInfoList,
19127     &ett_gsm_map_PDP_ContextInfo,
19128     &ett_gsm_map_CUG_CheckInfo,
19129     &ett_gsm_map_ForwardingData,
19130     &ett_gsm_map_ProvideRoamingNumberArg,
19131     &ett_gsm_map_ProvideRoamingNumberRes,
19132     &ett_gsm_map_ResumeCallHandlingArg,
19133     &ett_gsm_map_ResumeCallHandlingRes,
19134     &ett_gsm_map_UU_Data,
19135     &ett_gsm_map_ProvideSIWFSNumberArg,
19136     &ett_gsm_map_ProvideSIWFSNumberRes,
19137     &ett_gsm_map_SIWFSSignallingModifyArg,
19138     &ett_gsm_map_SIWFSSignallingModifyRes,
19139     &ett_gsm_map_SetReportingStateArg,
19140     &ett_gsm_map_SetReportingStateRes,
19141     &ett_gsm_map_StatusReportArg,
19142     &ett_gsm_map_StatusReportRes,
19143     &ett_gsm_map_EventReportData,
19144     &ett_gsm_map_CallReportData,
19145     &ett_gsm_map_IST_AlertArg,
19146     &ett_gsm_map_IST_AlertRes,
19147     &ett_gsm_map_IST_CommandArg,
19148     &ett_gsm_map_IST_CommandRes,
19149     &ett_gsm_map_ReleaseResourcesArg,
19150     &ett_gsm_map_ReleaseResourcesRes,
19151     &ett_gsm_map_RemoteUserFreeArg,
19152     &ett_gsm_map_RemoteUserFreeRes,
19153     &ett_gsm_map_SS_Data,
19154     &ett_gsm_map_SS_SubscriptionOption,
19155     &ett_gsm_map_RegisterSS_Arg,
19156     &ett_gsm_map_SS_Info,
19157     &ett_gsm_map_InterrogateSS_Res,
19158     &ett_gsm_map_Ussd_Arg,
19159     &ett_gsm_map_Ussd_Res,
19160     &ett_gsm_map_AuthenticationFailureReportArg,
19161     &ett_gsm_map_AuthenticationFailureReportRes,
19162     &ett_gsm_map_RegisterCC_EntryArg,
19163     &ett_gsm_map_RegisterCC_EntryRes,
19164     &ett_gsm_map_CCBS_Data,
19165     &ett_gsm_map_ServiceIndicator,
19166     &ett_gsm_map_EraseCC_EntryArg,
19167     &ett_gsm_map_EraseCC_EntryRes,
19168     &ett_gsm_map_RoutingInfoForSMArg,
19169     &ett_gsm_map_RoutingInfoForSM_Res,
19170     &ett_gsm_map_LocationInfoWithLMSI,
19171     &ett_gsm_map_Additional_Number,
19172     &ett_gsm_map_Mo_forwardSM_Arg,
19173     &ett_gsm_map_Mo_forwardSM_Res,
19174     &ett_gsm_map_Sm_RP_OA,
19175     &ett_gsm_map_Sm_RP_DA,
19176     &ett_gsm_map_Mt_forwardSM_Arg,
19177     &ett_gsm_map_Mt_forwardSM_Res,
19178     &ett_gsm_map_ReportSM_DeliveryStatusArg,
19179     &ett_gsm_map_ReportSM_DeliveryStatusRes,
19180     &ett_gsm_map_InformServiceCentreArg,
19181     &ett_gsm_map_T_mw_Status,
19182     &ett_gsm_map_AlertServiceCentreArg,
19183     &ett_gsm_map_ReadyForSM_Arg,
19184     &ett_gsm_map_ReadyForSM_Res,
19185     &ett_gsm_map_ProvideSubscriberInfoArg,
19186     &ett_gsm_map_ProvideSubscriberInfoRes,
19187     &ett_gsm_map_SubscriberInfo,
19188     &ett_gsm_map_MNPInfoRes,
19189     &ett_gsm_map_GPRSMSClass,
19190     &ett_gsm_map_RequestedInfo,
19191     &ett_gsm_map_AnyTimeInterrogationArg,
19192     &ett_gsm_map_AnyTimeInterrogationRes,
19193     &ett_gsm_map_AnyTimeSubscriptionInterrogationArg,
19194     &ett_gsm_map_AnyTimeSubscriptionInterrogationRes,
19195     &ett_gsm_map_RequestedSubscriptionInfo,
19196     &ett_gsm_map_CallForwardingData,
19197     &ett_gsm_map_CallBarringData,
19198     &ett_gsm_map_BasicServiceCode,
19199     &ett_gsm_map_O_BcsmCamelTDPCriteriaList,
19200     &ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList,
19201     &ett_gsm_map_O_BcsmCamelTDP_Criteria,
19202     &ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria,
19203     &ett_gsm_map_OfferedCamel4CSIs,
19204     &ett_gsm_map_OfferedCamel4Functionalities,
19205     &ett_gsm_map_SS_ForBS_Code,
19206     &ett_gsm_map_GenericServiceInfo,
19207     &ett_gsm_map_CCBS_FeatureList,
19208     &ett_gsm_map_CCBS_Feature,
19209     &ett_gsm_map_T_CauseValueCriteria,
19210     &ett_gsm_map_O_CauseValueCriteria,
19211     &ett_gsm_map_BasicServiceCriteria,
19212     &ett_gsm_map_AnyTimeModificationArg,
19213     &ett_gsm_map_AnyTimeModificationRes,
19214     &ett_gsm_map_ModificationRequestFor_CF_Info,
19215     &ett_gsm_map_ModificationRequestFor_CB_Info,
19216     &ett_gsm_map_ModificationRequestFor_ODB_data,
19217     &ett_gsm_map_ModificationRequestFor_CSI,
19218     &ett_gsm_map_Ext_SS_InfoFor_CSE,
19219     &ett_gsm_map_NoteSubscriberDataModifiedArg,
19220     &ett_gsm_map_NoteSubscriberDataModifiedRes,
19221     &ett_gsm_map_NoteMM_EventArg,
19222     &ett_gsm_map_NoteMM_EventRes,
19223     &ett_gsm_map_CAMEL_SubscriptionInfo,
19224     &ett_gsm_map_Ext_ForwardingInfoFor_CSE,
19225     &ett_gsm_map_Ext_BasicServiceCode,
19226     &ett_gsm_map_Ext_CallBarringInfoFor_CSE,
19227     &ett_gsm_map_ODB_Info,
19228     &ett_gsm_map_ODB_Data,
19229     &ett_gsm_map_M_CSI,
19230     &ett_gsm_map_SS_EventList,
19231     &ett_gsm_map_T_CSI,
19232     &ett_gsm_map_T_BcsmCamelTDPDataList,
19233     &ett_gsm_map_T_BcsmCamelTDPData,
19234     &ett_gsm_map_SMS_CSI,
19235     &ett_gsm_map_SMS_CAMEL_TDP_DataList,
19236     &ett_gsm_map_SMS_CAMEL_TDP_Data,
19237     &ett_gsm_map_MobilityTriggers,
19238     &ett_gsm_map_Ss_InvocationNotificationArg,
19239     &ett_gsm_map_T_ss_EventSpecification,
19240     &ett_gsm_map_Ss_InvocationNotificationRes,
19241     &ett_gsm_map_PrepareGroupCallArg,
19242     &ett_gsm_map_PrepareGroupCallRes,
19243     &ett_gsm_map_SendGroupCallEndSignalArg,
19244     &ett_gsm_map_SendGroupCallEndSignalRes,
19245     &ett_gsm_map_ProcessGroupCallSignallingArg,
19246     &ett_gsm_map_ForwardGroupCallSignallingArg,
19247     &ett_gsm_map_UpdateGprsLocationArg,
19248     &ett_gsm_map_UpdateGprsLocationRes,
19249     &ett_gsm_map_SGSN_Capability,
19250     &ett_gsm_map_SendRoutingInfoForGprsArg,
19251     &ett_gsm_map_SendRoutingInfoForGprsRes,
19252     &ett_gsm_map_FailureReportArg,
19253     &ett_gsm_map_FailureReportRes,
19254     &ett_gsm_map_NoteMsPresentForGprsArg,
19255     &ett_gsm_map_NoteMsPresentForGprsRes,
19256     &ett_gsm_map_ProvideSubscriberLocation_Arg,
19257     &ett_gsm_map_LocationType,
19258     &ett_gsm_map_DeferredLocationEventType,
19259     &ett_gsm_map_LCS_ClientID,
19260     &ett_gsm_map_LCSClientName,
19261     &ett_gsm_map_LCSRequestorID,
19262     &ett_gsm_map_LCS_QoS,
19263     &ett_gsm_map_ResponseTime,
19264     &ett_gsm_map_SupportedGADShapes,
19265     &ett_gsm_map_LCSCodeword,
19266     &ett_gsm_map_LCS_PrivacyCheck,
19267     &ett_gsm_map_AreaEventInfo,
19268     &ett_gsm_map_AreaDefinition,
19269     &ett_gsm_map_AreaList,
19270     &ett_gsm_map_Area,
19271     &ett_gsm_map_ProvideSubscriberLocation_Res,
19272     &ett_gsm_map_TargetMS,
19273     &ett_gsm_map_RoutingInfoForLCS_Arg,
19274     &ett_gsm_map_RoutingInfoForLCS_Res,
19275     &ett_gsm_map_LCSLocationInfo,
19276     &ett_gsm_map_SubscriberLocationReport_Arg,
19277     &ett_gsm_map_Deferredmt_lrData,
19278     &ett_gsm_map_SubscriberLocationReport_Res,
19279     &ett_gsm_map_SecureTransportArg,
19280     &ett_gsm_map_SecureTransportRes,
19281     &ett_gsm_map_SecurityHeader,
19282     &ett_gsm_map_OriginalComponentIdentifier,
19283     &ett_gsm_map_OperationCode,
19284     &ett_gsm_map_ErrorCode,
19285     &ett_gsm_map_SystemFailureParam,
19286     &ett_gsm_map_T_extensibleSystemFailureParam,
19287     &ett_gsm_map_DataMissingParam,
19288     &ett_gsm_map_UnexpectedDataParam,
19289     &ett_gsm_map_FacilityNotSupParam,
19290     &ett_gsm_map_OR_NotAllowedParam,
19291     &ett_gsm_map_IncompatibleTerminalParam,
19292     &ett_gsm_map_ResourceLimitationParam,
19293     &ett_gsm_map_UnknownSubscriberParam,
19294     &ett_gsm_map_NumberChangedParam,
19295     &ett_gsm_map_UnidentifiedSubParam,
19296     &ett_gsm_map_RoamingNotAllowedParam,
19297     &ett_gsm_map_IllegalSubscriberParam,
19298     &ett_gsm_map_IllegalEquipmentParam,
19299     &ett_gsm_map_BearerServNotProvParam,
19300     &ett_gsm_map_TeleservNotProvParam,
19301     &ett_gsm_map_TracingBufferFullParam,
19302     &ett_gsm_map_NoRoamingNbParam,
19303     &ett_gsm_map_AbsentSubscriberParam,
19304     &ett_gsm_map_BusySubscriberParam,
19305     &ett_gsm_map_NoSubscriberReplyParam,
19306     &ett_gsm_map_ForwardingViolationParam,
19307     &ett_gsm_map_ForwardingFailedParam,
19308     &ett_gsm_map_ATI_NotAllowedParam,
19309     &ett_gsm_map_ATSI_NotAllowedParam,
19310     &ett_gsm_map_ATM_NotAllowedParam,
19311     &ett_gsm_map_IllegalSS_OperationParam,
19312     &ett_gsm_map_SS_NotAvailableParam,
19313     &ett_gsm_map_SS_SubscriptionViolationParam,
19314     &ett_gsm_map_InformationNotAvailableParam,
19315     &ett_gsm_map_SubBusyForMT_SMS_Param,
19316     &ett_gsm_map_CallBarredParam,
19317     &ett_gsm_map_ExtensibleCallBarredParam,
19318     &ett_gsm_map_CUG_RejectParam,
19319     &ett_gsm_map_Or_NotAllowedParam,
19320     &ett_gsm_map_Cug_RejectParam,
19321     &ett_gsm_map_NoGroupCallNbParam,
19322     &ett_gsm_map_SS_IncompatibilityCause,
19323     &ett_gsm_map_ShortTermDenialParam,
19324     &ett_gsm_map_LongTermDenialParam,
19325     &ett_gsm_map_SM_DeliveryFailureCause,
19326     &ett_gsm_map_MessageWaitListFullParam,
19327     &ett_gsm_map_AbsentSubscriberSM_Param,
19328     &ett_gsm_map_UnauthorizedRequestingNetwork_Param,
19329     &ett_gsm_map_UnauthorizedLCSClient_Param,
19330     &ett_gsm_map_PositionMethodFailure_Param,
19331     &ett_gsm_map_UnknownOrUnreachableLCSClient_Param,
19332     &ett_gsm_map_MM_EventNotSupported_Param,
19333     &ett_gsm_map_TargetCellOutsideGCA_Param,
19334     &ett_gsm_map_SecureTransportErrorParam,
19335     &ett_gsm_map_ExtensionContainer,
19336
19337 /*--- End of included file: packet-gsm_map-ettarr.c ---*/
19338 #line 1624 "packet-gsm_map-template.c"
19339   };
19340
19341   /* Register protocol */
19342   proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
19343 /*XXX  register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map);*/
19344   /* Register fields and subtrees */
19345   proto_register_field_array(proto_gsm_map, hf, array_length(hf));
19346   proto_register_subtree_array(ett, array_length(ett));
19347
19348   sms_dissector_table = register_dissector_table("gsm_map.sms_tpdu", 
19349                                                  "GSM SMS TPDU", FT_UINT8,
19350                                                  BASE_DEC);
19351
19352   gsm_map_tap = register_tap("gsm_map");
19353   /*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)" );
19354    *
19355    * Register our configuration options, particularly our ssn:s
19356    * Set default SSNs
19357    */
19358   range_convert_str(&global_ssn_range, "6-9", MAX_SSN);
19359   ssn_range = range_empty();
19360
19361
19362   gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);
19363
19364   prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs",
19365                                   "TCAP Subsystem numbers used for GSM MAP",
19366                                   &global_ssn_range, MAX_SSN);
19367 }
19368
19369