ext_qos_subscribed was not correctly decoded in Camel and GSM MAP
[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 static int hf_gsm_map_ext_qos_subscribed_pri = -1;
104
105 static int hf_gsm_map_qos_traffic_cls = -1;
106 static int hf_gsm_map_qos_del_order = -1;
107 static int hf_gsm_map_qos_del_of_err_sdu = -1;
108 static int hf_gsm_map_qos_ber = -1;
109 static int hf_gsm_map_qos_sdu_err_rat = -1;
110 static int hf_gsm_map_qos_traff_hdl_pri = -1;
111 static int hf_gsm_map_qos_max_sdu = -1;
112 static int hf_gsm_map_max_brate_ulink = -1;
113 static int hf_gsm_map_max_brate_dlink = -1;
114 static int hf_gsm_map_qos_transfer_delay = -1;
115 static int hf_gsm_map_guaranteed_max_brate_ulink = -1;
116 static int hf_gsm_map_guaranteed_max_brate_dlink = -1;
117
118
119 /*--- Included file: packet-gsm_map-hf.c ---*/
120 #line 1 "packet-gsm_map-hf.c"
121 static int hf_gsm_map_Component_PDU = -1;         /* Component */
122 static int hf_gsm_map_invoke = -1;                /* Invoke */
123 static int hf_gsm_map_returnResultLast = -1;      /* ReturnResult */
124 static int hf_gsm_map_returnError = -1;           /* ReturnError */
125 static int hf_gsm_map_reject = -1;                /* Reject */
126 static int hf_gsm_map_invokeID = -1;              /* InvokeIdType */
127 static int hf_gsm_map_linkedID = -1;              /* InvokeIdType */
128 static int hf_gsm_map_opCode = -1;                /* OPERATION */
129 static int hf_gsm_map_invokeparameter = -1;       /* InvokeParameter */
130 static int hf_gsm_map_resultretres = -1;          /* T_resultretres */
131 static int hf_gsm_map_returnparameter = -1;       /* ReturnResultParameter */
132 static int hf_gsm_map_errorCode = -1;             /* ERROR */
133 static int hf_gsm_map_parameter = -1;             /* ReturnErrorParameter */
134 static int hf_gsm_map_invokeIDRej = -1;           /* T_invokeIDRej */
135 static int hf_gsm_map_derivable = -1;             /* InvokeIdType */
136 static int hf_gsm_map_not_derivable = -1;         /* NULL */
137 static int hf_gsm_map_problem = -1;               /* T_problem */
138 static int hf_gsm_map_generalProblem = -1;        /* GeneralProblem */
139 static int hf_gsm_map_invokeProblem = -1;         /* InvokeProblem */
140 static int hf_gsm_map_returnResultProblem = -1;   /* ReturnResultProblem */
141 static int hf_gsm_map_returnErrorProblem = -1;    /* ReturnErrorProblem */
142 static int hf_gsm_map_localValue = -1;            /* OperationLocalvalue */
143 static int hf_gsm_map_globalValue = -1;           /* OBJECT_IDENTIFIER */
144 static int hf_gsm_map_localValue1 = -1;           /* LocalErrorcode */
145 static int hf_gsm_map_protocolId = -1;            /* ProtocolId */
146 static int hf_gsm_map_signalInfo = -1;            /* SignalInfo */
147 static int hf_gsm_map_extensionContainer = -1;    /* ExtensionContainer */
148 static int hf_gsm_map_imsi = -1;                  /* IMSI */
149 static int hf_gsm_map_msc_Number = -1;            /* ISDN_AddressString */
150 static int hf_gsm_map_vlr_Number = -1;            /* ISDN_AddressString */
151 static int hf_gsm_map_lmsi = -1;                  /* LMSI */
152 static int hf_gsm_map_vlr_Capability = -1;        /* VLR_Capability */
153 static int hf_gsm_map_informPreviousNetworkEntity = -1;  /* NULL */
154 static int hf_gsm_map_cs_LCS_NotSupportedByUE = -1;  /* NULL */
155 static int hf_gsm_map_v_gmlc_Address = -1;        /* GSN_Address */
156 static int hf_gsm_map_add_info = -1;              /* ADD_Info */
157 static int hf_gsm_map_hlr_Number = -1;            /* ISDN_AddressString */
158 static int hf_gsm_map_add_Capability = -1;        /* NULL */
159 static int hf_gsm_map_supportedCamelPhases = -1;  /* SupportedCamelPhases */
160 static int hf_gsm_map_solsaSupportIndicator = -1;  /* NULL */
161 static int hf_gsm_map_istSupportIndicator = -1;   /* IST_SupportIndicator */
162 static int hf_gsm_map_superChargerSupportedInServingNetworkEntity = -1;  /* SuperChargerInfo */
163 static int hf_gsm_map_longFTN_Supported = -1;     /* NULL */
164 static int hf_gsm_map_supportedLCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
165 static int hf_gsm_map_offeredCamel4CSIs = -1;     /* OfferedCamel4CSIs */
166 static int hf_gsm_map_sendSubscriberData = -1;    /* NULL */
167 static int hf_gsm_map_subscriberDataStored = -1;  /* AgeIndicator */
168 static int hf_gsm_map_imeisv = -1;                /* IMEI */
169 static int hf_gsm_map_skipSubscriberDataUpdate = -1;  /* NULL */
170 static int hf_gsm_map_PrivateExtensionList_item = -1;  /* PrivateExtension */
171 static int hf_gsm_map_extId = -1;                 /* OBJECT_IDENTIFIER */
172 static int hf_gsm_map_extType = -1;               /* T_extType */
173 static int hf_gsm_map_privateExtensionList = -1;  /* PrivateExtensionList */
174 static int hf_gsm_map_slr_Arg_PCS_Extensions = -1;  /* SLR_Arg_PCS_Extensions */
175 static int hf_gsm_map_na_ESRK_Request = -1;       /* NULL */
176 static int hf_gsm_map_identity = -1;              /* Identity */
177 static int hf_gsm_map_cancellationType = -1;      /* CancellationType */
178 static int hf_gsm_map_imsi_WithLMSI = -1;         /* IMSI_WithLMSI */
179 static int hf_gsm_map_sgsn_Number = -1;           /* ISDN_AddressString */
180 static int hf_gsm_map_freezeTMSI = -1;            /* NULL */
181 static int hf_gsm_map_freezeP_TMSI = -1;          /* NULL */
182 static int hf_gsm_map_tmsi = -1;                  /* TMSI */
183 static int hf_gsm_map_numberOfRequestedVectors = -1;  /* NumberOfRequestedVectors */
184 static int hf_gsm_map_segmentationProhibited = -1;  /* NULL */
185 static int hf_gsm_map_previous_LAI = -1;          /* LAIFixedLength */
186 static int hf_gsm_map_hopCounter = -1;            /* HopCounter */
187 static int hf_gsm_map_authenticationSetList = -1;  /* AuthenticationSetList */
188 static int hf_gsm_map_currentSecurityContext = -1;  /* CurrentSecurityContext */
189 static int hf_gsm_map_tripletList = -1;           /* TripletList */
190 static int hf_gsm_map_quintupletList = -1;        /* QuintupletList */
191 static int hf_gsm_map_TripletList_item = -1;      /* AuthenticationTriplet */
192 static int hf_gsm_map_QuintupletList_item = -1;   /* AuthenticationQuintuplet */
193 static int hf_gsm_map_rand = -1;                  /* RAND */
194 static int hf_gsm_map_sres = -1;                  /* SRES */
195 static int hf_gsm_map_kc = -1;                    /* Kc */
196 static int hf_gsm_map_xres = -1;                  /* XRES */
197 static int hf_gsm_map_ck = -1;                    /* CK */
198 static int hf_gsm_map_ik = -1;                    /* IK */
199 static int hf_gsm_map_autn = -1;                  /* AUTN */
200 static int hf_gsm_map_gsm_SecurityContextData = -1;  /* GSM_SecurityContextData */
201 static int hf_gsm_map_umts_SecurityContextData = -1;  /* UMTS_SecurityContextData */
202 static int hf_gsm_map_cksn = -1;                  /* Cksn */
203 static int hf_gsm_map_ksi = -1;                   /* KSI */
204 static int hf_gsm_map_targetCellId = -1;          /* GlobalCellId */
205 static int hf_gsm_map_ho_NumberNotRequired = -1;  /* NULL */
206 static int hf_gsm_map_bss_APDU = -1;              /* Bss_APDU */
207 static int hf_gsm_map_targetRNCId = -1;           /* RNCId */
208 static int hf_gsm_map_an_APDU = -1;               /* AccessNetworkSignalInfo */
209 static int hf_gsm_map_multipleBearerRequested = -1;  /* NULL */
210 static int hf_gsm_map_integrityProtectionInfo = -1;  /* IntegrityProtectionInformation */
211 static int hf_gsm_map_encryptionInfo = -1;        /* EncryptionInformation */
212 static int hf_gsm_map_radioResourceInformation = -1;  /* RadioResourceInformation */
213 static int hf_gsm_map_allowedGSM_Algorithms = -1;  /* AllowedGSM_Algorithms */
214 static int hf_gsm_map_allowedUMTS_Algorithms = -1;  /* AllowedUMTS_Algorithms */
215 static int hf_gsm_map_radioResourceList = -1;     /* RadioResourceList */
216 static int hf_gsm_map_rab_Id = -1;                /* RAB_Id */
217 static int hf_gsm_map_bssmap_ServiceHandover = -1;  /* BSSMAP_ServiceHandover */
218 static int hf_gsm_map_ranap_ServiceHandover = -1;  /* RANAP_ServiceHandover */
219 static int hf_gsm_map_bssmap_ServiceHandoverList = -1;  /* BSSMAP_ServiceHandoverList */
220 static int hf_gsm_map_asciCallReference = -1;     /* ASCI_CallReference */
221 static int hf_gsm_map_geran_classmark = -1;       /* GERAN_Classmark */
222 static int hf_gsm_map_iuCurrentlyUsedCodec = -1;  /* Codec */
223 static int hf_gsm_map_iuSupportedCodecsList = -1;  /* SupportedCodecsList */
224 static int hf_gsm_map_rab_ConfigurationIndicator = -1;  /* NULL */
225 static int hf_gsm_map_uesbi_Iu = -1;              /* UESBI_Iu */
226 static int hf_gsm_map_BSSMAP_ServiceHandoverList_item = -1;  /* BSSMAP_ServiceHandoverInfo */
227 static int hf_gsm_map_RadioResourceList_item = -1;  /* RadioResource */
228 static int hf_gsm_map_handoverNumber = -1;        /* ISDN_AddressString */
229 static int hf_gsm_map_relocationNumberList = -1;  /* RelocationNumberList */
230 static int hf_gsm_map_multicallBearerInfo = -1;   /* MulticallBearerInfo */
231 static int hf_gsm_map_multipleBearerNotSupported = -1;  /* NULL */
232 static int hf_gsm_map_selectedUMTS_Algorithms = -1;  /* SelectedUMTS_Algorithms */
233 static int hf_gsm_map_chosenRadioResourceInformation = -1;  /* ChosenRadioResourceInformation */
234 static int hf_gsm_map_iuSelectedCodec = -1;       /* Codec */
235 static int hf_gsm_map_iuAvailableCodecsList = -1;  /* CodecList */
236 static int hf_gsm_map_integrityProtectionAlgorithm = -1;  /* ChosenIntegrityProtectionAlgorithm */
237 static int hf_gsm_map_encryptionAlgorithm = -1;   /* ChosenEncryptionAlgorithm */
238 static int hf_gsm_map_chosenChannelInfo = -1;     /* ChosenChannelInfo */
239 static int hf_gsm_map_chosenSpeechVersion = -1;   /* ChosenSpeechVersion */
240 static int hf_gsm_map_RelocationNumberList_item = -1;  /* RelocationNumber */
241 static int hf_gsm_map_selectedGSM_Algorithm = -1;  /* SelectedGSM_Algorithm */
242 static int hf_gsm_map_selectedRab_Id = -1;        /* RAB_Id */
243 static int hf_gsm_map_iUSelectedCodec = -1;       /* Codec */
244 static int hf_gsm_map_utranCodecList = -1;        /* CodecList */
245 static int hf_gsm_map_geranCodecList = -1;        /* CodecList */
246 static int hf_gsm_map_codec1 = -1;                /* Codec */
247 static int hf_gsm_map_codec2 = -1;                /* Codec */
248 static int hf_gsm_map_codec3 = -1;                /* Codec */
249 static int hf_gsm_map_codec4 = -1;                /* Codec */
250 static int hf_gsm_map_codec5 = -1;                /* Codec */
251 static int hf_gsm_map_codec6 = -1;                /* Codec */
252 static int hf_gsm_map_codec7 = -1;                /* Codec */
253 static int hf_gsm_map_codec8 = -1;                /* Codec */
254 static int hf_gsm_map_keyStatus = -1;             /* KeyStatus */
255 static int hf_gsm_map_currentlyUsedCodec = -1;    /* Codec */
256 static int hf_gsm_map_integrityProtectionAlgorithms = -1;  /* PermittedIntegrityProtectionAlgorithms */
257 static int hf_gsm_map_encryptionAlgorithms = -1;  /* PermittedEncryptionAlgorithms */
258 static int hf_gsm_map_targetMSC_Number = -1;      /* ISDN_AddressString */
259 static int hf_gsm_map_immediateResponsePreferred = -1;  /* NULL */
260 static int hf_gsm_map_re_synchronisationInfo = -1;  /* Re_synchronisationInfo */
261 static int hf_gsm_map_requestingNodeType = -1;    /* RequestingNodeType */
262 static int hf_gsm_map_requestingPLMN_Id = -1;     /* PLMN_Id */
263 static int hf_gsm_map_SendAuthenticationInfoRes_item = -1;  /* SendAuthenticationInfoRes_item */
264 static int hf_gsm_map_auts = -1;                  /* AUTS */
265 static int hf_gsm_map_imei = -1;                  /* IMEI */
266 static int hf_gsm_map_requestedEquipmentInfo = -1;  /* RequestedEquipmentInfo */
267 static int hf_gsm_map_equipmentStatus = -1;       /* EquipmentStatus */
268 static int hf_gsm_map_bmuef = -1;                 /* UESBI_Iu */
269 static int hf_gsm_map_uesbi_IuA = -1;             /* UESBI_IuA */
270 static int hf_gsm_map_uesbi_IuB = -1;             /* UESBI_IuB */
271 static int hf_gsm_map_bearerservice = -1;         /* Bearerservice */
272 static int hf_gsm_map_teleservice = -1;           /* Teleservice */
273 static int hf_gsm_map_BasicServiceGroupList_item = -1;  /* BasicService */
274 static int hf_gsm_map_bcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
275 static int hf_gsm_map_serviceKey = -1;            /* ServiceKey */
276 static int hf_gsm_map_gsmSCFAddress = -1;         /* GsmSCF_Address */
277 static int hf_gsm_map_defaultCallHandling = -1;   /* DefaultCallHandling */
278 static int hf_gsm_map_BcsmCamelTDPDataList_item = -1;  /* BcsmCamelTDPData */
279 static int hf_gsm_map_o_BcsmCamelTDPDataList = -1;  /* O_BcsmCamelTDPDataList */
280 static int hf_gsm_map_camelCapabilityHandling = -1;  /* CamelCapabilityHandling */
281 static int hf_gsm_map_notificationToCSE = -1;     /* NULL */
282 static int hf_gsm_map_csiActive = -1;             /* NULL */
283 static int hf_gsm_map_O_BcsmCamelTDPDataList_item = -1;  /* O_BcsmCamelTDPData */
284 static int hf_gsm_map_o_BcsmTriggerDetectionPoint = -1;  /* O_BcsmTriggerDetectionPoint */
285 static int hf_gsm_map_gsmSCF_Address = -1;        /* ISDN_AddressString */
286 static int hf_gsm_map_msisdn = -1;                /* ISDN_AddressString */
287 static int hf_gsm_map_category = -1;              /* Category */
288 static int hf_gsm_map_subscriberStatus = -1;      /* SubscriberStatus */
289 static int hf_gsm_map_bearerserviceList = -1;     /* BearerServiceList */
290 static int hf_gsm_map_teleserviceList = -1;       /* TeleserviceList */
291 static int hf_gsm_map_provisionedSS = -1;         /* Ext_SS_InfoList */
292 static int hf_gsm_map_odb_Data = -1;              /* ODB_Data */
293 static int hf_gsm_map_roamingRestrictionDueToUnsupportedFeature = -1;  /* NULL */
294 static int hf_gsm_map_regionalSubscriptionData = -1;  /* ZoneCodeList */
295 static int hf_gsm_map_vbsSubscriptionData = -1;   /* VBSDataList */
296 static int hf_gsm_map_vgcsSubscriptionData = -1;  /* VGCSDataList */
297 static int hf_gsm_map_vlrCamelSubscriptionInfo = -1;  /* VlrCamelSubscriptionInfo */
298 static int hf_gsm_map_naea_PreferredCI = -1;      /* NAEA_PreferredCI */
299 static int hf_gsm_map_gprsSubscriptionData = -1;  /* GPRSSubscriptionData */
300 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature = -1;  /* NULL */
301 static int hf_gsm_map_networkAccessMode = -1;     /* NetworkAccessMode */
302 static int hf_gsm_map_lsaInformation = -1;        /* LSAInformation */
303 static int hf_gsm_map_lmu_Indicator = -1;         /* NULL */
304 static int hf_gsm_map_lcsInformation = -1;        /* LCSInformation */
305 static int hf_gsm_map_istAlertTimer = -1;         /* IST_AlertTimerValue */
306 static int hf_gsm_map_superChargerSupportedInHLR = -1;  /* AgeIndicator */
307 static int hf_gsm_map_mc_SS_Info = -1;            /* MC_SS_Info */
308 static int hf_gsm_map_cs_AllocationRetentionPriority = -1;  /* CS_AllocationRetentionPriority */
309 static int hf_gsm_map_sgsn_CAMEL_SubscriptionInfo = -1;  /* SGSN_CAMEL_SubscriptionInfo */
310 static int hf_gsm_map_chargingCharacteristics = -1;  /* ChargingCharacteristics */
311 static int hf_gsm_map_accessRestrictionData = -1;  /* AccessRestrictionData */
312 static int hf_gsm_map_gmlc_List = -1;             /* GMLC_List */
313 static int hf_gsm_map_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
314 static int hf_gsm_map_molr_List = -1;             /* MOLR_List */
315 static int hf_gsm_map_add_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
316 static int hf_gsm_map_GMLC_List_item = -1;        /* ISDN_AddressString */
317 static int hf_gsm_map_GPRSDataList_item = -1;     /* PDP_Context */
318 static int hf_gsm_map_pdp_ContextId = -1;         /* ContextId */
319 static int hf_gsm_map_pdp_Type = -1;              /* PDP_Type */
320 static int hf_gsm_map_pdp_Address = -1;           /* PDP_Address */
321 static int hf_gsm_map_qos_Subscribed = -1;        /* QoS_Subscribed */
322 static int hf_gsm_map_vplmnAddressAllowed = -1;   /* NULL */
323 static int hf_gsm_map_apn = -1;                   /* APN */
324 static int hf_gsm_map_ext_QoS_Subscribed = -1;    /* Ext_QoS_Subscribed */
325 static int hf_gsm_map_pdp_ChargingCharacteristics = -1;  /* ChargingCharacteristics */
326 static int hf_gsm_map_ext2_QoS_Subscribed = -1;   /* Ext2_QoS_Subscribed */
327 static int hf_gsm_map_completeDataListIncluded = -1;  /* NULL */
328 static int hf_gsm_map_gprsDataList = -1;          /* GPRSDataList */
329 static int hf_gsm_map_gprs_CSI = -1;              /* GPRS_CSI */
330 static int hf_gsm_map_mo_sms_CSI = -1;            /* SMS_CSI */
331 static int hf_gsm_map_mt_sms_CSI = -1;            /* SMS_CSI */
332 static int hf_gsm_map_mt_smsCAMELTDP_CriteriaList = -1;  /* MT_smsCAMELTDP_CriteriaList */
333 static int hf_gsm_map_mg_csi = -1;                /* MG_CSI */
334 static int hf_gsm_map_gprs_CamelTDPDataList = -1;  /* GPRS_CamelTDPDataList */
335 static int hf_gsm_map_csi_Active = -1;            /* NULL */
336 static int hf_gsm_map_GPRS_CamelTDPDataList_item = -1;  /* GPRS_CamelTDPData */
337 static int hf_gsm_map_gprs_TriggerDetectionPoint = -1;  /* GPRS_TriggerDetectionPoint */
338 static int hf_gsm_map_defaultSessionHandling = -1;  /* DefaultGPRS_Handling */
339 static int hf_gsm_map_LSADataList_item = -1;      /* LSAData */
340 static int hf_gsm_map_lsaIdentity = -1;           /* LSAIdentity */
341 static int hf_gsm_map_lsaAttributes = -1;         /* LSAAttributes */
342 static int hf_gsm_map_lsaActiveModeIndicator = -1;  /* NULL */
343 static int hf_gsm_map_lsaOnlyAccessIndicator = -1;  /* LSAOnlyAccessIndicator */
344 static int hf_gsm_map_lsaDataList = -1;           /* LSADataList */
345 static int hf_gsm_map_bearerServiceList = -1;     /* BearerServiceList */
346 static int hf_gsm_map_ss_List = -1;               /* SS_List */
347 static int hf_gsm_map_odb_GeneralData = -1;       /* ODB_GeneralData */
348 static int hf_gsm_map_regionalSubscriptionResponse = -1;  /* RegionalSubscriptionResponse */
349 static int hf_gsm_map_basicServiceList = -1;      /* BasicServiceList */
350 static int hf_gsm_map_regionalSubscriptionIdentifier = -1;  /* ZoneCode */
351 static int hf_gsm_map_vbsGroupIndication = -1;    /* NULL */
352 static int hf_gsm_map_vgcsGroupIndication = -1;   /* NULL */
353 static int hf_gsm_map_camelSubscriptionInfoWithdraw = -1;  /* NULL */
354 static int hf_gsm_map_gprsSubscriptionDataWithdraw = -1;  /* GPRSSubscriptionDataWithdraw */
355 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1;  /* NULL */
356 static int hf_gsm_map_lsaInformationWithdraw = -1;  /* LSAInformationWithdraw */
357 static int hf_gsm_map_gmlc_ListWithdraw = -1;     /* NULL */
358 static int hf_gsm_map_istInformationWithdraw = -1;  /* NULL */
359 static int hf_gsm_map_specificCSI_Withdraw = -1;  /* SpecificCSI_Withdraw */
360 static int hf_gsm_map_chargingCharacteristicsWithdraw = -1;  /* NULL */
361 static int hf_gsm_map_allGPRSData = -1;           /* NULL */
362 static int hf_gsm_map_contextIdList = -1;         /* ContextIdList */
363 static int hf_gsm_map_ContextIdList_item = -1;    /* ContextId */
364 static int hf_gsm_map_allLSAData = -1;            /* NULL */
365 static int hf_gsm_map_lsaIdentityList = -1;       /* LSAIdentityList */
366 static int hf_gsm_map_LSAIdentityList_item = -1;  /* LSAIdentity */
367 static int hf_gsm_map_BasicServiceList_item = -1;  /* Ext_BasicServiceCode */
368 static int hf_gsm_map_o_CSI = -1;                 /* O_CSI */
369 static int hf_gsm_map_ss_CSI = -1;                /* SS_CSI */
370 static int hf_gsm_map_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
371 static int hf_gsm_map_tif_CSI = -1;               /* NULL */
372 static int hf_gsm_map_m_CSI = -1;                 /* M_CSI */
373 static int hf_gsm_map_vt_CSI = -1;                /* T_CSI */
374 static int hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
375 static int hf_gsm_map_d_CSI = -1;                 /* D_CSI */
376 static int hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item = -1;  /* MT_smsCAMELTDP_Criteria */
377 static int hf_gsm_map_sms_TriggerDetectionPoint = -1;  /* SMS_TriggerDetectionPoint */
378 static int hf_gsm_map_tpdu_TypeCriterion = -1;    /* TPDU_TypeCriterion */
379 static int hf_gsm_map_TPDU_TypeCriterion_item = -1;  /* MT_SMS_TPDU_Type */
380 static int hf_gsm_map_dp_AnalysedInfoCriteriaList = -1;  /* DP_AnalysedInfoCriteriaList */
381 static int hf_gsm_map_DP_AnalysedInfoCriteriaList_item = -1;  /* DP_AnalysedInfoCriterium */
382 static int hf_gsm_map_dialledNumber = -1;         /* ISDN_AddressString */
383 static int hf_gsm_map_ss_CamelData = -1;          /* SS_CamelData */
384 static int hf_gsm_map_ss_EventList = -1;          /* SS_EventList */
385 static int hf_gsm_map_mobilityTriggers = -1;      /* MobilityTriggers */
386 static int hf_gsm_map_BearerServiceList_item = -1;  /* Ext_BearerServiceCode */
387 static int hf_gsm_map_TeleserviceList_item = -1;  /* Ext_TeleserviceCode */
388 static int hf_gsm_map_Ext_SS_InfoList_item = -1;  /* Ext_SS_Info */
389 static int hf_gsm_map_ext_forwardingInfo = -1;    /* Ext_ForwInfo */
390 static int hf_gsm_map_ext_callBarringInfo = -1;   /* Ext_CallBarInfo */
391 static int hf_gsm_map_cug_Info = -1;              /* CUG_Info */
392 static int hf_gsm_map_ext_ss_Data = -1;           /* Ext_SS_Data */
393 static int hf_gsm_map_emlpp_Info = -1;            /* EMLPP_Info */
394 static int hf_gsm_map_ss_Code = -1;               /* SS_Code */
395 static int hf_gsm_map_ext_forwardingFeatureList = -1;  /* Ext_ForwFeatureList */
396 static int hf_gsm_map_Ext_ForwFeatureList_item = -1;  /* Ext_ForwFeature */
397 static int hf_gsm_map_ext_basicService = -1;      /* Ext_BasicServiceCode */
398 static int hf_gsm_map_ext_ss_Status = -1;         /* Ext_SS_Status */
399 static int hf_gsm_map_forwardedToNumber = -1;     /* ISDN_AddressString */
400 static int hf_gsm_map_forwardedToSubaddress = -1;  /* ISDN_SubaddressString */
401 static int hf_gsm_map_ext_forwardingOptions = -1;  /* T_forwardingOptions */
402 static int hf_gsm_map_ext_noReplyConditionTime = -1;  /* Ext_NoRepCondTime */
403 static int hf_gsm_map_longForwardedToNumber = -1;  /* FTN_AddressString */
404 static int hf_gsm_map_ext_callBarringFeatureList = -1;  /* Ext_CallBarFeatureList */
405 static int hf_gsm_map_Ext_CallBarFeatureList_item = -1;  /* Ext_CallBarringFeature */
406 static int hf_gsm_map_ZoneCodeList_item = -1;     /* ZoneCode */
407 static int hf_gsm_map_maximumentitledPriority = -1;  /* EMLPP_Priority */
408 static int hf_gsm_map_defaultPriority = -1;       /* EMLPP_Priority */
409 static int hf_gsm_map_cug_SubscriptionList = -1;  /* CUG_SubscriptionList */
410 static int hf_gsm_map_cug_FeatureList = -1;       /* CUG_FeatureList */
411 static int hf_gsm_map_CUG_SubscriptionList_item = -1;  /* CUG_Subscription */
412 static int hf_gsm_map_cug_Index = -1;             /* CUG_Index */
413 static int hf_gsm_map_cug_Interlock = -1;         /* CUG_Interlock */
414 static int hf_gsm_map_intraCUG_Options = -1;      /* IntraCUG_Options */
415 static int hf_gsm_map_basicServiceGroupList = -1;  /* Ext_BasicServiceGroupList */
416 static int hf_gsm_map_CUG_FeatureList_item = -1;  /* CUG_Feature */
417 static int hf_gsm_map_Ext_BasicServiceGroupList_item = -1;  /* Ext_BasicServiceCode */
418 static int hf_gsm_map_preferentialCUG_Indicator = -1;  /* CUG_Index */
419 static int hf_gsm_map_interCUG_Restrictions = -1;  /* InterCUG_Restrictions */
420 static int hf_gsm_map_ss_SubscriptionOption = -1;  /* SS_SubscriptionOption */
421 static int hf_gsm_map_LCS_PrivacyExceptionList_item = -1;  /* LCS_PrivacyClass */
422 static int hf_gsm_map_notificationToMSUser = -1;  /* NotificationToMSUser */
423 static int hf_gsm_map_externalClientList = -1;    /* ExternalClientList */
424 static int hf_gsm_map_plmnClientList = -1;        /* PLMNClientList */
425 static int hf_gsm_map_ext_externalClientList = -1;  /* Ext_ExternalClientList */
426 static int hf_gsm_map_serviceTypeList = -1;       /* ServiceTypeList */
427 static int hf_gsm_map_ExternalClientList_item = -1;  /* ExternalClient */
428 static int hf_gsm_map_PLMNClientList_item = -1;   /* LCSClientInternalID */
429 static int hf_gsm_map_Ext_ExternalClientList_item = -1;  /* ExternalClient */
430 static int hf_gsm_map_clientIdentity = -1;        /* LCSClientExternalID */
431 static int hf_gsm_map_gmlc_Restriction = -1;      /* GMLC_Restriction */
432 static int hf_gsm_map_ServiceTypeList_item = -1;  /* ServiceType */
433 static int hf_gsm_map_serviceTypeIdentity = -1;   /* LCSServiceTypeID */
434 static int hf_gsm_map_MOLR_List_item = -1;        /* MOLR_Class */
435 static int hf_gsm_map_CallBarringFeatureList_item = -1;  /* CallBarringFeature */
436 static int hf_gsm_map_basicService = -1;          /* BasicServiceCode */
437 static int hf_gsm_map_ss_Status = -1;             /* SS_Status */
438 static int hf_gsm_map_ForwardingFeatureList_item = -1;  /* ForwardingFeature */
439 static int hf_gsm_map_forwardingOptions = -1;     /* ForwardingOptions */
440 static int hf_gsm_map_noReplyConditionTime = -1;  /* NoReplyConditionTime */
441 static int hf_gsm_map_matchType = -1;             /* MatchType */
442 static int hf_gsm_map_destinationNumberList = -1;  /* DestinationNumberList */
443 static int hf_gsm_map_destinationNumberLengthList = -1;  /* DestinationNumberLengthList */
444 static int hf_gsm_map_DestinationNumberList_item = -1;  /* ISDN_AddressString */
445 static int hf_gsm_map_DestinationNumberLengthList_item = -1;  /* INTEGER_1_15 */
446 static int hf_gsm_map_forwardingFeatureList = -1;  /* ForwardingFeatureList */
447 static int hf_gsm_map_callBarringFeatureList = -1;  /* CallBarringFeatureList */
448 static int hf_gsm_map_nbrSB = -1;                 /* MaxMC_Bearers */
449 static int hf_gsm_map_nbrUser = -1;               /* MC_Bearers */
450 static int hf_gsm_map_hlr_List = -1;              /* HLR_List */
451 static int hf_gsm_map_msNotReachable = -1;        /* NULL */
452 static int hf_gsm_map_VBSDataList_item = -1;      /* VoiceBroadcastData */
453 static int hf_gsm_map_VGCSDataList_item = -1;     /* VoiceGroupCallData */
454 static int hf_gsm_map_groupId = -1;               /* GroupId */
455 static int hf_gsm_map_groupid = -1;               /* GroupId */
456 static int hf_gsm_map_broadcastInitEntitlement = -1;  /* NULL */
457 static int hf_gsm_map_traceReference = -1;        /* OCTET_STRING_SIZE_1_2 */
458 static int hf_gsm_map_traceType = -1;             /* INTEGER_0_255 */
459 static int hf_gsm_map_omc_Id = -1;                /* OCTET_STRING_SIZE_1_20 */
460 static int hf_gsm_map_cug_CheckInfo = -1;         /* CUG_CheckInfo */
461 static int hf_gsm_map_numberOfForwarding = -1;    /* NumberOfForwarding */
462 static int hf_gsm_map_interrogationType = -1;     /* InterrogationType */
463 static int hf_gsm_map_or_Interrogation = -1;      /* NULL */
464 static int hf_gsm_map_or_Capability = -1;         /* OR_Phase */
465 static int hf_gsm_map_gmsc_OrGsmSCF_Address = -1;  /* ISDN_AddressString */
466 static int hf_gsm_map_callReferenceNumber = -1;   /* CallReferenceNumber */
467 static int hf_gsm_map_forwardingReason = -1;      /* ForwardingReason */
468 static int hf_gsm_map_ext_basicServiceGroup = -1;  /* Ext_BasicServiceCode */
469 static int hf_gsm_map_networkSignalInfo = -1;     /* ExternalSignalInfo */
470 static int hf_gsm_map_camelInfo = -1;             /* CamelInfo */
471 static int hf_gsm_map_suppressionOfAnnouncement = -1;  /* SuppressionOfAnnouncement */
472 static int hf_gsm_map_alertingPattern = -1;       /* AlertingPattern */
473 static int hf_gsm_map_ccbs_Call = -1;             /* NULL */
474 static int hf_gsm_map_supportedCCBS_Phase = -1;   /* SupportedCCBS_Phase */
475 static int hf_gsm_map_additionalSignalInfo = -1;  /* Ext_ExternalSignalInfo */
476 static int hf_gsm_map_pre_pagingSupported = -1;   /* NULL */
477 static int hf_gsm_map_callDiversionTreatmentIndicator = -1;  /* CallDiversionTreatmentIndicator */
478 static int hf_gsm_map_suppress_VT_CSI = -1;       /* NULL */
479 static int hf_gsm_map_suppressIncomingCallBarring = -1;  /* NULL */
480 static int hf_gsm_map_gsmSCF_InitiatedCall = -1;  /* NULL */
481 static int hf_gsm_map_basicServiceGroup2 = -1;    /* Ext_BasicServiceCode */
482 static int hf_gsm_map_networkSignalInfo2 = -1;    /* ExternalSignalInfo */
483 static int hf_gsm_map_extendedRoutingInfo = -1;   /* ExtendedRoutingInfo */
484 static int hf_gsm_map_cugSubscriptionFlag = -1;   /* NULL */
485 static int hf_gsm_map_subscriberInfo = -1;        /* SubscriberInfo */
486 static int hf_gsm_map_forwardingInterrogationRequired = -1;  /* NULL */
487 static int hf_gsm_map_vmsc_Address = -1;          /* ISDN_AddressString */
488 static int hf_gsm_map_ccbs_Indicators = -1;       /* CCBS_Indicators */
489 static int hf_gsm_map_numberPortabilityStatus = -1;  /* NumberPortabilityStatus */
490 static int hf_gsm_map_supportedCamelPhasesInVMSC = -1;  /* SupportedCamelPhases */
491 static int hf_gsm_map_offeredCamel4CSIsInVMSC = -1;  /* OfferedCamel4CSIs */
492 static int hf_gsm_map_routingInfo2 = -1;          /* RoutingInfo */
493 static int hf_gsm_map_ss_List2 = -1;              /* SS_List */
494 static int hf_gsm_map_basicService2 = -1;         /* Ext_BasicServiceCode */
495 static int hf_gsm_map_allowedServices = -1;       /* AllowedServices */
496 static int hf_gsm_map_unavailabilityCause = -1;   /* UnavailabilityCause */
497 static int hf_gsm_map_releaseResourcesSupported = -1;  /* NULL */
498 static int hf_gsm_map_ext_ProtocolId = -1;        /* Ext_ProtocolId */
499 static int hf_gsm_map_accessNetworkProtocolId = -1;  /* AccessNetworkProtocolId */
500 static int hf_gsm_map_longsignalInfo = -1;        /* LongSignalInfo */
501 static int hf_gsm_map_suppress_T_CSI = -1;        /* NULL */
502 static int hf_gsm_map_HLR_List_item = -1;         /* HLR_Id */
503 static int hf_gsm_map_SS_List_item = -1;          /* SS_Code */
504 static int hf_gsm_map_naea_PreferredCIC = -1;     /* NAEA_CIC */
505 static int hf_gsm_map_externalAddress = -1;       /* ISDN_AddressString */
506 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength = -1;  /* CellGlobalIdOrServiceAreaIdFixedLength */
507 static int hf_gsm_map_laiFixedLength = -1;        /* LAIFixedLength */
508 static int hf_gsm_map_ccbs_Possible = -1;         /* NULL */
509 static int hf_gsm_map_keepCCBS_CallIndicator = -1;  /* NULL */
510 static int hf_gsm_map_roamingNumber = -1;         /* ISDN_AddressString */
511 static int hf_gsm_map_forwardingData = -1;        /* ForwardingData */
512 static int hf_gsm_map_routingInfo = -1;           /* RoutingInfo */
513 static int hf_gsm_map_camelRoutingInfo = -1;      /* CamelRoutingInfo */
514 static int hf_gsm_map_gmscCamelSubscriptionInfo = -1;  /* GmscCamelSubscriptionInfo */
515 static int hf_gsm_map_t_CSI = -1;                 /* T_CSI */
516 static int hf_gsm_map_d_csi = -1;                 /* D_CSI */
517 static int hf_gsm_map_ageOfLocationInformation = -1;  /* AgeOfLocationInformation */
518 static int hf_gsm_map_geographicalInformation = -1;  /* GeographicalInformation */
519 static int hf_gsm_map_vlr_number = -1;            /* ISDN_AddressString */
520 static int hf_gsm_map_locationNumber = -1;        /* LocationNumber */
521 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI = -1;  /* CellGlobalIdOrServiceAreaIdOrLAI */
522 static int hf_gsm_map_selectedLSA_Id = -1;        /* LSAIdentity */
523 static int hf_gsm_map_geodeticInformation = -1;   /* GeodeticInformation */
524 static int hf_gsm_map_currentLocationRetrieved = -1;  /* NULL */
525 static int hf_gsm_map_sai_Present = -1;           /* NULL */
526 static int hf_gsm_map_routeingAreaIdentity = -1;  /* RAIdentity */
527 static int hf_gsm_map_selectedLSAIdentity = -1;   /* LSAIdentity */
528 static int hf_gsm_map_assumedIdle = -1;           /* NULL */
529 static int hf_gsm_map_camelBusy = -1;             /* NULL */
530 static int hf_gsm_map_notProvidedFromVLR = -1;    /* NULL */
531 static int hf_gsm_map_notProvidedFromSGSN = -1;   /* NULL */
532 static int hf_gsm_map_ps_Detached = -1;           /* NULL */
533 static int hf_gsm_map_ps_AttachedNotReachableForPaging = -1;  /* NULL */
534 static int hf_gsm_map_ps_AttachedReachableForPaging = -1;  /* NULL */
535 static int hf_gsm_map_ps_PDP_ActiveNotReachableForPaging = -1;  /* PDP_ContextInfoList */
536 static int hf_gsm_map_ps_PDP_ActiveReachableForPaging = -1;  /* PDP_ContextInfoList */
537 static int hf_gsm_map_netDetNotReachable = -1;    /* NotReachableReason */
538 static int hf_gsm_map_PDP_ContextInfoList_item = -1;  /* PDP_ContextInfo */
539 static int hf_gsm_map_pdp_ContextIdentifier = -1;  /* ContextId */
540 static int hf_gsm_map_pdp_ContextActive = -1;     /* NULL */
541 static int hf_gsm_map_apn_Subscribed = -1;        /* APN */
542 static int hf_gsm_map_apn_InUse = -1;             /* APN */
543 static int hf_gsm_map_nsapi = -1;                 /* NSAPI */
544 static int hf_gsm_map_transactionId = -1;         /* TransactionId */
545 static int hf_gsm_map_teid_ForGnAndGp = -1;       /* TEID */
546 static int hf_gsm_map_teid_ForIu = -1;            /* TEID */
547 static int hf_gsm_map_ggsn_Address = -1;          /* GSN_Address */
548 static int hf_gsm_map_ext_qos_Subscribed = -1;    /* Ext_QoS_Subscribed */
549 static int hf_gsm_map_qos_Requested = -1;         /* Ext_QoS_Subscribed */
550 static int hf_gsm_map_qos_Negotiated = -1;        /* Ext_QoS_Subscribed */
551 static int hf_gsm_map_chargingId = -1;            /* GPRSChargingID */
552 static int hf_gsm_map_rnc_Address = -1;           /* GSN_Address */
553 static int hf_gsm_map_qos2_Subscribed = -1;       /* Ext2_QoS_Subscribed */
554 static int hf_gsm_map_qos2_Requested = -1;        /* Ext2_QoS_Subscribed */
555 static int hf_gsm_map_qos2_Negotiated = -1;       /* Ext2_QoS_Subscribed */
556 static int hf_gsm_map_cug_OutgoingAccess = -1;    /* NULL */
557 static int hf_gsm_map_gsm_BearerCapability = -1;  /* ExternalSignalInfo */
558 static int hf_gsm_map_gmsc_Address = -1;          /* ISDN_AddressString */
559 static int hf_gsm_map_supportedCamelPhasesInInterrogatingNode = -1;  /* SupportedCamelPhases */
560 static int hf_gsm_map_orNotSupportedInGMSC = -1;  /* NULL */
561 static int hf_gsm_map_offeredCamel4CSIsInInterrogatingNode = -1;  /* OfferedCamel4CSIs */
562 static int hf_gsm_map_uu_Data = -1;               /* UU_Data */
563 static int hf_gsm_map_allInformationSent = -1;    /* NULL */
564 static int hf_gsm_map_o_BcsmCamelTDPCriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
565 static int hf_gsm_map_uuIndicator = -1;           /* UUIndicator */
566 static int hf_gsm_map_uui = -1;                   /* UUI */
567 static int hf_gsm_map_uusCFInteraction = -1;      /* NULL */
568 static int hf_gsm_map_isdn_BearerCapability = -1;  /* ExternalSignalInfo */
569 static int hf_gsm_map_call_Direction = -1;        /* CallDirection */
570 static int hf_gsm_map_b_Subscriber_Address = -1;  /* ISDN_AddressString */
571 static int hf_gsm_map_chosenChannel = -1;         /* ExternalSignalInfo */
572 static int hf_gsm_map_lowerLayerCompatibility = -1;  /* ExternalSignalInfo */
573 static int hf_gsm_map_highLayerCompatibility = -1;  /* ExternalSignalInfo */
574 static int hf_gsm_map_sIWFSNumber = -1;           /* ISDN_AddressString */
575 static int hf_gsm_map_channelType = -1;           /* ExternalSignalInfo */
576 static int hf_gsm_map_ccbs_Monitoring = -1;       /* ReportingState */
577 static int hf_gsm_map_ccbs_SubscriberStatus = -1;  /* CCBS_SubscriberStatus */
578 static int hf_gsm_map_eventReportData = -1;       /* EventReportData */
579 static int hf_gsm_map_callReportdata = -1;        /* CallReportData */
580 static int hf_gsm_map_monitoringMode = -1;        /* MonitoringMode */
581 static int hf_gsm_map_callOutcome = -1;           /* CallOutcome */
582 static int hf_gsm_map_callTerminationIndicator = -1;  /* CallTerminationIndicator */
583 static int hf_gsm_map_msrn = -1;                  /* ISDN_AddressString */
584 static int hf_gsm_map_callInfo = -1;              /* ExternalSignalInfo */
585 static int hf_gsm_map_ccbs_Feature = -1;          /* CCBS_Feature */
586 static int hf_gsm_map_translatedB_Number = -1;    /* ISDN_AddressString */
587 static int hf_gsm_map_replaceB_Number = -1;       /* NULL */
588 static int hf_gsm_map_ruf_Outcome = -1;           /* Ruf_Outcome */
589 static int hf_gsm_map_ext_basicServiceGroupList = -1;  /* BasicServiceGroupList */
590 static int hf_gsm_map_cliRestrictionOption = -1;  /* CliRestrictionOption */
591 static int hf_gsm_map_overrideCategory = -1;      /* OverrideCategory */
592 static int hf_gsm_map_forwardedToNumber_addr = -1;  /* AddressString */
593 static int hf_gsm_map_forwardingInfo = -1;        /* ForwardingInfo */
594 static int hf_gsm_map_callBarringInfo = -1;       /* CallBarringInfo */
595 static int hf_gsm_map_ss_Data = -1;               /* SS_Data */
596 static int hf_gsm_map_genericServiceInfo = -1;    /* GenericServiceInfo */
597 static int hf_gsm_map_ussd_DataCodingScheme = -1;  /* USSD_DataCodingScheme */
598 static int hf_gsm_map_ussd_String = -1;           /* USSD_String */
599 static int hf_gsm_map_failureCause = -1;          /* FailureCause */
600 static int hf_gsm_map_re_attempt = -1;            /* BOOLEAN */
601 static int hf_gsm_map_accessType = -1;            /* AccessType */
602 static int hf_gsm_map_ccbs_Data = -1;             /* CCBS_Data */
603 static int hf_gsm_map_serviceIndicator = -1;      /* ServiceIndicator */
604 static int hf_gsm_map_ccbs_Index = -1;            /* CCBS_Index */
605 static int hf_gsm_map_sm_RP_PRI = -1;             /* BOOLEAN */
606 static int hf_gsm_map_serviceCentreAddress = -1;  /* ServiceCentreAddress */
607 static int hf_gsm_map_gprsSupportIndicator = -1;  /* NULL */
608 static int hf_gsm_map_sm_RP_MTI = -1;             /* INTEGER_0_10 */
609 static int hf_gsm_map_sm_RP_SMEA = -1;            /* OCTET_STRING_SIZE_1_12 */
610 static int hf_gsm_map_locationInfoWithLMSI = -1;  /* LocationInfoWithLMSI */
611 static int hf_gsm_map_networkNode_Number = -1;    /* ISDN_AddressString */
612 static int hf_gsm_map_gprsNodeIndicator = -1;     /* NULL */
613 static int hf_gsm_map_additional_Number = -1;     /* Additional_Number */
614 static int hf_gsm_map_sm_RP_DA = -1;              /* Sm_RP_DA */
615 static int hf_gsm_map_sm_RP_OA = -1;              /* Sm_RP_OA */
616 static int hf_gsm_map_sm_RP_UI = -1;              /* Sm_RP_UI */
617 static int hf_gsm_map_serviceCentreAddressOA = -1;  /* ServiceCentreAddress */
618 static int hf_gsm_map_noSM_RP_OA = -1;            /* NULL */
619 static int hf_gsm_map_serviceCentreAddressDA = -1;  /* ServiceCentreAddress */
620 static int hf_gsm_map_noSM_RP_DA = -1;            /* NULL */
621 static int hf_gsm_map_moreMessagesToSend = -1;    /* NULL */
622 static int hf_gsm_map_sm_DeliveryOutcome = -1;    /* Sm_DeliveryOutcome */
623 static int hf_gsm_map_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
624 static int hf_gsm_map_deliveryOutcomeIndicator = -1;  /* NULL */
625 static int hf_gsm_map_additionalSM_DeliveryOutcome = -1;  /* Sm_DeliveryOutcome */
626 static int hf_gsm_map_additionalAbsentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
627 static int hf_gsm_map_storedMSISDN = -1;          /* StoredMSISDN */
628 static int hf_gsm_map_mw_Status = -1;             /* T_mw_Status */
629 static int hf_gsm_map_alertReason = -1;           /* T_alertReason */
630 static int hf_gsm_map_alertReasonIndicator = -1;  /* NULL */
631 static int hf_gsm_map_requestedInfo = -1;         /* RequestedInfo */
632 static int hf_gsm_map_locationInformation = -1;   /* LocationInformation */
633 static int hf_gsm_map_subscriberState = -1;       /* SubscriberState */
634 static int hf_gsm_map_locationInformationGPRS = -1;  /* LocationInformationGPRS */
635 static int hf_gsm_map_ps_SubscriberState = -1;    /* PS_SubscriberState */
636 static int hf_gsm_map_ms_Classmark2 = -1;         /* MS_Classmark2 */
637 static int hf_gsm_map_gprs_MS_Class = -1;         /* GPRSMSClass */
638 static int hf_gsm_map_mnpInfoRes = -1;            /* MNPInfoRes */
639 static int hf_gsm_map_routeingNumber = -1;        /* RouteingNumber */
640 static int hf_gsm_map_mSNetworkCapability = -1;   /* MSNetworkCapability */
641 static int hf_gsm_map_mSRadioAccessCapability = -1;  /* MSRadioAccessCapability */
642 static int hf_gsm_map_locationInformation_flg = -1;  /* NULL */
643 static int hf_gsm_map_subscriberState_flg = -1;   /* NULL */
644 static int hf_gsm_map_currentLocation = -1;       /* NULL */
645 static int hf_gsm_map_requestedDomain = -1;       /* T_requestedDomain */
646 static int hf_gsm_map_imei_flg = -1;              /* NULL */
647 static int hf_gsm_map_ms_classmark = -1;          /* NULL */
648 static int hf_gsm_map_mnpRequestedInfo = -1;      /* NULL */
649 static int hf_gsm_map_subscriberIdentity = -1;    /* SubscriberIdentity */
650 static int hf_gsm_map_requestedSubscriptionInfo = -1;  /* RequestedSubscriptionInfo */
651 static int hf_gsm_map_callForwardingData = -1;    /* CallForwardingData */
652 static int hf_gsm_map_callBarringData = -1;       /* CallBarringData */
653 static int hf_gsm_map_odb_Info = -1;              /* ODB_Info */
654 static int hf_gsm_map_camel_SubscriptionInfo = -1;  /* CAMEL_SubscriptionInfo */
655 static int hf_gsm_map_supportedVLR_CAMEL_Phases = -1;  /* SupportedCamelPhases */
656 static int hf_gsm_map_supportedSGSN_CAMEL_Phases = -1;  /* SupportedCamelPhases */
657 static int hf_gsm_map_offeredCamel4CSIsInVLR = -1;  /* OfferedCamel4CSIs */
658 static int hf_gsm_map_offeredCamel4CSIsInSGSN = -1;  /* OfferedCamel4CSIs */
659 static int hf_gsm_map_requestedSS_Info = -1;      /* SS_ForBS_Code */
660 static int hf_gsm_map_odb = -1;                   /* NULL */
661 static int hf_gsm_map_requestedCAMEL_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
662 static int hf_gsm_map_supportedVLR_CAMEL_Phases_flg = -1;  /* NULL */
663 static int hf_gsm_map_supportedSGSN_CAMEL_Phases_flg = -1;  /* NULL */
664 static int hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo = -1;  /* AdditionalRequestedCAMEL_SubscriptionInfo */
665 static int hf_gsm_map_password = -1;              /* Password */
666 static int hf_gsm_map_wrongPasswordAttemptsCounter = -1;  /* WrongPasswordAttemptsCounter */
667 static int hf_gsm_map_bearerService = -1;         /* BearerServiceCode */
668 static int hf_gsm_map_teleservice_code = -1;      /* TeleserviceCode */
669 static int hf_gsm_map_O_BcsmCamelTDPCriteriaList_item = -1;  /* O_BcsmCamelTDP_Criteria */
670 static int hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_BCSM_CAMEL_TDP_Criteria */
671 static int hf_gsm_map_destinationNumberCriteria = -1;  /* DestinationNumberCriteria */
672 static int hf_gsm_map_basicServiceCriteria = -1;  /* BasicServiceCriteria */
673 static int hf_gsm_map_callTypeCriteria = -1;      /* CallTypeCriteria */
674 static int hf_gsm_map_o_CauseValueCriteria = -1;  /* O_CauseValueCriteria */
675 static int hf_gsm_map_t_BCSM_TriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
676 static int hf_gsm_map_t_CauseValueCriteria = -1;  /* T_CauseValueCriteria */
677 static int hf_gsm_map_maximumEntitledPriority = -1;  /* EMLPP_Priority */
678 static int hf_gsm_map_ccbs_FeatureList = -1;      /* CCBS_FeatureList */
679 static int hf_gsm_map_nbrSN = -1;                 /* MC_Bearers */
680 static int hf_gsm_map_CCBS_FeatureList_item = -1;  /* CCBS_Feature */
681 static int hf_gsm_map_b_subscriberNumber = -1;    /* ISDN_AddressString */
682 static int hf_gsm_map_b_subscriberSubaddress = -1;  /* ISDN_SubaddressString */
683 static int hf_gsm_map_basicServiceGroup = -1;     /* BasicServiceCode */
684 static int hf_gsm_map_T_CauseValueCriteria_item = -1;  /* CauseValue */
685 static int hf_gsm_map_O_CauseValueCriteria_item = -1;  /* CauseValue */
686 static int hf_gsm_map_BasicServiceCriteria_item = -1;  /* Ext_BasicServiceCode */
687 static int hf_gsm_map_modificationRequestFor_CF_Info = -1;  /* ModificationRequestFor_CF_Info */
688 static int hf_gsm_map_modificationRequestFor_CB_Info = -1;  /* ModificationRequestFor_CB_Info */
689 static int hf_gsm_map_modificationRequestFor_CSI = -1;  /* ModificationRequestFor_CSI */
690 static int hf_gsm_map_modificationRequestFor_ODB_data = -1;  /* ModificationRequestFor_ODB_data */
691 static int hf_gsm_map_ss_InfoFor_CSE = -1;        /* Ext_SS_InfoFor_CSE */
692 static int hf_gsm_map_modifyNotificationToCSE = -1;  /* ModificationInstruction */
693 static int hf_gsm_map_odb_data = -1;              /* ODB_Data */
694 static int hf_gsm_map_requestedCamel_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
695 static int hf_gsm_map_modifyCSI_State = -1;       /* ModificationInstruction */
696 static int hf_gsm_map_forwardingInfoFor_CSE = -1;  /* Ext_ForwardingInfoFor_CSE */
697 static int hf_gsm_map_callBarringInfoFor_CSE = -1;  /* Ext_CallBarringInfoFor_CSE */
698 static int hf_gsm_map_eventMet = -1;              /* MM_Code */
699 static int hf_gsm_map_supportedCAMELPhases = -1;  /* SupportedCamelPhases */
700 static int hf_gsm_map_offeredCamel4Functionalities = -1;  /* OfferedCamel4Functionalities */
701 static int hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
702 static int hf_gsm_map_tif_CSI_NotificationToCSE = -1;  /* NULL */
703 static int hf_gsm_map_specificCSIDeletedList = -1;  /* SpecificCSI_Withdraw */
704 static int hf_gsm_map_o_IM_CSI = -1;              /* O_CSI */
705 static int hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
706 static int hf_gsm_map_d_IM_CSI = -1;              /* D_CSI */
707 static int hf_gsm_map_vt_IM_CSI = -1;             /* T_CSI */
708 static int hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
709 static int hf_gsm_map_ext_BearerService = -1;     /* Ext_BearerServiceCode */
710 static int hf_gsm_map_ext_Teleservice = -1;       /* Ext_TeleserviceCode */
711 static int hf_gsm_map_odb_HPLMN_Data = -1;        /* ODB_HPLMN_Data */
712 static int hf_gsm_map_SS_EventList_item = -1;     /* SS_Code */
713 static int hf_gsm_map_t_BcsmCamelTDPDataList = -1;  /* T_BcsmCamelTDPDataList */
714 static int hf_gsm_map_T_BcsmCamelTDPDataList_item = -1;  /* T_BcsmCamelTDPData */
715 static int hf_gsm_map_t_BcsmTriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
716 static int hf_gsm_map_sms_CAMEL_TDP_DataList = -1;  /* SMS_CAMEL_TDP_DataList */
717 static int hf_gsm_map_SMS_CAMEL_TDP_DataList_item = -1;  /* SMS_CAMEL_TDP_Data */
718 static int hf_gsm_map_defaultSMS_Handling = -1;   /* DefaultSMS_Handling */
719 static int hf_gsm_map_MobilityTriggers_item = -1;  /* MM_Code */
720 static int hf_gsm_map_ss_Event = -1;              /* OCTET_STRING_SIZE_1 */
721 static int hf_gsm_map_ss_EventSpecification = -1;  /* T_ss_EventSpecification */
722 static int hf_gsm_map_ss_EventSpecification_item = -1;  /* OCTET_STRING_SIZE_1_20 */
723 static int hf_gsm_map_ext_teleservice = -1;       /* Ext_TeleserviceCode */
724 static int hf_gsm_map_codec_Info = -1;            /* CODEC_Info */
725 static int hf_gsm_map_cipheringAlgorithm = -1;    /* CipheringAlgorithm */
726 static int hf_gsm_map_groupKeyNumber_Vk_Id = -1;  /* GroupKeyNumber */
727 static int hf_gsm_map_groupKey = -1;              /* Kc */
728 static int hf_gsm_map_priority = -1;              /* EMLPP_Priority */
729 static int hf_gsm_map_uplinkFree = -1;            /* NULL */
730 static int hf_gsm_map_vstk = -1;                  /* VSTK */
731 static int hf_gsm_map_vstk_rand = -1;             /* VSTK_RAND */
732 static int hf_gsm_map_groupCallNumber = -1;       /* ISDN_AddressString */
733 static int hf_gsm_map_uplinkRequest = -1;         /* NULL */
734 static int hf_gsm_map_uplinkReleaseIndication = -1;  /* NULL */
735 static int hf_gsm_map_releaseGroupCall = -1;      /* NULL */
736 static int hf_gsm_map_uplinkRequestAck = -1;      /* NULL */
737 static int hf_gsm_map_uplinkRejectCommand = -1;   /* NULL */
738 static int hf_gsm_map_uplinkSeizedCommand = -1;   /* NULL */
739 static int hf_gsm_map_uplinkReleaseCommand = -1;  /* NULL */
740 static int hf_gsm_map_sgsn_Address = -1;          /* GSN_Address */
741 static int hf_gsm_map_sgsn_Capability = -1;       /* SGSN_Capability */
742 static int hf_gsm_map_ps_LCS_NotSupportedByUE = -1;  /* NULL */
743 static int hf_gsm_map_gprsEnhancementsSupportIndicator = -1;  /* NULL */
744 static int hf_gsm_map_smsCallBarringSupportIndicator = -1;  /* NULL */
745 static int hf_gsm_map_ggsn_Number = -1;           /* ISDN_AddressString */
746 static int hf_gsm_map_mobileNotReachableReason = -1;  /* AbsentSubscriberDiagnosticSM */
747 static int hf_gsm_map_locationType = -1;          /* LocationType */
748 static int hf_gsm_map_mlc_Number = -1;            /* ISDN_AddressString */
749 static int hf_gsm_map_lcs_ClientID = -1;          /* LCS_ClientID */
750 static int hf_gsm_map_privacyOverride = -1;       /* NULL */
751 static int hf_gsm_map_lcs_Priority = -1;          /* LCS_Priority */
752 static int hf_gsm_map_lcs_QoS = -1;               /* LCS_QoS */
753 static int hf_gsm_map_supportedGADShapes = -1;    /* SupportedGADShapes */
754 static int hf_gsm_map_lcs_ReferenceNumber = -1;   /* LCS_ReferenceNumber */
755 static int hf_gsm_map_lcsServiceTypeID = -1;      /* LCSServiceTypeID */
756 static int hf_gsm_map_lcsCodeword = -1;           /* LCSCodeword */
757 static int hf_gsm_map_lcs_PrivacyCheck = -1;      /* LCS_PrivacyCheck */
758 static int hf_gsm_map_areaEventInfo = -1;         /* AreaEventInfo */
759 static int hf_gsm_map_h_gmlc_Address = -1;        /* GSN_Address */
760 static int hf_gsm_map_locationEstimateType = -1;  /* LocationEstimateType */
761 static int hf_gsm_map_deferredLocationEventType = -1;  /* DeferredLocationEventType */
762 static int hf_gsm_map_lcsClientType = -1;         /* LCSClientType */
763 static int hf_gsm_map_lcsClientExternalID = -1;   /* LCSClientExternalID */
764 static int hf_gsm_map_lcsClientDialedByMS = -1;   /* AddressString */
765 static int hf_gsm_map_lcsClientInternalID = -1;   /* LCSClientInternalID */
766 static int hf_gsm_map_lcsClientName = -1;         /* LCSClientName */
767 static int hf_gsm_map_lcsAPN = -1;                /* APN */
768 static int hf_gsm_map_lcsRequestorID = -1;        /* LCSRequestorID */
769 static int hf_gsm_map_dataCodingScheme = -1;      /* USSD_DataCodingScheme */
770 static int hf_gsm_map_nameString = -1;            /* NameString */
771 static int hf_gsm_map_lcs_FormatIndicator = -1;   /* LCS_FormatIndicator */
772 static int hf_gsm_map_requestorIDString = -1;     /* RequestorIDString */
773 static int hf_gsm_map_horizontal_accuracy = -1;   /* Horizontal_Accuracy */
774 static int hf_gsm_map_verticalCoordinateRequest = -1;  /* NULL */
775 static int hf_gsm_map_vertical_accuracy = -1;     /* Vertical_Accuracy */
776 static int hf_gsm_map_responseTime = -1;          /* ResponseTime */
777 static int hf_gsm_map_responseTimeCategory = -1;  /* ResponseTimeCategory */
778 static int hf_gsm_map_lcsCodewordString = -1;     /* LCSCodewordString */
779 static int hf_gsm_map_callSessionUnrelated = -1;  /* PrivacyCheckRelatedAction */
780 static int hf_gsm_map_callSessionRelated = -1;    /* PrivacyCheckRelatedAction */
781 static int hf_gsm_map_areaDefinition = -1;        /* AreaDefinition */
782 static int hf_gsm_map_occurrenceInfo = -1;        /* OccurrenceInfo */
783 static int hf_gsm_map_intervalTime = -1;          /* IntervalTime */
784 static int hf_gsm_map_areaList = -1;              /* AreaList */
785 static int hf_gsm_map_AreaList_item = -1;         /* Area */
786 static int hf_gsm_map_areaType = -1;              /* AreaType */
787 static int hf_gsm_map_areaIdentification = -1;    /* AreaIdentification */
788 static int hf_gsm_map_locationEstimate = -1;      /* Ext_GeographicalInformation */
789 static int hf_gsm_map_ageOfLocationEstimate = -1;  /* AgeOfLocationInformation */
790 static int hf_gsm_map_add_LocationEstimate = -1;  /* Add_GeographicalInformation */
791 static int hf_gsm_map_deferredmt_lrResponseIndicator = -1;  /* NULL */
792 static int hf_gsm_map_geranPositioningData = -1;  /* PositioningDataInformation */
793 static int hf_gsm_map_utranPositioningData = -1;  /* UtranPositioningDataInfo */
794 static int hf_gsm_map_cellIdOrSai = -1;           /* CellGlobalIdOrServiceAreaIdOrLAI */
795 static int hf_gsm_map_mlcNumber = -1;             /* ISDN_AddressString */
796 static int hf_gsm_map_targetMS = -1;              /* SubscriberIdentity */
797 static int hf_gsm_map_lcsLocationInfo = -1;       /* LCSLocationInfo */
798 static int hf_gsm_map_ppr_Address = -1;           /* GSN_Address */
799 static int hf_gsm_map_additional_v_gmlc_Address = -1;  /* GSN_Address */
800 static int hf_gsm_map_additional_LCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
801 static int hf_gsm_map_lcs_Event = -1;             /* LCS_Event */
802 static int hf_gsm_map_na_ESRD = -1;               /* ISDN_AddressString */
803 static int hf_gsm_map_na_ESRK = -1;               /* ISDN_AddressString */
804 static int hf_gsm_map_slr_ArgExtensionContainer = -1;  /* SLR_ArgExtensionContainer */
805 static int hf_gsm_map_deferredmt_lrData = -1;     /* Deferredmt_lrData */
806 static int hf_gsm_map_pseudonymIndicator = -1;    /* NULL */
807 static int hf_gsm_map_terminationCause = -1;      /* TerminationCause */
808 static int hf_gsm_map_securityHeader = -1;        /* SecurityHeader */
809 static int hf_gsm_map_protectedPayload = -1;      /* ProtectedPayload */
810 static int hf_gsm_map_securityParametersIndex = -1;  /* SecurityParametersIndex */
811 static int hf_gsm_map_originalComponentIdentifier = -1;  /* OriginalComponentIdentifier */
812 static int hf_gsm_map_initialisationVector = -1;  /* InitialisationVector */
813 static int hf_gsm_map_operationCode = -1;         /* OperationCode */
814 static int hf_gsm_map_errorCode1 = -1;            /* ErrorCode */
815 static int hf_gsm_map_userInfo = -1;              /* NULL */
816 static int hf_gsm_map_localValue2 = -1;           /* INTEGER */
817 static int hf_gsm_map_networkResource = -1;       /* NetworkResource */
818 static int hf_gsm_map_extensibleSystemFailureParam = -1;  /* T_extensibleSystemFailureParam */
819 static int hf_gsm_map_unknownSubscriberDiagnostic = -1;  /* T_unknownSubscriberDiagnostic */
820 static int hf_gsm_map_roamingNotAllowedCause = -1;  /* T_roamingNotAllowedCause */
821 static int hf_gsm_map_absentSubscriberReason = -1;  /* AbsentSubscriberReason */
822 static int hf_gsm_map_ccbs_Busy = -1;             /* NULL */
823 static int hf_gsm_map_gprsConnectionSuspended = -1;  /* NULL */
824 static int hf_gsm_map_callBarringCause = -1;      /* CallBarringCause */
825 static int hf_gsm_map_extensibleCallBarredParam = -1;  /* ExtensibleCallBarredParam */
826 static int hf_gsm_map_unauthorisedMessageOriginator = -1;  /* NULL */
827 static int hf_gsm_map_cug_RejectCause = -1;       /* CUG_RejectCause */
828 static int hf_gsm_map_cug_RejectCause1 = -1;      /* T_cug_RejectCause */
829 static int hf_gsm_map_sm_EnumeratedDeliveryFailureCause = -1;  /* SM_EnumeratedDeliveryFailureCause */
830 static int hf_gsm_map_diagnosticInfo = -1;        /* SignalInfo */
831 static int hf_gsm_map_unauthorizedLCSClient_Diagnostic = -1;  /* T_unauthorizedLCSClient_Diagnostic */
832 static int hf_gsm_map_positionMethodFailure_Diagnostic = -1;  /* PositionMethodFailure_Diagnostic */
833 static int hf_gsm_map_pcsExtensions = -1;         /* PcsExtensions */
834 /* named bits */
835 static int hf_gsm_map_SupportedCamelPhases_phase1 = -1;
836 static int hf_gsm_map_SupportedCamelPhases_phase2 = -1;
837 static int hf_gsm_map_SupportedCamelPhases_phase3 = -1;
838 static int hf_gsm_map_SupportedCamelPhases_phase4 = -1;
839 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1 = -1;
840 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2 = -1;
841 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3 = -1;
842 static int hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4 = -1;
843 static int hf_gsm_map_RequestedEquipmentInfo_equipmentStatus = -1;
844 static int hf_gsm_map_RequestedEquipmentInfo_bmuef = -1;
845 static int hf_gsm_map_ODB_GeneralData_allOG_CallsBarred = -1;
846 static int hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred = -1;
847 static int hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred = -1;
848 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred = -1;
849 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred = -1;
850 static int hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred = -1;
851 static int hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred = -1;
852 static int hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred = -1;
853 static int hf_gsm_map_ODB_GeneralData_ss_AccessBarred = -1;
854 static int hf_gsm_map_ODB_GeneralData_allECT_Barred = -1;
855 static int hf_gsm_map_ODB_GeneralData_chargeableECT_Barred = -1;
856 static int hf_gsm_map_ODB_GeneralData_internationalECT_Barred = -1;
857 static int hf_gsm_map_ODB_GeneralData_interzonalECT_Barred = -1;
858 static int hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred = -1;
859 static int hf_gsm_map_ODB_GeneralData_multipleECT_Barred = -1;
860 static int hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred = -1;
861 static int hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred = -1;
862 static int hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred = -1;
863 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred = -1;
864 static int hf_gsm_map_ODB_GeneralData_allIC_CallsBarred = -1;
865 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred = -1;
866 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred = -1;
867 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred = -1;
868 static int hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred = -1;
869 static int hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred = -1;
870 static int hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred = -1;
871 static int hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred = -1;
872 static int hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred = -1;
873 static int hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred = -1;
874 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1 = -1;
875 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2 = -1;
876 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3 = -1;
877 static int hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4 = -1;
878 static int hf_gsm_map_AccessRestrictionData_utranNotAllowed = -1;
879 static int hf_gsm_map_AccessRestrictionData_geranNotAllowed = -1;
880 static int hf_gsm_map_SpecificCSI_Withdraw_o_csi = -1;
881 static int hf_gsm_map_SpecificCSI_Withdraw_ss_csi = -1;
882 static int hf_gsm_map_SpecificCSI_Withdraw_tif_csi = -1;
883 static int hf_gsm_map_SpecificCSI_Withdraw_d_csi = -1;
884 static int hf_gsm_map_SpecificCSI_Withdraw_vt_csi = -1;
885 static int hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi = -1;
886 static int hf_gsm_map_SpecificCSI_Withdraw_m_csi = -1;
887 static int hf_gsm_map_SpecificCSI_Withdraw_gprs_csi = -1;
888 static int hf_gsm_map_SpecificCSI_Withdraw_t_csi = -1;
889 static int hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi = -1;
890 static int hf_gsm_map_SpecificCSI_Withdraw_mg_csi = -1;
891 static int hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI = -1;
892 static int hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI = -1;
893 static int hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI = -1;
894 static int hf_gsm_map_AllowedServices_firstServiceAllowed = -1;
895 static int hf_gsm_map_AllowedServices_secondServiceAllowed = -1;
896 static int hf_gsm_map_ServiceIndicator_clir_invoked = -1;
897 static int hf_gsm_map_ServiceIndicator_camel_invoked = -1;
898 static int hf_gsm_map_T_mw_Status_scAddressNotIncluded = -1;
899 static int hf_gsm_map_T_mw_Status_mnrfSet = -1;
900 static int hf_gsm_map_T_mw_Status_mcefSet = -1;
901 static int hf_gsm_map_T_mw_Status_mnrgSet = -1;
902 static int hf_gsm_map_OfferedCamel4CSIs_o_csi = -1;
903 static int hf_gsm_map_OfferedCamel4CSIs_d_csi = -1;
904 static int hf_gsm_map_OfferedCamel4CSIs_vt_csi = -1;
905 static int hf_gsm_map_OfferedCamel4CSIs_t_csi = -1;
906 static int hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi = -1;
907 static int hf_gsm_map_OfferedCamel4CSIs_mg_csi = -1;
908 static int hf_gsm_map_OfferedCamel4CSIs_psi_enhancements = -1;
909 static int hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt = -1;
910 static int hf_gsm_map_OfferedCamel4Functionalities_splitLeg = -1;
911 static int hf_gsm_map_OfferedCamel4Functionalities_moveLeg = -1;
912 static int hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg = -1;
913 static int hf_gsm_map_OfferedCamel4Functionalities_entityReleased = -1;
914 static int hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument = -1;
915 static int hf_gsm_map_OfferedCamel4Functionalities_playTone = -1;
916 static int hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall = -1;
917 static int hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator = -1;
918 static int hf_gsm_map_OfferedCamel4Functionalities_alertingDP = -1;
919 static int hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting = -1;
920 static int hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP = -1;
921 static int hf_gsm_map_OfferedCamel4Functionalities_or_Interactions = -1;
922 static int hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements = -1;
923 static int hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements = -1;
924 static int hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices = -1;
925 static int hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices = -1;
926 static int hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP = -1;
927 static int hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP = -1;
928 static int hf_gsm_map_DeferredLocationEventType_msAvailable = -1;
929 static int hf_gsm_map_DeferredLocationEventType_enteringIntoArea = -1;
930 static int hf_gsm_map_DeferredLocationEventType_leavingFromArea = -1;
931 static int hf_gsm_map_DeferredLocationEventType_beingInsideArea = -1;
932 static int hf_gsm_map_SupportedGADShapes_ellipsoidPoint = -1;
933 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle = -1;
934 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse = -1;
935 static int hf_gsm_map_SupportedGADShapes_polygon = -1;
936 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude = -1;
937 static int hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid = -1;
938 static int hf_gsm_map_SupportedGADShapes_ellipsoidArc = -1;
939
940 /*--- End of included file: packet-gsm_map-hf.c ---*/
941 #line 111 "packet-gsm_map-template.c"
942
943 /* Initialize the subtree pointers */
944 static gint ett_gsm_map = -1;
945 static gint ett_gsm_map_InvokeId = -1;
946 static gint ett_gsm_map_InvokePDU = -1;
947 static gint ett_gsm_map_ReturnResultPDU = -1;
948 static gint ett_gsm_map_ReturnErrorPDU = -1;
949 static gint ett_gsm_map_ReturnResult_result = -1;
950 static gint ett_gsm_map_ReturnError_result = -1;
951 static gint ett_gsm_map_GSMMAPPDU = -1;
952 static gint ett_gsm_map_ext_qos_subscribed = -1;
953
954
955 /*--- Included file: packet-gsm_map-ett.c ---*/
956 #line 1 "packet-gsm_map-ett.c"
957 static gint ett_gsm_map_Component = -1;
958 static gint ett_gsm_map_Invoke = -1;
959 static gint ett_gsm_map_ReturnResult = -1;
960 static gint ett_gsm_map_T_resultretres = -1;
961 static gint ett_gsm_map_ReturnError = -1;
962 static gint ett_gsm_map_Reject = -1;
963 static gint ett_gsm_map_T_invokeIDRej = -1;
964 static gint ett_gsm_map_T_problem = -1;
965 static gint ett_gsm_map_OPERATION = -1;
966 static gint ett_gsm_map_ERROR = -1;
967 static gint ett_gsm_map_Bss_APDU = -1;
968 static gint ett_gsm_map_SupportedCamelPhases = -1;
969 static gint ett_gsm_map_UpdateLocationArg = -1;
970 static gint ett_gsm_map_UpdateLocationRes = -1;
971 static gint ett_gsm_map_VLR_Capability = -1;
972 static gint ett_gsm_map_SuperChargerInfo = -1;
973 static gint ett_gsm_map_SupportedLCS_CapabilitySets = -1;
974 static gint ett_gsm_map_ADD_Info = -1;
975 static gint ett_gsm_map_PrivateExtensionList = -1;
976 static gint ett_gsm_map_PrivateExtension = -1;
977 static gint ett_gsm_map_SLR_ArgExtensionContainer = -1;
978 static gint ett_gsm_map_PcsExtensions = -1;
979 static gint ett_gsm_map_SLR_Arg_PCS_Extensions = -1;
980 static gint ett_gsm_map_CancelLocationArg = -1;
981 static gint ett_gsm_map_CancelLocationArgV2 = -1;
982 static gint ett_gsm_map_CancelLocationRes = -1;
983 static gint ett_gsm_map_PurgeMSArg = -1;
984 static gint ett_gsm_map_PurgeMSRes = -1;
985 static gint ett_gsm_map_SendIdentificationArg = -1;
986 static gint ett_gsm_map_SendIdentificationRes = -1;
987 static gint ett_gsm_map_AuthenticationSetList = -1;
988 static gint ett_gsm_map_TripletList = -1;
989 static gint ett_gsm_map_QuintupletList = -1;
990 static gint ett_gsm_map_AuthenticationTriplet = -1;
991 static gint ett_gsm_map_AuthenticationQuintuplet = -1;
992 static gint ett_gsm_map_CurrentSecurityContext = -1;
993 static gint ett_gsm_map_GSM_SecurityContextData = -1;
994 static gint ett_gsm_map_UMTS_SecurityContextData = -1;
995 static gint ett_gsm_map_PrepareHO_Arg = -1;
996 static gint ett_gsm_map_PrepareHO_ArgV3 = -1;
997 static gint ett_gsm_map_BSSMAP_ServiceHandoverList = -1;
998 static gint ett_gsm_map_BSSMAP_ServiceHandoverInfo = -1;
999 static gint ett_gsm_map_RadioResourceList = -1;
1000 static gint ett_gsm_map_RadioResource = -1;
1001 static gint ett_gsm_map_PrepareHO_Res = -1;
1002 static gint ett_gsm_map_PrepareHO_ResV3 = -1;
1003 static gint ett_gsm_map_SelectedUMTS_Algorithms = -1;
1004 static gint ett_gsm_map_ChosenRadioResourceInformation = -1;
1005 static gint ett_gsm_map_SendEndSignalArgV3 = -1;
1006 static gint ett_gsm_map_SendEndSignalRes = -1;
1007 static gint ett_gsm_map_RelocationNumberList = -1;
1008 static gint ett_gsm_map_RelocationNumber = -1;
1009 static gint ett_gsm_map_ProcessAccessSignallingArgV3 = -1;
1010 static gint ett_gsm_map_SupportedCodecsList = -1;
1011 static gint ett_gsm_map_CodecList = -1;
1012 static gint ett_gsm_map_ForwardAccessSignallingArgV3 = -1;
1013 static gint ett_gsm_map_AllowedUMTS_Algorithms = -1;
1014 static gint ett_gsm_map_PrepareSubsequentHOArg = -1;
1015 static gint ett_gsm_map_PrepareSubsequentHOArgV3 = -1;
1016 static gint ett_gsm_map_PrepareSubsequentHOResV3 = -1;
1017 static gint ett_gsm_map_SendAuthenticationInfoArgV2 = -1;
1018 static gint ett_gsm_map_SendAuthenticationInfoRes = -1;
1019 static gint ett_gsm_map_SendAuthenticationInfoRes_item = -1;
1020 static gint ett_gsm_map_SendAuthenticationInfoResV3 = -1;
1021 static gint ett_gsm_map_Re_synchronisationInfo = -1;
1022 static gint ett_gsm_map_CheckIMEIArgV2 = -1;
1023 static gint ett_gsm_map_CheckIMEIRes = -1;
1024 static gint ett_gsm_map_RequestedEquipmentInfo = -1;
1025 static gint ett_gsm_map_UESBI_Iu = -1;
1026 static gint ett_gsm_map_BasicService = -1;
1027 static gint ett_gsm_map_BasicServiceGroupList = -1;
1028 static gint ett_gsm_map_ODB_GeneralData = -1;
1029 static gint ett_gsm_map_ODB_HPLMN_Data = -1;
1030 static gint ett_gsm_map_BcsmCamelTDPData = -1;
1031 static gint ett_gsm_map_BcsmCamelTDPDataList = -1;
1032 static gint ett_gsm_map_O_CSI = -1;
1033 static gint ett_gsm_map_O_BcsmCamelTDPDataList = -1;
1034 static gint ett_gsm_map_O_BcsmCamelTDPData = -1;
1035 static gint ett_gsm_map_InsertSubscriberDataArg = -1;
1036 static gint ett_gsm_map_AccessRestrictionData = -1;
1037 static gint ett_gsm_map_LCSInformation = -1;
1038 static gint ett_gsm_map_GMLC_List = -1;
1039 static gint ett_gsm_map_GPRSDataList = -1;
1040 static gint ett_gsm_map_PDP_Context = -1;
1041 static gint ett_gsm_map_GPRSSubscriptionData = -1;
1042 static gint ett_gsm_map_SGSN_CAMEL_SubscriptionInfo = -1;
1043 static gint ett_gsm_map_GPRS_CSI = -1;
1044 static gint ett_gsm_map_GPRS_CamelTDPDataList = -1;
1045 static gint ett_gsm_map_GPRS_CamelTDPData = -1;
1046 static gint ett_gsm_map_LSADataList = -1;
1047 static gint ett_gsm_map_LSAData = -1;
1048 static gint ett_gsm_map_LSAInformation = -1;
1049 static gint ett_gsm_map_InsertSubscriberDataRes = -1;
1050 static gint ett_gsm_map_DeleteSubscriberDataArg = -1;
1051 static gint ett_gsm_map_DeleteSubscriberDataRes = -1;
1052 static gint ett_gsm_map_SpecificCSI_Withdraw = -1;
1053 static gint ett_gsm_map_GPRSSubscriptionDataWithdraw = -1;
1054 static gint ett_gsm_map_ContextIdList = -1;
1055 static gint ett_gsm_map_LSAInformationWithdraw = -1;
1056 static gint ett_gsm_map_LSAIdentityList = -1;
1057 static gint ett_gsm_map_BasicServiceList = -1;
1058 static gint ett_gsm_map_VlrCamelSubscriptionInfo = -1;
1059 static gint ett_gsm_map_MT_smsCAMELTDP_CriteriaList = -1;
1060 static gint ett_gsm_map_MT_smsCAMELTDP_Criteria = -1;
1061 static gint ett_gsm_map_TPDU_TypeCriterion = -1;
1062 static gint ett_gsm_map_D_CSI = -1;
1063 static gint ett_gsm_map_DP_AnalysedInfoCriteriaList = -1;
1064 static gint ett_gsm_map_DP_AnalysedInfoCriterium = -1;
1065 static gint ett_gsm_map_SS_CSI = -1;
1066 static gint ett_gsm_map_SS_CamelData = -1;
1067 static gint ett_gsm_map_MG_CSI = -1;
1068 static gint ett_gsm_map_BearerServiceList = -1;
1069 static gint ett_gsm_map_TeleserviceList = -1;
1070 static gint ett_gsm_map_Ext_SS_InfoList = -1;
1071 static gint ett_gsm_map_Ext_SS_Info = -1;
1072 static gint ett_gsm_map_Ext_ForwInfo = -1;
1073 static gint ett_gsm_map_Ext_ForwFeatureList = -1;
1074 static gint ett_gsm_map_Ext_ForwFeature = -1;
1075 static gint ett_gsm_map_Ext_CallBarInfo = -1;
1076 static gint ett_gsm_map_Ext_CallBarFeatureList = -1;
1077 static gint ett_gsm_map_Ext_CallBarringFeature = -1;
1078 static gint ett_gsm_map_ZoneCodeList = -1;
1079 static gint ett_gsm_map_EMLPP_Info = -1;
1080 static gint ett_gsm_map_CUG_Info = -1;
1081 static gint ett_gsm_map_CUG_SubscriptionList = -1;
1082 static gint ett_gsm_map_CUG_Subscription = -1;
1083 static gint ett_gsm_map_CUG_FeatureList = -1;
1084 static gint ett_gsm_map_Ext_BasicServiceGroupList = -1;
1085 static gint ett_gsm_map_CUG_Feature = -1;
1086 static gint ett_gsm_map_Ext_SS_Data = -1;
1087 static gint ett_gsm_map_LCS_PrivacyExceptionList = -1;
1088 static gint ett_gsm_map_LCS_PrivacyClass = -1;
1089 static gint ett_gsm_map_ExternalClientList = -1;
1090 static gint ett_gsm_map_PLMNClientList = -1;
1091 static gint ett_gsm_map_Ext_ExternalClientList = -1;
1092 static gint ett_gsm_map_ExternalClient = -1;
1093 static gint ett_gsm_map_ServiceTypeList = -1;
1094 static gint ett_gsm_map_ServiceType = -1;
1095 static gint ett_gsm_map_MOLR_List = -1;
1096 static gint ett_gsm_map_MOLR_Class = -1;
1097 static gint ett_gsm_map_CallBarringFeatureList = -1;
1098 static gint ett_gsm_map_CallBarringFeature = -1;
1099 static gint ett_gsm_map_ForwardingFeatureList = -1;
1100 static gint ett_gsm_map_ForwardingFeature = -1;
1101 static gint ett_gsm_map_DestinationNumberCriteria = -1;
1102 static gint ett_gsm_map_DestinationNumberList = -1;
1103 static gint ett_gsm_map_DestinationNumberLengthList = -1;
1104 static gint ett_gsm_map_ForwardingInfo = -1;
1105 static gint ett_gsm_map_CallBarringInfo = -1;
1106 static gint ett_gsm_map_MC_SS_Info = -1;
1107 static gint ett_gsm_map_ResetArg = -1;
1108 static gint ett_gsm_map_RestoreDataArg = -1;
1109 static gint ett_gsm_map_RestoreDataRes = -1;
1110 static gint ett_gsm_map_VBSDataList = -1;
1111 static gint ett_gsm_map_VGCSDataList = -1;
1112 static gint ett_gsm_map_VoiceGroupCallData = -1;
1113 static gint ett_gsm_map_VoiceBroadcastData = -1;
1114 static gint ett_gsm_map_ActivateTraceModeArg = -1;
1115 static gint ett_gsm_map_ActivateTraceModeRes = -1;
1116 static gint ett_gsm_map_DeactivateTraceModeArg = -1;
1117 static gint ett_gsm_map_DeactivateTraceModeRes = -1;
1118 static gint ett_gsm_map_SendRoutingInfoArg = -1;
1119 static gint ett_gsm_map_SendRoutingInfoRes = -1;
1120 static gint ett_gsm_map_ExternalSignalInfo = -1;
1121 static gint ett_gsm_map_Ext_ExternalSignalInfo = -1;
1122 static gint ett_gsm_map_AccessNetworkSignalInfo = -1;
1123 static gint ett_gsm_map_CamelInfo = -1;
1124 static gint ett_gsm_map_Identity = -1;
1125 static gint ett_gsm_map_IMSI_WithLMSI = -1;
1126 static gint ett_gsm_map_SubscriberId = -1;
1127 static gint ett_gsm_map_HLR_List = -1;
1128 static gint ett_gsm_map_SS_List = -1;
1129 static gint ett_gsm_map_NAEA_PreferredCI = -1;
1130 static gint ett_gsm_map_SubscriberIdentity = -1;
1131 static gint ett_gsm_map_LCSClientExternalID = -1;
1132 static gint ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI = -1;
1133 static gint ett_gsm_map_AllowedServices = -1;
1134 static gint ett_gsm_map_CCBS_Indicators = -1;
1135 static gint ett_gsm_map_RoutingInfo = -1;
1136 static gint ett_gsm_map_ExtendedRoutingInfo = -1;
1137 static gint ett_gsm_map_CamelRoutingInfo = -1;
1138 static gint ett_gsm_map_GmscCamelSubscriptionInfo = -1;
1139 static gint ett_gsm_map_LocationInformation = -1;
1140 static gint ett_gsm_map_LocationInformationGPRS = -1;
1141 static gint ett_gsm_map_SubscriberState = -1;
1142 static gint ett_gsm_map_PS_SubscriberState = -1;
1143 static gint ett_gsm_map_PDP_ContextInfoList = -1;
1144 static gint ett_gsm_map_PDP_ContextInfo = -1;
1145 static gint ett_gsm_map_CUG_CheckInfo = -1;
1146 static gint ett_gsm_map_ForwardingData = -1;
1147 static gint ett_gsm_map_ProvideRoamingNumberArg = -1;
1148 static gint ett_gsm_map_ProvideRoamingNumberRes = -1;
1149 static gint ett_gsm_map_ResumeCallHandlingArg = -1;
1150 static gint ett_gsm_map_ResumeCallHandlingRes = -1;
1151 static gint ett_gsm_map_UU_Data = -1;
1152 static gint ett_gsm_map_ProvideSIWFSNumberArg = -1;
1153 static gint ett_gsm_map_ProvideSIWFSNumberRes = -1;
1154 static gint ett_gsm_map_SIWFSSignallingModifyArg = -1;
1155 static gint ett_gsm_map_SIWFSSignallingModifyRes = -1;
1156 static gint ett_gsm_map_SetReportingStateArg = -1;
1157 static gint ett_gsm_map_SetReportingStateRes = -1;
1158 static gint ett_gsm_map_StatusReportArg = -1;
1159 static gint ett_gsm_map_StatusReportRes = -1;
1160 static gint ett_gsm_map_EventReportData = -1;
1161 static gint ett_gsm_map_CallReportData = -1;
1162 static gint ett_gsm_map_IST_AlertArg = -1;
1163 static gint ett_gsm_map_IST_AlertRes = -1;
1164 static gint ett_gsm_map_IST_CommandArg = -1;
1165 static gint ett_gsm_map_IST_CommandRes = -1;
1166 static gint ett_gsm_map_ReleaseResourcesArg = -1;
1167 static gint ett_gsm_map_ReleaseResourcesRes = -1;
1168 static gint ett_gsm_map_RemoteUserFreeArg = -1;
1169 static gint ett_gsm_map_RemoteUserFreeRes = -1;
1170 static gint ett_gsm_map_SS_Data = -1;
1171 static gint ett_gsm_map_SS_SubscriptionOption = -1;
1172 static gint ett_gsm_map_RegisterSS_Arg = -1;
1173 static gint ett_gsm_map_SS_Info = -1;
1174 static gint ett_gsm_map_InterrogateSS_Res = -1;
1175 static gint ett_gsm_map_Ussd_Arg = -1;
1176 static gint ett_gsm_map_Ussd_Res = -1;
1177 static gint ett_gsm_map_AuthenticationFailureReportArg = -1;
1178 static gint ett_gsm_map_AuthenticationFailureReportRes = -1;
1179 static gint ett_gsm_map_RegisterCC_EntryArg = -1;
1180 static gint ett_gsm_map_RegisterCC_EntryRes = -1;
1181 static gint ett_gsm_map_CCBS_Data = -1;
1182 static gint ett_gsm_map_ServiceIndicator = -1;
1183 static gint ett_gsm_map_EraseCC_EntryArg = -1;
1184 static gint ett_gsm_map_EraseCC_EntryRes = -1;
1185 static gint ett_gsm_map_RoutingInfoForSMArg = -1;
1186 static gint ett_gsm_map_RoutingInfoForSM_Res = -1;
1187 static gint ett_gsm_map_LocationInfoWithLMSI = -1;
1188 static gint ett_gsm_map_Additional_Number = -1;
1189 static gint ett_gsm_map_Mo_forwardSM_Arg = -1;
1190 static gint ett_gsm_map_Mo_forwardSM_Res = -1;
1191 static gint ett_gsm_map_Sm_RP_OA = -1;
1192 static gint ett_gsm_map_Sm_RP_DA = -1;
1193 static gint ett_gsm_map_Mt_forwardSM_Arg = -1;
1194 static gint ett_gsm_map_Mt_forwardSM_Res = -1;
1195 static gint ett_gsm_map_ReportSM_DeliveryStatusArg = -1;
1196 static gint ett_gsm_map_ReportSM_DeliveryStatusRes = -1;
1197 static gint ett_gsm_map_InformServiceCentreArg = -1;
1198 static gint ett_gsm_map_T_mw_Status = -1;
1199 static gint ett_gsm_map_AlertServiceCentreArg = -1;
1200 static gint ett_gsm_map_ReadyForSM_Arg = -1;
1201 static gint ett_gsm_map_ReadyForSM_Res = -1;
1202 static gint ett_gsm_map_ProvideSubscriberInfoArg = -1;
1203 static gint ett_gsm_map_ProvideSubscriberInfoRes = -1;
1204 static gint ett_gsm_map_SubscriberInfo = -1;
1205 static gint ett_gsm_map_MNPInfoRes = -1;
1206 static gint ett_gsm_map_GPRSMSClass = -1;
1207 static gint ett_gsm_map_RequestedInfo = -1;
1208 static gint ett_gsm_map_AnyTimeInterrogationArg = -1;
1209 static gint ett_gsm_map_AnyTimeInterrogationRes = -1;
1210 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationArg = -1;
1211 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationRes = -1;
1212 static gint ett_gsm_map_RequestedSubscriptionInfo = -1;
1213 static gint ett_gsm_map_CallForwardingData = -1;
1214 static gint ett_gsm_map_CallBarringData = -1;
1215 static gint ett_gsm_map_BasicServiceCode = -1;
1216 static gint ett_gsm_map_O_BcsmCamelTDPCriteriaList = -1;
1217 static gint ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList = -1;
1218 static gint ett_gsm_map_O_BcsmCamelTDP_Criteria = -1;
1219 static gint ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria = -1;
1220 static gint ett_gsm_map_OfferedCamel4CSIs = -1;
1221 static gint ett_gsm_map_OfferedCamel4Functionalities = -1;
1222 static gint ett_gsm_map_SS_ForBS_Code = -1;
1223 static gint ett_gsm_map_GenericServiceInfo = -1;
1224 static gint ett_gsm_map_CCBS_FeatureList = -1;
1225 static gint ett_gsm_map_CCBS_Feature = -1;
1226 static gint ett_gsm_map_T_CauseValueCriteria = -1;
1227 static gint ett_gsm_map_O_CauseValueCriteria = -1;
1228 static gint ett_gsm_map_BasicServiceCriteria = -1;
1229 static gint ett_gsm_map_AnyTimeModificationArg = -1;
1230 static gint ett_gsm_map_AnyTimeModificationRes = -1;
1231 static gint ett_gsm_map_ModificationRequestFor_CF_Info = -1;
1232 static gint ett_gsm_map_ModificationRequestFor_CB_Info = -1;
1233 static gint ett_gsm_map_ModificationRequestFor_ODB_data = -1;
1234 static gint ett_gsm_map_ModificationRequestFor_CSI = -1;
1235 static gint ett_gsm_map_Ext_SS_InfoFor_CSE = -1;
1236 static gint ett_gsm_map_NoteSubscriberDataModifiedArg = -1;
1237 static gint ett_gsm_map_NoteSubscriberDataModifiedRes = -1;
1238 static gint ett_gsm_map_NoteMM_EventArg = -1;
1239 static gint ett_gsm_map_NoteMM_EventRes = -1;
1240 static gint ett_gsm_map_CAMEL_SubscriptionInfo = -1;
1241 static gint ett_gsm_map_Ext_ForwardingInfoFor_CSE = -1;
1242 static gint ett_gsm_map_Ext_BasicServiceCode = -1;
1243 static gint ett_gsm_map_Ext_CallBarringInfoFor_CSE = -1;
1244 static gint ett_gsm_map_ODB_Info = -1;
1245 static gint ett_gsm_map_ODB_Data = -1;
1246 static gint ett_gsm_map_M_CSI = -1;
1247 static gint ett_gsm_map_SS_EventList = -1;
1248 static gint ett_gsm_map_T_CSI = -1;
1249 static gint ett_gsm_map_T_BcsmCamelTDPDataList = -1;
1250 static gint ett_gsm_map_T_BcsmCamelTDPData = -1;
1251 static gint ett_gsm_map_SMS_CSI = -1;
1252 static gint ett_gsm_map_SMS_CAMEL_TDP_DataList = -1;
1253 static gint ett_gsm_map_SMS_CAMEL_TDP_Data = -1;
1254 static gint ett_gsm_map_MobilityTriggers = -1;
1255 static gint ett_gsm_map_Ss_InvocationNotificationArg = -1;
1256 static gint ett_gsm_map_T_ss_EventSpecification = -1;
1257 static gint ett_gsm_map_Ss_InvocationNotificationRes = -1;
1258 static gint ett_gsm_map_PrepareGroupCallArg = -1;
1259 static gint ett_gsm_map_PrepareGroupCallRes = -1;
1260 static gint ett_gsm_map_SendGroupCallEndSignalArg = -1;
1261 static gint ett_gsm_map_SendGroupCallEndSignalRes = -1;
1262 static gint ett_gsm_map_ProcessGroupCallSignallingArg = -1;
1263 static gint ett_gsm_map_ForwardGroupCallSignallingArg = -1;
1264 static gint ett_gsm_map_UpdateGprsLocationArg = -1;
1265 static gint ett_gsm_map_UpdateGprsLocationRes = -1;
1266 static gint ett_gsm_map_SGSN_Capability = -1;
1267 static gint ett_gsm_map_SendRoutingInfoForGprsArg = -1;
1268 static gint ett_gsm_map_SendRoutingInfoForGprsRes = -1;
1269 static gint ett_gsm_map_FailureReportArg = -1;
1270 static gint ett_gsm_map_FailureReportRes = -1;
1271 static gint ett_gsm_map_NoteMsPresentForGprsArg = -1;
1272 static gint ett_gsm_map_NoteMsPresentForGprsRes = -1;
1273 static gint ett_gsm_map_ProvideSubscriberLocation_Arg = -1;
1274 static gint ett_gsm_map_LocationType = -1;
1275 static gint ett_gsm_map_DeferredLocationEventType = -1;
1276 static gint ett_gsm_map_LCS_ClientID = -1;
1277 static gint ett_gsm_map_LCSClientName = -1;
1278 static gint ett_gsm_map_LCSRequestorID = -1;
1279 static gint ett_gsm_map_LCS_QoS = -1;
1280 static gint ett_gsm_map_ResponseTime = -1;
1281 static gint ett_gsm_map_SupportedGADShapes = -1;
1282 static gint ett_gsm_map_LCSCodeword = -1;
1283 static gint ett_gsm_map_LCS_PrivacyCheck = -1;
1284 static gint ett_gsm_map_AreaEventInfo = -1;
1285 static gint ett_gsm_map_AreaDefinition = -1;
1286 static gint ett_gsm_map_AreaList = -1;
1287 static gint ett_gsm_map_Area = -1;
1288 static gint ett_gsm_map_ProvideSubscriberLocation_Res = -1;
1289 static gint ett_gsm_map_TargetMS = -1;
1290 static gint ett_gsm_map_RoutingInfoForLCS_Arg = -1;
1291 static gint ett_gsm_map_RoutingInfoForLCS_Res = -1;
1292 static gint ett_gsm_map_LCSLocationInfo = -1;
1293 static gint ett_gsm_map_SubscriberLocationReport_Arg = -1;
1294 static gint ett_gsm_map_Deferredmt_lrData = -1;
1295 static gint ett_gsm_map_SubscriberLocationReport_Res = -1;
1296 static gint ett_gsm_map_SecureTransportArg = -1;
1297 static gint ett_gsm_map_SecureTransportRes = -1;
1298 static gint ett_gsm_map_SecurityHeader = -1;
1299 static gint ett_gsm_map_OriginalComponentIdentifier = -1;
1300 static gint ett_gsm_map_OperationCode = -1;
1301 static gint ett_gsm_map_ErrorCode = -1;
1302 static gint ett_gsm_map_SystemFailureParam = -1;
1303 static gint ett_gsm_map_T_extensibleSystemFailureParam = -1;
1304 static gint ett_gsm_map_DataMissingParam = -1;
1305 static gint ett_gsm_map_UnexpectedDataParam = -1;
1306 static gint ett_gsm_map_FacilityNotSupParam = -1;
1307 static gint ett_gsm_map_OR_NotAllowedParam = -1;
1308 static gint ett_gsm_map_IncompatibleTerminalParam = -1;
1309 static gint ett_gsm_map_ResourceLimitationParam = -1;
1310 static gint ett_gsm_map_UnknownSubscriberParam = -1;
1311 static gint ett_gsm_map_NumberChangedParam = -1;
1312 static gint ett_gsm_map_UnidentifiedSubParam = -1;
1313 static gint ett_gsm_map_RoamingNotAllowedParam = -1;
1314 static gint ett_gsm_map_IllegalSubscriberParam = -1;
1315 static gint ett_gsm_map_IllegalEquipmentParam = -1;
1316 static gint ett_gsm_map_BearerServNotProvParam = -1;
1317 static gint ett_gsm_map_TeleservNotProvParam = -1;
1318 static gint ett_gsm_map_TracingBufferFullParam = -1;
1319 static gint ett_gsm_map_NoRoamingNbParam = -1;
1320 static gint ett_gsm_map_AbsentSubscriberParam = -1;
1321 static gint ett_gsm_map_BusySubscriberParam = -1;
1322 static gint ett_gsm_map_NoSubscriberReplyParam = -1;
1323 static gint ett_gsm_map_ForwardingViolationParam = -1;
1324 static gint ett_gsm_map_ForwardingFailedParam = -1;
1325 static gint ett_gsm_map_ATI_NotAllowedParam = -1;
1326 static gint ett_gsm_map_ATSI_NotAllowedParam = -1;
1327 static gint ett_gsm_map_ATM_NotAllowedParam = -1;
1328 static gint ett_gsm_map_IllegalSS_OperationParam = -1;
1329 static gint ett_gsm_map_SS_NotAvailableParam = -1;
1330 static gint ett_gsm_map_SS_SubscriptionViolationParam = -1;
1331 static gint ett_gsm_map_InformationNotAvailableParam = -1;
1332 static gint ett_gsm_map_SubBusyForMT_SMS_Param = -1;
1333 static gint ett_gsm_map_CallBarredParam = -1;
1334 static gint ett_gsm_map_ExtensibleCallBarredParam = -1;
1335 static gint ett_gsm_map_CUG_RejectParam = -1;
1336 static gint ett_gsm_map_Or_NotAllowedParam = -1;
1337 static gint ett_gsm_map_Cug_RejectParam = -1;
1338 static gint ett_gsm_map_NoGroupCallNbParam = -1;
1339 static gint ett_gsm_map_SS_IncompatibilityCause = -1;
1340 static gint ett_gsm_map_ShortTermDenialParam = -1;
1341 static gint ett_gsm_map_LongTermDenialParam = -1;
1342 static gint ett_gsm_map_SM_DeliveryFailureCause = -1;
1343 static gint ett_gsm_map_MessageWaitListFullParam = -1;
1344 static gint ett_gsm_map_AbsentSubscriberSM_Param = -1;
1345 static gint ett_gsm_map_UnauthorizedRequestingNetwork_Param = -1;
1346 static gint ett_gsm_map_UnauthorizedLCSClient_Param = -1;
1347 static gint ett_gsm_map_PositionMethodFailure_Param = -1;
1348 static gint ett_gsm_map_UnknownOrUnreachableLCSClient_Param = -1;
1349 static gint ett_gsm_map_MM_EventNotSupported_Param = -1;
1350 static gint ett_gsm_map_TargetCellOutsideGCA_Param = -1;
1351 static gint ett_gsm_map_SecureTransportErrorParam = -1;
1352 static gint ett_gsm_map_ExtensionContainer = -1;
1353
1354 /*--- End of included file: packet-gsm_map-ett.c ---*/
1355 #line 124 "packet-gsm_map-template.c"
1356
1357 static dissector_table_t        sms_dissector_table;    /* SMS TPDU */
1358 static dissector_handle_t data_handle;
1359
1360 /* Preferenc settings default */
1361 #define MAX_SSN 254
1362 static range_t *global_ssn_range;
1363 static range_t *ssn_range;
1364 dissector_handle_t      map_handle;
1365
1366 /* Global variables */
1367 static guint32 opcode=0;
1368 static guint32 errorCode;
1369 static proto_tree *top_tree;
1370 static int application_context_version;
1371 gint protocolId;
1372 gint AccessNetworkProtocolId;
1373 static int gsm_map_tap = -1;
1374
1375 /* Forward declarations */
1376 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
1377 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
1378 static int dissect_returnErrorData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
1379
1380
1381 char*
1382 unpack_digits(tvbuff_t *tvb, int offset){
1383
1384         int length;
1385         guint8 octet;
1386         int i=0;
1387         char *digit_str;
1388
1389         length = tvb_length(tvb);
1390         if (length < offset)
1391                 return "";
1392         digit_str = ep_alloc((length - offset)*2+1);
1393
1394         while ( offset < length ){
1395
1396                 octet = tvb_get_guint8(tvb,offset);
1397                 digit_str[i] = ((octet & 0x0f) + '0');
1398                 i++;
1399
1400                 /*
1401                  * unpack second value in byte
1402                  */
1403                 octet = octet >> 4;
1404
1405                 if (octet == 0x0f)      /* odd number bytes - hit filler */
1406                         break;
1407
1408                 digit_str[i] = ((octet & 0x0f) + '0');
1409                 i++;
1410                 offset++;
1411
1412         }
1413         digit_str[i]= '\0';
1414         return digit_str;
1415 }
1416
1417
1418
1419 static void 
1420 dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree){
1421         int offset = 0;
1422     proto_item *item;
1423     proto_tree *subtree;
1424         guint8 octet;
1425
1426         item = get_ber_last_created_item();
1427         subtree = proto_item_add_subtree(item, ett_gsm_map_ext_qos_subscribed);
1428         /*  OCTET 1:
1429                 Allocation/Retention Priority (This octet encodes each priority level defined in
1430                 23.107 as the binary value of the priority level, declaration in 29.060)
1431                 Octets 2-9 are coded according to 3GPP TS 24.008[35] Quality of Service Octets
1432                 6-13.
1433          */
1434         /* Allocation/Retention Priority */
1435         proto_tree_add_item(subtree, hf_gsm_map_ext_qos_subscribed_pri, tvb, offset, 1, FALSE);
1436         offset++;
1437
1438         /* Quality of Service Octets 6-13.( Octet 2 - 9 Here) */
1439
1440         /* Traffic class, octet 6 (see 3GPP TS 23.107) Bits 8 7 6 */
1441         proto_tree_add_item(subtree, hf_gsm_map_qos_traffic_cls, tvb, offset, 1, FALSE);
1442         /* Delivery order, octet 6 (see 3GPP TS 23.107) Bits 5 4 */
1443         proto_tree_add_item(subtree, hf_gsm_map_qos_del_order, tvb, offset, 1, FALSE);
1444         /* Delivery of erroneous SDUs, octet 6 (see 3GPP TS 23.107) Bits 3 2 1 */
1445         proto_tree_add_item(subtree, hf_gsm_map_qos_del_of_err_sdu, tvb, offset, 1, FALSE);
1446         offset++;
1447
1448         /* Maximum SDU size, octet 7 (see 3GPP TS 23.107) */
1449         octet = tvb_get_guint8(tvb,offset);
1450         proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet);
1451
1452
1453         offset++;
1454         /* Maximum bit rate for uplink, octet 8 */
1455         octet = tvb_get_guint8(tvb,offset);
1456         proto_tree_add_uint(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, octet);
1457         offset++;
1458         /* Maximum bit rate for downlink, octet 9 (see 3GPP TS 23.107) */
1459         octet = tvb_get_guint8(tvb,offset);
1460         proto_tree_add_uint(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, octet);
1461         offset++;
1462         /* Residual Bit Error Rate (BER), octet 10 (see 3GPP TS 23.107) Bits 8 7 6 5 */ 
1463         proto_tree_add_item(subtree, hf_gsm_map_qos_ber, tvb, offset, 1, FALSE);
1464         /* SDU error ratio, octet 10 (see 3GPP TS 23.107) */
1465         proto_tree_add_item(subtree, hf_gsm_map_qos_sdu_err_rat, tvb, offset, 1, FALSE);
1466         offset++;
1467
1468         /* Traffic handling priority, octet 11 (see 3GPP TS 23.107) Bits 2 1 */
1469         proto_tree_add_item(subtree, hf_gsm_map_qos_traff_hdl_pri, tvb, offset, 1, FALSE);
1470         /* Transfer delay, octet 11 (See 3GPP TS 23.107) Bits 8 7 6 5 4 3 */
1471         proto_tree_add_item(subtree, hf_gsm_map_qos_transfer_delay, tvb, offset, 1, FALSE);
1472         offset++;
1473
1474         /*      Guaranteed bit rate for uplink, octet 12 (See 3GPP TS 23.107)
1475                 Coding is identical to that of Maximum bit rate for uplink.
1476          */
1477         octet = tvb_get_guint8(tvb,offset);
1478         proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, octet);
1479         offset++;
1480
1481         /*      Guaranteed bit rate for downlink, octet 13(See 3GPP TS 23.107)
1482                 Coding is identical to that of Maximum bit rate for uplink.
1483          */
1484         octet = tvb_get_guint8(tvb,offset);
1485         proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, octet);
1486
1487 }
1488
1489
1490 /*--- Included file: packet-gsm_map-fn.c ---*/
1491 #line 1 "packet-gsm_map-fn.c"
1492 /*--- Fields for imported types ---*/
1493
1494
1495
1496
1497 static int
1498 dissect_gsm_map_InvokeIdType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1499   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1500                                   NULL);
1501
1502   return offset;
1503 }
1504 static int dissect_invokeID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1505   return dissect_gsm_map_InvokeIdType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeID);
1506 }
1507 static int dissect_linkedID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1508   return dissect_gsm_map_InvokeIdType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_linkedID);
1509 }
1510 static int dissect_derivable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1511   return dissect_gsm_map_InvokeIdType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_derivable);
1512 }
1513
1514
1515 static const value_string gsm_map_OperationLocalvalue_vals[] = {
1516   {   2, "updateLocation" },
1517   {   3, "cancelLocation" },
1518   {   4, "provideRoamingNumber" },
1519   {   5, "noteSubscriberDataModified" },
1520   {   6, "resumeCallHandling" },
1521   {   7, "insertSubscriberData" },
1522   {   8, "deleteSubscriberData" },
1523   {   9, "sendParameters" },
1524   {  10, "registerSS" },
1525   {  11, "eraseSS" },
1526   {  12, "activateSS" },
1527   {  13, "deactivateSS" },
1528   {  14, "interrogateSS" },
1529   {  15, "authenticationFailureReport" },
1530   {  17, "registerPassword" },
1531   {  18, "getPassword" },
1532   {  19, "processUnstructuredSS-Data" },
1533   {  20, "releaseResources" },
1534   {  22, "sendRoutingInfo" },
1535   {  23, "updateGprsLocation" },
1536   {  24, "sendRoutingInfoForGprs" },
1537   {  25, "failureReport" },
1538   {  26, "noteMsPresentForGprs" },
1539   {  28, "performHandover" },
1540   {  29, "sendEndSignal" },
1541   {  30, "performSubsequentHandover" },
1542   {  31, "provideSIWFSNumber" },
1543   {  32, "sIWFSSignallingModify" },
1544   {  33, "processAccessSignalling" },
1545   {  34, "forwardAccessSignalling" },
1546   {  35, "noteInternalHandover" },
1547   {  37, "reset" },
1548   {  38, "forwardCheckSS" },
1549   {  39, "prepareGroupCall" },
1550   {  40, "sendGroupCallEndSignal" },
1551   {  41, "processGroupCallSignalling" },
1552   {  42, "forwardGroupCallSignalling" },
1553   {  43, "checkIMEI" },
1554   {  44, "mt-forwardSM" },
1555   {  45, "sendRoutingInfoForSM" },
1556   {  46, "mo-forwardSM" },
1557   {  47, "reportSM-DeliveryStatus" },
1558   {  48, "noteSubscriberPresent" },
1559   {  49, "alertServiceCentreWithoutResult" },
1560   {  50, "activateTraceMode" },
1561   {  51, "deactivateTraceMode" },
1562   {  52, "traceSubscriberActivity" },
1563   {  54, "beginSubscriberActivity" },
1564   {  55, "sendIdentification" },
1565   {  56, "sendAuthenticationInfo" },
1566   {  57, "restoreData" },
1567   {  58, "sendIMSI" },
1568   {  59, "processUnstructuredSS-Request" },
1569   {  60, "unstructuredSS-Request" },
1570   {  61, "unstructuredSS-Notify" },
1571   {  62, "anyTimeSubscriptionInterrogation" },
1572   {  63, "informServiceCentre" },
1573   {  64, "alertServiceCentre" },
1574   {  65, "anyTimeModification" },
1575   {  66, "readyForSM" },
1576   {  67, "purgeMS" },
1577   {  68, "prepareHandover" },
1578   {  69, "prepareSubsequentHandover" },
1579   {  70, "provideSubscriberInfo" },
1580   {  71, "anyTimeInterrogation" },
1581   {  72, "ss-InvocationNotification" },
1582   {  73, "setReportingState" },
1583   {  74, "statusReport" },
1584   {  75, "remoteUserFree" },
1585   {  76, "registerCC-Entry" },
1586   {  77, "eraseCC-Entry" },
1587   {  78, "secureTransportClass1" },
1588   {  79, "secureTransportClass2" },
1589   {  80, "secureTransportClass3" },
1590   {  81, "secureTransportClass4" },
1591   {  83, "provideSubscriberLocation" },
1592   {  85, "sendRoutingInfoForLCS" },
1593   {  86, "subscriberLocationReport" },
1594   {  87, "ist-Alert" },
1595   {  88, "ist-Command" },
1596   {  89, "noteMM-Event" },
1597   { 0, NULL }
1598 };
1599
1600
1601 static int
1602 dissect_gsm_map_OperationLocalvalue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1603 #line 137 "gsmmap.cnf"
1604
1605   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1606                                   &opcode);
1607  
1608   if (check_col(pinfo->cinfo, COL_INFO)){
1609     col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
1610   }
1611
1612
1613
1614   return offset;
1615 }
1616 static int dissect_localValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1617   return dissect_gsm_map_OperationLocalvalue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue);
1618 }
1619
1620
1621
1622 static int
1623 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_) {
1624   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1625
1626   return offset;
1627 }
1628 static int dissect_globalValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1629   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_globalValue);
1630 }
1631 static int dissect_extId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1632   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extId);
1633 }
1634
1635
1636 static const value_string gsm_map_OPERATION_vals[] = {
1637   {   0, "localValue" },
1638   {   1, "globalValue" },
1639   { 0, NULL }
1640 };
1641
1642 static const ber_choice_t OPERATION_choice[] = {
1643   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue },
1644   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
1645   { 0, 0, 0, 0, NULL }
1646 };
1647
1648 static int
1649 dissect_gsm_map_OPERATION(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1650   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1651                                  OPERATION_choice, hf_index, ett_gsm_map_OPERATION,
1652                                  NULL);
1653
1654   return offset;
1655 }
1656 static int dissect_opCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1657   return dissect_gsm_map_OPERATION(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_opCode);
1658 }
1659
1660
1661
1662 static int
1663 dissect_gsm_map_InvokeParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1664 #line 124 "gsmmap.cnf"
1665         offset = dissect_invokeData(pinfo, tree, tvb, offset);
1666
1667
1668
1669   return offset;
1670 }
1671 static int dissect_invokeparameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1672   return dissect_gsm_map_InvokeParameter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeparameter);
1673 }
1674
1675
1676 static const ber_sequence_t Invoke_sequence[] = {
1677   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeID },
1678   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_linkedID_impl },
1679   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_opCode },
1680   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_invokeparameter },
1681   { 0, 0, 0, NULL }
1682 };
1683
1684 static int
1685 dissect_gsm_map_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1686   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1687                                    Invoke_sequence, hf_index, ett_gsm_map_Invoke);
1688
1689   return offset;
1690 }
1691 static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1692   return dissect_gsm_map_Invoke(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invoke);
1693 }
1694
1695
1696
1697 static int
1698 dissect_gsm_map_ReturnResultParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1699 #line 127 "gsmmap.cnf"
1700         offset = dissect_returnResultData(pinfo, tree, tvb, offset);
1701
1702
1703
1704   return offset;
1705 }
1706 static int dissect_returnparameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1707   return dissect_gsm_map_ReturnResultParameter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_returnparameter);
1708 }
1709
1710
1711 static const ber_sequence_t T_resultretres_sequence[] = {
1712   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_opCode },
1713   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_returnparameter },
1714   { 0, 0, 0, NULL }
1715 };
1716
1717 static int
1718 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_) {
1719   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1720                                    T_resultretres_sequence, hf_index, ett_gsm_map_T_resultretres);
1721
1722   return offset;
1723 }
1724 static int dissect_resultretres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1725   return dissect_gsm_map_T_resultretres(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_resultretres);
1726 }
1727
1728
1729 static const ber_sequence_t ReturnResult_sequence[] = {
1730   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeID },
1731   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_resultretres },
1732   { 0, 0, 0, NULL }
1733 };
1734
1735 static int
1736 dissect_gsm_map_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1737   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1738                                    ReturnResult_sequence, hf_index, ett_gsm_map_ReturnResult);
1739
1740   return offset;
1741 }
1742 static int dissect_returnResultLast_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1743   return dissect_gsm_map_ReturnResult(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResultLast);
1744 }
1745
1746
1747 static const value_string gsm_map_LocalErrorcode_vals[] = {
1748   {  34, "systemFailure" },
1749   {  35, "dataMissing" },
1750   {  36, "unexpectedDataValue" },
1751   {  21, "facilityNotSupported" },
1752   {  28, "incompatibleTerminal" },
1753   {  51, "resourceLimitation" },
1754   {   1, "unknownSubscriber" },
1755   {  44, "numberChanged" },
1756   {   3, "unknownMSC" },
1757   {   5, "unidentifiedSubscriber" },
1758   {   7, "unknownEquipment" },
1759   {   8, "roamingNotAllowed" },
1760   {   9, "illegalSubscriber" },
1761   {  12, "illegalEquipment" },
1762   {  10, "bearerServiceNotProvisioned" },
1763   {  11, "teleserviceNotProvisioned" },
1764   {  25, "noHandoverNumberAvailable" },
1765   {  26, "subsequentHandoverFailure" },
1766   {  42, "targetCellOutsideGroupCallArea" },
1767   {  40, "tracingBufferFull" },
1768   {  39, "noRoamingNumberAvailable" },
1769   {  27, "absentSubscriber" },
1770   {  45, "busySubscriber" },
1771   {  46, "noSubscriberReply" },
1772   {  13, "callBarred" },
1773   {  14, "forwardingViolation" },
1774   {  47, "forwardingFailed" },
1775   {  15, "cug-Reject" },
1776   {  48, "or-NotAllowed" },
1777   {  49, "ati-NotAllowed" },
1778   {  60, "atsi-NotAllowed" },
1779   {  61, "atm-NotAllowed" },
1780   {  62, "informationNotAvailabl" },
1781   {  16, "illegalSS-Operation" },
1782   {  17, "ss-ErrorStatus" },
1783   {  18, "ss-NotAvailable" },
1784   {  19, "ss-SubscriptionViolatio" },
1785   {  20, "ss-Incompatibility" },
1786   {  71, "unknownAlphabe" },
1787   {  72, "ussd-Busy" },
1788   {  37, "pw-RegistrationFailur" },
1789   {  38, "negativePW-Check" },
1790   {  43, "numberOfPW-AttemptsViolation" },
1791   {  29, "shortTermDenial" },
1792   {  30, "longTermDenial" },
1793   {  31, "subscriberBusyForMT-SMS" },
1794   {  32, "sm-DeliveryFailure" },
1795   {  33, "messageWaitingListFull" },
1796   {   6, "absentSubscriberSM" },
1797   {  50, "noGroupCallNumberAvailable" },
1798   {  52, "unauthorizedRequestingNetwork" },
1799   {  53, "unauthorizedLCSClient" },
1800   {  54, "positionMethodFailure" },
1801   {  58, "unknownOrUnreachableLCSClient" },
1802   {  59, "mm-EventNotSupported" },
1803   {   4, "secureTransportError" },
1804   { 0, NULL }
1805 };
1806
1807
1808 static int
1809 dissect_gsm_map_LocalErrorcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1810   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1811                                   &errorCode);
1812
1813   return offset;
1814 }
1815 static int dissect_localValue1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1816   return dissect_gsm_map_LocalErrorcode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue1);
1817 }
1818
1819
1820 static const value_string gsm_map_ERROR_vals[] = {
1821   {   0, "localValue" },
1822   {   1, "globalValue" },
1823   { 0, NULL }
1824 };
1825
1826 static const ber_choice_t ERROR_choice[] = {
1827   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue1 },
1828   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
1829   { 0, 0, 0, 0, NULL }
1830 };
1831
1832 static int
1833 dissect_gsm_map_ERROR(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1834   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1835                                  ERROR_choice, hf_index, ett_gsm_map_ERROR,
1836                                  NULL);
1837
1838   return offset;
1839 }
1840 static int dissect_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1841   return dissect_gsm_map_ERROR(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_errorCode);
1842 }
1843
1844
1845
1846 static int
1847 dissect_gsm_map_ReturnErrorParameter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1848 #line 130 "gsmmap.cnf"
1849         offset = dissect_returnErrorData(pinfo, tree, tvb, offset);
1850
1851
1852
1853   return offset;
1854 }
1855 static int dissect_parameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1856   return dissect_gsm_map_ReturnErrorParameter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_parameter);
1857 }
1858
1859
1860 static const ber_sequence_t ReturnError_sequence[] = {
1861   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeID },
1862   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_errorCode },
1863   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_parameter },
1864   { 0, 0, 0, NULL }
1865 };
1866
1867 static int
1868 dissect_gsm_map_ReturnError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1869   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1870                                    ReturnError_sequence, hf_index, ett_gsm_map_ReturnError);
1871
1872   return offset;
1873 }
1874 static int dissect_returnError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1875   return dissect_gsm_map_ReturnError(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnError);
1876 }
1877
1878
1879
1880 static int
1881 dissect_gsm_map_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1882   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
1883
1884   return offset;
1885 }
1886 static int dissect_not_derivable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1887   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_not_derivable);
1888 }
1889 static int dissect_informPreviousNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1890   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_informPreviousNetworkEntity);
1891 }
1892 static int dissect_cs_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1893   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_LCS_NotSupportedByUE);
1894 }
1895 static int dissect_add_Capability(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1896   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_add_Capability);
1897 }
1898 static int dissect_solsaSupportIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1899   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1900 }
1901 static int dissect_solsaSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1902   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1903 }
1904 static int dissect_longFTN_Supported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1905   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longFTN_Supported);
1906 }
1907 static int dissect_sendSubscriberData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1908   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sendSubscriberData);
1909 }
1910 static int dissect_skipSubscriberDataUpdate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1911   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_skipSubscriberDataUpdate);
1912 }
1913 static int dissect_na_ESRK_Request_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1914   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK_Request);
1915 }
1916 static int dissect_freezeTMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1917   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeTMSI);
1918 }
1919 static int dissect_freezeP_TMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1920   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeP_TMSI);
1921 }
1922 static int dissect_segmentationProhibited(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1923   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_segmentationProhibited);
1924 }
1925 static int dissect_ho_NumberNotRequired(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1926   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ho_NumberNotRequired);
1927 }
1928 static int dissect_multipleBearerRequested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1929   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerRequested);
1930 }
1931 static int dissect_rab_ConfigurationIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1932   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1933 }
1934 static int dissect_rab_ConfigurationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1935   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1936 }
1937 static int dissect_multipleBearerNotSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1938   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerNotSupported);
1939 }
1940 static int dissect_immediateResponsePreferred_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1941   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_immediateResponsePreferred);
1942 }
1943 static int dissect_notificationToCSE(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1944   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1945 }
1946 static int dissect_notificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1947   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1948 }
1949 static int dissect_csiActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1950   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csiActive);
1951 }
1952 static int dissect_roamingRestrictionDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1953   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictionDueToUnsupportedFeature);
1954 }
1955 static int dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1956   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature);
1957 }
1958 static int dissect_lmu_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1959   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmu_Indicator);
1960 }
1961 static int dissect_vplmnAddressAllowed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1962   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vplmnAddressAllowed);
1963 }
1964 static int dissect_completeDataListIncluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1965   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_completeDataListIncluded);
1966 }
1967 static int dissect_csi_Active_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1968   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csi_Active);
1969 }
1970 static int dissect_lsaActiveModeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1971   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaActiveModeIndicator);
1972 }
1973 static int dissect_vbsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1974   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsGroupIndication);
1975 }
1976 static int dissect_vgcsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1977   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsGroupIndication);
1978 }
1979 static int dissect_camelSubscriptionInfoWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1980   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelSubscriptionInfoWithdraw);
1981 }
1982 static int dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1983   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature);
1984 }
1985 static int dissect_gmlc_ListWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1986   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_ListWithdraw);
1987 }
1988 static int dissect_istInformationWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1989   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_istInformationWithdraw);
1990 }
1991 static int dissect_istInformationWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1992   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istInformationWithdraw);
1993 }
1994 static int dissect_chargingCharacteristicsWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1995   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristicsWithdraw);
1996 }
1997 static int dissect_allGPRSData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1998   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allGPRSData);
1999 }
2000 static int dissect_allLSAData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2001   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allLSAData);
2002 }
2003 static int dissect_tif_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2004   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI);
2005 }
2006 static int dissect_msNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2007   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msNotReachable);
2008 }
2009 static int dissect_broadcastInitEntitlement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2010   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_broadcastInitEntitlement);
2011 }
2012 static int dissect_or_Interrogation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2013   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Interrogation);
2014 }
2015 static int dissect_ccbs_Call_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2016   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Call);
2017 }
2018 static int dissect_pre_pagingSupported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2019   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pre_pagingSupported);
2020 }
2021 static int dissect_suppress_VT_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2022   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_VT_CSI);
2023 }
2024 static int dissect_suppress_VT_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2025   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_VT_CSI);
2026 }
2027 static int dissect_suppressIncomingCallBarring(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2028   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppressIncomingCallBarring);
2029 }
2030 static int dissect_gsmSCF_InitiatedCall(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2031   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_InitiatedCall);
2032 }
2033 static int dissect_cugSubscriptionFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2034   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cugSubscriptionFlag);
2035 }
2036 static int dissect_forwardingInterrogationRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2037   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInterrogationRequired);
2038 }
2039 static int dissect_releaseResourcesSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2040   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_releaseResourcesSupported);
2041 }
2042 static int dissect_releaseResourcesSupported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2043   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseResourcesSupported);
2044 }
2045 static int dissect_suppress_T_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2046   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_T_CSI);
2047 }
2048 static int dissect_ccbs_Possible_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2049   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Possible);
2050 }
2051 static int dissect_keepCCBS_CallIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2052   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_keepCCBS_CallIndicator);
2053 }
2054 static int dissect_currentLocationRetrieved(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2055   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
2056 }
2057 static int dissect_currentLocationRetrieved_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2058   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
2059 }
2060 static int dissect_sai_Present(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2061   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
2062 }
2063 static int dissect_sai_Present_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2064   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
2065 }
2066 static int dissect_assumedIdle_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2067   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_assumedIdle);
2068 }
2069 static int dissect_camelBusy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2070   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelBusy);
2071 }
2072 static int dissect_notProvidedFromVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2073   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromVLR);
2074 }
2075 static int dissect_notProvidedFromSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2076   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromSGSN);
2077 }
2078 static int dissect_ps_Detached_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2079   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_Detached);
2080 }
2081 static int dissect_ps_AttachedNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2082   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedNotReachableForPaging);
2083 }
2084 static int dissect_ps_AttachedReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2085   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedReachableForPaging);
2086 }
2087 static int dissect_pdp_ContextActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2088   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextActive);
2089 }
2090 static int dissect_cug_OutgoingAccess(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2091   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_OutgoingAccess);
2092 }
2093 static int dissect_orNotSupportedInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2094   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_orNotSupportedInGMSC);
2095 }
2096 static int dissect_allInformationSent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2097   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
2098 }
2099 static int dissect_allInformationSent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2100   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
2101 }
2102 static int dissect_uusCFInteraction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2103   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uusCFInteraction);
2104 }
2105 static int dissect_replaceB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2106   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_replaceB_Number);
2107 }
2108 static int dissect_gprsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2109   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSupportIndicator);
2110 }
2111 static int dissect_gprsNodeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2112   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsNodeIndicator);
2113 }
2114 static int dissect_noSM_RP_OA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2115   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_OA);
2116 }
2117 static int dissect_noSM_RP_DA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2118   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_DA);
2119 }
2120 static int dissect_moreMessagesToSend(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2121   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_moreMessagesToSend);
2122 }
2123 static int dissect_deliveryOutcomeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2124   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deliveryOutcomeIndicator);
2125 }
2126 static int dissect_alertReasonIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2127   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReasonIndicator);
2128 }
2129 static int dissect_locationInformation_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2130   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation_flg);
2131 }
2132 static int dissect_subscriberState_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2133   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState_flg);
2134 }
2135 static int dissect_currentLocation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2136   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocation);
2137 }
2138 static int dissect_imei_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2139   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei_flg);
2140 }
2141 static int dissect_ms_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2142   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_classmark);
2143 }
2144 static int dissect_mnpRequestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2145   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpRequestedInfo);
2146 }
2147 static int dissect_odb_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2148   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb);
2149 }
2150 static int dissect_supportedVLR_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2151   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases_flg);
2152 }
2153 static int dissect_supportedSGSN_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2154   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases_flg);
2155 }
2156 static int dissect_tif_CSI_NotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2157   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI_NotificationToCSE);
2158 }
2159 static int dissect_uplinkFree_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2160   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkFree);
2161 }
2162 static int dissect_uplinkRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2163   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequest);
2164 }
2165 static int dissect_uplinkReleaseIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2166   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseIndication);
2167 }
2168 static int dissect_releaseGroupCall_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2169   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseGroupCall);
2170 }
2171 static int dissect_uplinkRequestAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2172   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequestAck);
2173 }
2174 static int dissect_uplinkRejectCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2175   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRejectCommand);
2176 }
2177 static int dissect_uplinkSeizedCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2178   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkSeizedCommand);
2179 }
2180 static int dissect_uplinkReleaseCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2181   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseCommand);
2182 }
2183 static int dissect_ps_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2184   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_LCS_NotSupportedByUE);
2185 }
2186 static int dissect_gprsEnhancementsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2187   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsEnhancementsSupportIndicator);
2188 }
2189 static int dissect_smsCallBarringSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2190   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_smsCallBarringSupportIndicator);
2191 }
2192 static int dissect_privacyOverride_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2193   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privacyOverride);
2194 }
2195 static int dissect_verticalCoordinateRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2196   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_verticalCoordinateRequest);
2197 }
2198 static int dissect_deferredmt_lrResponseIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2199   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredmt_lrResponseIndicator);
2200 }
2201 static int dissect_pseudonymIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2202   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pseudonymIndicator);
2203 }
2204 static int dissect_userInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2205   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_userInfo);
2206 }
2207 static int dissect_ccbs_Busy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2208   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Busy);
2209 }
2210 static int dissect_gprsConnectionSuspended(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2211   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsConnectionSuspended);
2212 }
2213 static int dissect_unauthorisedMessageOriginator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2214   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorisedMessageOriginator);
2215 }
2216
2217
2218 static const value_string gsm_map_T_invokeIDRej_vals[] = {
2219   {   0, "derivable" },
2220   {   1, "not-derivable" },
2221   { 0, NULL }
2222 };
2223
2224 static const ber_choice_t T_invokeIDRej_choice[] = {
2225   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_derivable },
2226   {   1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_not_derivable },
2227   { 0, 0, 0, 0, NULL }
2228 };
2229
2230 static int
2231 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_) {
2232   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2233                                  T_invokeIDRej_choice, hf_index, ett_gsm_map_T_invokeIDRej,
2234                                  NULL);
2235
2236   return offset;
2237 }
2238 static int dissect_invokeIDRej(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2239   return dissect_gsm_map_T_invokeIDRej(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeIDRej);
2240 }
2241
2242
2243 static const value_string gsm_map_GeneralProblem_vals[] = {
2244   {   0, "unrecognizedComponent" },
2245   {   1, "mistypedComponent" },
2246   {   2, "badlyStructuredComponent" },
2247   { 0, NULL }
2248 };
2249
2250
2251 static int
2252 dissect_gsm_map_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2253   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2254                                   NULL);
2255
2256   return offset;
2257 }
2258 static int dissect_generalProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2259   return dissect_gsm_map_GeneralProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_generalProblem);
2260 }
2261
2262
2263 static const value_string gsm_map_InvokeProblem_vals[] = {
2264   {   0, "duplicateInvokeID" },
2265   {   1, "unrecognizedOperation" },
2266   {   2, "mistypedParameter" },
2267   {   3, "resourceLimitation" },
2268   {   4, "initiatingRelease" },
2269   {   5, "unrecognizedLinkedID" },
2270   {   6, "linkedResponseUnexpected" },
2271   {   7, "unexpectedLinkedOperation" },
2272   { 0, NULL }
2273 };
2274
2275
2276 static int
2277 dissect_gsm_map_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2278   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2279                                   NULL);
2280
2281   return offset;
2282 }
2283 static int dissect_invokeProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2284   return dissect_gsm_map_InvokeProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invokeProblem);
2285 }
2286
2287
2288 static const value_string gsm_map_ReturnResultProblem_vals[] = {
2289   {   0, "unrecognizedInvokeID" },
2290   {   1, "returnResultUnexpected" },
2291   {   2, "mistypedParameter" },
2292   { 0, NULL }
2293 };
2294
2295
2296 static int
2297 dissect_gsm_map_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2298   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2299                                   NULL);
2300
2301   return offset;
2302 }
2303 static int dissect_returnResultProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2304   return dissect_gsm_map_ReturnResultProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResultProblem);
2305 }
2306
2307
2308 static const value_string gsm_map_ReturnErrorProblem_vals[] = {
2309   {   0, "unrecognizedInvokeID" },
2310   {   1, "returnErrorUnexpected" },
2311   {   2, "unrecognizedError" },
2312   {   3, "unexpectedError" },
2313   {   4, "mistypedParameter" },
2314   { 0, NULL }
2315 };
2316
2317
2318 static int
2319 dissect_gsm_map_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2320   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2321                                   NULL);
2322
2323   return offset;
2324 }
2325 static int dissect_returnErrorProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2326   return dissect_gsm_map_ReturnErrorProblem(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnErrorProblem);
2327 }
2328
2329
2330 static const value_string gsm_map_T_problem_vals[] = {
2331   {   0, "generalProblem" },
2332   {   1, "invokeProblem" },
2333   {   2, "returnResultProblem" },
2334   {   3, "returnErrorProblem" },
2335   { 0, NULL }
2336 };
2337
2338 static const ber_choice_t T_problem_choice[] = {
2339   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_generalProblem_impl },
2340   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invokeProblem_impl },
2341   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResultProblem_impl },
2342   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnErrorProblem_impl },
2343   { 0, 0, 0, 0, NULL }
2344 };
2345
2346 static int
2347 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_) {
2348   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2349                                  T_problem_choice, hf_index, ett_gsm_map_T_problem,
2350                                  NULL);
2351
2352   return offset;
2353 }
2354 static int dissect_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2355   return dissect_gsm_map_T_problem(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_problem);
2356 }
2357
2358
2359 static const ber_sequence_t Reject_sequence[] = {
2360   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeIDRej },
2361   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_problem },
2362   { 0, 0, 0, NULL }
2363 };
2364
2365 static int
2366 dissect_gsm_map_Reject(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2367   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2368                                    Reject_sequence, hf_index, ett_gsm_map_Reject);
2369
2370   return offset;
2371 }
2372 static int dissect_reject_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2373   return dissect_gsm_map_Reject(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_reject);
2374 }
2375
2376
2377 static const value_string gsm_map_Component_vals[] = {
2378   {   1, "invoke" },
2379   {   2, "returnResultLast" },
2380   {   3, "returnError" },
2381   {   4, "reject" },
2382   { 0, NULL }
2383 };
2384
2385 static const ber_choice_t Component_choice[] = {
2386   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl },
2387   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResultLast_impl },
2388   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl },
2389   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl },
2390   { 0, 0, 0, 0, NULL }
2391 };
2392
2393 static int
2394 dissect_gsm_map_Component(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2395   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2396                                  Component_choice, hf_index, ett_gsm_map_Component,
2397                                  NULL);
2398
2399   return offset;
2400 }
2401
2402
2403 static const value_string gsm_map_ProtocolId_vals[] = {
2404   {   1, "gsm-0408" },
2405   {   2, "gsm-0806" },
2406   {   3, "gsm-BSSMAP" },
2407   {   4, "ets-300102-1" },
2408   { 0, NULL }
2409 };
2410
2411
2412 static int
2413 dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2414   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2415                                   &protocolId);
2416
2417   return offset;
2418 }
2419 static int dissect_protocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2420   return dissect_gsm_map_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protocolId);
2421 }
2422
2423
2424
2425 static int
2426 dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2427 #line 333 "gsmmap.cnf"
2428
2429  tvbuff_t       *parameter_tvb;
2430  guint8         octet;
2431  guint8         length;
2432  tvbuff_t       *next_tvb;
2433
2434
2435   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2436                                        &parameter_tvb);
2437
2438
2439  if (!parameter_tvb)
2440         return offset;
2441  switch (protocolId){
2442         /* gsm-0408 */
2443         case 1:
2444                 break;
2445         /* gsm-0806 */
2446         case 2:
2447                 break;
2448         /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/
2449         case 3:
2450                 octet = tvb_get_guint8(parameter_tvb,0);
2451                 length = tvb_get_guint8(parameter_tvb,1);
2452                 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
2453                         next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
2454                         dissect_bssmap(next_tvb, pinfo, tree);
2455                 }
2456                 break;
2457         /* ets-300102-1 (~Q.931 ) */
2458         case 4:
2459                 octet = tvb_get_guint8(parameter_tvb,0);
2460                 length = tvb_get_guint8(parameter_tvb,1);
2461                 if ( octet == 4 )
2462                         dissect_q931_bearer_capability_ie(parameter_tvb, 2, length, tree);
2463                 break;
2464         default:
2465                 break;
2466 }
2467
2468
2469
2470   return offset;
2471 }
2472 static int dissect_signalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2473   return dissect_gsm_map_SignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_signalInfo);
2474 }
2475 static int dissect_diagnosticInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2476   return dissect_gsm_map_SignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_diagnosticInfo);
2477 }
2478
2479
2480
2481 static int
2482 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_) {
2483 #line 408 "gsmmap.cnf"
2484
2485   proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
2486   call_dissector(data_handle, tvb, pinfo, tree);        
2487   offset = tvb_length_remaining(tvb,offset);            
2488
2489
2490
2491   return offset;
2492 }
2493 static int dissect_extType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2494   return dissect_gsm_map_T_extType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extType);
2495 }
2496
2497
2498 static const ber_sequence_t PrivateExtension_sequence[] = {
2499   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extId },
2500   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extType },
2501   { 0, 0, 0, NULL }
2502 };
2503
2504 static int
2505 dissect_gsm_map_PrivateExtension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2506   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2507                                    PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension);
2508
2509   return offset;
2510 }
2511 static int dissect_PrivateExtensionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2512   return dissect_gsm_map_PrivateExtension(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PrivateExtensionList_item);
2513 }
2514
2515
2516 static const ber_sequence_t PrivateExtensionList_sequence_of[1] = {
2517   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PrivateExtensionList_item },
2518 };
2519
2520 static int
2521 dissect_gsm_map_PrivateExtensionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2522   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2523                                       PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList);
2524
2525   return offset;
2526 }
2527 static int dissect_privateExtensionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2528   return dissect_gsm_map_PrivateExtensionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privateExtensionList);
2529 }
2530
2531
2532 static const ber_sequence_t PcsExtensions_sequence[] = {
2533   { 0, 0, 0, NULL }
2534 };
2535
2536 static int
2537 dissect_gsm_map_PcsExtensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2538   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2539                                    PcsExtensions_sequence, hf_index, ett_gsm_map_PcsExtensions);
2540
2541   return offset;
2542 }
2543 static int dissect_pcsExtensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2544   return dissect_gsm_map_PcsExtensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pcsExtensions);
2545 }
2546
2547
2548 static const ber_sequence_t ExtensionContainer_sequence[] = {
2549   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
2550   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pcsExtensions_impl },
2551   { 0, 0, 0, NULL }
2552 };
2553
2554 int
2555 dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2556   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2557                                    ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer);
2558
2559   return offset;
2560 }
2561 static int dissect_extensionContainer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2562   return dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
2563 }
2564 static int dissect_extensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2565   return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
2566 }
2567
2568
2569 static const ber_sequence_t Bss_APDU_sequence[] = {
2570   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
2571   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
2572   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2573   { 0, 0, 0, NULL }
2574 };
2575
2576 static int
2577 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_) {
2578   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2579                                    Bss_APDU_sequence, hf_index, ett_gsm_map_Bss_APDU);
2580
2581   return offset;
2582 }
2583 static int dissect_bss_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2584   return dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bss_APDU);
2585 }
2586
2587
2588
2589 static int
2590 dissect_gsm_map_SignalInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2591   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2592                                        NULL);
2593
2594   return offset;
2595 }
2596
2597
2598 static const asn_namedbit SupportedCamelPhases_bits[] = {
2599   {  0, &hf_gsm_map_SupportedCamelPhases_phase1, -1, -1, "phase1", NULL },
2600   {  1, &hf_gsm_map_SupportedCamelPhases_phase2, -1, -1, "phase2", NULL },
2601   {  2, &hf_gsm_map_SupportedCamelPhases_phase3, -1, -1, "phase3", NULL },
2602   {  3, &hf_gsm_map_SupportedCamelPhases_phase4, -1, -1, "phase4", NULL },
2603   { 0, NULL, 0, 0, NULL, NULL }
2604 };
2605
2606 int
2607 dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2608   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2609                                     SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
2610                                     NULL);
2611
2612   return offset;
2613 }
2614 static int dissect_supportedCamelPhases(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2615   return dissect_gsm_map_SupportedCamelPhases(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
2616 }
2617 static int dissect_supportedCamelPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2618   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
2619 }
2620 static int dissect_supportedCamelPhasesInVMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2621   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInVMSC);
2622 }
2623 static int dissect_supportedCamelPhasesInInterrogatingNode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2624   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInInterrogatingNode);
2625 }
2626 static int dissect_supportedVLR_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2627   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases);
2628 }
2629 static int dissect_supportedSGSN_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2630   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases);
2631 }
2632 static int dissect_supportedCAMELPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2633   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCAMELPhases);
2634 }
2635
2636
2637
2638 int
2639 dissect_gsm_map_IMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2640 #line 171 "gsmmap.cnf"
2641
2642  tvbuff_t       *parameter_tvb;
2643  char           *digit_str;
2644
2645    offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2646                                        &parameter_tvb);
2647
2648
2649  if (!parameter_tvb)
2650         return offset;
2651
2652  digit_str = unpack_digits(parameter_tvb, 0);
2653
2654  proto_tree_add_string(tree, hf_gsm_map_imsi_digits, parameter_tvb, 0, -1, digit_str);
2655  
2656
2657
2658
2659
2660   return offset;
2661 }
2662 static int dissect_imsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2663   return dissect_gsm_map_IMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
2664 }
2665 static int dissect_imsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2666   return dissect_gsm_map_IMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
2667 }
2668
2669
2670
2671 int
2672 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_) {
2673 #line 218 "gsmmap.cnf"
2674
2675  tvbuff_t       *parameter_tvb;
2676  char           *digit_str;
2677
2678   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2679                                        &parameter_tvb);
2680
2681
2682  if (!parameter_tvb)
2683         return offset;
2684
2685  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
2686  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
2687  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
2688
2689  digit_str = unpack_digits(parameter_tvb, 1);
2690
2691  proto_tree_add_string(tree, hf_gsm_map_isdn_address_digits, parameter_tvb, 1, -1, digit_str);
2692
2693  pinfo->p2p_dir = P2P_DIR_RECV;
2694
2695
2696
2697
2698   return offset;
2699 }
2700 static int dissect_msc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2701   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
2702 }
2703 static int dissect_msc_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2704   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
2705 }
2706 static int dissect_vlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2707   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
2708 }
2709 static int dissect_vlr_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2710   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
2711 }
2712 static int dissect_hlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2713   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_Number);
2714 }
2715 static int dissect_sgsn_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2716   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
2717 }
2718 static int dissect_sgsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2719   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
2720 }
2721 static int dissect_handoverNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2722   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
2723 }
2724 static int dissect_handoverNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2725   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
2726 }
2727 static int dissect_targetMSC_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2728   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
2729 }
2730 static int dissect_targetMSC_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2731   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
2732 }
2733 static int dissect_gsmSCF_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2734   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
2735 }
2736 static int dissect_gsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2737   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
2738 }
2739 static int dissect_msisdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2740   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
2741 }
2742 static int dissect_msisdn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2743   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
2744 }
2745 static int dissect_GMLC_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2746   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GMLC_List_item);
2747 }
2748 static int dissect_dialledNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2749   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_dialledNumber);
2750 }
2751 static int dissect_forwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2752   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber);
2753 }
2754 static int dissect_DestinationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2755   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DestinationNumberList_item);
2756 }
2757 static int dissect_gmsc_OrGsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2758   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_OrGsmSCF_Address);
2759 }
2760 static int dissect_vmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2761   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vmsc_Address);
2762 }
2763 static int dissect_externalAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2764   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalAddress);
2765 }
2766 static int dissect_roamingNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2767   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNumber);
2768 }
2769 static int dissect_vlr_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2770   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_number);
2771 }
2772 static int dissect_gmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2773   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_Address);
2774 }
2775 static int dissect_b_Subscriber_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2776   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_Subscriber_Address);
2777 }
2778 static int dissect_sIWFSNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2779   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sIWFSNumber);
2780 }
2781 static int dissect_msrn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2782   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msrn);
2783 }
2784 static int dissect_translatedB_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2785   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
2786 }
2787 static int dissect_translatedB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2788   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
2789 }
2790 static int dissect_networkNode_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2791   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
2792 }
2793 static int dissect_networkNode_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2794   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
2795 }
2796 static int dissect_b_subscriberNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2797   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberNumber);
2798 }
2799 static int dissect_groupCallNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2800   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupCallNumber);
2801 }
2802 static int dissect_ggsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2803   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Number);
2804 }
2805 static int dissect_mlc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2806   return dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mlc_Number);
2807 }
2808 static int dissect_mlcNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2809   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mlcNumber);
2810 }
2811 static int dissect_na_ESRD_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2812   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRD);
2813 }
2814 static int dissect_na_ESRK_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2815   return dissect_gsm_map_ISDN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK);
2816 }
2817
2818
2819
2820 static int
2821 dissect_gsm_map_LMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2822   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2823                                        NULL);
2824
2825   return offset;
2826 }
2827 static int dissect_lmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2828   return dissect_gsm_map_LMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
2829 }
2830 static int dissect_lmsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2831   return dissect_gsm_map_LMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
2832 }
2833
2834
2835 static const value_string gsm_map_IST_SupportIndicator_vals[] = {
2836   {   0, "basicISTSupported" },
2837   {   1, "istCommandSupported" },
2838   { 0, NULL }
2839 };
2840
2841
2842 static int
2843 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_) {
2844   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2845                                   NULL);
2846
2847   return offset;
2848 }
2849 static int dissect_istSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2850   return dissect_gsm_map_IST_SupportIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istSupportIndicator);
2851 }
2852
2853
2854
2855 static int
2856 dissect_gsm_map_AgeIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2857   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2858                                        NULL);
2859
2860   return offset;
2861 }
2862 static int dissect_subscriberDataStored_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2863   return dissect_gsm_map_AgeIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberDataStored);
2864 }
2865 static int dissect_superChargerSupportedInHLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2866   return dissect_gsm_map_AgeIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInHLR);
2867 }
2868
2869
2870 static const value_string gsm_map_SuperChargerInfo_vals[] = {
2871   {   0, "sendSubscriberData" },
2872   {   1, "subscriberDataStored" },
2873   { 0, NULL }
2874 };
2875
2876 static const ber_choice_t SuperChargerInfo_choice[] = {
2877   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sendSubscriberData_impl },
2878   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_subscriberDataStored_impl },
2879   { 0, 0, 0, 0, NULL }
2880 };
2881
2882 static int
2883 dissect_gsm_map_SuperChargerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2884   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2885                                  SuperChargerInfo_choice, hf_index, ett_gsm_map_SuperChargerInfo,
2886                                  NULL);
2887
2888   return offset;
2889 }
2890 static int dissect_superChargerSupportedInServingNetworkEntity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2891   return dissect_gsm_map_SuperChargerInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
2892 }
2893 static int dissect_superChargerSupportedInServingNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2894   return dissect_gsm_map_SuperChargerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
2895 }
2896
2897
2898 static const asn_namedbit SupportedLCS_CapabilitySets_bits[] = {
2899   {  0, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1, -1, -1, "lcsCapabilitySet1", NULL },
2900   {  1, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2, -1, -1, "lcsCapabilitySet2", NULL },
2901   {  2, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3, -1, -1, "lcsCapabilitySet3", NULL },
2902   {  3, &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4, -1, -1, "lcsCapabilitySet4", NULL },
2903   { 0, NULL, 0, 0, NULL, NULL }
2904 };
2905
2906 static int
2907 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_) {
2908   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2909                                     SupportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_SupportedLCS_CapabilitySets,
2910                                     NULL);
2911
2912   return offset;
2913 }
2914 static int dissect_supportedLCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2915   return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedLCS_CapabilitySets);
2916 }
2917 static int dissect_additional_LCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2918   return dissect_gsm_map_SupportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_LCS_CapabilitySets);
2919 }
2920
2921
2922 static const asn_namedbit OfferedCamel4CSIs_bits[] = {
2923   {  0, &hf_gsm_map_OfferedCamel4CSIs_o_csi, -1, -1, "o-csi", NULL },
2924   {  1, &hf_gsm_map_OfferedCamel4CSIs_d_csi, -1, -1, "d-csi", NULL },
2925   {  2, &hf_gsm_map_OfferedCamel4CSIs_vt_csi, -1, -1, "vt-csi", NULL },
2926   {  3, &hf_gsm_map_OfferedCamel4CSIs_t_csi, -1, -1, "t-csi", NULL },
2927   {  4, &hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
2928   {  5, &hf_gsm_map_OfferedCamel4CSIs_mg_csi, -1, -1, "mg-csi", NULL },
2929   {  6, &hf_gsm_map_OfferedCamel4CSIs_psi_enhancements, -1, -1, "psi-enhancements", NULL },
2930   { 0, NULL, 0, 0, NULL, NULL }
2931 };
2932
2933 static int
2934 dissect_gsm_map_OfferedCamel4CSIs(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2935   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2936                                     OfferedCamel4CSIs_bits, hf_index, ett_gsm_map_OfferedCamel4CSIs,
2937                                     NULL);
2938
2939   return offset;
2940 }
2941 static int dissect_offeredCamel4CSIs_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2942   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIs);
2943 }
2944 static int dissect_offeredCamel4CSIsInVMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2945   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVMSC);
2946 }
2947 static int dissect_offeredCamel4CSIsInInterrogatingNode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2948   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInInterrogatingNode);
2949 }
2950 static int dissect_offeredCamel4CSIsInVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2951   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVLR);
2952 }
2953 static int dissect_offeredCamel4CSIsInSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2954   return dissect_gsm_map_OfferedCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInSGSN);
2955 }
2956
2957
2958 static const ber_sequence_t VLR_Capability_sequence[] = {
2959   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
2960   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2961   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_solsaSupportIndicator_impl },
2962   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
2963   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_superChargerSupportedInServingNetworkEntity },
2964   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
2965   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
2966   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
2967   { 0, 0, 0, NULL }
2968 };
2969
2970 static int
2971 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_) {
2972   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2973                                    VLR_Capability_sequence, hf_index, ett_gsm_map_VLR_Capability);
2974
2975   return offset;
2976 }
2977 static int dissect_vlr_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2978   return dissect_gsm_map_VLR_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Capability);
2979 }
2980
2981
2982
2983 int
2984 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_) {
2985   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2986                                        NULL);
2987
2988   return offset;
2989 }
2990 static int dissect_v_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2991   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
2992 }
2993 static int dissect_v_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2994   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
2995 }
2996 static int dissect_ggsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2997   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Address);
2998 }
2999 static int dissect_rnc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3000   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rnc_Address);
3001 }
3002 static int dissect_sgsn_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3003   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
3004 }
3005 static int dissect_sgsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3006   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
3007 }
3008 static int dissect_h_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3009   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_h_gmlc_Address);
3010 }
3011 static int dissect_h_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3012   return dissect_gsm_map_GSN_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_h_gmlc_Address);
3013 }
3014 static int dissect_ppr_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3015   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ppr_Address);
3016 }
3017 static int dissect_additional_v_gmlc_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3018   return dissect_gsm_map_GSN_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additional_v_gmlc_Address);
3019 }
3020
3021
3022
3023 static int
3024 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_) {
3025   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3026                                        NULL);
3027
3028   return offset;
3029 }
3030
3031
3032
3033 int
3034 dissect_gsm_map_IMEI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3035   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3036
3037   return offset;
3038 }
3039 static int dissect_imeisv_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3040   return dissect_gsm_map_IMEI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imeisv);
3041 }
3042 static int dissect_imei(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3043   return dissect_gsm_map_IMEI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
3044 }
3045 static int dissect_imei_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3046   return dissect_gsm_map_IMEI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
3047 }
3048
3049
3050 static const ber_sequence_t ADD_Info_sequence[] = {
3051   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
3052   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_skipSubscriberDataUpdate_impl },
3053   { 0, 0, 0, NULL }
3054 };
3055
3056 static int
3057 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_) {
3058   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3059                                    ADD_Info_sequence, hf_index, ett_gsm_map_ADD_Info);
3060
3061   return offset;
3062 }
3063 static int dissect_add_info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3064   return dissect_gsm_map_ADD_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_info);
3065 }
3066
3067
3068 static const ber_sequence_t UpdateLocationArg_sequence[] = {
3069   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3070   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
3071   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_vlr_Number },
3072   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
3073   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3074   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
3075   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
3076   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_LCS_NotSupportedByUE_impl },
3077   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
3078   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
3079   { 0, 0, 0, NULL }
3080 };
3081
3082 static int
3083 dissect_gsm_map_UpdateLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3084   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3085                                    UpdateLocationArg_sequence, hf_index, ett_gsm_map_UpdateLocationArg);
3086
3087   return offset;
3088 }
3089
3090
3091 static const ber_sequence_t UpdateLocationRes_sequence[] = {
3092   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
3093   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3094   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_add_Capability },
3095   { 0, 0, 0, NULL }
3096 };
3097
3098 static int
3099 dissect_gsm_map_UpdateLocationRes(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                                    UpdateLocationRes_sequence, hf_index, ett_gsm_map_UpdateLocationRes);
3102
3103   return offset;
3104 }
3105
3106
3107 static const ber_sequence_t SLR_Arg_PCS_Extensions_sequence[] = {
3108   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_Request_impl },
3109   { 0, 0, 0, NULL }
3110 };
3111
3112 static int
3113 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_) {
3114   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3115                                    SLR_Arg_PCS_Extensions_sequence, hf_index, ett_gsm_map_SLR_Arg_PCS_Extensions);
3116
3117   return offset;
3118 }
3119 static int dissect_slr_Arg_PCS_Extensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3120   return dissect_gsm_map_SLR_Arg_PCS_Extensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_slr_Arg_PCS_Extensions);
3121 }
3122
3123
3124 static const ber_sequence_t SLR_ArgExtensionContainer_sequence[] = {
3125   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
3126   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_slr_Arg_PCS_Extensions_impl },
3127   { 0, 0, 0, NULL }
3128 };
3129
3130 static int
3131 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_) {
3132   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3133                                    SLR_ArgExtensionContainer_sequence, hf_index, ett_gsm_map_SLR_ArgExtensionContainer);
3134
3135   return offset;
3136 }
3137 static int dissect_slr_ArgExtensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3138   return dissect_gsm_map_SLR_ArgExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_slr_ArgExtensionContainer);
3139 }
3140
3141
3142
3143 static int
3144 dissect_gsm_map_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3145   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3146                                        NULL);
3147
3148   return offset;
3149 }
3150 static int dissect_teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3151   return dissect_gsm_map_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
3152 }
3153
3154
3155
3156 static int
3157 dissect_gsm_map_Bearerservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3158   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3159                                        NULL);
3160
3161   return offset;
3162 }
3163 static int dissect_bearerservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3164   return dissect_gsm_map_Bearerservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerservice);
3165 }
3166
3167
3168
3169 static int
3170 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_) {
3171   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3172                                        NULL);
3173
3174   return offset;
3175 }
3176
3177
3178 static const ber_sequence_t IMSI_WithLMSI_sequence[] = {
3179   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3180   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lmsi },
3181   { 0, 0, 0, NULL }
3182 };
3183
3184 static int
3185 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_) {
3186   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3187                                    IMSI_WithLMSI_sequence, hf_index, ett_gsm_map_IMSI_WithLMSI);
3188
3189   return offset;
3190 }
3191 static int dissect_imsi_WithLMSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3192   return dissect_gsm_map_IMSI_WithLMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi_WithLMSI);
3193 }
3194
3195
3196 static const value_string gsm_map_Identity_vals[] = {
3197   {   0, "imsi" },
3198   {   1, "imsi-WithLMSI" },
3199   { 0, NULL }
3200 };
3201
3202 static const ber_choice_t Identity_choice[] = {
3203   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3204   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
3205   { 0, 0, 0, 0, NULL }
3206 };
3207
3208 static int
3209 dissect_gsm_map_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3210   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3211                                  Identity_choice, hf_index, ett_gsm_map_Identity,
3212                                  NULL);
3213
3214   return offset;
3215 }
3216 static int dissect_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3217   return dissect_gsm_map_Identity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_identity);
3218 }
3219
3220
3221 static const value_string gsm_map_CancellationType_vals[] = {
3222   {   0, "updateProcedure" },
3223   {   1, "subscriptionWithdraw" },
3224   { 0, NULL }
3225 };
3226
3227
3228 static int
3229 dissect_gsm_map_CancellationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3230   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3231                                   NULL);
3232
3233   return offset;
3234 }
3235 static int dissect_cancellationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3236   return dissect_gsm_map_CancellationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cancellationType);
3237 }
3238
3239
3240 static const ber_sequence_t CancelLocationArg_sequence[] = {
3241   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
3242   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cancellationType },
3243   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3244   { 0, 0, 0, NULL }
3245 };
3246
3247 static int
3248 dissect_gsm_map_CancelLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3249   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3250                                    CancelLocationArg_sequence, hf_index, ett_gsm_map_CancelLocationArg);
3251
3252   return offset;
3253 }
3254
3255
3256 static const value_string gsm_map_CancelLocationArgV2_vals[] = {
3257   {   0, "imsi" },
3258   {   1, "imsi-WithLMSI" },
3259   { 0, NULL }
3260 };
3261
3262 static const ber_choice_t CancelLocationArgV2_choice[] = {
3263   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3264   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
3265   { 0, 0, 0, 0, NULL }
3266 };
3267
3268 static int
3269 dissect_gsm_map_CancelLocationArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3270   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3271                                  CancelLocationArgV2_choice, hf_index, ett_gsm_map_CancelLocationArgV2,
3272                                  NULL);
3273
3274   return offset;
3275 }
3276
3277
3278 static const ber_sequence_t CancelLocationRes_sequence[] = {
3279   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3280   { 0, 0, 0, NULL }
3281 };
3282
3283 static int
3284 dissect_gsm_map_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3285   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3286                                    CancelLocationRes_sequence, hf_index, ett_gsm_map_CancelLocationRes);
3287
3288   return offset;
3289 }
3290
3291
3292 static const ber_sequence_t PurgeMSArg_sequence[] = {
3293   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3294   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
3295   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
3296   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3297   { 0, 0, 0, NULL }
3298 };
3299
3300 static int
3301 dissect_gsm_map_PurgeMSArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3302   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3303                                    PurgeMSArg_sequence, hf_index, ett_gsm_map_PurgeMSArg);
3304
3305   return offset;
3306 }
3307
3308
3309 static const ber_sequence_t PurgeMSRes_sequence[] = {
3310   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeTMSI_impl },
3311   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeP_TMSI_impl },
3312   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3313   { 0, 0, 0, NULL }
3314 };
3315
3316 static int
3317 dissect_gsm_map_PurgeMSRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3318   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3319                                    PurgeMSRes_sequence, hf_index, ett_gsm_map_PurgeMSRes);
3320
3321   return offset;
3322 }
3323
3324
3325
3326 static int
3327 dissect_gsm_map_TMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3328   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3329                                        NULL);
3330
3331   return offset;
3332 }
3333 static int dissect_tmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3334   return dissect_gsm_map_TMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_tmsi);
3335 }
3336
3337
3338
3339 static int
3340 dissect_gsm_map_NumberOfRequestedVectors(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3341   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3342                                   NULL);
3343
3344   return offset;
3345 }
3346 static int dissect_numberOfRequestedVectors(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3347   return dissect_gsm_map_NumberOfRequestedVectors(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfRequestedVectors);
3348 }
3349
3350
3351
3352 static int
3353 dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3354   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3355                                        NULL);
3356
3357   return offset;
3358 }
3359 static int dissect_previous_LAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3360   return dissect_gsm_map_LAIFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_previous_LAI);
3361 }
3362 static int dissect_laiFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3363   return dissect_gsm_map_LAIFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_laiFixedLength);
3364 }
3365
3366
3367
3368 static int
3369 dissect_gsm_map_HopCounter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3370   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3371                                   NULL);
3372
3373   return offset;
3374 }
3375 static int dissect_hopCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3376   return dissect_gsm_map_HopCounter(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_hopCounter);
3377 }
3378
3379
3380 static const ber_sequence_t SendIdentificationArg_sequence[] = {
3381   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_tmsi },
3382   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
3383   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
3384   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3385   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msc_Number },
3386   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_previous_LAI_impl },
3387   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_hopCounter_impl },
3388   { 0, 0, 0, NULL }
3389 };
3390
3391 static int
3392 dissect_gsm_map_SendIdentificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3393   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3394                                    SendIdentificationArg_sequence, hf_index, ett_gsm_map_SendIdentificationArg);
3395
3396   return offset;
3397 }
3398
3399
3400
3401 static int
3402 dissect_gsm_map_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3403   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3404                                        NULL);
3405
3406   return offset;
3407 }
3408 static int dissect_rand(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3409   return dissect_gsm_map_RAND(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rand);
3410 }
3411
3412
3413
3414 static int
3415 dissect_gsm_map_SRES(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3416   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3417                                        NULL);
3418
3419   return offset;
3420 }
3421 static int dissect_sres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3422   return dissect_gsm_map_SRES(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sres);
3423 }
3424
3425
3426
3427 static int
3428 dissect_gsm_map_Kc(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3429   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3430                                        NULL);
3431
3432   return offset;
3433 }
3434 static int dissect_kc(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3435   return dissect_gsm_map_Kc(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_kc);
3436 }
3437 static int dissect_groupKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3438   return dissect_gsm_map_Kc(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKey);
3439 }
3440
3441
3442 static const ber_sequence_t AuthenticationTriplet_sequence[] = {
3443   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3444   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
3445   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3446   { 0, 0, 0, NULL }
3447 };
3448
3449 static int
3450 dissect_gsm_map_AuthenticationTriplet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3451   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3452                                    AuthenticationTriplet_sequence, hf_index, ett_gsm_map_AuthenticationTriplet);
3453
3454   return offset;
3455 }
3456 static int dissect_TripletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3457   return dissect_gsm_map_AuthenticationTriplet(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TripletList_item);
3458 }
3459
3460
3461 static const ber_sequence_t TripletList_sequence_of[1] = {
3462   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TripletList_item },
3463 };
3464
3465 static int
3466 dissect_gsm_map_TripletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3467   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3468                                       TripletList_sequence_of, hf_index, ett_gsm_map_TripletList);
3469
3470   return offset;
3471 }
3472 static int dissect_tripletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3473   return dissect_gsm_map_TripletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList);
3474 }
3475
3476
3477
3478 static int
3479 dissect_gsm_map_XRES(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3480   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3481                                        NULL);
3482
3483   return offset;
3484 }
3485 static int dissect_xres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3486   return dissect_gsm_map_XRES(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_xres);
3487 }
3488
3489
3490
3491 static int
3492 dissect_gsm_map_CK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3493   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3494                                        NULL);
3495
3496   return offset;
3497 }
3498 static int dissect_ck(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3499   return dissect_gsm_map_CK(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ck);
3500 }
3501
3502
3503
3504 static int
3505 dissect_gsm_map_IK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3506   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3507                                        NULL);
3508
3509   return offset;
3510 }
3511 static int dissect_ik(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3512   return dissect_gsm_map_IK(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ik);
3513 }
3514
3515
3516
3517 static int
3518 dissect_gsm_map_AUTN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3519   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3520                                        NULL);
3521
3522   return offset;
3523 }
3524 static int dissect_autn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3525   return dissect_gsm_map_AUTN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_autn);
3526 }
3527
3528
3529 static const ber_sequence_t AuthenticationQuintuplet_sequence[] = {
3530   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3531   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_xres },
3532   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
3533   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
3534   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_autn },
3535   { 0, 0, 0, NULL }
3536 };
3537
3538 static int
3539 dissect_gsm_map_AuthenticationQuintuplet(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3540   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3541                                    AuthenticationQuintuplet_sequence, hf_index, ett_gsm_map_AuthenticationQuintuplet);
3542
3543   return offset;
3544 }
3545 static int dissect_QuintupletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3546   return dissect_gsm_map_AuthenticationQuintuplet(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_QuintupletList_item);
3547 }
3548
3549
3550 static const ber_sequence_t QuintupletList_sequence_of[1] = {
3551   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_QuintupletList_item },
3552 };
3553
3554 static int
3555 dissect_gsm_map_QuintupletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3556   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3557                                       QuintupletList_sequence_of, hf_index, ett_gsm_map_QuintupletList);
3558
3559   return offset;
3560 }
3561 static int dissect_quintupletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3562   return dissect_gsm_map_QuintupletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList);
3563 }
3564
3565
3566 static const value_string gsm_map_AuthenticationSetList_vals[] = {
3567   {   0, "tripletList" },
3568   {   1, "quintupletList" },
3569   { 0, NULL }
3570 };
3571
3572 static const ber_choice_t AuthenticationSetList_choice[] = {
3573   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tripletList_impl },
3574   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_quintupletList_impl },
3575   { 0, 0, 0, 0, NULL }
3576 };
3577
3578 static int
3579 dissect_gsm_map_AuthenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3580   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3581                                  AuthenticationSetList_choice, hf_index, ett_gsm_map_AuthenticationSetList,
3582                                  NULL);
3583
3584   return offset;
3585 }
3586 static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3587   return dissect_gsm_map_AuthenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList);
3588 }
3589
3590
3591
3592 static int
3593 dissect_gsm_map_Cksn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3594   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3595                                        NULL);
3596
3597   return offset;
3598 }
3599 static int dissect_cksn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3600   return dissect_gsm_map_Cksn(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cksn);
3601 }
3602
3603
3604 static const ber_sequence_t GSM_SecurityContextData_sequence[] = {
3605   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3606   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cksn },
3607   { 0, 0, 0, NULL }
3608 };
3609
3610 static int
3611 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_) {
3612   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3613                                    GSM_SecurityContextData_sequence, hf_index, ett_gsm_map_GSM_SecurityContextData);
3614
3615   return offset;
3616 }
3617 static int dissect_gsm_SecurityContextData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3618   return dissect_gsm_map_GSM_SecurityContextData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_SecurityContextData);
3619 }
3620
3621
3622
3623 static int
3624 dissect_gsm_map_KSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3625   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3626                                        NULL);
3627
3628   return offset;
3629 }
3630 static int dissect_ksi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3631   return dissect_gsm_map_KSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ksi);
3632 }
3633
3634
3635 static const ber_sequence_t UMTS_SecurityContextData_sequence[] = {
3636   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
3637   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
3638   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ksi },
3639   { 0, 0, 0, NULL }
3640 };
3641
3642 static int
3643 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_) {
3644   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3645                                    UMTS_SecurityContextData_sequence, hf_index, ett_gsm_map_UMTS_SecurityContextData);
3646
3647   return offset;
3648 }
3649 static int dissect_umts_SecurityContextData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3650   return dissect_gsm_map_UMTS_SecurityContextData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_umts_SecurityContextData);
3651 }
3652
3653
3654 static const value_string gsm_map_CurrentSecurityContext_vals[] = {
3655   {   0, "gsm-SecurityContextData" },
3656   {   1, "umts-SecurityContextData" },
3657   { 0, NULL }
3658 };
3659
3660 static const ber_choice_t CurrentSecurityContext_choice[] = {
3661   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_SecurityContextData_impl },
3662   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_umts_SecurityContextData_impl },
3663   { 0, 0, 0, 0, NULL }
3664 };
3665
3666 static int
3667 dissect_gsm_map_CurrentSecurityContext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3668   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3669                                  CurrentSecurityContext_choice, hf_index, ett_gsm_map_CurrentSecurityContext,
3670                                  NULL);
3671
3672   return offset;
3673 }
3674 static int dissect_currentSecurityContext_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3675   return dissect_gsm_map_CurrentSecurityContext(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentSecurityContext);
3676 }
3677
3678
3679 static const ber_sequence_t SendIdentificationRes_sequence[] = {
3680   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
3681   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
3682   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_currentSecurityContext_impl },
3683   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3684   { 0, 0, 0, NULL }
3685 };
3686
3687 static int
3688 dissect_gsm_map_SendIdentificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3689   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3690                                    SendIdentificationRes_sequence, hf_index, ett_gsm_map_SendIdentificationRes);
3691
3692   return offset;
3693 }
3694
3695
3696
3697 static int
3698 dissect_gsm_map_AUTS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3699   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3700                                        NULL);
3701
3702   return offset;
3703 }
3704 static int dissect_auts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3705   return dissect_gsm_map_AUTS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_auts);
3706 }
3707
3708
3709
3710 static int
3711 dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3712   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3713                                        NULL);
3714
3715   return offset;
3716 }
3717 static int dissect_targetCellId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3718   return dissect_gsm_map_GlobalCellId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
3719 }
3720 static int dissect_targetCellId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3721   return dissect_gsm_map_GlobalCellId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
3722 }
3723
3724
3725 static const ber_sequence_t PrepareHO_Arg_sequence[] = {
3726   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_targetCellId },
3727   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
3728   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
3729   { 0, 0, 0, NULL }
3730 };
3731
3732 static int
3733 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_) {
3734   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3735                                    PrepareHO_Arg_sequence, hf_index, ett_gsm_map_PrepareHO_Arg);
3736
3737   return offset;
3738 }
3739
3740
3741
3742 static int
3743 dissect_gsm_map_RNCId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3744   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3745                                        NULL);
3746
3747   return offset;
3748 }
3749 static int dissect_targetRNCId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3750   return dissect_gsm_map_RNCId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetRNCId);
3751 }
3752
3753
3754 static const value_string gsm_map_AccessNetworkProtocolId_vals[] = {
3755   {   1, "ts3G-48006" },
3756   {   2, "ts3G-25413" },
3757   { 0, NULL }
3758 };
3759
3760
3761 static int
3762 dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3763   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3764                                   &AccessNetworkProtocolId);
3765
3766   return offset;
3767 }
3768 static int dissect_accessNetworkProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3769   return dissect_gsm_map_AccessNetworkProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessNetworkProtocolId);
3770 }
3771
3772
3773
3774 static int
3775 dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3776 #line 377 "gsmmap.cnf"
3777
3778  tvbuff_t       *parameter_tvb;
3779  guint8         octet;
3780  guint8         length;
3781  tvbuff_t       *next_tvb;
3782
3783
3784   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3785                                        &parameter_tvb);
3786
3787
3788  if (!parameter_tvb)
3789         return offset;
3790  switch (AccessNetworkProtocolId){
3791         /* ts3G-48006 */
3792         case 1:
3793                 octet = tvb_get_guint8(parameter_tvb,0);
3794                 length = tvb_get_guint8(parameter_tvb,1);
3795                 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
3796                         /* gsm-BSSMAP? */
3797                         next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
3798                         dissect_bssmap(next_tvb, pinfo, tree);
3799                 }
3800                 break;
3801         /* ts3G-25413 */
3802         case 2:
3803                 break;
3804         default:
3805                 break;
3806
3807  }
3808
3809
3810   return offset;
3811 }
3812 static int dissect_longsignalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3813   return dissect_gsm_map_LongSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_longsignalInfo);
3814 }
3815
3816
3817 static const ber_sequence_t AccessNetworkSignalInfo_sequence[] = {
3818   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_accessNetworkProtocolId },
3819   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_longsignalInfo },
3820   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3821   { 0, 0, 0, NULL }
3822 };
3823
3824 static int
3825 dissect_gsm_map_AccessNetworkSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3826   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3827                                    AccessNetworkSignalInfo_sequence, hf_index, ett_gsm_map_AccessNetworkSignalInfo);
3828
3829   return offset;
3830 }
3831 static int dissect_an_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3832   return dissect_gsm_map_AccessNetworkSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
3833 }
3834 static int dissect_an_APDU_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3835   return dissect_gsm_map_AccessNetworkSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
3836 }
3837
3838
3839
3840 static int
3841 dissect_gsm_map_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3842   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3843                                        NULL);
3844
3845   return offset;
3846 }
3847 static int dissect_integrityProtectionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3848   return dissect_gsm_map_IntegrityProtectionInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
3849 }
3850 static int dissect_integrityProtectionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3851   return dissect_gsm_map_IntegrityProtectionInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
3852 }
3853
3854
3855
3856 static int
3857 dissect_gsm_map_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3858   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3859                                        NULL);
3860
3861   return offset;
3862 }
3863 static int dissect_encryptionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3864   return dissect_gsm_map_EncryptionInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
3865 }
3866 static int dissect_encryptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3867   return dissect_gsm_map_EncryptionInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
3868 }
3869
3870
3871
3872 static int
3873 dissect_gsm_map_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3874   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3875                                        NULL);
3876
3877   return offset;
3878 }
3879 static int dissect_radioResourceInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3880   return dissect_gsm_map_RadioResourceInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
3881 }
3882 static int dissect_radioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3883   return dissect_gsm_map_RadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
3884 }
3885
3886
3887
3888 static int
3889 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_) {
3890   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3891                                        NULL);
3892
3893   return offset;
3894 }
3895 static int dissect_allowedGSM_Algorithms(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3896   return dissect_gsm_map_AllowedGSM_Algorithms(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
3897 }
3898 static int dissect_allowedGSM_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3899   return dissect_gsm_map_AllowedGSM_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
3900 }
3901
3902
3903
3904 static int
3905 dissect_gsm_map_PermittedIntegrityProtectionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3906   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3907                                        NULL);
3908
3909   return offset;
3910 }
3911 static int dissect_integrityProtectionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3912   return dissect_gsm_map_PermittedIntegrityProtectionAlgorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithms);
3913 }
3914
3915
3916
3917 static int
3918 dissect_gsm_map_PermittedEncryptionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3919   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3920                                        NULL);
3921
3922   return offset;
3923 }
3924 static int dissect_encryptionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3925   return dissect_gsm_map_PermittedEncryptionAlgorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithms);
3926 }
3927
3928
3929 static const ber_sequence_t AllowedUMTS_Algorithms_sequence[] = {
3930   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithms_impl },
3931   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithms_impl },
3932   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3933   { 0, 0, 0, NULL }
3934 };
3935
3936 static int
3937 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_) {
3938   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3939                                    AllowedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_AllowedUMTS_Algorithms);
3940
3941   return offset;
3942 }
3943 static int dissect_allowedUMTS_Algorithms(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3944   return dissect_gsm_map_AllowedUMTS_Algorithms(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
3945 }
3946 static int dissect_allowedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3947   return dissect_gsm_map_AllowedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
3948 }
3949
3950
3951
3952 static int
3953 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_) {
3954   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3955                                   NULL);
3956
3957   return offset;
3958 }
3959 static int dissect_rab_Id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3960   return dissect_gsm_map_RAB_Id(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
3961 }
3962 static int dissect_rab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3963   return dissect_gsm_map_RAB_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
3964 }
3965 static int dissect_selectedRab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3966   return dissect_gsm_map_RAB_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedRab_Id);
3967 }
3968
3969
3970 static const ber_sequence_t RadioResource_sequence[] = {
3971   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_radioResourceInformation },
3972   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
3973   { 0, 0, 0, NULL }
3974 };
3975
3976 static int
3977 dissect_gsm_map_RadioResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3978   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3979                                    RadioResource_sequence, hf_index, ett_gsm_map_RadioResource);
3980
3981   return offset;
3982 }
3983 static int dissect_RadioResourceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3984   return dissect_gsm_map_RadioResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_RadioResourceList_item);
3985 }
3986
3987
3988 static const ber_sequence_t RadioResourceList_sequence_of[1] = {
3989   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RadioResourceList_item },
3990 };
3991
3992 static int
3993 dissect_gsm_map_RadioResourceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3994   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3995                                       RadioResourceList_sequence_of, hf_index, ett_gsm_map_RadioResourceList);
3996
3997   return offset;
3998 }
3999 static int dissect_radioResourceList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4000   return dissect_gsm_map_RadioResourceList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
4001 }
4002 static int dissect_radioResourceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4003   return dissect_gsm_map_RadioResourceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
4004 }
4005
4006
4007
4008 static int
4009 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_) {
4010   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4011                                        NULL);
4012
4013   return offset;
4014 }
4015 static int dissect_bssmap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4016   return dissect_gsm_map_BSSMAP_ServiceHandover(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
4017 }
4018 static int dissect_bssmap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4019   return dissect_gsm_map_BSSMAP_ServiceHandover(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
4020 }
4021
4022
4023
4024 static int
4025 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_) {
4026   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4027                                        NULL);
4028
4029   return offset;
4030 }
4031 static int dissect_ranap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4032   return dissect_gsm_map_RANAP_ServiceHandover(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
4033 }
4034 static int dissect_ranap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4035   return dissect_gsm_map_RANAP_ServiceHandover(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
4036 }
4037
4038
4039 static const ber_sequence_t BSSMAP_ServiceHandoverInfo_sequence[] = {
4040   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_bssmap_ServiceHandover },
4041   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
4042   { 0, 0, 0, NULL }
4043 };
4044
4045 static int
4046 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_) {
4047   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4048                                    BSSMAP_ServiceHandoverInfo_sequence, hf_index, ett_gsm_map_BSSMAP_ServiceHandoverInfo);
4049
4050   return offset;
4051 }
4052 static int dissect_BSSMAP_ServiceHandoverList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4053   return dissect_gsm_map_BSSMAP_ServiceHandoverInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BSSMAP_ServiceHandoverList_item);
4054 }
4055
4056
4057 static const ber_sequence_t BSSMAP_ServiceHandoverList_sequence_of[1] = {
4058   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BSSMAP_ServiceHandoverList_item },
4059 };
4060
4061 static int
4062 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_) {
4063   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4064                                       BSSMAP_ServiceHandoverList_sequence_of, hf_index, ett_gsm_map_BSSMAP_ServiceHandoverList);
4065
4066   return offset;
4067 }
4068 static int dissect_bssmap_ServiceHandoverList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4069   return dissect_gsm_map_BSSMAP_ServiceHandoverList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
4070 }
4071 static int dissect_bssmap_ServiceHandoverList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4072   return dissect_gsm_map_BSSMAP_ServiceHandoverList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
4073 }
4074
4075
4076
4077 static int
4078 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_) {
4079   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4080
4081   return offset;
4082 }
4083 static int dissect_asciCallReference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4084   return dissect_gsm_map_ASCI_CallReference(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
4085 }
4086 static int dissect_asciCallReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4087   return dissect_gsm_map_ASCI_CallReference(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
4088 }
4089
4090
4091
4092 static int
4093 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_) {
4094   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4095                                        NULL);
4096
4097   return offset;
4098 }
4099 static int dissect_geran_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4100   return dissect_gsm_map_GERAN_Classmark(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geran_classmark);
4101 }
4102
4103
4104
4105 static int
4106 dissect_gsm_map_Codec(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4107   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4108                                        NULL);
4109
4110   return offset;
4111 }
4112 static int dissect_iuCurrentlyUsedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4113   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuCurrentlyUsedCodec);
4114 }
4115 static int dissect_iuSelectedCodec(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4116   return dissect_gsm_map_Codec(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuSelectedCodec);
4117 }
4118 static int dissect_iUSelectedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4119   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iUSelectedCodec);
4120 }
4121 static int dissect_codec1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4122   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec1);
4123 }
4124 static int dissect_codec2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4125   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec2);
4126 }
4127 static int dissect_codec3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4128   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec3);
4129 }
4130 static int dissect_codec4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4131   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec4);
4132 }
4133 static int dissect_codec5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4134   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec5);
4135 }
4136 static int dissect_codec6_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4137   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec6);
4138 }
4139 static int dissect_codec7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4140   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec7);
4141 }
4142 static int dissect_codec8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4143   return dissect_gsm_map_Codec(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec8);
4144 }
4145 static int dissect_currentlyUsedCodec(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4146   return dissect_gsm_map_Codec(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentlyUsedCodec);
4147 }
4148
4149
4150 static const ber_sequence_t CodecList_sequence[] = {
4151   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl },
4152   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl },
4153   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl },
4154   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl },
4155   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl },
4156   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl },
4157   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl },
4158   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl },
4159   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4160   { 0, 0, 0, NULL }
4161 };
4162
4163 static int
4164 dissect_gsm_map_CodecList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4165   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4166                                    CodecList_sequence, hf_index, ett_gsm_map_CodecList);
4167
4168   return offset;
4169 }
4170 static int dissect_iuAvailableCodecsList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4171   return dissect_gsm_map_CodecList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
4172 }
4173 static int dissect_iuAvailableCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4174   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
4175 }
4176 static int dissect_utranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4177   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranCodecList);
4178 }
4179 static int dissect_geranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4180   return dissect_gsm_map_CodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranCodecList);
4181 }
4182
4183
4184 static const ber_sequence_t SupportedCodecsList_sequence[] = {
4185   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranCodecList_impl },
4186   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranCodecList_impl },
4187   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4188   { 0, 0, 0, NULL }
4189 };
4190
4191 static int
4192 dissect_gsm_map_SupportedCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4193   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4194                                    SupportedCodecsList_sequence, hf_index, ett_gsm_map_SupportedCodecsList);
4195
4196   return offset;
4197 }
4198 static int dissect_iuSupportedCodecsList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4199   return dissect_gsm_map_SupportedCodecsList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
4200 }
4201 static int dissect_iuSupportedCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4202   return dissect_gsm_map_SupportedCodecsList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
4203 }
4204
4205
4206
4207 static int
4208 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_) {
4209   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4210                                     NULL, hf_index, -1,
4211                                     NULL);
4212
4213   return offset;
4214 }
4215 static int dissect_uesbi_IuA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4216   return dissect_gsm_map_UESBI_IuA(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuA);
4217 }
4218
4219
4220
4221 static int
4222 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_) {
4223   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4224                                     NULL, hf_index, -1,
4225                                     NULL);
4226
4227   return offset;
4228 }
4229 static int dissect_uesbi_IuB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4230   return dissect_gsm_map_UESBI_IuB(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuB);
4231 }
4232
4233
4234 static const ber_sequence_t UESBI_Iu_sequence[] = {
4235   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuA_impl },
4236   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuB_impl },
4237   { 0, 0, 0, NULL }
4238 };
4239
4240 static int
4241 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_) {
4242   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4243                                    UESBI_Iu_sequence, hf_index, ett_gsm_map_UESBI_Iu);
4244
4245   return offset;
4246 }
4247 static int dissect_uesbi_Iu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4248   return dissect_gsm_map_UESBI_Iu(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_Iu);
4249 }
4250 static int dissect_bmuef(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4251   return dissect_gsm_map_UESBI_Iu(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bmuef);
4252 }
4253
4254
4255 static const ber_sequence_t PrepareHO_ArgV3_sequence[] = {
4256   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
4257   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
4258   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
4259   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
4260   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multipleBearerRequested_impl },
4261   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4262   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionInfo_impl },
4263   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionInfo_impl },
4264   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceInformation_impl },
4265   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedGSM_Algorithms_impl },
4266   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedUMTS_Algorithms_impl },
4267   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceList_impl },
4268   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4269   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_Id_impl },
4270   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandover_impl },
4271   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ranap_ServiceHandover_impl },
4272   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandoverList_impl },
4273   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_asciCallReference_impl },
4274   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
4275   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuCurrentlyUsedCodec_impl },
4276   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuSupportedCodecsList_impl },
4277   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
4278   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_Iu_impl },
4279   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
4280   { 0, 0, 0, NULL }
4281 };
4282
4283 static int
4284 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_) {
4285   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4286                                    PrepareHO_ArgV3_sequence, hf_index, ett_gsm_map_PrepareHO_ArgV3);
4287
4288   return offset;
4289 }
4290
4291
4292 static const ber_sequence_t PrepareHO_Res_sequence[] = {
4293   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
4294   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
4295   { 0, 0, 0, NULL }
4296 };
4297
4298 static int
4299 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_) {
4300   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4301                                    PrepareHO_Res_sequence, hf_index, ett_gsm_map_PrepareHO_Res);
4302
4303   return offset;
4304 }
4305
4306
4307
4308 static int
4309 dissect_gsm_map_HandoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4310   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4311                                        NULL);
4312
4313   return offset;
4314 }
4315
4316
4317 static const ber_sequence_t RelocationNumber_sequence[] = {
4318   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
4319   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
4320   { 0, 0, 0, NULL }
4321 };
4322
4323 static int
4324 dissect_gsm_map_RelocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4325   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4326                                    RelocationNumber_sequence, hf_index, ett_gsm_map_RelocationNumber);
4327
4328   return offset;
4329 }
4330 static int dissect_RelocationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4331   return dissect_gsm_map_RelocationNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_RelocationNumberList_item);
4332 }
4333
4334
4335 static const ber_sequence_t RelocationNumberList_sequence_of[1] = {
4336   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RelocationNumberList_item },
4337 };
4338
4339 static int
4340 dissect_gsm_map_RelocationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4341   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4342                                       RelocationNumberList_sequence_of, hf_index, ett_gsm_map_RelocationNumberList);
4343
4344   return offset;
4345 }
4346 static int dissect_relocationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4347   return dissect_gsm_map_RelocationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList);
4348 }
4349
4350
4351
4352 static int
4353 dissect_gsm_map_MulticallBearerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4354   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4355                                   NULL);
4356
4357   return offset;
4358 }
4359 static int dissect_multicallBearerInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4360   return dissect_gsm_map_MulticallBearerInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multicallBearerInfo);
4361 }
4362
4363
4364
4365 static int
4366 dissect_gsm_map_ChosenIntegrityProtectionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4367   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4368                                        NULL);
4369
4370   return offset;
4371 }
4372 static int dissect_integrityProtectionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4373   return dissect_gsm_map_ChosenIntegrityProtectionAlgorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithm);
4374 }
4375
4376
4377
4378 static int
4379 dissect_gsm_map_ChosenEncryptionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4380   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4381                                        NULL);
4382
4383   return offset;
4384 }
4385 static int dissect_encryptionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4386   return dissect_gsm_map_ChosenEncryptionAlgorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithm);
4387 }
4388
4389
4390 static const ber_sequence_t SelectedUMTS_Algorithms_sequence[] = {
4391   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithm_impl },
4392   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithm_impl },
4393   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4394   { 0, 0, 0, NULL }
4395 };
4396
4397 static int
4398 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_) {
4399   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4400                                    SelectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_SelectedUMTS_Algorithms);
4401
4402   return offset;
4403 }
4404 static int dissect_selectedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4405   return dissect_gsm_map_SelectedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedUMTS_Algorithms);
4406 }
4407
4408
4409
4410 static int
4411 dissect_gsm_map_ChosenChannelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4412   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4413                                        NULL);
4414
4415   return offset;
4416 }
4417 static int dissect_chosenChannelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4418   return dissect_gsm_map_ChosenChannelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannelInfo);
4419 }
4420
4421
4422
4423 static int
4424 dissect_gsm_map_ChosenSpeechVersion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4425   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4426                                        NULL);
4427
4428   return offset;
4429 }
4430 static int dissect_chosenSpeechVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4431   return dissect_gsm_map_ChosenSpeechVersion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenSpeechVersion);
4432 }
4433
4434
4435 static const ber_sequence_t ChosenRadioResourceInformation_sequence[] = {
4436   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannelInfo_impl },
4437   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenSpeechVersion_impl },
4438   { 0, 0, 0, NULL }
4439 };
4440
4441 static int
4442 dissect_gsm_map_ChosenRadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4443   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4444                                    ChosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_ChosenRadioResourceInformation);
4445
4446   return offset;
4447 }
4448 static int dissect_chosenRadioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4449   return dissect_gsm_map_ChosenRadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenRadioResourceInformation);
4450 }
4451
4452
4453 static const ber_sequence_t PrepareHO_ResV3_sequence[] = {
4454   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_handoverNumber_impl },
4455   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_relocationNumberList_impl },
4456   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
4457   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicallBearerInfo_impl },
4458   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_multipleBearerNotSupported },
4459   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
4460   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
4461   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4462   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_iuSelectedCodec },
4463   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_iuAvailableCodecsList },
4464   { 0, 0, 0, NULL }
4465 };
4466
4467 static int
4468 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_) {
4469   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4470                                    PrepareHO_ResV3_sequence, hf_index, ett_gsm_map_PrepareHO_ResV3);
4471
4472   return offset;
4473 }
4474
4475
4476
4477 static int
4478 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_) {
4479   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4480                                        NULL);
4481
4482   return offset;
4483 }
4484
4485
4486
4487 static int
4488 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_) {
4489   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4490                                        NULL);
4491
4492   return offset;
4493 }
4494
4495
4496 static const ber_sequence_t SendEndSignalArgV3_sequence[] = {
4497   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4498   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4499   { 0, 0, 0, NULL }
4500 };
4501
4502 static int
4503 dissect_gsm_map_SendEndSignalArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4504   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4505                                    SendEndSignalArgV3_sequence, hf_index, ett_gsm_map_SendEndSignalArgV3);
4506
4507   return offset;
4508 }
4509
4510
4511 static const ber_sequence_t SendEndSignalRes_sequence[] = {
4512   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4513   { 0, 0, 0, NULL }
4514 };
4515
4516 static int
4517 dissect_gsm_map_SendEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4518   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4519                                    SendEndSignalRes_sequence, hf_index, ett_gsm_map_SendEndSignalRes);
4520
4521   return offset;
4522 }
4523
4524
4525
4526 static int
4527 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_) {
4528   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4529                                        NULL);
4530
4531   return offset;
4532 }
4533 static int dissect_selectedGSM_Algorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4534   return dissect_gsm_map_SelectedGSM_Algorithm(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedGSM_Algorithm);
4535 }
4536
4537
4538 static const ber_sequence_t ProcessAccessSignallingArgV3_sequence[] = {
4539   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4540   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
4541   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedGSM_Algorithm_impl },
4542   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
4543   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedRab_Id_impl },
4544   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4545   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iUSelectedCodec_impl },
4546   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuAvailableCodecsList_impl },
4547   { 0, 0, 0, NULL }
4548 };
4549
4550 static int
4551 dissect_gsm_map_ProcessAccessSignallingArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4552   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4553                                    ProcessAccessSignallingArgV3_sequence, hf_index, ett_gsm_map_ProcessAccessSignallingArgV3);
4554
4555   return offset;
4556 }
4557
4558
4559 static const value_string gsm_map_KeyStatus_vals[] = {
4560   {   0, "old" },
4561   {   1, "new" },
4562   { 0, NULL }
4563 };
4564
4565
4566 static int
4567 dissect_gsm_map_KeyStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4568   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4569                                   NULL);
4570
4571   return offset;
4572 }
4573 static int dissect_keyStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4574   return dissect_gsm_map_KeyStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_keyStatus);
4575 }
4576
4577
4578 static const ber_sequence_t ForwardAccessSignallingArgV3_sequence[] = {
4579   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4580   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_integrityProtectionInfo },
4581   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_encryptionInfo },
4582   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_keyStatus },
4583   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allowedGSM_Algorithms },
4584   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_allowedUMTS_Algorithms },
4585   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_radioResourceInformation },
4586   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
4587   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_radioResourceList },
4588   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_bssmap_ServiceHandover },
4589   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_ranap_ServiceHandover },
4590   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_bssmap_ServiceHandoverList },
4591   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_currentlyUsedCodec },
4592   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_iuSupportedCodecsList },
4593   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_rab_ConfigurationIndicator },
4594   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_iuSelectedCodec },
4595   { 0, 0, 0, NULL }
4596 };
4597
4598 static int
4599 dissect_gsm_map_ForwardAccessSignallingArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4600   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4601                                    ForwardAccessSignallingArgV3_sequence, hf_index, ett_gsm_map_ForwardAccessSignallingArgV3);
4602
4603   return offset;
4604 }
4605
4606
4607 static const ber_sequence_t PrepareSubsequentHOArg_sequence[] = {
4608   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetCellId },
4609   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetMSC_Number },
4610   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
4611   { 0, 0, 0, NULL }
4612 };
4613
4614 static int
4615 dissect_gsm_map_PrepareSubsequentHOArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4616   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4617                                    PrepareSubsequentHOArg_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOArg);
4618
4619   return offset;
4620 }
4621
4622
4623 static const ber_sequence_t PrepareSubsequentHOArgV3_sequence[] = {
4624   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
4625   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_targetMSC_Number_impl },
4626   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
4627   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
4628   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedRab_Id_impl },
4629   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4630   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
4631   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
4632   { 0, 0, 0, NULL }
4633 };
4634
4635 static int
4636 dissect_gsm_map_PrepareSubsequentHOArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4637   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4638                                    PrepareSubsequentHOArgV3_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOArgV3);
4639
4640   return offset;
4641 }
4642
4643
4644 static const ber_sequence_t PrepareSubsequentHOResV3_sequence[] = {
4645   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
4646   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4647   { 0, 0, 0, NULL }
4648 };
4649
4650 static int
4651 dissect_gsm_map_PrepareSubsequentHOResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4652   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4653                                    PrepareSubsequentHOResV3_sequence, hf_index, ett_gsm_map_PrepareSubsequentHOResV3);
4654
4655   return offset;
4656 }
4657
4658
4659
4660 static int
4661 dissect_gsm_map_SendAuthenticationInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4662   offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4663
4664   return offset;
4665 }
4666
4667
4668 static const ber_sequence_t Re_synchronisationInfo_sequence[] = {
4669   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
4670   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_auts },
4671   { 0, 0, 0, NULL }
4672 };
4673
4674 static int
4675 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_) {
4676   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4677                                    Re_synchronisationInfo_sequence, hf_index, ett_gsm_map_Re_synchronisationInfo);
4678
4679   return offset;
4680 }
4681 static int dissect_re_synchronisationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4682   return dissect_gsm_map_Re_synchronisationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_synchronisationInfo);
4683 }
4684
4685
4686 static const value_string gsm_map_RequestingNodeType_vals[] = {
4687   {   0, "vlr" },
4688   {   1, "sgsn" },
4689   { 0, NULL }
4690 };
4691
4692
4693 static int
4694 dissect_gsm_map_RequestingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4695   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4696                                   NULL);
4697
4698   return offset;
4699 }
4700 static int dissect_requestingNodeType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4701   return dissect_gsm_map_RequestingNodeType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingNodeType);
4702 }
4703
4704
4705
4706 static int
4707 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_) {
4708   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4709                                        NULL);
4710
4711   return offset;
4712 }
4713 static int dissect_requestingPLMN_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4714   return dissect_gsm_map_PLMN_Id(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingPLMN_Id);
4715 }
4716
4717
4718 static const ber_sequence_t SendAuthenticationInfoArgV2_sequence[] = {
4719   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4720   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
4721   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
4722   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immediateResponsePreferred_impl },
4723   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_synchronisationInfo },
4724   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4725   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingNodeType_impl },
4726   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingPLMN_Id_impl },
4727   { 0, 0, 0, NULL }
4728 };
4729
4730 static int
4731 dissect_gsm_map_SendAuthenticationInfoArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4732   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4733                                    SendAuthenticationInfoArgV2_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoArgV2);
4734
4735   return offset;
4736 }
4737
4738
4739 static const ber_sequence_t SendAuthenticationInfoRes_item_sequence[] = {
4740   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
4741   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
4742   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
4743   { 0, 0, 0, NULL }
4744 };
4745
4746 static int
4747 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_) {
4748   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4749                                    SendAuthenticationInfoRes_item_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoRes_item);
4750
4751   return offset;
4752 }
4753 static int dissect_SendAuthenticationInfoRes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4754   return dissect_gsm_map_SendAuthenticationInfoRes_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes_item);
4755 }
4756
4757
4758 static const ber_sequence_t SendAuthenticationInfoRes_sequence_of[1] = {
4759   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SendAuthenticationInfoRes_item },
4760 };
4761
4762 static int
4763 dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4764   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4765                                       SendAuthenticationInfoRes_sequence_of, hf_index, ett_gsm_map_SendAuthenticationInfoRes);
4766
4767   return offset;
4768 }
4769
4770
4771 static const ber_sequence_t SendAuthenticationInfoResV3_sequence[] = {
4772   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
4773   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4774   { 0, 0, 0, NULL }
4775 };
4776
4777 static int
4778 dissect_gsm_map_SendAuthenticationInfoResV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4779   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4780                                    SendAuthenticationInfoResV3_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoResV3);
4781
4782   return offset;
4783 }
4784
4785
4786
4787 static int
4788 dissect_gsm_map_CheckIMEIArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4789   offset = dissect_gsm_map_IMEI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4790
4791   return offset;
4792 }
4793
4794
4795 static const asn_namedbit RequestedEquipmentInfo_bits[] = {
4796   {  0, &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus, -1, -1, "equipmentStatus", NULL },
4797   {  1, &hf_gsm_map_RequestedEquipmentInfo_bmuef, -1, -1, "bmuef", NULL },
4798   { 0, NULL, 0, 0, NULL, NULL }
4799 };
4800
4801 static int
4802 dissect_gsm_map_RequestedEquipmentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4803   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4804                                     RequestedEquipmentInfo_bits, hf_index, ett_gsm_map_RequestedEquipmentInfo,
4805                                     NULL);
4806
4807   return offset;
4808 }
4809 static int dissect_requestedEquipmentInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4810   return dissect_gsm_map_RequestedEquipmentInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_requestedEquipmentInfo);
4811 }
4812
4813
4814 static const ber_sequence_t CheckIMEIArgV2_sequence[] = {
4815   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imei },
4816   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_requestedEquipmentInfo },
4817   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4818   { 0, 0, 0, NULL }
4819 };
4820
4821 static int
4822 dissect_gsm_map_CheckIMEIArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4823   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4824                                    CheckIMEIArgV2_sequence, hf_index, ett_gsm_map_CheckIMEIArgV2);
4825
4826   return offset;
4827 }
4828
4829
4830 static const value_string gsm_map_EquipmentStatus_vals[] = {
4831   {   0, "whiteListed" },
4832   {   1, "blackListed" },
4833   {   2, "greyListed" },
4834   { 0, NULL }
4835 };
4836
4837
4838 static int
4839 dissect_gsm_map_EquipmentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4840   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4841                                   NULL);
4842
4843   return offset;
4844 }
4845 static int dissect_equipmentStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4846   return dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus);
4847 }
4848
4849
4850 static const ber_sequence_t CheckIMEIRes_sequence[] = {
4851   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_equipmentStatus },
4852   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bmuef },
4853   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
4854   { 0, 0, 0, NULL }
4855 };
4856
4857 static int
4858 dissect_gsm_map_CheckIMEIRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4859   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4860                                    CheckIMEIRes_sequence, hf_index, ett_gsm_map_CheckIMEIRes);
4861
4862   return offset;
4863 }
4864
4865
4866 static const value_string gsm_map_OverrideCategory_vals[] = {
4867   {   0, "overrideEnabled" },
4868   {   1, "overrideDisabled" },
4869   { 0, NULL }
4870 };
4871
4872
4873 static int
4874 dissect_gsm_map_OverrideCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4875   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4876                                   NULL);
4877
4878   return offset;
4879 }
4880 static int dissect_overrideCategory_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4881   return dissect_gsm_map_OverrideCategory(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_overrideCategory);
4882 }
4883
4884
4885 static const value_string gsm_map_BasicService_vals[] = {
4886   {   2, "bearerservice" },
4887   {   3, "teleservice" },
4888   { 0, NULL }
4889 };
4890
4891 static const ber_choice_t BasicService_choice[] = {
4892   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerservice_impl },
4893   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
4894   { 0, 0, 0, 0, NULL }
4895 };
4896
4897 static int
4898 dissect_gsm_map_BasicService(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4899   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4900                                  BasicService_choice, hf_index, ett_gsm_map_BasicService,
4901                                  NULL);
4902
4903   return offset;
4904 }
4905 static int dissect_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4906   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceGroupList_item);
4907 }
4908
4909
4910 static const ber_sequence_t BasicServiceGroupList_sequence_of[1] = {
4911   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
4912 };
4913
4914 static int
4915 dissect_gsm_map_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4916   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4917                                       BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_BasicServiceGroupList);
4918
4919   return offset;
4920 }
4921 static int dissect_ext_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4922   return dissect_gsm_map_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
4923 }
4924 static int dissect_ext_basicServiceGroupList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4925   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroupList);
4926 }
4927
4928
4929 static const asn_namedbit ODB_GeneralData_bits[] = {
4930   {  0, &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred, -1, -1, "allOG-CallsBarred", NULL },
4931   {  1, &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred, -1, -1, "internationalOGCallsBarred", NULL },
4932   {  2, &hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "internationalOGCallsNotToHPLMN-CountryBarred", NULL },
4933   {  6, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred, -1, -1, "interzonalOGCallsBarred", NULL },
4934   {  7, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsNotToHPLMN-CountryBarred", NULL },
4935   {  8, &hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", NULL },
4936   {  3, &hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred, -1, -1, "premiumRateInformationOGCallsBarred", NULL },
4937   {  4, &hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred, -1, -1, "premiumRateEntertainementOGCallsBarred", NULL },
4938   {  5, &hf_gsm_map_ODB_GeneralData_ss_AccessBarred, -1, -1, "ss-AccessBarred", NULL },
4939   {  9, &hf_gsm_map_ODB_GeneralData_allECT_Barred, -1, -1, "allECT-Barred", NULL },
4940   { 10, &hf_gsm_map_ODB_GeneralData_chargeableECT_Barred, -1, -1, "chargeableECT-Barred", NULL },
4941   { 11, &hf_gsm_map_ODB_GeneralData_internationalECT_Barred, -1, -1, "internationalECT-Barred", NULL },
4942   { 12, &hf_gsm_map_ODB_GeneralData_interzonalECT_Barred, -1, -1, "interzonalECT-Barred", NULL },
4943   { 13, &hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred, -1, -1, "doublyChargeableECT-Barred", NULL },
4944   { 14, &hf_gsm_map_ODB_GeneralData_multipleECT_Barred, -1, -1, "multipleECT-Barred", NULL },
4945   { 15, &hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred, -1, -1, "allPacketOrientedServicesBarred", NULL },
4946   { 16, &hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred, -1, -1, "roamerAccessToHPLMN-AP-Barred", NULL },
4947   { 17, &hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred, -1, -1, "roamerAccessToVPLMN-AP-Barred", NULL },
4948   { 18, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred, -1, -1, "roamingOutsidePLMNOG-CallsBarred", NULL },
4949   { 19, &hf_gsm_map_ODB_GeneralData_allIC_CallsBarred, -1, -1, "allIC-CallsBarred", NULL },
4950   { 20, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred, -1, -1, "roamingOutsidePLMNIC-CallsBarred", NULL },
4951   { 21, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, -1, -1, "roamingOutsidePLMNICountryIC-CallsBarred", NULL },
4952   { 22, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred, -1, -1, "roamingOutsidePLMN-Barred", NULL },
4953   { 23, &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred, -1, -1, "roamingOutsidePLMN-CountryBarred", NULL },
4954   { 24, &hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred, -1, -1, "registrationAllCF-Barred", NULL },
4955   { 25, &hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred, -1, -1, "registrationCFNotToHPLMN-Barred", NULL },
4956   { 26, &hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred, -1, -1, "registrationInterzonalCF-Barred", NULL },
4957   { 27, &hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, -1, -1, "registrationInterzonalCFNotToHPLMN-Barred", NULL },
4958   { 28, &hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred, -1, -1, "registrationInternationalCF-Barred", NULL },
4959   { 0, NULL, 0, 0, NULL, NULL }
4960 };
4961
4962 static int
4963 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_) {
4964   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4965                                     ODB_GeneralData_bits, hf_index, ett_gsm_map_ODB_GeneralData,
4966                                     NULL);
4967
4968   return offset;
4969 }
4970 static int dissect_odb_GeneralData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4971   return dissect_gsm_map_ODB_GeneralData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
4972 }
4973 static int dissect_odb_GeneralData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4974   return dissect_gsm_map_ODB_GeneralData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
4975 }
4976
4977
4978 static const asn_namedbit ODB_HPLMN_Data_bits[] = {
4979   {  0, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1, -1, -1, "plmn-SpecificBarringType1", NULL },
4980   {  1, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2, -1, -1, "plmn-SpecificBarringType2", NULL },
4981   {  2, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3, -1, -1, "plmn-SpecificBarringType3", NULL },
4982   {  3, &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4, -1, -1, "plmn-SpecificBarringType4", NULL },
4983   { 0, NULL, 0, 0, NULL, NULL }
4984 };
4985
4986 static int
4987 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_) {
4988   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4989                                     ODB_HPLMN_Data_bits, hf_index, ett_gsm_map_ODB_HPLMN_Data,
4990                                     NULL);
4991
4992   return offset;
4993 }
4994 static int dissect_odb_HPLMN_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4995   return dissect_gsm_map_ODB_HPLMN_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_HPLMN_Data);
4996 }
4997
4998
4999 static const value_string gsm_map_SubscriberStatus_vals[] = {
5000   {   0, "serviceGranted" },
5001   {   1, "operatorDeterminedBarring" },
5002   { 0, NULL }
5003 };
5004
5005
5006 static int
5007 dissect_gsm_map_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5008   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5009                                   NULL);
5010
5011   return offset;
5012 }
5013 static int dissect_subscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5014   return dissect_gsm_map_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStatus);
5015 }
5016
5017
5018 static const value_string gsm_map_BcsmTriggerDetectionPoint_vals[] = {
5019   {   2, "collectedInfo" },
5020   {   4, "routeSelectFailure" },
5021   {  12, "termAttemptAuthorized" },
5022   {  13, "tBusy" },
5023   {  14, "tNoAnswer" },
5024   { 0, NULL }
5025 };
5026
5027
5028 static int
5029 dissect_gsm_map_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5030   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5031                                   NULL);
5032
5033   return offset;
5034 }
5035 static int dissect_bcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5036   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bcsmTriggerDetectionPoint);
5037 }
5038
5039
5040
5041 static int
5042 dissect_gsm_map_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5043   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5044                                   NULL);
5045
5046   return offset;
5047 }
5048 static int dissect_serviceKey(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5049   return dissect_gsm_map_ServiceKey(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
5050 }
5051 static int dissect_serviceKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5052   return dissect_gsm_map_ServiceKey(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
5053 }
5054
5055
5056
5057 static int
5058 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_) {
5059   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5060                                        NULL);
5061
5062   return offset;
5063 }
5064 static int dissect_gsmSCFAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5065   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCFAddress);
5066 }
5067
5068
5069 static const value_string gsm_map_DefaultCallHandling_vals[] = {
5070   {   0, "continueCall" },
5071   {   1, "releaseCall" },
5072   { 0, NULL }
5073 };
5074
5075
5076 static int
5077 dissect_gsm_map_DefaultCallHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5078   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5079                                   NULL);
5080
5081   return offset;
5082 }
5083 static int dissect_defaultCallHandling(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5084   return dissect_gsm_map_DefaultCallHandling(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
5085 }
5086 static int dissect_defaultCallHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5087   return dissect_gsm_map_DefaultCallHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
5088 }
5089
5090
5091 static const ber_sequence_t BcsmCamelTDPData_sequence[] = {
5092   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_bcsmTriggerDetectionPoint },
5093   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5094   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCFAddress_impl },
5095   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
5096   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5097   { 0, 0, 0, NULL }
5098 };
5099
5100 static int
5101 dissect_gsm_map_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5102   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5103                                    BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_BcsmCamelTDPData);
5104
5105   return offset;
5106 }
5107 static int dissect_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5108   return dissect_gsm_map_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BcsmCamelTDPDataList_item);
5109 }
5110
5111
5112 static const ber_sequence_t BcsmCamelTDPDataList_sequence_of[1] = {
5113   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BcsmCamelTDPDataList_item },
5114 };
5115
5116 static int
5117 dissect_gsm_map_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5118   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5119                                       BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_BcsmCamelTDPDataList);
5120
5121   return offset;
5122 }
5123
5124
5125 static const value_string gsm_map_O_BcsmTriggerDetectionPoint_vals[] = {
5126   {   2, "collectedInfo" },
5127   {   4, "routeSelectFailure" },
5128   { 0, NULL }
5129 };
5130
5131
5132 static int
5133 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_) {
5134   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5135                                   NULL);
5136
5137   return offset;
5138 }
5139 static int dissect_o_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5140   return dissect_gsm_map_O_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmTriggerDetectionPoint);
5141 }
5142
5143
5144 static const ber_sequence_t O_BcsmCamelTDPData_sequence[] = {
5145   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
5146   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
5147   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
5148   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
5149   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5150   { 0, 0, 0, NULL }
5151 };
5152
5153 static int
5154 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_) {
5155   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5156                                    O_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDPData);
5157
5158   return offset;
5159 }
5160 static int dissect_O_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5161   return dissect_gsm_map_O_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDPDataList_item);
5162 }
5163
5164
5165 static const ber_sequence_t O_BcsmCamelTDPDataList_sequence_of[1] = {
5166   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDPDataList_item },
5167 };
5168
5169 static int
5170 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_) {
5171   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5172                                       O_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDPDataList);
5173
5174   return offset;
5175 }
5176 static int dissect_o_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5177   return dissect_gsm_map_O_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPDataList);
5178 }
5179
5180
5181
5182 static int
5183 dissect_gsm_map_CamelCapabilityHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5184   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5185                                   NULL);
5186
5187   return offset;
5188 }
5189 static int dissect_camelCapabilityHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5190   return dissect_gsm_map_CamelCapabilityHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelCapabilityHandling);
5191 }
5192
5193
5194 static const ber_sequence_t O_CSI_sequence[] = {
5195   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_BcsmCamelTDPDataList },
5196   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5197   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
5198   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
5199   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csiActive_impl },
5200   { 0, 0, 0, NULL }
5201 };
5202
5203 static int
5204 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_) {
5205   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5206                                    O_CSI_sequence, hf_index, ett_gsm_map_O_CSI);
5207
5208   return offset;
5209 }
5210 static int dissect_o_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5211   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CSI);
5212 }
5213 static int dissect_o_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5214   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_CSI);
5215 }
5216
5217
5218
5219 static int
5220 dissect_gsm_map_Category(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5221   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5222                                        NULL);
5223
5224   return offset;
5225 }
5226 static int dissect_category_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5227   return dissect_gsm_map_Category(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_category);
5228 }
5229
5230
5231
5232 static int
5233 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_) {
5234   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5235                                        NULL);
5236
5237   return offset;
5238 }
5239 static int dissect_BearerServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5240   return dissect_gsm_map_Ext_BearerServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BearerServiceList_item);
5241 }
5242 static int dissect_ext_BearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5243   return dissect_gsm_map_Ext_BearerServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_BearerService);
5244 }
5245
5246
5247 static const ber_sequence_t BearerServiceList_sequence_of[1] = {
5248   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_BearerServiceList_item },
5249 };
5250
5251 static int
5252 dissect_gsm_map_BearerServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5253   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5254                                       BearerServiceList_sequence_of, hf_index, ett_gsm_map_BearerServiceList);
5255
5256   return offset;
5257 }
5258 static int dissect_bearerserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5259   return dissect_gsm_map_BearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerserviceList);
5260 }
5261 static int dissect_bearerServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5262   return dissect_gsm_map_BearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerServiceList);
5263 }
5264
5265
5266
5267 static int
5268 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_) {
5269   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5270                                        NULL);
5271
5272   return offset;
5273 }
5274 static int dissect_TeleserviceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5275   return dissect_gsm_map_Ext_TeleserviceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TeleserviceList_item);
5276 }
5277 static int dissect_ext_Teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5278   return dissect_gsm_map_Ext_TeleserviceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_Teleservice);
5279 }
5280 static int dissect_ext_teleservice(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5281   return dissect_gsm_map_Ext_TeleserviceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_teleservice);
5282 }
5283
5284
5285 static const ber_sequence_t TeleserviceList_sequence_of[1] = {
5286   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_TeleserviceList_item },
5287 };
5288
5289 static int
5290 dissect_gsm_map_TeleserviceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5291   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5292                                       TeleserviceList_sequence_of, hf_index, ett_gsm_map_TeleserviceList);
5293
5294   return offset;
5295 }
5296 static int dissect_teleserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5297   return dissect_gsm_map_TeleserviceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList);
5298 }
5299
5300
5301
5302 int
5303 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_) {
5304   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5305                                        NULL);
5306
5307   return offset;
5308 }
5309 static int dissect_ss_Code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5310   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
5311 }
5312 static int dissect_ss_Code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5313   return dissect_gsm_map_SS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
5314 }
5315 static int dissect_SS_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5316   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SS_List_item);
5317 }
5318 static int dissect_SS_EventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5319   return dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SS_EventList_item);
5320 }
5321
5322
5323 const value_string gsm_map_Ext_BasicServiceCode_vals[] = {
5324   {   2, "ext-BearerService" },
5325   {   3, "ext-Teleservice" },
5326   { 0, NULL }
5327 };
5328
5329 static const ber_choice_t Ext_BasicServiceCode_choice[] = {
5330   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_BearerService_impl },
5331   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_Teleservice_impl },
5332   { 0, 0, 0, 0, NULL }
5333 };
5334
5335 int
5336 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_) {
5337   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5338                                  Ext_BasicServiceCode_choice, hf_index, ett_gsm_map_Ext_BasicServiceCode,
5339                                  NULL);
5340
5341   return offset;
5342 }
5343 static int dissect_BasicServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5344   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceList_item);
5345 }
5346 static int dissect_ext_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5347   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicService);
5348 }
5349 static int dissect_ext_basicService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5350   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicService);
5351 }
5352 static int dissect_Ext_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5353   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_BasicServiceGroupList_item);
5354 }
5355 static int dissect_ext_basicServiceGroup(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5356   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroup);
5357 }
5358 static int dissect_ext_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5359   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_basicServiceGroup);
5360 }
5361 static int dissect_basicServiceGroup2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5362   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup2);
5363 }
5364 static int dissect_basicService2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5365   return dissect_gsm_map_Ext_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicService2);
5366 }
5367 static int dissect_BasicServiceCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5368   return dissect_gsm_map_Ext_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceCriteria_item);
5369 }
5370
5371
5372
5373 static int
5374 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_) {
5375 #line 295 "gsmmap.cnf"
5376  /* Note Ext-SS-Status can have more than one byte */
5377
5378  tvbuff_t       *parameter_tvb;
5379  guint8         octet;
5380
5381   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5382                                        &parameter_tvb);
5383
5384
5385  if (!parameter_tvb)
5386         return offset;
5387
5388  octet = tvb_get_guint8(parameter_tvb,0);
5389
5390  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
5391  if ((octet & 0x01)== 1)        
5392         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
5393                                                                                 
5394  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
5395  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
5396  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
5397
5398
5399
5400
5401   return offset;
5402 }
5403 static int dissect_ext_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5404   return dissect_gsm_map_Ext_SS_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Status);
5405 }
5406 static int dissect_ext_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5407   return dissect_gsm_map_Ext_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Status);
5408 }
5409
5410
5411
5412 int
5413 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_) {
5414   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5415                                        NULL);
5416
5417   return offset;
5418 }
5419 static int dissect_forwardedToSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5420   return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToSubaddress);
5421 }
5422 static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5423   return dissect_gsm_map_ISDN_SubaddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberSubaddress);
5424 }
5425
5426
5427
5428 static int
5429 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_) {
5430   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5431                                        NULL);
5432
5433   return offset;
5434 }
5435
5436
5437
5438 static int
5439 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_) {
5440   offset = dissect_gsm_map_Ext_ForwOptions(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5441
5442 #line 421 "gsmmap.cnf"
5443
5444         proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
5445         proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
5446         proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
5447         proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
5448
5449
5450   return offset;
5451 }
5452 static int dissect_ext_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5453   return dissect_gsm_map_T_forwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingOptions);
5454 }
5455
5456
5457
5458 static int
5459 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_) {
5460   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5461                                   NULL);
5462
5463   return offset;
5464 }
5465 static int dissect_ext_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5466   return dissect_gsm_map_Ext_NoRepCondTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_noReplyConditionTime);
5467 }
5468
5469
5470
5471 int
5472 dissect_gsm_map_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5473 #line 245 "gsmmap.cnf"
5474
5475  tvbuff_t       *parameter_tvb;
5476  char           *digit_str;
5477
5478   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5479                                        &parameter_tvb);
5480
5481
5482  if (!parameter_tvb)
5483         return offset;
5484
5485  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
5486  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
5487  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
5488
5489  digit_str = unpack_digits(parameter_tvb, 1);
5490
5491  proto_tree_add_string(tree, hf_gsm_map_address_digits, parameter_tvb, 1, -1, digit_str);
5492
5493
5494
5495   return offset;
5496 }
5497 static int dissect_forwardedToNumber_addr_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5498   return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber_addr);
5499 }
5500 static int dissect_lcsClientDialedByMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5501   return dissect_gsm_map_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientDialedByMS);
5502 }
5503
5504
5505
5506 static int
5507 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_) {
5508   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5509
5510   return offset;
5511 }
5512 static int dissect_longForwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5513   return dissect_gsm_map_FTN_AddressString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longForwardedToNumber);
5514 }
5515
5516
5517 static const ber_sequence_t Ext_ForwFeature_sequence[] = {
5518   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
5519   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
5520   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
5521   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
5522   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_forwardingOptions_impl },
5523   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_noReplyConditionTime_impl },
5524   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5525   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
5526   { 0, 0, 0, NULL }
5527 };
5528
5529 static int
5530 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_) {
5531   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5532                                    Ext_ForwFeature_sequence, hf_index, ett_gsm_map_Ext_ForwFeature);
5533
5534   return offset;
5535 }
5536 static int dissect_Ext_ForwFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5537   return dissect_gsm_map_Ext_ForwFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_ForwFeatureList_item);
5538 }
5539
5540
5541 static const ber_sequence_t Ext_ForwFeatureList_sequence_of[1] = {
5542   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_ForwFeatureList_item },
5543 };
5544
5545 static int
5546 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_) {
5547   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5548                                       Ext_ForwFeatureList_sequence_of, hf_index, ett_gsm_map_Ext_ForwFeatureList);
5549
5550   return offset;
5551 }
5552 static int dissect_ext_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5553   return dissect_gsm_map_Ext_ForwFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingFeatureList);
5554 }
5555 static int dissect_ext_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5556   return dissect_gsm_map_Ext_ForwFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingFeatureList);
5557 }
5558
5559
5560 static const ber_sequence_t Ext_ForwInfo_sequence[] = {
5561   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5562   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_forwardingFeatureList },
5563   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5564   { 0, 0, 0, NULL }
5565 };
5566
5567 static int
5568 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_) {
5569   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5570                                    Ext_ForwInfo_sequence, hf_index, ett_gsm_map_Ext_ForwInfo);
5571
5572   return offset;
5573 }
5574 static int dissect_ext_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5575   return dissect_gsm_map_Ext_ForwInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_forwardingInfo);
5576 }
5577
5578
5579 static const ber_sequence_t Ext_CallBarringFeature_sequence[] = {
5580   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
5581   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
5582   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5583   { 0, 0, 0, NULL }
5584 };
5585
5586 static int
5587 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_) {
5588   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5589                                    Ext_CallBarringFeature_sequence, hf_index, ett_gsm_map_Ext_CallBarringFeature);
5590
5591   return offset;
5592 }
5593 static int dissect_Ext_CallBarFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5594   return dissect_gsm_map_Ext_CallBarringFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_CallBarFeatureList_item);
5595 }
5596
5597
5598 static const ber_sequence_t Ext_CallBarFeatureList_sequence_of[1] = {
5599   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_CallBarFeatureList_item },
5600 };
5601
5602 static int
5603 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_) {
5604   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5605                                       Ext_CallBarFeatureList_sequence_of, hf_index, ett_gsm_map_Ext_CallBarFeatureList);
5606
5607   return offset;
5608 }
5609 static int dissect_ext_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5610   return dissect_gsm_map_Ext_CallBarFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringFeatureList);
5611 }
5612 static int dissect_ext_callBarringFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5613   return dissect_gsm_map_Ext_CallBarFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringFeatureList);
5614 }
5615
5616
5617 static const ber_sequence_t Ext_CallBarInfo_sequence[] = {
5618   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5619   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_callBarringFeatureList },
5620   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5621   { 0, 0, 0, NULL }
5622 };
5623
5624 static int
5625 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_) {
5626   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5627                                    Ext_CallBarInfo_sequence, hf_index, ett_gsm_map_Ext_CallBarInfo);
5628
5629   return offset;
5630 }
5631 static int dissect_ext_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5632   return dissect_gsm_map_Ext_CallBarInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_callBarringInfo);
5633 }
5634
5635
5636
5637 int
5638 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_) {
5639   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5640                                   NULL);
5641
5642   return offset;
5643 }
5644 static int dissect_cug_Index(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5645   return dissect_gsm_map_CUG_Index(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Index);
5646 }
5647 static int dissect_preferentialCUG_Indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5648   return dissect_gsm_map_CUG_Index(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_preferentialCUG_Indicator);
5649 }
5650
5651
5652
5653 int
5654 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_) {
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_cug_Interlock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5661   return dissect_gsm_map_CUG_Interlock(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Interlock);
5662 }
5663
5664
5665 static const value_string gsm_map_IntraCUG_Options_vals[] = {
5666   {   0, "noCUG-Restrictions" },
5667   {   1, "cugIC-CallBarred" },
5668   {   2, "cugOG-CallBarred" },
5669   { 0, NULL }
5670 };
5671
5672
5673 static int
5674 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_) {
5675   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5676                                   NULL);
5677
5678   return offset;
5679 }
5680 static int dissect_intraCUG_Options(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5681   return dissect_gsm_map_IntraCUG_Options(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_intraCUG_Options);
5682 }
5683
5684
5685 static const ber_sequence_t Ext_BasicServiceGroupList_sequence_of[1] = {
5686   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_BasicServiceGroupList_item },
5687 };
5688
5689 static int
5690 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_) {
5691   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5692                                       Ext_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_Ext_BasicServiceGroupList);
5693
5694   return offset;
5695 }
5696 static int dissect_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5697   return dissect_gsm_map_Ext_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
5698 }
5699
5700
5701 static const ber_sequence_t CUG_Subscription_sequence[] = {
5702   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cug_Index },
5703   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
5704   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_intraCUG_Options },
5705   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
5706   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5707   { 0, 0, 0, NULL }
5708 };
5709
5710 static int
5711 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_) {
5712   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5713                                    CUG_Subscription_sequence, hf_index, ett_gsm_map_CUG_Subscription);
5714
5715   return offset;
5716 }
5717 static int dissect_CUG_SubscriptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5718   return dissect_gsm_map_CUG_Subscription(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CUG_SubscriptionList_item);
5719 }
5720
5721
5722 static const ber_sequence_t CUG_SubscriptionList_sequence_of[1] = {
5723   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CUG_SubscriptionList_item },
5724 };
5725
5726 static int
5727 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_) {
5728   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5729                                       CUG_SubscriptionList_sequence_of, hf_index, ett_gsm_map_CUG_SubscriptionList);
5730
5731   return offset;
5732 }
5733 static int dissect_cug_SubscriptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5734   return dissect_gsm_map_CUG_SubscriptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList);
5735 }
5736
5737
5738
5739 static int
5740 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_) {
5741   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5742                                        NULL);
5743
5744   return offset;
5745 }
5746 static int dissect_interCUG_Restrictions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5747   return dissect_gsm_map_InterCUG_Restrictions(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_interCUG_Restrictions);
5748 }
5749
5750
5751 static const ber_sequence_t CUG_Feature_sequence[] = {
5752   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService },
5753   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_preferentialCUG_Indicator },
5754   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_interCUG_Restrictions },
5755   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5756   { 0, 0, 0, NULL }
5757 };
5758
5759 static int
5760 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_) {
5761   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5762                                    CUG_Feature_sequence, hf_index, ett_gsm_map_CUG_Feature);
5763
5764   return offset;
5765 }
5766 static int dissect_CUG_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5767   return dissect_gsm_map_CUG_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CUG_FeatureList_item);
5768 }
5769
5770
5771 static const ber_sequence_t CUG_FeatureList_sequence_of[1] = {
5772   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CUG_FeatureList_item },
5773 };
5774
5775 static int
5776 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_) {
5777   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5778                                       CUG_FeatureList_sequence_of, hf_index, ett_gsm_map_CUG_FeatureList);
5779
5780   return offset;
5781 }
5782 static int dissect_cug_FeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5783   return dissect_gsm_map_CUG_FeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList);
5784 }
5785
5786
5787 static const ber_sequence_t CUG_Info_sequence[] = {
5788   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList },
5789   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList },
5790   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5791   { 0, 0, 0, NULL }
5792 };
5793
5794 int
5795 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_) {
5796   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5797                                    CUG_Info_sequence, hf_index, ett_gsm_map_CUG_Info);
5798
5799   return offset;
5800 }
5801 static int dissect_cug_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5802   return dissect_gsm_map_CUG_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Info);
5803 }
5804
5805
5806 static const value_string gsm_map_CliRestrictionOption_vals[] = {
5807   {   0, "permanent" },
5808   {   1, "temporaryDefaultRestricted" },
5809   {   2, "temporaryDefaultAllowed" },
5810   { 0, NULL }
5811 };
5812
5813
5814 static int
5815 dissect_gsm_map_CliRestrictionOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5816   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5817                                   NULL);
5818
5819   return offset;
5820 }
5821 static int dissect_cliRestrictionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5822   return dissect_gsm_map_CliRestrictionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
5823 }
5824 static int dissect_cliRestrictionOption_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5825   return dissect_gsm_map_CliRestrictionOption(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
5826 }
5827
5828
5829 static const value_string gsm_map_SS_SubscriptionOption_vals[] = {
5830   {   2, "cliRestrictionOption" },
5831   {   1, "overrideCategory" },
5832   { 0, NULL }
5833 };
5834
5835 static const ber_choice_t SS_SubscriptionOption_choice[] = {
5836   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
5837   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_overrideCategory_impl },
5838   { 0, 0, 0, 0, NULL }
5839 };
5840
5841 static int
5842 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_) {
5843   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5844                                  SS_SubscriptionOption_choice, hf_index, ett_gsm_map_SS_SubscriptionOption,
5845                                  NULL);
5846
5847   return offset;
5848 }
5849 static int dissect_ss_SubscriptionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5850   return dissect_gsm_map_SS_SubscriptionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_SubscriptionOption);
5851 }
5852
5853
5854 static const ber_sequence_t Ext_SS_Data_sequence[] = {
5855   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5856   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
5857   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
5858   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
5859   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5860   { 0, 0, 0, NULL }
5861 };
5862
5863 static int
5864 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_) {
5865   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5866                                    Ext_SS_Data_sequence, hf_index, ett_gsm_map_Ext_SS_Data);
5867
5868   return offset;
5869 }
5870 static int dissect_ext_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5871   return dissect_gsm_map_Ext_SS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ss_Data);
5872 }
5873
5874
5875
5876 static int
5877 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_) {
5878   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5879                                   NULL);
5880
5881   return offset;
5882 }
5883 static int dissect_maximumentitledPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5884   return dissect_gsm_map_EMLPP_Priority(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_maximumentitledPriority);
5885 }
5886 static int dissect_defaultPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5887   return dissect_gsm_map_EMLPP_Priority(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
5888 }
5889 static int dissect_defaultPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5890   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
5891 }
5892 static int dissect_maximumEntitledPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5893   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_maximumEntitledPriority);
5894 }
5895 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5896   return dissect_gsm_map_EMLPP_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_priority);
5897 }
5898
5899
5900 static const ber_sequence_t EMLPP_Info_sequence[] = {
5901   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maximumentitledPriority },
5902   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
5903   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5904   { 0, 0, 0, NULL }
5905 };
5906
5907 static int
5908 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_) {
5909   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5910                                    EMLPP_Info_sequence, hf_index, ett_gsm_map_EMLPP_Info);
5911
5912   return offset;
5913 }
5914 static int dissect_emlpp_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5915   return dissect_gsm_map_EMLPP_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_emlpp_Info);
5916 }
5917
5918
5919 static const value_string gsm_map_Ext_SS_Info_vals[] = {
5920   {   0, "forwardingInfo" },
5921   {   1, "callBarringInfo" },
5922   {   2, "cug-Info" },
5923   {   3, "ss-Data" },
5924   {   4, "emlpp-Info" },
5925   { 0, NULL }
5926 };
5927
5928 static const ber_choice_t Ext_SS_Info_choice[] = {
5929   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ext_forwardingInfo_impl },
5930   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_callBarringInfo_impl },
5931   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cug_Info_impl },
5932   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_ss_Data_impl },
5933   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_emlpp_Info_impl },
5934   { 0, 0, 0, 0, NULL }
5935 };
5936
5937 static int
5938 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_) {
5939   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5940                                  Ext_SS_Info_choice, hf_index, ett_gsm_map_Ext_SS_Info,
5941                                  NULL);
5942
5943   return offset;
5944 }
5945 static int dissect_Ext_SS_InfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5946   return dissect_gsm_map_Ext_SS_Info(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_SS_InfoList_item);
5947 }
5948
5949
5950 static const ber_sequence_t Ext_SS_InfoList_sequence_of[1] = {
5951   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Ext_SS_InfoList_item },
5952 };
5953
5954 static int
5955 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_) {
5956   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5957                                       Ext_SS_InfoList_sequence_of, hf_index, ett_gsm_map_Ext_SS_InfoList);
5958
5959   return offset;
5960 }
5961 static int dissect_provisionedSS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5962   return dissect_gsm_map_Ext_SS_InfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS);
5963 }
5964
5965
5966 static const ber_sequence_t ODB_Data_sequence[] = {
5967   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_odb_GeneralData },
5968   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_odb_HPLMN_Data },
5969   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5970   { 0, 0, 0, NULL }
5971 };
5972
5973 static int
5974 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_) {
5975   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5976                                    ODB_Data_sequence, hf_index, ett_gsm_map_ODB_Data);
5977
5978   return offset;
5979 }
5980 static int dissect_odb_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5981   return dissect_gsm_map_ODB_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
5982 }
5983 static int dissect_odb_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5984   return dissect_gsm_map_ODB_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
5985 }
5986 static int dissect_odb_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5987   return dissect_gsm_map_ODB_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_data);
5988 }
5989
5990
5991
5992 static int
5993 dissect_gsm_map_ZoneCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5994   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5995                                        NULL);
5996
5997   return offset;
5998 }
5999 static int dissect_regionalSubscriptionIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6000   return dissect_gsm_map_ZoneCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionIdentifier);
6001 }
6002 static int dissect_ZoneCodeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6003   return dissect_gsm_map_ZoneCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ZoneCodeList_item);
6004 }
6005
6006
6007 static const ber_sequence_t ZoneCodeList_sequence_of[1] = {
6008   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ZoneCodeList_item },
6009 };
6010
6011 static int
6012 dissect_gsm_map_ZoneCodeList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6013   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6014                                       ZoneCodeList_sequence_of, hf_index, ett_gsm_map_ZoneCodeList);
6015
6016   return offset;
6017 }
6018 static int dissect_regionalSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6019   return dissect_gsm_map_ZoneCodeList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData);
6020 }
6021
6022
6023
6024 static int
6025 dissect_gsm_map_GroupId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6026   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6027
6028   return offset;
6029 }
6030 static int dissect_groupId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6031   return dissect_gsm_map_GroupId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupId);
6032 }
6033 static int dissect_groupid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6034   return dissect_gsm_map_GroupId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupid);
6035 }
6036
6037
6038 static const ber_sequence_t VoiceBroadcastData_sequence[] = {
6039   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupid },
6040   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_broadcastInitEntitlement },
6041   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6042   { 0, 0, 0, NULL }
6043 };
6044
6045 static int
6046 dissect_gsm_map_VoiceBroadcastData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6047   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6048                                    VoiceBroadcastData_sequence, hf_index, ett_gsm_map_VoiceBroadcastData);
6049
6050   return offset;
6051 }
6052 static int dissect_VBSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6053   return dissect_gsm_map_VoiceBroadcastData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_VBSDataList_item);
6054 }
6055
6056
6057 static const ber_sequence_t VBSDataList_sequence_of[1] = {
6058   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_VBSDataList_item },
6059 };
6060
6061 static int
6062 dissect_gsm_map_VBSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6063   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6064                                       VBSDataList_sequence_of, hf_index, ett_gsm_map_VBSDataList);
6065
6066   return offset;
6067 }
6068 static int dissect_vbsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6069   return dissect_gsm_map_VBSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData);
6070 }
6071
6072
6073 static const ber_sequence_t VoiceGroupCallData_sequence[] = {
6074   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupId },
6075   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6076   { 0, 0, 0, NULL }
6077 };
6078
6079 static int
6080 dissect_gsm_map_VoiceGroupCallData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6081   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6082                                    VoiceGroupCallData_sequence, hf_index, ett_gsm_map_VoiceGroupCallData);
6083
6084   return offset;
6085 }
6086 static int dissect_VGCSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6087   return dissect_gsm_map_VoiceGroupCallData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_VGCSDataList_item);
6088 }
6089
6090
6091 static const ber_sequence_t VGCSDataList_sequence_of[1] = {
6092   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_VGCSDataList_item },
6093 };
6094
6095 static int
6096 dissect_gsm_map_VGCSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6097   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6098                                       VGCSDataList_sequence_of, hf_index, ett_gsm_map_VGCSDataList);
6099
6100   return offset;
6101 }
6102 static int dissect_vgcsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6103   return dissect_gsm_map_VGCSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData);
6104 }
6105
6106
6107 static const ber_sequence_t SS_EventList_sequence_of[1] = {
6108   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SS_EventList_item },
6109 };
6110
6111 static int
6112 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_) {
6113   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6114                                       SS_EventList_sequence_of, hf_index, ett_gsm_map_SS_EventList);
6115
6116   return offset;
6117 }
6118 static int dissect_ss_EventList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6119   return dissect_gsm_map_SS_EventList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList);
6120 }
6121
6122
6123 static const ber_sequence_t SS_CamelData_sequence[] = {
6124   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_EventList },
6125   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
6126   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6127   { 0, 0, 0, NULL }
6128 };
6129
6130 static int
6131 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_) {
6132   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6133                                    SS_CamelData_sequence, hf_index, ett_gsm_map_SS_CamelData);
6134
6135   return offset;
6136 }
6137 static int dissect_ss_CamelData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6138   return dissect_gsm_map_SS_CamelData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CamelData);
6139 }
6140
6141
6142 static const ber_sequence_t SS_CSI_sequence[] = {
6143   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_CamelData },
6144   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6145   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6146   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6147   { 0, 0, 0, NULL }
6148 };
6149
6150 static int
6151 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_) {
6152   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6153                                    SS_CSI_sequence, hf_index, ett_gsm_map_SS_CSI);
6154
6155   return offset;
6156 }
6157 static int dissect_ss_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6158   return dissect_gsm_map_SS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CSI);
6159 }
6160
6161
6162 static const value_string gsm_map_MatchType_vals[] = {
6163   {   0, "inhibiting" },
6164   {   1, "enabling" },
6165   { 0, NULL }
6166 };
6167
6168
6169 static int
6170 dissect_gsm_map_MatchType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6171   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6172                                   NULL);
6173
6174   return offset;
6175 }
6176 static int dissect_matchType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6177   return dissect_gsm_map_MatchType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_matchType);
6178 }
6179
6180
6181 static const ber_sequence_t DestinationNumberList_sequence_of[1] = {
6182   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_DestinationNumberList_item },
6183 };
6184
6185 static int
6186 dissect_gsm_map_DestinationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6187   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6188                                       DestinationNumberList_sequence_of, hf_index, ett_gsm_map_DestinationNumberList);
6189
6190   return offset;
6191 }
6192 static int dissect_destinationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6193   return dissect_gsm_map_DestinationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList);
6194 }
6195
6196
6197
6198 static int
6199 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_) {
6200   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6201                                   NULL);
6202
6203   return offset;
6204 }
6205 static int dissect_DestinationNumberLengthList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6206   return dissect_gsm_map_INTEGER_1_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DestinationNumberLengthList_item);
6207 }
6208
6209
6210 static const ber_sequence_t DestinationNumberLengthList_sequence_of[1] = {
6211   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_DestinationNumberLengthList_item },
6212 };
6213
6214 static int
6215 dissect_gsm_map_DestinationNumberLengthList(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                                       DestinationNumberLengthList_sequence_of, hf_index, ett_gsm_map_DestinationNumberLengthList);
6218
6219   return offset;
6220 }
6221 static int dissect_destinationNumberLengthList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6222   return dissect_gsm_map_DestinationNumberLengthList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList);
6223 }
6224
6225
6226 static const ber_sequence_t DestinationNumberCriteria_sequence[] = {
6227   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_matchType_impl },
6228   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberList_impl },
6229   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberLengthList_impl },
6230   { 0, 0, 0, NULL }
6231 };
6232
6233 static int
6234 dissect_gsm_map_DestinationNumberCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6235   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6236                                    DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_DestinationNumberCriteria);
6237
6238   return offset;
6239 }
6240 static int dissect_destinationNumberCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6241   return dissect_gsm_map_DestinationNumberCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberCriteria);
6242 }
6243
6244
6245 static const ber_sequence_t BasicServiceCriteria_sequence_of[1] = {
6246   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceCriteria_item },
6247 };
6248
6249 static int
6250 dissect_gsm_map_BasicServiceCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6251   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6252                                       BasicServiceCriteria_sequence_of, hf_index, ett_gsm_map_BasicServiceCriteria);
6253
6254   return offset;
6255 }
6256 static int dissect_basicServiceCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6257   return dissect_gsm_map_BasicServiceCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceCriteria);
6258 }
6259
6260
6261 static const value_string gsm_map_CallTypeCriteria_vals[] = {
6262   {   0, "forwarded" },
6263   {   1, "notForwarded" },
6264   { 0, NULL }
6265 };
6266
6267
6268 static int
6269 dissect_gsm_map_CallTypeCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6270   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6271                                   NULL);
6272
6273   return offset;
6274 }
6275 static int dissect_callTypeCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6276   return dissect_gsm_map_CallTypeCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTypeCriteria);
6277 }
6278
6279
6280
6281 static int
6282 dissect_gsm_map_CauseValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6283   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6284                                        NULL);
6285
6286   return offset;
6287 }
6288 static int dissect_T_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6289   return dissect_gsm_map_CauseValue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_CauseValueCriteria_item);
6290 }
6291 static int dissect_O_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6292   return dissect_gsm_map_CauseValue(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_CauseValueCriteria_item);
6293 }
6294
6295
6296 static const ber_sequence_t O_CauseValueCriteria_sequence_of[1] = {
6297   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_O_CauseValueCriteria_item },
6298 };
6299
6300 static int
6301 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_) {
6302   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6303                                       O_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_O_CauseValueCriteria);
6304
6305   return offset;
6306 }
6307 static int dissect_o_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6308   return dissect_gsm_map_O_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CauseValueCriteria);
6309 }
6310
6311
6312 static const ber_sequence_t O_BcsmCamelTDP_Criteria_sequence[] = {
6313   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
6314   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberCriteria_impl },
6315   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
6316   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTypeCriteria_impl },
6317   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CauseValueCriteria_impl },
6318   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6319   { 0, 0, 0, NULL }
6320 };
6321
6322 static int
6323 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_) {
6324   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6325                                    O_BcsmCamelTDP_Criteria_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDP_Criteria);
6326
6327   return offset;
6328 }
6329 static int dissect_O_BcsmCamelTDPCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6330   return dissect_gsm_map_O_BcsmCamelTDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDPCriteriaList_item);
6331 }
6332
6333
6334 static const ber_sequence_t O_BcsmCamelTDPCriteriaList_sequence_of[1] = {
6335   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDPCriteriaList_item },
6336 };
6337
6338 static int
6339 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_) {
6340   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6341                                       O_BcsmCamelTDPCriteriaList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDPCriteriaList);
6342
6343   return offset;
6344 }
6345 static int dissect_o_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6346   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDP_CriteriaList);
6347 }
6348 static int dissect_o_BcsmCamelTDPCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6349   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPCriteriaList);
6350 }
6351 static int dissect_o_IM_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6352   return dissect_gsm_map_O_BcsmCamelTDPCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList);
6353 }
6354
6355
6356
6357 static int
6358 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_) {
6359   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6360                                        NULL);
6361
6362   return offset;
6363 }
6364 static int dissect_eventMet_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6365   return dissect_gsm_map_MM_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventMet);
6366 }
6367 static int dissect_MobilityTriggers_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6368   return dissect_gsm_map_MM_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MobilityTriggers_item);
6369 }
6370
6371
6372 static const ber_sequence_t MobilityTriggers_sequence_of[1] = {
6373   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_MobilityTriggers_item },
6374 };
6375
6376 static int
6377 dissect_gsm_map_MobilityTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6378   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6379                                       MobilityTriggers_sequence_of, hf_index, ett_gsm_map_MobilityTriggers);
6380
6381   return offset;
6382 }
6383 static int dissect_mobilityTriggers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6384   return dissect_gsm_map_MobilityTriggers(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mobilityTriggers);
6385 }
6386
6387
6388 static const ber_sequence_t M_CSI_sequence[] = {
6389   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
6390   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6391   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
6392   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6393   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6394   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6395   { 0, 0, 0, NULL }
6396 };
6397
6398 static int
6399 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_) {
6400   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6401                                    M_CSI_sequence, hf_index, ett_gsm_map_M_CSI);
6402
6403   return offset;
6404 }
6405 static int dissect_m_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6406   return dissect_gsm_map_M_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_m_CSI);
6407 }
6408
6409
6410 static const value_string gsm_map_SMS_TriggerDetectionPoint_vals[] = {
6411   {   1, "sms-CollectedInfo" },
6412   {   2, "sms-DeliveryRequest" },
6413   { 0, NULL }
6414 };
6415
6416
6417 static int
6418 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_) {
6419   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6420                                   NULL);
6421
6422   return offset;
6423 }
6424 static int dissect_sms_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6425   return dissect_gsm_map_SMS_TriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
6426 }
6427 static int dissect_sms_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6428   return dissect_gsm_map_SMS_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
6429 }
6430
6431
6432 static const value_string gsm_map_DefaultSMS_Handling_vals[] = {
6433   {   0, "continueTransaction" },
6434   {   1, "releaseTransaction" },
6435   { 0, NULL }
6436 };
6437
6438
6439 static int
6440 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_) {
6441   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6442                                   NULL);
6443
6444   return offset;
6445 }
6446 static int dissect_defaultSMS_Handling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6447   return dissect_gsm_map_DefaultSMS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSMS_Handling);
6448 }
6449
6450
6451 static const ber_sequence_t SMS_CAMEL_TDP_Data_sequence[] = {
6452   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sms_TriggerDetectionPoint_impl },
6453   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
6454   { BER_CLASS_CON, 2, 0, dissect_gsmSCF_Address },
6455   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSMS_Handling_impl },
6456   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6457   { 0, 0, 0, NULL }
6458 };
6459
6460 static int
6461 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_) {
6462   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6463                                    SMS_CAMEL_TDP_Data_sequence, hf_index, ett_gsm_map_SMS_CAMEL_TDP_Data);
6464
6465   return offset;
6466 }
6467 static int dissect_SMS_CAMEL_TDP_DataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6468   return dissect_gsm_map_SMS_CAMEL_TDP_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SMS_CAMEL_TDP_DataList_item);
6469 }
6470
6471
6472 static const ber_sequence_t SMS_CAMEL_TDP_DataList_sequence_of[1] = {
6473   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SMS_CAMEL_TDP_DataList_item },
6474 };
6475
6476 static int
6477 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_) {
6478   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6479                                       SMS_CAMEL_TDP_DataList_sequence_of, hf_index, ett_gsm_map_SMS_CAMEL_TDP_DataList);
6480
6481   return offset;
6482 }
6483 static int dissect_sms_CAMEL_TDP_DataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6484   return dissect_gsm_map_SMS_CAMEL_TDP_DataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_CAMEL_TDP_DataList);
6485 }
6486
6487
6488 static const ber_sequence_t SMS_CSI_sequence[] = {
6489   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sms_CAMEL_TDP_DataList_impl },
6490   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6491   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6492   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6493   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6494   { 0, 0, 0, NULL }
6495 };
6496
6497 static int
6498 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_) {
6499   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6500                                    SMS_CSI_sequence, hf_index, ett_gsm_map_SMS_CSI);
6501
6502   return offset;
6503 }
6504 static int dissect_mo_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6505   return dissect_gsm_map_SMS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mo_sms_CSI);
6506 }
6507 static int dissect_mt_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6508   return dissect_gsm_map_SMS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_sms_CSI);
6509 }
6510
6511
6512 static const value_string gsm_map_T_BcsmTriggerDetectionPoint_vals[] = {
6513   {  12, "termAttemptAuthorized" },
6514   {  13, "tBusy" },
6515   {  14, "tNoAnswer" },
6516   { 0, NULL }
6517 };
6518
6519
6520 static int
6521 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_) {
6522   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6523                                   NULL);
6524
6525   return offset;
6526 }
6527 static int dissect_t_BCSM_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6528   return dissect_gsm_map_T_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_TriggerDetectionPoint);
6529 }
6530 static int dissect_t_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6531   return dissect_gsm_map_T_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmTriggerDetectionPoint);
6532 }
6533
6534
6535 static const ber_sequence_t T_BcsmCamelTDPData_sequence[] = {
6536   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BcsmTriggerDetectionPoint },
6537   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6538   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
6539   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
6540   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6541   { 0, 0, 0, NULL }
6542 };
6543
6544 static int
6545 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_) {
6546   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6547                                    T_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_T_BcsmCamelTDPData);
6548
6549   return offset;
6550 }
6551 static int dissect_T_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6552   return dissect_gsm_map_T_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_BcsmCamelTDPDataList_item);
6553 }
6554
6555
6556 static const ber_sequence_t T_BcsmCamelTDPDataList_sequence_of[1] = {
6557   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_T_BcsmCamelTDPDataList_item },
6558 };
6559
6560 static int
6561 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_) {
6562   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6563                                       T_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_T_BcsmCamelTDPDataList);
6564
6565   return offset;
6566 }
6567 static int dissect_t_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6568   return dissect_gsm_map_T_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmCamelTDPDataList);
6569 }
6570
6571
6572 static const ber_sequence_t T_CSI_sequence[] = {
6573   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
6574   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6575   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6576   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6577   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6578   { 0, 0, 0, NULL }
6579 };
6580
6581 static int
6582 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_) {
6583   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6584                                    T_CSI_sequence, hf_index, ett_gsm_map_T_CSI);
6585
6586   return offset;
6587 }
6588 static int dissect_vt_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6589   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_CSI);
6590 }
6591 static int dissect_t_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6592   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CSI);
6593 }
6594 static int dissect_vt_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6595   return dissect_gsm_map_T_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_CSI);
6596 }
6597
6598
6599 static const ber_sequence_t T_CauseValueCriteria_sequence_of[1] = {
6600   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_T_CauseValueCriteria_item },
6601 };
6602
6603 static int
6604 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_) {
6605   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6606                                       T_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_T_CauseValueCriteria);
6607
6608   return offset;
6609 }
6610 static int dissect_t_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6611   return dissect_gsm_map_T_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CauseValueCriteria);
6612 }
6613
6614
6615 static const ber_sequence_t T_BCSM_CAMEL_TDP_Criteria_sequence[] = {
6616   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_TriggerDetectionPoint },
6617   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
6618   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CauseValueCriteria_impl },
6619   { 0, 0, 0, NULL }
6620 };
6621
6622 static int
6623 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_) {
6624   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6625                                    T_BCSM_CAMEL_TDP_Criteria_sequence, hf_index, ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria);
6626
6627   return offset;
6628 }
6629 static int dissect_T_BCSM_CAMEL_TDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6630   return dissect_gsm_map_T_BCSM_CAMEL_TDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item);
6631 }
6632
6633
6634 static const ber_sequence_t T_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
6635   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_T_BCSM_CAMEL_TDP_CriteriaList_item },
6636 };
6637
6638 static int
6639 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_) {
6640   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6641                                       T_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList);
6642
6643   return offset;
6644 }
6645 static int dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6646   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList);
6647 }
6648 static int dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6649   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList);
6650 }
6651 static int dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6652   return dissect_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList);
6653 }
6654
6655
6656 static const ber_sequence_t DP_AnalysedInfoCriterium_sequence[] = {
6657   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dialledNumber },
6658   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
6659   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
6660   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_defaultCallHandling },
6661   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6662   { 0, 0, 0, NULL }
6663 };
6664
6665 static int
6666 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_) {
6667   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6668                                    DP_AnalysedInfoCriterium_sequence, hf_index, ett_gsm_map_DP_AnalysedInfoCriterium);
6669
6670   return offset;
6671 }
6672 static int dissect_DP_AnalysedInfoCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6673   return dissect_gsm_map_DP_AnalysedInfoCriterium(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_DP_AnalysedInfoCriteriaList_item);
6674 }
6675
6676
6677 static const ber_sequence_t DP_AnalysedInfoCriteriaList_sequence_of[1] = {
6678   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DP_AnalysedInfoCriteriaList_item },
6679 };
6680
6681 static int
6682 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_) {
6683   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6684                                       DP_AnalysedInfoCriteriaList_sequence_of, hf_index, ett_gsm_map_DP_AnalysedInfoCriteriaList);
6685
6686   return offset;
6687 }
6688 static int dissect_dp_AnalysedInfoCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6689   return dissect_gsm_map_DP_AnalysedInfoCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dp_AnalysedInfoCriteriaList);
6690 }
6691
6692
6693 static const ber_sequence_t D_CSI_sequence[] = {
6694   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dp_AnalysedInfoCriteriaList_impl },
6695   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
6696   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6697   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
6698   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
6699   { 0, 0, 0, NULL }
6700 };
6701
6702 static int
6703 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_) {
6704   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6705                                    D_CSI_sequence, hf_index, ett_gsm_map_D_CSI);
6706
6707   return offset;
6708 }
6709 static int dissect_d_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6710   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_CSI);
6711 }
6712 static int dissect_d_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6713   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_csi);
6714 }
6715 static int dissect_d_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6716   return dissect_gsm_map_D_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_IM_CSI);
6717 }
6718
6719
6720 static const value_string gsm_map_MT_SMS_TPDU_Type_vals[] = {
6721   {   0, "sms-DELIVER" },
6722   {   1, "sms-SUBMIT-REPORT" },
6723   {   2, "sms-STATUS-REPORT" },
6724   { 0, NULL }
6725 };
6726
6727
6728 static int
6729 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_) {
6730   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6731                                   NULL);
6732
6733   return offset;
6734 }
6735 static int dissect_TPDU_TypeCriterion_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6736   return dissect_gsm_map_MT_SMS_TPDU_Type(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_TPDU_TypeCriterion_item);
6737 }
6738
6739
6740 static const ber_sequence_t TPDU_TypeCriterion_sequence_of[1] = {
6741   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_TPDU_TypeCriterion_item },
6742 };
6743
6744 static int
6745 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_) {
6746   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6747                                       TPDU_TypeCriterion_sequence_of, hf_index, ett_gsm_map_TPDU_TypeCriterion);
6748
6749   return offset;
6750 }
6751 static int dissect_tpdu_TypeCriterion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6752   return dissect_gsm_map_TPDU_TypeCriterion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tpdu_TypeCriterion);
6753 }
6754
6755
6756 static const ber_sequence_t MT_smsCAMELTDP_Criteria_sequence[] = {
6757   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sms_TriggerDetectionPoint },
6758   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tpdu_TypeCriterion_impl },
6759   { 0, 0, 0, NULL }
6760 };
6761
6762 static int
6763 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_) {
6764   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6765                                    MT_smsCAMELTDP_Criteria_sequence, hf_index, ett_gsm_map_MT_smsCAMELTDP_Criteria);
6766
6767   return offset;
6768 }
6769 static int dissect_MT_smsCAMELTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6770   return dissect_gsm_map_MT_smsCAMELTDP_Criteria(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item);
6771 }
6772
6773
6774 static const ber_sequence_t MT_smsCAMELTDP_CriteriaList_sequence_of[1] = {
6775   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MT_smsCAMELTDP_CriteriaList_item },
6776 };
6777
6778 static int
6779 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_) {
6780   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6781                                       MT_smsCAMELTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_MT_smsCAMELTDP_CriteriaList);
6782
6783   return offset;
6784 }
6785 static int dissect_mt_smsCAMELTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6786   return dissect_gsm_map_MT_smsCAMELTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_smsCAMELTDP_CriteriaList);
6787 }
6788
6789
6790 static const ber_sequence_t VlrCamelSubscriptionInfo_sequence[] = {
6791   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
6792   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6793   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
6794   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
6795   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
6796   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
6797   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
6798   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
6799   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
6800   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
6801   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
6802   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
6803   { 0, 0, 0, NULL }
6804 };
6805
6806 static int
6807 dissect_gsm_map_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6808   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6809                                    VlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_VlrCamelSubscriptionInfo);
6810
6811   return offset;
6812 }
6813 static int dissect_vlrCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6814   return dissect_gsm_map_VlrCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlrCamelSubscriptionInfo);
6815 }
6816
6817
6818
6819 static int
6820 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_) {
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_naea_PreferredCIC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6827   return dissect_gsm_map_NAEA_CIC(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCIC);
6828 }
6829
6830
6831 static const ber_sequence_t NAEA_PreferredCI_sequence[] = {
6832   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_naea_PreferredCIC_impl },
6833   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6834   { 0, 0, 0, NULL }
6835 };
6836
6837 static int
6838 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_) {
6839   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6840                                    NAEA_PreferredCI_sequence, hf_index, ett_gsm_map_NAEA_PreferredCI);
6841
6842   return offset;
6843 }
6844 static int dissect_naea_PreferredCI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6845   return dissect_gsm_map_NAEA_PreferredCI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCI);
6846 }
6847
6848
6849
6850 static int
6851 dissect_gsm_map_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6852   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6853                                   NULL);
6854
6855   return offset;
6856 }
6857 static int dissect_pdp_ContextId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6858   return dissect_gsm_map_ContextId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextId);
6859 }
6860 static int dissect_ContextIdList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6861   return dissect_gsm_map_ContextId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ContextIdList_item);
6862 }
6863 static int dissect_pdp_ContextIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6864   return dissect_gsm_map_ContextId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextIdentifier);
6865 }
6866
6867
6868
6869 static int
6870 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_) {
6871 #line 432 "gsmmap.cnf"
6872         guint8 pdp_type_org;
6873         tvbuff_t        *parameter_tvb;
6874
6875
6876   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6877                                        &parameter_tvb);
6878
6879
6880  if (!parameter_tvb)
6881         return offset;
6882         proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE);
6883         pdp_type_org = tvb_get_guint8(parameter_tvb,1);
6884         switch (pdp_type_org){
6885                 case 0: /* ETSI */
6886                         proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE);
6887                         break;
6888                 case 1: /* IETF */
6889                         proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE);
6890                         break;
6891                 default:
6892                 break;
6893         }
6894
6895
6896
6897   return offset;
6898 }
6899 static int dissect_pdp_Type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6900   return dissect_gsm_map_PDP_Type(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Type);
6901 }
6902
6903
6904
6905 static int
6906 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_) {
6907   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6908                                        NULL);
6909
6910   return offset;
6911 }
6912 static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6913   return dissect_gsm_map_PDP_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Address);
6914 }
6915
6916
6917
6918 int
6919 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_) {
6920 #line 458 "gsmmap.cnf"
6921
6922         tvbuff_t        *parameter_tvb;
6923
6924   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6925                                        &parameter_tvb);
6926
6927
6928          if (!parameter_tvb)
6929                 return offset;
6930         de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
6931
6932
6933
6934   return offset;
6935 }
6936 static int dissect_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6937   return dissect_gsm_map_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Subscribed);
6938 }
6939
6940
6941
6942 static int
6943 dissect_gsm_map_APN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6944   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6945                                        NULL);
6946
6947   return offset;
6948 }
6949 static int dissect_apn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6950   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn);
6951 }
6952 static int dissect_apn_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6953   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_Subscribed);
6954 }
6955 static int dissect_apn_InUse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6956   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_InUse);
6957 }
6958 static int dissect_lcsAPN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6959   return dissect_gsm_map_APN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsAPN);
6960 }
6961
6962
6963
6964 int
6965 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_) {
6966 #line 472 "gsmmap.cnf"
6967
6968         tvbuff_t        *parameter_tvb;
6969
6970   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6971                                        &parameter_tvb);
6972
6973
6974         if (!parameter_tvb)
6975                 return offset;
6976         dissect_gsm_map_ext_qos_subscribed(tvb, pinfo, tree);
6977         
6978
6979
6980   return offset;
6981 }
6982 static int dissect_ext_QoS_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6983   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_QoS_Subscribed);
6984 }
6985 static int dissect_ext_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6986   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_qos_Subscribed);
6987 }
6988 static int dissect_qos_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6989   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Requested);
6990 }
6991 static int dissect_qos_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6992   return dissect_gsm_map_Ext_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Negotiated);
6993 }
6994
6995
6996
6997 static int
6998 dissect_gsm_map_ChargingCharacteristics(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6999   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7000                                        NULL);
7001
7002   return offset;
7003 }
7004 static int dissect_chargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7005   return dissect_gsm_map_ChargingCharacteristics(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristics);
7006 }
7007 static int dissect_pdp_ChargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7008   return dissect_gsm_map_ChargingCharacteristics(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ChargingCharacteristics);
7009 }
7010
7011
7012
7013 int
7014 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_) {
7015   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7016                                        NULL);
7017
7018   return offset;
7019 }
7020 static int dissect_ext2_QoS_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7021   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext2_QoS_Subscribed);
7022 }
7023 static int dissect_qos2_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7024   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Subscribed);
7025 }
7026 static int dissect_qos2_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7027   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Requested);
7028 }
7029 static int dissect_qos2_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7030   return dissect_gsm_map_Ext2_QoS_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Negotiated);
7031 }
7032
7033
7034 static const ber_sequence_t PDP_Context_sequence[] = {
7035   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pdp_ContextId },
7036   { BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
7037   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
7038   { BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
7039   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vplmnAddressAllowed_impl },
7040   { BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_apn_impl },
7041   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7042   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_QoS_Subscribed_impl },
7043   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ChargingCharacteristics_impl },
7044   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext2_QoS_Subscribed_impl },
7045   { 0, 0, 0, NULL }
7046 };
7047
7048 static int
7049 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_) {
7050   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7051                                    PDP_Context_sequence, hf_index, ett_gsm_map_PDP_Context);
7052
7053   return offset;
7054 }
7055 static int dissect_GPRSDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7056   return dissect_gsm_map_PDP_Context(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GPRSDataList_item);
7057 }
7058
7059
7060 static const ber_sequence_t GPRSDataList_sequence_of[1] = {
7061   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_GPRSDataList_item },
7062 };
7063
7064 static int
7065 dissect_gsm_map_GPRSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7066   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7067                                       GPRSDataList_sequence_of, hf_index, ett_gsm_map_GPRSDataList);
7068
7069   return offset;
7070 }
7071 static int dissect_gprsDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7072   return dissect_gsm_map_GPRSDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList);
7073 }
7074
7075
7076 static const ber_sequence_t GPRSSubscriptionData_sequence[] = {
7077   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
7078   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprsDataList_impl },
7079   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7080   { 0, 0, 0, NULL }
7081 };
7082
7083 static int
7084 dissect_gsm_map_GPRSSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7085   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7086                                    GPRSSubscriptionData_sequence, hf_index, ett_gsm_map_GPRSSubscriptionData);
7087
7088   return offset;
7089 }
7090 static int dissect_gprsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7091   return dissect_gsm_map_GPRSSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionData);
7092 }
7093
7094
7095 static const value_string gsm_map_NetworkAccessMode_vals[] = {
7096   {   0, "bothMSCAndSGSN" },
7097   {   1, "onlyMSC" },
7098   {   2, "onlySGSN" },
7099   { 0, NULL }
7100 };
7101
7102
7103 static int
7104 dissect_gsm_map_NetworkAccessMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7105   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7106                                   NULL);
7107
7108   return offset;
7109 }
7110 static int dissect_networkAccessMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7111   return dissect_gsm_map_NetworkAccessMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkAccessMode);
7112 }
7113
7114
7115 static const value_string gsm_map_LSAOnlyAccessIndicator_vals[] = {
7116   {   0, "accessOutsideLSAsAllowed" },
7117   {   1, "accessOutsideLSAsRestricted" },
7118   { 0, NULL }
7119 };
7120
7121
7122 static int
7123 dissect_gsm_map_LSAOnlyAccessIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7124   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7125                                   NULL);
7126
7127   return offset;
7128 }
7129 static int dissect_lsaOnlyAccessIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7130   return dissect_gsm_map_LSAOnlyAccessIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaOnlyAccessIndicator);
7131 }
7132
7133
7134
7135 int
7136 dissect_gsm_map_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7137   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7138                                        NULL);
7139
7140   return offset;
7141 }
7142 static int dissect_lsaIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7143   return dissect_gsm_map_LSAIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentity);
7144 }
7145 static int dissect_LSAIdentityList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7146   return dissect_gsm_map_LSAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LSAIdentityList_item);
7147 }
7148 static int dissect_selectedLSA_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7149   return dissect_gsm_map_LSAIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSA_Id);
7150 }
7151 static int dissect_selectedLSAIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7152   return dissect_gsm_map_LSAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSAIdentity);
7153 }
7154
7155
7156
7157 static int
7158 dissect_gsm_map_LSAAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7159   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7160                                        NULL);
7161
7162   return offset;
7163 }
7164 static int dissect_lsaAttributes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7165   return dissect_gsm_map_LSAAttributes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaAttributes);
7166 }
7167
7168
7169 static const ber_sequence_t LSAData_sequence[] = {
7170   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lsaIdentity_impl },
7171   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lsaAttributes_impl },
7172   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaActiveModeIndicator_impl },
7173   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7174   { 0, 0, 0, NULL }
7175 };
7176
7177 static int
7178 dissect_gsm_map_LSAData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7179   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7180                                    LSAData_sequence, hf_index, ett_gsm_map_LSAData);
7181
7182   return offset;
7183 }
7184 static int dissect_LSADataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7185   return dissect_gsm_map_LSAData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LSADataList_item);
7186 }
7187
7188
7189 static const ber_sequence_t LSADataList_sequence_of[1] = {
7190   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_LSADataList_item },
7191 };
7192
7193 static int
7194 dissect_gsm_map_LSADataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7195   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7196                                       LSADataList_sequence_of, hf_index, ett_gsm_map_LSADataList);
7197
7198   return offset;
7199 }
7200 static int dissect_lsaDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7201   return dissect_gsm_map_LSADataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList);
7202 }
7203
7204
7205 static const ber_sequence_t LSAInformation_sequence[] = {
7206   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
7207   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaOnlyAccessIndicator_impl },
7208   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaDataList_impl },
7209   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7210   { 0, 0, 0, NULL }
7211 };
7212
7213 static int
7214 dissect_gsm_map_LSAInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7215   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7216                                    LSAInformation_sequence, hf_index, ett_gsm_map_LSAInformation);
7217
7218   return offset;
7219 }
7220 static int dissect_lsaInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7221   return dissect_gsm_map_LSAInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformation);
7222 }
7223
7224
7225 static const ber_sequence_t GMLC_List_sequence_of[1] = {
7226   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_GMLC_List_item },
7227 };
7228
7229 static int
7230 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_) {
7231   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7232                                       GMLC_List_sequence_of, hf_index, ett_gsm_map_GMLC_List);
7233
7234   return offset;
7235 }
7236 static int dissect_gmlc_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7237   return dissect_gsm_map_GMLC_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List);
7238 }
7239
7240
7241 const value_string gsm_map_NotificationToMSUser_vals[] = {
7242   {   0, "notifyLocationAllowed" },
7243   {   1, "notifyAndVerify-LocationAllowedIfNoResponse" },
7244   {   2, "notifyAndVerify-LocationNotAllowedIfNoResponse" },
7245   {   3, "locationNotAllowed" },
7246   { 0, NULL }
7247 };
7248
7249
7250 int
7251 dissect_gsm_map_NotificationToMSUser(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7252   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7253                                   NULL);
7254
7255   return offset;
7256 }
7257 static int dissect_notificationToMSUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7258   return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToMSUser);
7259 }
7260
7261
7262 static const ber_sequence_t LCSClientExternalID_sequence[] = {
7263   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
7264   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7265   { 0, 0, 0, NULL }
7266 };
7267
7268 int
7269 dissect_gsm_map_LCSClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7270   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7271                                    LCSClientExternalID_sequence, hf_index, ett_gsm_map_LCSClientExternalID);
7272
7273   return offset;
7274 }
7275 static int dissect_clientIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7276   return dissect_gsm_map_LCSClientExternalID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_clientIdentity);
7277 }
7278 static int dissect_lcsClientExternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7279   return dissect_gsm_map_LCSClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientExternalID);
7280 }
7281
7282
7283 static const value_string gsm_map_GMLC_Restriction_vals[] = {
7284   {   0, "gmlc-List" },
7285   {   1, "home-Country" },
7286   { 0, NULL }
7287 };
7288
7289
7290 static int
7291 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_) {
7292   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7293                                   NULL);
7294
7295   return offset;
7296 }
7297 static int dissect_gmlc_Restriction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7298   return dissect_gsm_map_GMLC_Restriction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_Restriction);
7299 }
7300
7301
7302 static const ber_sequence_t ExternalClient_sequence[] = {
7303   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_clientIdentity },
7304   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
7305   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
7306   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7307   { 0, 0, 0, NULL }
7308 };
7309
7310 static int
7311 dissect_gsm_map_ExternalClient(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7312   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7313                                    ExternalClient_sequence, hf_index, ett_gsm_map_ExternalClient);
7314
7315   return offset;
7316 }
7317 static int dissect_ExternalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7318   return dissect_gsm_map_ExternalClient(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ExternalClientList_item);
7319 }
7320 static int dissect_Ext_ExternalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7321   return dissect_gsm_map_ExternalClient(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Ext_ExternalClientList_item);
7322 }
7323
7324
7325 static const ber_sequence_t ExternalClientList_sequence_of[1] = {
7326   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ExternalClientList_item },
7327 };
7328
7329 static int
7330 dissect_gsm_map_ExternalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7331   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7332                                       ExternalClientList_sequence_of, hf_index, ett_gsm_map_ExternalClientList);
7333
7334   return offset;
7335 }
7336 static int dissect_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7337   return dissect_gsm_map_ExternalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList);
7338 }
7339
7340
7341 static const value_string gsm_map_LCSClientInternalID_vals[] = {
7342   {   0, "broadcastService" },
7343   {   1, "o-andM-HPLMN" },
7344   {   2, "o-andM-VPLMN" },
7345   {   3, "anonymousLocation" },
7346   {   4, "targetMSsubscribedService" },
7347   { 0, NULL }
7348 };
7349
7350
7351 static int
7352 dissect_gsm_map_LCSClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7353   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7354                                   NULL);
7355
7356   return offset;
7357 }
7358 static int dissect_PLMNClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7359   return dissect_gsm_map_LCSClientInternalID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PLMNClientList_item);
7360 }
7361 static int dissect_lcsClientInternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7362   return dissect_gsm_map_LCSClientInternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientInternalID);
7363 }
7364
7365
7366 static const ber_sequence_t PLMNClientList_sequence_of[1] = {
7367   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_PLMNClientList_item },
7368 };
7369
7370 static int
7371 dissect_gsm_map_PLMNClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7372   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7373                                       PLMNClientList_sequence_of, hf_index, ett_gsm_map_PLMNClientList);
7374
7375   return offset;
7376 }
7377 static int dissect_plmnClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7378   return dissect_gsm_map_PLMNClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList);
7379 }
7380
7381
7382 static const ber_sequence_t Ext_ExternalClientList_sequence_of[1] = {
7383   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Ext_ExternalClientList_item },
7384 };
7385
7386 static int
7387 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_) {
7388   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7389                                       Ext_ExternalClientList_sequence_of, hf_index, ett_gsm_map_Ext_ExternalClientList);
7390
7391   return offset;
7392 }
7393 static int dissect_ext_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7394   return dissect_gsm_map_Ext_ExternalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_externalClientList);
7395 }
7396
7397
7398
7399 int
7400 dissect_gsm_map_LCSServiceTypeID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7401   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7402                                   NULL);
7403
7404   return offset;
7405 }
7406 static int dissect_serviceTypeIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7407   return dissect_gsm_map_LCSServiceTypeID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceTypeIdentity);
7408 }
7409 static int dissect_lcsServiceTypeID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7410   return dissect_gsm_map_LCSServiceTypeID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsServiceTypeID);
7411 }
7412
7413
7414 static const ber_sequence_t ServiceType_sequence[] = {
7415   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceTypeIdentity },
7416   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
7417   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
7418   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7419   { 0, 0, 0, NULL }
7420 };
7421
7422 static int
7423 dissect_gsm_map_ServiceType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7424   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7425                                    ServiceType_sequence, hf_index, ett_gsm_map_ServiceType);
7426
7427   return offset;
7428 }
7429 static int dissect_ServiceTypeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7430   return dissect_gsm_map_ServiceType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ServiceTypeList_item);
7431 }
7432
7433
7434 static const ber_sequence_t ServiceTypeList_sequence_of[1] = {
7435   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ServiceTypeList_item },
7436 };
7437
7438 static int
7439 dissect_gsm_map_ServiceTypeList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7440   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7441                                       ServiceTypeList_sequence_of, hf_index, ett_gsm_map_ServiceTypeList);
7442
7443   return offset;
7444 }
7445 static int dissect_serviceTypeList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7446   return dissect_gsm_map_ServiceTypeList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceTypeList);
7447 }
7448
7449
7450 static const ber_sequence_t LCS_PrivacyClass_sequence[] = {
7451   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7452   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_ss_Status },
7453   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
7454   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalClientList_impl },
7455   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_plmnClientList_impl },
7456   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7457   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_externalClientList_impl },
7458   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceTypeList_impl },
7459   { 0, 0, 0, NULL }
7460 };
7461
7462 static int
7463 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_) {
7464   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7465                                    LCS_PrivacyClass_sequence, hf_index, ett_gsm_map_LCS_PrivacyClass);
7466
7467   return offset;
7468 }
7469 static int dissect_LCS_PrivacyExceptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7470   return dissect_gsm_map_LCS_PrivacyClass(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_LCS_PrivacyExceptionList_item);
7471 }
7472
7473
7474 static const ber_sequence_t LCS_PrivacyExceptionList_sequence_of[1] = {
7475   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_LCS_PrivacyExceptionList_item },
7476 };
7477
7478 static int
7479 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_) {
7480   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7481                                       LCS_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_LCS_PrivacyExceptionList);
7482
7483   return offset;
7484 }
7485 static int dissect_lcs_PrivacyExceptionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7486   return dissect_gsm_map_LCS_PrivacyExceptionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList);
7487 }
7488 static int dissect_add_lcs_PrivacyExceptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7489   return dissect_gsm_map_LCS_PrivacyExceptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_add_lcs_PrivacyExceptionList);
7490 }
7491
7492
7493 static const ber_sequence_t MOLR_Class_sequence[] = {
7494   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7495   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_ss_Status },
7496   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7497   { 0, 0, 0, NULL }
7498 };
7499
7500 static int
7501 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_) {
7502   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7503                                    MOLR_Class_sequence, hf_index, ett_gsm_map_MOLR_Class);
7504
7505   return offset;
7506 }
7507 static int dissect_MOLR_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7508   return dissect_gsm_map_MOLR_Class(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MOLR_List_item);
7509 }
7510
7511
7512 static const ber_sequence_t MOLR_List_sequence_of[1] = {
7513   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MOLR_List_item },
7514 };
7515
7516 static int
7517 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_) {
7518   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7519                                       MOLR_List_sequence_of, hf_index, ett_gsm_map_MOLR_List);
7520
7521   return offset;
7522 }
7523 static int dissect_molr_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7524   return dissect_gsm_map_MOLR_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List);
7525 }
7526
7527
7528 static const ber_sequence_t LCSInformation_sequence[] = {
7529   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_List_impl },
7530   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyExceptionList_impl },
7531   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_molr_List_impl },
7532   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_add_lcs_PrivacyExceptionList },
7533   { 0, 0, 0, NULL }
7534 };
7535
7536 static int
7537 dissect_gsm_map_LCSInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7538   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7539                                    LCSInformation_sequence, hf_index, ett_gsm_map_LCSInformation);
7540
7541   return offset;
7542 }
7543 static int dissect_lcsInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7544   return dissect_gsm_map_LCSInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsInformation);
7545 }
7546
7547
7548
7549 static int
7550 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_) {
7551   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7552                                   NULL);
7553
7554   return offset;
7555 }
7556 static int dissect_istAlertTimer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7557   return dissect_gsm_map_IST_AlertTimerValue(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istAlertTimer);
7558 }
7559
7560
7561
7562 static int
7563 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_) {
7564   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7565                                   NULL);
7566
7567   return offset;
7568 }
7569 static int dissect_nbrSB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7570   return dissect_gsm_map_MaxMC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrSB);
7571 }
7572
7573
7574
7575 static int
7576 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_) {
7577   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7578                                   NULL);
7579
7580   return offset;
7581 }
7582 static int dissect_nbrUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7583   return dissect_gsm_map_MC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrUser);
7584 }
7585 static int dissect_nbrSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7586   return dissect_gsm_map_MC_Bearers(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nbrSN);
7587 }
7588
7589
7590 static const ber_sequence_t MC_SS_Info_sequence[] = {
7591   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
7592   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
7593   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nbrSB_impl },
7594   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
7595   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7596   { 0, 0, 0, NULL }
7597 };
7598
7599 static int
7600 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_) {
7601   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7602                                    MC_SS_Info_sequence, hf_index, ett_gsm_map_MC_SS_Info);
7603
7604   return offset;
7605 }
7606 static int dissect_mc_SS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7607   return dissect_gsm_map_MC_SS_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mc_SS_Info);
7608 }
7609
7610
7611
7612 static int
7613 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_) {
7614   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7615                                        NULL);
7616
7617   return offset;
7618 }
7619 static int dissect_cs_AllocationRetentionPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7620   return dissect_gsm_map_CS_AllocationRetentionPriority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_AllocationRetentionPriority);
7621 }
7622
7623
7624 static const value_string gsm_map_GPRS_TriggerDetectionPoint_vals[] = {
7625   {   1, "attach" },
7626   {   2, "attachChangeOfPosition" },
7627   {  11, "pdp-ContextEstablishment" },
7628   {  12, "pdp-ContextEstablishmentAcknowledgement" },
7629   {  14, "pdp-ContextChangeOfPosition" },
7630   { 0, NULL }
7631 };
7632
7633
7634 static int
7635 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_) {
7636   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7637                                   NULL);
7638
7639   return offset;
7640 }
7641 static int dissect_gprs_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7642   return dissect_gsm_map_GPRS_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_TriggerDetectionPoint);
7643 }
7644
7645
7646 static const value_string gsm_map_DefaultGPRS_Handling_vals[] = {
7647   {   0, "continueTransaction" },
7648   {   1, "releaseTransaction" },
7649   { 0, NULL }
7650 };
7651
7652
7653 static int
7654 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_) {
7655   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7656                                   NULL);
7657
7658   return offset;
7659 }
7660 static int dissect_defaultSessionHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7661   return dissect_gsm_map_DefaultGPRS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSessionHandling);
7662 }
7663
7664
7665 static const ber_sequence_t GPRS_CamelTDPData_sequence[] = {
7666   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprs_TriggerDetectionPoint_impl },
7667   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
7668   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
7669   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSessionHandling_impl },
7670   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7671   { 0, 0, 0, NULL }
7672 };
7673
7674 static int
7675 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_) {
7676   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7677                                    GPRS_CamelTDPData_sequence, hf_index, ett_gsm_map_GPRS_CamelTDPData);
7678
7679   return offset;
7680 }
7681 static int dissect_GPRS_CamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7682   return dissect_gsm_map_GPRS_CamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_GPRS_CamelTDPDataList_item);
7683 }
7684
7685
7686 static const ber_sequence_t GPRS_CamelTDPDataList_sequence_of[1] = {
7687   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_GPRS_CamelTDPDataList_item },
7688 };
7689
7690 static int
7691 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_) {
7692   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7693                                       GPRS_CamelTDPDataList_sequence_of, hf_index, ett_gsm_map_GPRS_CamelTDPDataList);
7694
7695   return offset;
7696 }
7697 static int dissect_gprs_CamelTDPDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7698   return dissect_gsm_map_GPRS_CamelTDPDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CamelTDPDataList);
7699 }
7700
7701
7702 static const ber_sequence_t GPRS_CSI_sequence[] = {
7703   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CamelTDPDataList_impl },
7704   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
7705   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7706   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
7707   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
7708   { 0, 0, 0, NULL }
7709 };
7710
7711 static int
7712 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_) {
7713   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7714                                    GPRS_CSI_sequence, hf_index, ett_gsm_map_GPRS_CSI);
7715
7716   return offset;
7717 }
7718 static int dissect_gprs_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7719   return dissect_gsm_map_GPRS_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CSI);
7720 }
7721
7722
7723 static const ber_sequence_t MG_CSI_sequence[] = {
7724   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
7725   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
7726   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
7727   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7728   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
7729   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
7730   { 0, 0, 0, NULL }
7731 };
7732
7733 static int
7734 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_) {
7735   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7736                                    MG_CSI_sequence, hf_index, ett_gsm_map_MG_CSI);
7737
7738   return offset;
7739 }
7740 static int dissect_mg_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7741   return dissect_gsm_map_MG_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mg_csi);
7742 }
7743
7744
7745 static const ber_sequence_t SGSN_CAMEL_SubscriptionInfo_sequence[] = {
7746   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
7747   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
7748   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7749   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
7750   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
7751   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
7752   { 0, 0, 0, NULL }
7753 };
7754
7755 static int
7756 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_) {
7757   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7758                                    SGSN_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_SGSN_CAMEL_SubscriptionInfo);
7759
7760   return offset;
7761 }
7762 static int dissect_sgsn_CAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7763   return dissect_gsm_map_SGSN_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_CAMEL_SubscriptionInfo);
7764 }
7765
7766
7767 static const asn_namedbit AccessRestrictionData_bits[] = {
7768   {  0, &hf_gsm_map_AccessRestrictionData_utranNotAllowed, -1, -1, "utranNotAllowed", NULL },
7769   {  1, &hf_gsm_map_AccessRestrictionData_geranNotAllowed, -1, -1, "geranNotAllowed", NULL },
7770   { 0, NULL, 0, 0, NULL, NULL }
7771 };
7772
7773 static int
7774 dissect_gsm_map_AccessRestrictionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7775   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7776                                     AccessRestrictionData_bits, hf_index, ett_gsm_map_AccessRestrictionData,
7777                                     NULL);
7778
7779   return offset;
7780 }
7781 static int dissect_accessRestrictionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7782   return dissect_gsm_map_AccessRestrictionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_accessRestrictionData);
7783 }
7784
7785
7786 static const ber_sequence_t InsertSubscriberDataArg_sequence[] = {
7787   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7788   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
7789   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_category_impl },
7790   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStatus_impl },
7791   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerserviceList_impl },
7792   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
7793   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_provisionedSS_impl },
7794   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Data_impl },
7795   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
7796   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionData_impl },
7797   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsSubscriptionData_impl },
7798   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsSubscriptionData_impl },
7799   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlrCamelSubscriptionInfo_impl },
7800   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7801   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
7802   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSubscriptionData_impl },
7803   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl },
7804   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkAccessMode_impl },
7805   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaInformation_impl },
7806   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmu_Indicator_impl },
7807   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsInformation_impl },
7808   { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
7809   { BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_superChargerSupportedInHLR_impl },
7810   { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mc_SS_Info_impl },
7811   { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_AllocationRetentionPriority_impl },
7812   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_CAMEL_SubscriptionInfo_impl },
7813   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
7814   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_accessRestrictionData_impl },
7815   { 0, 0, 0, NULL }
7816 };
7817
7818 static int
7819 dissect_gsm_map_InsertSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7820   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7821                                    InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_InsertSubscriberDataArg);
7822
7823   return offset;
7824 }
7825
7826
7827 static const ber_sequence_t SS_List_sequence_of[1] = {
7828   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_SS_List_item },
7829 };
7830
7831 static int
7832 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_) {
7833   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7834                                       SS_List_sequence_of, hf_index, ett_gsm_map_SS_List);
7835
7836   return offset;
7837 }
7838 static int dissect_ss_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7839   return dissect_gsm_map_SS_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List);
7840 }
7841 static int dissect_ss_List2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7842   return dissect_gsm_map_SS_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List2);
7843 }
7844
7845
7846 static const value_string gsm_map_RegionalSubscriptionResponse_vals[] = {
7847   {   0, "networkNodeAreaRestricted" },
7848   {   1, "tooManyZoneCodes" },
7849   {   2, "zoneCodesConflict" },
7850   {   3, "regionalSubscNotSupported" },
7851   { 0, NULL }
7852 };
7853
7854
7855 static int
7856 dissect_gsm_map_RegionalSubscriptionResponse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7857   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7858                                   NULL);
7859
7860   return offset;
7861 }
7862 static int dissect_regionalSubscriptionResponse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7863   return dissect_gsm_map_RegionalSubscriptionResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionResponse);
7864 }
7865
7866
7867 static const ber_sequence_t InsertSubscriberDataRes_sequence[] = {
7868   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
7869   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerServiceList_impl },
7870   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
7871   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_GeneralData_impl },
7872   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
7873   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
7874   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7875   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
7876   { 0, 0, 0, NULL }
7877 };
7878
7879 static int
7880 dissect_gsm_map_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7881   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7882                                    InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_InsertSubscriberDataRes);
7883
7884   return offset;
7885 }
7886
7887
7888 static const ber_sequence_t BasicServiceList_sequence_of[1] = {
7889   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceList_item },
7890 };
7891
7892 static int
7893 dissect_gsm_map_BasicServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7894   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7895                                       BasicServiceList_sequence_of, hf_index, ett_gsm_map_BasicServiceList);
7896
7897   return offset;
7898 }
7899 static int dissect_basicServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7900   return dissect_gsm_map_BasicServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceList);
7901 }
7902
7903
7904 static const ber_sequence_t ContextIdList_sequence_of[1] = {
7905   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_ContextIdList_item },
7906 };
7907
7908 static int
7909 dissect_gsm_map_ContextIdList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7910   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7911                                       ContextIdList_sequence_of, hf_index, ett_gsm_map_ContextIdList);
7912
7913   return offset;
7914 }
7915 static int dissect_contextIdList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7916   return dissect_gsm_map_ContextIdList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList);
7917 }
7918
7919
7920 static const value_string gsm_map_GPRSSubscriptionDataWithdraw_vals[] = {
7921   {   0, "allGPRSData" },
7922   {   1, "contextIdList" },
7923   { 0, NULL }
7924 };
7925
7926 static const ber_choice_t GPRSSubscriptionDataWithdraw_choice[] = {
7927   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allGPRSData },
7928   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextIdList },
7929   { 0, 0, 0, 0, NULL }
7930 };
7931
7932 static int
7933 dissect_gsm_map_GPRSSubscriptionDataWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7934   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7935                                  GPRSSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_GPRSSubscriptionDataWithdraw,
7936                                  NULL);
7937
7938   return offset;
7939 }
7940 static int dissect_gprsSubscriptionDataWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7941   return dissect_gsm_map_GPRSSubscriptionDataWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionDataWithdraw);
7942 }
7943
7944
7945 static const ber_sequence_t LSAIdentityList_sequence_of[1] = {
7946   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_LSAIdentityList_item },
7947 };
7948
7949 static int
7950 dissect_gsm_map_LSAIdentityList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7951   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7952                                       LSAIdentityList_sequence_of, hf_index, ett_gsm_map_LSAIdentityList);
7953
7954   return offset;
7955 }
7956 static int dissect_lsaIdentityList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7957   return dissect_gsm_map_LSAIdentityList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList);
7958 }
7959
7960
7961 static const value_string gsm_map_LSAInformationWithdraw_vals[] = {
7962   {   0, "allLSAData" },
7963   {   1, "lsaIdentityList" },
7964   { 0, NULL }
7965 };
7966
7967 static const ber_choice_t LSAInformationWithdraw_choice[] = {
7968   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allLSAData },
7969   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList },
7970   { 0, 0, 0, 0, NULL }
7971 };
7972
7973 static int
7974 dissect_gsm_map_LSAInformationWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7975   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7976                                  LSAInformationWithdraw_choice, hf_index, ett_gsm_map_LSAInformationWithdraw,
7977                                  NULL);
7978
7979   return offset;
7980 }
7981 static int dissect_lsaInformationWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7982   return dissect_gsm_map_LSAInformationWithdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformationWithdraw);
7983 }
7984
7985
7986 static const asn_namedbit SpecificCSI_Withdraw_bits[] = {
7987   {  0, &hf_gsm_map_SpecificCSI_Withdraw_o_csi, -1, -1, "o-csi", NULL },
7988   {  1, &hf_gsm_map_SpecificCSI_Withdraw_ss_csi, -1, -1, "ss-csi", NULL },
7989   {  2, &hf_gsm_map_SpecificCSI_Withdraw_tif_csi, -1, -1, "tif-csi", NULL },
7990   {  3, &hf_gsm_map_SpecificCSI_Withdraw_d_csi, -1, -1, "d-csi", NULL },
7991   {  4, &hf_gsm_map_SpecificCSI_Withdraw_vt_csi, -1, -1, "vt-csi", NULL },
7992   {  5, &hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi, -1, -1, "mo-sms-csi", NULL },
7993   {  6, &hf_gsm_map_SpecificCSI_Withdraw_m_csi, -1, -1, "m-csi", NULL },
7994   {  7, &hf_gsm_map_SpecificCSI_Withdraw_gprs_csi, -1, -1, "gprs-csi", NULL },
7995   {  8, &hf_gsm_map_SpecificCSI_Withdraw_t_csi, -1, -1, "t-csi", NULL },
7996   {  9, &hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
7997   { 10, &hf_gsm_map_SpecificCSI_Withdraw_mg_csi, -1, -1, "mg-csi", NULL },
7998   { 11, &hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI, -1, -1, "o-IM-CSI", NULL },
7999   { 12, &hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI, -1, -1, "d-IM-CSI", NULL },
8000   { 13, &hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI, -1, -1, "vt-IM-CSI", NULL },
8001   { 0, NULL, 0, 0, NULL, NULL }
8002 };
8003
8004 static int
8005 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_) {
8006   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8007                                     SpecificCSI_Withdraw_bits, hf_index, ett_gsm_map_SpecificCSI_Withdraw,
8008                                     NULL);
8009
8010   return offset;
8011 }
8012 static int dissect_specificCSI_Withdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8013   return dissect_gsm_map_SpecificCSI_Withdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSI_Withdraw);
8014 }
8015 static int dissect_specificCSIDeletedList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8016   return dissect_gsm_map_SpecificCSI_Withdraw(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSIDeletedList);
8017 }
8018
8019
8020 static const ber_sequence_t DeleteSubscriberDataArg_sequence[] = {
8021   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8022   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceList_impl },
8023   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
8024   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
8025   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionIdentifier_impl },
8026   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsGroupIndication_impl },
8027   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsGroupIndication_impl },
8028   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelSubscriptionInfoWithdraw_impl },
8029   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8030   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprsSubscriptionDataWithdraw_impl },
8031   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl },
8032   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_lsaInformationWithdraw_impl },
8033   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_ListWithdraw_impl },
8034   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_istInformationWithdraw },
8035   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSI_Withdraw_impl },
8036   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristicsWithdraw_impl },
8037   { 0, 0, 0, NULL }
8038 };
8039
8040 static int
8041 dissect_gsm_map_DeleteSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8042   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8043                                    DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataArg);
8044
8045   return offset;
8046 }
8047
8048
8049 static const ber_sequence_t DeleteSubscriberDataRes_sequence[] = {
8050   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
8051   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8052   { 0, 0, 0, NULL }
8053 };
8054
8055 static int
8056 dissect_gsm_map_DeleteSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8057   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8058                                    DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataRes);
8059
8060   return offset;
8061 }
8062
8063
8064
8065 int
8066 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_) {
8067 #line 268 "gsmmap.cnf"
8068
8069  tvbuff_t       *parameter_tvb;
8070  guint8         octet;
8071
8072   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8073                                        &parameter_tvb);
8074
8075
8076  if (!parameter_tvb)
8077         return offset;
8078
8079  octet = tvb_get_guint8(parameter_tvb,0);
8080
8081  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
8082  if ((octet & 0x01)== 1)        
8083         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
8084                                                                                 
8085  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
8086  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
8087  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
8088
8089
8090
8091
8092   return offset;
8093 }
8094 static int dissect_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8095   return dissect_gsm_map_SS_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
8096 }
8097 static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8098   return dissect_gsm_map_SS_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
8099 }
8100
8101
8102
8103 static int
8104 dissect_gsm_map_BearerServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8105   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8106                                        NULL);
8107
8108   return offset;
8109 }
8110 static int dissect_bearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8111   return dissect_gsm_map_BearerServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerService);
8112 }
8113
8114
8115
8116 static int
8117 dissect_gsm_map_TeleserviceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8118   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8119                                        NULL);
8120
8121   return offset;
8122 }
8123 static int dissect_teleservice_code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8124   return dissect_gsm_map_TeleserviceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice_code);
8125 }
8126
8127
8128 static const value_string gsm_map_BasicServiceCode_vals[] = {
8129   {   2, "bearerService" },
8130   {   3, "teleservice" },
8131   { 0, NULL }
8132 };
8133
8134 static const ber_choice_t BasicServiceCode_choice[] = {
8135   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerService_impl },
8136   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_code_impl },
8137   { 0, 0, 0, 0, NULL }
8138 };
8139
8140 static int
8141 dissect_gsm_map_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8142   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8143                                  BasicServiceCode_choice, hf_index, ett_gsm_map_BasicServiceCode,
8144                                  NULL);
8145
8146   return offset;
8147 }
8148 static int dissect_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8149   return dissect_gsm_map_BasicServiceCode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicService);
8150 }
8151 static int dissect_basicServiceGroup_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8152   return dissect_gsm_map_BasicServiceCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup);
8153 }
8154
8155
8156 static const ber_sequence_t CallBarringFeature_sequence[] = {
8157   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
8158   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
8159   { 0, 0, 0, NULL }
8160 };
8161
8162 static int
8163 dissect_gsm_map_CallBarringFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8164   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8165                                    CallBarringFeature_sequence, hf_index, ett_gsm_map_CallBarringFeature);
8166
8167   return offset;
8168 }
8169 static int dissect_CallBarringFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8170   return dissect_gsm_map_CallBarringFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CallBarringFeatureList_item);
8171 }
8172
8173
8174 static const ber_sequence_t CallBarringFeatureList_sequence_of[1] = {
8175   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CallBarringFeatureList_item },
8176 };
8177
8178 static int
8179 dissect_gsm_map_CallBarringFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8180   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8181                                       CallBarringFeatureList_sequence_of, hf_index, ett_gsm_map_CallBarringFeatureList);
8182
8183   return offset;
8184 }
8185 static int dissect_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8186   return dissect_gsm_map_CallBarringFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringFeatureList);
8187 }
8188
8189
8190
8191 static int
8192 dissect_gsm_map_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8193   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8194                                        NULL);
8195
8196 #line 415 "gsmmap.cnf"
8197
8198         proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
8199         proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
8200         proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
8201         proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
8202
8203   return offset;
8204 }
8205 static int dissect_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8206   return dissect_gsm_map_ForwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingOptions);
8207 }
8208
8209
8210
8211 static int
8212 dissect_gsm_map_NoReplyConditionTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8213   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8214                                   NULL);
8215
8216   return offset;
8217 }
8218 static int dissect_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8219   return dissect_gsm_map_NoReplyConditionTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noReplyConditionTime);
8220 }
8221
8222
8223 static const ber_sequence_t ForwardingFeature_sequence[] = {
8224   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
8225   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
8226   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
8227   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
8228   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
8229   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
8230   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
8231   { 0, 0, 0, NULL }
8232 };
8233
8234 static int
8235 dissect_gsm_map_ForwardingFeature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8236   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8237                                    ForwardingFeature_sequence, hf_index, ett_gsm_map_ForwardingFeature);
8238
8239   return offset;
8240 }
8241 static int dissect_ForwardingFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8242   return dissect_gsm_map_ForwardingFeature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ForwardingFeatureList_item);
8243 }
8244
8245
8246 static const ber_sequence_t ForwardingFeatureList_sequence_of[1] = {
8247   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ForwardingFeatureList_item },
8248 };
8249
8250 static int
8251 dissect_gsm_map_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8252   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8253                                       ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_ForwardingFeatureList);
8254
8255   return offset;
8256 }
8257 static int dissect_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8258   return dissect_gsm_map_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
8259 }
8260 static int dissect_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8261   return dissect_gsm_map_ForwardingFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
8262 }
8263
8264
8265
8266 static int
8267 dissect_gsm_map_LongForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8268   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8269                                        NULL);
8270
8271   return offset;
8272 }
8273
8274
8275 static const ber_sequence_t ForwardingInfo_sequence[] = {
8276   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
8277   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList },
8278   { 0, 0, 0, NULL }
8279 };
8280
8281 static int
8282 dissect_gsm_map_ForwardingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8283   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8284                                    ForwardingInfo_sequence, hf_index, ett_gsm_map_ForwardingInfo);
8285
8286   return offset;
8287 }
8288 static int dissect_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8289   return dissect_gsm_map_ForwardingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfo);
8290 }
8291
8292
8293 static const ber_sequence_t CallBarringInfo_sequence[] = {
8294   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
8295   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList },
8296   { 0, 0, 0, NULL }
8297 };
8298
8299 static int
8300 dissect_gsm_map_CallBarringInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8301   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8302                                    CallBarringInfo_sequence, hf_index, ett_gsm_map_CallBarringInfo);
8303
8304   return offset;
8305 }
8306 static int dissect_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8307   return dissect_gsm_map_CallBarringInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfo);
8308 }
8309
8310
8311
8312 static int
8313 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_) {
8314   offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, pinfo, tree, hf_index);
8315
8316   return offset;
8317 }
8318 static int dissect_HLR_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8319   return dissect_gsm_map_HLR_Id(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_HLR_List_item);
8320 }
8321
8322
8323 static const ber_sequence_t HLR_List_sequence_of[1] = {
8324   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_HLR_List_item },
8325 };
8326
8327 static int
8328 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_) {
8329   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8330                                       HLR_List_sequence_of, hf_index, ett_gsm_map_HLR_List);
8331
8332   return offset;
8333 }
8334 static int dissect_hlr_List(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8335   return dissect_gsm_map_HLR_List(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List);
8336 }
8337
8338
8339 static const ber_sequence_t ResetArg_sequence[] = {
8340   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
8341   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_hlr_List },
8342   { 0, 0, 0, NULL }
8343 };
8344
8345 static int
8346 dissect_gsm_map_ResetArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8347   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8348                                    ResetArg_sequence, hf_index, ett_gsm_map_ResetArg);
8349
8350   return offset;
8351 }
8352
8353
8354
8355 static int
8356 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_) {
8357   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8358                                        NULL);
8359
8360   return offset;
8361 }
8362
8363
8364 static const ber_sequence_t RestoreDataArg_sequence[] = {
8365   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
8366   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
8367   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8368   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
8369   { 0, 0, 0, NULL }
8370 };
8371
8372 static int
8373 dissect_gsm_map_RestoreDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8374   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8375                                    RestoreDataArg_sequence, hf_index, ett_gsm_map_RestoreDataArg);
8376
8377   return offset;
8378 }
8379
8380
8381 static const ber_sequence_t RestoreDataRes_sequence[] = {
8382   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
8383   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msNotReachable },
8384   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8385   { 0, 0, 0, NULL }
8386 };
8387
8388 static int
8389 dissect_gsm_map_RestoreDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8390   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8391                                    RestoreDataRes_sequence, hf_index, ett_gsm_map_RestoreDataRes);
8392
8393   return offset;
8394 }
8395
8396
8397
8398 static int
8399 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_) {
8400   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8401                                        NULL);
8402
8403   return offset;
8404 }
8405 static int dissect_traceReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8406   return dissect_gsm_map_OCTET_STRING_SIZE_1_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceReference);
8407 }
8408
8409
8410
8411 static int
8412 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_) {
8413   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8414                                   NULL);
8415
8416   return offset;
8417 }
8418 static int dissect_traceType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8419   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceType);
8420 }
8421
8422
8423
8424 static int
8425 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_) {
8426   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8427                                        NULL);
8428
8429   return offset;
8430 }
8431 static int dissect_omc_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8432   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_omc_Id);
8433 }
8434 static int dissect_ss_EventSpecification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8435   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification_item);
8436 }
8437
8438
8439 static const ber_sequence_t ActivateTraceModeArg_sequence[] = {
8440   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8441   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
8442   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_traceType_impl },
8443   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_omc_Id_impl },
8444   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8445   { 0, 0, 0, NULL }
8446 };
8447
8448 static int
8449 dissect_gsm_map_ActivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8450   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8451                                    ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_ActivateTraceModeArg);
8452
8453   return offset;
8454 }
8455
8456
8457 static const ber_sequence_t ActivateTraceModeRes_sequence[] = {
8458   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8459   { 0, 0, 0, NULL }
8460 };
8461
8462 static int
8463 dissect_gsm_map_ActivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8464   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8465                                    ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_ActivateTraceModeRes);
8466
8467   return offset;
8468 }
8469
8470
8471 static const ber_sequence_t DeactivateTraceModeArg_sequence[] = {
8472   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
8473   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
8474   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8475   { 0, 0, 0, NULL }
8476 };
8477
8478 static int
8479 dissect_gsm_map_DeactivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8480   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8481                                    DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_DeactivateTraceModeArg);
8482
8483   return offset;
8484 }
8485
8486
8487 static const ber_sequence_t DeactivateTraceModeRes_sequence[] = {
8488   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8489   { 0, 0, 0, NULL }
8490 };
8491
8492 static int
8493 dissect_gsm_map_DeactivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8494   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8495                                    DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_DeactivateTraceModeRes);
8496
8497   return offset;
8498 }
8499
8500
8501 static const ber_sequence_t CUG_CheckInfo_sequence[] = {
8502   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
8503   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_OutgoingAccess },
8504   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8505   { 0, 0, 0, NULL }
8506 };
8507
8508 static int
8509 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_) {
8510   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8511                                    CUG_CheckInfo_sequence, hf_index, ett_gsm_map_CUG_CheckInfo);
8512
8513   return offset;
8514 }
8515 static int dissect_cug_CheckInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8516   return dissect_gsm_map_CUG_CheckInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_CheckInfo);
8517 }
8518
8519
8520
8521 static int
8522 dissect_gsm_map_NumberOfForwarding(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8523   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8524                                   NULL);
8525
8526   return offset;
8527 }
8528 static int dissect_numberOfForwarding_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8529   return dissect_gsm_map_NumberOfForwarding(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfForwarding);
8530 }
8531
8532
8533 static const value_string gsm_map_InterrogationType_vals[] = {
8534   {   0, "basicCall" },
8535   {   1, "forwarding" },
8536   { 0, NULL }
8537 };
8538
8539
8540 static int
8541 dissect_gsm_map_InterrogationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8542   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8543                                   NULL);
8544
8545   return offset;
8546 }
8547 static int dissect_interrogationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8548   return dissect_gsm_map_InterrogationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_interrogationType);
8549 }
8550
8551
8552
8553 static int
8554 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_) {
8555   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8556                                   NULL);
8557
8558   return offset;
8559 }
8560 static int dissect_or_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8561   return dissect_gsm_map_OR_Phase(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Capability);
8562 }
8563
8564
8565
8566 static int
8567 dissect_gsm_map_CallReferenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8568   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8569                                        NULL);
8570
8571   return offset;
8572 }
8573 static int dissect_callReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8574   return dissect_gsm_map_CallReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReferenceNumber);
8575 }
8576
8577
8578 static const value_string gsm_map_ForwardingReason_vals[] = {
8579   {   0, "notReachable" },
8580   {   1, "busy" },
8581   {   2, "noReply" },
8582   { 0, NULL }
8583 };
8584
8585
8586 static int
8587 dissect_gsm_map_ForwardingReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8588   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8589                                   NULL);
8590
8591   return offset;
8592 }
8593 static int dissect_forwardingReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8594   return dissect_gsm_map_ForwardingReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingReason);
8595 }
8596
8597
8598 static const ber_sequence_t ExternalSignalInfo_sequence[] = {
8599   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
8600   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
8601   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8602   { 0, 0, 0, NULL }
8603 };
8604
8605 static int
8606 dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8607   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8608                                    ExternalSignalInfo_sequence, hf_index, ett_gsm_map_ExternalSignalInfo);
8609
8610   return offset;
8611 }
8612 static int dissect_networkSignalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8613   return dissect_gsm_map_ExternalSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
8614 }
8615 static int dissect_networkSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8616   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
8617 }
8618 static int dissect_networkSignalInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8619   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo2);
8620 }
8621 static int dissect_gsm_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8622   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_BearerCapability);
8623 }
8624 static int dissect_isdn_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8625   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_isdn_BearerCapability);
8626 }
8627 static int dissect_chosenChannel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8628   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannel);
8629 }
8630 static int dissect_lowerLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8631   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lowerLayerCompatibility);
8632 }
8633 static int dissect_highLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8634   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_highLayerCompatibility);
8635 }
8636 static int dissect_channelType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8637   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_channelType);
8638 }
8639 static int dissect_callInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8640   return dissect_gsm_map_ExternalSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
8641 }
8642 static int dissect_callInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8643   return dissect_gsm_map_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
8644 }
8645
8646
8647 static const ber_sequence_t CamelInfo_sequence[] = {
8648   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_supportedCamelPhases },
8649   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_suppress_T_CSI },
8650   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8651   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
8652   { 0, 0, 0, NULL }
8653 };
8654
8655 static int
8656 dissect_gsm_map_CamelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8657   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8658                                    CamelInfo_sequence, hf_index, ett_gsm_map_CamelInfo);
8659
8660   return offset;
8661 }
8662 static int dissect_camelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8663   return dissect_gsm_map_CamelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelInfo);
8664 }
8665
8666
8667
8668 static int
8669 dissect_gsm_map_SuppressionOfAnnouncement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8670   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
8671
8672   return offset;
8673 }
8674 static int dissect_suppressionOfAnnouncement_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8675   return dissect_gsm_map_SuppressionOfAnnouncement(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppressionOfAnnouncement);
8676 }
8677
8678
8679
8680 int
8681 dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8682   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8683                                        NULL);
8684
8685   return offset;
8686 }
8687 static int dissect_alertingPattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8688   return dissect_gsm_map_AlertingPattern(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
8689 }
8690 static int dissect_alertingPattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8691   return dissect_gsm_map_AlertingPattern(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
8692 }
8693
8694
8695
8696 static int
8697 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_) {
8698   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8699                                   NULL);
8700
8701   return offset;
8702 }
8703 static int dissect_supportedCCBS_Phase_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8704   return dissect_gsm_map_SupportedCCBS_Phase(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCCBS_Phase);
8705 }
8706
8707
8708 static const value_string gsm_map_Ext_ProtocolId_vals[] = {
8709   {   1, "ets-300356" },
8710   { 0, NULL }
8711 };
8712
8713
8714 static int
8715 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_) {
8716   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8717                                   NULL);
8718
8719   return offset;
8720 }
8721 static int dissect_ext_ProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8722   return dissect_gsm_map_Ext_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ProtocolId);
8723 }
8724
8725
8726 static const ber_sequence_t Ext_ExternalSignalInfo_sequence[] = {
8727   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_ext_ProtocolId },
8728   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
8729   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8730   { 0, 0, 0, NULL }
8731 };
8732
8733 static int
8734 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_) {
8735   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8736                                    Ext_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_Ext_ExternalSignalInfo);
8737
8738   return offset;
8739 }
8740 static int dissect_additionalSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8741   return dissect_gsm_map_Ext_ExternalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSignalInfo);
8742 }
8743
8744
8745
8746 static int
8747 dissect_gsm_map_CallDiversionTreatmentIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8748   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8749                                        NULL);
8750
8751   return offset;
8752 }
8753 static int dissect_callDiversionTreatmentIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8754   return dissect_gsm_map_CallDiversionTreatmentIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callDiversionTreatmentIndicator);
8755 }
8756
8757
8758 static const ber_sequence_t SendRoutingInfoArg_sequence[] = {
8759   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
8760   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
8761   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberOfForwarding_impl },
8762   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_interrogationType_impl },
8763   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
8764   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Capability_impl },
8765   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gmsc_OrGsmSCF_Address_impl },
8766   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
8767   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingReason_impl },
8768   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicServiceGroup_impl },
8769   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
8770   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelInfo_impl },
8771   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
8772   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8773   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
8774   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
8775   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCCBS_Phase_impl },
8776   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
8777   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
8778   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pre_pagingSupported_impl },
8779   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callDiversionTreatmentIndicator_impl },
8780   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
8781   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL, dissect_suppress_VT_CSI },
8782   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL, dissect_suppressIncomingCallBarring },
8783   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL, dissect_gsmSCF_InitiatedCall },
8784   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup2_impl },
8785   { BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo2_impl },
8786   { 0, 0, 0, NULL }
8787 };
8788
8789 static int
8790 dissect_gsm_map_SendRoutingInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8791   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8792                                    SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoArg);
8793
8794   return offset;
8795 }
8796
8797
8798 static const ber_sequence_t ForwardingData_sequence[] = {
8799   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
8800   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
8801   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
8802   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8803   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
8804   { 0, 0, 0, NULL }
8805 };
8806
8807 static int
8808 dissect_gsm_map_ForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8809   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8810                                    ForwardingData_sequence, hf_index, ett_gsm_map_ForwardingData);
8811
8812   return offset;
8813 }
8814 static int dissect_forwardingData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8815   return dissect_gsm_map_ForwardingData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
8816 }
8817 static int dissect_forwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8818   return dissect_gsm_map_ForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
8819 }
8820
8821
8822 static const value_string gsm_map_RoutingInfo_vals[] = {
8823   {   0, "roamingNumber" },
8824   {   1, "forwardingData" },
8825   { 0, NULL }
8826 };
8827
8828 static const ber_choice_t RoutingInfo_choice[] = {
8829   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
8830   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingData },
8831   { 0, 0, 0, 0, NULL }
8832 };
8833
8834 static int
8835 dissect_gsm_map_RoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8836   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8837                                  RoutingInfo_choice, hf_index, ett_gsm_map_RoutingInfo,
8838                                  NULL);
8839
8840   return offset;
8841 }
8842 static int dissect_routingInfo2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8843   return dissect_gsm_map_RoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo2);
8844 }
8845 static int dissect_routingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8846   return dissect_gsm_map_RoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo);
8847 }
8848
8849
8850 static const ber_sequence_t GmscCamelSubscriptionInfo_sequence[] = {
8851   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
8852   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
8853   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8854   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
8855   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
8856   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_csi_impl },
8857   { 0, 0, 0, NULL }
8858 };
8859
8860 static int
8861 dissect_gsm_map_GmscCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8862   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8863                                    GmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_GmscCamelSubscriptionInfo);
8864
8865   return offset;
8866 }
8867 static int dissect_gmscCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8868   return dissect_gsm_map_GmscCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmscCamelSubscriptionInfo);
8869 }
8870
8871
8872 static const ber_sequence_t CamelRoutingInfo_sequence[] = {
8873   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_forwardingData },
8874   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gmscCamelSubscriptionInfo_impl },
8875   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8876   { 0, 0, 0, NULL }
8877 };
8878
8879 static int
8880 dissect_gsm_map_CamelRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8881   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8882                                    CamelRoutingInfo_sequence, hf_index, ett_gsm_map_CamelRoutingInfo);
8883
8884   return offset;
8885 }
8886 static int dissect_camelRoutingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8887   return dissect_gsm_map_CamelRoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelRoutingInfo);
8888 }
8889
8890
8891 static const value_string gsm_map_ExtendedRoutingInfo_vals[] = {
8892   {   0, "routingInfo" },
8893   {   1, "camelRoutingInfo" },
8894   { 0, NULL }
8895 };
8896
8897 static const ber_choice_t ExtendedRoutingInfo_choice[] = {
8898   {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
8899   {   1, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_camelRoutingInfo_impl },
8900   { 0, 0, 0, 0, NULL }
8901 };
8902
8903 static int
8904 dissect_gsm_map_ExtendedRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8905   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8906                                  ExtendedRoutingInfo_choice, hf_index, ett_gsm_map_ExtendedRoutingInfo,
8907                                  NULL);
8908
8909   return offset;
8910 }
8911 static int dissect_extendedRoutingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8912   return dissect_gsm_map_ExtendedRoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extendedRoutingInfo);
8913 }
8914
8915
8916
8917 int
8918 dissect_gsm_map_AgeOfLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8919   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8920                                   NULL);
8921
8922   return offset;
8923 }
8924 static int dissect_ageOfLocationInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8925   return dissect_gsm_map_AgeOfLocationInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationInformation);
8926 }
8927 static int dissect_ageOfLocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8928   return dissect_gsm_map_AgeOfLocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationEstimate);
8929 }
8930
8931
8932
8933 int
8934 dissect_gsm_map_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8935   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8936                                        NULL);
8937
8938   return offset;
8939 }
8940 static int dissect_geographicalInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8941   return dissect_gsm_map_GeographicalInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
8942 }
8943 static int dissect_geographicalInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8944   return dissect_gsm_map_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
8945 }
8946
8947
8948
8949 static int
8950 dissect_gsm_map_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8951   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8952                                        NULL);
8953
8954   return offset;
8955 }
8956 static int dissect_locationNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8957   return dissect_gsm_map_LocationNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationNumber);
8958 }
8959
8960
8961
8962 int
8963 dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8964   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
8965                                        NULL);
8966
8967   return offset;
8968 }
8969 static int dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8970   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength);
8971 }
8972
8973
8974 static const value_string gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals[] = {
8975   {   0, "cellGlobalIdOrServiceAreaIdFixedLength" },
8976   {   1, "laiFixedLength" },
8977   { 0, NULL }
8978 };
8979
8980 static const ber_choice_t CellGlobalIdOrServiceAreaIdOrLAI_choice[] = {
8981   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl },
8982   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_laiFixedLength_impl },
8983   { 0, 0, 0, 0, NULL }
8984 };
8985
8986 static int
8987 dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8988   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8989                                  CellGlobalIdOrServiceAreaIdOrLAI_choice, hf_index, ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
8990                                  NULL);
8991
8992   return offset;
8993 }
8994 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8995   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
8996 }
8997 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8998   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
8999 }
9000 static int dissect_cellIdOrSai_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9001   return dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdOrSai);
9002 }
9003
9004
9005
9006 static int
9007 dissect_gsm_map_GeodeticInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9008   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9009                                        NULL);
9010
9011   return offset;
9012 }
9013 static int dissect_geodeticInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9014   return dissect_gsm_map_GeodeticInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
9015 }
9016 static int dissect_geodeticInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9017   return dissect_gsm_map_GeodeticInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
9018 }
9019
9020
9021 static const ber_sequence_t LocationInformation_sequence[] = {
9022   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ageOfLocationInformation },
9023   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geographicalInformation_impl },
9024   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_number_impl },
9025   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationNumber_impl },
9026   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl },
9027   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9028   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedLSA_Id_impl },
9029   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
9030   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geodeticInformation_impl },
9031   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocationRetrieved_impl },
9032   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
9033   { 0, 0, 0, NULL }
9034 };
9035
9036 int
9037 dissect_gsm_map_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9038   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9039                                    LocationInformation_sequence, hf_index, ett_gsm_map_LocationInformation);
9040
9041   return offset;
9042 }
9043 static int dissect_locationInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9044   return dissect_gsm_map_LocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation);
9045 }
9046
9047
9048 const value_string gsm_map_SubscriberState_vals[] = {
9049   {   0, "assumedIdle" },
9050   {   1, "camelBusy" },
9051   {   2, "notProvidedFromVLR" },
9052   { 0, NULL }
9053 };
9054
9055 static const ber_choice_t SubscriberState_choice[] = {
9056   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_assumedIdle_impl },
9057   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_camelBusy_impl },
9058   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_notProvidedFromVLR_impl },
9059   { 0, 0, 0, 0, NULL }
9060 };
9061
9062 int
9063 dissect_gsm_map_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9064   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9065                                  SubscriberState_choice, hf_index, ett_gsm_map_SubscriberState,
9066                                  NULL);
9067
9068   return offset;
9069 }
9070 static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9071   return dissect_gsm_map_SubscriberState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState);
9072 }
9073
9074
9075
9076 int
9077 dissect_gsm_map_RAIdentity(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_routeingAreaIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9084   return dissect_gsm_map_RAIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routeingAreaIdentity);
9085 }
9086
9087
9088 static const ber_sequence_t LocationInformationGPRS_sequence[] = {
9089   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_cellGlobalIdOrServiceAreaIdOrLAI },
9090   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_routeingAreaIdentity },
9091   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_geographicalInformation },
9092   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_sgsn_Number },
9093   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_selectedLSAIdentity },
9094   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
9095   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_sai_Present },
9096   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_geodeticInformation },
9097   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_currentLocationRetrieved },
9098   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_ageOfLocationInformation },
9099   { 0, 0, 0, NULL }
9100 };
9101
9102 static int
9103 dissect_gsm_map_LocationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9104   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9105                                    LocationInformationGPRS_sequence, hf_index, ett_gsm_map_LocationInformationGPRS);
9106
9107   return offset;
9108 }
9109 static int dissect_locationInformationGPRS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9110   return dissect_gsm_map_LocationInformationGPRS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
9111 }
9112 static int dissect_locationInformationGPRS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9113   return dissect_gsm_map_LocationInformationGPRS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
9114 }
9115
9116
9117
9118 static int
9119 dissect_gsm_map_NSAPI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9120   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9121                                   NULL);
9122
9123   return offset;
9124 }
9125 static int dissect_nsapi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9126   return dissect_gsm_map_NSAPI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nsapi);
9127 }
9128
9129
9130
9131 static int
9132 dissect_gsm_map_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9133   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9134                                        NULL);
9135
9136   return offset;
9137 }
9138 static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9139   return dissect_gsm_map_TransactionId(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_transactionId);
9140 }
9141
9142
9143
9144 static int
9145 dissect_gsm_map_TEID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9146   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9147                                        NULL);
9148
9149   return offset;
9150 }
9151 static int dissect_teid_ForGnAndGp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9152   return dissect_gsm_map_TEID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForGnAndGp);
9153 }
9154 static int dissect_teid_ForIu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9155   return dissect_gsm_map_TEID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForIu);
9156 }
9157
9158
9159
9160 int
9161 dissect_gsm_map_GPRSChargingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9162   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9163                                        NULL);
9164
9165   return offset;
9166 }
9167 static int dissect_chargingId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9168   return dissect_gsm_map_GPRSChargingID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingId);
9169 }
9170
9171
9172 static const ber_sequence_t PDP_ContextInfo_sequence[] = {
9173   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pdp_ContextIdentifier_impl },
9174   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ContextActive_impl },
9175   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
9176   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
9177   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_Subscribed_impl },
9178   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_InUse_impl },
9179   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nsapi_impl },
9180   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
9181   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForGnAndGp_impl },
9182   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForIu_impl },
9183   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9184   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_qos_Subscribed_impl },
9185   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Requested_impl },
9186   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Negotiated_impl },
9187   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingId_impl },
9188   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
9189   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rnc_Address_impl },
9190   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9191   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Subscribed_impl },
9192   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Requested_impl },
9193   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Negotiated_impl },
9194   { 0, 0, 0, NULL }
9195 };
9196
9197 static int
9198 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_) {
9199   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9200                                    PDP_ContextInfo_sequence, hf_index, ett_gsm_map_PDP_ContextInfo);
9201
9202   return offset;
9203 }
9204 static int dissect_PDP_ContextInfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9205   return dissect_gsm_map_PDP_ContextInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PDP_ContextInfoList_item);
9206 }
9207
9208
9209 static const ber_sequence_t PDP_ContextInfoList_sequence_of[1] = {
9210   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PDP_ContextInfoList_item },
9211 };
9212
9213 static int
9214 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_) {
9215   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
9216                                       PDP_ContextInfoList_sequence_of, hf_index, ett_gsm_map_PDP_ContextInfoList);
9217
9218   return offset;
9219 }
9220 static int dissect_ps_PDP_ActiveNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9221   return dissect_gsm_map_PDP_ContextInfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveNotReachableForPaging);
9222 }
9223 static int dissect_ps_PDP_ActiveReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9224   return dissect_gsm_map_PDP_ContextInfoList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveReachableForPaging);
9225 }
9226
9227
9228 static const value_string gsm_map_NotReachableReason_vals[] = {
9229   {   0, "msPurged" },
9230   {   1, "imsiDetached" },
9231   {   2, "restrictedArea" },
9232   {   3, "notRegistered" },
9233   { 0, NULL }
9234 };
9235
9236
9237 static int
9238 dissect_gsm_map_NotReachableReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9239   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9240                                   NULL);
9241
9242   return offset;
9243 }
9244 static int dissect_netDetNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9245   return dissect_gsm_map_NotReachableReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_netDetNotReachable);
9246 }
9247
9248
9249 static const value_string gsm_map_PS_SubscriberState_vals[] = {
9250   {   0, "notProvidedFromSGSN" },
9251   {   1, "ps-Detached" },
9252   {   2, "ps-AttachedNotReachableForPaging" },
9253   {   3, "ps-AttachedReachableForPaging" },
9254   {   4, "ps-PDP-ActiveNotReachableForPaging" },
9255   {   5, "ps-PDP-ActiveReachableForPaging" },
9256   {   6, "netDetNotReachable" },
9257   { 0, NULL }
9258 };
9259
9260 static const ber_choice_t PS_SubscriberState_choice[] = {
9261   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notProvidedFromSGSN_impl },
9262   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ps_Detached_impl },
9263   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ps_AttachedNotReachableForPaging_impl },
9264   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ps_AttachedReachableForPaging_impl },
9265   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveNotReachableForPaging_impl },
9266   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveReachableForPaging_impl },
9267   {   6, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_netDetNotReachable },
9268   { 0, 0, 0, 0, NULL }
9269 };
9270
9271 static int
9272 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_) {
9273   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9274                                  PS_SubscriberState_choice, hf_index, ett_gsm_map_PS_SubscriberState,
9275                                  NULL);
9276
9277   return offset;
9278 }
9279 static int dissect_ps_SubscriberState_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9280   return dissect_gsm_map_PS_SubscriberState(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_SubscriberState);
9281 }
9282
9283
9284
9285 int
9286 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_) {
9287   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9288                                        NULL);
9289
9290   return offset;
9291 }
9292 static int dissect_ms_Classmark2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9293   return dissect_gsm_map_MS_Classmark2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_Classmark2);
9294 }
9295
9296
9297
9298 static int
9299 dissect_gsm_map_MSNetworkCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9300   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9301                                        NULL);
9302
9303   return offset;
9304 }
9305 static int dissect_mSNetworkCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9306   return dissect_gsm_map_MSNetworkCapability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSNetworkCapability);
9307 }
9308
9309
9310
9311 static int
9312 dissect_gsm_map_MSRadioAccessCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9313   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9314                                        NULL);
9315
9316   return offset;
9317 }
9318 static int dissect_mSRadioAccessCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9319   return dissect_gsm_map_MSRadioAccessCapability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSRadioAccessCapability);
9320 }
9321
9322
9323 static const ber_sequence_t GPRSMSClass_sequence[] = {
9324   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mSNetworkCapability_impl },
9325   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mSRadioAccessCapability_impl },
9326   { 0, 0, 0, NULL }
9327 };
9328
9329 static int
9330 dissect_gsm_map_GPRSMSClass(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9331   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9332                                    GPRSMSClass_sequence, hf_index, ett_gsm_map_GPRSMSClass);
9333
9334   return offset;
9335 }
9336 static int dissect_gprs_MS_Class_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9337   return dissect_gsm_map_GPRSMSClass(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_MS_Class);
9338 }
9339
9340
9341
9342 static int
9343 dissect_gsm_map_RouteingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9344   offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
9345
9346   return offset;
9347 }
9348 static int dissect_routeingNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9349   return dissect_gsm_map_RouteingNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routeingNumber);
9350 }
9351
9352
9353 static const value_string gsm_map_NumberPortabilityStatus_vals[] = {
9354   {   0, "notKnownToBePorted" },
9355   {   1, "ownNumberPortedOut" },
9356   {   2, "foreignNumberPortedToForeignNetwork" },
9357   {   4, "ownNumberNotPortedOut" },
9358   {   5, "foreignNumberPortedIn" },
9359   { 0, NULL }
9360 };
9361
9362
9363 static int
9364 dissect_gsm_map_NumberPortabilityStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9365   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9366                                   NULL);
9367
9368   return offset;
9369 }
9370 static int dissect_numberPortabilityStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9371   return dissect_gsm_map_NumberPortabilityStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberPortabilityStatus);
9372 }
9373
9374
9375 static const ber_sequence_t MNPInfoRes_sequence[] = {
9376   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_routeingNumber_impl },
9377   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9378   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9379   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
9380   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9381   { 0, 0, 0, NULL }
9382 };
9383
9384 static int
9385 dissect_gsm_map_MNPInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9386   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9387                                    MNPInfoRes_sequence, hf_index, ett_gsm_map_MNPInfoRes);
9388
9389   return offset;
9390 }
9391 static int dissect_mnpInfoRes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9392   return dissect_gsm_map_MNPInfoRes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpInfoRes);
9393 }
9394
9395
9396 static const ber_sequence_t SubscriberInfo_sequence[] = {
9397   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
9398   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_subscriberState },
9399   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9400   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformationGPRS_impl },
9401   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ps_SubscriberState_impl },
9402   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
9403   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_Classmark2_impl },
9404   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_MS_Class_impl },
9405   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpInfoRes_impl },
9406   { 0, 0, 0, NULL }
9407 };
9408
9409 static int
9410 dissect_gsm_map_SubscriberInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9411   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9412                                    SubscriberInfo_sequence, hf_index, ett_gsm_map_SubscriberInfo);
9413
9414   return offset;
9415 }
9416 static int dissect_subscriberInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9417   return dissect_gsm_map_SubscriberInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
9418 }
9419 static int dissect_subscriberInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9420   return dissect_gsm_map_SubscriberInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
9421 }
9422
9423
9424 static const ber_sequence_t CCBS_Indicators_sequence[] = {
9425   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
9426   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepCCBS_CallIndicator_impl },
9427   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9428   { 0, 0, 0, NULL }
9429 };
9430
9431 static int
9432 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_) {
9433   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9434                                    CCBS_Indicators_sequence, hf_index, ett_gsm_map_CCBS_Indicators);
9435
9436   return offset;
9437 }
9438 static int dissect_ccbs_Indicators_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9439   return dissect_gsm_map_CCBS_Indicators(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Indicators);
9440 }
9441
9442
9443 static const asn_namedbit AllowedServices_bits[] = {
9444   {  0, &hf_gsm_map_AllowedServices_firstServiceAllowed, -1, -1, "firstServiceAllowed", NULL },
9445   {  1, &hf_gsm_map_AllowedServices_secondServiceAllowed, -1, -1, "secondServiceAllowed", NULL },
9446   { 0, NULL, 0, 0, NULL, NULL }
9447 };
9448
9449 static int
9450 dissect_gsm_map_AllowedServices(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9451   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
9452                                     AllowedServices_bits, hf_index, ett_gsm_map_AllowedServices,
9453                                     NULL);
9454
9455   return offset;
9456 }
9457 static int dissect_allowedServices_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9458   return dissect_gsm_map_AllowedServices(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedServices);
9459 }
9460
9461
9462 static const value_string gsm_map_UnavailabilityCause_vals[] = {
9463   {   1, "bearerServiceNotProvisioned" },
9464   {   2, "teleserviceNotProvisioned" },
9465   {   3, "absentSubscriber" },
9466   {   4, "busySubscriber" },
9467   {   5, "callBarred" },
9468   {   6, "cug-Reject" },
9469   { 0, NULL }
9470 };
9471
9472
9473 static int
9474 dissect_gsm_map_UnavailabilityCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9475   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9476                                   NULL);
9477
9478   return offset;
9479 }
9480 static int dissect_unavailabilityCause_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9481   return dissect_gsm_map_UnavailabilityCause(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unavailabilityCause);
9482 }
9483
9484
9485 static const ber_sequence_t SendRoutingInfoRes_sequence[] = {
9486   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9487   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
9488   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
9489   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cugSubscriptionFlag_impl },
9490   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberInfo_impl },
9491   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
9492   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
9493   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInterrogationRequired_impl },
9494   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vmsc_Address_impl },
9495   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9496   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
9497   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Indicators_impl },
9498   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9499   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
9500   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
9501   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInVMSC_impl },
9502   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVMSC_impl },
9503   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_routingInfo2_impl },
9504   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List2_impl },
9505   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService2_impl },
9506   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedServices_impl },
9507   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unavailabilityCause_impl },
9508   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseResourcesSupported_impl },
9509   { 0, 0, 0, NULL }
9510 };
9511
9512 static int
9513 dissect_gsm_map_SendRoutingInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9514   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9515                                    SendRoutingInfoRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoRes);
9516
9517   return offset;
9518 }
9519
9520
9521 static const value_string gsm_map_SubscriberId_vals[] = {
9522   {   0, "imsi" },
9523   {   1, "tmsi" },
9524   { 0, NULL }
9525 };
9526
9527 static const ber_choice_t SubscriberId_choice[] = {
9528   {   0, BER_CLASS_CON, 0, 0, dissect_imsi },
9529   {   1, BER_CLASS_CON, 1, 0, dissect_tmsi },
9530   { 0, 0, 0, 0, NULL }
9531 };
9532
9533 static int
9534 dissect_gsm_map_SubscriberId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9535   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9536                                  SubscriberId_choice, hf_index, ett_gsm_map_SubscriberId,
9537                                  NULL);
9538
9539   return offset;
9540 }
9541
9542
9543 static const value_string gsm_map_SubscriberIdentity_vals[] = {
9544   {   0, "imsi" },
9545   {   1, "msisdn" },
9546   { 0, NULL }
9547 };
9548
9549 static const ber_choice_t SubscriberIdentity_choice[] = {
9550   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9551   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9552   { 0, 0, 0, 0, NULL }
9553 };
9554
9555 static int
9556 dissect_gsm_map_SubscriberIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9557   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9558                                  SubscriberIdentity_choice, hf_index, ett_gsm_map_SubscriberIdentity,
9559                                  NULL);
9560
9561   return offset;
9562 }
9563 static int dissect_subscriberIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9564   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
9565 }
9566 static int dissect_subscriberIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9567   return dissect_gsm_map_SubscriberIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
9568 }
9569 static int dissect_targetMS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9570   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
9571 }
9572 static int dissect_targetMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9573   return dissect_gsm_map_SubscriberIdentity(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
9574 }
9575
9576
9577 static const value_string gsm_map_NetDetNotReachable_vals[] = {
9578   {   0, "msPurged" },
9579   {   1, "imsiDetached" },
9580   {   2, "restrictedArea" },
9581   {   3, "notRegistered" },
9582   { 0, NULL }
9583 };
9584
9585
9586 static int
9587 dissect_gsm_map_NetDetNotReachable(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9588   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9589                                   NULL);
9590
9591   return offset;
9592 }
9593
9594
9595
9596 static int
9597 dissect_gsm_map_RoamingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9598   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9599                                        NULL);
9600
9601   return offset;
9602 }
9603
9604
9605
9606 static int
9607 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_) {
9608   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9609                                        NULL);
9610
9611   return offset;
9612 }
9613
9614
9615
9616 static int
9617 dissect_gsm_map_ExtSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9618   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9619                                        NULL);
9620
9621   return offset;
9622 }
9623
9624
9625
9626 static int
9627 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_) {
9628   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9629                                        NULL);
9630
9631   return offset;
9632 }
9633
9634
9635 static const ber_sequence_t ProvideRoamingNumberArg_sequence[] = {
9636   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9637   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
9638   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9639   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
9640   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
9641   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
9642   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
9643   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
9644   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
9645   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
9646   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9647   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
9648   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
9649   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInInterrogatingNode_impl },
9650   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
9651   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_orNotSupportedInGMSC_impl },
9652   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pre_pagingSupported_impl },
9653   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
9654   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppress_VT_CSI_impl },
9655   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInInterrogatingNode_impl },
9656   { 0, 0, 0, NULL }
9657 };
9658
9659 static int
9660 dissect_gsm_map_ProvideRoamingNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9661   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9662                                    ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberArg);
9663
9664   return offset;
9665 }
9666
9667
9668 static const ber_sequence_t ProvideRoamingNumberRes_sequence[] = {
9669   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
9670   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9671   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_releaseResourcesSupported },
9672   { 0, 0, 0, NULL }
9673 };
9674
9675 static int
9676 dissect_gsm_map_ProvideRoamingNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9677   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9678                                    ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberRes);
9679
9680   return offset;
9681 }
9682
9683
9684
9685 static int
9686 dissect_gsm_map_UUIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9687   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9688                                        NULL);
9689
9690   return offset;
9691 }
9692 static int dissect_uuIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9693   return dissect_gsm_map_UUIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uuIndicator);
9694 }
9695
9696
9697
9698 static int
9699 dissect_gsm_map_UUI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9700   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9701                                        NULL);
9702
9703   return offset;
9704 }
9705 static int dissect_uui_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9706   return dissect_gsm_map_UUI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uui);
9707 }
9708
9709
9710 static const ber_sequence_t UU_Data_sequence[] = {
9711   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uuIndicator_impl },
9712   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uui_impl },
9713   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uusCFInteraction_impl },
9714   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9715   { 0, 0, 0, NULL }
9716 };
9717
9718 int
9719 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_) {
9720   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9721                                    UU_Data_sequence, hf_index, ett_gsm_map_UU_Data);
9722
9723   return offset;
9724 }
9725 static int dissect_uu_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9726   return dissect_gsm_map_UU_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uu_Data);
9727 }
9728
9729
9730 static const ber_sequence_t ResumeCallHandlingArg_sequence[] = {
9731   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
9732   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_ext_basicServiceGroup },
9733   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingData_impl },
9734   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9735   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
9736   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
9737   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9738   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
9739   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9740   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uu_Data_impl },
9741   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allInformationSent_impl },
9742   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_csi_impl },
9743   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDPCriteriaList_impl },
9744   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup2_impl },
9745   { 0, 0, 0, NULL }
9746 };
9747
9748 static int
9749 dissect_gsm_map_ResumeCallHandlingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9750   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9751                                    ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ResumeCallHandlingArg);
9752
9753   return offset;
9754 }
9755
9756
9757 static const ber_sequence_t ResumeCallHandlingRes_sequence[] = {
9758   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9759   { 0, 0, 0, NULL }
9760 };
9761
9762 static int
9763 dissect_gsm_map_ResumeCallHandlingRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9764   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9765                                    ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ResumeCallHandlingRes);
9766
9767   return offset;
9768 }
9769
9770
9771
9772 static int
9773 dissect_gsm_map_CallDirection(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9774   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9775                                        NULL);
9776
9777   return offset;
9778 }
9779 static int dissect_call_Direction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9780   return dissect_gsm_map_CallDirection(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_call_Direction);
9781 }
9782
9783
9784 static const ber_sequence_t ProvideSIWFSNumberArg_sequence[] = {
9785   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
9786   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_BearerCapability_impl },
9787   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_call_Direction_impl },
9788   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_b_Subscriber_Address_impl },
9789   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
9790   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lowerLayerCompatibility_impl },
9791   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_highLayerCompatibility_impl },
9792   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9793   { 0, 0, 0, NULL }
9794 };
9795
9796 static int
9797 dissect_gsm_map_ProvideSIWFSNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9798   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9799                                    ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberArg);
9800
9801   return offset;
9802 }
9803
9804
9805 static const ber_sequence_t ProvideSIWFSNumberRes_sequence[] = {
9806   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sIWFSNumber_impl },
9807   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9808   { 0, 0, 0, NULL }
9809 };
9810
9811 static int
9812 dissect_gsm_map_ProvideSIWFSNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9813   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9814                                    ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberRes);
9815
9816   return offset;
9817 }
9818
9819
9820 static const ber_sequence_t SIWFSSignallingModifyArg_sequence[] = {
9821   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
9822   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
9823   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9824   { 0, 0, 0, NULL }
9825 };
9826
9827 static int
9828 dissect_gsm_map_SIWFSSignallingModifyArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9829   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9830                                    SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyArg);
9831
9832   return offset;
9833 }
9834
9835
9836 static const ber_sequence_t SIWFSSignallingModifyRes_sequence[] = {
9837   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
9838   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9839   { 0, 0, 0, NULL }
9840 };
9841
9842 static int
9843 dissect_gsm_map_SIWFSSignallingModifyRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9844   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9845                                    SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyRes);
9846
9847   return offset;
9848 }
9849
9850
9851 static const value_string gsm_map_Ccbs_Monitoring_vals[] = {
9852   {   0, "stopMonitoring" },
9853   {   1, "startMonitoring" },
9854   { 0, NULL }
9855 };
9856
9857
9858 static int
9859 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_) {
9860   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9861                                   NULL);
9862
9863   return offset;
9864 }
9865
9866
9867 static const value_string gsm_map_ReportingState_vals[] = {
9868   {   0, "stopMonitoring" },
9869   {   1, "startMonitoring" },
9870   { 0, NULL }
9871 };
9872
9873
9874 static int
9875 dissect_gsm_map_ReportingState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9876   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9877                                   NULL);
9878
9879   return offset;
9880 }
9881 static int dissect_ccbs_Monitoring(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9882   return dissect_gsm_map_ReportingState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Monitoring);
9883 }
9884
9885
9886 static const ber_sequence_t SetReportingStateArg_sequence[] = {
9887   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_imsi },
9888   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_lmsi },
9889   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_ccbs_Monitoring },
9890   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
9891   { 0, 0, 0, NULL }
9892 };
9893
9894 static int
9895 dissect_gsm_map_SetReportingStateArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9896   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9897                                    SetReportingStateArg_sequence, hf_index, ett_gsm_map_SetReportingStateArg);
9898
9899   return offset;
9900 }
9901
9902
9903 static const value_string gsm_map_CCBS_SubscriberStatus_vals[] = {
9904   {   0, "ccbsNotIdle" },
9905   {   1, "ccbsIdle" },
9906   {   2, "ccbsNotReachable" },
9907   { 0, NULL }
9908 };
9909
9910
9911 static int
9912 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_) {
9913   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9914                                   NULL);
9915
9916   return offset;
9917 }
9918 static int dissect_ccbs_SubscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9919   return dissect_gsm_map_CCBS_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_SubscriberStatus);
9920 }
9921
9922
9923 static const ber_sequence_t SetReportingStateRes_sequence[] = {
9924   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
9925   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9926   { 0, 0, 0, NULL }
9927 };
9928
9929 static int
9930 dissect_gsm_map_SetReportingStateRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9931   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9932                                    SetReportingStateRes_sequence, hf_index, ett_gsm_map_SetReportingStateRes);
9933
9934   return offset;
9935 }
9936
9937
9938 static const ber_sequence_t EventReportData_sequence[] = {
9939   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
9940   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9941   { 0, 0, 0, NULL }
9942 };
9943
9944 static int
9945 dissect_gsm_map_EventReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9946   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9947                                    EventReportData_sequence, hf_index, ett_gsm_map_EventReportData);
9948
9949   return offset;
9950 }
9951 static int dissect_eventReportData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9952   return dissect_gsm_map_EventReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventReportData);
9953 }
9954
9955
9956 static const value_string gsm_map_MonitoringMode_vals[] = {
9957   {   0, "a-side" },
9958   {   1, "b-side" },
9959   { 0, NULL }
9960 };
9961
9962
9963 static int
9964 dissect_gsm_map_MonitoringMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9965   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9966                                   NULL);
9967
9968   return offset;
9969 }
9970 static int dissect_monitoringMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9971   return dissect_gsm_map_MonitoringMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_monitoringMode);
9972 }
9973
9974
9975 static const value_string gsm_map_CallOutcome_vals[] = {
9976   {   0, "success" },
9977   {   1, "failure" },
9978   {   2, "busy" },
9979   { 0, NULL }
9980 };
9981
9982
9983 static int
9984 dissect_gsm_map_CallOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9985   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9986                                   NULL);
9987
9988   return offset;
9989 }
9990 static int dissect_callOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9991   return dissect_gsm_map_CallOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callOutcome);
9992 }
9993
9994
9995 static const ber_sequence_t CallReportData_sequence[] = {
9996   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_monitoringMode_impl },
9997   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOutcome_impl },
9998   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9999   { 0, 0, 0, NULL }
10000 };
10001
10002 static int
10003 dissect_gsm_map_CallReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10004   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10005                                    CallReportData_sequence, hf_index, ett_gsm_map_CallReportData);
10006
10007   return offset;
10008 }
10009 static int dissect_callReportdata_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10010   return dissect_gsm_map_CallReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReportdata);
10011 }
10012
10013
10014 static const ber_sequence_t StatusReportArg_sequence[] = {
10015   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10016   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventReportData_impl },
10017   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReportdata_impl },
10018   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10019   { 0, 0, 0, NULL }
10020 };
10021
10022 static int
10023 dissect_gsm_map_StatusReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10024   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10025                                    StatusReportArg_sequence, hf_index, ett_gsm_map_StatusReportArg);
10026
10027   return offset;
10028 }
10029
10030
10031 static const ber_sequence_t StatusReportRes_sequence[] = {
10032   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10033   { 0, 0, 0, NULL }
10034 };
10035
10036 static int
10037 dissect_gsm_map_StatusReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10038   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10039                                    StatusReportRes_sequence, hf_index, ett_gsm_map_StatusReportRes);
10040
10041   return offset;
10042 }
10043
10044
10045 static const value_string gsm_map_Ruf_Outcome_vals[] = {
10046   {   0, "accepted" },
10047   {   1, "rejected" },
10048   {   2, "noResponseFromFreeMS" },
10049   {   3, "noResponseFromBusyMS" },
10050   {   4, "udubFromFreeMS" },
10051   {   5, "udubFromBusyMS" },
10052   { 0, NULL }
10053 };
10054
10055
10056 static int
10057 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_) {
10058   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10059                                   NULL);
10060
10061   return offset;
10062 }
10063 static int dissect_ruf_Outcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10064   return dissect_gsm_map_Ruf_Outcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ruf_Outcome);
10065 }
10066
10067
10068 static const ber_sequence_t IST_AlertArg_sequence[] = {
10069   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10070   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10071   { 0, 0, 0, NULL }
10072 };
10073
10074 static int
10075 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_) {
10076   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10077                                    IST_AlertArg_sequence, hf_index, ett_gsm_map_IST_AlertArg);
10078
10079   return offset;
10080 }
10081
10082
10083 static const value_string gsm_map_CallTerminationIndicator_vals[] = {
10084   {   0, "terminateCallActivityReferred" },
10085   {   1, "terminateAllCallActivities" },
10086   { 0, NULL }
10087 };
10088
10089
10090 static int
10091 dissect_gsm_map_CallTerminationIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10092   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10093                                   NULL);
10094
10095   return offset;
10096 }
10097 static int dissect_callTerminationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10098   return dissect_gsm_map_CallTerminationIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTerminationIndicator);
10099 }
10100
10101
10102 static const ber_sequence_t IST_AlertRes_sequence[] = {
10103   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istAlertTimer_impl },
10104   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istInformationWithdraw_impl },
10105   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTerminationIndicator_impl },
10106   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10107   { 0, 0, 0, NULL }
10108 };
10109
10110 static int
10111 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_) {
10112   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10113                                    IST_AlertRes_sequence, hf_index, ett_gsm_map_IST_AlertRes);
10114
10115   return offset;
10116 }
10117
10118
10119 static const ber_sequence_t IST_CommandArg_sequence[] = {
10120   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10121   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10122   { 0, 0, 0, NULL }
10123 };
10124
10125 static int
10126 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_) {
10127   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10128                                    IST_CommandArg_sequence, hf_index, ett_gsm_map_IST_CommandArg);
10129
10130   return offset;
10131 }
10132
10133
10134 static const ber_sequence_t IST_CommandRes_sequence[] = {
10135   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10136   { 0, 0, 0, NULL }
10137 };
10138
10139 static int
10140 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_) {
10141   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10142                                    IST_CommandRes_sequence, hf_index, ett_gsm_map_IST_CommandRes);
10143
10144   return offset;
10145 }
10146
10147
10148 static const ber_sequence_t ReleaseResourcesArg_sequence[] = {
10149   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msrn },
10150   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10151   { 0, 0, 0, NULL }
10152 };
10153
10154 static int
10155 dissect_gsm_map_ReleaseResourcesArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10156   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10157                                    ReleaseResourcesArg_sequence, hf_index, ett_gsm_map_ReleaseResourcesArg);
10158
10159   return offset;
10160 }
10161
10162
10163 static const ber_sequence_t ReleaseResourcesRes_sequence[] = {
10164   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10165   { 0, 0, 0, NULL }
10166 };
10167
10168 static int
10169 dissect_gsm_map_ReleaseResourcesRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10170   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10171                                    ReleaseResourcesRes_sequence, hf_index, ett_gsm_map_ReleaseResourcesRes);
10172
10173   return offset;
10174 }
10175
10176
10177
10178 static int
10179 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_) {
10180   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10181                                   NULL);
10182
10183   return offset;
10184 }
10185 static int dissect_ccbs_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10186   return dissect_gsm_map_CCBS_Index(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Index);
10187 }
10188
10189
10190 static const ber_sequence_t CCBS_Feature_sequence[] = {
10191   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
10192   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
10193   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
10194   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup_impl },
10195   { 0, 0, 0, NULL }
10196 };
10197
10198 int
10199 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_) {
10200   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10201                                    CCBS_Feature_sequence, hf_index, ett_gsm_map_CCBS_Feature);
10202
10203   return offset;
10204 }
10205 static int dissect_ccbs_Feature(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10206   return dissect_gsm_map_CCBS_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
10207 }
10208 static int dissect_ccbs_Feature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10209   return dissect_gsm_map_CCBS_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
10210 }
10211 static int dissect_CCBS_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10212   return dissect_gsm_map_CCBS_Feature(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CCBS_FeatureList_item);
10213 }
10214
10215
10216 static const ber_sequence_t RemoteUserFreeArg_sequence[] = {
10217   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10218   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
10219   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
10220   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
10221   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replaceB_Number_impl },
10222   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
10223   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10224   { 0, 0, 0, NULL }
10225 };
10226
10227 static int
10228 dissect_gsm_map_RemoteUserFreeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10229   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10230                                    RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_RemoteUserFreeArg);
10231
10232   return offset;
10233 }
10234
10235
10236 static const ber_sequence_t RemoteUserFreeRes_sequence[] = {
10237   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ruf_Outcome_impl },
10238   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10239   { 0, 0, 0, NULL }
10240 };
10241
10242 static int
10243 dissect_gsm_map_RemoteUserFreeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10244   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10245                                    RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_RemoteUserFreeRes);
10246
10247   return offset;
10248 }
10249
10250
10251
10252 static int
10253 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_) {
10254   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10255                                        NULL);
10256
10257   return offset;
10258 }
10259
10260
10261 static const ber_sequence_t SS_Data_sequence[] = {
10262   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
10263   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10264   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
10265   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ext_basicServiceGroupList },
10266   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
10267   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
10268   { 0, 0, 0, NULL }
10269 };
10270
10271 static int
10272 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_) {
10273   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10274                                    SS_Data_sequence, hf_index, ett_gsm_map_SS_Data);
10275
10276   return offset;
10277 }
10278 static int dissect_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10279   return dissect_gsm_map_SS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Data);
10280 }
10281
10282
10283 static const ber_sequence_t RegisterSS_Arg_sequence[] = {
10284   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
10285   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
10286   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
10287   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
10288   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
10289   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
10290   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
10291   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
10292   { 0, 0, 0, NULL }
10293 };
10294
10295 int
10296 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_) {
10297   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10298                                    RegisterSS_Arg_sequence, hf_index, ett_gsm_map_RegisterSS_Arg);
10299
10300   return offset;
10301 }
10302
10303
10304 const value_string gsm_map_SS_Info_vals[] = {
10305   {   0, "forwardingInfo" },
10306   {   1, "callBarringInfo" },
10307   {   3, "ss-Data" },
10308   { 0, NULL }
10309 };
10310
10311 static const ber_choice_t SS_Info_choice[] = {
10312   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
10313   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
10314   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data_impl },
10315   { 0, 0, 0, 0, NULL }
10316 };
10317
10318 int
10319 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_) {
10320   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10321                                  SS_Info_choice, hf_index, ett_gsm_map_SS_Info,
10322                                  NULL);
10323
10324   return offset;
10325 }
10326
10327
10328
10329 static int
10330 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_) {
10331   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10332                                        NULL);
10333
10334   return offset;
10335 }
10336
10337
10338 static const ber_sequence_t CCBS_FeatureList_sequence_of[1] = {
10339   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CCBS_FeatureList_item },
10340 };
10341
10342 static int
10343 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_) {
10344   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
10345                                       CCBS_FeatureList_sequence_of, hf_index, ett_gsm_map_CCBS_FeatureList);
10346
10347   return offset;
10348 }
10349 static int dissect_ccbs_FeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10350   return dissect_gsm_map_CCBS_FeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList);
10351 }
10352
10353
10354 static const ber_sequence_t GenericServiceInfo_sequence[] = {
10355   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
10356   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cliRestrictionOption },
10357   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximumEntitledPriority_impl },
10358   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
10359   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_FeatureList_impl },
10360   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrSB_impl },
10361   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrUser_impl },
10362   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nbrSN_impl },
10363   { 0, 0, 0, NULL }
10364 };
10365
10366 static int
10367 dissect_gsm_map_GenericServiceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10368   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10369                                    GenericServiceInfo_sequence, hf_index, ett_gsm_map_GenericServiceInfo);
10370
10371   return offset;
10372 }
10373 static int dissect_genericServiceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10374   return dissect_gsm_map_GenericServiceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_genericServiceInfo);
10375 }
10376
10377
10378 const value_string gsm_map_InterrogateSS_Res_vals[] = {
10379   {   0, "ss-Status" },
10380   {   2, "basicServiceGroupList" },
10381   {   3, "forwardingFeatureList" },
10382   {   4, "genericServiceInfo" },
10383   { 0, NULL }
10384 };
10385
10386 static const ber_choice_t InterrogateSS_Res_choice[] = {
10387   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10388   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_basicServiceGroupList_impl },
10389   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_forwardingFeatureList_impl },
10390   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_genericServiceInfo_impl },
10391   { 0, 0, 0, 0, NULL }
10392 };
10393
10394 int
10395 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_) {
10396   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10397                                  InterrogateSS_Res_choice, hf_index, ett_gsm_map_InterrogateSS_Res,
10398                                  NULL);
10399
10400   return offset;
10401 }
10402
10403
10404
10405 int
10406 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_) {
10407   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10408                                        NULL);
10409
10410   return offset;
10411 }
10412 static int dissect_ussd_DataCodingScheme(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10413   return dissect_gsm_map_USSD_DataCodingScheme(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_DataCodingScheme);
10414 }
10415 static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10416   return dissect_gsm_map_USSD_DataCodingScheme(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dataCodingScheme);
10417 }
10418
10419
10420
10421 int
10422 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_) {
10423   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10424                                        NULL);
10425
10426   return offset;
10427 }
10428 static int dissect_ussd_String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10429   return dissect_gsm_map_USSD_String(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_String);
10430 }
10431
10432
10433 static const ber_sequence_t Ussd_Arg_sequence[] = {
10434   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
10435   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
10436   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertingPattern },
10437   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10438   { 0, 0, 0, NULL }
10439 };
10440
10441 int
10442 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_) {
10443   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10444                                    Ussd_Arg_sequence, hf_index, ett_gsm_map_Ussd_Arg);
10445
10446   return offset;
10447 }
10448
10449
10450 static const ber_sequence_t Ussd_Res_sequence[] = {
10451   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
10452   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
10453   { 0, 0, 0, NULL }
10454 };
10455
10456 int
10457 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_) {
10458   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10459                                    Ussd_Res_sequence, hf_index, ett_gsm_map_Ussd_Res);
10460
10461   return offset;
10462 }
10463
10464
10465 static const value_string gsm_map_FailureCause_vals[] = {
10466   {   0, "wrongUserResponse" },
10467   {   1, "wrongNetworkSignature" },
10468   { 0, NULL }
10469 };
10470
10471
10472 static int
10473 dissect_gsm_map_FailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10474   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10475                                   NULL);
10476
10477   return offset;
10478 }
10479 static int dissect_failureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10480   return dissect_gsm_map_FailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_failureCause);
10481 }
10482
10483
10484
10485 static int
10486 dissect_gsm_map_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10487   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
10488
10489   return offset;
10490 }
10491 static int dissect_re_attempt(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10492   return dissect_gsm_map_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_attempt);
10493 }
10494 static int dissect_sm_RP_PRI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10495   return dissect_gsm_map_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_PRI);
10496 }
10497
10498
10499 static const value_string gsm_map_AccessType_vals[] = {
10500   {   0, "call" },
10501   {   1, "emergencyCall" },
10502   {   2, "locationUpdating" },
10503   {   3, "supplementaryService" },
10504   {   4, "shortMessage" },
10505   {   5, "gprsAttach" },
10506   {   6, "routingAreaUpdating" },
10507   {   7, "serviceRequest" },
10508   {   8, "pdpContextActivation" },
10509   {   9, "pdpContextDeactivation" },
10510   {  10, "gprsDetach" },
10511   { 0, NULL }
10512 };
10513
10514
10515 static int
10516 dissect_gsm_map_AccessType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10517   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10518                                   NULL);
10519
10520   return offset;
10521 }
10522 static int dissect_accessType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10523   return dissect_gsm_map_AccessType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessType);
10524 }
10525
10526
10527 static const ber_sequence_t AuthenticationFailureReportArg_sequence[] = {
10528   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
10529   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_failureCause },
10530   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10531   { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_attempt },
10532   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_accessType },
10533   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_rand },
10534   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
10535   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
10536   { 0, 0, 0, NULL }
10537 };
10538
10539 static int
10540 dissect_gsm_map_AuthenticationFailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10541   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10542                                    AuthenticationFailureReportArg_sequence, hf_index, ett_gsm_map_AuthenticationFailureReportArg);
10543
10544   return offset;
10545 }
10546
10547
10548 static const ber_sequence_t AuthenticationFailureReportRes_sequence[] = {
10549   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10550   { 0, 0, 0, NULL }
10551 };
10552
10553 static int
10554 dissect_gsm_map_AuthenticationFailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10555   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10556                                    AuthenticationFailureReportRes_sequence, hf_index, ett_gsm_map_AuthenticationFailureReportRes);
10557
10558   return offset;
10559 }
10560
10561
10562
10563 int
10564 dissect_gsm_map_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10565   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
10566                                             pinfo, tree, tvb, offset, hf_index,
10567                                             NULL);
10568
10569   return offset;
10570 }
10571
10572
10573 const value_string gsm_map_GetPasswordArg_vals[] = {
10574   {   0, "enterPW" },
10575   {   1, "enterNewPW" },
10576   {   2, "enterNewPW-Again" },
10577   { 0, NULL }
10578 };
10579
10580
10581 int
10582 dissect_gsm_map_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10583   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10584                                   NULL);
10585
10586   return offset;
10587 }
10588
10589
10590
10591 int
10592 dissect_gsm_map_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10593   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
10594                                             pinfo, tree, tvb, offset, hf_index,
10595                                             NULL);
10596
10597   return offset;
10598 }
10599
10600
10601 static const asn_namedbit ServiceIndicator_bits[] = {
10602   {  0, &hf_gsm_map_ServiceIndicator_clir_invoked, -1, -1, "clir-invoked", NULL },
10603   {  1, &hf_gsm_map_ServiceIndicator_camel_invoked, -1, -1, "camel-invoked", NULL },
10604   { 0, NULL, 0, 0, NULL, NULL }
10605 };
10606
10607 static int
10608 dissect_gsm_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10609   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
10610                                     ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
10611                                     NULL);
10612
10613   return offset;
10614 }
10615 static int dissect_serviceIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10616   return dissect_gsm_map_ServiceIndicator(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceIndicator);
10617 }
10618
10619
10620 static const ber_sequence_t CCBS_Data_sequence[] = {
10621   { BER_CLASS_CON, 0, 0, dissect_ccbs_Feature },
10622   { BER_CLASS_CON, 1, 0, dissect_translatedB_Number },
10623   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_serviceIndicator },
10624   { BER_CLASS_CON, 3, 0, dissect_callInfo },
10625   { BER_CLASS_CON, 4, 0, dissect_networkSignalInfo },
10626   { 0, 0, 0, NULL }
10627 };
10628
10629 static int
10630 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_) {
10631   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10632                                    CCBS_Data_sequence, hf_index, ett_gsm_map_CCBS_Data);
10633
10634   return offset;
10635 }
10636 static int dissect_ccbs_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10637   return dissect_gsm_map_CCBS_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Data);
10638 }
10639
10640
10641 static const ber_sequence_t RegisterCC_EntryArg_sequence[] = {
10642   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10643   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Data_impl },
10644   { 0, 0, 0, NULL }
10645 };
10646
10647 static int
10648 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_) {
10649   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10650                                    RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_RegisterCC_EntryArg);
10651
10652   return offset;
10653 }
10654
10655
10656 static const ber_sequence_t RegisterCC_EntryRes_sequence[] = {
10657   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
10658   { 0, 0, 0, NULL }
10659 };
10660
10661 int
10662 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_) {
10663   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10664                                    RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_RegisterCC_EntryRes);
10665
10666   return offset;
10667 }
10668
10669
10670 static const ber_sequence_t EraseCC_EntryArg_sequence[] = {
10671   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10672   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
10673   { 0, 0, 0, NULL }
10674 };
10675
10676 int
10677 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_) {
10678   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10679                                    EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_EraseCC_EntryArg);
10680
10681   return offset;
10682 }
10683
10684
10685 static const ber_sequence_t EraseCC_EntryRes_sequence[] = {
10686   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10687   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10688   { 0, 0, 0, NULL }
10689 };
10690
10691 int
10692 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_) {
10693   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10694                                    EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_EraseCC_EntryRes);
10695
10696   return offset;
10697 }
10698
10699
10700
10701 static int
10702 dissect_gsm_map_ServiceCentreAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10703 #line 193 "gsmmap.cnf"
10704
10705  tvbuff_t       *parameter_tvb;
10706  char           *digit_str;
10707
10708    offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10709                                        &parameter_tvb);
10710
10711
10712  if (!parameter_tvb)
10713         return offset;
10714
10715  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
10716  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
10717  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
10718
10719  digit_str = unpack_digits(parameter_tvb, 1);
10720
10721  proto_tree_add_string(tree, hf_gsm_map_servicecentreaddress_digits, parameter_tvb, 1, -1, digit_str);
10722  pinfo->p2p_dir = P2P_DIR_SENT;
10723
10724
10725
10726   return offset;
10727 }
10728 static int dissect_serviceCentreAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10729   return dissect_gsm_map_ServiceCentreAddress(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
10730 }
10731 static int dissect_serviceCentreAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10732   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
10733 }
10734 static int dissect_serviceCentreAddressOA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10735   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressOA);
10736 }
10737 static int dissect_serviceCentreAddressDA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10738   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressDA);
10739 }
10740
10741
10742
10743 static int
10744 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_) {
10745   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10746                                   NULL);
10747
10748   return offset;
10749 }
10750 static int dissect_sm_RP_MTI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10751   return dissect_gsm_map_INTEGER_0_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_MTI);
10752 }
10753
10754
10755
10756 static int
10757 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_) {
10758   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10759                                        NULL);
10760
10761   return offset;
10762 }
10763 static int dissect_sm_RP_SMEA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10764   return dissect_gsm_map_OCTET_STRING_SIZE_1_12(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_SMEA);
10765 }
10766
10767
10768 static const ber_sequence_t RoutingInfoForSMArg_sequence[] = {
10769   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10770   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sm_RP_PRI_impl },
10771   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddress_impl },
10772   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10773   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
10774   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_MTI_impl },
10775   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_SMEA_impl },
10776   { 0, 0, 0, NULL }
10777 };
10778
10779 static int
10780 dissect_gsm_map_RoutingInfoForSMArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10781   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10782                                    RoutingInfoForSMArg_sequence, hf_index, ett_gsm_map_RoutingInfoForSMArg);
10783
10784   return offset;
10785 }
10786
10787
10788 static const value_string gsm_map_Additional_Number_vals[] = {
10789   {   0, "msc-Number" },
10790   {   1, "sgsn-Number" },
10791   { 0, NULL }
10792 };
10793
10794 static const ber_choice_t Additional_Number_choice[] = {
10795   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
10796   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
10797   { 0, 0, 0, 0, NULL }
10798 };
10799
10800 static int
10801 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_) {
10802   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10803                                  Additional_Number_choice, hf_index, ett_gsm_map_Additional_Number,
10804                                  NULL);
10805
10806   return offset;
10807 }
10808 static int dissect_additional_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10809   return dissect_gsm_map_Additional_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additional_Number);
10810 }
10811
10812
10813 static const ber_sequence_t LocationInfoWithLMSI_sequence[] = {
10814   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_networkNode_Number_impl },
10815   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
10816   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10817   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
10818   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_additional_Number_impl },
10819   { 0, 0, 0, NULL }
10820 };
10821
10822 static int
10823 dissect_gsm_map_LocationInfoWithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10824   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10825                                    LocationInfoWithLMSI_sequence, hf_index, ett_gsm_map_LocationInfoWithLMSI);
10826
10827   return offset;
10828 }
10829 static int dissect_locationInfoWithLMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10830   return dissect_gsm_map_LocationInfoWithLMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInfoWithLMSI);
10831 }
10832
10833
10834 static const ber_sequence_t RoutingInfoForSM_Res_sequence[] = {
10835   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
10836   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationInfoWithLMSI_impl },
10837   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10838   { 0, 0, 0, NULL }
10839 };
10840
10841 static int
10842 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_) {
10843   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10844                                    RoutingInfoForSM_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForSM_Res);
10845
10846   return offset;
10847 }
10848
10849
10850 static const value_string gsm_map_Sm_RP_DA_vals[] = {
10851   {   0, "imsi" },
10852   {   1, "lmsi" },
10853   {   4, "serviceCentreAddressDA" },
10854   {   5, "noSM-RP-DA" },
10855   { 0, NULL }
10856 };
10857
10858 static const ber_choice_t Sm_RP_DA_choice[] = {
10859   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
10860   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
10861   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressDA_impl },
10862   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_DA_impl },
10863   { 0, 0, 0, 0, NULL }
10864 };
10865
10866 static int
10867 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_) {
10868   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10869                                  Sm_RP_DA_choice, hf_index, ett_gsm_map_Sm_RP_DA,
10870                                  NULL);
10871
10872   return offset;
10873 }
10874 static int dissect_sm_RP_DA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10875   return dissect_gsm_map_Sm_RP_DA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_DA);
10876 }
10877
10878
10879 static const value_string gsm_map_Sm_RP_OA_vals[] = {
10880   {   2, "msisdn" },
10881   {   4, "serviceCentreAddressOA" },
10882   {   5, "noSM-RP-OA" },
10883   { 0, NULL }
10884 };
10885
10886 static const ber_choice_t Sm_RP_OA_choice[] = {
10887   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
10888   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressOA_impl },
10889   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_OA_impl },
10890   { 0, 0, 0, 0, NULL }
10891 };
10892
10893 static int
10894 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_) {
10895   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10896                                  Sm_RP_OA_choice, hf_index, ett_gsm_map_Sm_RP_OA,
10897                                  NULL);
10898
10899   return offset;
10900 }
10901 static int dissect_sm_RP_OA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10902   return dissect_gsm_map_Sm_RP_OA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_OA);
10903 }
10904
10905
10906
10907 static int
10908 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_) {
10909 #line 152 "gsmmap.cnf"
10910
10911   tvbuff_t      *tpdu_tvb;
10912         
10913     offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10914                                        &tpdu_tvb);
10915
10916
10917     /*
10918      * dissect the embedded TPDU message
10919      */
10920  if (!tpdu_tvb)
10921         return offset;
10922
10923     dissector_try_port(sms_dissector_table, 0, tpdu_tvb, pinfo, top_tree);
10924
10925
10926   return offset;
10927 }
10928 static int dissect_sm_RP_UI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10929   return dissect_gsm_map_Sm_RP_UI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_UI);
10930 }
10931
10932
10933 static const ber_sequence_t Mo_forwardSM_Arg_sequence[] = {
10934   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
10935   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
10936   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10937   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10938   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
10939   { 0, 0, 0, NULL }
10940 };
10941
10942 static int
10943 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_) {
10944   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10945                                    Mo_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Arg);
10946
10947   return offset;
10948 }
10949
10950
10951 static const ber_sequence_t Mo_forwardSM_Res_sequence[] = {
10952   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10953   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10954   { 0, 0, 0, NULL }
10955 };
10956
10957 static int
10958 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_) {
10959   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10960                                    Mo_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Res);
10961
10962   return offset;
10963 }
10964
10965
10966 static const ber_sequence_t Mt_forwardSM_Arg_sequence[] = {
10967   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
10968   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
10969   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10970   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_moreMessagesToSend },
10971   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10972   { 0, 0, 0, NULL }
10973 };
10974
10975 static int
10976 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_) {
10977   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10978                                    Mt_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Arg);
10979
10980   return offset;
10981 }
10982
10983
10984 static const ber_sequence_t Mt_forwardSM_Res_sequence[] = {
10985   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
10986   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10987   { 0, 0, 0, NULL }
10988 };
10989
10990 static int
10991 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_) {
10992   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10993                                    Mt_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Res);
10994
10995   return offset;
10996 }
10997
10998
10999
11000 static int
11001 dissect_gsm_map_StoredMSISDN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11002   offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
11003
11004   return offset;
11005 }
11006 static int dissect_storedMSISDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11007   return dissect_gsm_map_StoredMSISDN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_storedMSISDN);
11008 }
11009
11010
11011 static const value_string gsm_map_Sm_DeliveryOutcome_vals[] = {
11012   {   0, "memoryCapacityExceeded" },
11013   {   1, "absentSubscriber" },
11014   {   2, "successfulTransfer" },
11015   { 0, NULL }
11016 };
11017
11018
11019 static int
11020 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_) {
11021   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11022                                   NULL);
11023
11024   return offset;
11025 }
11026 static int dissect_sm_DeliveryOutcome(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11027   return dissect_gsm_map_Sm_DeliveryOutcome(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_DeliveryOutcome);
11028 }
11029 static int dissect_additionalSM_DeliveryOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11030   return dissect_gsm_map_Sm_DeliveryOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSM_DeliveryOutcome);
11031 }
11032
11033
11034
11035 static int
11036 dissect_gsm_map_AbsentSubscriberDiagnosticSM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11037   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11038                                   NULL);
11039
11040   return offset;
11041 }
11042 static int dissect_absentSubscriberDiagnosticSM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11043   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
11044 }
11045 static int dissect_absentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11046   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
11047 }
11048 static int dissect_additionalAbsentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11049   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalAbsentSubscriberDiagnosticSM);
11050 }
11051 static int dissect_mobileNotReachableReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11052   return dissect_gsm_map_AbsentSubscriberDiagnosticSM(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mobileNotReachableReason);
11053 }
11054
11055
11056 static const ber_sequence_t ReportSM_DeliveryStatusArg_sequence[] = {
11057   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
11058   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
11059   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_DeliveryOutcome },
11060   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberDiagnosticSM_impl },
11061   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11062   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
11063   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deliveryOutcomeIndicator_impl },
11064   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSM_DeliveryOutcome_impl },
11065   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
11066   { 0, 0, 0, NULL }
11067 };
11068
11069 static int
11070 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_) {
11071   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11072                                    ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusArg);
11073
11074   return offset;
11075 }
11076
11077
11078 static const ber_sequence_t ReportSM_DeliveryStatusRes_sequence[] = {
11079   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
11080   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11081   { 0, 0, 0, NULL }
11082 };
11083
11084 static int
11085 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_) {
11086   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11087                                    ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusRes);
11088
11089   return offset;
11090 }
11091
11092
11093 static const asn_namedbit T_mw_Status_bits[] = {
11094   {  0, &hf_gsm_map_T_mw_Status_scAddressNotIncluded, -1, -1, "scAddressNotIncluded", NULL },
11095   {  1, &hf_gsm_map_T_mw_Status_mnrfSet, -1, -1, "mnrfSet", NULL },
11096   {  2, &hf_gsm_map_T_mw_Status_mcefSet, -1, -1, "mcefSet", NULL },
11097   {  3, &hf_gsm_map_T_mw_Status_mnrgSet, -1, -1, "mnrgSet", NULL },
11098   { 0, NULL, 0, 0, NULL, NULL }
11099 };
11100
11101 static int
11102 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_) {
11103   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
11104                                     T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
11105                                     NULL);
11106
11107   return offset;
11108 }
11109 static int dissect_mw_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11110   return dissect_gsm_map_T_mw_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mw_Status);
11111 }
11112
11113
11114 static const ber_sequence_t InformServiceCentreArg_sequence[] = {
11115   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
11116   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mw_Status },
11117   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11118   { 0, 0, 0, NULL }
11119 };
11120
11121 static int
11122 dissect_gsm_map_InformServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11123   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11124                                    InformServiceCentreArg_sequence, hf_index, ett_gsm_map_InformServiceCentreArg);
11125
11126   return offset;
11127 }
11128
11129
11130 static const ber_sequence_t AlertServiceCentreArg_sequence[] = {
11131   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
11132   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
11133   { 0, 0, 0, NULL }
11134 };
11135
11136 static int
11137 dissect_gsm_map_AlertServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11138   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11139                                    AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_AlertServiceCentreArg);
11140
11141   return offset;
11142 }
11143
11144
11145 static const value_string gsm_map_T_alertReason_vals[] = {
11146   {   0, "msPresent" },
11147   {   1, "memoryAvailable" },
11148   { 0, NULL }
11149 };
11150
11151
11152 static int
11153 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_) {
11154   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11155                                   NULL);
11156
11157   return offset;
11158 }
11159 static int dissect_alertReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11160   return dissect_gsm_map_T_alertReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReason);
11161 }
11162
11163
11164 static const ber_sequence_t ReadyForSM_Arg_sequence[] = {
11165   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11166   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_alertReason },
11167   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertReasonIndicator },
11168   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11169   { 0, 0, 0, NULL }
11170 };
11171
11172 static int
11173 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_) {
11174   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11175                                    ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_ReadyForSM_Arg);
11176
11177   return offset;
11178 }
11179
11180
11181 static const ber_sequence_t ReadyForSM_Res_sequence[] = {
11182   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11183   { 0, 0, 0, NULL }
11184 };
11185
11186 static int
11187 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_) {
11188   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11189                                    ReadyForSM_Res_sequence, hf_index, ett_gsm_map_ReadyForSM_Res);
11190
11191   return offset;
11192 }
11193
11194
11195 static const value_string gsm_map_T_requestedDomain_vals[] = {
11196   {   0, "cs-Domain" },
11197   {   1, "ps-Domain" },
11198   { 0, NULL }
11199 };
11200
11201
11202 static int
11203 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_) {
11204   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11205                                   NULL);
11206
11207   return offset;
11208 }
11209 static int dissect_requestedDomain_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11210   return dissect_gsm_map_T_requestedDomain(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedDomain);
11211 }
11212
11213
11214 static const ber_sequence_t RequestedInfo_sequence[] = {
11215   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_flg_impl },
11216   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberState_flg_impl },
11217   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11218   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocation_impl },
11219   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedDomain_impl },
11220   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_flg_impl },
11221   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_classmark_impl },
11222   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpRequestedInfo_impl },
11223   { 0, 0, 0, NULL }
11224 };
11225
11226 static int
11227 dissect_gsm_map_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11228   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11229                                    RequestedInfo_sequence, hf_index, ett_gsm_map_RequestedInfo);
11230
11231   return offset;
11232 }
11233 static int dissect_requestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11234   return dissect_gsm_map_RequestedInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedInfo);
11235 }
11236
11237
11238 static const ber_sequence_t ProvideSubscriberInfoArg_sequence[] = {
11239   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11240   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
11241   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
11242   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11243   { 0, 0, 0, NULL }
11244 };
11245
11246 static int
11247 dissect_gsm_map_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11248   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11249                                    ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoArg);
11250
11251   return offset;
11252 }
11253
11254
11255 static const ber_sequence_t ProvideSubscriberInfoRes_sequence[] = {
11256   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
11257   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11258   { 0, 0, 0, NULL }
11259 };
11260
11261 static int
11262 dissect_gsm_map_ProvideSubscriberInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11263   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11264                                    ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoRes);
11265
11266   return offset;
11267 }
11268
11269
11270 static const ber_sequence_t AnyTimeInterrogationArg_sequence[] = {
11271   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity },
11272   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
11273   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
11274   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11275   { 0, 0, 0, NULL }
11276 };
11277
11278 static int
11279 dissect_gsm_map_AnyTimeInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11280   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11281                                    AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationArg);
11282
11283   return offset;
11284 }
11285
11286
11287 static const ber_sequence_t AnyTimeInterrogationRes_sequence[] = {
11288   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
11289   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11290   { 0, 0, 0, NULL }
11291 };
11292
11293 static int
11294 dissect_gsm_map_AnyTimeInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11295   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11296                                    AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationRes);
11297
11298   return offset;
11299 }
11300
11301
11302 static const ber_sequence_t SS_ForBS_Code_sequence[] = {
11303   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
11304   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
11305   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
11306   { 0, 0, 0, NULL }
11307 };
11308
11309 int
11310 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_) {
11311   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11312                                    SS_ForBS_Code_sequence, hf_index, ett_gsm_map_SS_ForBS_Code);
11313
11314   return offset;
11315 }
11316 static int dissect_requestedSS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11317   return dissect_gsm_map_SS_ForBS_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSS_Info);
11318 }
11319
11320
11321 static const value_string gsm_map_RequestedCAMEL_SubscriptionInfo_vals[] = {
11322   {   0, "o-CSI" },
11323   {   1, "t-CSI" },
11324   {   2, "vt-CSI" },
11325   {   3, "tif-CSI" },
11326   {   4, "gprs-CSI" },
11327   {   5, "mo-sms-CSI" },
11328   {   6, "ss-CSI" },
11329   {   7, "m-CSI" },
11330   {   8, "d-csi" },
11331   { 0, NULL }
11332 };
11333
11334
11335 static int
11336 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_) {
11337   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11338                                   NULL);
11339
11340   return offset;
11341 }
11342 static int dissect_requestedCAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11343   return dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCAMEL_SubscriptionInfo);
11344 }
11345 static int dissect_requestedCamel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11346   return dissect_gsm_map_RequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCamel_SubscriptionInfo);
11347 }
11348
11349
11350 static const value_string gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals[] = {
11351   {   0, "mt-sms-CSI" },
11352   {   1, "mg-csi" },
11353   {   2, "o-IM-CSI" },
11354   {   3, "d-IM-CSI" },
11355   {   4, "vt-IM-CSI" },
11356   { 0, NULL }
11357 };
11358
11359
11360 static int
11361 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_) {
11362   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11363                                   NULL);
11364
11365   return offset;
11366 }
11367 static int dissect_additionalRequestedCAMEL_SubscriptionInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11368   return dissect_gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo);
11369 }
11370
11371
11372 static const ber_sequence_t RequestedSubscriptionInfo_sequence[] = {
11373   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedSS_Info_impl },
11374   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_impl },
11375   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedCAMEL_SubscriptionInfo_impl },
11376   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_flg_impl },
11377   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_flg_impl },
11378   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11379   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_additionalRequestedCAMEL_SubscriptionInfo },
11380   { 0, 0, 0, NULL }
11381 };
11382
11383 static int
11384 dissect_gsm_map_RequestedSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11385   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11386                                    RequestedSubscriptionInfo_sequence, hf_index, ett_gsm_map_RequestedSubscriptionInfo);
11387
11388   return offset;
11389 }
11390 static int dissect_requestedSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11391   return dissect_gsm_map_RequestedSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSubscriptionInfo);
11392 }
11393
11394
11395 static const ber_sequence_t AnyTimeSubscriptionInterrogationArg_sequence[] = {
11396   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity_impl },
11397   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedSubscriptionInfo_impl },
11398   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
11399   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11400   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
11401   { 0, 0, 0, NULL }
11402 };
11403
11404 static int
11405 dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11406   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11407                                    AnyTimeSubscriptionInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationArg);
11408
11409   return offset;
11410 }
11411
11412
11413 static const ber_sequence_t CallForwardingData_sequence[] = {
11414   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_forwardingFeatureList },
11415   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
11416   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11417   { 0, 0, 0, NULL }
11418 };
11419
11420 static int
11421 dissect_gsm_map_CallForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11422   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11423                                    CallForwardingData_sequence, hf_index, ett_gsm_map_CallForwardingData);
11424
11425   return offset;
11426 }
11427 static int dissect_callForwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11428   return dissect_gsm_map_CallForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callForwardingData);
11429 }
11430
11431
11432
11433 static int
11434 dissect_gsm_map_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11435   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
11436                                             pinfo, tree, tvb, offset, hf_index,
11437                                             NULL);
11438
11439   return offset;
11440 }
11441 static int dissect_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11442   return dissect_gsm_map_Password(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_password);
11443 }
11444 static int dissect_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11445   return dissect_gsm_map_Password(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_password);
11446 }
11447
11448
11449
11450 static int
11451 dissect_gsm_map_WrongPasswordAttemptsCounter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11452   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11453                                   NULL);
11454
11455   return offset;
11456 }
11457 static int dissect_wrongPasswordAttemptsCounter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11458   return dissect_gsm_map_WrongPasswordAttemptsCounter(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
11459 }
11460 static int dissect_wrongPasswordAttemptsCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11461   return dissect_gsm_map_WrongPasswordAttemptsCounter(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
11462 }
11463
11464
11465 static const ber_sequence_t CallBarringData_sequence[] = {
11466   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ext_callBarringFeatureList },
11467   { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_password },
11468   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_wrongPasswordAttemptsCounter },
11469   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
11470   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11471   { 0, 0, 0, NULL }
11472 };
11473
11474 static int
11475 dissect_gsm_map_CallBarringData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11476   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11477                                    CallBarringData_sequence, hf_index, ett_gsm_map_CallBarringData);
11478
11479   return offset;
11480 }
11481 static int dissect_callBarringData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11482   return dissect_gsm_map_CallBarringData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringData);
11483 }
11484
11485
11486 static const ber_sequence_t ODB_Info_sequence[] = {
11487   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_odb_Data },
11488   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
11489   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11490   { 0, 0, 0, NULL }
11491 };
11492
11493 static int
11494 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_) {
11495   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11496                                    ODB_Info_sequence, hf_index, ett_gsm_map_ODB_Info);
11497
11498   return offset;
11499 }
11500 static int dissect_odb_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11501   return dissect_gsm_map_ODB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Info);
11502 }
11503
11504
11505 static const ber_sequence_t CAMEL_SubscriptionInfo_sequence[] = {
11506   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
11507   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
11508   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
11509   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
11510   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
11511   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
11512   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl },
11513   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
11514   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_NotificationToCSE_impl },
11515   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
11516   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
11517   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
11518   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
11519   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11520   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSIDeletedList_impl },
11521   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
11522   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
11523   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
11524   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_CSI_impl },
11525   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_BcsmCamelTDP_CriteriaList_impl },
11526   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_IM_CSI_impl },
11527   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_CSI_impl },
11528   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl },
11529   { 0, 0, 0, NULL }
11530 };
11531
11532 static int
11533 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_) {
11534   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11535                                    CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_CAMEL_SubscriptionInfo);
11536
11537   return offset;
11538 }
11539 static int dissect_camel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11540   return dissect_gsm_map_CAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camel_SubscriptionInfo);
11541 }
11542
11543
11544 static const ber_sequence_t AnyTimeSubscriptionInterrogationRes_sequence[] = {
11545   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callForwardingData_impl },
11546   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringData_impl },
11547   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
11548   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
11549   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_impl },
11550   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_impl },
11551   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11552   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVLR_impl },
11553   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInSGSN_impl },
11554   { 0, 0, 0, NULL }
11555 };
11556
11557 static int
11558 dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11559   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11560                                    AnyTimeSubscriptionInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationRes);
11561
11562   return offset;
11563 }
11564
11565
11566 static const asn_namedbit OfferedCamel4Functionalities_bits[] = {
11567   {  0, &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt, -1, -1, "initiateCallAttempt", NULL },
11568   {  1, &hf_gsm_map_OfferedCamel4Functionalities_splitLeg, -1, -1, "splitLeg", NULL },
11569   {  2, &hf_gsm_map_OfferedCamel4Functionalities_moveLeg, -1, -1, "moveLeg", NULL },
11570   {  3, &hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg, -1, -1, "disconnectLeg", NULL },
11571   {  4, &hf_gsm_map_OfferedCamel4Functionalities_entityReleased, -1, -1, "entityReleased", NULL },
11572   {  5, &hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument, -1, -1, "dfc-WithArgument", NULL },
11573   {  6, &hf_gsm_map_OfferedCamel4Functionalities_playTone, -1, -1, "playTone", NULL },
11574   {  7, &hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall, -1, -1, "dtmf-MidCall", NULL },
11575   {  8, &hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator, -1, -1, "chargingIndicator", NULL },
11576   {  9, &hf_gsm_map_OfferedCamel4Functionalities_alertingDP, -1, -1, "alertingDP", NULL },
11577   { 10, &hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting, -1, -1, "locationAtAlerting", NULL },
11578   { 11, &hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP, -1, -1, "changeOfPositionDP", NULL },
11579   { 12, &hf_gsm_map_OfferedCamel4Functionalities_or_Interactions, -1, -1, "or-Interactions", NULL },
11580   { 13, &hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements, -1, -1, "warningToneEnhancements", NULL },
11581   { 14, &hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements, -1, -1, "cf-Enhancements", NULL },
11582   { 15, &hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices, -1, -1, "subscribedEnhancedDialledServices", NULL },
11583   { 16, &hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices, -1, -1, "servingNetworkEnhancedDialledServices", NULL },
11584   { 17, &hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP, -1, -1, "criteriaForChangeOfPositionDP", NULL },
11585   { 18, &hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP, -1, -1, "serviceChangeDP", NULL },
11586   { 0, NULL, 0, 0, NULL, NULL }
11587 };
11588
11589 int
11590 dissect_gsm_map_OfferedCamel4Functionalities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11591   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
11592                                     OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_OfferedCamel4Functionalities,
11593                                     NULL);
11594
11595   return offset;
11596 }
11597 static int dissect_offeredCamel4Functionalities(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11598   return dissect_gsm_map_OfferedCamel4Functionalities(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4Functionalities);
11599 }
11600
11601
11602 static const value_string gsm_map_ModificationInstruction_vals[] = {
11603   {   0, "deactivate" },
11604   {   1, "activate" },
11605   { 0, NULL }
11606 };
11607
11608
11609 static int
11610 dissect_gsm_map_ModificationInstruction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11611   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11612                                   NULL);
11613
11614   return offset;
11615 }
11616 static int dissect_modifyNotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11617   return dissect_gsm_map_ModificationInstruction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyNotificationToCSE);
11618 }
11619 static int dissect_modifyCSI_State_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11620   return dissect_gsm_map_ModificationInstruction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyCSI_State);
11621 }
11622
11623
11624 static const ber_sequence_t ModificationRequestFor_CF_Info_sequence[] = {
11625   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11626   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
11627   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
11628   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_addr_impl },
11629   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
11630   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_noReplyConditionTime_impl },
11631   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11632   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11633   { 0, 0, 0, NULL }
11634 };
11635
11636 static int
11637 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_) {
11638   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11639                                    ModificationRequestFor_CF_Info_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CF_Info);
11640
11641   return offset;
11642 }
11643 static int dissect_modificationRequestFor_CF_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11644   return dissect_gsm_map_ModificationRequestFor_CF_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CF_Info);
11645 }
11646
11647
11648 static const ber_sequence_t ModificationRequestFor_CB_Info_sequence[] = {
11649   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11650   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ext_basicService_impl },
11651   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ext_ss_Status_impl },
11652   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
11653   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
11654   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11655   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11656   { 0, 0, 0, NULL }
11657 };
11658
11659 static int
11660 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_) {
11661   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11662                                    ModificationRequestFor_CB_Info_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CB_Info);
11663
11664   return offset;
11665 }
11666 static int dissect_modificationRequestFor_CB_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11667   return dissect_gsm_map_ModificationRequestFor_CB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CB_Info);
11668 }
11669
11670
11671 static const ber_sequence_t ModificationRequestFor_CSI_sequence[] = {
11672   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestedCamel_SubscriptionInfo_impl },
11673   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11674   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyCSI_State_impl },
11675   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11676   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_additionalRequestedCAMEL_SubscriptionInfo },
11677   { 0, 0, 0, NULL }
11678 };
11679
11680 static int
11681 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_) {
11682   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11683                                    ModificationRequestFor_CSI_sequence, hf_index, ett_gsm_map_ModificationRequestFor_CSI);
11684
11685   return offset;
11686 }
11687 static int dissect_modificationRequestFor_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11688   return dissect_gsm_map_ModificationRequestFor_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CSI);
11689 }
11690
11691
11692 static const ber_sequence_t ModificationRequestFor_ODB_data_sequence[] = {
11693   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_data_impl },
11694   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
11695   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11696   { 0, 0, 0, NULL }
11697 };
11698
11699 static int
11700 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_) {
11701   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11702                                    ModificationRequestFor_ODB_data_sequence, hf_index, ett_gsm_map_ModificationRequestFor_ODB_data);
11703
11704   return offset;
11705 }
11706 static int dissect_modificationRequestFor_ODB_data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11707   return dissect_gsm_map_ModificationRequestFor_ODB_data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_ODB_data);
11708 }
11709
11710
11711 static const ber_sequence_t AnyTimeModificationArg_sequence[] = {
11712   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity_impl },
11713   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
11714   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CF_Info_impl },
11715   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CB_Info_impl },
11716   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CSI_impl },
11717   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11718   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
11719   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_modificationRequestFor_ODB_data },
11720   { 0, 0, 0, NULL }
11721 };
11722
11723 static int
11724 dissect_gsm_map_AnyTimeModificationArg(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                                    AnyTimeModificationArg_sequence, hf_index, ett_gsm_map_AnyTimeModificationArg);
11727
11728   return offset;
11729 }
11730
11731
11732 static const ber_sequence_t Ext_ForwardingInfoFor_CSE_sequence[] = {
11733   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11734   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_forwardingFeatureList_impl },
11735   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
11736   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11737   { 0, 0, 0, NULL }
11738 };
11739
11740 static int
11741 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_) {
11742   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11743                                    Ext_ForwardingInfoFor_CSE_sequence, hf_index, ett_gsm_map_Ext_ForwardingInfoFor_CSE);
11744
11745   return offset;
11746 }
11747 static int dissect_forwardingInfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11748   return dissect_gsm_map_Ext_ForwardingInfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfoFor_CSE);
11749 }
11750
11751
11752 static const ber_sequence_t Ext_CallBarringInfoFor_CSE_sequence[] = {
11753   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
11754   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ext_callBarringFeatureList_impl },
11755   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
11756   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
11757   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
11758   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11759   { 0, 0, 0, NULL }
11760 };
11761
11762 static int
11763 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_) {
11764   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11765                                    Ext_CallBarringInfoFor_CSE_sequence, hf_index, ett_gsm_map_Ext_CallBarringInfoFor_CSE);
11766
11767   return offset;
11768 }
11769 static int dissect_callBarringInfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11770   return dissect_gsm_map_Ext_CallBarringInfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfoFor_CSE);
11771 }
11772
11773
11774 static const value_string gsm_map_Ext_SS_InfoFor_CSE_vals[] = {
11775   {   0, "forwardingInfoFor-CSE" },
11776   {   1, "callBarringInfoFor-CSE" },
11777   { 0, NULL }
11778 };
11779
11780 static const ber_choice_t Ext_SS_InfoFor_CSE_choice[] = {
11781   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfoFor_CSE_impl },
11782   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfoFor_CSE_impl },
11783   { 0, 0, 0, 0, NULL }
11784 };
11785
11786 static int
11787 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_) {
11788   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
11789                                  Ext_SS_InfoFor_CSE_choice, hf_index, ett_gsm_map_Ext_SS_InfoFor_CSE,
11790                                  NULL);
11791
11792   return offset;
11793 }
11794 static int dissect_ss_InfoFor_CSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11795   return dissect_gsm_map_Ext_SS_InfoFor_CSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_InfoFor_CSE);
11796 }
11797
11798
11799 static const ber_sequence_t AnyTimeModificationRes_sequence[] = {
11800   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_InfoFor_CSE_impl },
11801   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
11802   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11803   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
11804   { 0, 0, 0, NULL }
11805 };
11806
11807 static int
11808 dissect_gsm_map_AnyTimeModificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11809   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11810                                    AnyTimeModificationRes_sequence, hf_index, ett_gsm_map_AnyTimeModificationRes);
11811
11812   return offset;
11813 }
11814
11815
11816 static const ber_sequence_t NoteSubscriberDataModifiedArg_sequence[] = {
11817   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
11818   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
11819   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInfoFor_CSE_impl },
11820   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringInfoFor_CSE_impl },
11821   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
11822   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
11823   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allInformationSent },
11824   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11825   { 0, 0, 0, NULL }
11826 };
11827
11828 static int
11829 dissect_gsm_map_NoteSubscriberDataModifiedArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11830   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11831                                    NoteSubscriberDataModifiedArg_sequence, hf_index, ett_gsm_map_NoteSubscriberDataModifiedArg);
11832
11833   return offset;
11834 }
11835
11836
11837 static const ber_sequence_t NoteSubscriberDataModifiedRes_sequence[] = {
11838   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11839   { 0, 0, 0, NULL }
11840 };
11841
11842 static int
11843 dissect_gsm_map_NoteSubscriberDataModifiedRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11844   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11845                                    NoteSubscriberDataModifiedRes_sequence, hf_index, ett_gsm_map_NoteSubscriberDataModifiedRes);
11846
11847   return offset;
11848 }
11849
11850
11851 static const ber_sequence_t NoteMM_EventArg_sequence[] = {
11852   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
11853   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventMet_impl },
11854   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11855   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11856   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
11857   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCAMELPhases_impl },
11858   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11859   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_locationInformationGPRS },
11860   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_offeredCamel4Functionalities },
11861   { 0, 0, 0, NULL }
11862 };
11863
11864 static int
11865 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_) {
11866   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11867                                    NoteMM_EventArg_sequence, hf_index, ett_gsm_map_NoteMM_EventArg);
11868
11869   return offset;
11870 }
11871
11872
11873 static const ber_sequence_t NoteMM_EventRes_sequence[] = {
11874   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11875   { 0, 0, 0, NULL }
11876 };
11877
11878 static int
11879 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_) {
11880   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11881                                    NoteMM_EventRes_sequence, hf_index, ett_gsm_map_NoteMM_EventRes);
11882
11883   return offset;
11884 }
11885
11886
11887 static const value_string gsm_map_ModifyNotificationToCSE_vals[] = {
11888   {   0, "deactivate" },
11889   {   1, "activate" },
11890   { 0, NULL }
11891 };
11892
11893
11894 static int
11895 dissect_gsm_map_ModifyNotificationToCSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11896   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11897                                   NULL);
11898
11899   return offset;
11900 }
11901
11902
11903
11904 static int
11905 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_) {
11906   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11907                                        NULL);
11908
11909   return offset;
11910 }
11911 static int dissect_ss_Event_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11912   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Event);
11913 }
11914
11915
11916 static const ber_sequence_t T_ss_EventSpecification_sequence_of[1] = {
11917   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventSpecification_item },
11918 };
11919
11920 static int
11921 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_) {
11922   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
11923                                       T_ss_EventSpecification_sequence_of, hf_index, ett_gsm_map_T_ss_EventSpecification);
11924
11925   return offset;
11926 }
11927 static int dissect_ss_EventSpecification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11928   return dissect_gsm_map_T_ss_EventSpecification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification);
11929 }
11930
11931
11932 static const ber_sequence_t Ss_InvocationNotificationArg_sequence[] = {
11933   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
11934   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
11935   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ss_Event_impl },
11936   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_EventSpecification_impl },
11937   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
11938   { 0, 0, 0, NULL }
11939 };
11940
11941 static int
11942 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_) {
11943   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11944                                    Ss_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationArg);
11945
11946   return offset;
11947 }
11948
11949
11950 static const ber_sequence_t Ss_InvocationNotificationRes_sequence[] = {
11951   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
11952   { 0, 0, 0, NULL }
11953 };
11954
11955 static int
11956 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_) {
11957   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11958                                    Ss_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationRes);
11959
11960   return offset;
11961 }
11962
11963
11964
11965 static int
11966 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_) {
11967   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11968                                        NULL);
11969
11970   return offset;
11971 }
11972 static int dissect_codec_Info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11973   return dissect_gsm_map_CODEC_Info(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_codec_Info);
11974 }
11975
11976
11977
11978 static int
11979 dissect_gsm_map_CipheringAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11980   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11981                                        NULL);
11982
11983   return offset;
11984 }
11985 static int dissect_cipheringAlgorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11986   return dissect_gsm_map_CipheringAlgorithm(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cipheringAlgorithm);
11987 }
11988
11989
11990
11991 static int
11992 dissect_gsm_map_GroupKeyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
11993   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
11994                                   NULL);
11995
11996   return offset;
11997 }
11998 static int dissect_groupKeyNumber_Vk_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11999   return dissect_gsm_map_GroupKeyNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKeyNumber_Vk_Id);
12000 }
12001
12002
12003
12004 static int
12005 dissect_gsm_map_VSTK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12006   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12007                                        NULL);
12008
12009   return offset;
12010 }
12011 static int dissect_vstk_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12012   return dissect_gsm_map_VSTK(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vstk);
12013 }
12014
12015
12016
12017 static int
12018 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_) {
12019   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12020                                        NULL);
12021
12022   return offset;
12023 }
12024 static int dissect_vstk_rand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12025   return dissect_gsm_map_VSTK_RAND(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vstk_rand);
12026 }
12027
12028
12029 static const ber_sequence_t PrepareGroupCallArg_sequence[] = {
12030   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_teleservice },
12031   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_asciCallReference },
12032   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_codec_Info },
12033   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cipheringAlgorithm },
12034   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKeyNumber_Vk_Id_impl },
12035   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKey_impl },
12036   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
12037   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkFree_impl },
12038   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12039   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vstk_impl },
12040   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vstk_rand_impl },
12041   { 0, 0, 0, NULL }
12042 };
12043
12044 static int
12045 dissect_gsm_map_PrepareGroupCallArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12047                                    PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_PrepareGroupCallArg);
12048
12049   return offset;
12050 }
12051
12052
12053 static const ber_sequence_t PrepareGroupCallRes_sequence[] = {
12054   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupCallNumber },
12055   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12056   { 0, 0, 0, NULL }
12057 };
12058
12059 static int
12060 dissect_gsm_map_PrepareGroupCallRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12061   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12062                                    PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_PrepareGroupCallRes);
12063
12064   return offset;
12065 }
12066
12067
12068 static const ber_sequence_t SendGroupCallEndSignalArg_sequence[] = {
12069   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
12070   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12071   { 0, 0, 0, NULL }
12072 };
12073
12074 static int
12075 dissect_gsm_map_SendGroupCallEndSignalArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12076   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12077                                    SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalArg);
12078
12079   return offset;
12080 }
12081
12082
12083 static const ber_sequence_t SendGroupCallEndSignalRes_sequence[] = {
12084   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12085   { 0, 0, 0, NULL }
12086 };
12087
12088 static int
12089 dissect_gsm_map_SendGroupCallEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12090   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12091                                    SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalRes);
12092
12093   return offset;
12094 }
12095
12096
12097 static const ber_sequence_t ProcessGroupCallSignallingArg_sequence[] = {
12098   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequest_impl },
12099   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
12100   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseGroupCall_impl },
12101   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12102   { 0, 0, 0, NULL }
12103 };
12104
12105 static int
12106 dissect_gsm_map_ProcessGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12107   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12108                                    ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ProcessGroupCallSignallingArg);
12109
12110   return offset;
12111 }
12112
12113
12114 static const ber_sequence_t ForwardGroupCallSignallingArg_sequence[] = {
12115   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
12116   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequestAck_impl },
12117   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
12118   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRejectCommand_impl },
12119   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkSeizedCommand_impl },
12120   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseCommand_impl },
12121   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12122   { 0, 0, 0, NULL }
12123 };
12124
12125 static int
12126 dissect_gsm_map_ForwardGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12127   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12128                                    ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ForwardGroupCallSignallingArg);
12129
12130   return offset;
12131 }
12132
12133
12134 static const ber_sequence_t SGSN_Capability_sequence[] = {
12135   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_solsaSupportIndicator },
12136   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12137   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_superChargerSupportedInServingNetworkEntity_impl },
12138   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsEnhancementsSupportIndicator_impl },
12139   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
12140   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
12141   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
12142   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_smsCallBarringSupportIndicator_impl },
12143   { 0, 0, 0, NULL }
12144 };
12145
12146 static int
12147 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_) {
12148   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12149                                    SGSN_Capability_sequence, hf_index, ett_gsm_map_SGSN_Capability);
12150
12151   return offset;
12152 }
12153 static int dissect_sgsn_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12154   return dissect_gsm_map_SGSN_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Capability);
12155 }
12156
12157
12158 static const ber_sequence_t UpdateGprsLocationArg_sequence[] = {
12159   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
12160   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Number },
12161   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Address },
12162   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12163   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Capability_impl },
12164   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
12165   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ps_LCS_NotSupportedByUE_impl },
12166   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
12167   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
12168   { 0, 0, 0, NULL }
12169 };
12170
12171 static int
12172 dissect_gsm_map_UpdateGprsLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12173   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12174                                    UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_UpdateGprsLocationArg);
12175
12176   return offset;
12177 }
12178
12179
12180 static const ber_sequence_t UpdateGprsLocationRes_sequence[] = {
12181   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
12182   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
12183   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_add_Capability },
12184   { 0, 0, 0, NULL }
12185 };
12186
12187 static int
12188 dissect_gsm_map_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12189   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12190                                    UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_UpdateGprsLocationRes);
12191
12192   return offset;
12193 }
12194
12195
12196 static const ber_sequence_t SendRoutingInfoForGprsArg_sequence[] = {
12197   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12198   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12199   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
12200   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12201   { 0, 0, 0, NULL }
12202 };
12203
12204 static int
12205 dissect_gsm_map_SendRoutingInfoForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12206   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12207                                    SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsArg);
12208
12209   return offset;
12210 }
12211
12212
12213 static const ber_sequence_t SendRoutingInfoForGprsRes_sequence[] = {
12214   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
12215   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12216   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mobileNotReachableReason_impl },
12217   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12218   { 0, 0, 0, NULL }
12219 };
12220
12221 static int
12222 dissect_gsm_map_SendRoutingInfoForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12223   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12224                                    SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsRes);
12225
12226   return offset;
12227 }
12228
12229
12230 static const ber_sequence_t FailureReportArg_sequence[] = {
12231   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12232   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
12233   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12234   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12235   { 0, 0, 0, NULL }
12236 };
12237
12238 static int
12239 dissect_gsm_map_FailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12240   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12241                                    FailureReportArg_sequence, hf_index, ett_gsm_map_FailureReportArg);
12242
12243   return offset;
12244 }
12245
12246
12247 static const ber_sequence_t FailureReportRes_sequence[] = {
12248   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12249   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12250   { 0, 0, 0, NULL }
12251 };
12252
12253 static int
12254 dissect_gsm_map_FailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12255   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12256                                    FailureReportRes_sequence, hf_index, ett_gsm_map_FailureReportRes);
12257
12258   return offset;
12259 }
12260
12261
12262 static const ber_sequence_t NoteMsPresentForGprsArg_sequence[] = {
12263   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12264   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
12265   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
12266   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12267   { 0, 0, 0, NULL }
12268 };
12269
12270 static int
12271 dissect_gsm_map_NoteMsPresentForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12272   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12273                                    NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsArg);
12274
12275   return offset;
12276 }
12277
12278
12279 static const ber_sequence_t NoteMsPresentForGprsRes_sequence[] = {
12280   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12281   { 0, 0, 0, NULL }
12282 };
12283
12284 static int
12285 dissect_gsm_map_NoteMsPresentForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12286   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12287                                    NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsRes);
12288
12289   return offset;
12290 }
12291
12292
12293 static const value_string gsm_map_LocationEstimateType_vals[] = {
12294   {   0, "currentLocation" },
12295   {   1, "currentOrLastKnownLocation" },
12296   {   2, "initialLocation" },
12297   {   3, "activateDeferredLocation" },
12298   {   4, "cancelDeferredLocation" },
12299   { 0, NULL }
12300 };
12301
12302
12303 static int
12304 dissect_gsm_map_LocationEstimateType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12305   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12306                                   NULL);
12307
12308   return offset;
12309 }
12310 static int dissect_locationEstimateType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12311   return dissect_gsm_map_LocationEstimateType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
12312 }
12313
12314
12315 static const asn_namedbit DeferredLocationEventType_bits[] = {
12316   {  0, &hf_gsm_map_DeferredLocationEventType_msAvailable, -1, -1, "msAvailable", NULL },
12317   {  1, &hf_gsm_map_DeferredLocationEventType_enteringIntoArea, -1, -1, "enteringIntoArea", NULL },
12318   {  2, &hf_gsm_map_DeferredLocationEventType_leavingFromArea, -1, -1, "leavingFromArea", NULL },
12319   {  3, &hf_gsm_map_DeferredLocationEventType_beingInsideArea, -1, -1, "beingInsideArea", NULL },
12320   { 0, NULL, 0, 0, NULL, NULL }
12321 };
12322
12323 int
12324 dissect_gsm_map_DeferredLocationEventType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12325   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
12326                                     DeferredLocationEventType_bits, hf_index, ett_gsm_map_DeferredLocationEventType,
12327                                     NULL);
12328
12329   return offset;
12330 }
12331 static int dissect_deferredLocationEventType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12332   return dissect_gsm_map_DeferredLocationEventType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
12333 }
12334 static int dissect_deferredLocationEventType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12335   return dissect_gsm_map_DeferredLocationEventType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredLocationEventType);
12336 }
12337
12338
12339 static const ber_sequence_t LocationType_sequence[] = {
12340   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationEstimateType_impl },
12341   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredLocationEventType_impl },
12342   { 0, 0, 0, NULL }
12343 };
12344
12345 int
12346 dissect_gsm_map_LocationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12347   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12348                                    LocationType_sequence, hf_index, ett_gsm_map_LocationType);
12349
12350   return offset;
12351 }
12352 static int dissect_locationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12353   return dissect_gsm_map_LocationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationType);
12354 }
12355
12356
12357 static const value_string gsm_map_LCSClientType_vals[] = {
12358   {   0, "emergencyServices" },
12359   {   1, "valueAddedServices" },
12360   {   2, "plmnOperatorServices" },
12361   {   3, "lawfulInterceptServices" },
12362   { 0, NULL }
12363 };
12364
12365
12366 static int
12367 dissect_gsm_map_LCSClientType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12368   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12369                                   NULL);
12370
12371   return offset;
12372 }
12373 static int dissect_lcsClientType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12374   return dissect_gsm_map_LCSClientType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientType);
12375 }
12376
12377
12378
12379 static int
12380 dissect_gsm_map_NameString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12381   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
12382
12383   return offset;
12384 }
12385 static int dissect_nameString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12386   return dissect_gsm_map_NameString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nameString);
12387 }
12388
12389
12390 static const value_string gsm_map_LCS_FormatIndicator_vals[] = {
12391   {   0, "logicalName" },
12392   {   1, "e-mailAddress" },
12393   {   2, "msisdn" },
12394   {   3, "url" },
12395   {   4, "sipUrl" },
12396   { 0, NULL }
12397 };
12398
12399
12400 static int
12401 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_) {
12402   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12403                                   NULL);
12404
12405   return offset;
12406 }
12407 static int dissect_lcs_FormatIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12408   return dissect_gsm_map_LCS_FormatIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_FormatIndicator);
12409 }
12410
12411
12412 static const ber_sequence_t LCSClientName_sequence[] = {
12413   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
12414   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
12415   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_FormatIndicator_impl },
12416   { 0, 0, 0, NULL }
12417 };
12418
12419 int
12420 dissect_gsm_map_LCSClientName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12421   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12422                                    LCSClientName_sequence, hf_index, ett_gsm_map_LCSClientName);
12423
12424   return offset;
12425 }
12426 static int dissect_lcsClientName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12427   return dissect_gsm_map_LCSClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientName);
12428 }
12429
12430
12431
12432 static int
12433 dissect_gsm_map_RequestorIDString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12434   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
12435
12436   return offset;
12437 }
12438 static int dissect_requestorIDString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12439   return dissect_gsm_map_RequestorIDString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestorIDString);
12440 }
12441
12442
12443 static const ber_sequence_t LCSRequestorID_sequence[] = {
12444   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
12445   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestorIDString_impl },
12446   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_FormatIndicator_impl },
12447   { 0, 0, 0, NULL }
12448 };
12449
12450 int
12451 dissect_gsm_map_LCSRequestorID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12452   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12453                                    LCSRequestorID_sequence, hf_index, ett_gsm_map_LCSRequestorID);
12454
12455   return offset;
12456 }
12457 static int dissect_lcsRequestorID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12458   return dissect_gsm_map_LCSRequestorID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsRequestorID);
12459 }
12460
12461
12462 static const ber_sequence_t LCS_ClientID_sequence[] = {
12463   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lcsClientType_impl },
12464   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
12465   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientDialedByMS_impl },
12466   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientInternalID_impl },
12467   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
12468   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsAPN_impl },
12469   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsRequestorID_impl },
12470   { 0, 0, 0, NULL }
12471 };
12472
12473 static int
12474 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_) {
12475   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12476                                    LCS_ClientID_sequence, hf_index, ett_gsm_map_LCS_ClientID);
12477
12478   return offset;
12479 }
12480 static int dissect_lcs_ClientID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12481   return dissect_gsm_map_LCS_ClientID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
12482 }
12483 static int dissect_lcs_ClientID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12484   return dissect_gsm_map_LCS_ClientID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
12485 }
12486
12487
12488
12489 static int
12490 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_) {
12491   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12492                                        NULL);
12493
12494   return offset;
12495 }
12496 static int dissect_lcs_Priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12497   return dissect_gsm_map_LCS_Priority(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Priority);
12498 }
12499
12500
12501
12502 static int
12503 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_) {
12504   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12505                                        NULL);
12506
12507   return offset;
12508 }
12509 static int dissect_horizontal_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12510   return dissect_gsm_map_Horizontal_Accuracy(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_horizontal_accuracy);
12511 }
12512
12513
12514
12515 static int
12516 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_) {
12517   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12518                                        NULL);
12519
12520   return offset;
12521 }
12522 static int dissect_vertical_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12523   return dissect_gsm_map_Vertical_Accuracy(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vertical_accuracy);
12524 }
12525
12526
12527 static const value_string gsm_map_ResponseTimeCategory_vals[] = {
12528   {   0, "lowdelay" },
12529   {   1, "delaytolerant" },
12530   { 0, NULL }
12531 };
12532
12533
12534 static int
12535 dissect_gsm_map_ResponseTimeCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12536   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12537                                   NULL);
12538
12539   return offset;
12540 }
12541 static int dissect_responseTimeCategory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12542   return dissect_gsm_map_ResponseTimeCategory(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_responseTimeCategory);
12543 }
12544
12545
12546 static const ber_sequence_t ResponseTime_sequence[] = {
12547   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_responseTimeCategory },
12548   { 0, 0, 0, NULL }
12549 };
12550
12551 static int
12552 dissect_gsm_map_ResponseTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12553   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12554                                    ResponseTime_sequence, hf_index, ett_gsm_map_ResponseTime);
12555
12556   return offset;
12557 }
12558 static int dissect_responseTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12559   return dissect_gsm_map_ResponseTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_responseTime);
12560 }
12561
12562
12563 static const ber_sequence_t LCS_QoS_sequence[] = {
12564   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_horizontal_accuracy_impl },
12565   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verticalCoordinateRequest_impl },
12566   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vertical_accuracy_impl },
12567   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_responseTime_impl },
12568   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12569   { 0, 0, 0, NULL }
12570 };
12571
12572 int
12573 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_) {
12574   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12575                                    LCS_QoS_sequence, hf_index, ett_gsm_map_LCS_QoS);
12576
12577   return offset;
12578 }
12579 static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12580   return dissect_gsm_map_LCS_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_QoS);
12581 }
12582
12583
12584 static const asn_namedbit SupportedGADShapes_bits[] = {
12585   {  0, &hf_gsm_map_SupportedGADShapes_ellipsoidPoint, -1, -1, "ellipsoidPoint", NULL },
12586   {  1, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, -1, -1, "ellipsoidPointWithUncertaintyCircle", NULL },
12587   {  2, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse, -1, -1, "ellipsoidPointWithUncertaintyEllipse", NULL },
12588   {  3, &hf_gsm_map_SupportedGADShapes_polygon, -1, -1, "polygon", NULL },
12589   {  4, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude, -1, -1, "ellipsoidPointWithAltitude", NULL },
12590   {  5, &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid, -1, -1, "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", NULL },
12591   {  6, &hf_gsm_map_SupportedGADShapes_ellipsoidArc, -1, -1, "ellipsoidArc", NULL },
12592   { 0, NULL, 0, 0, NULL, NULL }
12593 };
12594
12595 int
12596 dissect_gsm_map_SupportedGADShapes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12597   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
12598                                     SupportedGADShapes_bits, hf_index, ett_gsm_map_SupportedGADShapes,
12599                                     NULL);
12600
12601   return offset;
12602 }
12603 static int dissect_supportedGADShapes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12604   return dissect_gsm_map_SupportedGADShapes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedGADShapes);
12605 }
12606
12607
12608
12609 int
12610 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_) {
12611   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12612                                        NULL);
12613
12614   return offset;
12615 }
12616 static int dissect_lcs_ReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12617   return dissect_gsm_map_LCS_ReferenceNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ReferenceNumber);
12618 }
12619
12620
12621
12622 static int
12623 dissect_gsm_map_LCSCodewordString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12624   offset = dissect_gsm_map_USSD_String(implicit_tag, tvb, offset, pinfo, tree, hf_index);
12625
12626   return offset;
12627 }
12628 static int dissect_lcsCodewordString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12629   return dissect_gsm_map_LCSCodewordString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsCodewordString);
12630 }
12631
12632
12633 static const ber_sequence_t LCSCodeword_sequence[] = {
12634   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
12635   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lcsCodewordString_impl },
12636   { 0, 0, 0, NULL }
12637 };
12638
12639 int
12640 dissect_gsm_map_LCSCodeword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12641   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12642                                    LCSCodeword_sequence, hf_index, ett_gsm_map_LCSCodeword);
12643
12644   return offset;
12645 }
12646 static int dissect_lcsCodeword_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12647   return dissect_gsm_map_LCSCodeword(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsCodeword);
12648 }
12649
12650
12651 static const value_string gsm_map_PrivacyCheckRelatedAction_vals[] = {
12652   {   0, "allowedWithoutNotification" },
12653   {   1, "allowedWithNotification" },
12654   {   2, "allowedIfNoResponse" },
12655   {   3, "restrictedIfNoResponse" },
12656   {   4, "notAllowed" },
12657   { 0, NULL }
12658 };
12659
12660
12661 static int
12662 dissect_gsm_map_PrivacyCheckRelatedAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12663   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12664                                   NULL);
12665
12666   return offset;
12667 }
12668 static int dissect_callSessionUnrelated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12669   return dissect_gsm_map_PrivacyCheckRelatedAction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callSessionUnrelated);
12670 }
12671 static int dissect_callSessionRelated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12672   return dissect_gsm_map_PrivacyCheckRelatedAction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callSessionRelated);
12673 }
12674
12675
12676 static const ber_sequence_t LCS_PrivacyCheck_sequence[] = {
12677   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_callSessionUnrelated_impl },
12678   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callSessionRelated_impl },
12679   { 0, 0, 0, NULL }
12680 };
12681
12682 static int
12683 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_) {
12684   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12685                                    LCS_PrivacyCheck_sequence, hf_index, ett_gsm_map_LCS_PrivacyCheck);
12686
12687   return offset;
12688 }
12689 static int dissect_lcs_PrivacyCheck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12690   return dissect_gsm_map_LCS_PrivacyCheck(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyCheck);
12691 }
12692
12693
12694 static const value_string gsm_map_AreaType_vals[] = {
12695   {   0, "countryCode" },
12696   {   1, "plmnId" },
12697   {   2, "locationAreaId" },
12698   {   3, "routingAreaId" },
12699   {   4, "cellGlobalId" },
12700   { 0, NULL }
12701 };
12702
12703
12704 static int
12705 dissect_gsm_map_AreaType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12706   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12707                                   NULL);
12708
12709   return offset;
12710 }
12711 static int dissect_areaType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12712   return dissect_gsm_map_AreaType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaType);
12713 }
12714
12715
12716
12717 static int
12718 dissect_gsm_map_AreaIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12719   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12720                                        NULL);
12721
12722   return offset;
12723 }
12724 static int dissect_areaIdentification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12725   return dissect_gsm_map_AreaIdentification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaIdentification);
12726 }
12727
12728
12729 static const ber_sequence_t Area_sequence[] = {
12730   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaType_impl },
12731   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_areaIdentification_impl },
12732   { 0, 0, 0, NULL }
12733 };
12734
12735 static int
12736 dissect_gsm_map_Area(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                                    Area_sequence, hf_index, ett_gsm_map_Area);
12739
12740   return offset;
12741 }
12742 static int dissect_AreaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12743   return dissect_gsm_map_Area(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_AreaList_item);
12744 }
12745
12746
12747 static const ber_sequence_t AreaList_sequence_of[1] = {
12748   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_AreaList_item },
12749 };
12750
12751 static int
12752 dissect_gsm_map_AreaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12753   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
12754                                       AreaList_sequence_of, hf_index, ett_gsm_map_AreaList);
12755
12756   return offset;
12757 }
12758 static int dissect_areaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12759   return dissect_gsm_map_AreaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaList);
12760 }
12761
12762
12763 static const ber_sequence_t AreaDefinition_sequence[] = {
12764   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaList_impl },
12765   { 0, 0, 0, NULL }
12766 };
12767
12768 static int
12769 dissect_gsm_map_AreaDefinition(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12770   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12771                                    AreaDefinition_sequence, hf_index, ett_gsm_map_AreaDefinition);
12772
12773   return offset;
12774 }
12775 static int dissect_areaDefinition_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12776   return dissect_gsm_map_AreaDefinition(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaDefinition);
12777 }
12778
12779
12780 static const value_string gsm_map_OccurrenceInfo_vals[] = {
12781   {   0, "oneTimeEvent" },
12782   {   1, "multipleTimeEvent" },
12783   { 0, NULL }
12784 };
12785
12786
12787 static int
12788 dissect_gsm_map_OccurrenceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12789   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12790                                   NULL);
12791
12792   return offset;
12793 }
12794 static int dissect_occurrenceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12795   return dissect_gsm_map_OccurrenceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_occurrenceInfo);
12796 }
12797
12798
12799
12800 static int
12801 dissect_gsm_map_IntervalTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12802   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12803                                   NULL);
12804
12805   return offset;
12806 }
12807 static int dissect_intervalTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12808   return dissect_gsm_map_IntervalTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_intervalTime);
12809 }
12810
12811
12812 static const ber_sequence_t AreaEventInfo_sequence[] = {
12813   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_areaDefinition_impl },
12814   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_occurrenceInfo_impl },
12815   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_intervalTime_impl },
12816   { 0, 0, 0, NULL }
12817 };
12818
12819 int
12820 dissect_gsm_map_AreaEventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12821   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12822                                    AreaEventInfo_sequence, hf_index, ett_gsm_map_AreaEventInfo);
12823
12824   return offset;
12825 }
12826 static int dissect_areaEventInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12827   return dissect_gsm_map_AreaEventInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_areaEventInfo);
12828 }
12829
12830
12831 static const ber_sequence_t ProvideSubscriberLocation_Arg_sequence[] = {
12832   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_locationType },
12833   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_mlc_Number },
12834   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ClientID_impl },
12835   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privacyOverride_impl },
12836   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12837   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
12838   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
12839   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
12840   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_Priority_impl },
12841   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
12842   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12843   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedGADShapes_impl },
12844   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ReferenceNumber_impl },
12845   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
12846   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsCodeword_impl },
12847   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyCheck_impl },
12848   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_areaEventInfo_impl },
12849   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h_gmlc_Address_impl },
12850   { 0, 0, 0, NULL }
12851 };
12852
12853 static int
12854 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_) {
12855   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12856                                    ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Arg);
12857
12858   return offset;
12859 }
12860
12861
12862
12863 int
12864 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_) {
12865   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12866                                        NULL);
12867
12868   return offset;
12869 }
12870 static int dissect_locationEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12871   return dissect_gsm_map_Ext_GeographicalInformation(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
12872 }
12873 static int dissect_locationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12874   return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
12875 }
12876
12877
12878
12879 int
12880 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_) {
12881   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12882                                        NULL);
12883
12884   return offset;
12885 }
12886 static int dissect_add_LocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12887   return dissect_gsm_map_Add_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_LocationEstimate);
12888 }
12889
12890
12891
12892 static int
12893 dissect_gsm_map_PositioningDataInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12894   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12895                                        NULL);
12896
12897   return offset;
12898 }
12899 static int dissect_geranPositioningData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12900   return dissect_gsm_map_PositioningDataInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranPositioningData);
12901 }
12902
12903
12904
12905 static int
12906 dissect_gsm_map_UtranPositioningDataInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12907   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
12908                                        NULL);
12909
12910   return offset;
12911 }
12912 static int dissect_utranPositioningData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12913   return dissect_gsm_map_UtranPositioningDataInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranPositioningData);
12914 }
12915
12916
12917 static const ber_sequence_t ProvideSubscriberLocation_Res_sequence[] = {
12918   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_locationEstimate },
12919   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
12920   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12921   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
12922   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredmt_lrResponseIndicator_impl },
12923   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranPositioningData_impl },
12924   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranPositioningData_impl },
12925   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellIdOrSai_impl },
12926   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
12927   { 0, 0, 0, NULL }
12928 };
12929
12930 static int
12931 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_) {
12932   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12933                                    ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Res);
12934
12935   return offset;
12936 }
12937
12938
12939 static const value_string gsm_map_TargetMS_vals[] = {
12940   {   0, "imsi" },
12941   {   1, "msisdn" },
12942   { 0, NULL }
12943 };
12944
12945 static const ber_choice_t TargetMS_choice[] = {
12946   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
12947   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
12948   { 0, 0, 0, 0, NULL }
12949 };
12950
12951 static int
12952 dissect_gsm_map_TargetMS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12953   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
12954                                  TargetMS_choice, hf_index, ett_gsm_map_TargetMS,
12955                                  NULL);
12956
12957   return offset;
12958 }
12959
12960
12961 static const ber_sequence_t RoutingInfoForLCS_Arg_sequence[] = {
12962   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mlcNumber_impl },
12963   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_targetMS_impl },
12964   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12965   { 0, 0, 0, NULL }
12966 };
12967
12968 static int
12969 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_) {
12970   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12971                                    RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Arg);
12972
12973   return offset;
12974 }
12975
12976
12977 static const ber_sequence_t LCSLocationInfo_sequence[] = {
12978   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_networkNode_Number },
12979   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
12980   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
12981   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
12982   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_additional_Number_impl },
12983   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
12984   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additional_LCS_CapabilitySets_impl },
12985   { 0, 0, 0, NULL }
12986 };
12987
12988 static int
12989 dissect_gsm_map_LCSLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
12990   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
12991                                    LCSLocationInfo_sequence, hf_index, ett_gsm_map_LCSLocationInfo);
12992
12993   return offset;
12994 }
12995 static int dissect_lcsLocationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12996   return dissect_gsm_map_LCSLocationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
12997 }
12998 static int dissect_lcsLocationInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
12999   return dissect_gsm_map_LCSLocationInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
13000 }
13001
13002
13003 static const ber_sequence_t RoutingInfoForLCS_Res_sequence[] = {
13004   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
13005   { BER_CLASS_CON, 1, 0, dissect_lcsLocationInfo },
13006   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
13007   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_v_gmlc_Address },
13008   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_h_gmlc_Address },
13009   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_ppr_Address },
13010   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_additional_v_gmlc_Address },
13011   { 0, 0, 0, NULL }
13012 };
13013
13014 static int
13015 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_) {
13016   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13017                                    RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Res);
13018
13019   return offset;
13020 }
13021
13022
13023 static const value_string gsm_map_LCS_Event_vals[] = {
13024   {   0, "emergencyCallOrigination" },
13025   {   1, "emergencyCallRelease" },
13026   {   2, "mo-lr" },
13027   {   3, "deferredmt-lrResponse" },
13028   { 0, NULL }
13029 };
13030
13031
13032 static int
13033 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_) {
13034   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13035                                   NULL);
13036
13037   return offset;
13038 }
13039 static int dissect_lcs_Event(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13040   return dissect_gsm_map_LCS_Event(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Event);
13041 }
13042
13043
13044 static const value_string gsm_map_TerminationCause_vals[] = {
13045   {   0, "normal" },
13046   {   1, "errorundefined" },
13047   {   2, "internalTimeout" },
13048   {   3, "congestion" },
13049   {   4, "mt-lrRestart" },
13050   {   5, "privacyViolation" },
13051   {   6, "shapeOfLocationEstimateNotSupported" },
13052   { 0, NULL }
13053 };
13054
13055
13056 static int
13057 dissect_gsm_map_TerminationCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13058   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13059                                   NULL);
13060
13061   return offset;
13062 }
13063 static int dissect_terminationCause_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13064   return dissect_gsm_map_TerminationCause(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_terminationCause);
13065 }
13066
13067
13068 static const ber_sequence_t Deferredmt_lrData_sequence[] = {
13069   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_deferredLocationEventType },
13070   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminationCause_impl },
13071   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsLocationInfo_impl },
13072   { 0, 0, 0, NULL }
13073 };
13074
13075 static int
13076 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_) {
13077   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13078                                    Deferredmt_lrData_sequence, hf_index, ett_gsm_map_Deferredmt_lrData);
13079
13080   return offset;
13081 }
13082 static int dissect_deferredmt_lrData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13083   return dissect_gsm_map_Deferredmt_lrData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deferredmt_lrData);
13084 }
13085
13086
13087 static const ber_sequence_t SubscriberLocationReport_Arg_sequence[] = {
13088   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_lcs_Event },
13089   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_ClientID },
13090   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcsLocationInfo },
13091   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
13092   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
13093   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
13094   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
13095   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
13096   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
13097   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
13098   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_slr_ArgExtensionContainer_impl },
13099   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_LocationEstimate_impl },
13100   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferredmt_lrData_impl },
13101   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ReferenceNumber_impl },
13102   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranPositioningData_impl },
13103   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranPositioningData_impl },
13104   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_cellIdOrSai_impl },
13105   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_h_gmlc_Address_impl },
13106   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsServiceTypeID_impl },
13107   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
13108   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pseudonymIndicator_impl },
13109   { 0, 0, 0, NULL }
13110 };
13111
13112 static int
13113 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_) {
13114   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13115                                    SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Arg);
13116
13117   return offset;
13118 }
13119
13120
13121 static const ber_sequence_t SubscriberLocationReport_Res_sequence[] = {
13122   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13123   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
13124   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
13125   { 0, 0, 0, NULL }
13126 };
13127
13128 static int
13129 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_) {
13130   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13131                                    SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Res);
13132
13133   return offset;
13134 }
13135
13136
13137
13138 static int
13139 dissect_gsm_map_SecurityParametersIndex(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13140   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13141                                        NULL);
13142
13143   return offset;
13144 }
13145 static int dissect_securityParametersIndex(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13146   return dissect_gsm_map_SecurityParametersIndex(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_securityParametersIndex);
13147 }
13148
13149
13150
13151 static int
13152 dissect_gsm_map_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13153   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13154                                   NULL);
13155
13156   return offset;
13157 }
13158 static int dissect_localValue2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13159   return dissect_gsm_map_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_localValue2);
13160 }
13161
13162
13163 static const value_string gsm_map_OperationCode_vals[] = {
13164   {   0, "localValue" },
13165   {   1, "globalValue" },
13166   { 0, NULL }
13167 };
13168
13169 static const ber_choice_t OperationCode_choice[] = {
13170   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue2 },
13171   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
13172   { 0, 0, 0, 0, NULL }
13173 };
13174
13175 static int
13176 dissect_gsm_map_OperationCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13177   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13178                                  OperationCode_choice, hf_index, ett_gsm_map_OperationCode,
13179                                  NULL);
13180
13181   return offset;
13182 }
13183 static int dissect_operationCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13184   return dissect_gsm_map_OperationCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_operationCode);
13185 }
13186
13187
13188 static const value_string gsm_map_ErrorCode_vals[] = {
13189   {   0, "localValue" },
13190   {   1, "globalValue" },
13191   { 0, NULL }
13192 };
13193
13194 static const ber_choice_t ErrorCode_choice[] = {
13195   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_localValue2 },
13196   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_globalValue },
13197   { 0, 0, 0, 0, NULL }
13198 };
13199
13200 static int
13201 dissect_gsm_map_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13202   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13203                                  ErrorCode_choice, hf_index, ett_gsm_map_ErrorCode,
13204                                  NULL);
13205
13206   return offset;
13207 }
13208 static int dissect_errorCode1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13209   return dissect_gsm_map_ErrorCode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_errorCode1);
13210 }
13211
13212
13213 static const value_string gsm_map_OriginalComponentIdentifier_vals[] = {
13214   {   0, "operationCode" },
13215   {   1, "errorCode" },
13216   {   2, "userInfo" },
13217   { 0, NULL }
13218 };
13219
13220 static const ber_choice_t OriginalComponentIdentifier_choice[] = {
13221   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_operationCode_impl },
13222   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_errorCode1_impl },
13223   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_userInfo_impl },
13224   { 0, 0, 0, 0, NULL }
13225 };
13226
13227 static int
13228 dissect_gsm_map_OriginalComponentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13229   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13230                                  OriginalComponentIdentifier_choice, hf_index, ett_gsm_map_OriginalComponentIdentifier,
13231                                  NULL);
13232
13233   return offset;
13234 }
13235 static int dissect_originalComponentIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13236   return dissect_gsm_map_OriginalComponentIdentifier(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_originalComponentIdentifier);
13237 }
13238
13239
13240
13241 static int
13242 dissect_gsm_map_InitialisationVector(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13243   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13244                                        NULL);
13245
13246   return offset;
13247 }
13248 static int dissect_initialisationVector(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13249   return dissect_gsm_map_InitialisationVector(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_initialisationVector);
13250 }
13251
13252
13253 static const ber_sequence_t SecurityHeader_sequence[] = {
13254   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_securityParametersIndex },
13255   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_originalComponentIdentifier },
13256   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_initialisationVector },
13257   { 0, 0, 0, NULL }
13258 };
13259
13260 int
13261 dissect_gsm_map_SecurityHeader(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13262   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13263                                    SecurityHeader_sequence, hf_index, ett_gsm_map_SecurityHeader);
13264
13265   return offset;
13266 }
13267 static int dissect_securityHeader(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13268   return dissect_gsm_map_SecurityHeader(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_securityHeader);
13269 }
13270
13271
13272
13273 int
13274 dissect_gsm_map_ProtectedPayload(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13275   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13276                                        NULL);
13277
13278   return offset;
13279 }
13280 static int dissect_protectedPayload(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13281   return dissect_gsm_map_ProtectedPayload(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protectedPayload);
13282 }
13283
13284
13285 static const ber_sequence_t SecureTransportArg_sequence[] = {
13286   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
13287   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
13288   { 0, 0, 0, NULL }
13289 };
13290
13291 static int
13292 dissect_gsm_map_SecureTransportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13293   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13294                                    SecureTransportArg_sequence, hf_index, ett_gsm_map_SecureTransportArg);
13295
13296   return offset;
13297 }
13298
13299
13300 static const ber_sequence_t SecureTransportRes_sequence[] = {
13301   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
13302   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
13303   { 0, 0, 0, NULL }
13304 };
13305
13306 static int
13307 dissect_gsm_map_SecureTransportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13308   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13309                                    SecureTransportRes_sequence, hf_index, ett_gsm_map_SecureTransportRes);
13310
13311   return offset;
13312 }
13313
13314
13315 static const value_string gsm_map_NetworkResource_vals[] = {
13316   {   0, "plmn" },
13317   {   1, "hlr" },
13318   {   2, "vlr" },
13319   {   3, "pvlr" },
13320   {   4, "controllingMSC" },
13321   {   5, "vmsc" },
13322   {   6, "eir" },
13323   {   7, "rss" },
13324   { 0, NULL }
13325 };
13326
13327
13328 static int
13329 dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13330   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13331                                   NULL);
13332
13333   return offset;
13334 }
13335 static int dissect_networkResource(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13336   return dissect_gsm_map_NetworkResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkResource);
13337 }
13338
13339
13340 static const ber_sequence_t T_extensibleSystemFailureParam_sequence[] = {
13341   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_networkResource },
13342   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13343   { 0, 0, 0, NULL }
13344 };
13345
13346 static int
13347 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_) {
13348   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13349                                    T_extensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_T_extensibleSystemFailureParam);
13350
13351   return offset;
13352 }
13353 static int dissect_extensibleSystemFailureParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13354   return dissect_gsm_map_T_extensibleSystemFailureParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleSystemFailureParam);
13355 }
13356
13357
13358 static const value_string gsm_map_SystemFailureParam_vals[] = {
13359   {   0, "networkResource" },
13360   {   1, "extensibleSystemFailureParam" },
13361   { 0, NULL }
13362 };
13363
13364 static const ber_choice_t SystemFailureParam_choice[] = {
13365   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_networkResource },
13366   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleSystemFailureParam },
13367   { 0, 0, 0, 0, NULL }
13368 };
13369
13370 static int
13371 dissect_gsm_map_SystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13372   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13373                                  SystemFailureParam_choice, hf_index, ett_gsm_map_SystemFailureParam,
13374                                  NULL);
13375
13376   return offset;
13377 }
13378
13379
13380 static const ber_sequence_t DataMissingParam_sequence[] = {
13381   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13382   { 0, 0, 0, NULL }
13383 };
13384
13385 static int
13386 dissect_gsm_map_DataMissingParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13387   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13388                                    DataMissingParam_sequence, hf_index, ett_gsm_map_DataMissingParam);
13389
13390   return offset;
13391 }
13392
13393
13394 static const ber_sequence_t UnexpectedDataParam_sequence[] = {
13395   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13396   { 0, 0, 0, NULL }
13397 };
13398
13399 static int
13400 dissect_gsm_map_UnexpectedDataParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13401   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13402                                    UnexpectedDataParam_sequence, hf_index, ett_gsm_map_UnexpectedDataParam);
13403
13404   return offset;
13405 }
13406
13407
13408 static const ber_sequence_t FacilityNotSupParam_sequence[] = {
13409   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13410   { 0, 0, 0, NULL }
13411 };
13412
13413 static int
13414 dissect_gsm_map_FacilityNotSupParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13415   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13416                                    FacilityNotSupParam_sequence, hf_index, ett_gsm_map_FacilityNotSupParam);
13417
13418   return offset;
13419 }
13420
13421
13422 static const ber_sequence_t OR_NotAllowedParam_sequence[] = {
13423   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13424   { 0, 0, 0, NULL }
13425 };
13426
13427 static int
13428 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_) {
13429   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13430                                    OR_NotAllowedParam_sequence, hf_index, ett_gsm_map_OR_NotAllowedParam);
13431
13432   return offset;
13433 }
13434
13435
13436 static const ber_sequence_t IncompatibleTerminalParam_sequence[] = {
13437   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13438   { 0, 0, 0, NULL }
13439 };
13440
13441 static int
13442 dissect_gsm_map_IncompatibleTerminalParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13443   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13444                                    IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_IncompatibleTerminalParam);
13445
13446   return offset;
13447 }
13448
13449
13450 static const ber_sequence_t ResourceLimitationParam_sequence[] = {
13451   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13452   { 0, 0, 0, NULL }
13453 };
13454
13455 static int
13456 dissect_gsm_map_ResourceLimitationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13457   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13458                                    ResourceLimitationParam_sequence, hf_index, ett_gsm_map_ResourceLimitationParam);
13459
13460   return offset;
13461 }
13462
13463
13464 static const value_string gsm_map_T_unknownSubscriberDiagnostic_vals[] = {
13465   {   0, "imsiUnknown" },
13466   {   1, "gprsSubscriptionUnknown" },
13467   { 0, NULL }
13468 };
13469
13470
13471 static int
13472 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_) {
13473   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13474                                   NULL);
13475
13476   return offset;
13477 }
13478 static int dissect_unknownSubscriberDiagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13479   return dissect_gsm_map_T_unknownSubscriberDiagnostic(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unknownSubscriberDiagnostic);
13480 }
13481
13482
13483 static const ber_sequence_t UnknownSubscriberParam_sequence[] = {
13484   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13485   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_unknownSubscriberDiagnostic },
13486   { 0, 0, 0, NULL }
13487 };
13488
13489 static int
13490 dissect_gsm_map_UnknownSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13491   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13492                                    UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_UnknownSubscriberParam);
13493
13494   return offset;
13495 }
13496
13497
13498 static const ber_sequence_t NumberChangedParam_sequence[] = {
13499   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13500   { 0, 0, 0, NULL }
13501 };
13502
13503 static int
13504 dissect_gsm_map_NumberChangedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13505   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13506                                    NumberChangedParam_sequence, hf_index, ett_gsm_map_NumberChangedParam);
13507
13508   return offset;
13509 }
13510
13511
13512 static const ber_sequence_t UnidentifiedSubParam_sequence[] = {
13513   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13514   { 0, 0, 0, NULL }
13515 };
13516
13517 static int
13518 dissect_gsm_map_UnidentifiedSubParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13519   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13520                                    UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_UnidentifiedSubParam);
13521
13522   return offset;
13523 }
13524
13525
13526 static const value_string gsm_map_T_roamingNotAllowedCause_vals[] = {
13527   {   0, "plmnRoamingNotAllowed" },
13528   {   3, "operatorDeterminedBarring" },
13529   { 0, NULL }
13530 };
13531
13532
13533 static int
13534 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_) {
13535   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13536                                   NULL);
13537
13538   return offset;
13539 }
13540 static int dissect_roamingNotAllowedCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13541   return dissect_gsm_map_T_roamingNotAllowedCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNotAllowedCause);
13542 }
13543
13544
13545 static const ber_sequence_t RoamingNotAllowedParam_sequence[] = {
13546   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_roamingNotAllowedCause },
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_RoamingNotAllowedParam(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                                    RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_RoamingNotAllowedParam);
13555
13556   return offset;
13557 }
13558
13559
13560 static const ber_sequence_t IllegalSubscriberParam_sequence[] = {
13561   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13562   { 0, 0, 0, NULL }
13563 };
13564
13565 static int
13566 dissect_gsm_map_IllegalSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13567   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13568                                    IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_IllegalSubscriberParam);
13569
13570   return offset;
13571 }
13572
13573
13574 static const ber_sequence_t IllegalEquipmentParam_sequence[] = {
13575   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13576   { 0, 0, 0, NULL }
13577 };
13578
13579 static int
13580 dissect_gsm_map_IllegalEquipmentParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13581   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13582                                    IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_IllegalEquipmentParam);
13583
13584   return offset;
13585 }
13586
13587
13588 static const ber_sequence_t BearerServNotProvParam_sequence[] = {
13589   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13590   { 0, 0, 0, NULL }
13591 };
13592
13593 static int
13594 dissect_gsm_map_BearerServNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13595   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13596                                    BearerServNotProvParam_sequence, hf_index, ett_gsm_map_BearerServNotProvParam);
13597
13598   return offset;
13599 }
13600
13601
13602 static const ber_sequence_t TeleservNotProvParam_sequence[] = {
13603   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13604   { 0, 0, 0, NULL }
13605 };
13606
13607 static int
13608 dissect_gsm_map_TeleservNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13609   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13610                                    TeleservNotProvParam_sequence, hf_index, ett_gsm_map_TeleservNotProvParam);
13611
13612   return offset;
13613 }
13614
13615
13616 static const ber_sequence_t TracingBufferFullParam_sequence[] = {
13617   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13618   { 0, 0, 0, NULL }
13619 };
13620
13621 static int
13622 dissect_gsm_map_TracingBufferFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13623   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13624                                    TracingBufferFullParam_sequence, hf_index, ett_gsm_map_TracingBufferFullParam);
13625
13626   return offset;
13627 }
13628
13629
13630 static const ber_sequence_t NoRoamingNbParam_sequence[] = {
13631   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13632   { 0, 0, 0, NULL }
13633 };
13634
13635 static int
13636 dissect_gsm_map_NoRoamingNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13637   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13638                                    NoRoamingNbParam_sequence, hf_index, ett_gsm_map_NoRoamingNbParam);
13639
13640   return offset;
13641 }
13642
13643
13644 static const value_string gsm_map_AbsentSubscriberReason_vals[] = {
13645   {   0, "imsiDetach" },
13646   {   1, "restrictedArea" },
13647   {   2, "noPageResponse" },
13648   {   3, "purgedMS" },
13649   { 0, NULL }
13650 };
13651
13652
13653 static int
13654 dissect_gsm_map_AbsentSubscriberReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13655   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13656                                   NULL);
13657
13658   return offset;
13659 }
13660 static int dissect_absentSubscriberReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13661   return dissect_gsm_map_AbsentSubscriberReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberReason);
13662 }
13663
13664
13665 static const ber_sequence_t AbsentSubscriberParam_sequence[] = {
13666   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13667   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_absentSubscriberReason },
13668   { 0, 0, 0, NULL }
13669 };
13670
13671 static int
13672 dissect_gsm_map_AbsentSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13673   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13674                                    AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_AbsentSubscriberParam);
13675
13676   return offset;
13677 }
13678
13679
13680 static const ber_sequence_t BusySubscriberParam_sequence[] = {
13681   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13682   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
13683   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Busy_impl },
13684   { 0, 0, 0, NULL }
13685 };
13686
13687 static int
13688 dissect_gsm_map_BusySubscriberParam(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                                    BusySubscriberParam_sequence, hf_index, ett_gsm_map_BusySubscriberParam);
13691
13692   return offset;
13693 }
13694
13695
13696 static const ber_sequence_t NoSubscriberReplyParam_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_NoSubscriberReplyParam(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                                    NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_NoSubscriberReplyParam);
13705
13706   return offset;
13707 }
13708
13709
13710 static const ber_sequence_t ForwardingViolationParam_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_ForwardingViolationParam(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                                    ForwardingViolationParam_sequence, hf_index, ett_gsm_map_ForwardingViolationParam);
13719
13720   return offset;
13721 }
13722
13723
13724 static const ber_sequence_t ForwardingFailedParam_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_ForwardingFailedParam(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                                    ForwardingFailedParam_sequence, hf_index, ett_gsm_map_ForwardingFailedParam);
13733
13734   return offset;
13735 }
13736
13737
13738 static const ber_sequence_t ATI_NotAllowedParam_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_ATI_NotAllowedParam(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                                    ATI_NotAllowedParam_sequence, hf_index, ett_gsm_map_ATI_NotAllowedParam);
13747
13748   return offset;
13749 }
13750
13751
13752 static const ber_sequence_t ATSI_NotAllowedParam_sequence[] = {
13753   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13754   { 0, 0, 0, NULL }
13755 };
13756
13757 static int
13758 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_) {
13759   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13760                                    ATSI_NotAllowedParam_sequence, hf_index, ett_gsm_map_ATSI_NotAllowedParam);
13761
13762   return offset;
13763 }
13764
13765
13766 static const ber_sequence_t ATM_NotAllowedParam_sequence[] = {
13767   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13768   { 0, 0, 0, NULL }
13769 };
13770
13771 static int
13772 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_) {
13773   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13774                                    ATM_NotAllowedParam_sequence, hf_index, ett_gsm_map_ATM_NotAllowedParam);
13775
13776   return offset;
13777 }
13778
13779
13780 static const ber_sequence_t IllegalSS_OperationParam_sequence[] = {
13781   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13782   { 0, 0, 0, NULL }
13783 };
13784
13785 static int
13786 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_) {
13787   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13788                                    IllegalSS_OperationParam_sequence, hf_index, ett_gsm_map_IllegalSS_OperationParam);
13789
13790   return offset;
13791 }
13792
13793
13794 static const ber_sequence_t SS_NotAvailableParam_sequence[] = {
13795   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13796   { 0, 0, 0, NULL }
13797 };
13798
13799 static int
13800 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_) {
13801   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13802                                    SS_NotAvailableParam_sequence, hf_index, ett_gsm_map_SS_NotAvailableParam);
13803
13804   return offset;
13805 }
13806
13807
13808 static const ber_sequence_t SS_SubscriptionViolationParam_sequence[] = {
13809   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13810   { 0, 0, 0, NULL }
13811 };
13812
13813 static int
13814 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_) {
13815   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13816                                    SS_SubscriptionViolationParam_sequence, hf_index, ett_gsm_map_SS_SubscriptionViolationParam);
13817
13818   return offset;
13819 }
13820
13821
13822 static const ber_sequence_t InformationNotAvailableParam_sequence[] = {
13823   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13824   { 0, 0, 0, NULL }
13825 };
13826
13827 static int
13828 dissect_gsm_map_InformationNotAvailableParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13829   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13830                                    InformationNotAvailableParam_sequence, hf_index, ett_gsm_map_InformationNotAvailableParam);
13831
13832   return offset;
13833 }
13834
13835
13836 static const ber_sequence_t SubBusyForMT_SMS_Param_sequence[] = {
13837   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13838   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gprsConnectionSuspended },
13839   { 0, 0, 0, NULL }
13840 };
13841
13842 static int
13843 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_) {
13844   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13845                                    SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_SubBusyForMT_SMS_Param);
13846
13847   return offset;
13848 }
13849
13850
13851 static const value_string gsm_map_CallBarringCause_vals[] = {
13852   {   0, "barringServiceActive" },
13853   {   1, "operatorBarring" },
13854   { 0, NULL }
13855 };
13856
13857
13858 static int
13859 dissect_gsm_map_CallBarringCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13860   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13861                                   NULL);
13862
13863   return offset;
13864 }
13865 static int dissect_callBarringCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13866   return dissect_gsm_map_CallBarringCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringCause);
13867 }
13868
13869
13870 static const ber_sequence_t ExtensibleCallBarredParam_sequence[] = {
13871   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
13872   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13873   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_unauthorisedMessageOriginator },
13874   { 0, 0, 0, NULL }
13875 };
13876
13877 static int
13878 dissect_gsm_map_ExtensibleCallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13879   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13880                                    ExtensibleCallBarredParam_sequence, hf_index, ett_gsm_map_ExtensibleCallBarredParam);
13881
13882   return offset;
13883 }
13884 static int dissect_extensibleCallBarredParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13885   return dissect_gsm_map_ExtensibleCallBarredParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleCallBarredParam);
13886 }
13887
13888
13889 static const value_string gsm_map_CallBarredParam_vals[] = {
13890   {   0, "callBarringCause" },
13891   {   1, "extensibleCallBarredParam" },
13892   { 0, NULL }
13893 };
13894
13895 static const ber_choice_t CallBarredParam_choice[] = {
13896   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
13897   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleCallBarredParam },
13898   { 0, 0, 0, 0, NULL }
13899 };
13900
13901 static int
13902 dissect_gsm_map_CallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
13903   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
13904                                  CallBarredParam_choice, hf_index, ett_gsm_map_CallBarredParam,
13905                                  NULL);
13906
13907   return offset;
13908 }
13909
13910
13911 static const value_string gsm_map_CUG_RejectCause_vals[] = {
13912   {   0, "incomingCallsBarredWithinCUG" },
13913   {   1, "subscriberNotMemberOfCUG" },
13914   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
13915   {   7, "calledPartySS-InteractionViolation" },
13916   { 0, NULL }
13917 };
13918
13919
13920 static int
13921 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_) {
13922   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13923                                   NULL);
13924
13925   return offset;
13926 }
13927 static int dissect_cug_RejectCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13928   return dissect_gsm_map_CUG_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause);
13929 }
13930
13931
13932 static const ber_sequence_t CUG_RejectParam_sequence[] = {
13933   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause },
13934   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13935   { 0, 0, 0, NULL }
13936 };
13937
13938 static int
13939 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_) {
13940   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13941                                    CUG_RejectParam_sequence, hf_index, ett_gsm_map_CUG_RejectParam);
13942
13943   return offset;
13944 }
13945
13946
13947 static const ber_sequence_t Or_NotAllowedParam_sequence[] = {
13948   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13949   { 0, 0, 0, NULL }
13950 };
13951
13952 static int
13953 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_) {
13954   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13955                                    Or_NotAllowedParam_sequence, hf_index, ett_gsm_map_Or_NotAllowedParam);
13956
13957   return offset;
13958 }
13959
13960
13961 static const value_string gsm_map_T_cug_RejectCause_vals[] = {
13962   {   0, "incomingCallsBarredWithinCUG" },
13963   {   1, "subscriberNotMemberOfCUG" },
13964   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
13965   {   7, "calledPartySS-InteractionViolation" },
13966   { 0, NULL }
13967 };
13968
13969
13970 static int
13971 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_) {
13972   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
13973                                   NULL);
13974
13975   return offset;
13976 }
13977 static int dissect_cug_RejectCause1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
13978   return dissect_gsm_map_T_cug_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause1);
13979 }
13980
13981
13982 static const ber_sequence_t Cug_RejectParam_sequence[] = {
13983   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause1 },
13984   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13985   { 0, 0, 0, NULL }
13986 };
13987
13988 static int
13989 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_) {
13990   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
13991                                    Cug_RejectParam_sequence, hf_index, ett_gsm_map_Cug_RejectParam);
13992
13993   return offset;
13994 }
13995
13996
13997 static const ber_sequence_t NoGroupCallNbParam_sequence[] = {
13998   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
13999   { 0, 0, 0, NULL }
14000 };
14001
14002 static int
14003 dissect_gsm_map_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14004   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14005                                    NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_NoGroupCallNbParam);
14006
14007   return offset;
14008 }
14009
14010
14011 static const ber_sequence_t SS_IncompatibilityCause_sequence[] = {
14012   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
14013   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
14014   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
14015   { 0, 0, 0, NULL }
14016 };
14017
14018 static int
14019 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_) {
14020   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14021                                    SS_IncompatibilityCause_sequence, hf_index, ett_gsm_map_SS_IncompatibilityCause);
14022
14023   return offset;
14024 }
14025
14026
14027 static const value_string gsm_map_PW_RegistrationFailureCause_vals[] = {
14028   {   0, "undetermined" },
14029   {   1, "invalidFormat" },
14030   {   2, "newPasswordsMismatch" },
14031   { 0, NULL }
14032 };
14033
14034
14035 static int
14036 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_) {
14037   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14038                                   NULL);
14039
14040   return offset;
14041 }
14042
14043
14044 static const ber_sequence_t ShortTermDenialParam_sequence[] = {
14045   { 0, 0, 0, NULL }
14046 };
14047
14048 static int
14049 dissect_gsm_map_ShortTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14050   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14051                                    ShortTermDenialParam_sequence, hf_index, ett_gsm_map_ShortTermDenialParam);
14052
14053   return offset;
14054 }
14055
14056
14057 static const ber_sequence_t LongTermDenialParam_sequence[] = {
14058   { 0, 0, 0, NULL }
14059 };
14060
14061 static int
14062 dissect_gsm_map_LongTermDenialParam(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                                    LongTermDenialParam_sequence, hf_index, ett_gsm_map_LongTermDenialParam);
14065
14066   return offset;
14067 }
14068
14069
14070 static const value_string gsm_map_SM_EnumeratedDeliveryFailureCause_vals[] = {
14071   {   0, "memoryCapacityExceeded" },
14072   {   1, "equipmentProtocolError" },
14073   {   2, "equipmentNotSM-Equipped" },
14074   {   3, "unknownServiceCentre" },
14075   {   4, "sc-Congestion" },
14076   {   5, "invalidSME-Address" },
14077   {   6, "subscriberNotSC-Subscriber" },
14078   { 0, NULL }
14079 };
14080
14081
14082 static int
14083 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_) {
14084   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14085                                   NULL);
14086
14087   return offset;
14088 }
14089 static int dissect_sm_EnumeratedDeliveryFailureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14090   return dissect_gsm_map_SM_EnumeratedDeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_EnumeratedDeliveryFailureCause);
14091 }
14092
14093
14094 static const ber_sequence_t SM_DeliveryFailureCause_sequence[] = {
14095   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_EnumeratedDeliveryFailureCause },
14096   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnosticInfo },
14097   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14098   { 0, 0, 0, NULL }
14099 };
14100
14101 static int
14102 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_) {
14103   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14104                                    SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_SM_DeliveryFailureCause);
14105
14106   return offset;
14107 }
14108
14109
14110 static const ber_sequence_t MessageWaitListFullParam_sequence[] = {
14111   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14112   { 0, 0, 0, NULL }
14113 };
14114
14115 static int
14116 dissect_gsm_map_MessageWaitListFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14117   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14118                                    MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_MessageWaitListFullParam);
14119
14120   return offset;
14121 }
14122
14123
14124 static const ber_sequence_t AbsentSubscriberSM_Param_sequence[] = {
14125   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_absentSubscriberDiagnosticSM },
14126   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14127   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
14128   { 0, 0, 0, NULL }
14129 };
14130
14131 static int
14132 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_) {
14133   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14134                                    AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_AbsentSubscriberSM_Param);
14135
14136   return offset;
14137 }
14138
14139
14140 static const ber_sequence_t UnauthorizedRequestingNetwork_Param_sequence[] = {
14141   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14142   { 0, 0, 0, NULL }
14143 };
14144
14145 static int
14146 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_) {
14147   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14148                                    UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_UnauthorizedRequestingNetwork_Param);
14149
14150   return offset;
14151 }
14152
14153
14154 static const value_string gsm_map_T_unauthorizedLCSClient_Diagnostic_vals[] = {
14155   {   0, "noAdditionalInformation" },
14156   {   1, "clientNotInMSPrivacyExceptionList" },
14157   {   2, "callToClientNotSetup" },
14158   {   3, "privacyOverrideNotApplicable" },
14159   {   4, "disallowedByLocalRegulatoryRequirements" },
14160   { 0, NULL }
14161 };
14162
14163
14164 static int
14165 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_) {
14166   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14167                                   NULL);
14168
14169   return offset;
14170 }
14171 static int dissect_unauthorizedLCSClient_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14172   return dissect_gsm_map_T_unauthorizedLCSClient_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorizedLCSClient_Diagnostic);
14173 }
14174
14175
14176 static const ber_sequence_t UnauthorizedLCSClient_Param_sequence[] = {
14177   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorizedLCSClient_Diagnostic_impl },
14178   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
14179   { 0, 0, 0, NULL }
14180 };
14181
14182 static int
14183 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_) {
14184   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14185                                    UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_UnauthorizedLCSClient_Param);
14186
14187   return offset;
14188 }
14189
14190
14191 static const value_string gsm_map_PositionMethodFailure_Diagnostic_vals[] = {
14192   {   0, "congestion" },
14193   {   1, "insufficientResources" },
14194   {   2, "insufficientMeasurementData" },
14195   {   3, "inconsistentMeasurementData" },
14196   {   4, "locationProcedureNotCompleted" },
14197   {   5, "locationProcedureNotSupportedByTargetMS" },
14198   {   6, "qoSNotAttainable" },
14199   {   7, "positionMethodNotAvailableInNetwork" },
14200   {   8, "positionMethodNotAvailableInLocationArea" },
14201   { 0, NULL }
14202 };
14203
14204
14205 static int
14206 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_) {
14207   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
14208                                   NULL);
14209
14210   return offset;
14211 }
14212 static int dissect_positionMethodFailure_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14213   return dissect_gsm_map_PositionMethodFailure_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_positionMethodFailure_Diagnostic);
14214 }
14215
14216
14217 static const ber_sequence_t PositionMethodFailure_Param_sequence[] = {
14218   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_positionMethodFailure_Diagnostic_impl },
14219   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
14220   { 0, 0, 0, NULL }
14221 };
14222
14223 static int
14224 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_) {
14225   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14226                                    PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_PositionMethodFailure_Param);
14227
14228   return offset;
14229 }
14230
14231
14232 static const ber_sequence_t UnknownOrUnreachableLCSClient_Param_sequence[] = {
14233   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14234   { 0, 0, 0, NULL }
14235 };
14236
14237 static int
14238 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_) {
14239   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14240                                    UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_UnknownOrUnreachableLCSClient_Param);
14241
14242   return offset;
14243 }
14244
14245
14246 static const ber_sequence_t MM_EventNotSupported_Param_sequence[] = {
14247   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14248   { 0, 0, 0, NULL }
14249 };
14250
14251 static int
14252 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_) {
14253   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14254                                    MM_EventNotSupported_Param_sequence, hf_index, ett_gsm_map_MM_EventNotSupported_Param);
14255
14256   return offset;
14257 }
14258
14259
14260 static const ber_sequence_t TargetCellOutsideGCA_Param_sequence[] = {
14261   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
14262   { 0, 0, 0, NULL }
14263 };
14264
14265 static int
14266 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_) {
14267   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14268                                    TargetCellOutsideGCA_Param_sequence, hf_index, ett_gsm_map_TargetCellOutsideGCA_Param);
14269
14270   return offset;
14271 }
14272
14273
14274 static const ber_sequence_t SecureTransportErrorParam_sequence[] = {
14275   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_securityHeader },
14276   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protectedPayload },
14277   { 0, 0, 0, NULL }
14278 };
14279
14280 static int
14281 dissect_gsm_map_SecureTransportErrorParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
14282   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
14283                                    SecureTransportErrorParam_sequence, hf_index, ett_gsm_map_SecureTransportErrorParam);
14284
14285   return offset;
14286 }
14287
14288 /*--- PDUs ---*/
14289
14290 static void dissect_Component_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
14291   dissect_gsm_map_Component(FALSE, tvb, 0, pinfo, tree, hf_gsm_map_Component_PDU);
14292 }
14293
14294
14295 /*--- End of included file: packet-gsm_map-fn.c ---*/
14296 #line 258 "packet-gsm_map-template.c"
14297
14298 const value_string gsm_map_opr_code_strings[] = {
14299   {   2, "updateLocation" },
14300   {   3, "cancelLocation" },
14301   {   4, "provideRoamingNumber" },
14302   {       5, "noteSubscriberDataModified" },    
14303   {   6, "resumeCallHandling" },
14304   {   7, "insertSubscriberData" },
14305   {   8, "deleteSubscriberData" },
14306   {   9, "sendParameters" },                                    /* map-ac infoRetrieval (14) version1 (1)*/
14307   {  10, "registerSS" },
14308   {  11, "eraseSS" },
14309   {  12, "activateSS" },
14310   {  13, "deactivateSS" },
14311   {  14, "interrogateSS" },
14312   {      15, "authenticationFailureReport" },   
14313   {  17, "registerPassword" },
14314   {  18, "getPassword" },
14315   {  19, "processUnstructuredSS-Data" },                /* map-ac networkFunctionalSs (18) version1 (1) */
14316   {  20, "releaseResources" },
14317   {  22, "sendRoutingInfo" },
14318   {  23, "updateGprsLocation" },
14319   {  24, "sendRoutingInfoForGprs" },
14320   {  25, "failureReport" },
14321   {  26, "noteMsPresentForGprs" },
14322   {  28, "performHandover" },                                   /* map-ac handoverControl (11) version1 (1)*/
14323   {  29, "sendEndSignal" },
14324   {  30, "performSubsequentHandover" },                 /* map-ac handoverControl (11) version1 (1) */
14325   {  31, "provideSIWFSNumber" },
14326   {  32, "sIWFSSignallingModify" },
14327   {  33, "processAccessSignalling" },
14328   {  34, "forwardAccessSignalling" },
14329   {  35, "noteInternalHandover" },                              /* map-ac handoverControl (11) version1 (1) */
14330   {  37, "reset" },
14331   {  38, "forwardCheckSS-Indication" },
14332   {  39, "prepareGroupCall" },
14333   {  40, "sendGroupCallEndSignal" },
14334   {  41, "processGroupCallSignalling" },
14335   {  42, "forwardGroupCallSignalling" },
14336   {  43, "checkIMEI" },
14337   {  44, "mt-forwardSM" },
14338   {  45, "sendRoutingInfoForSM" },
14339   {  46, "mo-forwardSM" },
14340   {  47, "reportSM-DeliveryStatus" },
14341   {  48, "noteSubscriberPresent" },                             /* map-ac mwdMngt (24) version1 (1) */
14342   {  49, "alertServiceCentreWithoutResult" },   /* map-ac shortMsgAlert (23) version1 (1) */
14343   {  50, "activateTraceMode" },
14344   {  51, "deactivateTraceMode" },
14345   {  52, "traceSubscriberActivity" },                   /* map-ac handoverControl (11) version1 (1) */
14346   {  54, "beginSubscriberActivity" },                   /* map-ac networkFunctionalSs (18) version1 (1) */
14347   {  55, "sendIdentification" },
14348   {  56, "sendAuthenticationInfo" },
14349   {  57, "restoreData" },
14350   {  58, "sendIMSI" },
14351   {  59, "processUnstructuredSS-Request" },
14352   {  60, "unstructuredSS-Request" },
14353   {  61, "unstructuredSS-Notify" },
14354   {  62, "anyTimeSubscriptionInterrogation" },
14355   {  63, "informServiceCentre" },
14356   {  64, "alertServiceCentre" },
14357   {  65, "anyTimeModification" },
14358   {  66, "readyForSM" },
14359   {  67, "purgeMS" },
14360   {  68, "prepareHandover" },
14361   {  69, "prepareSubsequentHandover" },
14362   {  70, "provideSubscriberInfo" },
14363   {  71, "anyTimeInterrogation" },
14364   {  72, "ss-InvocationNotification" },
14365   {  73, "setReportingState" },
14366   {  74, "statusReport" },
14367   {  75, "remoteUserFree" },
14368   {  76, "registerCC-Entry" },
14369   {  77, "eraseCC-Entry" },
14370   {  78, "secureTransportClass1" },
14371   {  79, "secureTransportClass2" },
14372   {  80, "secureTransportClass3" },
14373   {  81, "secureTransportClass4" },
14374   {  83, "provideSubscriberLocation" },
14375   {  85, "sendRoutingInfoForLCS" },
14376   {  86, "subscriberLocationReport" },
14377   {      87, "ist-Alert" },
14378   {      88, "ist-Command" },
14379   {  89, "noteMM-Event" },
14380   { 0, NULL }
14381 };
14382 static const value_string gsm_map_err_code_string_vals[] = {
14383     { 1,        "Unknown Subscriber" },
14384     { 3,        "Unknown MSC" },
14385     { 5,        "Unidentified Subscriber" },
14386     { 6,        "Absent Subscriber SM" },
14387     { 7,        "Unknown Equipment" },
14388     { 8,        "Roaming Not Allowed" },
14389     { 9,        "Illegal Subscriber" },
14390     { 10,       "Bearer Service Not Provisioned" },
14391     { 11,       "Teleservice Not Provisioned" },
14392     { 12,       "Illegal Equipment" },
14393     { 13,       "Call Barred" },
14394     { 14,       "Forwarding Violation" },
14395     { 15,       "CUG Reject" },
14396     { 16,       "Illegal SS Operation" },
14397     { 17,       "SS Error Status" },
14398     { 18,       "SS Not Available" },
14399     { 19,       "SS Subscription Violation" },
14400     { 20,       "SS Incompatibility" },
14401     { 21,       "Facility Not Supported" },
14402     { 25,       "No Handover Number Available" },
14403     { 26,       "Subsequent Handover Failure" },
14404     { 27,       "Absent Subscriber" },
14405     { 28,       "Incompatible Terminal" },
14406     { 29,       "Short Term Denial" },
14407     { 30,       "Long Term Denial" },
14408     { 31,       "Subscriber Busy For MT SMS" },
14409     { 32,       "SM Delivery Failure" },
14410     { 33,       "Message Waiting List Full" },
14411     { 34,       "System Failure" },
14412     { 35,       "Data Missing" },
14413     { 36,       "Unexpected Data Value" },
14414     { 37,       "PW Registration Failure" },
14415     { 38,       "Negative PW Check" },
14416     { 39,       "No Roaming Number Available" },
14417     { 40,       "Tracing Buffer Full" },
14418     { 42,       "Target Cell Outside Group Call Area" },
14419     { 43,       "Number Of PW Attempts Violation" },
14420     { 44,       "Number Changed" },
14421     { 45,       "Busy Subscriber" },
14422     { 46,       "No Subscriber Reply" },
14423     { 47,       "Forwarding Failed" },
14424     { 48,       "OR Not Allowed" },
14425     { 49,       "ATI Not Allowed" },
14426     { 50,       "No Group Call Number Available" },
14427     { 51,       "Resource Limitation" },
14428     { 52,       "Unauthorized Requesting Network" },
14429     { 53,       "Unauthorized LCS Client" },
14430     { 54,       "Position Method Failure" },
14431     { 58,       "Unknown Or Unreachable LCS Client" },
14432     { 59,       "MM Event Not Supported" },
14433     { 60,       "ATSI Not Allowed" },
14434     { 61,       "ATM Not Allowed" },
14435     { 62,       "Information Not Available" },
14436     { 71,       "Unknown Alphabet" },
14437     { 72,       "USSD Busy" },
14438     { 120,      "Nbr Sb Exceeded" },
14439     { 121,      "Rejected By User" },
14440     { 122,      "Rejected By Network" },
14441     { 123,      "Deflection To Served Subscriber" },
14442     { 124,      "Special Service Code" },
14443     { 125,      "Invalid Deflected To Number" },
14444     { 126,      "Max Number Of MPTY Participants Exceeded" },
14445     { 127,      "Resources Not Available" },
14446     { 0, NULL }
14447 };
14448 static const true_false_string gsm_map_extension_value = {
14449   "No Extension",
14450   "Extension"
14451 };
14452 static const value_string gsm_map_nature_of_number_values[] = {
14453         {   0x00,       "unknown" },
14454         {   0x01,       "International Number" },
14455         {   0x02,       "National Significant Number" },
14456         {   0x03,       "Network Specific Number" },
14457         {   0x04,       "Subscriber Number" },
14458         {   0x05,       "Reserved" },
14459         {   0x06,       "Abbreviated Number" },
14460         {   0x07,       "Reserved for extension" },
14461         { 0, NULL }
14462 };
14463 static const value_string gsm_map_number_plan_values[] = {
14464         {   0x00,       "unknown" },
14465         {   0x01,       "ISDN/Telephony Numbering (Rec ITU-T E.164)" },
14466         {   0x02,       "spare" },
14467         {   0x03,       "Data Numbering (ITU-T Rec. X.121)" },
14468         {   0x04,       "Telex Numbering (ITU-T Rec. F.69)" },
14469         {   0x05,       "spare" },
14470         {   0x06,       "Land Mobile Numbering (ITU-T Rec. E.212)" },
14471         {   0x07,       "spare" },
14472         {   0x08,       "National Numbering" },
14473         {   0x09,       "Private Numbering" },
14474         {   0x0f,       "Reserved for extension" },
14475         { 0, NULL }
14476 };
14477
14478 static const true_false_string gsm_map_Ss_Status_q_bit_values = {
14479   "Quiescent",
14480   "Operative"
14481 };
14482 static const true_false_string gsm_map_Ss_Status_p_values = {
14483   "Provisioned",
14484   "Not Provisioned"
14485 };
14486 static const true_false_string gsm_map_Ss_Status_r_values = {
14487   "Registered",
14488   "Not Registered"
14489 };
14490 static const true_false_string gsm_map_Ss_Status_a_values = {
14491   "Active",
14492   "not Active"
14493 };
14494
14495
14496 static int
14497 dissect_gsm_map_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
14498   offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
14499
14500   if (check_col(pinfo->cinfo, COL_INFO)){
14501     col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
14502   }
14503
14504   return offset;
14505 }
14506
14507 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14508
14509   guint8 octet;
14510
14511   switch(opcode){
14512   case  2: /*updateLocation*/   
14513           offset=dissect_gsm_map_UpdateLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
14514     break;
14515   case  3: /*cancelLocation*/
14516         octet = tvb_get_guint8(tvb,0) & 0xf;
14517         if ( octet == 3){ /*   */
14518                 offset = offset +2;
14519                 offset=dissect_gsm_map_CancelLocationArg(TRUE, tvb, offset, pinfo, tree, -1);
14520         }else{
14521     offset=dissect_gsm_map_CancelLocationArgV2(FALSE, tvb, offset, pinfo, tree, -1);
14522         }
14523     break;
14524   case  4: /*provideRoamingNumber*/
14525     offset=dissect_gsm_map_ProvideRoamingNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
14526     break;
14527   case  6: /*resumeCallHandling*/
14528     offset=dissect_gsm_map_ResumeCallHandlingArg(FALSE, tvb, offset, pinfo, tree, -1);
14529     break;
14530   case  7: /*insertSubscriberData*/
14531     offset=dissect_gsm_map_InsertSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14532     break;
14533   case  8: /*deleteSubscriberData*/
14534     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14535     break;
14536         /* TODO find out why this isn't in the ASN1 file
14537   case  9: sendParameters
14538     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14539     break;
14540         */
14541   case  10: /*registerSS*/
14542     offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14543     break;
14544   case  11: /*eraseSS*/
14545     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14546     break;
14547   case 12: /*activateSS*/
14548     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14549     break;
14550   case 13: /*deactivateSS*/
14551     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14552     break;
14553   case 14: /*interrogateSS*/
14554     offset=dissect_gsm_map_SS_ForBS_Code(FALSE, tvb, offset, pinfo, tree, -1);
14555     break;
14556   case 15: /*authenticationFailureReport*/
14557           offset=dissect_gsm_map_AuthenticationFailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
14558           break;
14559   case 17: /*registerPassword*/
14560     offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
14561     break;
14562   case 18: /*getPassword*/
14563     offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_getPassword);
14564     break;
14565   case 20: /*releaseResources*/
14566     offset=dissect_gsm_map_ReleaseResourcesArg(FALSE, tvb, offset, pinfo, tree, -1);
14567     break;
14568   case 22: /*sendRoutingInfo*/
14569     offset=dissect_gsm_map_SendRoutingInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
14570     break;
14571   case 23: /*updateGprsLocation*/
14572     offset=dissect_gsm_map_UpdateGprsLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
14573     break;
14574   case 24: /*sendRoutingInfoForGprs*/
14575     offset=dissect_gsm_map_SendRoutingInfoForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
14576     break;
14577   case 25: /*failureReport*/
14578     offset=dissect_gsm_map_FailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
14579     break;
14580   case 26: /*noteMsPresentForGprs*/
14581     offset=dissect_gsm_map_NoteMsPresentForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
14582     break;
14583   case 29: /*sendEndSignal*/
14584         octet = tvb_get_guint8(tvb,0) & 0xf;
14585         if ( octet == 3){ /* This is a V3 message ??? */
14586                 offset = offset +2;
14587                 offset=dissect_gsm_map_SendEndSignalArgV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14588         }else{
14589                 offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14590         }
14591     break;
14592   case 31: /*provideSIWFSNumbe*/
14593     offset=dissect_gsm_map_ProvideSIWFSNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
14594     break;
14595   case 32: /*sIWFSSignallingModify*/
14596     offset=dissect_gsm_map_SIWFSSignallingModifyArg(FALSE, tvb, offset, pinfo, tree, -1);
14597     break;
14598   case 33: /*processAccessSignalling*/
14599         octet = tvb_get_guint8(tvb,0) & 0xf;
14600         if ( octet == 3){ /* This is a V3 message ??? */
14601                 offset = offset +2;
14602                 offset = dissect_gsm_map_ProcessAccessSignallingArgV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14603         }else{
14604     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
14605         }
14606     break;
14607   case 34: /*forwardAccessSignalling*/
14608         octet = tvb_get_guint8(tvb,0) & 0xf;
14609         if ( octet == 3){ /* This is a V3 message ??? */
14610                 offset = offset +2;
14611                 offset=dissect_gsm_map_ForwardAccessSignallingArgV3(TRUE, tvb, offset, pinfo, tree, -1);
14612         }else{
14613                  offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
14614         }
14615     break;
14616   case 37: /*reset*/
14617     offset=dissect_gsm_map_ResetArg(FALSE, tvb, offset, pinfo, tree, -1);
14618     break;
14619   case 38: /*forwardCheckSS-Indication*/
14620     return offset;
14621     break;
14622   case 39: /*prepareGroupCall*/
14623     offset=dissect_gsm_map_PrepareGroupCallArg(FALSE, tvb, offset, pinfo, tree, -1);
14624     break;
14625   case 40: /*sendGroupCallEndSignal*/
14626     dissect_gsm_map_SendGroupCallEndSignalArg(FALSE, tvb, offset, pinfo, tree, -1);
14627     break;
14628   case 42: /*processGroupCallSignalling*/
14629     offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1);
14630     break;
14631   case 43: /*checkIMEI*/
14632           if (application_context_version < 2 ){
14633                   offset=dissect_gsm_map_CheckIMEIArgV2(FALSE, tvb, offset, pinfo, tree, -1);
14634           }else{
14635                   offset=dissect_gsm_map_CheckIMEIArgV2(FALSE, tvb, offset, pinfo, tree, -1);
14636           }
14637     break;
14638   case 44: /*mt-forwardSM*/
14639     offset=dissect_gsm_map_Mt_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14640     break;
14641   case 45: /*sendRoutingInfoForSM*/
14642     offset=dissect_gsm_map_RoutingInfoForSMArg(FALSE, tvb, offset, pinfo, tree, -1);
14643     break;
14644   case 46: /*mo-forwardSM*/
14645     offset=dissect_gsm_map_Mo_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14646     break;
14647   case 47: /*reportSM-DeliveryStatus*/
14648     offset=dissect_gsm_map_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, pinfo, tree, -1);
14649     break;
14650   case 50: /*activateTraceMode*/
14651     offset=dissect_gsm_map_ActivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
14652     break;
14653   case 51: /*deactivateTraceMode*/
14654     offset=dissect_gsm_map_DeactivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
14655     break;
14656   case 55: /*sendIdentification*/
14657     offset=dissect_gsm_map_SendIdentificationArg(FALSE, tvb, offset, pinfo, tree, -1);
14658     break;
14659   case 56: /*sendAuthenticationInfo*/
14660           if (application_context_version < 3 ){
14661                   offset=dissect_gsm_map_SendAuthenticationInfoArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
14662           }else{
14663                   offset=dissect_gsm_map_SendAuthenticationInfoArgV2(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoArg);
14664           }
14665         break;
14666   case 57: /*restoreData*/
14667         offset=dissect_gsm_map_RestoreDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14668         break;
14669   case 58: /*sendIMSI*/
14670         offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, pinfo, tree, -1);
14671         break;
14672   case 59: /*processUnstructuredSS-Request*/
14673     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14674     break;
14675   case 60: /*unstructuredSS-Request*/
14676     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14677     break;
14678   case 61: /*unstructuredSS-Notify*/
14679     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14680     break;
14681   case 62: /*AnyTimeSubscriptionInterrogation*/
14682           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
14683           break;
14684   case 63: /*informServiceCentre*/
14685     offset=dissect_gsm_map_InformServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
14686     break;
14687   case 64: /*alertServiceCentre*/
14688     offset=dissect_gsm_map_AlertServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
14689     break;
14690   case 65: /*AnyTimeModification*/
14691           offset=dissect_gsm_map_AnyTimeModificationArg(FALSE, tvb, offset, pinfo, tree, -1);
14692           break;
14693   case 66: /*readyForSM*/
14694     offset=dissect_gsm_map_ReadyForSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14695     break;
14696   case 67: /*purgeMS*/
14697     offset=dissect_gsm_map_PurgeMSArg(FALSE, tvb, offset, pinfo, tree, -1);
14698     break;
14699   case 68: /*prepareHandover*/
14700         octet = tvb_get_guint8(tvb,0) & 0xf;
14701         if ( octet == 3){ /* This is a V3 message ??? */
14702                 offset = offset +2;
14703                 offset=dissect_gsm_map_PrepareHO_ArgV3(TRUE, tvb, offset, pinfo, tree, -1);
14704         }else{
14705                 offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14706         }
14707     break;
14708   case 69: /*prepareSubsequentHandover*/
14709     offset=dissect_gsm_map_PrepareSubsequentHOArg(FALSE, tvb, offset, pinfo, tree, -1);
14710     break;
14711   case 70: /*provideSubscriberInfo*/
14712     offset=dissect_gsm_map_ProvideSubscriberInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
14713     break;
14714   case 71: /*anyTimeInterrogation*/
14715     offset=dissect_gsm_map_AnyTimeInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
14716     break;
14717   case 72: /*ss-InvocationNotificatio*/
14718     offset=dissect_gsm_map_Ss_InvocationNotificationArg(FALSE, tvb, offset, pinfo, tree, -1);
14719     break;
14720   case 73: /*setReportingState*/
14721     offset=dissect_gsm_map_SetReportingStateArg(FALSE, tvb, offset, pinfo, tree, -1);
14722     break;
14723   case 74: /*statusReport*/
14724     offset=dissect_gsm_map_StatusReportArg(FALSE, tvb, offset, pinfo, tree, -1);
14725     break;
14726   case 75: /*remoteUserFree*/
14727     offset=dissect_gsm_map_RemoteUserFreeArg(FALSE, tvb, offset, pinfo, tree, -1);
14728     break;
14729   case 76: /*registerCC-Entry*/
14730     offset=dissect_gsm_map_RegisterCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
14731     break;
14732   case 77: /*eraseCC-Entry*/
14733     offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
14734     break;
14735   case 78: /*secureTransportClass1*/
14736   case 79: /*secureTransportClass1*/
14737   case 80: /*secureTransportClass1*/
14738   case 81: /*secureTransportClass1*/
14739     offset=dissect_gsm_map_SecureTransportArg(FALSE, tvb, offset, pinfo, tree, -1);
14740     break;
14741   case 83: /*provideSubscriberLocation*/
14742     offset=dissect_gsm_map_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14743     break;
14744   case 85: /*sendRoutingInfoForLCS*/
14745     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14746     break;
14747   case 86: /*subscriberLocationReport*/
14748     offset=dissect_gsm_map_SubscriberLocationReport_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14749     break;
14750   case 87: /*ist-Alert*/
14751     offset=dissect_gsm_map_IST_AlertArg(FALSE, tvb, offset, pinfo, tree, -1);
14752     break;
14753   case 88: /*ist-Command*/
14754     offset=dissect_gsm_map_IST_CommandArg(FALSE, tvb, offset, pinfo, tree, -1);
14755     break;
14756   case 89: /*noteMM-Event*/
14757     offset=dissect_gsm_map_NoteMM_EventArg(FALSE, tvb, offset, pinfo, tree, -1);
14758     break;
14759   default:
14760     proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
14761   }
14762   return offset;
14763 }
14764
14765
14766 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14767         
14768   guint8 octet;
14769   switch(opcode){
14770   case  2: /*updateLocation*/
14771           octet = tvb_get_guint8(tvb,offset);
14772           /* As it seems like SEQUENCE OF sometimes is omitted, find out if it's there */
14773           if ( octet == 0x30 ){ /* Class 0 Univerasl, P/C 1 Constructed,Tag 16 Sequence OF */
14774     offset=dissect_gsm_map_UpdateLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
14775           }else{ /* Try decoding with IMPLICIT flag set */ 
14776                   offset=dissect_gsm_map_UpdateLocationRes(TRUE, tvb, offset, pinfo, tree, -1);
14777           }
14778     break;
14779   case  3: /*cancelLocation*/
14780     offset=dissect_gsm_map_CancelLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
14781     break;
14782   case  4: /*provideRoamingNumber*/
14783     offset=dissect_gsm_map_ProvideRoamingNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
14784     break;
14785   case  6: /*resumeCallHandling*/
14786     offset=dissect_gsm_map_ResumeCallHandlingRes(FALSE, tvb, offset, pinfo, tree, -1);
14787     break;
14788   case  7: /*insertSubscriberData*/
14789     offset=dissect_gsm_map_InsertSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
14790     break;
14791   case  8: /*deleteSubscriberData*/
14792     offset=dissect_gsm_map_DeleteSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
14793     break;
14794         /* TODO find out why this isn't in the ASN1 file
14795   case  9: sendParameters
14796     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
14797     break;
14798         */
14799   case  10: /*registerSS*/
14800     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14801     break;
14802   case  11: /*eraseSS*/
14803     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14804     break;
14805   case 12: /*activateSS*/
14806     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14807     break;
14808   case 13: /*deactivateSS*/
14809     offset=dissect_gsm_map_SS_Info(FALSE, tvb, offset, pinfo, tree, -1);
14810     break;
14811   case 14: /*interrogateSS*/
14812     offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
14813     break;
14814   case 15: /*authenticationFailureReport*/
14815           offset=dissect_gsm_map_AuthenticationFailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
14816           break;
14817   case 17: /*registerPassword*/
14818     offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
14819     break;
14820   case 18: /*getPassword*/
14821     offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentPassword);
14822     break;
14823   case 20: /*releaseResources*/
14824     offset=dissect_gsm_map_ReleaseResourcesRes(FALSE, tvb, offset, pinfo, tree, -1);
14825     break;
14826   case 22: /*sendRoutingInfo*/
14827           /* This is done to get around a problem with IMPLICIT tag:s */
14828     offset = offset +2;
14829     offset=dissect_gsm_map_SendRoutingInfoRes(TRUE, tvb, offset, pinfo, tree, -1);
14830     break;
14831   case 23: /*updateGprsLocation*/
14832     offset=dissect_gsm_map_UpdateGprsLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
14833     break;
14834   case 24: /*sendRoutingInfoForGprs*/
14835     offset=dissect_gsm_map_SendRoutingInfoForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
14836     break;
14837   case 25: /*failureReport*/
14838     offset=dissect_gsm_map_FailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
14839     break;
14840   case 26: /*noteMsPresentForGprs*/
14841     offset=dissect_gsm_map_NoteMsPresentForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
14842     break;
14843   case 29: /*sendEndSignal*/
14844           /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain 
14845            * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) }
14846            */
14847     offset=dissect_gsm_map_SendEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
14848     break;
14849   case 31: /*provideSIWFSNumbe*/
14850     offset=dissect_gsm_map_ProvideSIWFSNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
14851     break;
14852   case 32: /*provideSIWFSNumbe*/
14853     offset=dissect_gsm_map_SIWFSSignallingModifyRes(FALSE, tvb, offset, pinfo, tree, -1);
14854     break;
14855   case 39: /*prepareGroupCall*/
14856     offset=dissect_gsm_map_PrepareGroupCallRes(FALSE, tvb, offset, pinfo, tree, -1);
14857     break;
14858   case 40: /*sendGroupCallEndSignal*/
14859     dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
14860     break;
14861   case 43: /*checkIMEI*/
14862     offset=dissect_gsm_map_CheckIMEIRes(FALSE, tvb, offset, pinfo, tree, -1);
14863     break;
14864   case 44: /*mt-forwardSM*/
14865     offset=dissect_gsm_map_Mt_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14866     break;
14867   case 45: /*sendRoutingInfoForSM*/
14868     offset=dissect_gsm_map_RoutingInfoForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14869     break;
14870   case 46: /*mo-forwardSM*/
14871     offset=dissect_gsm_map_Mo_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14872     break;
14873   case 48: /*reportSM-DeliveryStatus*/
14874     offset=dissect_gsm_map_ReportSM_DeliveryStatusRes(FALSE, tvb, offset, pinfo, tree, -1);
14875     break;
14876   case 50: /*activateTraceMode*/
14877     offset=dissect_gsm_map_ActivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
14878     break;
14879   case 51: /*deactivateTraceMode*/
14880     offset=dissect_gsm_map_DeactivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
14881     break;
14882   case 55: /*sendIdentification
14883                         * In newer versions IMSI and authenticationSetList is OPTIONAL and two new parameters added
14884                         * however if the tag (3) is stripped of it should work with the 'new' def.(?) 
14885                         */
14886         octet = tvb_get_guint8(tvb,0) & 0xf;
14887         if ( octet == 3){ /* This is a V3 message ??? */
14888                 offset = offset +2;
14889         }
14890         offset=dissect_gsm_map_SendIdentificationRes(TRUE, tvb, offset, pinfo, tree, -1);
14891     break;
14892   case 56: /*sendAuthenticationInfo*/
14893         octet = tvb_get_guint8(tvb,0) & 0xf;
14894         if ( octet == 3){ /* This is a V3 message ??? */
14895                 offset = offset +2;
14896                 offset=dissect_gsm_map_SendAuthenticationInfoResV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes);
14897         }else{
14898                 offset=dissect_gsm_map_SendAuthenticationInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
14899         }
14900         break;
14901   case 57: /*restoreData*/
14902     offset=dissect_gsm_map_RestoreDataRes(FALSE, tvb, offset, pinfo, tree, -1);
14903     break;
14904   case 58: /*sendIMSI*/
14905     offset=dissect_gsm_map_IMSI(FALSE, tvb, offset, pinfo, tree,hf_gsm_map_imsi);
14906     break;
14907   case 59: /*unstructuredSS-Request*/
14908     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
14909     break;
14910   case 60: /*unstructuredSS-Request*/
14911     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
14912     break;
14913   case 61: /*unstructuredSS-Notify*/
14914     /* TRUE ? */
14915     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
14916     break;
14917   case 62: /*AnyTimeSubscriptionInterrogation*/
14918           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
14919           break;
14920   case 65: /*AnyTimeModification*/
14921           offset=dissect_gsm_map_AnyTimeModificationRes(FALSE, tvb, offset, pinfo, tree, -1);
14922           break;
14923   case 66: /*readyForSM*/
14924     offset=dissect_gsm_map_ReadyForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
14925     break;
14926   case 67: /*purgeMS*/
14927     offset=dissect_gsm_map_PurgeMSRes(FALSE, tvb, offset, pinfo, tree, -1);
14928     break;
14929   case 68: /*prepareHandover*/
14930         octet = tvb_get_guint8(tvb,0) & 0xf;
14931         if ( octet == 3){ /* This is a V3 message ??? */
14932                 offset = offset +2;
14933                 offset=dissect_gsm_map_PrepareHO_ResV3(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
14934         }else{
14935                 offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1);
14936         }
14937     break;
14938   case 69: /*prepareSubsequentHandover*/
14939      offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
14940     break;
14941   case 70: /*provideSubscriberInfo*/
14942     offset=dissect_gsm_map_ProvideSubscriberInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
14943     break;
14944   case 71: /*anyTimeInterrogation*/
14945     offset=dissect_gsm_map_AnyTimeInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
14946     break;
14947   case 72: /*ss-InvocationNotificatio*/
14948     offset=dissect_gsm_map_Ss_InvocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
14949     break;
14950   case 73: /*setReportingState*/
14951     offset=dissect_gsm_map_SetReportingStateRes(FALSE, tvb, offset, pinfo, tree, -1);
14952     break;
14953   case 74: /*statusReport*/
14954     offset=dissect_gsm_map_StatusReportRes(FALSE, tvb, offset, pinfo, tree, -1);
14955     break;
14956   case 75: /*remoteUserFree*/
14957     offset=dissect_gsm_map_RemoteUserFreeRes(FALSE, tvb, offset, pinfo, tree, -1);
14958     break;
14959   case 76: /*registerCC-Entry*/
14960     offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
14961     break;
14962   case 77: /*eraseCC-Entry*/
14963     offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
14964     break;
14965   case 78: /*secureTransportClass1*/
14966   case 79: /*secureTransportClass2*/
14967   case 80: /*secureTransportClass3*/
14968   case 81: /*secureTransportClass4*/
14969     offset=dissect_gsm_map_SecureTransportRes(FALSE, tvb, offset, pinfo, tree, -1);
14970     break;
14971   case 83: /*provideSubscriberLocation*/
14972     offset=dissect_gsm_map_ProvideSubscriberLocation_Res(FALSE, tvb, offset, pinfo, tree, -1);
14973     break;
14974   case 85: /*sendRoutingInfoForLCS*/
14975     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
14976     break;
14977   case 86: /*subscriberLocationReport*/
14978     offset=dissect_gsm_map_SubscriberLocationReport_Res(FALSE, tvb, offset, pinfo, tree, -1);
14979     break;
14980   case 87: /*ist-Alert*/
14981     offset=dissect_gsm_map_IST_AlertRes(FALSE, tvb, offset, pinfo, tree, -1);
14982     break;
14983   case 88: /*ist-Command*/
14984     offset=dissect_gsm_map_IST_CommandRes(FALSE, tvb, offset, pinfo, tree, -1);
14985     break;
14986   case 89: /*noteMM-Event*/
14987     offset=dissect_gsm_map_NoteMM_EventRes(FALSE, tvb, offset, pinfo, tree, -1);
14988     break;
14989  default:
14990     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
14991   }
14992   return offset;
14993 }
14994
14995
14996
14997 static int dissect_returnErrorData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
14998         
14999   switch(errorCode){
15000   case 1: /* UnknownSubscriberParam */
15001           offset=dissect_gsm_map_UnknownSubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
15002           break;
15003   case 4: /* SecureTransportErrorParam */
15004           offset=dissect_gsm_map_SecureTransportErrorParam(FALSE, tvb, offset, pinfo, tree, -1);
15005           break;
15006   case 5: /* UnidentifiedSubParam */
15007           offset=dissect_gsm_map_UnidentifiedSubParam(FALSE, tvb, offset, pinfo, tree, -1);
15008           break;
15009   case 6: /* AbsentSubscriberSM-Param */
15010           offset=dissect_gsm_map_AbsentSubscriberSM_Param(FALSE, tvb, offset, pinfo, tree, -1);
15011           break;
15012   case 8: /* RoamingNotAllowedParam */
15013           offset=dissect_gsm_map_RoamingNotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15014           break;
15015   case 9: /* IllegalSubscriberParam */
15016           offset=dissect_gsm_map_IllegalSubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
15017           break;
15018   case 10: /* BearerServNotProvParam */
15019           offset=dissect_gsm_map_BearerServNotProvParam(FALSE, tvb, offset, pinfo, tree, -1);
15020           break;
15021   case 11: /* TeleservNotProvParam */
15022           offset=dissect_gsm_map_TeleservNotProvParam(FALSE, tvb, offset, pinfo, tree, -1);
15023           break;
15024   case 12: /* IllegalEquipmentParam */
15025           offset=dissect_gsm_map_IllegalEquipmentParam(FALSE, tvb, offset, pinfo, tree, -1);
15026           break;
15027   case 13: /* CallBarredParam */
15028           offset=dissect_gsm_map_CallBarredParam(FALSE, tvb, offset, pinfo, tree, -1);
15029           break;
15030   case 14: /* ForwardingViolationParam */
15031           offset=dissect_gsm_map_ForwardingViolationParam(FALSE, tvb, offset, pinfo, tree, -1);
15032           break;
15033   case 15: /* CUG-RejectParam */
15034           offset=dissect_gsm_map_CUG_RejectParam(FALSE, tvb, offset, pinfo, tree, -1);
15035           break;
15036   case 16: /* IllegalSS-OperationParam */
15037           offset=dissect_gsm_map_IllegalSS_OperationParam(FALSE, tvb, offset, pinfo, tree, -1);
15038           break;
15039   case 18: /* SS-NotAvailableParam */
15040           offset=dissect_gsm_map_SS_NotAvailableParam(FALSE, tvb, offset, pinfo, tree, -1);
15041           break;
15042   case 19: /* SS-SubscriptionViolationParam */
15043           offset=dissect_gsm_map_SS_SubscriptionViolationParam(FALSE, tvb, offset, pinfo, tree, -1);
15044           break;
15045   case 20: /* SS-IncompatibilityCause */
15046           offset=dissect_gsm_map_SS_IncompatibilityCause(FALSE, tvb, offset, pinfo, tree, -1);
15047           break;
15048   case 21: /* FacilityNotSupParam */
15049           offset=dissect_gsm_map_FacilityNotSupParam(FALSE, tvb, offset, pinfo, tree, -1);
15050           break;
15051   case 27: /* AbsentSubscriberParam */
15052           offset=dissect_gsm_map_AbsentSubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
15053           break;
15054   case 28: /* IncompatibleTerminalParam */
15055           offset=dissect_gsm_map_IncompatibleTerminalParam(FALSE, tvb, offset, pinfo, tree, -1);
15056           break;
15057   case 29: /* ShortTermDenialParam */
15058           offset=dissect_gsm_map_ShortTermDenialParam(FALSE, tvb, offset, pinfo, tree, -1);
15059           break;
15060   case 30: /* LongTermDenialParam */
15061           offset=dissect_gsm_map_LongTermDenialParam(FALSE, tvb, offset, pinfo, tree, -1);
15062           break;
15063   case 31: /* SubBusyForMT-SMS-Param */
15064           offset=dissect_gsm_map_SubBusyForMT_SMS_Param(FALSE, tvb, offset, pinfo, tree, -1);
15065           break;
15066   case 32: /* SM-DeliveryFailureCause */
15067           offset=dissect_gsm_map_SM_DeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, -1);
15068           break;
15069   case 33: /* MessageWaitListFullParam */
15070           offset=dissect_gsm_map_MessageWaitListFullParam(FALSE, tvb, offset, pinfo, tree, -1);
15071           break;
15072   case 34: /* SystemFailureParam */
15073           offset=dissect_gsm_map_SystemFailureParam(FALSE, tvb, offset, pinfo, tree, -1);
15074           break;
15075   case 35: /* DataMissingParam */
15076           offset=dissect_gsm_map_DataMissingParam(FALSE, tvb, offset, pinfo, tree, -1);
15077           break;
15078   case 36: /* UnexpectedDataParam */
15079           offset=dissect_gsm_map_UnexpectedDataParam(FALSE, tvb, offset, pinfo, tree, -1);
15080           break;
15081   case 37: /* PW-RegistrationFailureCause */
15082           offset=dissect_gsm_map_PW_RegistrationFailureCause(FALSE, tvb, offset, pinfo, tree, -1);
15083           break;
15084   case 39: /* NoRoamingNbParam */
15085           offset=dissect_gsm_map_NoRoamingNbParam(FALSE, tvb, offset, pinfo, tree, -1);
15086           break;
15087   case 40: /* TracingBufferFullParam */
15088           offset=dissect_gsm_map_TracingBufferFullParam(FALSE, tvb, offset, pinfo, tree, -1);
15089           break;
15090   case 42: /* TargetCellOutsideGCA-Param */
15091           offset=dissect_gsm_map_TargetCellOutsideGCA_Param(FALSE, tvb, offset, pinfo, tree, -1);
15092           break;
15093   case 44: /* NumberChangedParam */
15094           offset=dissect_gsm_map_NumberChangedParam(FALSE, tvb, offset, pinfo, tree, -1);
15095           break;
15096   case 45: /* BusySubscriberParam */
15097           offset=dissect_gsm_map_BusySubscriberParam(FALSE, tvb, offset, pinfo, tree, -1);
15098           break;
15099   case 46: /* NoSubscriberReplyParam */
15100           offset=dissect_gsm_map_NoSubscriberReplyParam(FALSE, tvb, offset, pinfo, tree, -1);
15101           break;
15102   case 47: /* ForwardingFailedParam */
15103           offset=dissect_gsm_map_ForwardingFailedParam(FALSE, tvb, offset, pinfo, tree, -1);
15104           break;
15105   case 48: /* OR-NotAllowedParam */
15106           offset=dissect_gsm_map_OR_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15107           break;
15108   case 49: /* ATI-NotAllowedParam */
15109           offset=dissect_gsm_map_ATI_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15110           break;
15111   case 50: /* NoGroupCallNbParam */
15112           offset=dissect_gsm_map_NoGroupCallNbParam(FALSE, tvb, offset, pinfo, tree, -1);
15113           break;
15114   case 51: /* ResourceLimitationParam */
15115           offset=dissect_gsm_map_ResourceLimitationParam(FALSE, tvb, offset, pinfo, tree, -1);
15116           break;
15117   case 52: /* UnauthorizedRequestingNetwork-Param */
15118           offset=dissect_gsm_map_UnauthorizedRequestingNetwork_Param(FALSE, tvb, offset, pinfo, tree, -1);
15119           break;
15120   case 53: /* UnauthorizedLCSClient-Param */
15121           offset=dissect_gsm_map_UnauthorizedLCSClient_Param(FALSE, tvb, offset, pinfo, tree, -1);
15122           break;
15123   case 54: /* PositionMethodFailure-Param */
15124           offset=dissect_gsm_map_PositionMethodFailure_Param(FALSE, tvb, offset, pinfo, tree, -1);
15125           break;
15126   case 58: /* UnknownOrUnreachableLCSClient-Param */
15127           offset=dissect_gsm_map_UnknownOrUnreachableLCSClient_Param(FALSE, tvb, offset, pinfo, tree, -1);
15128           break;
15129   case 59: /* MM-EventNotSupported-Param */
15130           offset=dissect_gsm_map_MM_EventNotSupported_Param(FALSE, tvb, offset, pinfo, tree, -1);
15131           break;
15132   case 60: /* ATSI-NotAllowedParam */
15133           offset=dissect_gsm_map_ATSI_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15134           break;
15135   case 61: /* ATM-NotAllowedParam */
15136           offset=dissect_gsm_map_ATM_NotAllowedParam(FALSE, tvb, offset, pinfo, tree, -1);
15137           break;
15138   case 62: /* InformationNotAvailableParam */
15139           offset=dissect_gsm_map_InformationNotAvailableParam(FALSE, tvb, offset, pinfo, tree, -1);
15140           break;
15141   default:
15142           proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob");
15143           break;
15144   }
15145   return offset;
15146 }
15147 static guint8 gsmmap_pdu_type = 0;
15148 static guint8 gsm_map_pdu_size = 0;
15149
15150 static int
15151 dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) {
15152
15153   char *version_ptr;
15154
15155   opcode = 0;
15156   application_context_version = 0;
15157   if (pinfo->private_data != NULL){
15158     version_ptr = strrchr(pinfo->private_data,'.');
15159         if (version_ptr) {
15160                 application_context_version = atoi(version_ptr+1);
15161         }
15162   }
15163
15164   gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
15165   /* Get the length and add 2 */
15166   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
15167
15168   if (check_col(pinfo->cinfo, COL_INFO)){
15169     col_set_str(pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_map_Component_vals, "Unknown GSM-MAP PDU (%u)"));
15170   }
15171   offset = dissect_gsm_map_Component(FALSE, tvb, 0, pinfo, tree, hf_gsm_map_Component_PDU);
15172   return offset;
15173 /*
15174   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
15175                               GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU, NULL);
15176 */
15177
15178   return offset;
15179 }
15180
15181
15182
15183
15184 static void
15185 dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
15186 {
15187     proto_item          *item=NULL;
15188     proto_tree          *tree=NULL;
15189     /* Used for gsm_map TAP */
15190     static              gsm_map_tap_rec_t tap_rec;
15191     gint                op_idx;
15192
15193
15194     if (check_col(pinfo->cinfo, COL_PROTOCOL))
15195     {
15196         col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP");
15197     }
15198
15199     top_tree = parent_tree;
15200
15201     /* create display subtree for the protocol */
15202     if(parent_tree){
15203         item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
15204         tree = proto_item_add_subtree(item, ett_gsm_map);
15205     }
15206
15207     dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, pinfo, tree, -1);
15208     match_strval_idx(opcode, gsm_map_opr_code_strings, &op_idx);
15209
15210     tap_rec.invoke = FALSE;
15211     if ( gsmmap_pdu_type  == 1 )
15212         tap_rec.invoke = TRUE;
15213     tap_rec.opr_code_idx = op_idx;
15214     tap_rec.size = gsm_map_pdu_size;
15215
15216     tap_queue_packet(gsm_map_tap, pinfo, &tap_rec);
15217 }
15218
15219 const value_string ssCode_vals[] = {
15220   { 0x00, "allSS - all SS" },
15221   { 0x10 ,"allLineIdentificationSS - all line identification SS" },
15222   { 0x11 ,"clip - calling line identification presentation" },
15223   { 0x12 ,"clir - calling line identification restriction" },
15224   { 0x13 ,"colp - connected line identification presentation" },
15225   { 0x14 ,"colr - connected line identification restriction" },
15226   { 0x15 ,"mci - malicious call identification" },
15227   { 0x18 ,"allNameIdentificationSS - all name indentification SS" },
15228   { 0x19 ,"cnap - calling name presentation" },
15229   { 0x20 ,"allForwardingSS - all forwarding SS" },
15230   { 0x21 ,"cfu - call forwarding unconditional" },
15231   { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" },
15232   { 0x29 ,"cfb - call forwarding busy" },
15233   { 0x2a ,"cfnry - call forwarding on no reply" },
15234   { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" },
15235   { 0x24 ,"cd - call deflection" },
15236   { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" },
15237   { 0x31 ,"ect - explicit call transfer" },
15238   { 0x32 ,"mah - mobile access hunting" },
15239   { 0x40 ,"allCallCompletionSS - all Call completion SS" },
15240   { 0x41 ,"cw - call waiting" },
15241   { 0x42 ,"hold - call hold" },
15242   { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" },
15243   { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" },
15244   { 0x45 ,"mc - multicall" },
15245   { 0x50 ,"allMultiPartySS - all multiparty SS" },
15246   { 0x51 ,"multiPTY - multiparty" },
15247   { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" },
15248   { 0x61 ,"cug - closed user group" },
15249   { 0x70 ,"allChargingSS - all charging SS" },
15250   { 0x71 ,"aoci - advice of charge information" },
15251   { 0x72 ,"aocc - advice of charge charging" },
15252   { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" },
15253   { 0x81 ,"uus1 - UUS1 user-to-user signalling" },
15254   { 0x82 ,"uus2 - UUS2 user-to-user signalling" },
15255   { 0x83 ,"uus3 - UUS3 user-to-user signalling" },
15256   { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" },
15257   { 0x91 ,"barringOfOutgoingCalls" },
15258   { 0x92 ,"baoc - barring of all outgoing calls" },
15259   { 0x93 ,"boic - barring of outgoing international calls" },
15260   { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" },
15261   { 0x99 ,"barringOfIncomingCalls" },
15262   { 0x9a ,"baic - barring of all incoming calls" },
15263   { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" },
15264   { 0xf0 ,"allPLMN-specificSS" },
15265   { 0xa0 ,"allCallPrioritySS - all call priority SS" },
15266   { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" },
15267   { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" },
15268   { 0xb1 ,"universal - allow location by any LCS client" },
15269   { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" },
15270   { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" },
15271   { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" },
15272   { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" },
15273   { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" },
15274   { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" },
15275   { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" },
15276
15277   { 0xf1 ,"plmn-specificSS-1" },
15278   { 0xf2 ,"plmn-specificSS-2" },
15279   { 0xf3 ,"plmn-specificSS-3" },
15280   { 0xf4 ,"plmn-specificSS-4" },
15281   { 0xf5 ,"plmn-specificSS-5" },
15282   { 0xf6 ,"plmn-specificSS-6" },
15283   { 0xf7 ,"plmn-specificSS-7" },
15284   { 0xf8 ,"plmn-specificSS-8" },
15285   { 0xf9 ,"plmn-specificSS-9" },
15286   { 0xfa ,"plmn-specificSS-a" },
15287   { 0xfb ,"plmn-specificSS-b" },
15288   { 0xfc ,"plmn-specificSS-c" },
15289   { 0xfd ,"plmn-specificSS-d" },
15290   { 0xfe ,"plmn-specificSS-e" },
15291   { 0xff ,"plmn-specificSS-f" },
15292   { 0, NULL }
15293 };
15294
15295 static const value_string Teleservice_vals[] = {
15296 {0x00, "allTeleservices" },
15297 {0x10, "allSpeechTransmissionServices" },
15298 {0x11, "telephony" },
15299 {0x12, "emergencyCalls" },
15300 {0x20, "allShortMessageServices" },
15301 {0x21, "shortMessageMT-PP" },
15302 {0x22, "shortMessageMO-PP" },
15303 {0x60, "allFacsimileTransmissionServices" },
15304 {0x61, "facsimileGroup3AndAlterSpeech" },
15305 {0x62, "automaticFacsimileGroup3" },
15306 {0x63, "facsimileGroup4" },
15307
15308 {0x70, "allDataTeleservices" },
15309 {0x80, "allTeleservices-ExeptSMS" },
15310
15311 {0x90, "allVoiceGroupCallServices" },
15312 {0x91, "voiceGroupCall" },
15313 {0x92, "voiceBroadcastCall" },
15314
15315 {0xd0, "allPLMN-specificTS" },
15316 {0xd1, "plmn-specificTS-1" },
15317 {0xd2, "plmn-specificTS-2" },
15318 {0xd3, "plmn-specificTS-3" },
15319 {0xd4, "plmn-specificTS-4" },
15320 {0xd5, "plmn-specificTS-5" },
15321 {0xd6, "plmn-specificTS-6" },
15322 {0xd7, "plmn-specificTS-7" },
15323 {0xd8, "plmn-specificTS-8" },
15324 {0xd9, "plmn-specificTS-9" },
15325 {0xda, "plmn-specificTS-A" },
15326 {0xdb, "plmn-specificTS-B" },
15327 {0xdc, "plmn-specificTS-C" },
15328 {0xdd, "plmn-specificTS-D" },
15329 {0xde, "plmn-specificTS-E" },
15330 {0xdf, "plmn-specificTS-F" },
15331   { 0, NULL }
15332 };
15333
15334 static const value_string Bearerservice_vals[] = {
15335 {0x00, "allBearerServices" },
15336 {0x10, "allDataCDA-Services" },
15337 {0x11, "dataCDA-300bps" },
15338 {0x12, "dataCDA-1200bps" },
15339 {0x13, "dataCDA-1200-75bps" },
15340 {0x14, "dataCDA-2400bps" },
15341 {0x15, "dataCDA-4800bps" },
15342 {0x16, "dataCDA-9600bps" },
15343 {0x17, "general-dataCDA" },
15344
15345 {0x18, "allDataCDS-Services" },
15346 {0x1A, "dataCDS-1200bps" },
15347 {0x1C, "dataCDS-2400bps" },
15348 {0x1D, "dataCDS-4800bps" },
15349 {0x1E, "dataCDS-9600bps" },
15350 {0x1F, "general-dataCDS" },
15351
15352 {0x20, "allPadAccessCA-Services" },
15353 {0x21, "padAccessCA-300bps" },
15354 {0x22, "padAccessCA-1200bps" },
15355 {0x23, "padAccessCA-1200-75bps" },
15356 {0x24, "padAccessCA-2400bps" },
15357 {0x25, "padAccessCA-4800bps" },
15358 {0x26, "padAccessCA-9600bps" },
15359 {0x27, "general-padAccessCA" },
15360
15361 {0x28, "allDataPDS-Services" },
15362 {0x2C, "dataPDS-2400bps" },
15363 {0x2D, "dataPDS-4800bps" },
15364 {0x2E, "dataPDS-9600bps" },
15365 {0x2F, "general-dataPDS" },
15366
15367 {0x30, "allAlternateSpeech-DataCDA" },
15368 {0x38, "allAlternateSpeech-DataCDS" },
15369 {0x40, "allSpeechFollowedByDataCDA" },
15370 {0x48, "allSpeechFollowedByDataCDS" },
15371
15372 {0x50, "allDataCircuitAsynchronous" },
15373 {0x60, "allAsynchronousServices" },
15374 {0x58, "allDataCircuitSynchronous" },
15375 {0x68, "allSynchronousServices" },
15376
15377 {0xD0, "allPLMN-specificBS" },
15378 {0xD1, "plmn-specificBS-1" },
15379 {0xD2, "plmn-specificBS-2" },
15380 {0xD3, "plmn-specificBS-3" },
15381 {0xD4, "plmn-specificBS-4" },
15382 {0xD5, "plmn-specificBS-5" },
15383 {0xD6, "plmn-specificBS-6" },
15384 {0xD7, "plmn-specificBS-7" },
15385 {0xD8, "plmn-specificBS-8" },
15386 {0xD9, "plmn-specificBS-9" },
15387 {0xDA, "plmn-specificBS-A" },
15388 {0xDB, "plmn-specificBS-B" },
15389 {0xDC, "plmn-specificBS-C" },
15390 {0xDD, "plmn-specificBS-D" },
15391 {0xDE, "plmn-specificBS-E" },
15392 {0xDF, "plmn-specificBS-F" },
15393
15394 { 0, NULL }
15395 };
15396
15397 /* ForwardingOptions 
15398
15399 -- bit 8: notification to forwarding party
15400 -- 0 no notification
15401 -- 1 notification
15402 */
15403 static const true_false_string notification_value  = {
15404   "Notification",
15405   "No notification"
15406 };
15407 /*
15408 -- bit 7: redirecting presentation
15409 -- 0 no presentation
15410 -- 1 presentation
15411 */
15412 static const true_false_string redirecting_presentation_value  = {
15413   "Presentation",
15414   "No presentationn"
15415 };
15416 /*
15417 -- bit 6: notification to calling party
15418 -- 0 no notification
15419 -- 1 notification
15420 */
15421 /*
15422 -- bit 5: 0 (unused)
15423 -- bits 43: forwarding reason
15424 -- 00 ms not reachable
15425 -- 01 ms busy
15426 -- 10 no reply
15427 -- 11 unconditional when used in a SRI Result,
15428 -- or call deflection when used in a RCH Argument
15429 */
15430 static const value_string forwarding_reason_values[] = {
15431 {0x0, "ms not reachable" },
15432 {0x1, "ms busy" },
15433 {0x2, "no reply" },
15434 {0x3, "unconditional when used in a SRI Result or call deflection when used in a RCH Argument" },
15435 { 0, NULL }
15436 };
15437 /*
15438 -- bits 21: 00 (unused)
15439 */
15440
15441 static const value_string pdp_type_org_values[] = {
15442 {0x0, "ETSI" },
15443 {0x1, "IETF" },
15444 {0xf, "Empty PDP type" },
15445 { 0, NULL }
15446 };
15447
15448 static const value_string etsi_pdp_type_number_values[] = {
15449 {0x0, "Reserved, used in earlier version of this protocol" },
15450 {0x1, "PPP" },
15451 { 0, NULL }
15452 };
15453
15454 static const value_string ietf_pdp_type_number_values[] = {
15455 {0x21, "IPv4 Address" },
15456 {0x57, "IPv6 Address" },
15457 { 0, NULL }
15458 };
15459
15460 /*
15461 ChargingCharacteristics ::= OCTET STRING (SIZE (2))
15462 -- Octets are coded according to 3GPP TS 32.015.
15463 -- From 3GPP TS 32.015.
15464 --
15465 -- Descriptions for the bits of the flag set:
15466 --
15467 -- Bit 1: H (Hot billing) := '00000001'B
15468 -- Bit 2: F (Flat rate) := '00000010'B
15469 -- Bit 3: P (Prepaid service) := '00000100'B
15470 -- Bit 4: N (Normal billing) := '00001000'B
15471 -- Bit 5: - (Reserved, set to 0) := '00010000'B
15472 -- Bit 6: - (Reserved, set to 0) := '00100000'B
15473 -- Bit 7: - (Reserved, set to 0) := '01000000'B
15474 -- Bit 8: - (Reserved, set to 0) := '10000000'B
15475 */
15476 static const value_string chargingcharacteristics_values[] = {
15477 {0x1, "H (Hot billing)" },
15478 {0x2, "F (Flat rate)" },
15479 {0x4, "P (Prepaid service)" },
15480 {0x8, "N (Normal billing)" },
15481 { 0, NULL }
15482 };
15483 /*--- proto_reg_handoff_gsm_map ---------------------------------------*/
15484 static void range_delete_callback(guint32 ssn)
15485 {
15486     if (ssn) {
15487         delete_itu_tcap_subdissector(ssn, map_handle);
15488     }
15489 }
15490
15491 static void range_add_callback(guint32 ssn)
15492 {
15493     if (ssn) {
15494         add_itu_tcap_subdissector(ssn, map_handle);
15495     }
15496 }
15497
15498 void proto_reg_handoff_gsm_map(void) {
15499
15500     static int map_prefs_initialized = FALSE;
15501     data_handle = find_dissector("data");
15502
15503     if (!map_prefs_initialized) {
15504         map_prefs_initialized = TRUE;
15505         map_handle = create_dissector_handle(dissect_gsm_map, proto_gsm_map);
15506   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)");  
15507   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)" );
15508   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)" );
15509   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)" );
15510   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)" );
15511   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)" );
15512   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)" );
15513   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)" );
15514   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)" );
15515   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)" );
15516   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)" );
15517   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)" );
15518   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)" );
15519   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)" );
15520   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)" );
15521   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)" );
15522   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)" );
15523   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)" );
15524   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)" );
15525   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)" );
15526   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)" );
15527   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)" );
15528   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)" );
15529   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)" );
15530   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)" );
15531   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)" );
15532   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)" );
15533   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)" );
15534   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)" );
15535   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)" );
15536   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)" );
15537   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)" );
15538   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)" );
15539   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)" );
15540   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)" );
15541   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)" );
15542   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)" );
15543   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)" );
15544   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)" );
15545   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)" );
15546   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)" );
15547   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)" );
15548   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)" );
15549   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)" );
15550   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)" );
15551   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)" );
15552   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)" );
15553   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)" );
15554   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)" );
15555   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)" );
15556   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)" );
15557   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)" );
15558   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)" );
15559   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)" );
15560   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)" );
15561   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)" );
15562   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)" );
15563   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)" );
15564   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)" );
15565   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)" );
15566   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)" );
15567   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)" );
15568     }
15569     else {
15570         range_foreach(ssn_range, range_delete_callback);
15571     }
15572
15573     g_free(ssn_range);
15574     ssn_range = range_copy(global_ssn_range);
15575
15576     range_foreach(ssn_range, range_add_callback);
15577
15578 }
15579
15580 /*--- proto_register_gsm_map -------------------------------------------*/
15581 void proto_register_gsm_map(void) {
15582         module_t *gsm_map_module;
15583
15584   /* List of fields */
15585   static hf_register_info hf[] = {
15586           /*
15587     { &hf_gsm_map_invokeCmd,
15588       { "invokeCmd", "gsm_map.invokeCmd",
15589         FT_UINT32, BASE_DEC, VALS(gsm_map_opr_code_strings), 0,
15590         "InvokePDU/invokeCmd", HFILL }},
15591     { &hf_gsm_map_invokeid,
15592       { "invokeid", "gsm_map.invokeid",
15593         FT_INT32, BASE_DEC, NULL, 0,
15594         "InvokeId/invokeid", HFILL }},
15595     { &hf_gsm_map_absent,
15596       { "absent", "gsm_map.absent",
15597         FT_NONE, BASE_NONE, NULL, 0,
15598         "InvokeId/absent", HFILL }},
15599     { &hf_gsm_map_invokeId,
15600       { "invokeId", "gsm_map.invokeId",
15601         FT_UINT32, BASE_DEC, VALS(InvokeId_vals), 0,
15602         "InvokePDU/invokeId", HFILL }},
15603     { &hf_gsm_map_invoke,
15604       { "invoke", "gsm_map.invoke",
15605         FT_NONE, BASE_NONE, NULL, 0,
15606         "GSMMAPPDU/invoke", HFILL }},
15607     { &hf_gsm_map_returnResult,
15608       { "returnResult", "gsm_map.returnResult",
15609         FT_NONE, BASE_NONE, NULL, 0,
15610         "GSMMAPPDU/returnResult", HFILL }},
15611         {&hf_gsm_map_returnResult_result,
15612       { "returnResult_result", "gsm_map.returnresultresult",
15613         FT_BYTES, BASE_NONE, NULL, 0,
15614         "returnResult_result", HFILL }},
15615         {&hf_gsm_map_returnError_result,
15616       { "returnError_result", "gsm_map.returnerrorresult",
15617         FT_UINT32, BASE_DEC, NULL, 0,
15618         "returnError_result", HFILL }},
15619         {&hf_gsm_map_returnError,
15620       { "returnError", "gsm_map.returnError",
15621         FT_NONE, BASE_NONE, NULL, 0,
15622         "GSMMAPPDU/returnError", HFILL }},
15623         {&hf_gsm_map_local_errorCode,
15624       { "Local Error Code", "gsm_map.localerrorCode",
15625         FT_UINT32, BASE_DEC, VALS(gsm_map_err_code_string_vals), 0,
15626         "localerrorCode", HFILL }},
15627         {&hf_gsm_map_global_errorCode_oid,
15628       { "Global Error Code OID", "gsm_map.hlobalerrorCodeoid",
15629         FT_STRING, BASE_NONE, NULL, 0,
15630         "globalerrorCodeoid", HFILL }},
15631         {&hf_gsm_map_global_errorCode,
15632       { "Global Error Code", "gsm_map.globalerrorCode",
15633         FT_UINT32, BASE_DEC, NULL, 0,
15634         "globalerrorCode", HFILL }},
15635     { &hf_gsm_map_getPassword,
15636       { "Password", "gsm_map.password",
15637         FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0,
15638         "Password", HFILL }},
15639
15640                 */
15641         { &hf_gsm_map_SendAuthenticationInfoArg,
15642       { "SendAuthenticationInfoArg", "gsm_map.SendAuthenticationInfoArg",
15643         FT_BYTES, BASE_NONE, NULL, 0,
15644         "SendAuthenticationInfoArg", HFILL }},
15645         { &hf_gsm_map_SendAuthenticationInfoRes,
15646       { "SendAuthenticationInfoRes", "gsm_map.SendAuthenticationInfoRes",
15647         FT_BYTES, BASE_NONE, NULL, 0,
15648         "SendAuthenticationInfoRes", HFILL }},
15649     { &hf_gsm_map_currentPassword,
15650       { "currentPassword", "gsm_map.currentPassword",
15651         FT_STRING, BASE_NONE, NULL, 0,
15652         "", HFILL }},
15653         { &hf_gsm_mapSendEndSignal,
15654       { "mapSendEndSignalArg", "gsm_map.mapsendendsignalarg",
15655         FT_BYTES, BASE_NONE, NULL, 0,
15656         "mapSendEndSignalArg", HFILL }},
15657     { &hf_gsm_map_extension,
15658       { "Extension", "gsm_map.extension",
15659         FT_BOOLEAN, 8, TFS(&gsm_map_extension_value), 0x80,
15660         "Extension", HFILL }},
15661     { &hf_gsm_map_nature_of_number,
15662       { "Nature of number", "gsm_map.nature_of_number",
15663         FT_UINT8, BASE_HEX, VALS(gsm_map_nature_of_number_values), 0x70,
15664         "Nature of number", HFILL }},
15665     { &hf_gsm_map_number_plan,
15666       { "Number plan", "gsm_map.number_plan",
15667         FT_UINT8, BASE_HEX, VALS(gsm_map_number_plan_values), 0x0f,
15668         "Number plan", HFILL }},
15669         { &hf_gsm_map_isdn_address_digits,
15670       { "ISDN Address digits", "gsm_map.isdn.address.digits",
15671         FT_STRING, BASE_NONE, NULL, 0,
15672         "ISDN Address digits", HFILL }},
15673         { &hf_gsm_map_address_digits,
15674       { "Address digits", "gsm_map.address.digits",
15675         FT_STRING, BASE_NONE, NULL, 0,
15676         "Address digits", HFILL }},
15677         { &hf_gsm_map_servicecentreaddress_digits,
15678       { "ServiceCentreAddress digits", "gsm_map.servicecentreaddress_digits",
15679         FT_STRING, BASE_NONE, NULL, 0,
15680         "ServiceCentreAddress digits", HFILL }},
15681         { &hf_gsm_map_imsi_digits,
15682       { "Imsi digits", "gsm_map.imsi_digits",
15683         FT_STRING, BASE_NONE, NULL, 0,
15684         "Imsi digits", HFILL }},
15685         { &hf_gsm_map_Ss_Status_unused,
15686       { "Unused", "gsm_map.unused",
15687         FT_UINT8, BASE_HEX, NULL, 0xf0,
15688         "Unused", HFILL }},
15689         { &hf_gsm_map_Ss_Status_q_bit,
15690       { "Q bit", "gsm_map.ss_status_q_bit",
15691         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08,
15692         "Q bit", HFILL }},
15693         { &hf_gsm_map_Ss_Status_p_bit,
15694       { "P bit", "gsm_map.ss_status_p_bit",
15695         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04,
15696         "P bit", HFILL }},
15697         { &hf_gsm_map_Ss_Status_r_bit,
15698       { "R bit", "gsm_map.ss_status_r_bit",
15699         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02,
15700         "R bit", HFILL }},
15701         { &hf_gsm_map_Ss_Status_a_bit,
15702       { "A bit", "gsm_map.ss_status_a_bit",
15703         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
15704         "A bit", HFILL }},
15705         { &hf_gsm_map_notification_to_forwarding_party,
15706       { "Notification to forwarding party", "gsm_map.notification_to_forwarding_party",
15707         FT_BOOLEAN, 8, TFS(&notification_value), 0x80,
15708         "Notification to forwarding party", HFILL }},
15709         { &hf_gsm_map_redirecting_presentation,
15710       { "Redirecting presentation", "gsm_map.redirecting_presentation",
15711         FT_BOOLEAN, 8, TFS(&redirecting_presentation_value), 0x40,
15712         "Redirecting presentation", HFILL }},
15713         { &hf_gsm_map_notification_to_calling_party,
15714       { "Notification to calling party", "gsm_map.notification_to_clling_party",
15715         FT_BOOLEAN, 8, TFS(&notification_value), 0x20,
15716         "Notification to calling party", HFILL }},
15717     { &hf_gsm_map_forwarding_reason,
15718       { "Forwarding reason", "gsm_map.forwarding_reason",
15719         FT_UINT8, BASE_HEX, VALS(forwarding_reason_values), 0x0c,
15720         "forwarding reason", HFILL }},
15721     { &hf_gsm_map_pdp_type_org,
15722       { "PDP Type Organization", "gsm_map.pdp_type_org",
15723         FT_UINT8, BASE_HEX, VALS(pdp_type_org_values), 0x0f,
15724         "PDP Type Organization", HFILL }},
15725     { &hf_gsm_map_etsi_pdp_type_number,
15726       { "PDP Type Number", "gsm_map.pdp_type_org",
15727         FT_UINT8, BASE_HEX, VALS(etsi_pdp_type_number_values), 0,
15728         "ETSI PDP Type Number", HFILL }},
15729     { &hf_gsm_map_ietf_pdp_type_number,
15730       { "PDP Type Number", "gsm_map.ietf_pdp_type_number",
15731         FT_UINT8, BASE_HEX, VALS(ietf_pdp_type_number_values), 0,
15732         "IETF PDP Type Number", HFILL }},
15733     { &hf_gsm_map_ext_qos_subscribed_pri,
15734       { "Allocation/Retention priority", "gsm_map.ext_qos_subscribed_pri",
15735         FT_UINT8, BASE_DEC, NULL, 0xff,
15736         "Allocation/Retention priority", HFILL }},
15737     { &hf_gsm_map_qos_traffic_cls,
15738       { "Traffic class", "gsm_map.qos.traffic_cls",
15739         FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traffic_cls_vals), 0xe0,
15740         "Traffic class", HFILL }},
15741     { &hf_gsm_map_qos_del_order,
15742       { "Delivery order", "gsm_map.qos.del_order",
15743         FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traffic_cls_vals), 0x18,
15744         "Delivery order", HFILL }},
15745     { &hf_gsm_map_qos_del_of_err_sdu,
15746       { "Delivery of erroneous SDUs", "gsm_map.qos.del_of_err_sdu",
15747         FT_UINT8, BASE_DEC, VALS(gsm_a_qos_del_of_err_sdu_vals), 0x03,
15748         "Delivery of erroneous SDUs", HFILL }},
15749     { &hf_gsm_map_qos_ber,
15750       { "Residual Bit Error Rate (BER)", "gsm_map.qos.ber",
15751         FT_UINT8, BASE_DEC, VALS(gsm_a_qos_ber_vals), 0xf0,
15752         "Residual Bit Error Rate (BER)", HFILL }},
15753     { &hf_gsm_map_qos_sdu_err_rat,
15754       { "SDU error ratio", "gsm_map.qos.sdu_err_rat",
15755         FT_UINT8, BASE_DEC, VALS(gsm_a_qos_sdu_err_rat_vals), 0x0f,
15756         "SDU error ratio", HFILL }},
15757     { &hf_gsm_map_qos_traff_hdl_pri,
15758       { "Traffic handling priority", "gsm_map.qos.traff_hdl_pri",
15759         FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traff_hdl_pri_vals), 0x03,
15760         "Traffic handling priority", HFILL }},
15761
15762     { &hf_gsm_map_qos_max_sdu,
15763       { "Maximum SDU size (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.max_sdu",
15764         FT_UINT8, BASE_DEC, NULL, 0xff,
15765         "Maximum SDU size", HFILL }},           
15766     { &hf_gsm_map_max_brate_ulink,
15767       { "Maximum bit rate for uplink (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.max_brate_ulink",
15768         FT_UINT8, BASE_DEC, NULL, 0xff,
15769         "Maximum bit rate for uplink", HFILL }},
15770     { &hf_gsm_map_max_brate_dlink,
15771       { "Maximum bit rate for downlink (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.max_brate_dlink",
15772         FT_UINT8, BASE_DEC, NULL, 0xff,
15773         "Maximum bit rate for downlink", HFILL }},
15774     { &hf_gsm_map_qos_transfer_delay,
15775       { "Transfer delay (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.transfer_delay",
15776         FT_UINT8, BASE_DEC, NULL, 0xfc,
15777         "Transfer delay", HFILL }},
15778     { &hf_gsm_map_guaranteed_max_brate_ulink,
15779       { "Guaranteed bit rate for uplink (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.brate_ulink",
15780         FT_UINT8, BASE_DEC, NULL, 0xff,
15781         "Guaranteed bit rate for uplink", HFILL }},
15782     { &hf_gsm_map_guaranteed_max_brate_dlink,
15783       { "Guaranteed bit rate for downlink (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.brate_dlink",
15784         FT_UINT8, BASE_DEC, NULL, 0xff,
15785         "Guaranteed bit rate for downlink", HFILL }},
15786
15787 /*--- Included file: packet-gsm_map-hfarr.c ---*/
15788 #line 1 "packet-gsm_map-hfarr.c"
15789     { &hf_gsm_map_Component_PDU,
15790       { "Component", "gsm_map.Component",
15791         FT_UINT32, BASE_DEC, VALS(gsm_map_Component_vals), 0,
15792         "Component", HFILL }},
15793     { &hf_gsm_map_invoke,
15794       { "invoke", "gsm_map.invoke",
15795         FT_NONE, BASE_NONE, NULL, 0,
15796         "Component/invoke", HFILL }},
15797     { &hf_gsm_map_returnResultLast,
15798       { "returnResultLast", "gsm_map.returnResultLast",
15799         FT_NONE, BASE_NONE, NULL, 0,
15800         "Component/returnResultLast", HFILL }},
15801     { &hf_gsm_map_returnError,
15802       { "returnError", "gsm_map.returnError",
15803         FT_NONE, BASE_NONE, NULL, 0,
15804         "Component/returnError", HFILL }},
15805     { &hf_gsm_map_reject,
15806       { "reject", "gsm_map.reject",
15807         FT_NONE, BASE_NONE, NULL, 0,
15808         "Component/reject", HFILL }},
15809     { &hf_gsm_map_invokeID,
15810       { "invokeID", "gsm_map.invokeID",
15811         FT_INT32, BASE_DEC, NULL, 0,
15812         "", HFILL }},
15813     { &hf_gsm_map_linkedID,
15814       { "linkedID", "gsm_map.linkedID",
15815         FT_INT32, BASE_DEC, NULL, 0,
15816         "Invoke/linkedID", HFILL }},
15817     { &hf_gsm_map_opCode,
15818       { "opCode", "gsm_map.opCode",
15819         FT_UINT32, BASE_DEC, VALS(gsm_map_OPERATION_vals), 0,
15820         "", HFILL }},
15821     { &hf_gsm_map_invokeparameter,
15822       { "invokeparameter", "gsm_map.invokeparameter",
15823         FT_NONE, BASE_NONE, NULL, 0,
15824         "Invoke/invokeparameter", HFILL }},
15825     { &hf_gsm_map_resultretres,
15826       { "resultretres", "gsm_map.resultretres",
15827         FT_NONE, BASE_NONE, NULL, 0,
15828         "ReturnResult/resultretres", HFILL }},
15829     { &hf_gsm_map_returnparameter,
15830       { "returnparameter", "gsm_map.returnparameter",
15831         FT_NONE, BASE_NONE, NULL, 0,
15832         "ReturnResult/resultretres/returnparameter", HFILL }},
15833     { &hf_gsm_map_errorCode,
15834       { "errorCode", "gsm_map.errorCode",
15835         FT_UINT32, BASE_DEC, VALS(gsm_map_ERROR_vals), 0,
15836         "ReturnError/errorCode", HFILL }},
15837     { &hf_gsm_map_parameter,
15838       { "parameter", "gsm_map.parameter",
15839         FT_NONE, BASE_NONE, NULL, 0,
15840         "ReturnError/parameter", HFILL }},
15841     { &hf_gsm_map_invokeIDRej,
15842       { "invokeIDRej", "gsm_map.invokeIDRej",
15843         FT_UINT32, BASE_DEC, VALS(gsm_map_T_invokeIDRej_vals), 0,
15844         "Reject/invokeIDRej", HFILL }},
15845     { &hf_gsm_map_derivable,
15846       { "derivable", "gsm_map.derivable",
15847         FT_INT32, BASE_DEC, NULL, 0,
15848         "Reject/invokeIDRej/derivable", HFILL }},
15849     { &hf_gsm_map_not_derivable,
15850       { "not-derivable", "gsm_map.not_derivable",
15851         FT_NONE, BASE_NONE, NULL, 0,
15852         "Reject/invokeIDRej/not-derivable", HFILL }},
15853     { &hf_gsm_map_problem,
15854       { "problem", "gsm_map.problem",
15855         FT_UINT32, BASE_DEC, VALS(gsm_map_T_problem_vals), 0,
15856         "Reject/problem", HFILL }},
15857     { &hf_gsm_map_generalProblem,
15858       { "generalProblem", "gsm_map.generalProblem",
15859         FT_INT32, BASE_DEC, VALS(gsm_map_GeneralProblem_vals), 0,
15860         "Reject/problem/generalProblem", HFILL }},
15861     { &hf_gsm_map_invokeProblem,
15862       { "invokeProblem", "gsm_map.invokeProblem",
15863         FT_INT32, BASE_DEC, VALS(gsm_map_InvokeProblem_vals), 0,
15864         "Reject/problem/invokeProblem", HFILL }},
15865     { &hf_gsm_map_returnResultProblem,
15866       { "returnResultProblem", "gsm_map.returnResultProblem",
15867         FT_INT32, BASE_DEC, VALS(gsm_map_ReturnResultProblem_vals), 0,
15868         "Reject/problem/returnResultProblem", HFILL }},
15869     { &hf_gsm_map_returnErrorProblem,
15870       { "returnErrorProblem", "gsm_map.returnErrorProblem",
15871         FT_INT32, BASE_DEC, VALS(gsm_map_ReturnErrorProblem_vals), 0,
15872         "Reject/problem/returnErrorProblem", HFILL }},
15873     { &hf_gsm_map_localValue,
15874       { "localValue", "gsm_map.localValue",
15875         FT_INT32, BASE_DEC, VALS(gsm_map_OperationLocalvalue_vals), 0,
15876         "OPERATION/localValue", HFILL }},
15877     { &hf_gsm_map_globalValue,
15878       { "globalValue", "gsm_map.globalValue",
15879         FT_OID, BASE_NONE, NULL, 0,
15880         "", HFILL }},
15881     { &hf_gsm_map_localValue1,
15882       { "localValue", "gsm_map.localValue",
15883         FT_INT32, BASE_DEC, VALS(gsm_map_LocalErrorcode_vals), 0,
15884         "ERROR/localValue", HFILL }},
15885     { &hf_gsm_map_protocolId,
15886       { "protocolId", "gsm_map.protocolId",
15887         FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0,
15888         "", HFILL }},
15889     { &hf_gsm_map_signalInfo,
15890       { "signalInfo", "gsm_map.signalInfo",
15891         FT_BYTES, BASE_HEX, NULL, 0,
15892         "", HFILL }},
15893     { &hf_gsm_map_extensionContainer,
15894       { "extensionContainer", "gsm_map.extensionContainer",
15895         FT_NONE, BASE_NONE, NULL, 0,
15896         "", HFILL }},
15897     { &hf_gsm_map_imsi,
15898       { "imsi", "gsm_map.imsi",
15899         FT_BYTES, BASE_HEX, NULL, 0,
15900         "", HFILL }},
15901     { &hf_gsm_map_msc_Number,
15902       { "msc-Number", "gsm_map.msc_Number",
15903         FT_BYTES, BASE_HEX, NULL, 0,
15904         "", HFILL }},
15905     { &hf_gsm_map_vlr_Number,
15906       { "vlr-Number", "gsm_map.vlr_Number",
15907         FT_BYTES, BASE_HEX, NULL, 0,
15908         "", HFILL }},
15909     { &hf_gsm_map_lmsi,
15910       { "lmsi", "gsm_map.lmsi",
15911         FT_BYTES, BASE_HEX, NULL, 0,
15912         "", HFILL }},
15913     { &hf_gsm_map_vlr_Capability,
15914       { "vlr-Capability", "gsm_map.vlr_Capability",
15915         FT_NONE, BASE_NONE, NULL, 0,
15916         "", HFILL }},
15917     { &hf_gsm_map_informPreviousNetworkEntity,
15918       { "informPreviousNetworkEntity", "gsm_map.informPreviousNetworkEntity",
15919         FT_NONE, BASE_NONE, NULL, 0,
15920         "", HFILL }},
15921     { &hf_gsm_map_cs_LCS_NotSupportedByUE,
15922       { "cs-LCS-NotSupportedByUE", "gsm_map.cs_LCS_NotSupportedByUE",
15923         FT_NONE, BASE_NONE, NULL, 0,
15924         "UpdateLocationArg/cs-LCS-NotSupportedByUE", HFILL }},
15925     { &hf_gsm_map_v_gmlc_Address,
15926       { "v-gmlc-Address", "gsm_map.v_gmlc_Address",
15927         FT_BYTES, BASE_HEX, NULL, 0,
15928         "", HFILL }},
15929     { &hf_gsm_map_add_info,
15930       { "add-info", "gsm_map.add_info",
15931         FT_NONE, BASE_NONE, NULL, 0,
15932         "", HFILL }},
15933     { &hf_gsm_map_hlr_Number,
15934       { "hlr-Number", "gsm_map.hlr_Number",
15935         FT_BYTES, BASE_HEX, NULL, 0,
15936         "", HFILL }},
15937     { &hf_gsm_map_add_Capability,
15938       { "add-Capability", "gsm_map.add_Capability",
15939         FT_NONE, BASE_NONE, NULL, 0,
15940         "", HFILL }},
15941     { &hf_gsm_map_supportedCamelPhases,
15942       { "supportedCamelPhases", "gsm_map.supportedCamelPhases",
15943         FT_BYTES, BASE_HEX, NULL, 0,
15944         "", HFILL }},
15945     { &hf_gsm_map_solsaSupportIndicator,
15946       { "solsaSupportIndicator", "gsm_map.solsaSupportIndicator",
15947         FT_NONE, BASE_NONE, NULL, 0,
15948         "", HFILL }},
15949     { &hf_gsm_map_istSupportIndicator,
15950       { "istSupportIndicator", "gsm_map.istSupportIndicator",
15951         FT_UINT32, BASE_DEC, VALS(gsm_map_IST_SupportIndicator_vals), 0,
15952         "", HFILL }},
15953     { &hf_gsm_map_superChargerSupportedInServingNetworkEntity,
15954       { "superChargerSupportedInServingNetworkEntity", "gsm_map.superChargerSupportedInServingNetworkEntity",
15955         FT_UINT32, BASE_DEC, VALS(gsm_map_SuperChargerInfo_vals), 0,
15956         "", HFILL }},
15957     { &hf_gsm_map_longFTN_Supported,
15958       { "longFTN-Supported", "gsm_map.longFTN_Supported",
15959         FT_NONE, BASE_NONE, NULL, 0,
15960         "", HFILL }},
15961     { &hf_gsm_map_supportedLCS_CapabilitySets,
15962       { "supportedLCS-CapabilitySets", "gsm_map.supportedLCS_CapabilitySets",
15963         FT_BYTES, BASE_HEX, NULL, 0,
15964         "", HFILL }},
15965     { &hf_gsm_map_offeredCamel4CSIs,
15966       { "offeredCamel4CSIs", "gsm_map.offeredCamel4CSIs",
15967         FT_BYTES, BASE_HEX, NULL, 0,
15968         "", HFILL }},
15969     { &hf_gsm_map_sendSubscriberData,
15970       { "sendSubscriberData", "gsm_map.sendSubscriberData",
15971         FT_NONE, BASE_NONE, NULL, 0,
15972         "SuperChargerInfo/sendSubscriberData", HFILL }},
15973     { &hf_gsm_map_subscriberDataStored,
15974       { "subscriberDataStored", "gsm_map.subscriberDataStored",
15975         FT_BYTES, BASE_HEX, NULL, 0,
15976         "SuperChargerInfo/subscriberDataStored", HFILL }},
15977     { &hf_gsm_map_imeisv,
15978       { "imeisv", "gsm_map.imeisv",
15979         FT_BYTES, BASE_HEX, NULL, 0,
15980         "", HFILL }},
15981     { &hf_gsm_map_skipSubscriberDataUpdate,
15982       { "skipSubscriberDataUpdate", "gsm_map.skipSubscriberDataUpdate",
15983         FT_NONE, BASE_NONE, NULL, 0,
15984         "ADD-Info/skipSubscriberDataUpdate", HFILL }},
15985     { &hf_gsm_map_PrivateExtensionList_item,
15986       { "Item", "gsm_map.PrivateExtensionList_item",
15987         FT_NONE, BASE_NONE, NULL, 0,
15988         "PrivateExtensionList/_item", HFILL }},
15989     { &hf_gsm_map_extId,
15990       { "extId", "gsm_map.extId",
15991         FT_OID, BASE_NONE, NULL, 0,
15992         "PrivateExtension/extId", HFILL }},
15993     { &hf_gsm_map_extType,
15994       { "extType", "gsm_map.extType",
15995         FT_NONE, BASE_NONE, NULL, 0,
15996         "PrivateExtension/extType", HFILL }},
15997     { &hf_gsm_map_privateExtensionList,
15998       { "privateExtensionList", "gsm_map.privateExtensionList",
15999         FT_UINT32, BASE_DEC, NULL, 0,
16000         "", HFILL }},
16001     { &hf_gsm_map_slr_Arg_PCS_Extensions,
16002       { "slr-Arg-PCS-Extensions", "gsm_map.slr_Arg_PCS_Extensions",
16003         FT_NONE, BASE_NONE, NULL, 0,
16004         "SLR-ArgExtensionContainer/slr-Arg-PCS-Extensions", HFILL }},
16005     { &hf_gsm_map_na_ESRK_Request,
16006       { "na-ESRK-Request", "gsm_map.na_ESRK_Request",
16007         FT_NONE, BASE_NONE, NULL, 0,
16008         "SLR-Arg-PCS-Extensions/na-ESRK-Request", HFILL }},
16009     { &hf_gsm_map_identity,
16010       { "identity", "gsm_map.identity",
16011         FT_UINT32, BASE_DEC, VALS(gsm_map_Identity_vals), 0,
16012         "CancelLocationArg/identity", HFILL }},
16013     { &hf_gsm_map_cancellationType,
16014       { "cancellationType", "gsm_map.cancellationType",
16015         FT_UINT32, BASE_DEC, VALS(gsm_map_CancellationType_vals), 0,
16016         "CancelLocationArg/cancellationType", HFILL }},
16017     { &hf_gsm_map_imsi_WithLMSI,
16018       { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI",
16019         FT_NONE, BASE_NONE, NULL, 0,
16020         "", HFILL }},
16021     { &hf_gsm_map_sgsn_Number,
16022       { "sgsn-Number", "gsm_map.sgsn_Number",
16023         FT_BYTES, BASE_HEX, NULL, 0,
16024         "", HFILL }},
16025     { &hf_gsm_map_freezeTMSI,
16026       { "freezeTMSI", "gsm_map.freezeTMSI",
16027         FT_NONE, BASE_NONE, NULL, 0,
16028         "PurgeMSRes/freezeTMSI", HFILL }},
16029     { &hf_gsm_map_freezeP_TMSI,
16030       { "freezeP-TMSI", "gsm_map.freezeP_TMSI",
16031         FT_NONE, BASE_NONE, NULL, 0,
16032         "PurgeMSRes/freezeP-TMSI", HFILL }},
16033     { &hf_gsm_map_tmsi,
16034       { "tmsi", "gsm_map.tmsi",
16035         FT_BYTES, BASE_HEX, NULL, 0,
16036         "", HFILL }},
16037     { &hf_gsm_map_numberOfRequestedVectors,
16038       { "numberOfRequestedVectors", "gsm_map.numberOfRequestedVectors",
16039         FT_UINT32, BASE_DEC, NULL, 0,
16040         "", HFILL }},
16041     { &hf_gsm_map_segmentationProhibited,
16042       { "segmentationProhibited", "gsm_map.segmentationProhibited",
16043         FT_NONE, BASE_NONE, NULL, 0,
16044         "", HFILL }},
16045     { &hf_gsm_map_previous_LAI,
16046       { "previous-LAI", "gsm_map.previous_LAI",
16047         FT_BYTES, BASE_HEX, NULL, 0,
16048         "SendIdentificationArg/previous-LAI", HFILL }},
16049     { &hf_gsm_map_hopCounter,
16050       { "hopCounter", "gsm_map.hopCounter",
16051         FT_UINT32, BASE_DEC, NULL, 0,
16052         "SendIdentificationArg/hopCounter", HFILL }},
16053     { &hf_gsm_map_authenticationSetList,
16054       { "authenticationSetList", "gsm_map.authenticationSetList",
16055         FT_UINT32, BASE_DEC, VALS(gsm_map_AuthenticationSetList_vals), 0,
16056         "", HFILL }},
16057     { &hf_gsm_map_currentSecurityContext,
16058       { "currentSecurityContext", "gsm_map.currentSecurityContext",
16059         FT_UINT32, BASE_DEC, VALS(gsm_map_CurrentSecurityContext_vals), 0,
16060         "SendIdentificationRes/currentSecurityContext", HFILL }},
16061     { &hf_gsm_map_tripletList,
16062       { "tripletList", "gsm_map.tripletList",
16063         FT_UINT32, BASE_DEC, NULL, 0,
16064         "AuthenticationSetList/tripletList", HFILL }},
16065     { &hf_gsm_map_quintupletList,
16066       { "quintupletList", "gsm_map.quintupletList",
16067         FT_UINT32, BASE_DEC, NULL, 0,
16068         "AuthenticationSetList/quintupletList", HFILL }},
16069     { &hf_gsm_map_TripletList_item,
16070       { "Item", "gsm_map.TripletList_item",
16071         FT_NONE, BASE_NONE, NULL, 0,
16072         "TripletList/_item", HFILL }},
16073     { &hf_gsm_map_QuintupletList_item,
16074       { "Item", "gsm_map.QuintupletList_item",
16075         FT_NONE, BASE_NONE, NULL, 0,
16076         "QuintupletList/_item", HFILL }},
16077     { &hf_gsm_map_rand,
16078       { "rand", "gsm_map.rand",
16079         FT_BYTES, BASE_HEX, NULL, 0,
16080         "", HFILL }},
16081     { &hf_gsm_map_sres,
16082       { "sres", "gsm_map.sres",
16083         FT_BYTES, BASE_HEX, NULL, 0,
16084         "", HFILL }},
16085     { &hf_gsm_map_kc,
16086       { "kc", "gsm_map.kc",
16087         FT_BYTES, BASE_HEX, NULL, 0,
16088         "", HFILL }},
16089     { &hf_gsm_map_xres,
16090       { "xres", "gsm_map.xres",
16091         FT_BYTES, BASE_HEX, NULL, 0,
16092         "AuthenticationQuintuplet/xres", HFILL }},
16093     { &hf_gsm_map_ck,
16094       { "ck", "gsm_map.ck",
16095         FT_BYTES, BASE_HEX, NULL, 0,
16096         "", HFILL }},
16097     { &hf_gsm_map_ik,
16098       { "ik", "gsm_map.ik",
16099         FT_BYTES, BASE_HEX, NULL, 0,
16100         "", HFILL }},
16101     { &hf_gsm_map_autn,
16102       { "autn", "gsm_map.autn",
16103         FT_BYTES, BASE_HEX, NULL, 0,
16104         "AuthenticationQuintuplet/autn", HFILL }},
16105     { &hf_gsm_map_gsm_SecurityContextData,
16106       { "gsm-SecurityContextData", "gsm_map.gsm_SecurityContextData",
16107         FT_NONE, BASE_NONE, NULL, 0,
16108         "CurrentSecurityContext/gsm-SecurityContextData", HFILL }},
16109     { &hf_gsm_map_umts_SecurityContextData,
16110       { "umts-SecurityContextData", "gsm_map.umts_SecurityContextData",
16111         FT_NONE, BASE_NONE, NULL, 0,
16112         "CurrentSecurityContext/umts-SecurityContextData", HFILL }},
16113     { &hf_gsm_map_cksn,
16114       { "cksn", "gsm_map.cksn",
16115         FT_BYTES, BASE_HEX, NULL, 0,
16116         "GSM-SecurityContextData/cksn", HFILL }},
16117     { &hf_gsm_map_ksi,
16118       { "ksi", "gsm_map.ksi",
16119         FT_BYTES, BASE_HEX, NULL, 0,
16120         "UMTS-SecurityContextData/ksi", HFILL }},
16121     { &hf_gsm_map_targetCellId,
16122       { "targetCellId", "gsm_map.targetCellId",
16123         FT_BYTES, BASE_HEX, NULL, 0,
16124         "", HFILL }},
16125     { &hf_gsm_map_ho_NumberNotRequired,
16126       { "ho-NumberNotRequired", "gsm_map.ho_NumberNotRequired",
16127         FT_NONE, BASE_NONE, NULL, 0,
16128         "", HFILL }},
16129     { &hf_gsm_map_bss_APDU,
16130       { "bss-APDU", "gsm_map.bss_APDU",
16131         FT_NONE, BASE_NONE, NULL, 0,
16132         "", HFILL }},
16133     { &hf_gsm_map_targetRNCId,
16134       { "targetRNCId", "gsm_map.targetRNCId",
16135         FT_BYTES, BASE_HEX, NULL, 0,
16136         "", HFILL }},
16137     { &hf_gsm_map_an_APDU,
16138       { "an-APDU", "gsm_map.an_APDU",
16139         FT_NONE, BASE_NONE, NULL, 0,
16140         "", HFILL }},
16141     { &hf_gsm_map_multipleBearerRequested,
16142       { "multipleBearerRequested", "gsm_map.multipleBearerRequested",
16143         FT_NONE, BASE_NONE, NULL, 0,
16144         "PrepareHO-ArgV3/multipleBearerRequested", HFILL }},
16145     { &hf_gsm_map_integrityProtectionInfo,
16146       { "integrityProtectionInfo", "gsm_map.integrityProtectionInfo",
16147         FT_BYTES, BASE_HEX, NULL, 0,
16148         "", HFILL }},
16149     { &hf_gsm_map_encryptionInfo,
16150       { "encryptionInfo", "gsm_map.encryptionInfo",
16151         FT_BYTES, BASE_HEX, NULL, 0,
16152         "", HFILL }},
16153     { &hf_gsm_map_radioResourceInformation,
16154       { "radioResourceInformation", "gsm_map.radioResourceInformation",
16155         FT_BYTES, BASE_HEX, NULL, 0,
16156         "", HFILL }},
16157     { &hf_gsm_map_allowedGSM_Algorithms,
16158       { "allowedGSM-Algorithms", "gsm_map.allowedGSM_Algorithms",
16159         FT_BYTES, BASE_HEX, NULL, 0,
16160         "", HFILL }},
16161     { &hf_gsm_map_allowedUMTS_Algorithms,
16162       { "allowedUMTS-Algorithms", "gsm_map.allowedUMTS_Algorithms",
16163         FT_NONE, BASE_NONE, NULL, 0,
16164         "", HFILL }},
16165     { &hf_gsm_map_radioResourceList,
16166       { "radioResourceList", "gsm_map.radioResourceList",
16167         FT_UINT32, BASE_DEC, NULL, 0,
16168         "", HFILL }},
16169     { &hf_gsm_map_rab_Id,
16170       { "rab-Id", "gsm_map.rab_Id",
16171         FT_UINT32, BASE_DEC, NULL, 0,
16172         "", HFILL }},
16173     { &hf_gsm_map_bssmap_ServiceHandover,
16174       { "bssmap-ServiceHandover", "gsm_map.bssmap_ServiceHandover",
16175         FT_BYTES, BASE_HEX, NULL, 0,
16176         "", HFILL }},
16177     { &hf_gsm_map_ranap_ServiceHandover,
16178       { "ranap-ServiceHandover", "gsm_map.ranap_ServiceHandover",
16179         FT_BYTES, BASE_HEX, NULL, 0,
16180         "", HFILL }},
16181     { &hf_gsm_map_bssmap_ServiceHandoverList,
16182       { "bssmap-ServiceHandoverList", "gsm_map.bssmap_ServiceHandoverList",
16183         FT_UINT32, BASE_DEC, NULL, 0,
16184         "", HFILL }},
16185     { &hf_gsm_map_asciCallReference,
16186       { "asciCallReference", "gsm_map.asciCallReference",
16187         FT_BYTES, BASE_HEX, NULL, 0,
16188         "", HFILL }},
16189     { &hf_gsm_map_geran_classmark,
16190       { "geran-classmark", "gsm_map.geran_classmark",
16191         FT_BYTES, BASE_HEX, NULL, 0,
16192         "", HFILL }},
16193     { &hf_gsm_map_iuCurrentlyUsedCodec,
16194       { "iuCurrentlyUsedCodec", "gsm_map.iuCurrentlyUsedCodec",
16195         FT_BYTES, BASE_HEX, NULL, 0,
16196         "PrepareHO-ArgV3/iuCurrentlyUsedCodec", HFILL }},
16197     { &hf_gsm_map_iuSupportedCodecsList,
16198       { "iuSupportedCodecsList", "gsm_map.iuSupportedCodecsList",
16199         FT_NONE, BASE_NONE, NULL, 0,
16200         "", HFILL }},
16201     { &hf_gsm_map_rab_ConfigurationIndicator,
16202       { "rab-ConfigurationIndicator", "gsm_map.rab_ConfigurationIndicator",
16203         FT_NONE, BASE_NONE, NULL, 0,
16204         "", HFILL }},
16205     { &hf_gsm_map_uesbi_Iu,
16206       { "uesbi-Iu", "gsm_map.uesbi_Iu",
16207         FT_NONE, BASE_NONE, NULL, 0,
16208         "PrepareHO-ArgV3/uesbi-Iu", HFILL }},
16209     { &hf_gsm_map_BSSMAP_ServiceHandoverList_item,
16210       { "Item", "gsm_map.BSSMAP_ServiceHandoverList_item",
16211         FT_NONE, BASE_NONE, NULL, 0,
16212         "BSSMAP-ServiceHandoverList/_item", HFILL }},
16213     { &hf_gsm_map_RadioResourceList_item,
16214       { "Item", "gsm_map.RadioResourceList_item",
16215         FT_NONE, BASE_NONE, NULL, 0,
16216         "RadioResourceList/_item", HFILL }},
16217     { &hf_gsm_map_handoverNumber,
16218       { "handoverNumber", "gsm_map.handoverNumber",
16219         FT_BYTES, BASE_HEX, NULL, 0,
16220         "", HFILL }},
16221     { &hf_gsm_map_relocationNumberList,
16222       { "relocationNumberList", "gsm_map.relocationNumberList",
16223         FT_UINT32, BASE_DEC, NULL, 0,
16224         "PrepareHO-ResV3/relocationNumberList", HFILL }},
16225     { &hf_gsm_map_multicallBearerInfo,
16226       { "multicallBearerInfo", "gsm_map.multicallBearerInfo",
16227         FT_UINT32, BASE_DEC, NULL, 0,
16228         "PrepareHO-ResV3/multicallBearerInfo", HFILL }},
16229     { &hf_gsm_map_multipleBearerNotSupported,
16230       { "multipleBearerNotSupported", "gsm_map.multipleBearerNotSupported",
16231         FT_NONE, BASE_NONE, NULL, 0,
16232         "PrepareHO-ResV3/multipleBearerNotSupported", HFILL }},
16233     { &hf_gsm_map_selectedUMTS_Algorithms,
16234       { "selectedUMTS-Algorithms", "gsm_map.selectedUMTS_Algorithms",
16235         FT_NONE, BASE_NONE, NULL, 0,
16236         "", HFILL }},
16237     { &hf_gsm_map_chosenRadioResourceInformation,
16238       { "chosenRadioResourceInformation", "gsm_map.chosenRadioResourceInformation",
16239         FT_NONE, BASE_NONE, NULL, 0,
16240         "", HFILL }},
16241     { &hf_gsm_map_iuSelectedCodec,
16242       { "iuSelectedCodec", "gsm_map.iuSelectedCodec",
16243         FT_BYTES, BASE_HEX, NULL, 0,
16244         "", HFILL }},
16245     { &hf_gsm_map_iuAvailableCodecsList,
16246       { "iuAvailableCodecsList", "gsm_map.iuAvailableCodecsList",
16247         FT_NONE, BASE_NONE, NULL, 0,
16248         "", HFILL }},
16249     { &hf_gsm_map_integrityProtectionAlgorithm,
16250       { "integrityProtectionAlgorithm", "gsm_map.integrityProtectionAlgorithm",
16251         FT_BYTES, BASE_HEX, NULL, 0,
16252         "SelectedUMTS-Algorithms/integrityProtectionAlgorithm", HFILL }},
16253     { &hf_gsm_map_encryptionAlgorithm,
16254       { "encryptionAlgorithm", "gsm_map.encryptionAlgorithm",
16255         FT_BYTES, BASE_HEX, NULL, 0,
16256         "SelectedUMTS-Algorithms/encryptionAlgorithm", HFILL }},
16257     { &hf_gsm_map_chosenChannelInfo,
16258       { "chosenChannelInfo", "gsm_map.chosenChannelInfo",
16259         FT_BYTES, BASE_HEX, NULL, 0,
16260         "ChosenRadioResourceInformation/chosenChannelInfo", HFILL }},
16261     { &hf_gsm_map_chosenSpeechVersion,
16262       { "chosenSpeechVersion", "gsm_map.chosenSpeechVersion",
16263         FT_BYTES, BASE_HEX, NULL, 0,
16264         "ChosenRadioResourceInformation/chosenSpeechVersion", HFILL }},
16265     { &hf_gsm_map_RelocationNumberList_item,
16266       { "Item", "gsm_map.RelocationNumberList_item",
16267         FT_NONE, BASE_NONE, NULL, 0,
16268         "RelocationNumberList/_item", HFILL }},
16269     { &hf_gsm_map_selectedGSM_Algorithm,
16270       { "selectedGSM-Algorithm", "gsm_map.selectedGSM_Algorithm",
16271         FT_BYTES, BASE_HEX, NULL, 0,
16272         "ProcessAccessSignallingArgV3/selectedGSM-Algorithm", HFILL }},
16273     { &hf_gsm_map_selectedRab_Id,
16274       { "selectedRab-Id", "gsm_map.selectedRab_Id",
16275         FT_UINT32, BASE_DEC, NULL, 0,
16276         "", HFILL }},
16277     { &hf_gsm_map_iUSelectedCodec,
16278       { "iUSelectedCodec", "gsm_map.iUSelectedCodec",
16279         FT_BYTES, BASE_HEX, NULL, 0,
16280         "ProcessAccessSignallingArgV3/iUSelectedCodec", HFILL }},
16281     { &hf_gsm_map_utranCodecList,
16282       { "utranCodecList", "gsm_map.utranCodecList",
16283         FT_NONE, BASE_NONE, NULL, 0,
16284         "SupportedCodecsList/utranCodecList", HFILL }},
16285     { &hf_gsm_map_geranCodecList,
16286       { "geranCodecList", "gsm_map.geranCodecList",
16287         FT_NONE, BASE_NONE, NULL, 0,
16288         "SupportedCodecsList/geranCodecList", HFILL }},
16289     { &hf_gsm_map_codec1,
16290       { "codec1", "gsm_map.codec1",
16291         FT_BYTES, BASE_HEX, NULL, 0,
16292         "CodecList/codec1", HFILL }},
16293     { &hf_gsm_map_codec2,
16294       { "codec2", "gsm_map.codec2",
16295         FT_BYTES, BASE_HEX, NULL, 0,
16296         "CodecList/codec2", HFILL }},
16297     { &hf_gsm_map_codec3,
16298       { "codec3", "gsm_map.codec3",
16299         FT_BYTES, BASE_HEX, NULL, 0,
16300         "CodecList/codec3", HFILL }},
16301     { &hf_gsm_map_codec4,
16302       { "codec4", "gsm_map.codec4",
16303         FT_BYTES, BASE_HEX, NULL, 0,
16304         "CodecList/codec4", HFILL }},
16305     { &hf_gsm_map_codec5,
16306       { "codec5", "gsm_map.codec5",
16307         FT_BYTES, BASE_HEX, NULL, 0,
16308         "CodecList/codec5", HFILL }},
16309     { &hf_gsm_map_codec6,
16310       { "codec6", "gsm_map.codec6",
16311         FT_BYTES, BASE_HEX, NULL, 0,
16312         "CodecList/codec6", HFILL }},
16313     { &hf_gsm_map_codec7,
16314       { "codec7", "gsm_map.codec7",
16315         FT_BYTES, BASE_HEX, NULL, 0,
16316         "CodecList/codec7", HFILL }},
16317     { &hf_gsm_map_codec8,
16318       { "codec8", "gsm_map.codec8",
16319         FT_BYTES, BASE_HEX, NULL, 0,
16320         "CodecList/codec8", HFILL }},
16321     { &hf_gsm_map_keyStatus,
16322       { "keyStatus", "gsm_map.keyStatus",
16323         FT_UINT32, BASE_DEC, VALS(gsm_map_KeyStatus_vals), 0,
16324         "ForwardAccessSignallingArgV3/keyStatus", HFILL }},
16325     { &hf_gsm_map_currentlyUsedCodec,
16326       { "currentlyUsedCodec", "gsm_map.currentlyUsedCodec",
16327         FT_BYTES, BASE_HEX, NULL, 0,
16328         "ForwardAccessSignallingArgV3/currentlyUsedCodec", HFILL }},
16329     { &hf_gsm_map_integrityProtectionAlgorithms,
16330       { "integrityProtectionAlgorithms", "gsm_map.integrityProtectionAlgorithms",
16331         FT_BYTES, BASE_HEX, NULL, 0,
16332         "AllowedUMTS-Algorithms/integrityProtectionAlgorithms", HFILL }},
16333     { &hf_gsm_map_encryptionAlgorithms,
16334       { "encryptionAlgorithms", "gsm_map.encryptionAlgorithms",
16335         FT_BYTES, BASE_HEX, NULL, 0,
16336         "AllowedUMTS-Algorithms/encryptionAlgorithms", HFILL }},
16337     { &hf_gsm_map_targetMSC_Number,
16338       { "targetMSC-Number", "gsm_map.targetMSC_Number",
16339         FT_BYTES, BASE_HEX, NULL, 0,
16340         "", HFILL }},
16341     { &hf_gsm_map_immediateResponsePreferred,
16342       { "immediateResponsePreferred", "gsm_map.immediateResponsePreferred",
16343         FT_NONE, BASE_NONE, NULL, 0,
16344         "SendAuthenticationInfoArgV2/immediateResponsePreferred", HFILL }},
16345     { &hf_gsm_map_re_synchronisationInfo,
16346       { "re-synchronisationInfo", "gsm_map.re_synchronisationInfo",
16347         FT_NONE, BASE_NONE, NULL, 0,
16348         "SendAuthenticationInfoArgV2/re-synchronisationInfo", HFILL }},
16349     { &hf_gsm_map_requestingNodeType,
16350       { "requestingNodeType", "gsm_map.requestingNodeType",
16351         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestingNodeType_vals), 0,
16352         "SendAuthenticationInfoArgV2/requestingNodeType", HFILL }},
16353     { &hf_gsm_map_requestingPLMN_Id,
16354       { "requestingPLMN-Id", "gsm_map.requestingPLMN_Id",
16355         FT_BYTES, BASE_HEX, NULL, 0,
16356         "SendAuthenticationInfoArgV2/requestingPLMN-Id", HFILL }},
16357     { &hf_gsm_map_SendAuthenticationInfoRes_item,
16358       { "Item", "gsm_map.SendAuthenticationInfoRes_item",
16359         FT_NONE, BASE_NONE, NULL, 0,
16360         "SendAuthenticationInfoRes/_item", HFILL }},
16361     { &hf_gsm_map_auts,
16362       { "auts", "gsm_map.auts",
16363         FT_BYTES, BASE_HEX, NULL, 0,
16364         "Re-synchronisationInfo/auts", HFILL }},
16365     { &hf_gsm_map_imei,
16366       { "imei", "gsm_map.imei",
16367         FT_BYTES, BASE_HEX, NULL, 0,
16368         "", HFILL }},
16369     { &hf_gsm_map_requestedEquipmentInfo,
16370       { "requestedEquipmentInfo", "gsm_map.requestedEquipmentInfo",
16371         FT_BYTES, BASE_HEX, NULL, 0,
16372         "CheckIMEIArgV2/requestedEquipmentInfo", HFILL }},
16373     { &hf_gsm_map_equipmentStatus,
16374       { "equipmentStatus", "gsm_map.equipmentStatus",
16375         FT_UINT32, BASE_DEC, VALS(gsm_map_EquipmentStatus_vals), 0,
16376         "CheckIMEIRes/equipmentStatus", HFILL }},
16377     { &hf_gsm_map_bmuef,
16378       { "bmuef", "gsm_map.bmuef",
16379         FT_NONE, BASE_NONE, NULL, 0,
16380         "CheckIMEIRes/bmuef", HFILL }},
16381     { &hf_gsm_map_uesbi_IuA,
16382       { "uesbi-IuA", "gsm_map.uesbi_IuA",
16383         FT_BYTES, BASE_HEX, NULL, 0,
16384         "UESBI-Iu/uesbi-IuA", HFILL }},
16385     { &hf_gsm_map_uesbi_IuB,
16386       { "uesbi-IuB", "gsm_map.uesbi_IuB",
16387         FT_BYTES, BASE_HEX, NULL, 0,
16388         "UESBI-Iu/uesbi-IuB", HFILL }},
16389     { &hf_gsm_map_bearerservice,
16390       { "bearerservice", "gsm_map.bearerservice",
16391         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
16392         "BasicService/bearerservice", HFILL }},
16393     { &hf_gsm_map_teleservice,
16394       { "teleservice", "gsm_map.teleservice",
16395         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16396         "BasicService/teleservice", HFILL }},
16397     { &hf_gsm_map_BasicServiceGroupList_item,
16398       { "Item", "gsm_map.BasicServiceGroupList_item",
16399         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_vals), 0,
16400         "BasicServiceGroupList/_item", HFILL }},
16401     { &hf_gsm_map_bcsmTriggerDetectionPoint,
16402       { "bcsmTriggerDetectionPoint", "gsm_map.bcsmTriggerDetectionPoint",
16403         FT_UINT32, BASE_DEC, VALS(gsm_map_BcsmTriggerDetectionPoint_vals), 0,
16404         "BcsmCamelTDPData/bcsmTriggerDetectionPoint", HFILL }},
16405     { &hf_gsm_map_serviceKey,
16406       { "serviceKey", "gsm_map.serviceKey",
16407         FT_UINT32, BASE_DEC, NULL, 0,
16408         "", HFILL }},
16409     { &hf_gsm_map_gsmSCFAddress,
16410       { "gsmSCFAddress", "gsm_map.gsmSCFAddress",
16411         FT_BYTES, BASE_HEX, NULL, 0,
16412         "BcsmCamelTDPData/gsmSCFAddress", HFILL }},
16413     { &hf_gsm_map_defaultCallHandling,
16414       { "defaultCallHandling", "gsm_map.defaultCallHandling",
16415         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultCallHandling_vals), 0,
16416         "", HFILL }},
16417     { &hf_gsm_map_BcsmCamelTDPDataList_item,
16418       { "Item", "gsm_map.BcsmCamelTDPDataList_item",
16419         FT_NONE, BASE_NONE, NULL, 0,
16420         "BcsmCamelTDPDataList/_item", HFILL }},
16421     { &hf_gsm_map_o_BcsmCamelTDPDataList,
16422       { "o-BcsmCamelTDPDataList", "gsm_map.o_BcsmCamelTDPDataList",
16423         FT_UINT32, BASE_DEC, NULL, 0,
16424         "O-CSI/o-BcsmCamelTDPDataList", HFILL }},
16425     { &hf_gsm_map_camelCapabilityHandling,
16426       { "camelCapabilityHandling", "gsm_map.camelCapabilityHandling",
16427         FT_UINT32, BASE_DEC, NULL, 0,
16428         "", HFILL }},
16429     { &hf_gsm_map_notificationToCSE,
16430       { "notificationToCSE", "gsm_map.notificationToCSE",
16431         FT_NONE, BASE_NONE, NULL, 0,
16432         "", HFILL }},
16433     { &hf_gsm_map_csiActive,
16434       { "csiActive", "gsm_map.csiActive",
16435         FT_NONE, BASE_NONE, NULL, 0,
16436         "O-CSI/csiActive", HFILL }},
16437     { &hf_gsm_map_O_BcsmCamelTDPDataList_item,
16438       { "Item", "gsm_map.O_BcsmCamelTDPDataList_item",
16439         FT_NONE, BASE_NONE, NULL, 0,
16440         "O-BcsmCamelTDPDataList/_item", HFILL }},
16441     { &hf_gsm_map_o_BcsmTriggerDetectionPoint,
16442       { "o-BcsmTriggerDetectionPoint", "gsm_map.o_BcsmTriggerDetectionPoint",
16443         FT_UINT32, BASE_DEC, VALS(gsm_map_O_BcsmTriggerDetectionPoint_vals), 0,
16444         "", HFILL }},
16445     { &hf_gsm_map_gsmSCF_Address,
16446       { "gsmSCF-Address", "gsm_map.gsmSCF_Address",
16447         FT_BYTES, BASE_HEX, NULL, 0,
16448         "", HFILL }},
16449     { &hf_gsm_map_msisdn,
16450       { "msisdn", "gsm_map.msisdn",
16451         FT_BYTES, BASE_HEX, NULL, 0,
16452         "", HFILL }},
16453     { &hf_gsm_map_category,
16454       { "category", "gsm_map.category",
16455         FT_BYTES, BASE_HEX, NULL, 0,
16456         "InsertSubscriberDataArg/category", HFILL }},
16457     { &hf_gsm_map_subscriberStatus,
16458       { "subscriberStatus", "gsm_map.subscriberStatus",
16459         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberStatus_vals), 0,
16460         "InsertSubscriberDataArg/subscriberStatus", HFILL }},
16461     { &hf_gsm_map_bearerserviceList,
16462       { "bearerserviceList", "gsm_map.bearerserviceList",
16463         FT_UINT32, BASE_DEC, NULL, 0,
16464         "InsertSubscriberDataArg/bearerserviceList", HFILL }},
16465     { &hf_gsm_map_teleserviceList,
16466       { "teleserviceList", "gsm_map.teleserviceList",
16467         FT_UINT32, BASE_DEC, NULL, 0,
16468         "", HFILL }},
16469     { &hf_gsm_map_provisionedSS,
16470       { "provisionedSS", "gsm_map.provisionedSS",
16471         FT_UINT32, BASE_DEC, NULL, 0,
16472         "InsertSubscriberDataArg/provisionedSS", HFILL }},
16473     { &hf_gsm_map_odb_Data,
16474       { "odb-Data", "gsm_map.odb_Data",
16475         FT_NONE, BASE_NONE, NULL, 0,
16476         "", HFILL }},
16477     { &hf_gsm_map_roamingRestrictionDueToUnsupportedFeature,
16478       { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.roamingRestrictionDueToUnsupportedFeature",
16479         FT_NONE, BASE_NONE, NULL, 0,
16480         "", HFILL }},
16481     { &hf_gsm_map_regionalSubscriptionData,
16482       { "regionalSubscriptionData", "gsm_map.regionalSubscriptionData",
16483         FT_UINT32, BASE_DEC, NULL, 0,
16484         "InsertSubscriberDataArg/regionalSubscriptionData", HFILL }},
16485     { &hf_gsm_map_vbsSubscriptionData,
16486       { "vbsSubscriptionData", "gsm_map.vbsSubscriptionData",
16487         FT_UINT32, BASE_DEC, NULL, 0,
16488         "InsertSubscriberDataArg/vbsSubscriptionData", HFILL }},
16489     { &hf_gsm_map_vgcsSubscriptionData,
16490       { "vgcsSubscriptionData", "gsm_map.vgcsSubscriptionData",
16491         FT_UINT32, BASE_DEC, NULL, 0,
16492         "InsertSubscriberDataArg/vgcsSubscriptionData", HFILL }},
16493     { &hf_gsm_map_vlrCamelSubscriptionInfo,
16494       { "vlrCamelSubscriptionInfo", "gsm_map.vlrCamelSubscriptionInfo",
16495         FT_NONE, BASE_NONE, NULL, 0,
16496         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo", HFILL }},
16497     { &hf_gsm_map_naea_PreferredCI,
16498       { "naea-PreferredCI", "gsm_map.naea_PreferredCI",
16499         FT_NONE, BASE_NONE, NULL, 0,
16500         "", HFILL }},
16501     { &hf_gsm_map_gprsSubscriptionData,
16502       { "gprsSubscriptionData", "gsm_map.gprsSubscriptionData",
16503         FT_NONE, BASE_NONE, NULL, 0,
16504         "InsertSubscriberDataArg/gprsSubscriptionData", HFILL }},
16505     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature,
16506       { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsupportedFeature",
16507         FT_NONE, BASE_NONE, NULL, 0,
16508         "InsertSubscriberDataArg/roamingRestrictedInSgsnDueToUnsupportedFeature", HFILL }},
16509     { &hf_gsm_map_networkAccessMode,
16510       { "networkAccessMode", "gsm_map.networkAccessMode",
16511         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkAccessMode_vals), 0,
16512         "InsertSubscriberDataArg/networkAccessMode", HFILL }},
16513     { &hf_gsm_map_lsaInformation,
16514       { "lsaInformation", "gsm_map.lsaInformation",
16515         FT_NONE, BASE_NONE, NULL, 0,
16516         "InsertSubscriberDataArg/lsaInformation", HFILL }},
16517     { &hf_gsm_map_lmu_Indicator,
16518       { "lmu-Indicator", "gsm_map.lmu_Indicator",
16519         FT_NONE, BASE_NONE, NULL, 0,
16520         "InsertSubscriberDataArg/lmu-Indicator", HFILL }},
16521     { &hf_gsm_map_lcsInformation,
16522       { "lcsInformation", "gsm_map.lcsInformation",
16523         FT_NONE, BASE_NONE, NULL, 0,
16524         "InsertSubscriberDataArg/lcsInformation", HFILL }},
16525     { &hf_gsm_map_istAlertTimer,
16526       { "istAlertTimer", "gsm_map.istAlertTimer",
16527         FT_UINT32, BASE_DEC, NULL, 0,
16528         "", HFILL }},
16529     { &hf_gsm_map_superChargerSupportedInHLR,
16530       { "superChargerSupportedInHLR", "gsm_map.superChargerSupportedInHLR",
16531         FT_BYTES, BASE_HEX, NULL, 0,
16532         "InsertSubscriberDataArg/superChargerSupportedInHLR", HFILL }},
16533     { &hf_gsm_map_mc_SS_Info,
16534       { "mc-SS-Info", "gsm_map.mc_SS_Info",
16535         FT_NONE, BASE_NONE, NULL, 0,
16536         "InsertSubscriberDataArg/mc-SS-Info", HFILL }},
16537     { &hf_gsm_map_cs_AllocationRetentionPriority,
16538       { "cs-AllocationRetentionPriority", "gsm_map.cs_AllocationRetentionPriority",
16539         FT_BYTES, BASE_HEX, NULL, 0,
16540         "InsertSubscriberDataArg/cs-AllocationRetentionPriority", HFILL }},
16541     { &hf_gsm_map_sgsn_CAMEL_SubscriptionInfo,
16542       { "sgsn-CAMEL-SubscriptionInfo", "gsm_map.sgsn_CAMEL_SubscriptionInfo",
16543         FT_NONE, BASE_NONE, NULL, 0,
16544         "InsertSubscriberDataArg/sgsn-CAMEL-SubscriptionInfo", HFILL }},
16545     { &hf_gsm_map_chargingCharacteristics,
16546       { "chargingCharacteristics", "gsm_map.chargingCharacteristics",
16547         FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00,
16548         "", HFILL }},
16549     { &hf_gsm_map_accessRestrictionData,
16550       { "accessRestrictionData", "gsm_map.accessRestrictionData",
16551         FT_BYTES, BASE_HEX, NULL, 0,
16552         "InsertSubscriberDataArg/accessRestrictionData", HFILL }},
16553     { &hf_gsm_map_gmlc_List,
16554       { "gmlc-List", "gsm_map.gmlc_List",
16555         FT_UINT32, BASE_DEC, NULL, 0,
16556         "LCSInformation/gmlc-List", HFILL }},
16557     { &hf_gsm_map_lcs_PrivacyExceptionList,
16558       { "lcs-PrivacyExceptionList", "gsm_map.lcs_PrivacyExceptionList",
16559         FT_UINT32, BASE_DEC, NULL, 0,
16560         "LCSInformation/lcs-PrivacyExceptionList", HFILL }},
16561     { &hf_gsm_map_molr_List,
16562       { "molr-List", "gsm_map.molr_List",
16563         FT_UINT32, BASE_DEC, NULL, 0,
16564         "LCSInformation/molr-List", HFILL }},
16565     { &hf_gsm_map_add_lcs_PrivacyExceptionList,
16566       { "add-lcs-PrivacyExceptionList", "gsm_map.add_lcs_PrivacyExceptionList",
16567         FT_UINT32, BASE_DEC, NULL, 0,
16568         "LCSInformation/add-lcs-PrivacyExceptionList", HFILL }},
16569     { &hf_gsm_map_GMLC_List_item,
16570       { "Item", "gsm_map.GMLC_List_item",
16571         FT_BYTES, BASE_HEX, NULL, 0,
16572         "GMLC-List/_item", HFILL }},
16573     { &hf_gsm_map_GPRSDataList_item,
16574       { "Item", "gsm_map.GPRSDataList_item",
16575         FT_NONE, BASE_NONE, NULL, 0,
16576         "GPRSDataList/_item", HFILL }},
16577     { &hf_gsm_map_pdp_ContextId,
16578       { "pdp-ContextId", "gsm_map.pdp_ContextId",
16579         FT_UINT32, BASE_DEC, NULL, 0,
16580         "PDP-Context/pdp-ContextId", HFILL }},
16581     { &hf_gsm_map_pdp_Type,
16582       { "pdp-Type", "gsm_map.pdp_Type",
16583         FT_BYTES, BASE_HEX, NULL, 0,
16584         "", HFILL }},
16585     { &hf_gsm_map_pdp_Address,
16586       { "pdp-Address", "gsm_map.pdp_Address",
16587         FT_BYTES, BASE_HEX, NULL, 0,
16588         "", HFILL }},
16589     { &hf_gsm_map_qos_Subscribed,
16590       { "qos-Subscribed", "gsm_map.qos_Subscribed",
16591         FT_BYTES, BASE_HEX, NULL, 0,
16592         "PDP-Context/qos-Subscribed", HFILL }},
16593     { &hf_gsm_map_vplmnAddressAllowed,
16594       { "vplmnAddressAllowed", "gsm_map.vplmnAddressAllowed",
16595         FT_NONE, BASE_NONE, NULL, 0,
16596         "PDP-Context/vplmnAddressAllowed", HFILL }},
16597     { &hf_gsm_map_apn,
16598       { "apn", "gsm_map.apn",
16599         FT_BYTES, BASE_HEX, NULL, 0,
16600         "PDP-Context/apn", HFILL }},
16601     { &hf_gsm_map_ext_QoS_Subscribed,
16602       { "ext-QoS-Subscribed", "gsm_map.ext_QoS_Subscribed",
16603         FT_BYTES, BASE_HEX, NULL, 0,
16604         "PDP-Context/ext-QoS-Subscribed", HFILL }},
16605     { &hf_gsm_map_pdp_ChargingCharacteristics,
16606       { "pdp-ChargingCharacteristics", "gsm_map.pdp_ChargingCharacteristics",
16607         FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00,
16608         "PDP-Context/pdp-ChargingCharacteristics", HFILL }},
16609     { &hf_gsm_map_ext2_QoS_Subscribed,
16610       { "ext2-QoS-Subscribed", "gsm_map.ext2_QoS_Subscribed",
16611         FT_BYTES, BASE_HEX, NULL, 0,
16612         "PDP-Context/ext2-QoS-Subscribed", HFILL }},
16613     { &hf_gsm_map_completeDataListIncluded,
16614       { "completeDataListIncluded", "gsm_map.completeDataListIncluded",
16615         FT_NONE, BASE_NONE, NULL, 0,
16616         "", HFILL }},
16617     { &hf_gsm_map_gprsDataList,
16618       { "gprsDataList", "gsm_map.gprsDataList",
16619         FT_UINT32, BASE_DEC, NULL, 0,
16620         "GPRSSubscriptionData/gprsDataList", HFILL }},
16621     { &hf_gsm_map_gprs_CSI,
16622       { "gprs-CSI", "gsm_map.gprs_CSI",
16623         FT_NONE, BASE_NONE, NULL, 0,
16624         "", HFILL }},
16625     { &hf_gsm_map_mo_sms_CSI,
16626       { "mo-sms-CSI", "gsm_map.mo_sms_CSI",
16627         FT_NONE, BASE_NONE, NULL, 0,
16628         "", HFILL }},
16629     { &hf_gsm_map_mt_sms_CSI,
16630       { "mt-sms-CSI", "gsm_map.mt_sms_CSI",
16631         FT_NONE, BASE_NONE, NULL, 0,
16632         "", HFILL }},
16633     { &hf_gsm_map_mt_smsCAMELTDP_CriteriaList,
16634       { "mt-smsCAMELTDP-CriteriaList", "gsm_map.mt_smsCAMELTDP_CriteriaList",
16635         FT_UINT32, BASE_DEC, NULL, 0,
16636         "", HFILL }},
16637     { &hf_gsm_map_mg_csi,
16638       { "mg-csi", "gsm_map.mg_csi",
16639         FT_NONE, BASE_NONE, NULL, 0,
16640         "", HFILL }},
16641     { &hf_gsm_map_gprs_CamelTDPDataList,
16642       { "gprs-CamelTDPDataList", "gsm_map.gprs_CamelTDPDataList",
16643         FT_UINT32, BASE_DEC, NULL, 0,
16644         "GPRS-CSI/gprs-CamelTDPDataList", HFILL }},
16645     { &hf_gsm_map_csi_Active,
16646       { "csi-Active", "gsm_map.csi_Active",
16647         FT_NONE, BASE_NONE, NULL, 0,
16648         "", HFILL }},
16649     { &hf_gsm_map_GPRS_CamelTDPDataList_item,
16650       { "Item", "gsm_map.GPRS_CamelTDPDataList_item",
16651         FT_NONE, BASE_NONE, NULL, 0,
16652         "GPRS-CamelTDPDataList/_item", HFILL }},
16653     { &hf_gsm_map_gprs_TriggerDetectionPoint,
16654       { "gprs-TriggerDetectionPoint", "gsm_map.gprs_TriggerDetectionPoint",
16655         FT_UINT32, BASE_DEC, VALS(gsm_map_GPRS_TriggerDetectionPoint_vals), 0,
16656         "GPRS-CamelTDPData/gprs-TriggerDetectionPoint", HFILL }},
16657     { &hf_gsm_map_defaultSessionHandling,
16658       { "defaultSessionHandling", "gsm_map.defaultSessionHandling",
16659         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultGPRS_Handling_vals), 0,
16660         "GPRS-CamelTDPData/defaultSessionHandling", HFILL }},
16661     { &hf_gsm_map_LSADataList_item,
16662       { "Item", "gsm_map.LSADataList_item",
16663         FT_NONE, BASE_NONE, NULL, 0,
16664         "LSADataList/_item", HFILL }},
16665     { &hf_gsm_map_lsaIdentity,
16666       { "lsaIdentity", "gsm_map.lsaIdentity",
16667         FT_BYTES, BASE_HEX, NULL, 0,
16668         "LSAData/lsaIdentity", HFILL }},
16669     { &hf_gsm_map_lsaAttributes,
16670       { "lsaAttributes", "gsm_map.lsaAttributes",
16671         FT_BYTES, BASE_HEX, NULL, 0,
16672         "LSAData/lsaAttributes", HFILL }},
16673     { &hf_gsm_map_lsaActiveModeIndicator,
16674       { "lsaActiveModeIndicator", "gsm_map.lsaActiveModeIndicator",
16675         FT_NONE, BASE_NONE, NULL, 0,
16676         "LSAData/lsaActiveModeIndicator", HFILL }},
16677     { &hf_gsm_map_lsaOnlyAccessIndicator,
16678       { "lsaOnlyAccessIndicator", "gsm_map.lsaOnlyAccessIndicator",
16679         FT_UINT32, BASE_DEC, VALS(gsm_map_LSAOnlyAccessIndicator_vals), 0,
16680         "LSAInformation/lsaOnlyAccessIndicator", HFILL }},
16681     { &hf_gsm_map_lsaDataList,
16682       { "lsaDataList", "gsm_map.lsaDataList",
16683         FT_UINT32, BASE_DEC, NULL, 0,
16684         "LSAInformation/lsaDataList", HFILL }},
16685     { &hf_gsm_map_bearerServiceList,
16686       { "bearerServiceList", "gsm_map.bearerServiceList",
16687         FT_UINT32, BASE_DEC, NULL, 0,
16688         "InsertSubscriberDataRes/bearerServiceList", HFILL }},
16689     { &hf_gsm_map_ss_List,
16690       { "ss-List", "gsm_map.ss_List",
16691         FT_UINT32, BASE_DEC, NULL, 0,
16692         "", HFILL }},
16693     { &hf_gsm_map_odb_GeneralData,
16694       { "odb-GeneralData", "gsm_map.odb_GeneralData",
16695         FT_BYTES, BASE_HEX, NULL, 0,
16696         "", HFILL }},
16697     { &hf_gsm_map_regionalSubscriptionResponse,
16698       { "regionalSubscriptionResponse", "gsm_map.regionalSubscriptionResponse",
16699         FT_UINT32, BASE_DEC, VALS(gsm_map_RegionalSubscriptionResponse_vals), 0,
16700         "", HFILL }},
16701     { &hf_gsm_map_basicServiceList,
16702       { "basicServiceList", "gsm_map.basicServiceList",
16703         FT_UINT32, BASE_DEC, NULL, 0,
16704         "DeleteSubscriberDataArg/basicServiceList", HFILL }},
16705     { &hf_gsm_map_regionalSubscriptionIdentifier,
16706       { "regionalSubscriptionIdentifier", "gsm_map.regionalSubscriptionIdentifier",
16707         FT_BYTES, BASE_HEX, NULL, 0,
16708         "DeleteSubscriberDataArg/regionalSubscriptionIdentifier", HFILL }},
16709     { &hf_gsm_map_vbsGroupIndication,
16710       { "vbsGroupIndication", "gsm_map.vbsGroupIndication",
16711         FT_NONE, BASE_NONE, NULL, 0,
16712         "DeleteSubscriberDataArg/vbsGroupIndication", HFILL }},
16713     { &hf_gsm_map_vgcsGroupIndication,
16714       { "vgcsGroupIndication", "gsm_map.vgcsGroupIndication",
16715         FT_NONE, BASE_NONE, NULL, 0,
16716         "DeleteSubscriberDataArg/vgcsGroupIndication", HFILL }},
16717     { &hf_gsm_map_camelSubscriptionInfoWithdraw,
16718       { "camelSubscriptionInfoWithdraw", "gsm_map.camelSubscriptionInfoWithdraw",
16719         FT_NONE, BASE_NONE, NULL, 0,
16720         "DeleteSubscriberDataArg/camelSubscriptionInfoWithdraw", HFILL }},
16721     { &hf_gsm_map_gprsSubscriptionDataWithdraw,
16722       { "gprsSubscriptionDataWithdraw", "gsm_map.gprsSubscriptionDataWithdraw",
16723         FT_UINT32, BASE_DEC, VALS(gsm_map_GPRSSubscriptionDataWithdraw_vals), 0,
16724         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw", HFILL }},
16725     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature,
16726       { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsuppportedFeature",
16727         FT_NONE, BASE_NONE, NULL, 0,
16728         "DeleteSubscriberDataArg/roamingRestrictedInSgsnDueToUnsuppportedFeature", HFILL }},
16729     { &hf_gsm_map_lsaInformationWithdraw,
16730       { "lsaInformationWithdraw", "gsm_map.lsaInformationWithdraw",
16731         FT_UINT32, BASE_DEC, VALS(gsm_map_LSAInformationWithdraw_vals), 0,
16732         "DeleteSubscriberDataArg/lsaInformationWithdraw", HFILL }},
16733     { &hf_gsm_map_gmlc_ListWithdraw,
16734       { "gmlc-ListWithdraw", "gsm_map.gmlc_ListWithdraw",
16735         FT_NONE, BASE_NONE, NULL, 0,
16736         "DeleteSubscriberDataArg/gmlc-ListWithdraw", HFILL }},
16737     { &hf_gsm_map_istInformationWithdraw,
16738       { "istInformationWithdraw", "gsm_map.istInformationWithdraw",
16739         FT_NONE, BASE_NONE, NULL, 0,
16740         "", HFILL }},
16741     { &hf_gsm_map_specificCSI_Withdraw,
16742       { "specificCSI-Withdraw", "gsm_map.specificCSI_Withdraw",
16743         FT_BYTES, BASE_HEX, NULL, 0,
16744         "DeleteSubscriberDataArg/specificCSI-Withdraw", HFILL }},
16745     { &hf_gsm_map_chargingCharacteristicsWithdraw,
16746       { "chargingCharacteristicsWithdraw", "gsm_map.chargingCharacteristicsWithdraw",
16747         FT_NONE, BASE_NONE, NULL, 0,
16748         "DeleteSubscriberDataArg/chargingCharacteristicsWithdraw", HFILL }},
16749     { &hf_gsm_map_allGPRSData,
16750       { "allGPRSData", "gsm_map.allGPRSData",
16751         FT_NONE, BASE_NONE, NULL, 0,
16752         "GPRSSubscriptionDataWithdraw/allGPRSData", HFILL }},
16753     { &hf_gsm_map_contextIdList,
16754       { "contextIdList", "gsm_map.contextIdList",
16755         FT_UINT32, BASE_DEC, NULL, 0,
16756         "GPRSSubscriptionDataWithdraw/contextIdList", HFILL }},
16757     { &hf_gsm_map_ContextIdList_item,
16758       { "Item", "gsm_map.ContextIdList_item",
16759         FT_UINT32, BASE_DEC, NULL, 0,
16760         "ContextIdList/_item", HFILL }},
16761     { &hf_gsm_map_allLSAData,
16762       { "allLSAData", "gsm_map.allLSAData",
16763         FT_NONE, BASE_NONE, NULL, 0,
16764         "LSAInformationWithdraw/allLSAData", HFILL }},
16765     { &hf_gsm_map_lsaIdentityList,
16766       { "lsaIdentityList", "gsm_map.lsaIdentityList",
16767         FT_UINT32, BASE_DEC, NULL, 0,
16768         "LSAInformationWithdraw/lsaIdentityList", HFILL }},
16769     { &hf_gsm_map_LSAIdentityList_item,
16770       { "Item", "gsm_map.LSAIdentityList_item",
16771         FT_BYTES, BASE_HEX, NULL, 0,
16772         "LSAIdentityList/_item", HFILL }},
16773     { &hf_gsm_map_BasicServiceList_item,
16774       { "Item", "gsm_map.BasicServiceList_item",
16775         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16776         "BasicServiceList/_item", HFILL }},
16777     { &hf_gsm_map_o_CSI,
16778       { "o-CSI", "gsm_map.o_CSI",
16779         FT_NONE, BASE_NONE, NULL, 0,
16780         "", HFILL }},
16781     { &hf_gsm_map_ss_CSI,
16782       { "ss-CSI", "gsm_map.ss_CSI",
16783         FT_NONE, BASE_NONE, NULL, 0,
16784         "", HFILL }},
16785     { &hf_gsm_map_o_BcsmCamelTDP_CriteriaList,
16786       { "o-BcsmCamelTDP-CriteriaList", "gsm_map.o_BcsmCamelTDP_CriteriaList",
16787         FT_UINT32, BASE_DEC, NULL, 0,
16788         "", HFILL }},
16789     { &hf_gsm_map_tif_CSI,
16790       { "tif-CSI", "gsm_map.tif_CSI",
16791         FT_NONE, BASE_NONE, NULL, 0,
16792         "", HFILL }},
16793     { &hf_gsm_map_m_CSI,
16794       { "m-CSI", "gsm_map.m_CSI",
16795         FT_NONE, BASE_NONE, NULL, 0,
16796         "", HFILL }},
16797     { &hf_gsm_map_vt_CSI,
16798       { "vt-CSI", "gsm_map.vt_CSI",
16799         FT_NONE, BASE_NONE, NULL, 0,
16800         "", HFILL }},
16801     { &hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList,
16802       { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.t_BCSM_CAMEL_TDP_CriteriaList",
16803         FT_UINT32, BASE_DEC, NULL, 0,
16804         "", HFILL }},
16805     { &hf_gsm_map_d_CSI,
16806       { "d-CSI", "gsm_map.d_CSI",
16807         FT_NONE, BASE_NONE, NULL, 0,
16808         "", HFILL }},
16809     { &hf_gsm_map_MT_smsCAMELTDP_CriteriaList_item,
16810       { "Item", "gsm_map.MT_smsCAMELTDP_CriteriaList_item",
16811         FT_NONE, BASE_NONE, NULL, 0,
16812         "MT-smsCAMELTDP-CriteriaList/_item", HFILL }},
16813     { &hf_gsm_map_sms_TriggerDetectionPoint,
16814       { "sms-TriggerDetectionPoint", "gsm_map.sms_TriggerDetectionPoint",
16815         FT_UINT32, BASE_DEC, VALS(gsm_map_SMS_TriggerDetectionPoint_vals), 0,
16816         "", HFILL }},
16817     { &hf_gsm_map_tpdu_TypeCriterion,
16818       { "tpdu-TypeCriterion", "gsm_map.tpdu_TypeCriterion",
16819         FT_UINT32, BASE_DEC, NULL, 0,
16820         "MT-smsCAMELTDP-Criteria/tpdu-TypeCriterion", HFILL }},
16821     { &hf_gsm_map_TPDU_TypeCriterion_item,
16822       { "Item", "gsm_map.TPDU_TypeCriterion_item",
16823         FT_UINT32, BASE_DEC, VALS(gsm_map_MT_SMS_TPDU_Type_vals), 0,
16824         "TPDU-TypeCriterion/_item", HFILL }},
16825     { &hf_gsm_map_dp_AnalysedInfoCriteriaList,
16826       { "dp-AnalysedInfoCriteriaList", "gsm_map.dp_AnalysedInfoCriteriaList",
16827         FT_UINT32, BASE_DEC, NULL, 0,
16828         "D-CSI/dp-AnalysedInfoCriteriaList", HFILL }},
16829     { &hf_gsm_map_DP_AnalysedInfoCriteriaList_item,
16830       { "Item", "gsm_map.DP_AnalysedInfoCriteriaList_item",
16831         FT_NONE, BASE_NONE, NULL, 0,
16832         "DP-AnalysedInfoCriteriaList/_item", HFILL }},
16833     { &hf_gsm_map_dialledNumber,
16834       { "dialledNumber", "gsm_map.dialledNumber",
16835         FT_BYTES, BASE_HEX, NULL, 0,
16836         "DP-AnalysedInfoCriterium/dialledNumber", HFILL }},
16837     { &hf_gsm_map_ss_CamelData,
16838       { "ss-CamelData", "gsm_map.ss_CamelData",
16839         FT_NONE, BASE_NONE, NULL, 0,
16840         "SS-CSI/ss-CamelData", HFILL }},
16841     { &hf_gsm_map_ss_EventList,
16842       { "ss-EventList", "gsm_map.ss_EventList",
16843         FT_UINT32, BASE_DEC, NULL, 0,
16844         "SS-CamelData/ss-EventList", HFILL }},
16845     { &hf_gsm_map_mobilityTriggers,
16846       { "mobilityTriggers", "gsm_map.mobilityTriggers",
16847         FT_UINT32, BASE_DEC, NULL, 0,
16848         "", HFILL }},
16849     { &hf_gsm_map_BearerServiceList_item,
16850       { "Item", "gsm_map.BearerServiceList_item",
16851         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
16852         "BearerServiceList/_item", HFILL }},
16853     { &hf_gsm_map_TeleserviceList_item,
16854       { "Item", "gsm_map.TeleserviceList_item",
16855         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
16856         "TeleserviceList/_item", HFILL }},
16857     { &hf_gsm_map_Ext_SS_InfoList_item,
16858       { "Item", "gsm_map.Ext_SS_InfoList_item",
16859         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_SS_Info_vals), 0,
16860         "Ext-SS-InfoList/_item", HFILL }},
16861     { &hf_gsm_map_ext_forwardingInfo,
16862       { "forwardingInfo", "gsm_map.forwardingInfo",
16863         FT_NONE, BASE_NONE, NULL, 0,
16864         "Ext-SS-Info/forwardingInfo", HFILL }},
16865     { &hf_gsm_map_ext_callBarringInfo,
16866       { "callBarringInfo", "gsm_map.callBarringInfo",
16867         FT_NONE, BASE_NONE, NULL, 0,
16868         "Ext-SS-Info/callBarringInfo", HFILL }},
16869     { &hf_gsm_map_cug_Info,
16870       { "cug-Info", "gsm_map.cug_Info",
16871         FT_NONE, BASE_NONE, NULL, 0,
16872         "Ext-SS-Info/cug-Info", HFILL }},
16873     { &hf_gsm_map_ext_ss_Data,
16874       { "ss-Data", "gsm_map.ss_Data",
16875         FT_NONE, BASE_NONE, NULL, 0,
16876         "Ext-SS-Info/ss-Data", HFILL }},
16877     { &hf_gsm_map_emlpp_Info,
16878       { "emlpp-Info", "gsm_map.emlpp_Info",
16879         FT_NONE, BASE_NONE, NULL, 0,
16880         "Ext-SS-Info/emlpp-Info", HFILL }},
16881     { &hf_gsm_map_ss_Code,
16882       { "ss-Code", "gsm_map.ss_Code",
16883         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
16884         "", HFILL }},
16885     { &hf_gsm_map_ext_forwardingFeatureList,
16886       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
16887         FT_UINT32, BASE_DEC, NULL, 0,
16888         "", HFILL }},
16889     { &hf_gsm_map_Ext_ForwFeatureList_item,
16890       { "Item", "gsm_map.Ext_ForwFeatureList_item",
16891         FT_NONE, BASE_NONE, NULL, 0,
16892         "Ext-ForwFeatureList/_item", HFILL }},
16893     { &hf_gsm_map_ext_basicService,
16894       { "basicService", "gsm_map.basicService",
16895         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16896         "", HFILL }},
16897     { &hf_gsm_map_ext_ss_Status,
16898       { "ss-Status", "gsm_map.ss_Status",
16899         FT_BYTES, BASE_HEX, NULL, 0,
16900         "", HFILL }},
16901     { &hf_gsm_map_forwardedToNumber,
16902       { "forwardedToNumber", "gsm_map.forwardedToNumber",
16903         FT_BYTES, BASE_HEX, NULL, 0,
16904         "", HFILL }},
16905     { &hf_gsm_map_forwardedToSubaddress,
16906       { "forwardedToSubaddress", "gsm_map.forwardedToSubaddress",
16907         FT_BYTES, BASE_HEX, NULL, 0,
16908         "", HFILL }},
16909     { &hf_gsm_map_ext_forwardingOptions,
16910       { "forwardingOptions", "gsm_map.forwardingOptions",
16911         FT_BYTES, BASE_HEX, NULL, 0,
16912         "Ext-ForwFeature/forwardingOptions", HFILL }},
16913     { &hf_gsm_map_ext_noReplyConditionTime,
16914       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
16915         FT_UINT32, BASE_DEC, NULL, 0,
16916         "", HFILL }},
16917     { &hf_gsm_map_longForwardedToNumber,
16918       { "longForwardedToNumber", "gsm_map.longForwardedToNumber",
16919         FT_BYTES, BASE_HEX, NULL, 0,
16920         "", HFILL }},
16921     { &hf_gsm_map_ext_callBarringFeatureList,
16922       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
16923         FT_UINT32, BASE_DEC, NULL, 0,
16924         "", HFILL }},
16925     { &hf_gsm_map_Ext_CallBarFeatureList_item,
16926       { "Item", "gsm_map.Ext_CallBarFeatureList_item",
16927         FT_NONE, BASE_NONE, NULL, 0,
16928         "Ext-CallBarFeatureList/_item", HFILL }},
16929     { &hf_gsm_map_ZoneCodeList_item,
16930       { "Item", "gsm_map.ZoneCodeList_item",
16931         FT_BYTES, BASE_HEX, NULL, 0,
16932         "ZoneCodeList/_item", HFILL }},
16933     { &hf_gsm_map_maximumentitledPriority,
16934       { "maximumentitledPriority", "gsm_map.maximumentitledPriority",
16935         FT_UINT32, BASE_DEC, NULL, 0,
16936         "EMLPP-Info/maximumentitledPriority", HFILL }},
16937     { &hf_gsm_map_defaultPriority,
16938       { "defaultPriority", "gsm_map.defaultPriority",
16939         FT_UINT32, BASE_DEC, NULL, 0,
16940         "", HFILL }},
16941     { &hf_gsm_map_cug_SubscriptionList,
16942       { "cug-SubscriptionList", "gsm_map.cug_SubscriptionList",
16943         FT_UINT32, BASE_DEC, NULL, 0,
16944         "CUG-Info/cug-SubscriptionList", HFILL }},
16945     { &hf_gsm_map_cug_FeatureList,
16946       { "cug-FeatureList", "gsm_map.cug_FeatureList",
16947         FT_UINT32, BASE_DEC, NULL, 0,
16948         "CUG-Info/cug-FeatureList", HFILL }},
16949     { &hf_gsm_map_CUG_SubscriptionList_item,
16950       { "Item", "gsm_map.CUG_SubscriptionList_item",
16951         FT_NONE, BASE_NONE, NULL, 0,
16952         "CUG-SubscriptionList/_item", HFILL }},
16953     { &hf_gsm_map_cug_Index,
16954       { "cug-Index", "gsm_map.cug_Index",
16955         FT_UINT32, BASE_DEC, NULL, 0,
16956         "CUG-Subscription/cug-Index", HFILL }},
16957     { &hf_gsm_map_cug_Interlock,
16958       { "cug-Interlock", "gsm_map.cug_Interlock",
16959         FT_BYTES, BASE_HEX, NULL, 0,
16960         "", HFILL }},
16961     { &hf_gsm_map_intraCUG_Options,
16962       { "intraCUG-Options", "gsm_map.intraCUG_Options",
16963         FT_UINT32, BASE_DEC, VALS(gsm_map_IntraCUG_Options_vals), 0,
16964         "CUG-Subscription/intraCUG-Options", HFILL }},
16965     { &hf_gsm_map_basicServiceGroupList,
16966       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
16967         FT_UINT32, BASE_DEC, NULL, 0,
16968         "", HFILL }},
16969     { &hf_gsm_map_CUG_FeatureList_item,
16970       { "Item", "gsm_map.CUG_FeatureList_item",
16971         FT_NONE, BASE_NONE, NULL, 0,
16972         "CUG-FeatureList/_item", HFILL }},
16973     { &hf_gsm_map_Ext_BasicServiceGroupList_item,
16974       { "Item", "gsm_map.Ext_BasicServiceGroupList_item",
16975         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
16976         "Ext-BasicServiceGroupList/_item", HFILL }},
16977     { &hf_gsm_map_preferentialCUG_Indicator,
16978       { "preferentialCUG-Indicator", "gsm_map.preferentialCUG_Indicator",
16979         FT_UINT32, BASE_DEC, NULL, 0,
16980         "CUG-Feature/preferentialCUG-Indicator", HFILL }},
16981     { &hf_gsm_map_interCUG_Restrictions,
16982       { "interCUG-Restrictions", "gsm_map.interCUG_Restrictions",
16983         FT_BYTES, BASE_HEX, NULL, 0,
16984         "CUG-Feature/interCUG-Restrictions", HFILL }},
16985     { &hf_gsm_map_ss_SubscriptionOption,
16986       { "ss-SubscriptionOption", "gsm_map.ss_SubscriptionOption",
16987         FT_UINT32, BASE_DEC, VALS(gsm_map_SS_SubscriptionOption_vals), 0,
16988         "", HFILL }},
16989     { &hf_gsm_map_LCS_PrivacyExceptionList_item,
16990       { "Item", "gsm_map.LCS_PrivacyExceptionList_item",
16991         FT_NONE, BASE_NONE, NULL, 0,
16992         "LCS-PrivacyExceptionList/_item", HFILL }},
16993     { &hf_gsm_map_notificationToMSUser,
16994       { "notificationToMSUser", "gsm_map.notificationToMSUser",
16995         FT_UINT32, BASE_DEC, VALS(gsm_map_NotificationToMSUser_vals), 0,
16996         "", HFILL }},
16997     { &hf_gsm_map_externalClientList,
16998       { "externalClientList", "gsm_map.externalClientList",
16999         FT_UINT32, BASE_DEC, NULL, 0,
17000         "LCS-PrivacyClass/externalClientList", HFILL }},
17001     { &hf_gsm_map_plmnClientList,
17002       { "plmnClientList", "gsm_map.plmnClientList",
17003         FT_UINT32, BASE_DEC, NULL, 0,
17004         "LCS-PrivacyClass/plmnClientList", HFILL }},
17005     { &hf_gsm_map_ext_externalClientList,
17006       { "ext-externalClientList", "gsm_map.ext_externalClientList",
17007         FT_UINT32, BASE_DEC, NULL, 0,
17008         "LCS-PrivacyClass/ext-externalClientList", HFILL }},
17009     { &hf_gsm_map_serviceTypeList,
17010       { "serviceTypeList", "gsm_map.serviceTypeList",
17011         FT_UINT32, BASE_DEC, NULL, 0,
17012         "LCS-PrivacyClass/serviceTypeList", HFILL }},
17013     { &hf_gsm_map_ExternalClientList_item,
17014       { "Item", "gsm_map.ExternalClientList_item",
17015         FT_NONE, BASE_NONE, NULL, 0,
17016         "ExternalClientList/_item", HFILL }},
17017     { &hf_gsm_map_PLMNClientList_item,
17018       { "Item", "gsm_map.PLMNClientList_item",
17019         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
17020         "PLMNClientList/_item", HFILL }},
17021     { &hf_gsm_map_Ext_ExternalClientList_item,
17022       { "Item", "gsm_map.Ext_ExternalClientList_item",
17023         FT_NONE, BASE_NONE, NULL, 0,
17024         "Ext-ExternalClientList/_item", HFILL }},
17025     { &hf_gsm_map_clientIdentity,
17026       { "clientIdentity", "gsm_map.clientIdentity",
17027         FT_NONE, BASE_NONE, NULL, 0,
17028         "ExternalClient/clientIdentity", HFILL }},
17029     { &hf_gsm_map_gmlc_Restriction,
17030       { "gmlc-Restriction", "gsm_map.gmlc_Restriction",
17031         FT_UINT32, BASE_DEC, VALS(gsm_map_GMLC_Restriction_vals), 0,
17032         "", HFILL }},
17033     { &hf_gsm_map_ServiceTypeList_item,
17034       { "Item", "gsm_map.ServiceTypeList_item",
17035         FT_NONE, BASE_NONE, NULL, 0,
17036         "ServiceTypeList/_item", HFILL }},
17037     { &hf_gsm_map_serviceTypeIdentity,
17038       { "serviceTypeIdentity", "gsm_map.serviceTypeIdentity",
17039         FT_UINT32, BASE_DEC, NULL, 0,
17040         "ServiceType/serviceTypeIdentity", HFILL }},
17041     { &hf_gsm_map_MOLR_List_item,
17042       { "Item", "gsm_map.MOLR_List_item",
17043         FT_NONE, BASE_NONE, NULL, 0,
17044         "MOLR-List/_item", HFILL }},
17045     { &hf_gsm_map_CallBarringFeatureList_item,
17046       { "Item", "gsm_map.CallBarringFeatureList_item",
17047         FT_NONE, BASE_NONE, NULL, 0,
17048         "CallBarringFeatureList/_item", HFILL }},
17049     { &hf_gsm_map_basicService,
17050       { "basicService", "gsm_map.basicService",
17051         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
17052         "", HFILL }},
17053     { &hf_gsm_map_ss_Status,
17054       { "ss-Status", "gsm_map.ss_Status",
17055         FT_BYTES, BASE_HEX, NULL, 0,
17056         "", HFILL }},
17057     { &hf_gsm_map_ForwardingFeatureList_item,
17058       { "Item", "gsm_map.ForwardingFeatureList_item",
17059         FT_NONE, BASE_NONE, NULL, 0,
17060         "ForwardingFeatureList/_item", HFILL }},
17061     { &hf_gsm_map_forwardingOptions,
17062       { "forwardingOptions", "gsm_map.forwardingOptions",
17063         FT_BYTES, BASE_HEX, NULL, 0,
17064         "", HFILL }},
17065     { &hf_gsm_map_noReplyConditionTime,
17066       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
17067         FT_UINT32, BASE_DEC, NULL, 0,
17068         "", HFILL }},
17069     { &hf_gsm_map_matchType,
17070       { "matchType", "gsm_map.matchType",
17071         FT_UINT32, BASE_DEC, VALS(gsm_map_MatchType_vals), 0,
17072         "DestinationNumberCriteria/matchType", HFILL }},
17073     { &hf_gsm_map_destinationNumberList,
17074       { "destinationNumberList", "gsm_map.destinationNumberList",
17075         FT_UINT32, BASE_DEC, NULL, 0,
17076         "DestinationNumberCriteria/destinationNumberList", HFILL }},
17077     { &hf_gsm_map_destinationNumberLengthList,
17078       { "destinationNumberLengthList", "gsm_map.destinationNumberLengthList",
17079         FT_UINT32, BASE_DEC, NULL, 0,
17080         "DestinationNumberCriteria/destinationNumberLengthList", HFILL }},
17081     { &hf_gsm_map_DestinationNumberList_item,
17082       { "Item", "gsm_map.DestinationNumberList_item",
17083         FT_BYTES, BASE_HEX, NULL, 0,
17084         "DestinationNumberList/_item", HFILL }},
17085     { &hf_gsm_map_DestinationNumberLengthList_item,
17086       { "Item", "gsm_map.DestinationNumberLengthList_item",
17087         FT_UINT32, BASE_DEC, NULL, 0,
17088         "DestinationNumberLengthList/_item", HFILL }},
17089     { &hf_gsm_map_forwardingFeatureList,
17090       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
17091         FT_UINT32, BASE_DEC, NULL, 0,
17092         "", HFILL }},
17093     { &hf_gsm_map_callBarringFeatureList,
17094       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
17095         FT_UINT32, BASE_DEC, NULL, 0,
17096         "CallBarringInfo/callBarringFeatureList", HFILL }},
17097     { &hf_gsm_map_nbrSB,
17098       { "nbrSB", "gsm_map.nbrSB",
17099         FT_UINT32, BASE_DEC, NULL, 0,
17100         "", HFILL }},
17101     { &hf_gsm_map_nbrUser,
17102       { "nbrUser", "gsm_map.nbrUser",
17103         FT_UINT32, BASE_DEC, NULL, 0,
17104         "", HFILL }},
17105     { &hf_gsm_map_hlr_List,
17106       { "hlr-List", "gsm_map.hlr_List",
17107         FT_UINT32, BASE_DEC, NULL, 0,
17108         "ResetArg/hlr-List", HFILL }},
17109     { &hf_gsm_map_msNotReachable,
17110       { "msNotReachable", "gsm_map.msNotReachable",
17111         FT_NONE, BASE_NONE, NULL, 0,
17112         "RestoreDataRes/msNotReachable", HFILL }},
17113     { &hf_gsm_map_VBSDataList_item,
17114       { "Item", "gsm_map.VBSDataList_item",
17115         FT_NONE, BASE_NONE, NULL, 0,
17116         "VBSDataList/_item", HFILL }},
17117     { &hf_gsm_map_VGCSDataList_item,
17118       { "Item", "gsm_map.VGCSDataList_item",
17119         FT_NONE, BASE_NONE, NULL, 0,
17120         "VGCSDataList/_item", HFILL }},
17121     { &hf_gsm_map_groupId,
17122       { "groupId", "gsm_map.groupId",
17123         FT_BYTES, BASE_HEX, NULL, 0,
17124         "VoiceGroupCallData/groupId", HFILL }},
17125     { &hf_gsm_map_groupid,
17126       { "groupid", "gsm_map.groupid",
17127         FT_BYTES, BASE_HEX, NULL, 0,
17128         "VoiceBroadcastData/groupid", HFILL }},
17129     { &hf_gsm_map_broadcastInitEntitlement,
17130       { "broadcastInitEntitlement", "gsm_map.broadcastInitEntitlement",
17131         FT_NONE, BASE_NONE, NULL, 0,
17132         "VoiceBroadcastData/broadcastInitEntitlement", HFILL }},
17133     { &hf_gsm_map_traceReference,
17134       { "traceReference", "gsm_map.traceReference",
17135         FT_BYTES, BASE_HEX, NULL, 0,
17136         "", HFILL }},
17137     { &hf_gsm_map_traceType,
17138       { "traceType", "gsm_map.traceType",
17139         FT_UINT32, BASE_DEC, NULL, 0,
17140         "ActivateTraceModeArg/traceType", HFILL }},
17141     { &hf_gsm_map_omc_Id,
17142       { "omc-Id", "gsm_map.omc_Id",
17143         FT_BYTES, BASE_HEX, NULL, 0,
17144         "ActivateTraceModeArg/omc-Id", HFILL }},
17145     { &hf_gsm_map_cug_CheckInfo,
17146       { "cug-CheckInfo", "gsm_map.cug_CheckInfo",
17147         FT_NONE, BASE_NONE, NULL, 0,
17148         "", HFILL }},
17149     { &hf_gsm_map_numberOfForwarding,
17150       { "numberOfForwarding", "gsm_map.numberOfForwarding",
17151         FT_UINT32, BASE_DEC, NULL, 0,
17152         "SendRoutingInfoArg/numberOfForwarding", HFILL }},
17153     { &hf_gsm_map_interrogationType,
17154       { "interrogationType", "gsm_map.interrogationType",
17155         FT_UINT32, BASE_DEC, VALS(gsm_map_InterrogationType_vals), 0,
17156         "SendRoutingInfoArg/interrogationType", HFILL }},
17157     { &hf_gsm_map_or_Interrogation,
17158       { "or-Interrogation", "gsm_map.or_Interrogation",
17159         FT_NONE, BASE_NONE, NULL, 0,
17160         "", HFILL }},
17161     { &hf_gsm_map_or_Capability,
17162       { "or-Capability", "gsm_map.or_Capability",
17163         FT_UINT32, BASE_DEC, NULL, 0,
17164         "SendRoutingInfoArg/or-Capability", HFILL }},
17165     { &hf_gsm_map_gmsc_OrGsmSCF_Address,
17166       { "gmsc-OrGsmSCF-Address", "gsm_map.gmsc_OrGsmSCF_Address",
17167         FT_BYTES, BASE_HEX, NULL, 0,
17168         "SendRoutingInfoArg/gmsc-OrGsmSCF-Address", HFILL }},
17169     { &hf_gsm_map_callReferenceNumber,
17170       { "callReferenceNumber", "gsm_map.callReferenceNumber",
17171         FT_BYTES, BASE_HEX, NULL, 0,
17172         "", HFILL }},
17173     { &hf_gsm_map_forwardingReason,
17174       { "forwardingReason", "gsm_map.forwardingReason",
17175         FT_UINT32, BASE_DEC, VALS(gsm_map_ForwardingReason_vals), 0,
17176         "SendRoutingInfoArg/forwardingReason", HFILL }},
17177     { &hf_gsm_map_ext_basicServiceGroup,
17178       { "basicServiceGroup", "gsm_map.basicServiceGroup",
17179         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17180         "", HFILL }},
17181     { &hf_gsm_map_networkSignalInfo,
17182       { "networkSignalInfo", "gsm_map.networkSignalInfo",
17183         FT_NONE, BASE_NONE, NULL, 0,
17184         "", HFILL }},
17185     { &hf_gsm_map_camelInfo,
17186       { "camelInfo", "gsm_map.camelInfo",
17187         FT_NONE, BASE_NONE, NULL, 0,
17188         "SendRoutingInfoArg/camelInfo", HFILL }},
17189     { &hf_gsm_map_suppressionOfAnnouncement,
17190       { "suppressionOfAnnouncement", "gsm_map.suppressionOfAnnouncement",
17191         FT_NONE, BASE_NONE, NULL, 0,
17192         "", HFILL }},
17193     { &hf_gsm_map_alertingPattern,
17194       { "alertingPattern", "gsm_map.alertingPattern",
17195         FT_BYTES, BASE_HEX, NULL, 0,
17196         "", HFILL }},
17197     { &hf_gsm_map_ccbs_Call,
17198       { "ccbs-Call", "gsm_map.ccbs_Call",
17199         FT_NONE, BASE_NONE, NULL, 0,
17200         "", HFILL }},
17201     { &hf_gsm_map_supportedCCBS_Phase,
17202       { "supportedCCBS-Phase", "gsm_map.supportedCCBS_Phase",
17203         FT_UINT32, BASE_DEC, NULL, 0,
17204         "SendRoutingInfoArg/supportedCCBS-Phase", HFILL }},
17205     { &hf_gsm_map_additionalSignalInfo,
17206       { "additionalSignalInfo", "gsm_map.additionalSignalInfo",
17207         FT_NONE, BASE_NONE, NULL, 0,
17208         "", HFILL }},
17209     { &hf_gsm_map_pre_pagingSupported,
17210       { "pre-pagingSupported", "gsm_map.pre_pagingSupported",
17211         FT_NONE, BASE_NONE, NULL, 0,
17212         "", HFILL }},
17213     { &hf_gsm_map_callDiversionTreatmentIndicator,
17214       { "callDiversionTreatmentIndicator", "gsm_map.callDiversionTreatmentIndicator",
17215         FT_BYTES, BASE_HEX, NULL, 0,
17216         "SendRoutingInfoArg/callDiversionTreatmentIndicator", HFILL }},
17217     { &hf_gsm_map_suppress_VT_CSI,
17218       { "suppress-VT-CSI", "gsm_map.suppress_VT_CSI",
17219         FT_NONE, BASE_NONE, NULL, 0,
17220         "", HFILL }},
17221     { &hf_gsm_map_suppressIncomingCallBarring,
17222       { "suppressIncomingCallBarring", "gsm_map.suppressIncomingCallBarring",
17223         FT_NONE, BASE_NONE, NULL, 0,
17224         "SendRoutingInfoArg/suppressIncomingCallBarring", HFILL }},
17225     { &hf_gsm_map_gsmSCF_InitiatedCall,
17226       { "gsmSCF-InitiatedCall", "gsm_map.gsmSCF_InitiatedCall",
17227         FT_NONE, BASE_NONE, NULL, 0,
17228         "SendRoutingInfoArg/gsmSCF-InitiatedCall", HFILL }},
17229     { &hf_gsm_map_basicServiceGroup2,
17230       { "basicServiceGroup2", "gsm_map.basicServiceGroup2",
17231         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17232         "", HFILL }},
17233     { &hf_gsm_map_networkSignalInfo2,
17234       { "networkSignalInfo2", "gsm_map.networkSignalInfo2",
17235         FT_NONE, BASE_NONE, NULL, 0,
17236         "SendRoutingInfoArg/networkSignalInfo2", HFILL }},
17237     { &hf_gsm_map_extendedRoutingInfo,
17238       { "extendedRoutingInfo", "gsm_map.extendedRoutingInfo",
17239         FT_UINT32, BASE_DEC, VALS(gsm_map_ExtendedRoutingInfo_vals), 0,
17240         "SendRoutingInfoRes/extendedRoutingInfo", HFILL }},
17241     { &hf_gsm_map_cugSubscriptionFlag,
17242       { "cugSubscriptionFlag", "gsm_map.cugSubscriptionFlag",
17243         FT_NONE, BASE_NONE, NULL, 0,
17244         "SendRoutingInfoRes/cugSubscriptionFlag", HFILL }},
17245     { &hf_gsm_map_subscriberInfo,
17246       { "subscriberInfo", "gsm_map.subscriberInfo",
17247         FT_NONE, BASE_NONE, NULL, 0,
17248         "", HFILL }},
17249     { &hf_gsm_map_forwardingInterrogationRequired,
17250       { "forwardingInterrogationRequired", "gsm_map.forwardingInterrogationRequired",
17251         FT_NONE, BASE_NONE, NULL, 0,
17252         "SendRoutingInfoRes/forwardingInterrogationRequired", HFILL }},
17253     { &hf_gsm_map_vmsc_Address,
17254       { "vmsc-Address", "gsm_map.vmsc_Address",
17255         FT_BYTES, BASE_HEX, NULL, 0,
17256         "SendRoutingInfoRes/vmsc-Address", HFILL }},
17257     { &hf_gsm_map_ccbs_Indicators,
17258       { "ccbs-Indicators", "gsm_map.ccbs_Indicators",
17259         FT_NONE, BASE_NONE, NULL, 0,
17260         "SendRoutingInfoRes/ccbs-Indicators", HFILL }},
17261     { &hf_gsm_map_numberPortabilityStatus,
17262       { "numberPortabilityStatus", "gsm_map.numberPortabilityStatus",
17263         FT_UINT32, BASE_DEC, VALS(gsm_map_NumberPortabilityStatus_vals), 0,
17264         "", HFILL }},
17265     { &hf_gsm_map_supportedCamelPhasesInVMSC,
17266       { "supportedCamelPhasesInVMSC", "gsm_map.supportedCamelPhasesInVMSC",
17267         FT_BYTES, BASE_HEX, NULL, 0,
17268         "SendRoutingInfoRes/supportedCamelPhasesInVMSC", HFILL }},
17269     { &hf_gsm_map_offeredCamel4CSIsInVMSC,
17270       { "offeredCamel4CSIsInVMSC", "gsm_map.offeredCamel4CSIsInVMSC",
17271         FT_BYTES, BASE_HEX, NULL, 0,
17272         "SendRoutingInfoRes/offeredCamel4CSIsInVMSC", HFILL }},
17273     { &hf_gsm_map_routingInfo2,
17274       { "routingInfo2", "gsm_map.routingInfo2",
17275         FT_UINT32, BASE_DEC, VALS(gsm_map_RoutingInfo_vals), 0,
17276         "SendRoutingInfoRes/routingInfo2", HFILL }},
17277     { &hf_gsm_map_ss_List2,
17278       { "ss-List2", "gsm_map.ss_List2",
17279         FT_UINT32, BASE_DEC, NULL, 0,
17280         "SendRoutingInfoRes/ss-List2", HFILL }},
17281     { &hf_gsm_map_basicService2,
17282       { "basicService2", "gsm_map.basicService2",
17283         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
17284         "SendRoutingInfoRes/basicService2", HFILL }},
17285     { &hf_gsm_map_allowedServices,
17286       { "allowedServices", "gsm_map.allowedServices",
17287         FT_BYTES, BASE_HEX, NULL, 0,
17288         "SendRoutingInfoRes/allowedServices", HFILL }},
17289     { &hf_gsm_map_unavailabilityCause,
17290       { "unavailabilityCause", "gsm_map.unavailabilityCause",
17291         FT_UINT32, BASE_DEC, VALS(gsm_map_UnavailabilityCause_vals), 0,
17292         "SendRoutingInfoRes/unavailabilityCause", HFILL }},
17293     { &hf_gsm_map_releaseResourcesSupported,
17294       { "releaseResourcesSupported", "gsm_map.releaseResourcesSupported",
17295         FT_NONE, BASE_NONE, NULL, 0,
17296         "", HFILL }},
17297     { &hf_gsm_map_ext_ProtocolId,
17298       { "ext-ProtocolId", "gsm_map.ext_ProtocolId",
17299         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_ProtocolId_vals), 0,
17300         "Ext-ExternalSignalInfo/ext-ProtocolId", HFILL }},
17301     { &hf_gsm_map_accessNetworkProtocolId,
17302       { "accessNetworkProtocolId", "gsm_map.accessNetworkProtocolId",
17303         FT_UINT32, BASE_DEC, VALS(gsm_map_AccessNetworkProtocolId_vals), 0,
17304         "AccessNetworkSignalInfo/accessNetworkProtocolId", HFILL }},
17305     { &hf_gsm_map_longsignalInfo,
17306       { "signalInfo", "gsm_map.signalInfo",
17307         FT_BYTES, BASE_HEX, NULL, 0,
17308         "AccessNetworkSignalInfo/signalInfo", HFILL }},
17309     { &hf_gsm_map_suppress_T_CSI,
17310       { "suppress-T-CSI", "gsm_map.suppress_T_CSI",
17311         FT_NONE, BASE_NONE, NULL, 0,
17312         "CamelInfo/suppress-T-CSI", HFILL }},
17313     { &hf_gsm_map_HLR_List_item,
17314       { "Item", "gsm_map.HLR_List_item",
17315         FT_BYTES, BASE_HEX, NULL, 0,
17316         "HLR-List/_item", HFILL }},
17317     { &hf_gsm_map_SS_List_item,
17318       { "Item", "gsm_map.SS_List_item",
17319         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
17320         "SS-List/_item", HFILL }},
17321     { &hf_gsm_map_naea_PreferredCIC,
17322       { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC",
17323         FT_BYTES, BASE_HEX, NULL, 0,
17324         "NAEA-PreferredCI/naea-PreferredCIC", HFILL }},
17325     { &hf_gsm_map_externalAddress,
17326       { "externalAddress", "gsm_map.externalAddress",
17327         FT_BYTES, BASE_HEX, NULL, 0,
17328         "LCSClientExternalID/externalAddress", HFILL }},
17329     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength,
17330       { "cellGlobalIdOrServiceAreaIdFixedLength", "gsm_map.cellGlobalIdOrServiceAreaIdFixedLength",
17331         FT_BYTES, BASE_HEX, NULL, 0,
17332         "CellGlobalIdOrServiceAreaIdOrLAI/cellGlobalIdOrServiceAreaIdFixedLength", HFILL }},
17333     { &hf_gsm_map_laiFixedLength,
17334       { "laiFixedLength", "gsm_map.laiFixedLength",
17335         FT_BYTES, BASE_HEX, NULL, 0,
17336         "CellGlobalIdOrServiceAreaIdOrLAI/laiFixedLength", HFILL }},
17337     { &hf_gsm_map_ccbs_Possible,
17338       { "ccbs-Possible", "gsm_map.ccbs_Possible",
17339         FT_NONE, BASE_NONE, NULL, 0,
17340         "", HFILL }},
17341     { &hf_gsm_map_keepCCBS_CallIndicator,
17342       { "keepCCBS-CallIndicator", "gsm_map.keepCCBS_CallIndicator",
17343         FT_NONE, BASE_NONE, NULL, 0,
17344         "CCBS-Indicators/keepCCBS-CallIndicator", HFILL }},
17345     { &hf_gsm_map_roamingNumber,
17346       { "roamingNumber", "gsm_map.roamingNumber",
17347         FT_BYTES, BASE_HEX, NULL, 0,
17348         "", HFILL }},
17349     { &hf_gsm_map_forwardingData,
17350       { "forwardingData", "gsm_map.forwardingData",
17351         FT_NONE, BASE_NONE, NULL, 0,
17352         "", HFILL }},
17353     { &hf_gsm_map_routingInfo,
17354       { "routingInfo", "gsm_map.routingInfo",
17355         FT_UINT32, BASE_DEC, VALS(gsm_map_RoutingInfo_vals), 0,
17356         "ExtendedRoutingInfo/routingInfo", HFILL }},
17357     { &hf_gsm_map_camelRoutingInfo,
17358       { "camelRoutingInfo", "gsm_map.camelRoutingInfo",
17359         FT_NONE, BASE_NONE, NULL, 0,
17360         "ExtendedRoutingInfo/camelRoutingInfo", HFILL }},
17361     { &hf_gsm_map_gmscCamelSubscriptionInfo,
17362       { "gmscCamelSubscriptionInfo", "gsm_map.gmscCamelSubscriptionInfo",
17363         FT_NONE, BASE_NONE, NULL, 0,
17364         "CamelRoutingInfo/gmscCamelSubscriptionInfo", HFILL }},
17365     { &hf_gsm_map_t_CSI,
17366       { "t-CSI", "gsm_map.t_CSI",
17367         FT_NONE, BASE_NONE, NULL, 0,
17368         "", HFILL }},
17369     { &hf_gsm_map_d_csi,
17370       { "d-csi", "gsm_map.d_csi",
17371         FT_NONE, BASE_NONE, NULL, 0,
17372         "", HFILL }},
17373     { &hf_gsm_map_ageOfLocationInformation,
17374       { "ageOfLocationInformation", "gsm_map.ageOfLocationInformation",
17375         FT_UINT32, BASE_DEC, NULL, 0,
17376         "", HFILL }},
17377     { &hf_gsm_map_geographicalInformation,
17378       { "geographicalInformation", "gsm_map.geographicalInformation",
17379         FT_BYTES, BASE_HEX, NULL, 0,
17380         "", HFILL }},
17381     { &hf_gsm_map_vlr_number,
17382       { "vlr-number", "gsm_map.vlr_number",
17383         FT_BYTES, BASE_HEX, NULL, 0,
17384         "LocationInformation/vlr-number", HFILL }},
17385     { &hf_gsm_map_locationNumber,
17386       { "locationNumber", "gsm_map.locationNumber",
17387         FT_BYTES, BASE_HEX, NULL, 0,
17388         "LocationInformation/locationNumber", HFILL }},
17389     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI,
17390       { "cellGlobalIdOrServiceAreaIdOrLAI", "gsm_map.cellGlobalIdOrServiceAreaIdOrLAI",
17391         FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
17392         "", HFILL }},
17393     { &hf_gsm_map_selectedLSA_Id,
17394       { "selectedLSA-Id", "gsm_map.selectedLSA_Id",
17395         FT_BYTES, BASE_HEX, NULL, 0,
17396         "LocationInformation/selectedLSA-Id", HFILL }},
17397     { &hf_gsm_map_geodeticInformation,
17398       { "geodeticInformation", "gsm_map.geodeticInformation",
17399         FT_BYTES, BASE_HEX, NULL, 0,
17400         "", HFILL }},
17401     { &hf_gsm_map_currentLocationRetrieved,
17402       { "currentLocationRetrieved", "gsm_map.currentLocationRetrieved",
17403         FT_NONE, BASE_NONE, NULL, 0,
17404         "", HFILL }},
17405     { &hf_gsm_map_sai_Present,
17406       { "sai-Present", "gsm_map.sai_Present",
17407         FT_NONE, BASE_NONE, NULL, 0,
17408         "", HFILL }},
17409     { &hf_gsm_map_routeingAreaIdentity,
17410       { "routeingAreaIdentity", "gsm_map.routeingAreaIdentity",
17411         FT_BYTES, BASE_HEX, NULL, 0,
17412         "LocationInformationGPRS/routeingAreaIdentity", HFILL }},
17413     { &hf_gsm_map_selectedLSAIdentity,
17414       { "selectedLSAIdentity", "gsm_map.selectedLSAIdentity",
17415         FT_BYTES, BASE_HEX, NULL, 0,
17416         "LocationInformationGPRS/selectedLSAIdentity", HFILL }},
17417     { &hf_gsm_map_assumedIdle,
17418       { "assumedIdle", "gsm_map.assumedIdle",
17419         FT_NONE, BASE_NONE, NULL, 0,
17420         "SubscriberState/assumedIdle", HFILL }},
17421     { &hf_gsm_map_camelBusy,
17422       { "camelBusy", "gsm_map.camelBusy",
17423         FT_NONE, BASE_NONE, NULL, 0,
17424         "SubscriberState/camelBusy", HFILL }},
17425     { &hf_gsm_map_notProvidedFromVLR,
17426       { "notProvidedFromVLR", "gsm_map.notProvidedFromVLR",
17427         FT_NONE, BASE_NONE, NULL, 0,
17428         "SubscriberState/notProvidedFromVLR", HFILL }},
17429     { &hf_gsm_map_notProvidedFromSGSN,
17430       { "notProvidedFromSGSN", "gsm_map.notProvidedFromSGSN",
17431         FT_NONE, BASE_NONE, NULL, 0,
17432         "PS-SubscriberState/notProvidedFromSGSN", HFILL }},
17433     { &hf_gsm_map_ps_Detached,
17434       { "ps-Detached", "gsm_map.ps_Detached",
17435         FT_NONE, BASE_NONE, NULL, 0,
17436         "PS-SubscriberState/ps-Detached", HFILL }},
17437     { &hf_gsm_map_ps_AttachedNotReachableForPaging,
17438       { "ps-AttachedNotReachableForPaging", "gsm_map.ps_AttachedNotReachableForPaging",
17439         FT_NONE, BASE_NONE, NULL, 0,
17440         "PS-SubscriberState/ps-AttachedNotReachableForPaging", HFILL }},
17441     { &hf_gsm_map_ps_AttachedReachableForPaging,
17442       { "ps-AttachedReachableForPaging", "gsm_map.ps_AttachedReachableForPaging",
17443         FT_NONE, BASE_NONE, NULL, 0,
17444         "PS-SubscriberState/ps-AttachedReachableForPaging", HFILL }},
17445     { &hf_gsm_map_ps_PDP_ActiveNotReachableForPaging,
17446       { "ps-PDP-ActiveNotReachableForPaging", "gsm_map.ps_PDP_ActiveNotReachableForPaging",
17447         FT_UINT32, BASE_DEC, NULL, 0,
17448         "PS-SubscriberState/ps-PDP-ActiveNotReachableForPaging", HFILL }},
17449     { &hf_gsm_map_ps_PDP_ActiveReachableForPaging,
17450       { "ps-PDP-ActiveReachableForPaging", "gsm_map.ps_PDP_ActiveReachableForPaging",
17451         FT_UINT32, BASE_DEC, NULL, 0,
17452         "PS-SubscriberState/ps-PDP-ActiveReachableForPaging", HFILL }},
17453     { &hf_gsm_map_netDetNotReachable,
17454       { "netDetNotReachable", "gsm_map.netDetNotReachable",
17455         FT_UINT32, BASE_DEC, VALS(gsm_map_NotReachableReason_vals), 0,
17456         "PS-SubscriberState/netDetNotReachable", HFILL }},
17457     { &hf_gsm_map_PDP_ContextInfoList_item,
17458       { "Item", "gsm_map.PDP_ContextInfoList_item",
17459         FT_NONE, BASE_NONE, NULL, 0,
17460         "PDP-ContextInfoList/_item", HFILL }},
17461     { &hf_gsm_map_pdp_ContextIdentifier,
17462       { "pdp-ContextIdentifier", "gsm_map.pdp_ContextIdentifier",
17463         FT_UINT32, BASE_DEC, NULL, 0,
17464         "PDP-ContextInfo/pdp-ContextIdentifier", HFILL }},
17465     { &hf_gsm_map_pdp_ContextActive,
17466       { "pdp-ContextActive", "gsm_map.pdp_ContextActive",
17467         FT_NONE, BASE_NONE, NULL, 0,
17468         "PDP-ContextInfo/pdp-ContextActive", HFILL }},
17469     { &hf_gsm_map_apn_Subscribed,
17470       { "apn-Subscribed", "gsm_map.apn_Subscribed",
17471         FT_BYTES, BASE_HEX, NULL, 0,
17472         "PDP-ContextInfo/apn-Subscribed", HFILL }},
17473     { &hf_gsm_map_apn_InUse,
17474       { "apn-InUse", "gsm_map.apn_InUse",
17475         FT_BYTES, BASE_HEX, NULL, 0,
17476         "PDP-ContextInfo/apn-InUse", HFILL }},
17477     { &hf_gsm_map_nsapi,
17478       { "nsapi", "gsm_map.nsapi",
17479         FT_UINT32, BASE_DEC, NULL, 0,
17480         "PDP-ContextInfo/nsapi", HFILL }},
17481     { &hf_gsm_map_transactionId,
17482       { "transactionId", "gsm_map.transactionId",
17483         FT_BYTES, BASE_HEX, NULL, 0,
17484         "PDP-ContextInfo/transactionId", HFILL }},
17485     { &hf_gsm_map_teid_ForGnAndGp,
17486       { "teid-ForGnAndGp", "gsm_map.teid_ForGnAndGp",
17487         FT_BYTES, BASE_HEX, NULL, 0,
17488         "PDP-ContextInfo/teid-ForGnAndGp", HFILL }},
17489     { &hf_gsm_map_teid_ForIu,
17490       { "teid-ForIu", "gsm_map.teid_ForIu",
17491         FT_BYTES, BASE_HEX, NULL, 0,
17492         "PDP-ContextInfo/teid-ForIu", HFILL }},
17493     { &hf_gsm_map_ggsn_Address,
17494       { "ggsn-Address", "gsm_map.ggsn_Address",
17495         FT_BYTES, BASE_HEX, NULL, 0,
17496         "", HFILL }},
17497     { &hf_gsm_map_ext_qos_Subscribed,
17498       { "qos-Subscribed", "gsm_map.qos_Subscribed",
17499         FT_BYTES, BASE_HEX, NULL, 0,
17500         "PDP-ContextInfo/qos-Subscribed", HFILL }},
17501     { &hf_gsm_map_qos_Requested,
17502       { "qos-Requested", "gsm_map.qos_Requested",
17503         FT_BYTES, BASE_HEX, NULL, 0,
17504         "PDP-ContextInfo/qos-Requested", HFILL }},
17505     { &hf_gsm_map_qos_Negotiated,
17506       { "qos-Negotiated", "gsm_map.qos_Negotiated",
17507         FT_BYTES, BASE_HEX, NULL, 0,
17508         "PDP-ContextInfo/qos-Negotiated", HFILL }},
17509     { &hf_gsm_map_chargingId,
17510       { "chargingId", "gsm_map.chargingId",
17511         FT_BYTES, BASE_HEX, NULL, 0,
17512         "PDP-ContextInfo/chargingId", HFILL }},
17513     { &hf_gsm_map_rnc_Address,
17514       { "rnc-Address", "gsm_map.rnc_Address",
17515         FT_BYTES, BASE_HEX, NULL, 0,
17516         "PDP-ContextInfo/rnc-Address", HFILL }},
17517     { &hf_gsm_map_qos2_Subscribed,
17518       { "qos2-Subscribed", "gsm_map.qos2_Subscribed",
17519         FT_BYTES, BASE_HEX, NULL, 0,
17520         "PDP-ContextInfo/qos2-Subscribed", HFILL }},
17521     { &hf_gsm_map_qos2_Requested,
17522       { "qos2-Requested", "gsm_map.qos2_Requested",
17523         FT_BYTES, BASE_HEX, NULL, 0,
17524         "PDP-ContextInfo/qos2-Requested", HFILL }},
17525     { &hf_gsm_map_qos2_Negotiated,
17526       { "qos2-Negotiated", "gsm_map.qos2_Negotiated",
17527         FT_BYTES, BASE_HEX, NULL, 0,
17528         "PDP-ContextInfo/qos2-Negotiated", HFILL }},
17529     { &hf_gsm_map_cug_OutgoingAccess,
17530       { "cug-OutgoingAccess", "gsm_map.cug_OutgoingAccess",
17531         FT_NONE, BASE_NONE, NULL, 0,
17532         "CUG-CheckInfo/cug-OutgoingAccess", HFILL }},
17533     { &hf_gsm_map_gsm_BearerCapability,
17534       { "gsm-BearerCapability", "gsm_map.gsm_BearerCapability",
17535         FT_NONE, BASE_NONE, NULL, 0,
17536         "", HFILL }},
17537     { &hf_gsm_map_gmsc_Address,
17538       { "gmsc-Address", "gsm_map.gmsc_Address",
17539         FT_BYTES, BASE_HEX, NULL, 0,
17540         "ProvideRoamingNumberArg/gmsc-Address", HFILL }},
17541     { &hf_gsm_map_supportedCamelPhasesInInterrogatingNode,
17542       { "supportedCamelPhasesInInterrogatingNode", "gsm_map.supportedCamelPhasesInInterrogatingNode",
17543         FT_BYTES, BASE_HEX, NULL, 0,
17544         "ProvideRoamingNumberArg/supportedCamelPhasesInInterrogatingNode", HFILL }},
17545     { &hf_gsm_map_orNotSupportedInGMSC,
17546       { "orNotSupportedInGMSC", "gsm_map.orNotSupportedInGMSC",
17547         FT_NONE, BASE_NONE, NULL, 0,
17548         "ProvideRoamingNumberArg/orNotSupportedInGMSC", HFILL }},
17549     { &hf_gsm_map_offeredCamel4CSIsInInterrogatingNode,
17550       { "offeredCamel4CSIsInInterrogatingNode", "gsm_map.offeredCamel4CSIsInInterrogatingNode",
17551         FT_BYTES, BASE_HEX, NULL, 0,
17552         "ProvideRoamingNumberArg/offeredCamel4CSIsInInterrogatingNode", HFILL }},
17553     { &hf_gsm_map_uu_Data,
17554       { "uu-Data", "gsm_map.uu_Data",
17555         FT_NONE, BASE_NONE, NULL, 0,
17556         "ResumeCallHandlingArg/uu-Data", HFILL }},
17557     { &hf_gsm_map_allInformationSent,
17558       { "allInformationSent", "gsm_map.allInformationSent",
17559         FT_NONE, BASE_NONE, NULL, 0,
17560         "", HFILL }},
17561     { &hf_gsm_map_o_BcsmCamelTDPCriteriaList,
17562       { "o-BcsmCamelTDPCriteriaList", "gsm_map.o_BcsmCamelTDPCriteriaList",
17563         FT_UINT32, BASE_DEC, NULL, 0,
17564         "ResumeCallHandlingArg/o-BcsmCamelTDPCriteriaList", HFILL }},
17565     { &hf_gsm_map_uuIndicator,
17566       { "uuIndicator", "gsm_map.uuIndicator",
17567         FT_BYTES, BASE_HEX, NULL, 0,
17568         "UU-Data/uuIndicator", HFILL }},
17569     { &hf_gsm_map_uui,
17570       { "uui", "gsm_map.uui",
17571         FT_BYTES, BASE_HEX, NULL, 0,
17572         "UU-Data/uui", HFILL }},
17573     { &hf_gsm_map_uusCFInteraction,
17574       { "uusCFInteraction", "gsm_map.uusCFInteraction",
17575         FT_NONE, BASE_NONE, NULL, 0,
17576         "UU-Data/uusCFInteraction", HFILL }},
17577     { &hf_gsm_map_isdn_BearerCapability,
17578       { "isdn-BearerCapability", "gsm_map.isdn_BearerCapability",
17579         FT_NONE, BASE_NONE, NULL, 0,
17580         "ProvideSIWFSNumberArg/isdn-BearerCapability", HFILL }},
17581     { &hf_gsm_map_call_Direction,
17582       { "call-Direction", "gsm_map.call_Direction",
17583         FT_BYTES, BASE_HEX, NULL, 0,
17584         "ProvideSIWFSNumberArg/call-Direction", HFILL }},
17585     { &hf_gsm_map_b_Subscriber_Address,
17586       { "b-Subscriber-Address", "gsm_map.b_Subscriber_Address",
17587         FT_BYTES, BASE_HEX, NULL, 0,
17588         "ProvideSIWFSNumberArg/b-Subscriber-Address", HFILL }},
17589     { &hf_gsm_map_chosenChannel,
17590       { "chosenChannel", "gsm_map.chosenChannel",
17591         FT_NONE, BASE_NONE, NULL, 0,
17592         "", HFILL }},
17593     { &hf_gsm_map_lowerLayerCompatibility,
17594       { "lowerLayerCompatibility", "gsm_map.lowerLayerCompatibility",
17595         FT_NONE, BASE_NONE, NULL, 0,
17596         "ProvideSIWFSNumberArg/lowerLayerCompatibility", HFILL }},
17597     { &hf_gsm_map_highLayerCompatibility,
17598       { "highLayerCompatibility", "gsm_map.highLayerCompatibility",
17599         FT_NONE, BASE_NONE, NULL, 0,
17600         "ProvideSIWFSNumberArg/highLayerCompatibility", HFILL }},
17601     { &hf_gsm_map_sIWFSNumber,
17602       { "sIWFSNumber", "gsm_map.sIWFSNumber",
17603         FT_BYTES, BASE_HEX, NULL, 0,
17604         "ProvideSIWFSNumberRes/sIWFSNumber", HFILL }},
17605     { &hf_gsm_map_channelType,
17606       { "channelType", "gsm_map.channelType",
17607         FT_NONE, BASE_NONE, NULL, 0,
17608         "", HFILL }},
17609     { &hf_gsm_map_ccbs_Monitoring,
17610       { "ccbs-Monitoring", "gsm_map.ccbs_Monitoring",
17611         FT_UINT32, BASE_DEC, VALS(gsm_map_ReportingState_vals), 0,
17612         "SetReportingStateArg/ccbs-Monitoring", HFILL }},
17613     { &hf_gsm_map_ccbs_SubscriberStatus,
17614       { "ccbs-SubscriberStatus", "gsm_map.ccbs_SubscriberStatus",
17615         FT_UINT32, BASE_DEC, VALS(gsm_map_CCBS_SubscriberStatus_vals), 0,
17616         "", HFILL }},
17617     { &hf_gsm_map_eventReportData,
17618       { "eventReportData", "gsm_map.eventReportData",
17619         FT_NONE, BASE_NONE, NULL, 0,
17620         "StatusReportArg/eventReportData", HFILL }},
17621     { &hf_gsm_map_callReportdata,
17622       { "callReportdata", "gsm_map.callReportdata",
17623         FT_NONE, BASE_NONE, NULL, 0,
17624         "StatusReportArg/callReportdata", HFILL }},
17625     { &hf_gsm_map_monitoringMode,
17626       { "monitoringMode", "gsm_map.monitoringMode",
17627         FT_UINT32, BASE_DEC, VALS(gsm_map_MonitoringMode_vals), 0,
17628         "CallReportData/monitoringMode", HFILL }},
17629     { &hf_gsm_map_callOutcome,
17630       { "callOutcome", "gsm_map.callOutcome",
17631         FT_UINT32, BASE_DEC, VALS(gsm_map_CallOutcome_vals), 0,
17632         "CallReportData/callOutcome", HFILL }},
17633     { &hf_gsm_map_callTerminationIndicator,
17634       { "callTerminationIndicator", "gsm_map.callTerminationIndicator",
17635         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTerminationIndicator_vals), 0,
17636         "IST-AlertRes/callTerminationIndicator", HFILL }},
17637     { &hf_gsm_map_msrn,
17638       { "msrn", "gsm_map.msrn",
17639         FT_BYTES, BASE_HEX, NULL, 0,
17640         "ReleaseResourcesArg/msrn", HFILL }},
17641     { &hf_gsm_map_callInfo,
17642       { "callInfo", "gsm_map.callInfo",
17643         FT_NONE, BASE_NONE, NULL, 0,
17644         "", HFILL }},
17645     { &hf_gsm_map_ccbs_Feature,
17646       { "ccbs-Feature", "gsm_map.ccbs_Feature",
17647         FT_NONE, BASE_NONE, NULL, 0,
17648         "", HFILL }},
17649     { &hf_gsm_map_translatedB_Number,
17650       { "translatedB-Number", "gsm_map.translatedB_Number",
17651         FT_BYTES, BASE_HEX, NULL, 0,
17652         "", HFILL }},
17653     { &hf_gsm_map_replaceB_Number,
17654       { "replaceB-Number", "gsm_map.replaceB_Number",
17655         FT_NONE, BASE_NONE, NULL, 0,
17656         "RemoteUserFreeArg/replaceB-Number", HFILL }},
17657     { &hf_gsm_map_ruf_Outcome,
17658       { "ruf-Outcome", "gsm_map.ruf_Outcome",
17659         FT_UINT32, BASE_DEC, VALS(gsm_map_Ruf_Outcome_vals), 0,
17660         "RemoteUserFreeRes/ruf-Outcome", HFILL }},
17661     { &hf_gsm_map_ext_basicServiceGroupList,
17662       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
17663         FT_UINT32, BASE_DEC, NULL, 0,
17664         "", HFILL }},
17665     { &hf_gsm_map_cliRestrictionOption,
17666       { "cliRestrictionOption", "gsm_map.cliRestrictionOption",
17667         FT_UINT32, BASE_DEC, VALS(gsm_map_CliRestrictionOption_vals), 0,
17668         "", HFILL }},
17669     { &hf_gsm_map_overrideCategory,
17670       { "overrideCategory", "gsm_map.overrideCategory",
17671         FT_UINT32, BASE_DEC, VALS(gsm_map_OverrideCategory_vals), 0,
17672         "SS-SubscriptionOption/overrideCategory", HFILL }},
17673     { &hf_gsm_map_forwardedToNumber_addr,
17674       { "forwardedToNumber", "gsm_map.forwardedToNumber",
17675         FT_BYTES, BASE_HEX, NULL, 0,
17676         "", HFILL }},
17677     { &hf_gsm_map_forwardingInfo,
17678       { "forwardingInfo", "gsm_map.forwardingInfo",
17679         FT_NONE, BASE_NONE, NULL, 0,
17680         "SS-Info/forwardingInfo", HFILL }},
17681     { &hf_gsm_map_callBarringInfo,
17682       { "callBarringInfo", "gsm_map.callBarringInfo",
17683         FT_NONE, BASE_NONE, NULL, 0,
17684         "SS-Info/callBarringInfo", HFILL }},
17685     { &hf_gsm_map_ss_Data,
17686       { "ss-Data", "gsm_map.ss_Data",
17687         FT_NONE, BASE_NONE, NULL, 0,
17688         "SS-Info/ss-Data", HFILL }},
17689     { &hf_gsm_map_genericServiceInfo,
17690       { "genericServiceInfo", "gsm_map.genericServiceInfo",
17691         FT_NONE, BASE_NONE, NULL, 0,
17692         "InterrogateSS-Res/genericServiceInfo", HFILL }},
17693     { &hf_gsm_map_ussd_DataCodingScheme,
17694       { "ussd-DataCodingScheme", "gsm_map.ussd_DataCodingScheme",
17695         FT_BYTES, BASE_HEX, NULL, 0,
17696         "", HFILL }},
17697     { &hf_gsm_map_ussd_String,
17698       { "ussd-String", "gsm_map.ussd_String",
17699         FT_BYTES, BASE_HEX, NULL, 0,
17700         "", HFILL }},
17701     { &hf_gsm_map_failureCause,
17702       { "failureCause", "gsm_map.failureCause",
17703         FT_UINT32, BASE_DEC, VALS(gsm_map_FailureCause_vals), 0,
17704         "AuthenticationFailureReportArg/failureCause", HFILL }},
17705     { &hf_gsm_map_re_attempt,
17706       { "re-attempt", "gsm_map.re_attempt",
17707         FT_BOOLEAN, 8, NULL, 0,
17708         "AuthenticationFailureReportArg/re-attempt", HFILL }},
17709     { &hf_gsm_map_accessType,
17710       { "accessType", "gsm_map.accessType",
17711         FT_UINT32, BASE_DEC, VALS(gsm_map_AccessType_vals), 0,
17712         "AuthenticationFailureReportArg/accessType", HFILL }},
17713     { &hf_gsm_map_ccbs_Data,
17714       { "ccbs-Data", "gsm_map.ccbs_Data",
17715         FT_NONE, BASE_NONE, NULL, 0,
17716         "RegisterCC-EntryArg/ccbs-Data", HFILL }},
17717     { &hf_gsm_map_serviceIndicator,
17718       { "serviceIndicator", "gsm_map.serviceIndicator",
17719         FT_BYTES, BASE_HEX, NULL, 0,
17720         "CCBS-Data/serviceIndicator", HFILL }},
17721     { &hf_gsm_map_ccbs_Index,
17722       { "ccbs-Index", "gsm_map.ccbs_Index",
17723         FT_UINT32, BASE_DEC, NULL, 0,
17724         "", HFILL }},
17725     { &hf_gsm_map_sm_RP_PRI,
17726       { "sm-RP-PRI", "gsm_map.sm_RP_PRI",
17727         FT_BOOLEAN, 8, NULL, 0,
17728         "RoutingInfoForSMArg/sm-RP-PRI", HFILL }},
17729     { &hf_gsm_map_serviceCentreAddress,
17730       { "serviceCentreAddress", "gsm_map.serviceCentreAddress",
17731         FT_BYTES, BASE_HEX, NULL, 0,
17732         "", HFILL }},
17733     { &hf_gsm_map_gprsSupportIndicator,
17734       { "gprsSupportIndicator", "gsm_map.gprsSupportIndicator",
17735         FT_NONE, BASE_NONE, NULL, 0,
17736         "", HFILL }},
17737     { &hf_gsm_map_sm_RP_MTI,
17738       { "sm-RP-MTI", "gsm_map.sm_RP_MTI",
17739         FT_UINT32, BASE_DEC, NULL, 0,
17740         "RoutingInfoForSMArg/sm-RP-MTI", HFILL }},
17741     { &hf_gsm_map_sm_RP_SMEA,
17742       { "sm-RP-SMEA", "gsm_map.sm_RP_SMEA",
17743         FT_BYTES, BASE_HEX, NULL, 0,
17744         "RoutingInfoForSMArg/sm-RP-SMEA", HFILL }},
17745     { &hf_gsm_map_locationInfoWithLMSI,
17746       { "locationInfoWithLMSI", "gsm_map.locationInfoWithLMSI",
17747         FT_NONE, BASE_NONE, NULL, 0,
17748         "RoutingInfoForSM-Res/locationInfoWithLMSI", HFILL }},
17749     { &hf_gsm_map_networkNode_Number,
17750       { "networkNode-Number", "gsm_map.networkNode_Number",
17751         FT_BYTES, BASE_HEX, NULL, 0,
17752         "", HFILL }},
17753     { &hf_gsm_map_gprsNodeIndicator,
17754       { "gprsNodeIndicator", "gsm_map.gprsNodeIndicator",
17755         FT_NONE, BASE_NONE, NULL, 0,
17756         "", HFILL }},
17757     { &hf_gsm_map_additional_Number,
17758       { "additional-Number", "gsm_map.additional_Number",
17759         FT_UINT32, BASE_DEC, VALS(gsm_map_Additional_Number_vals), 0,
17760         "", HFILL }},
17761     { &hf_gsm_map_sm_RP_DA,
17762       { "sm-RP-DA", "gsm_map.sm_RP_DA",
17763         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_DA_vals), 0,
17764         "", HFILL }},
17765     { &hf_gsm_map_sm_RP_OA,
17766       { "sm-RP-OA", "gsm_map.sm_RP_OA",
17767         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_OA_vals), 0,
17768         "", HFILL }},
17769     { &hf_gsm_map_sm_RP_UI,
17770       { "sm-RP-UI", "gsm_map.sm_RP_UI",
17771         FT_BYTES, BASE_HEX, NULL, 0,
17772         "", HFILL }},
17773     { &hf_gsm_map_serviceCentreAddressOA,
17774       { "serviceCentreAddressOA", "gsm_map.serviceCentreAddressOA",
17775         FT_BYTES, BASE_HEX, NULL, 0,
17776         "Sm-RP-OA/serviceCentreAddressOA", HFILL }},
17777     { &hf_gsm_map_noSM_RP_OA,
17778       { "noSM-RP-OA", "gsm_map.noSM_RP_OA",
17779         FT_NONE, BASE_NONE, NULL, 0,
17780         "Sm-RP-OA/noSM-RP-OA", HFILL }},
17781     { &hf_gsm_map_serviceCentreAddressDA,
17782       { "serviceCentreAddressDA", "gsm_map.serviceCentreAddressDA",
17783         FT_BYTES, BASE_HEX, NULL, 0,
17784         "Sm-RP-DA/serviceCentreAddressDA", HFILL }},
17785     { &hf_gsm_map_noSM_RP_DA,
17786       { "noSM-RP-DA", "gsm_map.noSM_RP_DA",
17787         FT_NONE, BASE_NONE, NULL, 0,
17788         "Sm-RP-DA/noSM-RP-DA", HFILL }},
17789     { &hf_gsm_map_moreMessagesToSend,
17790       { "moreMessagesToSend", "gsm_map.moreMessagesToSend",
17791         FT_NONE, BASE_NONE, NULL, 0,
17792         "Mt-forwardSM-Arg/moreMessagesToSend", HFILL }},
17793     { &hf_gsm_map_sm_DeliveryOutcome,
17794       { "sm-DeliveryOutcome", "gsm_map.sm_DeliveryOutcome",
17795         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
17796         "ReportSM-DeliveryStatusArg/sm-DeliveryOutcome", HFILL }},
17797     { &hf_gsm_map_absentSubscriberDiagnosticSM,
17798       { "absentSubscriberDiagnosticSM", "gsm_map.absentSubscriberDiagnosticSM",
17799         FT_UINT32, BASE_DEC, NULL, 0,
17800         "", HFILL }},
17801     { &hf_gsm_map_deliveryOutcomeIndicator,
17802       { "deliveryOutcomeIndicator", "gsm_map.deliveryOutcomeIndicator",
17803         FT_NONE, BASE_NONE, NULL, 0,
17804         "ReportSM-DeliveryStatusArg/deliveryOutcomeIndicator", HFILL }},
17805     { &hf_gsm_map_additionalSM_DeliveryOutcome,
17806       { "additionalSM-DeliveryOutcome", "gsm_map.additionalSM_DeliveryOutcome",
17807         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
17808         "ReportSM-DeliveryStatusArg/additionalSM-DeliveryOutcome", HFILL }},
17809     { &hf_gsm_map_additionalAbsentSubscriberDiagnosticSM,
17810       { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.additionalAbsentSubscriberDiagnosticSM",
17811         FT_UINT32, BASE_DEC, NULL, 0,
17812         "", HFILL }},
17813     { &hf_gsm_map_storedMSISDN,
17814       { "storedMSISDN", "gsm_map.storedMSISDN",
17815         FT_BYTES, BASE_HEX, NULL, 0,
17816         "", HFILL }},
17817     { &hf_gsm_map_mw_Status,
17818       { "mw-Status", "gsm_map.mw_Status",
17819         FT_BYTES, BASE_HEX, NULL, 0,
17820         "InformServiceCentreArg/mw-Status", HFILL }},
17821     { &hf_gsm_map_alertReason,
17822       { "alertReason", "gsm_map.alertReason",
17823         FT_UINT32, BASE_DEC, VALS(gsm_map_T_alertReason_vals), 0,
17824         "ReadyForSM-Arg/alertReason", HFILL }},
17825     { &hf_gsm_map_alertReasonIndicator,
17826       { "alertReasonIndicator", "gsm_map.alertReasonIndicator",
17827         FT_NONE, BASE_NONE, NULL, 0,
17828         "ReadyForSM-Arg/alertReasonIndicator", HFILL }},
17829     { &hf_gsm_map_requestedInfo,
17830       { "requestedInfo", "gsm_map.requestedInfo",
17831         FT_NONE, BASE_NONE, NULL, 0,
17832         "", HFILL }},
17833     { &hf_gsm_map_locationInformation,
17834       { "locationInformation", "gsm_map.locationInformation",
17835         FT_NONE, BASE_NONE, NULL, 0,
17836         "", HFILL }},
17837     { &hf_gsm_map_subscriberState,
17838       { "subscriberState", "gsm_map.subscriberState",
17839         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberState_vals), 0,
17840         "SubscriberInfo/subscriberState", HFILL }},
17841     { &hf_gsm_map_locationInformationGPRS,
17842       { "locationInformationGPRS", "gsm_map.locationInformationGPRS",
17843         FT_NONE, BASE_NONE, NULL, 0,
17844         "", HFILL }},
17845     { &hf_gsm_map_ps_SubscriberState,
17846       { "ps-SubscriberState", "gsm_map.ps_SubscriberState",
17847         FT_UINT32, BASE_DEC, VALS(gsm_map_PS_SubscriberState_vals), 0,
17848         "SubscriberInfo/ps-SubscriberState", HFILL }},
17849     { &hf_gsm_map_ms_Classmark2,
17850       { "ms-Classmark2", "gsm_map.ms_Classmark2",
17851         FT_BYTES, BASE_HEX, NULL, 0,
17852         "SubscriberInfo/ms-Classmark2", HFILL }},
17853     { &hf_gsm_map_gprs_MS_Class,
17854       { "gprs-MS-Class", "gsm_map.gprs_MS_Class",
17855         FT_NONE, BASE_NONE, NULL, 0,
17856         "SubscriberInfo/gprs-MS-Class", HFILL }},
17857     { &hf_gsm_map_mnpInfoRes,
17858       { "mnpInfoRes", "gsm_map.mnpInfoRes",
17859         FT_NONE, BASE_NONE, NULL, 0,
17860         "SubscriberInfo/mnpInfoRes", HFILL }},
17861     { &hf_gsm_map_routeingNumber,
17862       { "routeingNumber", "gsm_map.routeingNumber",
17863         FT_BYTES, BASE_HEX, NULL, 0,
17864         "MNPInfoRes/routeingNumber", HFILL }},
17865     { &hf_gsm_map_mSNetworkCapability,
17866       { "mSNetworkCapability", "gsm_map.mSNetworkCapability",
17867         FT_BYTES, BASE_HEX, NULL, 0,
17868         "GPRSMSClass/mSNetworkCapability", HFILL }},
17869     { &hf_gsm_map_mSRadioAccessCapability,
17870       { "mSRadioAccessCapability", "gsm_map.mSRadioAccessCapability",
17871         FT_BYTES, BASE_HEX, NULL, 0,
17872         "GPRSMSClass/mSRadioAccessCapability", HFILL }},
17873     { &hf_gsm_map_locationInformation_flg,
17874       { "locationInformation", "gsm_map.locationInformation",
17875         FT_NONE, BASE_NONE, NULL, 0,
17876         "RequestedInfo/locationInformation", HFILL }},
17877     { &hf_gsm_map_subscriberState_flg,
17878       { "subscriberState", "gsm_map.subscriberState",
17879         FT_NONE, BASE_NONE, NULL, 0,
17880         "RequestedInfo/subscriberState", HFILL }},
17881     { &hf_gsm_map_currentLocation,
17882       { "currentLocation", "gsm_map.currentLocation",
17883         FT_NONE, BASE_NONE, NULL, 0,
17884         "RequestedInfo/currentLocation", HFILL }},
17885     { &hf_gsm_map_requestedDomain,
17886       { "requestedDomain", "gsm_map.requestedDomain",
17887         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestedDomain_vals), 0,
17888         "RequestedInfo/requestedDomain", HFILL }},
17889     { &hf_gsm_map_imei_flg,
17890       { "imei", "gsm_map.imei",
17891         FT_NONE, BASE_NONE, NULL, 0,
17892         "RequestedInfo/imei", HFILL }},
17893     { &hf_gsm_map_ms_classmark,
17894       { "ms-classmark", "gsm_map.ms_classmark",
17895         FT_NONE, BASE_NONE, NULL, 0,
17896         "RequestedInfo/ms-classmark", HFILL }},
17897     { &hf_gsm_map_mnpRequestedInfo,
17898       { "mnpRequestedInfo", "gsm_map.mnpRequestedInfo",
17899         FT_NONE, BASE_NONE, NULL, 0,
17900         "RequestedInfo/mnpRequestedInfo", HFILL }},
17901     { &hf_gsm_map_subscriberIdentity,
17902       { "subscriberIdentity", "gsm_map.subscriberIdentity",
17903         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
17904         "", HFILL }},
17905     { &hf_gsm_map_requestedSubscriptionInfo,
17906       { "requestedSubscriptionInfo", "gsm_map.requestedSubscriptionInfo",
17907         FT_NONE, BASE_NONE, NULL, 0,
17908         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo", HFILL }},
17909     { &hf_gsm_map_callForwardingData,
17910       { "callForwardingData", "gsm_map.callForwardingData",
17911         FT_NONE, BASE_NONE, NULL, 0,
17912         "AnyTimeSubscriptionInterrogationRes/callForwardingData", HFILL }},
17913     { &hf_gsm_map_callBarringData,
17914       { "callBarringData", "gsm_map.callBarringData",
17915         FT_NONE, BASE_NONE, NULL, 0,
17916         "AnyTimeSubscriptionInterrogationRes/callBarringData", HFILL }},
17917     { &hf_gsm_map_odb_Info,
17918       { "odb-Info", "gsm_map.odb_Info",
17919         FT_NONE, BASE_NONE, NULL, 0,
17920         "", HFILL }},
17921     { &hf_gsm_map_camel_SubscriptionInfo,
17922       { "camel-SubscriptionInfo", "gsm_map.camel_SubscriptionInfo",
17923         FT_NONE, BASE_NONE, NULL, 0,
17924         "", HFILL }},
17925     { &hf_gsm_map_supportedVLR_CAMEL_Phases,
17926       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
17927         FT_BYTES, BASE_HEX, NULL, 0,
17928         "AnyTimeSubscriptionInterrogationRes/supportedVLR-CAMEL-Phases", HFILL }},
17929     { &hf_gsm_map_supportedSGSN_CAMEL_Phases,
17930       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
17931         FT_BYTES, BASE_HEX, NULL, 0,
17932         "AnyTimeSubscriptionInterrogationRes/supportedSGSN-CAMEL-Phases", HFILL }},
17933     { &hf_gsm_map_offeredCamel4CSIsInVLR,
17934       { "offeredCamel4CSIsInVLR", "gsm_map.offeredCamel4CSIsInVLR",
17935         FT_BYTES, BASE_HEX, NULL, 0,
17936         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInVLR", HFILL }},
17937     { &hf_gsm_map_offeredCamel4CSIsInSGSN,
17938       { "offeredCamel4CSIsInSGSN", "gsm_map.offeredCamel4CSIsInSGSN",
17939         FT_BYTES, BASE_HEX, NULL, 0,
17940         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInSGSN", HFILL }},
17941     { &hf_gsm_map_requestedSS_Info,
17942       { "requestedSS-Info", "gsm_map.requestedSS_Info",
17943         FT_NONE, BASE_NONE, NULL, 0,
17944         "RequestedSubscriptionInfo/requestedSS-Info", HFILL }},
17945     { &hf_gsm_map_odb,
17946       { "odb", "gsm_map.odb",
17947         FT_NONE, BASE_NONE, NULL, 0,
17948         "RequestedSubscriptionInfo/odb", HFILL }},
17949     { &hf_gsm_map_requestedCAMEL_SubscriptionInfo,
17950       { "requestedCAMEL-SubscriptionInfo", "gsm_map.requestedCAMEL_SubscriptionInfo",
17951         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestedCAMEL_SubscriptionInfo_vals), 0,
17952         "RequestedSubscriptionInfo/requestedCAMEL-SubscriptionInfo", HFILL }},
17953     { &hf_gsm_map_supportedVLR_CAMEL_Phases_flg,
17954       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
17955         FT_NONE, BASE_NONE, NULL, 0,
17956         "RequestedSubscriptionInfo/supportedVLR-CAMEL-Phases", HFILL }},
17957     { &hf_gsm_map_supportedSGSN_CAMEL_Phases_flg,
17958       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
17959         FT_NONE, BASE_NONE, NULL, 0,
17960         "RequestedSubscriptionInfo/supportedSGSN-CAMEL-Phases", HFILL }},
17961     { &hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo,
17962       { "additionalRequestedCAMEL-SubscriptionInfo", "gsm_map.additionalRequestedCAMEL_SubscriptionInfo",
17963         FT_UINT32, BASE_DEC, VALS(gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals), 0,
17964         "", HFILL }},
17965     { &hf_gsm_map_password,
17966       { "password", "gsm_map.password",
17967         FT_STRING, BASE_NONE, NULL, 0,
17968         "", HFILL }},
17969     { &hf_gsm_map_wrongPasswordAttemptsCounter,
17970       { "wrongPasswordAttemptsCounter", "gsm_map.wrongPasswordAttemptsCounter",
17971         FT_UINT32, BASE_DEC, NULL, 0,
17972         "", HFILL }},
17973     { &hf_gsm_map_bearerService,
17974       { "bearerService", "gsm_map.bearerService",
17975         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
17976         "BasicServiceCode/bearerService", HFILL }},
17977     { &hf_gsm_map_teleservice_code,
17978       { "teleservice", "gsm_map.teleservice",
17979         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
17980         "BasicServiceCode/teleservice", HFILL }},
17981     { &hf_gsm_map_O_BcsmCamelTDPCriteriaList_item,
17982       { "Item", "gsm_map.O_BcsmCamelTDPCriteriaList_item",
17983         FT_NONE, BASE_NONE, NULL, 0,
17984         "O-BcsmCamelTDPCriteriaList/_item", HFILL }},
17985     { &hf_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList_item,
17986       { "Item", "gsm_map.T_BCSM_CAMEL_TDP_CriteriaList_item",
17987         FT_NONE, BASE_NONE, NULL, 0,
17988         "T-BCSM-CAMEL-TDP-CriteriaList/_item", HFILL }},
17989     { &hf_gsm_map_destinationNumberCriteria,
17990       { "destinationNumberCriteria", "gsm_map.destinationNumberCriteria",
17991         FT_NONE, BASE_NONE, NULL, 0,
17992         "O-BcsmCamelTDP-Criteria/destinationNumberCriteria", HFILL }},
17993     { &hf_gsm_map_basicServiceCriteria,
17994       { "basicServiceCriteria", "gsm_map.basicServiceCriteria",
17995         FT_UINT32, BASE_DEC, NULL, 0,
17996         "", HFILL }},
17997     { &hf_gsm_map_callTypeCriteria,
17998       { "callTypeCriteria", "gsm_map.callTypeCriteria",
17999         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTypeCriteria_vals), 0,
18000         "O-BcsmCamelTDP-Criteria/callTypeCriteria", HFILL }},
18001     { &hf_gsm_map_o_CauseValueCriteria,
18002       { "o-CauseValueCriteria", "gsm_map.o_CauseValueCriteria",
18003         FT_UINT32, BASE_DEC, NULL, 0,
18004         "O-BcsmCamelTDP-Criteria/o-CauseValueCriteria", HFILL }},
18005     { &hf_gsm_map_t_BCSM_TriggerDetectionPoint,
18006       { "t-BCSM-TriggerDetectionPoint", "gsm_map.t_BCSM_TriggerDetectionPoint",
18007         FT_UINT32, BASE_DEC, VALS(gsm_map_T_BcsmTriggerDetectionPoint_vals), 0,
18008         "T-BCSM-CAMEL-TDP-Criteria/t-BCSM-TriggerDetectionPoint", HFILL }},
18009     { &hf_gsm_map_t_CauseValueCriteria,
18010       { "t-CauseValueCriteria", "gsm_map.t_CauseValueCriteria",
18011         FT_UINT32, BASE_DEC, NULL, 0,
18012         "T-BCSM-CAMEL-TDP-Criteria/t-CauseValueCriteria", HFILL }},
18013     { &hf_gsm_map_maximumEntitledPriority,
18014       { "maximumEntitledPriority", "gsm_map.maximumEntitledPriority",
18015         FT_UINT32, BASE_DEC, NULL, 0,
18016         "GenericServiceInfo/maximumEntitledPriority", HFILL }},
18017     { &hf_gsm_map_ccbs_FeatureList,
18018       { "ccbs-FeatureList", "gsm_map.ccbs_FeatureList",
18019         FT_UINT32, BASE_DEC, NULL, 0,
18020         "GenericServiceInfo/ccbs-FeatureList", HFILL }},
18021     { &hf_gsm_map_nbrSN,
18022       { "nbrSN", "gsm_map.nbrSN",
18023         FT_UINT32, BASE_DEC, NULL, 0,
18024         "GenericServiceInfo/nbrSN", HFILL }},
18025     { &hf_gsm_map_CCBS_FeatureList_item,
18026       { "Item", "gsm_map.CCBS_FeatureList_item",
18027         FT_NONE, BASE_NONE, NULL, 0,
18028         "CCBS-FeatureList/_item", HFILL }},
18029     { &hf_gsm_map_b_subscriberNumber,
18030       { "b-subscriberNumber", "gsm_map.b_subscriberNumber",
18031         FT_BYTES, BASE_HEX, NULL, 0,
18032         "CCBS-Feature/b-subscriberNumber", HFILL }},
18033     { &hf_gsm_map_b_subscriberSubaddress,
18034       { "b-subscriberSubaddress", "gsm_map.b_subscriberSubaddress",
18035         FT_BYTES, BASE_HEX, NULL, 0,
18036         "CCBS-Feature/b-subscriberSubaddress", HFILL }},
18037     { &hf_gsm_map_basicServiceGroup,
18038       { "basicServiceGroup", "gsm_map.basicServiceGroup",
18039         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
18040         "CCBS-Feature/basicServiceGroup", HFILL }},
18041     { &hf_gsm_map_T_CauseValueCriteria_item,
18042       { "Item", "gsm_map.T_CauseValueCriteria_item",
18043         FT_BYTES, BASE_HEX, NULL, 0,
18044         "T-CauseValueCriteria/_item", HFILL }},
18045     { &hf_gsm_map_O_CauseValueCriteria_item,
18046       { "Item", "gsm_map.O_CauseValueCriteria_item",
18047         FT_BYTES, BASE_HEX, NULL, 0,
18048         "O-CauseValueCriteria/_item", HFILL }},
18049     { &hf_gsm_map_BasicServiceCriteria_item,
18050       { "Item", "gsm_map.BasicServiceCriteria_item",
18051         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
18052         "BasicServiceCriteria/_item", HFILL }},
18053     { &hf_gsm_map_modificationRequestFor_CF_Info,
18054       { "modificationRequestFor-CF-Info", "gsm_map.modificationRequestFor_CF_Info",
18055         FT_NONE, BASE_NONE, NULL, 0,
18056         "AnyTimeModificationArg/modificationRequestFor-CF-Info", HFILL }},
18057     { &hf_gsm_map_modificationRequestFor_CB_Info,
18058       { "modificationRequestFor-CB-Info", "gsm_map.modificationRequestFor_CB_Info",
18059         FT_NONE, BASE_NONE, NULL, 0,
18060         "AnyTimeModificationArg/modificationRequestFor-CB-Info", HFILL }},
18061     { &hf_gsm_map_modificationRequestFor_CSI,
18062       { "modificationRequestFor-CSI", "gsm_map.modificationRequestFor_CSI",
18063         FT_NONE, BASE_NONE, NULL, 0,
18064         "AnyTimeModificationArg/modificationRequestFor-CSI", HFILL }},
18065     { &hf_gsm_map_modificationRequestFor_ODB_data,
18066       { "modificationRequestFor-ODB-data", "gsm_map.modificationRequestFor_ODB_data",
18067         FT_NONE, BASE_NONE, NULL, 0,
18068         "AnyTimeModificationArg/modificationRequestFor-ODB-data", HFILL }},
18069     { &hf_gsm_map_ss_InfoFor_CSE,
18070       { "ss-InfoFor-CSE", "gsm_map.ss_InfoFor_CSE",
18071         FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_SS_InfoFor_CSE_vals), 0,
18072         "AnyTimeModificationRes/ss-InfoFor-CSE", HFILL }},
18073     { &hf_gsm_map_modifyNotificationToCSE,
18074       { "modifyNotificationToCSE", "gsm_map.modifyNotificationToCSE",
18075         FT_UINT32, BASE_DEC, VALS(gsm_map_ModificationInstruction_vals), 0,
18076         "", HFILL }},
18077     { &hf_gsm_map_odb_data,
18078       { "odb-data", "gsm_map.odb_data",
18079         FT_NONE, BASE_NONE, NULL, 0,
18080         "ModificationRequestFor-ODB-data/odb-data", HFILL }},
18081     { &hf_gsm_map_requestedCamel_SubscriptionInfo,
18082       { "requestedCamel-SubscriptionInfo", "gsm_map.requestedCamel_SubscriptionInfo",
18083         FT_UINT32, BASE_DEC, VALS(gsm_map_RequestedCAMEL_SubscriptionInfo_vals), 0,
18084         "ModificationRequestFor-CSI/requestedCamel-SubscriptionInfo", HFILL }},
18085     { &hf_gsm_map_modifyCSI_State,
18086       { "modifyCSI-State", "gsm_map.modifyCSI_State",
18087         FT_UINT32, BASE_DEC, VALS(gsm_map_ModificationInstruction_vals), 0,
18088         "ModificationRequestFor-CSI/modifyCSI-State", HFILL }},
18089     { &hf_gsm_map_forwardingInfoFor_CSE,
18090       { "forwardingInfoFor-CSE", "gsm_map.forwardingInfoFor_CSE",
18091         FT_NONE, BASE_NONE, NULL, 0,
18092         "", HFILL }},
18093     { &hf_gsm_map_callBarringInfoFor_CSE,
18094       { "callBarringInfoFor-CSE", "gsm_map.callBarringInfoFor_CSE",
18095         FT_NONE, BASE_NONE, NULL, 0,
18096         "", HFILL }},
18097     { &hf_gsm_map_eventMet,
18098       { "eventMet", "gsm_map.eventMet",
18099         FT_BYTES, BASE_HEX, NULL, 0,
18100         "NoteMM-EventArg/eventMet", HFILL }},
18101     { &hf_gsm_map_supportedCAMELPhases,
18102       { "supportedCAMELPhases", "gsm_map.supportedCAMELPhases",
18103         FT_BYTES, BASE_HEX, NULL, 0,
18104         "NoteMM-EventArg/supportedCAMELPhases", HFILL }},
18105     { &hf_gsm_map_offeredCamel4Functionalities,
18106       { "offeredCamel4Functionalities", "gsm_map.offeredCamel4Functionalities",
18107         FT_BYTES, BASE_HEX, NULL, 0,
18108         "NoteMM-EventArg/offeredCamel4Functionalities", HFILL }},
18109     { &hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList,
18110       { "vt-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_BCSM_CAMEL_TDP_CriteriaList",
18111         FT_UINT32, BASE_DEC, NULL, 0,
18112         "CAMEL-SubscriptionInfo/vt-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
18113     { &hf_gsm_map_tif_CSI_NotificationToCSE,
18114       { "tif-CSI-NotificationToCSE", "gsm_map.tif_CSI_NotificationToCSE",
18115         FT_NONE, BASE_NONE, NULL, 0,
18116         "CAMEL-SubscriptionInfo/tif-CSI-NotificationToCSE", HFILL }},
18117     { &hf_gsm_map_specificCSIDeletedList,
18118       { "specificCSIDeletedList", "gsm_map.specificCSIDeletedList",
18119         FT_BYTES, BASE_HEX, NULL, 0,
18120         "CAMEL-SubscriptionInfo/specificCSIDeletedList", HFILL }},
18121     { &hf_gsm_map_o_IM_CSI,
18122       { "o-IM-CSI", "gsm_map.o_IM_CSI",
18123         FT_NONE, BASE_NONE, NULL, 0,
18124         "CAMEL-SubscriptionInfo/o-IM-CSI", HFILL }},
18125     { &hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList,
18126       { "o-IM-BcsmCamelTDP-CriteriaList", "gsm_map.o_IM_BcsmCamelTDP_CriteriaList",
18127         FT_UINT32, BASE_DEC, NULL, 0,
18128         "CAMEL-SubscriptionInfo/o-IM-BcsmCamelTDP-CriteriaList", HFILL }},
18129     { &hf_gsm_map_d_IM_CSI,
18130       { "d-IM-CSI", "gsm_map.d_IM_CSI",
18131         FT_NONE, BASE_NONE, NULL, 0,
18132         "CAMEL-SubscriptionInfo/d-IM-CSI", HFILL }},
18133     { &hf_gsm_map_vt_IM_CSI,
18134       { "vt-IM-CSI", "gsm_map.vt_IM_CSI",
18135         FT_NONE, BASE_NONE, NULL, 0,
18136         "CAMEL-SubscriptionInfo/vt-IM-CSI", HFILL }},
18137     { &hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList,
18138       { "vt-IM-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_IM_BCSM_CAMEL_TDP_CriteriaList",
18139         FT_UINT32, BASE_DEC, NULL, 0,
18140         "CAMEL-SubscriptionInfo/vt-IM-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
18141     { &hf_gsm_map_ext_BearerService,
18142       { "ext-BearerService", "gsm_map.ext_BearerService",
18143         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
18144         "Ext-BasicServiceCode/ext-BearerService", HFILL }},
18145     { &hf_gsm_map_ext_Teleservice,
18146       { "ext-Teleservice", "gsm_map.ext_Teleservice",
18147         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
18148         "Ext-BasicServiceCode/ext-Teleservice", HFILL }},
18149     { &hf_gsm_map_odb_HPLMN_Data,
18150       { "odb-HPLMN-Data", "gsm_map.odb_HPLMN_Data",
18151         FT_BYTES, BASE_HEX, NULL, 0,
18152         "ODB-Data/odb-HPLMN-Data", HFILL }},
18153     { &hf_gsm_map_SS_EventList_item,
18154       { "Item", "gsm_map.SS_EventList_item",
18155         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
18156         "SS-EventList/_item", HFILL }},
18157     { &hf_gsm_map_t_BcsmCamelTDPDataList,
18158       { "t-BcsmCamelTDPDataList", "gsm_map.t_BcsmCamelTDPDataList",
18159         FT_UINT32, BASE_DEC, NULL, 0,
18160         "T-CSI/t-BcsmCamelTDPDataList", HFILL }},
18161     { &hf_gsm_map_T_BcsmCamelTDPDataList_item,
18162       { "Item", "gsm_map.T_BcsmCamelTDPDataList_item",
18163         FT_NONE, BASE_NONE, NULL, 0,
18164         "T-BcsmCamelTDPDataList/_item", HFILL }},
18165     { &hf_gsm_map_t_BcsmTriggerDetectionPoint,
18166       { "t-BcsmTriggerDetectionPoint", "gsm_map.t_BcsmTriggerDetectionPoint",
18167         FT_UINT32, BASE_DEC, VALS(gsm_map_T_BcsmTriggerDetectionPoint_vals), 0,
18168         "T-BcsmCamelTDPData/t-BcsmTriggerDetectionPoint", HFILL }},
18169     { &hf_gsm_map_sms_CAMEL_TDP_DataList,
18170       { "sms-CAMEL-TDP-DataList", "gsm_map.sms_CAMEL_TDP_DataList",
18171         FT_UINT32, BASE_DEC, NULL, 0,
18172         "SMS-CSI/sms-CAMEL-TDP-DataList", HFILL }},
18173     { &hf_gsm_map_SMS_CAMEL_TDP_DataList_item,
18174       { "Item", "gsm_map.SMS_CAMEL_TDP_DataList_item",
18175         FT_NONE, BASE_NONE, NULL, 0,
18176         "SMS-CAMEL-TDP-DataList/_item", HFILL }},
18177     { &hf_gsm_map_defaultSMS_Handling,
18178       { "defaultSMS-Handling", "gsm_map.defaultSMS_Handling",
18179         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultSMS_Handling_vals), 0,
18180         "SMS-CAMEL-TDP-Data/defaultSMS-Handling", HFILL }},
18181     { &hf_gsm_map_MobilityTriggers_item,
18182       { "Item", "gsm_map.MobilityTriggers_item",
18183         FT_BYTES, BASE_HEX, NULL, 0,
18184         "MobilityTriggers/_item", HFILL }},
18185     { &hf_gsm_map_ss_Event,
18186       { "ss-Event", "gsm_map.ss_Event",
18187         FT_BYTES, BASE_HEX, NULL, 0,
18188         "Ss-InvocationNotificationArg/ss-Event", HFILL }},
18189     { &hf_gsm_map_ss_EventSpecification,
18190       { "ss-EventSpecification", "gsm_map.ss_EventSpecification",
18191         FT_UINT32, BASE_DEC, NULL, 0,
18192         "Ss-InvocationNotificationArg/ss-EventSpecification", HFILL }},
18193     { &hf_gsm_map_ss_EventSpecification_item,
18194       { "Item", "gsm_map.ss_EventSpecification_item",
18195         FT_BYTES, BASE_HEX, NULL, 0,
18196         "Ss-InvocationNotificationArg/ss-EventSpecification/_item", HFILL }},
18197     { &hf_gsm_map_ext_teleservice,
18198       { "teleservice", "gsm_map.teleservice",
18199         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
18200         "PrepareGroupCallArg/teleservice", HFILL }},
18201     { &hf_gsm_map_codec_Info,
18202       { "codec-Info", "gsm_map.codec_Info",
18203         FT_BYTES, BASE_HEX, NULL, 0,
18204         "PrepareGroupCallArg/codec-Info", HFILL }},
18205     { &hf_gsm_map_cipheringAlgorithm,
18206       { "cipheringAlgorithm", "gsm_map.cipheringAlgorithm",
18207         FT_BYTES, BASE_HEX, NULL, 0,
18208         "PrepareGroupCallArg/cipheringAlgorithm", HFILL }},
18209     { &hf_gsm_map_groupKeyNumber_Vk_Id,
18210       { "groupKeyNumber-Vk-Id", "gsm_map.groupKeyNumber_Vk_Id",
18211         FT_UINT32, BASE_DEC, NULL, 0,
18212         "PrepareGroupCallArg/groupKeyNumber-Vk-Id", HFILL }},
18213     { &hf_gsm_map_groupKey,
18214       { "groupKey", "gsm_map.groupKey",
18215         FT_BYTES, BASE_HEX, NULL, 0,
18216         "PrepareGroupCallArg/groupKey", HFILL }},
18217     { &hf_gsm_map_priority,
18218       { "priority", "gsm_map.priority",
18219         FT_UINT32, BASE_DEC, NULL, 0,
18220         "PrepareGroupCallArg/priority", HFILL }},
18221     { &hf_gsm_map_uplinkFree,
18222       { "uplinkFree", "gsm_map.uplinkFree",
18223         FT_NONE, BASE_NONE, NULL, 0,
18224         "PrepareGroupCallArg/uplinkFree", HFILL }},
18225     { &hf_gsm_map_vstk,
18226       { "vstk", "gsm_map.vstk",
18227         FT_BYTES, BASE_HEX, NULL, 0,
18228         "PrepareGroupCallArg/vstk", HFILL }},
18229     { &hf_gsm_map_vstk_rand,
18230       { "vstk-rand", "gsm_map.vstk_rand",
18231         FT_BYTES, BASE_HEX, NULL, 0,
18232         "PrepareGroupCallArg/vstk-rand", HFILL }},
18233     { &hf_gsm_map_groupCallNumber,
18234       { "groupCallNumber", "gsm_map.groupCallNumber",
18235         FT_BYTES, BASE_HEX, NULL, 0,
18236         "PrepareGroupCallRes/groupCallNumber", HFILL }},
18237     { &hf_gsm_map_uplinkRequest,
18238       { "uplinkRequest", "gsm_map.uplinkRequest",
18239         FT_NONE, BASE_NONE, NULL, 0,
18240         "ProcessGroupCallSignallingArg/uplinkRequest", HFILL }},
18241     { &hf_gsm_map_uplinkReleaseIndication,
18242       { "uplinkReleaseIndication", "gsm_map.uplinkReleaseIndication",
18243         FT_NONE, BASE_NONE, NULL, 0,
18244         "", HFILL }},
18245     { &hf_gsm_map_releaseGroupCall,
18246       { "releaseGroupCall", "gsm_map.releaseGroupCall",
18247         FT_NONE, BASE_NONE, NULL, 0,
18248         "ProcessGroupCallSignallingArg/releaseGroupCall", HFILL }},
18249     { &hf_gsm_map_uplinkRequestAck,
18250       { "uplinkRequestAck", "gsm_map.uplinkRequestAck",
18251         FT_NONE, BASE_NONE, NULL, 0,
18252         "ForwardGroupCallSignallingArg/uplinkRequestAck", HFILL }},
18253     { &hf_gsm_map_uplinkRejectCommand,
18254       { "uplinkRejectCommand", "gsm_map.uplinkRejectCommand",
18255         FT_NONE, BASE_NONE, NULL, 0,
18256         "ForwardGroupCallSignallingArg/uplinkRejectCommand", HFILL }},
18257     { &hf_gsm_map_uplinkSeizedCommand,
18258       { "uplinkSeizedCommand", "gsm_map.uplinkSeizedCommand",
18259         FT_NONE, BASE_NONE, NULL, 0,
18260         "ForwardGroupCallSignallingArg/uplinkSeizedCommand", HFILL }},
18261     { &hf_gsm_map_uplinkReleaseCommand,
18262       { "uplinkReleaseCommand", "gsm_map.uplinkReleaseCommand",
18263         FT_NONE, BASE_NONE, NULL, 0,
18264         "ForwardGroupCallSignallingArg/uplinkReleaseCommand", HFILL }},
18265     { &hf_gsm_map_sgsn_Address,
18266       { "sgsn-Address", "gsm_map.sgsn_Address",
18267         FT_BYTES, BASE_HEX, NULL, 0,
18268         "", HFILL }},
18269     { &hf_gsm_map_sgsn_Capability,
18270       { "sgsn-Capability", "gsm_map.sgsn_Capability",
18271         FT_NONE, BASE_NONE, NULL, 0,
18272         "UpdateGprsLocationArg/sgsn-Capability", HFILL }},
18273     { &hf_gsm_map_ps_LCS_NotSupportedByUE,
18274       { "ps-LCS-NotSupportedByUE", "gsm_map.ps_LCS_NotSupportedByUE",
18275         FT_NONE, BASE_NONE, NULL, 0,
18276         "UpdateGprsLocationArg/ps-LCS-NotSupportedByUE", HFILL }},
18277     { &hf_gsm_map_gprsEnhancementsSupportIndicator,
18278       { "gprsEnhancementsSupportIndicator", "gsm_map.gprsEnhancementsSupportIndicator",
18279         FT_NONE, BASE_NONE, NULL, 0,
18280         "SGSN-Capability/gprsEnhancementsSupportIndicator", HFILL }},
18281     { &hf_gsm_map_smsCallBarringSupportIndicator,
18282       { "smsCallBarringSupportIndicator", "gsm_map.smsCallBarringSupportIndicator",
18283         FT_NONE, BASE_NONE, NULL, 0,
18284         "SGSN-Capability/smsCallBarringSupportIndicator", HFILL }},
18285     { &hf_gsm_map_ggsn_Number,
18286       { "ggsn-Number", "gsm_map.ggsn_Number",
18287         FT_BYTES, BASE_HEX, NULL, 0,
18288         "", HFILL }},
18289     { &hf_gsm_map_mobileNotReachableReason,
18290       { "mobileNotReachableReason", "gsm_map.mobileNotReachableReason",
18291         FT_UINT32, BASE_DEC, NULL, 0,
18292         "SendRoutingInfoForGprsRes/mobileNotReachableReason", HFILL }},
18293     { &hf_gsm_map_locationType,
18294       { "locationType", "gsm_map.locationType",
18295         FT_NONE, BASE_NONE, NULL, 0,
18296         "ProvideSubscriberLocation-Arg/locationType", HFILL }},
18297     { &hf_gsm_map_mlc_Number,
18298       { "mlc-Number", "gsm_map.mlc_Number",
18299         FT_BYTES, BASE_HEX, NULL, 0,
18300         "ProvideSubscriberLocation-Arg/mlc-Number", HFILL }},
18301     { &hf_gsm_map_lcs_ClientID,
18302       { "lcs-ClientID", "gsm_map.lcs_ClientID",
18303         FT_NONE, BASE_NONE, NULL, 0,
18304         "", HFILL }},
18305     { &hf_gsm_map_privacyOverride,
18306       { "privacyOverride", "gsm_map.privacyOverride",
18307         FT_NONE, BASE_NONE, NULL, 0,
18308         "ProvideSubscriberLocation-Arg/privacyOverride", HFILL }},
18309     { &hf_gsm_map_lcs_Priority,
18310       { "lcs-Priority", "gsm_map.lcs_Priority",
18311         FT_BYTES, BASE_HEX, NULL, 0,
18312         "ProvideSubscriberLocation-Arg/lcs-Priority", HFILL }},
18313     { &hf_gsm_map_lcs_QoS,
18314       { "lcs-QoS", "gsm_map.lcs_QoS",
18315         FT_NONE, BASE_NONE, NULL, 0,
18316         "ProvideSubscriberLocation-Arg/lcs-QoS", HFILL }},
18317     { &hf_gsm_map_supportedGADShapes,
18318       { "supportedGADShapes", "gsm_map.supportedGADShapes",
18319         FT_BYTES, BASE_HEX, NULL, 0,
18320         "ProvideSubscriberLocation-Arg/supportedGADShapes", HFILL }},
18321     { &hf_gsm_map_lcs_ReferenceNumber,
18322       { "lcs-ReferenceNumber", "gsm_map.lcs_ReferenceNumber",
18323         FT_BYTES, BASE_HEX, NULL, 0,
18324         "", HFILL }},
18325     { &hf_gsm_map_lcsServiceTypeID,
18326       { "lcsServiceTypeID", "gsm_map.lcsServiceTypeID",
18327         FT_UINT32, BASE_DEC, NULL, 0,
18328         "", HFILL }},
18329     { &hf_gsm_map_lcsCodeword,
18330       { "lcsCodeword", "gsm_map.lcsCodeword",
18331         FT_NONE, BASE_NONE, NULL, 0,
18332         "ProvideSubscriberLocation-Arg/lcsCodeword", HFILL }},
18333     { &hf_gsm_map_lcs_PrivacyCheck,
18334       { "lcs-PrivacyCheck", "gsm_map.lcs_PrivacyCheck",
18335         FT_NONE, BASE_NONE, NULL, 0,
18336         "ProvideSubscriberLocation-Arg/lcs-PrivacyCheck", HFILL }},
18337     { &hf_gsm_map_areaEventInfo,
18338       { "areaEventInfo", "gsm_map.areaEventInfo",
18339         FT_NONE, BASE_NONE, NULL, 0,
18340         "ProvideSubscriberLocation-Arg/areaEventInfo", HFILL }},
18341     { &hf_gsm_map_h_gmlc_Address,
18342       { "h-gmlc-Address", "gsm_map.h_gmlc_Address",
18343         FT_BYTES, BASE_HEX, NULL, 0,
18344         "", HFILL }},
18345     { &hf_gsm_map_locationEstimateType,
18346       { "locationEstimateType", "gsm_map.locationEstimateType",
18347         FT_UINT32, BASE_DEC, VALS(gsm_map_LocationEstimateType_vals), 0,
18348         "LocationType/locationEstimateType", HFILL }},
18349     { &hf_gsm_map_deferredLocationEventType,
18350       { "deferredLocationEventType", "gsm_map.deferredLocationEventType",
18351         FT_BYTES, BASE_HEX, NULL, 0,
18352         "", HFILL }},
18353     { &hf_gsm_map_lcsClientType,
18354       { "lcsClientType", "gsm_map.lcsClientType",
18355         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientType_vals), 0,
18356         "LCS-ClientID/lcsClientType", HFILL }},
18357     { &hf_gsm_map_lcsClientExternalID,
18358       { "lcsClientExternalID", "gsm_map.lcsClientExternalID",
18359         FT_NONE, BASE_NONE, NULL, 0,
18360         "LCS-ClientID/lcsClientExternalID", HFILL }},
18361     { &hf_gsm_map_lcsClientDialedByMS,
18362       { "lcsClientDialedByMS", "gsm_map.lcsClientDialedByMS",
18363         FT_BYTES, BASE_HEX, NULL, 0,
18364         "LCS-ClientID/lcsClientDialedByMS", HFILL }},
18365     { &hf_gsm_map_lcsClientInternalID,
18366       { "lcsClientInternalID", "gsm_map.lcsClientInternalID",
18367         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
18368         "LCS-ClientID/lcsClientInternalID", HFILL }},
18369     { &hf_gsm_map_lcsClientName,
18370       { "lcsClientName", "gsm_map.lcsClientName",
18371         FT_NONE, BASE_NONE, NULL, 0,
18372         "LCS-ClientID/lcsClientName", HFILL }},
18373     { &hf_gsm_map_lcsAPN,
18374       { "lcsAPN", "gsm_map.lcsAPN",
18375         FT_BYTES, BASE_HEX, NULL, 0,
18376         "LCS-ClientID/lcsAPN", HFILL }},
18377     { &hf_gsm_map_lcsRequestorID,
18378       { "lcsRequestorID", "gsm_map.lcsRequestorID",
18379         FT_NONE, BASE_NONE, NULL, 0,
18380         "LCS-ClientID/lcsRequestorID", HFILL }},
18381     { &hf_gsm_map_dataCodingScheme,
18382       { "dataCodingScheme", "gsm_map.dataCodingScheme",
18383         FT_BYTES, BASE_HEX, NULL, 0,
18384         "", HFILL }},
18385     { &hf_gsm_map_nameString,
18386       { "nameString", "gsm_map.nameString",
18387         FT_BYTES, BASE_HEX, NULL, 0,
18388         "LCSClientName/nameString", HFILL }},
18389     { &hf_gsm_map_lcs_FormatIndicator,
18390       { "lcs-FormatIndicator", "gsm_map.lcs_FormatIndicator",
18391         FT_UINT32, BASE_DEC, VALS(gsm_map_LCS_FormatIndicator_vals), 0,
18392         "", HFILL }},
18393     { &hf_gsm_map_requestorIDString,
18394       { "requestorIDString", "gsm_map.requestorIDString",
18395         FT_BYTES, BASE_HEX, NULL, 0,
18396         "LCSRequestorID/requestorIDString", HFILL }},
18397     { &hf_gsm_map_horizontal_accuracy,
18398       { "horizontal-accuracy", "gsm_map.horizontal_accuracy",
18399         FT_BYTES, BASE_HEX, NULL, 0,
18400         "LCS-QoS/horizontal-accuracy", HFILL }},
18401     { &hf_gsm_map_verticalCoordinateRequest,
18402       { "verticalCoordinateRequest", "gsm_map.verticalCoordinateRequest",
18403         FT_NONE, BASE_NONE, NULL, 0,
18404         "LCS-QoS/verticalCoordinateRequest", HFILL }},
18405     { &hf_gsm_map_vertical_accuracy,
18406       { "vertical-accuracy", "gsm_map.vertical_accuracy",
18407         FT_BYTES, BASE_HEX, NULL, 0,
18408         "LCS-QoS/vertical-accuracy", HFILL }},
18409     { &hf_gsm_map_responseTime,
18410       { "responseTime", "gsm_map.responseTime",
18411         FT_NONE, BASE_NONE, NULL, 0,
18412         "LCS-QoS/responseTime", HFILL }},
18413     { &hf_gsm_map_responseTimeCategory,
18414       { "responseTimeCategory", "gsm_map.responseTimeCategory",
18415         FT_UINT32, BASE_DEC, VALS(gsm_map_ResponseTimeCategory_vals), 0,
18416         "ResponseTime/responseTimeCategory", HFILL }},
18417     { &hf_gsm_map_lcsCodewordString,
18418       { "lcsCodewordString", "gsm_map.lcsCodewordString",
18419         FT_BYTES, BASE_HEX, NULL, 0,
18420         "LCSCodeword/lcsCodewordString", HFILL }},
18421     { &hf_gsm_map_callSessionUnrelated,
18422       { "callSessionUnrelated", "gsm_map.callSessionUnrelated",
18423         FT_UINT32, BASE_DEC, VALS(gsm_map_PrivacyCheckRelatedAction_vals), 0,
18424         "LCS-PrivacyCheck/callSessionUnrelated", HFILL }},
18425     { &hf_gsm_map_callSessionRelated,
18426       { "callSessionRelated", "gsm_map.callSessionRelated",
18427         FT_UINT32, BASE_DEC, VALS(gsm_map_PrivacyCheckRelatedAction_vals), 0,
18428         "LCS-PrivacyCheck/callSessionRelated", HFILL }},
18429     { &hf_gsm_map_areaDefinition,
18430       { "areaDefinition", "gsm_map.areaDefinition",
18431         FT_NONE, BASE_NONE, NULL, 0,
18432         "AreaEventInfo/areaDefinition", HFILL }},
18433     { &hf_gsm_map_occurrenceInfo,
18434       { "occurrenceInfo", "gsm_map.occurrenceInfo",
18435         FT_UINT32, BASE_DEC, VALS(gsm_map_OccurrenceInfo_vals), 0,
18436         "AreaEventInfo/occurrenceInfo", HFILL }},
18437     { &hf_gsm_map_intervalTime,
18438       { "intervalTime", "gsm_map.intervalTime",
18439         FT_UINT32, BASE_DEC, NULL, 0,
18440         "AreaEventInfo/intervalTime", HFILL }},
18441     { &hf_gsm_map_areaList,
18442       { "areaList", "gsm_map.areaList",
18443         FT_UINT32, BASE_DEC, NULL, 0,
18444         "AreaDefinition/areaList", HFILL }},
18445     { &hf_gsm_map_AreaList_item,
18446       { "Item", "gsm_map.AreaList_item",
18447         FT_NONE, BASE_NONE, NULL, 0,
18448         "AreaList/_item", HFILL }},
18449     { &hf_gsm_map_areaType,
18450       { "areaType", "gsm_map.areaType",
18451         FT_UINT32, BASE_DEC, VALS(gsm_map_AreaType_vals), 0,
18452         "Area/areaType", HFILL }},
18453     { &hf_gsm_map_areaIdentification,
18454       { "areaIdentification", "gsm_map.areaIdentification",
18455         FT_BYTES, BASE_HEX, NULL, 0,
18456         "Area/areaIdentification", HFILL }},
18457     { &hf_gsm_map_locationEstimate,
18458       { "locationEstimate", "gsm_map.locationEstimate",
18459         FT_BYTES, BASE_HEX, NULL, 0,
18460         "", HFILL }},
18461     { &hf_gsm_map_ageOfLocationEstimate,
18462       { "ageOfLocationEstimate", "gsm_map.ageOfLocationEstimate",
18463         FT_UINT32, BASE_DEC, NULL, 0,
18464         "", HFILL }},
18465     { &hf_gsm_map_add_LocationEstimate,
18466       { "add-LocationEstimate", "gsm_map.add_LocationEstimate",
18467         FT_BYTES, BASE_HEX, NULL, 0,
18468         "", HFILL }},
18469     { &hf_gsm_map_deferredmt_lrResponseIndicator,
18470       { "deferredmt-lrResponseIndicator", "gsm_map.deferredmt_lrResponseIndicator",
18471         FT_NONE, BASE_NONE, NULL, 0,
18472         "ProvideSubscriberLocation-Res/deferredmt-lrResponseIndicator", HFILL }},
18473     { &hf_gsm_map_geranPositioningData,
18474       { "geranPositioningData", "gsm_map.geranPositioningData",
18475         FT_BYTES, BASE_HEX, NULL, 0,
18476         "", HFILL }},
18477     { &hf_gsm_map_utranPositioningData,
18478       { "utranPositioningData", "gsm_map.utranPositioningData",
18479         FT_BYTES, BASE_HEX, NULL, 0,
18480         "", HFILL }},
18481     { &hf_gsm_map_cellIdOrSai,
18482       { "cellIdOrSai", "gsm_map.cellIdOrSai",
18483         FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
18484         "", HFILL }},
18485     { &hf_gsm_map_mlcNumber,
18486       { "mlcNumber", "gsm_map.mlcNumber",
18487         FT_BYTES, BASE_HEX, NULL, 0,
18488         "RoutingInfoForLCS-Arg/mlcNumber", HFILL }},
18489     { &hf_gsm_map_targetMS,
18490       { "targetMS", "gsm_map.targetMS",
18491         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
18492         "", HFILL }},
18493     { &hf_gsm_map_lcsLocationInfo,
18494       { "lcsLocationInfo", "gsm_map.lcsLocationInfo",
18495         FT_NONE, BASE_NONE, NULL, 0,
18496         "", HFILL }},
18497     { &hf_gsm_map_ppr_Address,
18498       { "ppr-Address", "gsm_map.ppr_Address",
18499         FT_BYTES, BASE_HEX, NULL, 0,
18500         "RoutingInfoForLCS-Res/ppr-Address", HFILL }},
18501     { &hf_gsm_map_additional_v_gmlc_Address,
18502       { "additional-v-gmlc-Address", "gsm_map.additional_v_gmlc_Address",
18503         FT_BYTES, BASE_HEX, NULL, 0,
18504         "RoutingInfoForLCS-Res/additional-v-gmlc-Address", HFILL }},
18505     { &hf_gsm_map_additional_LCS_CapabilitySets,
18506       { "additional-LCS-CapabilitySets", "gsm_map.additional_LCS_CapabilitySets",
18507         FT_BYTES, BASE_HEX, NULL, 0,
18508         "LCSLocationInfo/additional-LCS-CapabilitySets", HFILL }},
18509     { &hf_gsm_map_lcs_Event,
18510       { "lcs-Event", "gsm_map.lcs_Event",
18511         FT_UINT32, BASE_DEC, VALS(gsm_map_LCS_Event_vals), 0,
18512         "SubscriberLocationReport-Arg/lcs-Event", HFILL }},
18513     { &hf_gsm_map_na_ESRD,
18514       { "na-ESRD", "gsm_map.na_ESRD",
18515         FT_BYTES, BASE_HEX, NULL, 0,
18516         "", HFILL }},
18517     { &hf_gsm_map_na_ESRK,
18518       { "na-ESRK", "gsm_map.na_ESRK",
18519         FT_BYTES, BASE_HEX, NULL, 0,
18520         "", HFILL }},
18521     { &hf_gsm_map_slr_ArgExtensionContainer,
18522       { "slr-ArgExtensionContainer", "gsm_map.slr_ArgExtensionContainer",
18523         FT_NONE, BASE_NONE, NULL, 0,
18524         "SubscriberLocationReport-Arg/slr-ArgExtensionContainer", HFILL }},
18525     { &hf_gsm_map_deferredmt_lrData,
18526       { "deferredmt-lrData", "gsm_map.deferredmt_lrData",
18527         FT_NONE, BASE_NONE, NULL, 0,
18528         "SubscriberLocationReport-Arg/deferredmt-lrData", HFILL }},
18529     { &hf_gsm_map_pseudonymIndicator,
18530       { "pseudonymIndicator", "gsm_map.pseudonymIndicator",
18531         FT_NONE, BASE_NONE, NULL, 0,
18532         "SubscriberLocationReport-Arg/pseudonymIndicator", HFILL }},
18533     { &hf_gsm_map_terminationCause,
18534       { "terminationCause", "gsm_map.terminationCause",
18535         FT_UINT32, BASE_DEC, VALS(gsm_map_TerminationCause_vals), 0,
18536         "Deferredmt-lrData/terminationCause", HFILL }},
18537     { &hf_gsm_map_securityHeader,
18538       { "securityHeader", "gsm_map.securityHeader",
18539         FT_NONE, BASE_NONE, NULL, 0,
18540         "", HFILL }},
18541     { &hf_gsm_map_protectedPayload,
18542       { "protectedPayload", "gsm_map.protectedPayload",
18543         FT_BYTES, BASE_HEX, NULL, 0,
18544         "", HFILL }},
18545     { &hf_gsm_map_securityParametersIndex,
18546       { "securityParametersIndex", "gsm_map.securityParametersIndex",
18547         FT_BYTES, BASE_HEX, NULL, 0,
18548         "SecurityHeader/securityParametersIndex", HFILL }},
18549     { &hf_gsm_map_originalComponentIdentifier,
18550       { "originalComponentIdentifier", "gsm_map.originalComponentIdentifier",
18551         FT_UINT32, BASE_DEC, VALS(gsm_map_OriginalComponentIdentifier_vals), 0,
18552         "SecurityHeader/originalComponentIdentifier", HFILL }},
18553     { &hf_gsm_map_initialisationVector,
18554       { "initialisationVector", "gsm_map.initialisationVector",
18555         FT_BYTES, BASE_HEX, NULL, 0,
18556         "SecurityHeader/initialisationVector", HFILL }},
18557     { &hf_gsm_map_operationCode,
18558       { "operationCode", "gsm_map.operationCode",
18559         FT_UINT32, BASE_DEC, VALS(gsm_map_OperationCode_vals), 0,
18560         "OriginalComponentIdentifier/operationCode", HFILL }},
18561     { &hf_gsm_map_errorCode1,
18562       { "errorCode", "gsm_map.errorCode",
18563         FT_UINT32, BASE_DEC, VALS(gsm_map_ErrorCode_vals), 0,
18564         "OriginalComponentIdentifier/errorCode", HFILL }},
18565     { &hf_gsm_map_userInfo,
18566       { "userInfo", "gsm_map.userInfo",
18567         FT_NONE, BASE_NONE, NULL, 0,
18568         "OriginalComponentIdentifier/userInfo", HFILL }},
18569     { &hf_gsm_map_localValue2,
18570       { "localValue", "gsm_map.localValue",
18571         FT_INT32, BASE_DEC, NULL, 0,
18572         "", HFILL }},
18573     { &hf_gsm_map_networkResource,
18574       { "networkResource", "gsm_map.networkResource",
18575         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0,
18576         "", HFILL }},
18577     { &hf_gsm_map_extensibleSystemFailureParam,
18578       { "extensibleSystemFailureParam", "gsm_map.extensibleSystemFailureParam",
18579         FT_NONE, BASE_NONE, NULL, 0,
18580         "SystemFailureParam/extensibleSystemFailureParam", HFILL }},
18581     { &hf_gsm_map_unknownSubscriberDiagnostic,
18582       { "unknownSubscriberDiagnostic", "gsm_map.unknownSubscriberDiagnostic",
18583         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unknownSubscriberDiagnostic_vals), 0,
18584         "UnknownSubscriberParam/unknownSubscriberDiagnostic", HFILL }},
18585     { &hf_gsm_map_roamingNotAllowedCause,
18586       { "roamingNotAllowedCause", "gsm_map.roamingNotAllowedCause",
18587         FT_UINT32, BASE_DEC, VALS(gsm_map_T_roamingNotAllowedCause_vals), 0,
18588         "RoamingNotAllowedParam/roamingNotAllowedCause", HFILL }},
18589     { &hf_gsm_map_absentSubscriberReason,
18590       { "absentSubscriberReason", "gsm_map.absentSubscriberReason",
18591         FT_UINT32, BASE_DEC, VALS(gsm_map_AbsentSubscriberReason_vals), 0,
18592         "AbsentSubscriberParam/absentSubscriberReason", HFILL }},
18593     { &hf_gsm_map_ccbs_Busy,
18594       { "ccbs-Busy", "gsm_map.ccbs_Busy",
18595         FT_NONE, BASE_NONE, NULL, 0,
18596         "BusySubscriberParam/ccbs-Busy", HFILL }},
18597     { &hf_gsm_map_gprsConnectionSuspended,
18598       { "gprsConnectionSuspended", "gsm_map.gprsConnectionSuspended",
18599         FT_NONE, BASE_NONE, NULL, 0,
18600         "SubBusyForMT-SMS-Param/gprsConnectionSuspended", HFILL }},
18601     { &hf_gsm_map_callBarringCause,
18602       { "callBarringCause", "gsm_map.callBarringCause",
18603         FT_UINT32, BASE_DEC, VALS(gsm_map_CallBarringCause_vals), 0,
18604         "", HFILL }},
18605     { &hf_gsm_map_extensibleCallBarredParam,
18606       { "extensibleCallBarredParam", "gsm_map.extensibleCallBarredParam",
18607         FT_NONE, BASE_NONE, NULL, 0,
18608         "CallBarredParam/extensibleCallBarredParam", HFILL }},
18609     { &hf_gsm_map_unauthorisedMessageOriginator,
18610       { "unauthorisedMessageOriginator", "gsm_map.unauthorisedMessageOriginator",
18611         FT_NONE, BASE_NONE, NULL, 0,
18612         "ExtensibleCallBarredParam/unauthorisedMessageOriginator", HFILL }},
18613     { &hf_gsm_map_cug_RejectCause,
18614       { "cug-RejectCause", "gsm_map.cug_RejectCause",
18615         FT_UINT32, BASE_DEC, VALS(gsm_map_CUG_RejectCause_vals), 0,
18616         "CUG-RejectParam/cug-RejectCause", HFILL }},
18617     { &hf_gsm_map_cug_RejectCause1,
18618       { "cug-RejectCause", "gsm_map.cug_RejectCause",
18619         FT_UINT32, BASE_DEC, VALS(gsm_map_T_cug_RejectCause_vals), 0,
18620         "Cug-RejectParam/cug-RejectCause", HFILL }},
18621     { &hf_gsm_map_sm_EnumeratedDeliveryFailureCause,
18622       { "sm-EnumeratedDeliveryFailureCause", "gsm_map.sm_EnumeratedDeliveryFailureCause",
18623         FT_UINT32, BASE_DEC, VALS(gsm_map_SM_EnumeratedDeliveryFailureCause_vals), 0,
18624         "SM-DeliveryFailureCause/sm-EnumeratedDeliveryFailureCause", HFILL }},
18625     { &hf_gsm_map_diagnosticInfo,
18626       { "diagnosticInfo", "gsm_map.diagnosticInfo",
18627         FT_BYTES, BASE_HEX, NULL, 0,
18628         "SM-DeliveryFailureCause/diagnosticInfo", HFILL }},
18629     { &hf_gsm_map_unauthorizedLCSClient_Diagnostic,
18630       { "unauthorizedLCSClient-Diagnostic", "gsm_map.unauthorizedLCSClient_Diagnostic",
18631         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unauthorizedLCSClient_Diagnostic_vals), 0,
18632         "UnauthorizedLCSClient-Param/unauthorizedLCSClient-Diagnostic", HFILL }},
18633     { &hf_gsm_map_positionMethodFailure_Diagnostic,
18634       { "positionMethodFailure-Diagnostic", "gsm_map.positionMethodFailure_Diagnostic",
18635         FT_UINT32, BASE_DEC, VALS(gsm_map_PositionMethodFailure_Diagnostic_vals), 0,
18636         "PositionMethodFailure-Param/positionMethodFailure-Diagnostic", HFILL }},
18637     { &hf_gsm_map_pcsExtensions,
18638       { "pcsExtensions", "gsm_map.pcsExtensions",
18639         FT_NONE, BASE_NONE, NULL, 0,
18640         "ExtensionContainer/pcsExtensions", HFILL }},
18641     { &hf_gsm_map_SupportedCamelPhases_phase1,
18642       { "phase1", "gsm_map.phase1",
18643         FT_BOOLEAN, 8, NULL, 0x80,
18644         "", HFILL }},
18645     { &hf_gsm_map_SupportedCamelPhases_phase2,
18646       { "phase2", "gsm_map.phase2",
18647         FT_BOOLEAN, 8, NULL, 0x40,
18648         "", HFILL }},
18649     { &hf_gsm_map_SupportedCamelPhases_phase3,
18650       { "phase3", "gsm_map.phase3",
18651         FT_BOOLEAN, 8, NULL, 0x20,
18652         "", HFILL }},
18653     { &hf_gsm_map_SupportedCamelPhases_phase4,
18654       { "phase4", "gsm_map.phase4",
18655         FT_BOOLEAN, 8, NULL, 0x10,
18656         "", HFILL }},
18657     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet1,
18658       { "lcsCapabilitySet1", "gsm_map.lcsCapabilitySet1",
18659         FT_BOOLEAN, 8, NULL, 0x80,
18660         "", HFILL }},
18661     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet2,
18662       { "lcsCapabilitySet2", "gsm_map.lcsCapabilitySet2",
18663         FT_BOOLEAN, 8, NULL, 0x40,
18664         "", HFILL }},
18665     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet3,
18666       { "lcsCapabilitySet3", "gsm_map.lcsCapabilitySet3",
18667         FT_BOOLEAN, 8, NULL, 0x20,
18668         "", HFILL }},
18669     { &hf_gsm_map_SupportedLCS_CapabilitySets_lcsCapabilitySet4,
18670       { "lcsCapabilitySet4", "gsm_map.lcsCapabilitySet4",
18671         FT_BOOLEAN, 8, NULL, 0x10,
18672         "", HFILL }},
18673     { &hf_gsm_map_RequestedEquipmentInfo_equipmentStatus,
18674       { "equipmentStatus", "gsm_map.equipmentStatus",
18675         FT_BOOLEAN, 8, NULL, 0x80,
18676         "", HFILL }},
18677     { &hf_gsm_map_RequestedEquipmentInfo_bmuef,
18678       { "bmuef", "gsm_map.bmuef",
18679         FT_BOOLEAN, 8, NULL, 0x40,
18680         "", HFILL }},
18681     { &hf_gsm_map_ODB_GeneralData_allOG_CallsBarred,
18682       { "allOG-CallsBarred", "gsm_map.allOG-CallsBarred",
18683         FT_BOOLEAN, 8, NULL, 0x80,
18684         "", HFILL }},
18685     { &hf_gsm_map_ODB_GeneralData_internationalOGCallsBarred,
18686       { "internationalOGCallsBarred", "gsm_map.internationalOGCallsBarred",
18687         FT_BOOLEAN, 8, NULL, 0x40,
18688         "", HFILL }},
18689     { &hf_gsm_map_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred,
18690       { "internationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.internationalOGCallsNotToHPLMN-CountryBarred",
18691         FT_BOOLEAN, 8, NULL, 0x20,
18692         "", HFILL }},
18693     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsBarred,
18694       { "interzonalOGCallsBarred", "gsm_map.interzonalOGCallsBarred",
18695         FT_BOOLEAN, 8, NULL, 0x02,
18696         "", HFILL }},
18697     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred,
18698       { "interzonalOGCallsNotToHPLMN-CountryBarred", "gsm_map.interzonalOGCallsNotToHPLMN-CountryBarred",
18699         FT_BOOLEAN, 8, NULL, 0x01,
18700         "", HFILL }},
18701     { &hf_gsm_map_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred,
18702       { "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred",
18703         FT_BOOLEAN, 8, NULL, 0x80,
18704         "", HFILL }},
18705     { &hf_gsm_map_ODB_GeneralData_premiumRateInformationOGCallsBarred,
18706       { "premiumRateInformationOGCallsBarred", "gsm_map.premiumRateInformationOGCallsBarred",
18707         FT_BOOLEAN, 8, NULL, 0x10,
18708         "", HFILL }},
18709     { &hf_gsm_map_ODB_GeneralData_premiumRateEntertainementOGCallsBarred,
18710       { "premiumRateEntertainementOGCallsBarred", "gsm_map.premiumRateEntertainementOGCallsBarred",
18711         FT_BOOLEAN, 8, NULL, 0x08,
18712         "", HFILL }},
18713     { &hf_gsm_map_ODB_GeneralData_ss_AccessBarred,
18714       { "ss-AccessBarred", "gsm_map.ss-AccessBarred",
18715         FT_BOOLEAN, 8, NULL, 0x04,
18716         "", HFILL }},
18717     { &hf_gsm_map_ODB_GeneralData_allECT_Barred,
18718       { "allECT-Barred", "gsm_map.allECT-Barred",
18719         FT_BOOLEAN, 8, NULL, 0x40,
18720         "", HFILL }},
18721     { &hf_gsm_map_ODB_GeneralData_chargeableECT_Barred,
18722       { "chargeableECT-Barred", "gsm_map.chargeableECT-Barred",
18723         FT_BOOLEAN, 8, NULL, 0x20,
18724         "", HFILL }},
18725     { &hf_gsm_map_ODB_GeneralData_internationalECT_Barred,
18726       { "internationalECT-Barred", "gsm_map.internationalECT-Barred",
18727         FT_BOOLEAN, 8, NULL, 0x10,
18728         "", HFILL }},
18729     { &hf_gsm_map_ODB_GeneralData_interzonalECT_Barred,
18730       { "interzonalECT-Barred", "gsm_map.interzonalECT-Barred",
18731         FT_BOOLEAN, 8, NULL, 0x08,
18732         "", HFILL }},
18733     { &hf_gsm_map_ODB_GeneralData_doublyChargeableECT_Barred,
18734       { "doublyChargeableECT-Barred", "gsm_map.doublyChargeableECT-Barred",
18735         FT_BOOLEAN, 8, NULL, 0x04,
18736         "", HFILL }},
18737     { &hf_gsm_map_ODB_GeneralData_multipleECT_Barred,
18738       { "multipleECT-Barred", "gsm_map.multipleECT-Barred",
18739         FT_BOOLEAN, 8, NULL, 0x02,
18740         "", HFILL }},
18741     { &hf_gsm_map_ODB_GeneralData_allPacketOrientedServicesBarred,
18742       { "allPacketOrientedServicesBarred", "gsm_map.allPacketOrientedServicesBarred",
18743         FT_BOOLEAN, 8, NULL, 0x01,
18744         "", HFILL }},
18745     { &hf_gsm_map_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred,
18746       { "roamerAccessToHPLMN-AP-Barred", "gsm_map.roamerAccessToHPLMN-AP-Barred",
18747         FT_BOOLEAN, 8, NULL, 0x80,
18748         "", HFILL }},
18749     { &hf_gsm_map_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred,
18750       { "roamerAccessToVPLMN-AP-Barred", "gsm_map.roamerAccessToVPLMN-AP-Barred",
18751         FT_BOOLEAN, 8, NULL, 0x40,
18752         "", HFILL }},
18753     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred,
18754       { "roamingOutsidePLMNOG-CallsBarred", "gsm_map.roamingOutsidePLMNOG-CallsBarred",
18755         FT_BOOLEAN, 8, NULL, 0x20,
18756         "", HFILL }},
18757     { &hf_gsm_map_ODB_GeneralData_allIC_CallsBarred,
18758       { "allIC-CallsBarred", "gsm_map.allIC-CallsBarred",
18759         FT_BOOLEAN, 8, NULL, 0x10,
18760         "", HFILL }},
18761     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred,
18762       { "roamingOutsidePLMNIC-CallsBarred", "gsm_map.roamingOutsidePLMNIC-CallsBarred",
18763         FT_BOOLEAN, 8, NULL, 0x08,
18764         "", HFILL }},
18765     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred,
18766       { "roamingOutsidePLMNICountryIC-CallsBarred", "gsm_map.roamingOutsidePLMNICountryIC-CallsBarred",
18767         FT_BOOLEAN, 8, NULL, 0x04,
18768         "", HFILL }},
18769     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_Barred,
18770       { "roamingOutsidePLMN-Barred", "gsm_map.roamingOutsidePLMN-Barred",
18771         FT_BOOLEAN, 8, NULL, 0x02,
18772         "", HFILL }},
18773     { &hf_gsm_map_ODB_GeneralData_roamingOutsidePLMN_CountryBarred,
18774       { "roamingOutsidePLMN-CountryBarred", "gsm_map.roamingOutsidePLMN-CountryBarred",
18775         FT_BOOLEAN, 8, NULL, 0x01,
18776         "", HFILL }},
18777     { &hf_gsm_map_ODB_GeneralData_registrationAllCF_Barred,
18778       { "registrationAllCF-Barred", "gsm_map.registrationAllCF-Barred",
18779         FT_BOOLEAN, 8, NULL, 0x80,
18780         "", HFILL }},
18781     { &hf_gsm_map_ODB_GeneralData_registrationCFNotToHPLMN_Barred,
18782       { "registrationCFNotToHPLMN-Barred", "gsm_map.registrationCFNotToHPLMN-Barred",
18783         FT_BOOLEAN, 8, NULL, 0x40,
18784         "", HFILL }},
18785     { &hf_gsm_map_ODB_GeneralData_registrationInterzonalCF_Barred,
18786       { "registrationInterzonalCF-Barred", "gsm_map.registrationInterzonalCF-Barred",
18787         FT_BOOLEAN, 8, NULL, 0x20,
18788         "", HFILL }},
18789     { &hf_gsm_map_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred,
18790       { "registrationInterzonalCFNotToHPLMN-Barred", "gsm_map.registrationInterzonalCFNotToHPLMN-Barred",
18791         FT_BOOLEAN, 8, NULL, 0x10,
18792         "", HFILL }},
18793     { &hf_gsm_map_ODB_GeneralData_registrationInternationalCF_Barred,
18794       { "registrationInternationalCF-Barred", "gsm_map.registrationInternationalCF-Barred",
18795         FT_BOOLEAN, 8, NULL, 0x08,
18796         "", HFILL }},
18797     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType1,
18798       { "plmn-SpecificBarringType1", "gsm_map.plmn-SpecificBarringType1",
18799         FT_BOOLEAN, 8, NULL, 0x80,
18800         "", HFILL }},
18801     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType2,
18802       { "plmn-SpecificBarringType2", "gsm_map.plmn-SpecificBarringType2",
18803         FT_BOOLEAN, 8, NULL, 0x40,
18804         "", HFILL }},
18805     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType3,
18806       { "plmn-SpecificBarringType3", "gsm_map.plmn-SpecificBarringType3",
18807         FT_BOOLEAN, 8, NULL, 0x20,
18808         "", HFILL }},
18809     { &hf_gsm_map_ODB_HPLMN_Data_plmn_SpecificBarringType4,
18810       { "plmn-SpecificBarringType4", "gsm_map.plmn-SpecificBarringType4",
18811         FT_BOOLEAN, 8, NULL, 0x10,
18812         "", HFILL }},
18813     { &hf_gsm_map_AccessRestrictionData_utranNotAllowed,
18814       { "utranNotAllowed", "gsm_map.utranNotAllowed",
18815         FT_BOOLEAN, 8, NULL, 0x80,
18816         "", HFILL }},
18817     { &hf_gsm_map_AccessRestrictionData_geranNotAllowed,
18818       { "geranNotAllowed", "gsm_map.geranNotAllowed",
18819         FT_BOOLEAN, 8, NULL, 0x40,
18820         "", HFILL }},
18821     { &hf_gsm_map_SpecificCSI_Withdraw_o_csi,
18822       { "o-csi", "gsm_map.o-csi",
18823         FT_BOOLEAN, 8, NULL, 0x80,
18824         "", HFILL }},
18825     { &hf_gsm_map_SpecificCSI_Withdraw_ss_csi,
18826       { "ss-csi", "gsm_map.ss-csi",
18827         FT_BOOLEAN, 8, NULL, 0x40,
18828         "", HFILL }},
18829     { &hf_gsm_map_SpecificCSI_Withdraw_tif_csi,
18830       { "tif-csi", "gsm_map.tif-csi",
18831         FT_BOOLEAN, 8, NULL, 0x20,
18832         "", HFILL }},
18833     { &hf_gsm_map_SpecificCSI_Withdraw_d_csi,
18834       { "d-csi", "gsm_map.d-csi",
18835         FT_BOOLEAN, 8, NULL, 0x10,
18836         "", HFILL }},
18837     { &hf_gsm_map_SpecificCSI_Withdraw_vt_csi,
18838       { "vt-csi", "gsm_map.vt-csi",
18839         FT_BOOLEAN, 8, NULL, 0x08,
18840         "", HFILL }},
18841     { &hf_gsm_map_SpecificCSI_Withdraw_mo_sms_csi,
18842       { "mo-sms-csi", "gsm_map.mo-sms-csi",
18843         FT_BOOLEAN, 8, NULL, 0x04,
18844         "", HFILL }},
18845     { &hf_gsm_map_SpecificCSI_Withdraw_m_csi,
18846       { "m-csi", "gsm_map.m-csi",
18847         FT_BOOLEAN, 8, NULL, 0x02,
18848         "", HFILL }},
18849     { &hf_gsm_map_SpecificCSI_Withdraw_gprs_csi,
18850       { "gprs-csi", "gsm_map.gprs-csi",
18851         FT_BOOLEAN, 8, NULL, 0x01,
18852         "", HFILL }},
18853     { &hf_gsm_map_SpecificCSI_Withdraw_t_csi,
18854       { "t-csi", "gsm_map.t-csi",
18855         FT_BOOLEAN, 8, NULL, 0x80,
18856         "", HFILL }},
18857     { &hf_gsm_map_SpecificCSI_Withdraw_mt_sms_csi,
18858       { "mt-sms-csi", "gsm_map.mt-sms-csi",
18859         FT_BOOLEAN, 8, NULL, 0x40,
18860         "", HFILL }},
18861     { &hf_gsm_map_SpecificCSI_Withdraw_mg_csi,
18862       { "mg-csi", "gsm_map.mg-csi",
18863         FT_BOOLEAN, 8, NULL, 0x20,
18864         "", HFILL }},
18865     { &hf_gsm_map_SpecificCSI_Withdraw_o_IM_CSI,
18866       { "o-IM-CSI", "gsm_map.o-IM-CSI",
18867         FT_BOOLEAN, 8, NULL, 0x10,
18868         "", HFILL }},
18869     { &hf_gsm_map_SpecificCSI_Withdraw_d_IM_CSI,
18870       { "d-IM-CSI", "gsm_map.d-IM-CSI",
18871         FT_BOOLEAN, 8, NULL, 0x08,
18872         "", HFILL }},
18873     { &hf_gsm_map_SpecificCSI_Withdraw_vt_IM_CSI,
18874       { "vt-IM-CSI", "gsm_map.vt-IM-CSI",
18875         FT_BOOLEAN, 8, NULL, 0x04,
18876         "", HFILL }},
18877     { &hf_gsm_map_AllowedServices_firstServiceAllowed,
18878       { "firstServiceAllowed", "gsm_map.firstServiceAllowed",
18879         FT_BOOLEAN, 8, NULL, 0x80,
18880         "", HFILL }},
18881     { &hf_gsm_map_AllowedServices_secondServiceAllowed,
18882       { "secondServiceAllowed", "gsm_map.secondServiceAllowed",
18883         FT_BOOLEAN, 8, NULL, 0x40,
18884         "", HFILL }},
18885     { &hf_gsm_map_ServiceIndicator_clir_invoked,
18886       { "clir-invoked", "gsm_map.clir-invoked",
18887         FT_BOOLEAN, 8, NULL, 0x80,
18888         "", HFILL }},
18889     { &hf_gsm_map_ServiceIndicator_camel_invoked,
18890       { "camel-invoked", "gsm_map.camel-invoked",
18891         FT_BOOLEAN, 8, NULL, 0x40,
18892         "", HFILL }},
18893     { &hf_gsm_map_T_mw_Status_scAddressNotIncluded,
18894       { "scAddressNotIncluded", "gsm_map.scAddressNotIncluded",
18895         FT_BOOLEAN, 8, NULL, 0x80,
18896         "", HFILL }},
18897     { &hf_gsm_map_T_mw_Status_mnrfSet,
18898       { "mnrfSet", "gsm_map.mnrfSet",
18899         FT_BOOLEAN, 8, NULL, 0x40,
18900         "", HFILL }},
18901     { &hf_gsm_map_T_mw_Status_mcefSet,
18902       { "mcefSet", "gsm_map.mcefSet",
18903         FT_BOOLEAN, 8, NULL, 0x20,
18904         "", HFILL }},
18905     { &hf_gsm_map_T_mw_Status_mnrgSet,
18906       { "mnrgSet", "gsm_map.mnrgSet",
18907         FT_BOOLEAN, 8, NULL, 0x10,
18908         "", HFILL }},
18909     { &hf_gsm_map_OfferedCamel4CSIs_o_csi,
18910       { "o-csi", "gsm_map.o-csi",
18911         FT_BOOLEAN, 8, NULL, 0x80,
18912         "", HFILL }},
18913     { &hf_gsm_map_OfferedCamel4CSIs_d_csi,
18914       { "d-csi", "gsm_map.d-csi",
18915         FT_BOOLEAN, 8, NULL, 0x40,
18916         "", HFILL }},
18917     { &hf_gsm_map_OfferedCamel4CSIs_vt_csi,
18918       { "vt-csi", "gsm_map.vt-csi",
18919         FT_BOOLEAN, 8, NULL, 0x20,
18920         "", HFILL }},
18921     { &hf_gsm_map_OfferedCamel4CSIs_t_csi,
18922       { "t-csi", "gsm_map.t-csi",
18923         FT_BOOLEAN, 8, NULL, 0x10,
18924         "", HFILL }},
18925     { &hf_gsm_map_OfferedCamel4CSIs_mt_sms_csi,
18926       { "mt-sms-csi", "gsm_map.mt-sms-csi",
18927         FT_BOOLEAN, 8, NULL, 0x08,
18928         "", HFILL }},
18929     { &hf_gsm_map_OfferedCamel4CSIs_mg_csi,
18930       { "mg-csi", "gsm_map.mg-csi",
18931         FT_BOOLEAN, 8, NULL, 0x04,
18932         "", HFILL }},
18933     { &hf_gsm_map_OfferedCamel4CSIs_psi_enhancements,
18934       { "psi-enhancements", "gsm_map.psi-enhancements",
18935         FT_BOOLEAN, 8, NULL, 0x02,
18936         "", HFILL }},
18937     { &hf_gsm_map_OfferedCamel4Functionalities_initiateCallAttempt,
18938       { "initiateCallAttempt", "gsm_map.initiateCallAttempt",
18939         FT_BOOLEAN, 8, NULL, 0x80,
18940         "", HFILL }},
18941     { &hf_gsm_map_OfferedCamel4Functionalities_splitLeg,
18942       { "splitLeg", "gsm_map.splitLeg",
18943         FT_BOOLEAN, 8, NULL, 0x40,
18944         "", HFILL }},
18945     { &hf_gsm_map_OfferedCamel4Functionalities_moveLeg,
18946       { "moveLeg", "gsm_map.moveLeg",
18947         FT_BOOLEAN, 8, NULL, 0x20,
18948         "", HFILL }},
18949     { &hf_gsm_map_OfferedCamel4Functionalities_disconnectLeg,
18950       { "disconnectLeg", "gsm_map.disconnectLeg",
18951         FT_BOOLEAN, 8, NULL, 0x10,
18952         "", HFILL }},
18953     { &hf_gsm_map_OfferedCamel4Functionalities_entityReleased,
18954       { "entityReleased", "gsm_map.entityReleased",
18955         FT_BOOLEAN, 8, NULL, 0x08,
18956         "", HFILL }},
18957     { &hf_gsm_map_OfferedCamel4Functionalities_dfc_WithArgument,
18958       { "dfc-WithArgument", "gsm_map.dfc-WithArgument",
18959         FT_BOOLEAN, 8, NULL, 0x04,
18960         "", HFILL }},
18961     { &hf_gsm_map_OfferedCamel4Functionalities_playTone,
18962       { "playTone", "gsm_map.playTone",
18963         FT_BOOLEAN, 8, NULL, 0x02,
18964         "", HFILL }},
18965     { &hf_gsm_map_OfferedCamel4Functionalities_dtmf_MidCall,
18966       { "dtmf-MidCall", "gsm_map.dtmf-MidCall",
18967         FT_BOOLEAN, 8, NULL, 0x01,
18968         "", HFILL }},
18969     { &hf_gsm_map_OfferedCamel4Functionalities_chargingIndicator,
18970       { "chargingIndicator", "gsm_map.chargingIndicator",
18971         FT_BOOLEAN, 8, NULL, 0x80,
18972         "", HFILL }},
18973     { &hf_gsm_map_OfferedCamel4Functionalities_alertingDP,
18974       { "alertingDP", "gsm_map.alertingDP",
18975         FT_BOOLEAN, 8, NULL, 0x40,
18976         "", HFILL }},
18977     { &hf_gsm_map_OfferedCamel4Functionalities_locationAtAlerting,
18978       { "locationAtAlerting", "gsm_map.locationAtAlerting",
18979         FT_BOOLEAN, 8, NULL, 0x20,
18980         "", HFILL }},
18981     { &hf_gsm_map_OfferedCamel4Functionalities_changeOfPositionDP,
18982       { "changeOfPositionDP", "gsm_map.changeOfPositionDP",
18983         FT_BOOLEAN, 8, NULL, 0x10,
18984         "", HFILL }},
18985     { &hf_gsm_map_OfferedCamel4Functionalities_or_Interactions,
18986       { "or-Interactions", "gsm_map.or-Interactions",
18987         FT_BOOLEAN, 8, NULL, 0x08,
18988         "", HFILL }},
18989     { &hf_gsm_map_OfferedCamel4Functionalities_warningToneEnhancements,
18990       { "warningToneEnhancements", "gsm_map.warningToneEnhancements",
18991         FT_BOOLEAN, 8, NULL, 0x04,
18992         "", HFILL }},
18993     { &hf_gsm_map_OfferedCamel4Functionalities_cf_Enhancements,
18994       { "cf-Enhancements", "gsm_map.cf-Enhancements",
18995         FT_BOOLEAN, 8, NULL, 0x02,
18996         "", HFILL }},
18997     { &hf_gsm_map_OfferedCamel4Functionalities_subscribedEnhancedDialledServices,
18998       { "subscribedEnhancedDialledServices", "gsm_map.subscribedEnhancedDialledServices",
18999         FT_BOOLEAN, 8, NULL, 0x01,
19000         "", HFILL }},
19001     { &hf_gsm_map_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices,
19002       { "servingNetworkEnhancedDialledServices", "gsm_map.servingNetworkEnhancedDialledServices",
19003         FT_BOOLEAN, 8, NULL, 0x80,
19004         "", HFILL }},
19005     { &hf_gsm_map_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP,
19006       { "criteriaForChangeOfPositionDP", "gsm_map.criteriaForChangeOfPositionDP",
19007         FT_BOOLEAN, 8, NULL, 0x40,
19008         "", HFILL }},
19009     { &hf_gsm_map_OfferedCamel4Functionalities_serviceChangeDP,
19010       { "serviceChangeDP", "gsm_map.serviceChangeDP",
19011         FT_BOOLEAN, 8, NULL, 0x20,
19012         "", HFILL }},
19013     { &hf_gsm_map_DeferredLocationEventType_msAvailable,
19014       { "msAvailable", "gsm_map.msAvailable",
19015         FT_BOOLEAN, 8, NULL, 0x80,
19016         "", HFILL }},
19017     { &hf_gsm_map_DeferredLocationEventType_enteringIntoArea,
19018       { "enteringIntoArea", "gsm_map.enteringIntoArea",
19019         FT_BOOLEAN, 8, NULL, 0x40,
19020         "", HFILL }},
19021     { &hf_gsm_map_DeferredLocationEventType_leavingFromArea,
19022       { "leavingFromArea", "gsm_map.leavingFromArea",
19023         FT_BOOLEAN, 8, NULL, 0x20,
19024         "", HFILL }},
19025     { &hf_gsm_map_DeferredLocationEventType_beingInsideArea,
19026       { "beingInsideArea", "gsm_map.beingInsideArea",
19027         FT_BOOLEAN, 8, NULL, 0x10,
19028         "", HFILL }},
19029     { &hf_gsm_map_SupportedGADShapes_ellipsoidPoint,
19030       { "ellipsoidPoint", "gsm_map.ellipsoidPoint",
19031         FT_BOOLEAN, 8, NULL, 0x80,
19032         "", HFILL }},
19033     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle,
19034       { "ellipsoidPointWithUncertaintyCircle", "gsm_map.ellipsoidPointWithUncertaintyCircle",
19035         FT_BOOLEAN, 8, NULL, 0x40,
19036         "", HFILL }},
19037     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse,
19038       { "ellipsoidPointWithUncertaintyEllipse", "gsm_map.ellipsoidPointWithUncertaintyEllipse",
19039         FT_BOOLEAN, 8, NULL, 0x20,
19040         "", HFILL }},
19041     { &hf_gsm_map_SupportedGADShapes_polygon,
19042       { "polygon", "gsm_map.polygon",
19043         FT_BOOLEAN, 8, NULL, 0x10,
19044         "", HFILL }},
19045     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitude,
19046       { "ellipsoidPointWithAltitude", "gsm_map.ellipsoidPointWithAltitude",
19047         FT_BOOLEAN, 8, NULL, 0x08,
19048         "", HFILL }},
19049     { &hf_gsm_map_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid,
19050       { "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", "gsm_map.ellipsoidPointWithAltitudeAndUncertaintyElipsoid",
19051         FT_BOOLEAN, 8, NULL, 0x04,
19052         "", HFILL }},
19053     { &hf_gsm_map_SupportedGADShapes_ellipsoidArc,
19054       { "ellipsoidArc", "gsm_map.ellipsoidArc",
19055         FT_BOOLEAN, 8, NULL, 0x02,
19056         "", HFILL }},
19057
19058 /*--- End of included file: packet-gsm_map-hfarr.c ---*/
19059 #line 1748 "packet-gsm_map-template.c"
19060   };
19061
19062   /* List of subtrees */
19063   static gint *ett[] = {
19064     &ett_gsm_map,
19065     &ett_gsm_map_InvokeId,
19066     &ett_gsm_map_InvokePDU,
19067     &ett_gsm_map_ReturnResultPDU,
19068         &ett_gsm_map_ReturnErrorPDU,
19069     &ett_gsm_map_ReturnResult_result,
19070         &ett_gsm_map_ReturnError_result,
19071     &ett_gsm_map_GSMMAPPDU,
19072         &ett_gsm_map_ext_qos_subscribed,
19073
19074 /*--- Included file: packet-gsm_map-ettarr.c ---*/
19075 #line 1 "packet-gsm_map-ettarr.c"
19076     &ett_gsm_map_Component,
19077     &ett_gsm_map_Invoke,
19078     &ett_gsm_map_ReturnResult,
19079     &ett_gsm_map_T_resultretres,
19080     &ett_gsm_map_ReturnError,
19081     &ett_gsm_map_Reject,
19082     &ett_gsm_map_T_invokeIDRej,
19083     &ett_gsm_map_T_problem,
19084     &ett_gsm_map_OPERATION,
19085     &ett_gsm_map_ERROR,
19086     &ett_gsm_map_Bss_APDU,
19087     &ett_gsm_map_SupportedCamelPhases,
19088     &ett_gsm_map_UpdateLocationArg,
19089     &ett_gsm_map_UpdateLocationRes,
19090     &ett_gsm_map_VLR_Capability,
19091     &ett_gsm_map_SuperChargerInfo,
19092     &ett_gsm_map_SupportedLCS_CapabilitySets,
19093     &ett_gsm_map_ADD_Info,
19094     &ett_gsm_map_PrivateExtensionList,
19095     &ett_gsm_map_PrivateExtension,
19096     &ett_gsm_map_SLR_ArgExtensionContainer,
19097     &ett_gsm_map_PcsExtensions,
19098     &ett_gsm_map_SLR_Arg_PCS_Extensions,
19099     &ett_gsm_map_CancelLocationArg,
19100     &ett_gsm_map_CancelLocationArgV2,
19101     &ett_gsm_map_CancelLocationRes,
19102     &ett_gsm_map_PurgeMSArg,
19103     &ett_gsm_map_PurgeMSRes,
19104     &ett_gsm_map_SendIdentificationArg,
19105     &ett_gsm_map_SendIdentificationRes,
19106     &ett_gsm_map_AuthenticationSetList,
19107     &ett_gsm_map_TripletList,
19108     &ett_gsm_map_QuintupletList,
19109     &ett_gsm_map_AuthenticationTriplet,
19110     &ett_gsm_map_AuthenticationQuintuplet,
19111     &ett_gsm_map_CurrentSecurityContext,
19112     &ett_gsm_map_GSM_SecurityContextData,
19113     &ett_gsm_map_UMTS_SecurityContextData,
19114     &ett_gsm_map_PrepareHO_Arg,
19115     &ett_gsm_map_PrepareHO_ArgV3,
19116     &ett_gsm_map_BSSMAP_ServiceHandoverList,
19117     &ett_gsm_map_BSSMAP_ServiceHandoverInfo,
19118     &ett_gsm_map_RadioResourceList,
19119     &ett_gsm_map_RadioResource,
19120     &ett_gsm_map_PrepareHO_Res,
19121     &ett_gsm_map_PrepareHO_ResV3,
19122     &ett_gsm_map_SelectedUMTS_Algorithms,
19123     &ett_gsm_map_ChosenRadioResourceInformation,
19124     &ett_gsm_map_SendEndSignalArgV3,
19125     &ett_gsm_map_SendEndSignalRes,
19126     &ett_gsm_map_RelocationNumberList,
19127     &ett_gsm_map_RelocationNumber,
19128     &ett_gsm_map_ProcessAccessSignallingArgV3,
19129     &ett_gsm_map_SupportedCodecsList,
19130     &ett_gsm_map_CodecList,
19131     &ett_gsm_map_ForwardAccessSignallingArgV3,
19132     &ett_gsm_map_AllowedUMTS_Algorithms,
19133     &ett_gsm_map_PrepareSubsequentHOArg,
19134     &ett_gsm_map_PrepareSubsequentHOArgV3,
19135     &ett_gsm_map_PrepareSubsequentHOResV3,
19136     &ett_gsm_map_SendAuthenticationInfoArgV2,
19137     &ett_gsm_map_SendAuthenticationInfoRes,
19138     &ett_gsm_map_SendAuthenticationInfoRes_item,
19139     &ett_gsm_map_SendAuthenticationInfoResV3,
19140     &ett_gsm_map_Re_synchronisationInfo,
19141     &ett_gsm_map_CheckIMEIArgV2,
19142     &ett_gsm_map_CheckIMEIRes,
19143     &ett_gsm_map_RequestedEquipmentInfo,
19144     &ett_gsm_map_UESBI_Iu,
19145     &ett_gsm_map_BasicService,
19146     &ett_gsm_map_BasicServiceGroupList,
19147     &ett_gsm_map_ODB_GeneralData,
19148     &ett_gsm_map_ODB_HPLMN_Data,
19149     &ett_gsm_map_BcsmCamelTDPData,
19150     &ett_gsm_map_BcsmCamelTDPDataList,
19151     &ett_gsm_map_O_CSI,
19152     &ett_gsm_map_O_BcsmCamelTDPDataList,
19153     &ett_gsm_map_O_BcsmCamelTDPData,
19154     &ett_gsm_map_InsertSubscriberDataArg,
19155     &ett_gsm_map_AccessRestrictionData,
19156     &ett_gsm_map_LCSInformation,
19157     &ett_gsm_map_GMLC_List,
19158     &ett_gsm_map_GPRSDataList,
19159     &ett_gsm_map_PDP_Context,
19160     &ett_gsm_map_GPRSSubscriptionData,
19161     &ett_gsm_map_SGSN_CAMEL_SubscriptionInfo,
19162     &ett_gsm_map_GPRS_CSI,
19163     &ett_gsm_map_GPRS_CamelTDPDataList,
19164     &ett_gsm_map_GPRS_CamelTDPData,
19165     &ett_gsm_map_LSADataList,
19166     &ett_gsm_map_LSAData,
19167     &ett_gsm_map_LSAInformation,
19168     &ett_gsm_map_InsertSubscriberDataRes,
19169     &ett_gsm_map_DeleteSubscriberDataArg,
19170     &ett_gsm_map_DeleteSubscriberDataRes,
19171     &ett_gsm_map_SpecificCSI_Withdraw,
19172     &ett_gsm_map_GPRSSubscriptionDataWithdraw,
19173     &ett_gsm_map_ContextIdList,
19174     &ett_gsm_map_LSAInformationWithdraw,
19175     &ett_gsm_map_LSAIdentityList,
19176     &ett_gsm_map_BasicServiceList,
19177     &ett_gsm_map_VlrCamelSubscriptionInfo,
19178     &ett_gsm_map_MT_smsCAMELTDP_CriteriaList,
19179     &ett_gsm_map_MT_smsCAMELTDP_Criteria,
19180     &ett_gsm_map_TPDU_TypeCriterion,
19181     &ett_gsm_map_D_CSI,
19182     &ett_gsm_map_DP_AnalysedInfoCriteriaList,
19183     &ett_gsm_map_DP_AnalysedInfoCriterium,
19184     &ett_gsm_map_SS_CSI,
19185     &ett_gsm_map_SS_CamelData,
19186     &ett_gsm_map_MG_CSI,
19187     &ett_gsm_map_BearerServiceList,
19188     &ett_gsm_map_TeleserviceList,
19189     &ett_gsm_map_Ext_SS_InfoList,
19190     &ett_gsm_map_Ext_SS_Info,
19191     &ett_gsm_map_Ext_ForwInfo,
19192     &ett_gsm_map_Ext_ForwFeatureList,
19193     &ett_gsm_map_Ext_ForwFeature,
19194     &ett_gsm_map_Ext_CallBarInfo,
19195     &ett_gsm_map_Ext_CallBarFeatureList,
19196     &ett_gsm_map_Ext_CallBarringFeature,
19197     &ett_gsm_map_ZoneCodeList,
19198     &ett_gsm_map_EMLPP_Info,
19199     &ett_gsm_map_CUG_Info,
19200     &ett_gsm_map_CUG_SubscriptionList,
19201     &ett_gsm_map_CUG_Subscription,
19202     &ett_gsm_map_CUG_FeatureList,
19203     &ett_gsm_map_Ext_BasicServiceGroupList,
19204     &ett_gsm_map_CUG_Feature,
19205     &ett_gsm_map_Ext_SS_Data,
19206     &ett_gsm_map_LCS_PrivacyExceptionList,
19207     &ett_gsm_map_LCS_PrivacyClass,
19208     &ett_gsm_map_ExternalClientList,
19209     &ett_gsm_map_PLMNClientList,
19210     &ett_gsm_map_Ext_ExternalClientList,
19211     &ett_gsm_map_ExternalClient,
19212     &ett_gsm_map_ServiceTypeList,
19213     &ett_gsm_map_ServiceType,
19214     &ett_gsm_map_MOLR_List,
19215     &ett_gsm_map_MOLR_Class,
19216     &ett_gsm_map_CallBarringFeatureList,
19217     &ett_gsm_map_CallBarringFeature,
19218     &ett_gsm_map_ForwardingFeatureList,
19219     &ett_gsm_map_ForwardingFeature,
19220     &ett_gsm_map_DestinationNumberCriteria,
19221     &ett_gsm_map_DestinationNumberList,
19222     &ett_gsm_map_DestinationNumberLengthList,
19223     &ett_gsm_map_ForwardingInfo,
19224     &ett_gsm_map_CallBarringInfo,
19225     &ett_gsm_map_MC_SS_Info,
19226     &ett_gsm_map_ResetArg,
19227     &ett_gsm_map_RestoreDataArg,
19228     &ett_gsm_map_RestoreDataRes,
19229     &ett_gsm_map_VBSDataList,
19230     &ett_gsm_map_VGCSDataList,
19231     &ett_gsm_map_VoiceGroupCallData,
19232     &ett_gsm_map_VoiceBroadcastData,
19233     &ett_gsm_map_ActivateTraceModeArg,
19234     &ett_gsm_map_ActivateTraceModeRes,
19235     &ett_gsm_map_DeactivateTraceModeArg,
19236     &ett_gsm_map_DeactivateTraceModeRes,
19237     &ett_gsm_map_SendRoutingInfoArg,
19238     &ett_gsm_map_SendRoutingInfoRes,
19239     &ett_gsm_map_ExternalSignalInfo,
19240     &ett_gsm_map_Ext_ExternalSignalInfo,
19241     &ett_gsm_map_AccessNetworkSignalInfo,
19242     &ett_gsm_map_CamelInfo,
19243     &ett_gsm_map_Identity,
19244     &ett_gsm_map_IMSI_WithLMSI,
19245     &ett_gsm_map_SubscriberId,
19246     &ett_gsm_map_HLR_List,
19247     &ett_gsm_map_SS_List,
19248     &ett_gsm_map_NAEA_PreferredCI,
19249     &ett_gsm_map_SubscriberIdentity,
19250     &ett_gsm_map_LCSClientExternalID,
19251     &ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
19252     &ett_gsm_map_AllowedServices,
19253     &ett_gsm_map_CCBS_Indicators,
19254     &ett_gsm_map_RoutingInfo,
19255     &ett_gsm_map_ExtendedRoutingInfo,
19256     &ett_gsm_map_CamelRoutingInfo,
19257     &ett_gsm_map_GmscCamelSubscriptionInfo,
19258     &ett_gsm_map_LocationInformation,
19259     &ett_gsm_map_LocationInformationGPRS,
19260     &ett_gsm_map_SubscriberState,
19261     &ett_gsm_map_PS_SubscriberState,
19262     &ett_gsm_map_PDP_ContextInfoList,
19263     &ett_gsm_map_PDP_ContextInfo,
19264     &ett_gsm_map_CUG_CheckInfo,
19265     &ett_gsm_map_ForwardingData,
19266     &ett_gsm_map_ProvideRoamingNumberArg,
19267     &ett_gsm_map_ProvideRoamingNumberRes,
19268     &ett_gsm_map_ResumeCallHandlingArg,
19269     &ett_gsm_map_ResumeCallHandlingRes,
19270     &ett_gsm_map_UU_Data,
19271     &ett_gsm_map_ProvideSIWFSNumberArg,
19272     &ett_gsm_map_ProvideSIWFSNumberRes,
19273     &ett_gsm_map_SIWFSSignallingModifyArg,
19274     &ett_gsm_map_SIWFSSignallingModifyRes,
19275     &ett_gsm_map_SetReportingStateArg,
19276     &ett_gsm_map_SetReportingStateRes,
19277     &ett_gsm_map_StatusReportArg,
19278     &ett_gsm_map_StatusReportRes,
19279     &ett_gsm_map_EventReportData,
19280     &ett_gsm_map_CallReportData,
19281     &ett_gsm_map_IST_AlertArg,
19282     &ett_gsm_map_IST_AlertRes,
19283     &ett_gsm_map_IST_CommandArg,
19284     &ett_gsm_map_IST_CommandRes,
19285     &ett_gsm_map_ReleaseResourcesArg,
19286     &ett_gsm_map_ReleaseResourcesRes,
19287     &ett_gsm_map_RemoteUserFreeArg,
19288     &ett_gsm_map_RemoteUserFreeRes,
19289     &ett_gsm_map_SS_Data,
19290     &ett_gsm_map_SS_SubscriptionOption,
19291     &ett_gsm_map_RegisterSS_Arg,
19292     &ett_gsm_map_SS_Info,
19293     &ett_gsm_map_InterrogateSS_Res,
19294     &ett_gsm_map_Ussd_Arg,
19295     &ett_gsm_map_Ussd_Res,
19296     &ett_gsm_map_AuthenticationFailureReportArg,
19297     &ett_gsm_map_AuthenticationFailureReportRes,
19298     &ett_gsm_map_RegisterCC_EntryArg,
19299     &ett_gsm_map_RegisterCC_EntryRes,
19300     &ett_gsm_map_CCBS_Data,
19301     &ett_gsm_map_ServiceIndicator,
19302     &ett_gsm_map_EraseCC_EntryArg,
19303     &ett_gsm_map_EraseCC_EntryRes,
19304     &ett_gsm_map_RoutingInfoForSMArg,
19305     &ett_gsm_map_RoutingInfoForSM_Res,
19306     &ett_gsm_map_LocationInfoWithLMSI,
19307     &ett_gsm_map_Additional_Number,
19308     &ett_gsm_map_Mo_forwardSM_Arg,
19309     &ett_gsm_map_Mo_forwardSM_Res,
19310     &ett_gsm_map_Sm_RP_OA,
19311     &ett_gsm_map_Sm_RP_DA,
19312     &ett_gsm_map_Mt_forwardSM_Arg,
19313     &ett_gsm_map_Mt_forwardSM_Res,
19314     &ett_gsm_map_ReportSM_DeliveryStatusArg,
19315     &ett_gsm_map_ReportSM_DeliveryStatusRes,
19316     &ett_gsm_map_InformServiceCentreArg,
19317     &ett_gsm_map_T_mw_Status,
19318     &ett_gsm_map_AlertServiceCentreArg,
19319     &ett_gsm_map_ReadyForSM_Arg,
19320     &ett_gsm_map_ReadyForSM_Res,
19321     &ett_gsm_map_ProvideSubscriberInfoArg,
19322     &ett_gsm_map_ProvideSubscriberInfoRes,
19323     &ett_gsm_map_SubscriberInfo,
19324     &ett_gsm_map_MNPInfoRes,
19325     &ett_gsm_map_GPRSMSClass,
19326     &ett_gsm_map_RequestedInfo,
19327     &ett_gsm_map_AnyTimeInterrogationArg,
19328     &ett_gsm_map_AnyTimeInterrogationRes,
19329     &ett_gsm_map_AnyTimeSubscriptionInterrogationArg,
19330     &ett_gsm_map_AnyTimeSubscriptionInterrogationRes,
19331     &ett_gsm_map_RequestedSubscriptionInfo,
19332     &ett_gsm_map_CallForwardingData,
19333     &ett_gsm_map_CallBarringData,
19334     &ett_gsm_map_BasicServiceCode,
19335     &ett_gsm_map_O_BcsmCamelTDPCriteriaList,
19336     &ett_gsm_map_T_BCSM_CAMEL_TDP_CriteriaList,
19337     &ett_gsm_map_O_BcsmCamelTDP_Criteria,
19338     &ett_gsm_map_T_BCSM_CAMEL_TDP_Criteria,
19339     &ett_gsm_map_OfferedCamel4CSIs,
19340     &ett_gsm_map_OfferedCamel4Functionalities,
19341     &ett_gsm_map_SS_ForBS_Code,
19342     &ett_gsm_map_GenericServiceInfo,
19343     &ett_gsm_map_CCBS_FeatureList,
19344     &ett_gsm_map_CCBS_Feature,
19345     &ett_gsm_map_T_CauseValueCriteria,
19346     &ett_gsm_map_O_CauseValueCriteria,
19347     &ett_gsm_map_BasicServiceCriteria,
19348     &ett_gsm_map_AnyTimeModificationArg,
19349     &ett_gsm_map_AnyTimeModificationRes,
19350     &ett_gsm_map_ModificationRequestFor_CF_Info,
19351     &ett_gsm_map_ModificationRequestFor_CB_Info,
19352     &ett_gsm_map_ModificationRequestFor_ODB_data,
19353     &ett_gsm_map_ModificationRequestFor_CSI,
19354     &ett_gsm_map_Ext_SS_InfoFor_CSE,
19355     &ett_gsm_map_NoteSubscriberDataModifiedArg,
19356     &ett_gsm_map_NoteSubscriberDataModifiedRes,
19357     &ett_gsm_map_NoteMM_EventArg,
19358     &ett_gsm_map_NoteMM_EventRes,
19359     &ett_gsm_map_CAMEL_SubscriptionInfo,
19360     &ett_gsm_map_Ext_ForwardingInfoFor_CSE,
19361     &ett_gsm_map_Ext_BasicServiceCode,
19362     &ett_gsm_map_Ext_CallBarringInfoFor_CSE,
19363     &ett_gsm_map_ODB_Info,
19364     &ett_gsm_map_ODB_Data,
19365     &ett_gsm_map_M_CSI,
19366     &ett_gsm_map_SS_EventList,
19367     &ett_gsm_map_T_CSI,
19368     &ett_gsm_map_T_BcsmCamelTDPDataList,
19369     &ett_gsm_map_T_BcsmCamelTDPData,
19370     &ett_gsm_map_SMS_CSI,
19371     &ett_gsm_map_SMS_CAMEL_TDP_DataList,
19372     &ett_gsm_map_SMS_CAMEL_TDP_Data,
19373     &ett_gsm_map_MobilityTriggers,
19374     &ett_gsm_map_Ss_InvocationNotificationArg,
19375     &ett_gsm_map_T_ss_EventSpecification,
19376     &ett_gsm_map_Ss_InvocationNotificationRes,
19377     &ett_gsm_map_PrepareGroupCallArg,
19378     &ett_gsm_map_PrepareGroupCallRes,
19379     &ett_gsm_map_SendGroupCallEndSignalArg,
19380     &ett_gsm_map_SendGroupCallEndSignalRes,
19381     &ett_gsm_map_ProcessGroupCallSignallingArg,
19382     &ett_gsm_map_ForwardGroupCallSignallingArg,
19383     &ett_gsm_map_UpdateGprsLocationArg,
19384     &ett_gsm_map_UpdateGprsLocationRes,
19385     &ett_gsm_map_SGSN_Capability,
19386     &ett_gsm_map_SendRoutingInfoForGprsArg,
19387     &ett_gsm_map_SendRoutingInfoForGprsRes,
19388     &ett_gsm_map_FailureReportArg,
19389     &ett_gsm_map_FailureReportRes,
19390     &ett_gsm_map_NoteMsPresentForGprsArg,
19391     &ett_gsm_map_NoteMsPresentForGprsRes,
19392     &ett_gsm_map_ProvideSubscriberLocation_Arg,
19393     &ett_gsm_map_LocationType,
19394     &ett_gsm_map_DeferredLocationEventType,
19395     &ett_gsm_map_LCS_ClientID,
19396     &ett_gsm_map_LCSClientName,
19397     &ett_gsm_map_LCSRequestorID,
19398     &ett_gsm_map_LCS_QoS,
19399     &ett_gsm_map_ResponseTime,
19400     &ett_gsm_map_SupportedGADShapes,
19401     &ett_gsm_map_LCSCodeword,
19402     &ett_gsm_map_LCS_PrivacyCheck,
19403     &ett_gsm_map_AreaEventInfo,
19404     &ett_gsm_map_AreaDefinition,
19405     &ett_gsm_map_AreaList,
19406     &ett_gsm_map_Area,
19407     &ett_gsm_map_ProvideSubscriberLocation_Res,
19408     &ett_gsm_map_TargetMS,
19409     &ett_gsm_map_RoutingInfoForLCS_Arg,
19410     &ett_gsm_map_RoutingInfoForLCS_Res,
19411     &ett_gsm_map_LCSLocationInfo,
19412     &ett_gsm_map_SubscriberLocationReport_Arg,
19413     &ett_gsm_map_Deferredmt_lrData,
19414     &ett_gsm_map_SubscriberLocationReport_Res,
19415     &ett_gsm_map_SecureTransportArg,
19416     &ett_gsm_map_SecureTransportRes,
19417     &ett_gsm_map_SecurityHeader,
19418     &ett_gsm_map_OriginalComponentIdentifier,
19419     &ett_gsm_map_OperationCode,
19420     &ett_gsm_map_ErrorCode,
19421     &ett_gsm_map_SystemFailureParam,
19422     &ett_gsm_map_T_extensibleSystemFailureParam,
19423     &ett_gsm_map_DataMissingParam,
19424     &ett_gsm_map_UnexpectedDataParam,
19425     &ett_gsm_map_FacilityNotSupParam,
19426     &ett_gsm_map_OR_NotAllowedParam,
19427     &ett_gsm_map_IncompatibleTerminalParam,
19428     &ett_gsm_map_ResourceLimitationParam,
19429     &ett_gsm_map_UnknownSubscriberParam,
19430     &ett_gsm_map_NumberChangedParam,
19431     &ett_gsm_map_UnidentifiedSubParam,
19432     &ett_gsm_map_RoamingNotAllowedParam,
19433     &ett_gsm_map_IllegalSubscriberParam,
19434     &ett_gsm_map_IllegalEquipmentParam,
19435     &ett_gsm_map_BearerServNotProvParam,
19436     &ett_gsm_map_TeleservNotProvParam,
19437     &ett_gsm_map_TracingBufferFullParam,
19438     &ett_gsm_map_NoRoamingNbParam,
19439     &ett_gsm_map_AbsentSubscriberParam,
19440     &ett_gsm_map_BusySubscriberParam,
19441     &ett_gsm_map_NoSubscriberReplyParam,
19442     &ett_gsm_map_ForwardingViolationParam,
19443     &ett_gsm_map_ForwardingFailedParam,
19444     &ett_gsm_map_ATI_NotAllowedParam,
19445     &ett_gsm_map_ATSI_NotAllowedParam,
19446     &ett_gsm_map_ATM_NotAllowedParam,
19447     &ett_gsm_map_IllegalSS_OperationParam,
19448     &ett_gsm_map_SS_NotAvailableParam,
19449     &ett_gsm_map_SS_SubscriptionViolationParam,
19450     &ett_gsm_map_InformationNotAvailableParam,
19451     &ett_gsm_map_SubBusyForMT_SMS_Param,
19452     &ett_gsm_map_CallBarredParam,
19453     &ett_gsm_map_ExtensibleCallBarredParam,
19454     &ett_gsm_map_CUG_RejectParam,
19455     &ett_gsm_map_Or_NotAllowedParam,
19456     &ett_gsm_map_Cug_RejectParam,
19457     &ett_gsm_map_NoGroupCallNbParam,
19458     &ett_gsm_map_SS_IncompatibilityCause,
19459     &ett_gsm_map_ShortTermDenialParam,
19460     &ett_gsm_map_LongTermDenialParam,
19461     &ett_gsm_map_SM_DeliveryFailureCause,
19462     &ett_gsm_map_MessageWaitListFullParam,
19463     &ett_gsm_map_AbsentSubscriberSM_Param,
19464     &ett_gsm_map_UnauthorizedRequestingNetwork_Param,
19465     &ett_gsm_map_UnauthorizedLCSClient_Param,
19466     &ett_gsm_map_PositionMethodFailure_Param,
19467     &ett_gsm_map_UnknownOrUnreachableLCSClient_Param,
19468     &ett_gsm_map_MM_EventNotSupported_Param,
19469     &ett_gsm_map_TargetCellOutsideGCA_Param,
19470     &ett_gsm_map_SecureTransportErrorParam,
19471     &ett_gsm_map_ExtensionContainer,
19472
19473 /*--- End of included file: packet-gsm_map-ettarr.c ---*/
19474 #line 1762 "packet-gsm_map-template.c"
19475   };
19476
19477   /* Register protocol */
19478   proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
19479 /*XXX  register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map);*/
19480   /* Register fields and subtrees */
19481   proto_register_field_array(proto_gsm_map, hf, array_length(hf));
19482   proto_register_subtree_array(ett, array_length(ett));
19483
19484   sms_dissector_table = register_dissector_table("gsm_map.sms_tpdu", 
19485                                                  "GSM SMS TPDU", FT_UINT8,
19486                                                  BASE_DEC);
19487
19488   gsm_map_tap = register_tap("gsm_map");
19489   /*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)" );
19490    *
19491    * Register our configuration options, particularly our ssn:s
19492    * Set default SSNs
19493    */
19494   range_convert_str(&global_ssn_range, "6-9", MAX_SSN);
19495   ssn_range = range_empty();
19496
19497
19498   gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);
19499
19500   prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs",
19501                                   "TCAP Subsystem numbers used for GSM MAP",
19502                                   &global_ssn_range, MAX_SSN);
19503 }
19504
19505