Don't try to g_strdup() a null value. Fixes bug 128.
[metze/wireshark/wip.git] / epan / dissectors / packet-gsm_map.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
3 /* ./packet-gsm_map.c                                                         */
4 /* ../../tools/asn2eth.py -X -b -e -p gsm_map -c gsmmap.cnf -s packet-gsm_map-template GSMMAP.asn */
5
6 /* Input file: packet-gsm_map-template.c */
7
8 /* packet-gsm_map-template.c
9  * Routines for GSM MobileApplication packet dissection
10  * Copyright 2004, Anders Broman <anders.broman@ericsson.com>
11  * Based on the dissector by:
12  * Felix Fei <felix.fei [AT] utstar.com>
13  * and Michael Lum <mlum [AT] telostech.com>
14  *
15  * $Id$
16  *
17  * Ethereal - Network traffic analyzer
18  * By Gerald Combs <gerald@ethereal.com>
19  * Copyright 1998 Gerald Combs
20  *
21  * This program is free software; you can redistribute it and/or
22  * modify it under the terms of the GNU General Public License
23  * as published by the Free Software Foundation; either version 2
24  * of the License, or (at your option) any later version.
25  *
26  * This program is distributed in the hope that it will be useful,
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29  * GNU General Public License for more details.
30  *
31  * You should have received a copy of the GNU General Public License
32  * along with this program; if not, write to the Free Software
33  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
34  * References: ETSI TS 129 002
35  */
36
37 #ifdef HAVE_CONFIG_H
38 # include "config.h"
39 #endif
40
41 #include <glib.h>
42 #include <epan/packet.h>
43 #include <epan/prefs.h>
44 #include <epan/conversation.h>
45 #include <epan/tap.h>
46
47 #include <stdio.h>
48 #include <string.h>
49
50 #include "packet-ber.h"
51 #include "packet-q931.h"
52 #include "packet-gsm_map.h"
53
54 #define PNAME  "GSM_MobileAPplication"
55 #define PSNAME "GSM_MAP"
56 #define PFNAME "gsm_map"
57
58 /* Initialize the protocol and registered fields */
59 int proto_gsm_map = -1;
60 static int hf_gsm_map_invokeCmd = -1;             /* Opcode */
61 static int hf_gsm_map_invokeid = -1;              /* INTEGER */
62 static int hf_gsm_map_absent = -1;                /* NULL */
63 static int hf_gsm_map_invokeId = -1;              /* InvokeId */
64 static int hf_gsm_map_invoke = -1;                /* InvokePDU */
65 static int hf_gsm_map_returnResult = -1;          /* InvokePDU */
66 static int hf_gsm_map_returnResult_result = -1;
67 static int hf_gsm_map_returnError_result = -1;
68 static int hf_gsm_map_returnError = -1;
69 static int hf_gsm_map_local_errorCode = -1;
70 static int hf_gsm_map_global_errorCode_oid = -1;
71 static int hf_gsm_map_global_errorCode = -1;
72 static int hf_gsm_map_SendAuthenticationInfoArg = -1;
73 static int hf_gsm_map_SendAuthenticationInfoRes = -1;
74 static int hf_gsm_mapSendEndSignal = -1;
75 static int hf_gsm_map_getPassword = -1;  
76 static int hf_gsm_map_currentPassword = -1;
77 static int hf_gsm_map_extension = -1;
78 static int hf_gsm_map_nature_of_number = -1;
79 static int hf_gsm_map_number_plan = -1;
80 static int hf_gsm_map_misdn_digits = -1;
81 static int hf_gsm_map_servicecentreaddress_digits = -1;
82 static int hf_gsm_map_imsi_digits = -1;
83 static int hf_gsm_map_map_gmsc_address_digits = -1;
84 static int hf_gsm_map_map_RoamingNumber_digits = -1;
85 static int hf_gsm_map_map_hlr_number_digits = -1;
86 static int hf_gsm_map_map_ForwardedToNumber_digits = -1;
87 static int hf_gsm_map_Ss_Status_unused = -1;
88 static int hf_gsm_map_Ss_Status_q_bit = -1;
89 static int hf_gsm_map_Ss_Status_p_bit = -1;
90 static int hf_gsm_map_Ss_Status_r_bit = -1;
91 static int hf_gsm_map_Ss_Status_a_bit = -1;
92
93
94 /*--- Included file: packet-gsm_map-hf.c ---*/
95
96 static int hf_gsm_map_protocolId = -1;            /* ProtocolId */
97 static int hf_gsm_map_signalInfo = -1;            /* SignalInfo */
98 static int hf_gsm_map_extensionContainer = -1;    /* ExtensionContainer */
99 static int hf_gsm_map_accessNetworkProtocolId = -1;  /* T_accessNetworkProtocolId */
100 static int hf_gsm_map_signalInfo2 = -1;           /* SignalInfo2 */
101 static int hf_gsm_map_supportedCamelPhases = -1;  /* SupportedCamelPhases */
102 static int hf_gsm_map_solsaSupportIndicator = -1;  /* NULL */
103 static int hf_gsm_map_istSupportIndicator = -1;   /* T_istSupportIndicator */
104 static int hf_gsm_map_superChargerSupportedInServingNetworkEntity = -1;  /* T_superChargerSupportedInServingNetworkEntity */
105 static int hf_gsm_map_sendSubscriberData = -1;    /* NULL */
106 static int hf_gsm_map_subscriberDataStored = -1;  /* OCTET_STRING_SIZE_1_6 */
107 static int hf_gsm_map_longFTN_Supported = -1;     /* NULL */
108 static int hf_gsm_map_supportedLCS_CapabilitySets = -1;  /* T_supportedLCS_CapabilitySets */
109 static int hf_gsm_map_offeredCamel4CSIs = -1;     /* T_offeredCamel4CSIs */
110 static int hf_gsm_map_imsi = -1;                  /* Imsi */
111 static int hf_gsm_map_msc_Number = -1;            /* Msc_Number */
112 static int hf_gsm_map_vlr_Number = -1;            /* Vlr_Number */
113 static int hf_gsm_map_lmsi = -1;                  /* Lmsi */
114 static int hf_gsm_map_vlr_Capability = -1;        /* Vlr_Capability */
115 static int hf_gsm_map_informPreviousNetworkEntity = -1;  /* NULL */
116 static int hf_gsm_map_cs_LCS_NotSupportedByUE = -1;  /* NULL */
117 static int hf_gsm_map_v_gmlc_Address = -1;        /* OCTET_STRING_SIZE_5_17 */
118 static int hf_gsm_map_add_info = -1;              /* T_add_info */
119 static int hf_gsm_map_imeisv = -1;                /* OCTET_STRING_SIZE_8 */
120 static int hf_gsm_map_skipSubscriberDataUpdate = -1;  /* NULL */
121 static int hf_gsm_map_hlr_Number = -1;            /* Hlr_Number */
122 static int hf_gsm_map_PrivateExtensionList_item = -1;  /* PrivateExtension */
123 static int hf_gsm_map_extId = -1;                 /* OBJECT_IDENTIFIER */
124 static int hf_gsm_map_extType = -1;               /* T_extType */
125 static int hf_gsm_map_identity = -1;              /* T_identity */
126 static int hf_gsm_map_imsi_WithLMSI = -1;         /* T_imsi_WithLMSI */
127 static int hf_gsm_map_cancellationType = -1;      /* CancellationType */
128 static int hf_gsm_map_sgsn_Number = -1;           /* Sgsn_Number */
129 static int hf_gsm_map_freezeTMSI = -1;            /* NULL */
130 static int hf_gsm_map_freezeP_TMSI = -1;          /* NULL */
131 static int hf_gsm_map_sendId_authenticationSetList = -1;  /* SendId_authenticationSetList */
132 static int hf_gsm_map_authenticationSetList_item = -1;  /* T_authenticationSetList_item */
133 static int hf_gsm_map_rand = -1;                  /* OCTET_STRING_SIZE_16 */
134 static int hf_gsm_map_sres = -1;                  /* OCTET_STRING_SIZE_4 */
135 static int hf_gsm_map_kc = -1;                    /* OCTET_STRING_SIZE_8 */
136 static int hf_gsm_map_targetCellId = -1;          /* OCTET_STRING_SIZE_5_7 */
137 static int hf_gsm_map_ho_NumberNotRequired = -1;  /* NULL */
138 static int hf_gsm_map_bss_APDU = -1;              /* Bss_APDU */
139 static int hf_gsm_map_targetRNCId = -1;           /* OCTET_STRING_SIZE_7 */
140 static int hf_gsm_map_an_APDU = -1;               /* An_APDU */
141 static int hf_gsm_map_multipleBearerRequested = -1;  /* NULL */
142 static int hf_gsm_map_integrityProtectionInfo = -1;  /* OCTET_STRING_SIZE_18_100 */
143 static int hf_gsm_map_encryptionInfo = -1;        /* OCTET_STRING_SIZE_18_100 */
144 static int hf_gsm_map_radioResourceInformation = -1;  /* OCTET_STRING_SIZE_3_13 */
145 static int hf_gsm_map_allowedGSM_Algorithms = -1;  /* OCTET_STRING_SIZE_1 */
146 static int hf_gsm_map_allowedUMTS_Algorithms = -1;  /* T_allowedUMTS_Algorithms */
147 static int hf_gsm_map_integrityProtectionAlgorithms = -1;  /* OCTET_STRING_SIZE_1_9 */
148 static int hf_gsm_map_encryptionAlgorithms = -1;  /* OCTET_STRING_SIZE_1_9 */
149 static int hf_gsm_map_radioResourceList = -1;     /* T_radioResourceList */
150 static int hf_gsm_map_radioResourceList_item = -1;  /* T_radioResourceList_item */
151 static int hf_gsm_map_rab_Id = -1;                /* INTEGER_1_255 */
152 static int hf_gsm_map_bssmap_ServiceHandover = -1;  /* OCTET_STRING_SIZE_1 */
153 static int hf_gsm_map_ranap_ServiceHandover = -1;  /* OCTET_STRING_SIZE_1 */
154 static int hf_gsm_map_bssmap_ServiceHandoverList = -1;  /* T_bssmap_ServiceHandoverList */
155 static int hf_gsm_map_bssmap_ServiceHandoverList_item = -1;  /* T_bssmap_ServiceHandoverList_item */
156 static int hf_gsm_map_asciCallReference = -1;     /* OCTET_STRING_SIZE_1_8 */
157 static int hf_gsm_map_geran_classmark = -1;       /* OCTET_STRING_SIZE_2_87 */
158 static int hf_gsm_map_iuCurrentlyUsedCodec = -1;  /* OCTET_STRING_SIZE_1_4 */
159 static int hf_gsm_map_iuSupportedCodecsList = -1;  /* T_iuSupportedCodecsList */
160 static int hf_gsm_map_utranCodecList = -1;        /* T_utranCodecList */
161 static int hf_gsm_map_codec1 = -1;                /* OCTET_STRING_SIZE_1_4 */
162 static int hf_gsm_map_codec2 = -1;                /* OCTET_STRING_SIZE_1_4 */
163 static int hf_gsm_map_codec3 = -1;                /* OCTET_STRING_SIZE_1_4 */
164 static int hf_gsm_map_codec4 = -1;                /* OCTET_STRING_SIZE_1_4 */
165 static int hf_gsm_map_codec5 = -1;                /* OCTET_STRING_SIZE_1_4 */
166 static int hf_gsm_map_codec6 = -1;                /* OCTET_STRING_SIZE_1_4 */
167 static int hf_gsm_map_codec7 = -1;                /* OCTET_STRING_SIZE_1_4 */
168 static int hf_gsm_map_codec8 = -1;                /* OCTET_STRING_SIZE_1_4 */
169 static int hf_gsm_map_geranCodecList = -1;        /* T_geranCodecList */
170 static int hf_gsm_map_rab_ConfigurationIndicator = -1;  /* NULL */
171 static int hf_gsm_map_uesbi_Iu = -1;              /* T_uesbi_Iu */
172 static int hf_gsm_map_uesbi_IuA = -1;             /* BIT_STRING_SIZE_1_128 */
173 static int hf_gsm_map_uesbi_IuB = -1;             /* BIT_STRING_SIZE_1_128 */
174 static int hf_gsm_map_handoverNumber = -1;        /* HandoverNumber */
175 static int hf_gsm_map_relocationNumberList = -1;  /* T_relocationNumberList */
176 static int hf_gsm_map_relocationNumberList_item = -1;  /* T_relocationNumberList_item */
177 static int hf_gsm_map_multicallBearerInfo = -1;   /* INTEGER_1_7 */
178 static int hf_gsm_map_multipleBearerNotSupported = -1;  /* NULL */
179 static int hf_gsm_map_selectedUMTS_Algorithms = -1;  /* T_selectedUMTS_Algorithms */
180 static int hf_gsm_map_integrityProtectionAlgorithm = -1;  /* OCTET_STRING_SIZE_1 */
181 static int hf_gsm_map_encryptionAlgorithm = -1;   /* OCTET_STRING_SIZE_1 */
182 static int hf_gsm_map_chosenRadioResourceInformation = -1;  /* T_chosenRadioResourceInformation */
183 static int hf_gsm_map_chosenChannelInfo = -1;     /* OCTET_STRING_SIZE_1 */
184 static int hf_gsm_map_chosenSpeechVersion = -1;   /* OCTET_STRING_SIZE_1 */
185 static int hf_gsm_map_iuSelectedCodec = -1;       /* OCTET_STRING_SIZE_1_4 */
186 static int hf_gsm_map_iuAvailableCodecsList = -1;  /* T_iuAvailableCodecsList */
187 static int hf_gsm_map_targetMSC_Number = -1;      /* T_targetMSC_Number */
188 static int hf_gsm_map_numberOfRequestedVectors = -1;  /* INTEGER_1_5 */
189 static int hf_gsm_map_segmentationProhibited = -1;  /* NULL */
190 static int hf_gsm_map_immediateResponsePreferred = -1;  /* NULL */
191 static int hf_gsm_map_re_synchronisationInfo = -1;  /* T_re_synchronisationInfo */
192 static int hf_gsm_map_auts = -1;                  /* OCTET_STRING_SIZE_14 */
193 static int hf_gsm_map_requestingNodeType = -1;    /* T_requestingNodeType */
194 static int hf_gsm_map_requestingPLMN_Id = -1;     /* OCTET_STRING_SIZE_3 */
195 static int hf_gsm_map_SendAuthenticationInfoRes_item = -1;  /* SendAuthenticationInfoRes_item */
196 static int hf_gsm_map_authenticationSetList = -1;  /* T_authenticationSetList */
197 static int hf_gsm_map_tripletList = -1;           /* T_tripletList */
198 static int hf_gsm_map_tripletList_item = -1;      /* T_tripletList_item */
199 static int hf_gsm_map_quintupletList = -1;        /* T_quintupletList */
200 static int hf_gsm_map_quintupletList_item = -1;   /* T_quintupletList_item */
201 static int hf_gsm_map_xres = -1;                  /* OCTET_STRING_SIZE_4_16 */
202 static int hf_gsm_map_ck = -1;                    /* OCTET_STRING_SIZE_16 */
203 static int hf_gsm_map_ik = -1;                    /* OCTET_STRING_SIZE_16 */
204 static int hf_gsm_map_autn = -1;                  /* OCTET_STRING_SIZE_16 */
205 static int hf_gsm_map_imei = -1;                  /* Imei */
206 static int hf_gsm_map_requestedEquipmentInfo = -1;  /* T_requestedEquipmentInfo */
207 static int hf_gsm_map_equipmentStatus = -1;       /* EquipmentStatus */
208 static int hf_gsm_map_bmuef = -1;                 /* T_bmuef */
209 static int hf_gsm_map_bearerservice = -1;         /* Bearerservice */
210 static int hf_gsm_map_teleservice = -1;           /* Teleservice */
211 static int hf_gsm_map_BasicServiceGroupList_item = -1;  /* BasicService */
212 static int hf_gsm_map_bcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
213 static int hf_gsm_map_serviceKey = -1;            /* ServiceKey */
214 static int hf_gsm_map_gsmSCFAddress = -1;         /* GsmSCF_Address */
215 static int hf_gsm_map_defaultCallHandling = -1;   /* DefaultCallHandling */
216 static int hf_gsm_map_BcsmCamelTDPDataList_item = -1;  /* BcsmCamelTDPData */
217 static int hf_gsm_map_o_BcsmCamelTDPDataList = -1;  /* BcsmCamelTDPDataList */
218 static int hf_gsm_map_camelCapabilityHandling = -1;  /* INTEGER_1_16 */
219 static int hf_gsm_map_msisdn = -1;                /* Msisdn */
220 static int hf_gsm_map_category = -1;              /* OCTET_STRING_SIZE_1 */
221 static int hf_gsm_map_subscriberStatus = -1;      /* SubscriberStatus */
222 static int hf_gsm_map_bearerserviceList = -1;     /* bearerServiceList */
223 static int hf_gsm_map_bearerserviceList_item = -1;  /* Bearerservice */
224 static int hf_gsm_map_teleserviceList = -1;       /* SEQUENCE_SIZE_1_20_OF_Teleservice */
225 static int hf_gsm_map_teleserviceList_item = -1;  /* Teleservice */
226 static int hf_gsm_map_provisionedSS = -1;         /* T_provisionedSS */
227 static int hf_gsm_map_provisionedSS_item = -1;    /* T_provisionedSS_item */
228 static int hf_gsm_map_forwardingInfo = -1;        /* ForwardingInfo */
229 static int hf_gsm_map_callBarringInfo = -1;       /* CallBarringInfo */
230 static int hf_gsm_map_cug_Info = -1;              /* T_cug_Info */
231 static int hf_gsm_map_cug_SubscriptionList = -1;  /* T_cug_SubscriptionList */
232 static int hf_gsm_map_cug_SubscriptionList_item = -1;  /* T_cug_SubscriptionList_item */
233 static int hf_gsm_map_cug_Index = -1;             /* INTEGER_0_32767 */
234 static int hf_gsm_map_cug_Interlock = -1;         /* OCTET_STRING_SIZE_4 */
235 static int hf_gsm_map_intraCUG_Options = -1;      /* IntraCUG_Options */
236 static int hf_gsm_map_basicServiceGroupList = -1;  /* BasicServiceGroupList */
237 static int hf_gsm_map_cug_FeatureList = -1;       /* T_cug_FeatureList */
238 static int hf_gsm_map_cug_FeatureList_item = -1;  /* T_cug_FeatureList_item */
239 static int hf_gsm_map_basicService = -1;          /* BasicService */
240 static int hf_gsm_map_preferentialCUG_Indicator = -1;  /* INTEGER_0_32767 */
241 static int hf_gsm_map_interCUG_Restrictions = -1;  /* OCTET_STRING_SIZE_1 */
242 static int hf_gsm_map_ss_Data = -1;               /* Ss_Data */
243 static int hf_gsm_map_emlpp_Info = -1;            /* T_emlpp_Info */
244 static int hf_gsm_map_maximumentitledPriority = -1;  /* INTEGER_0_15 */
245 static int hf_gsm_map_defaultPriority = -1;       /* INTEGER_0_15 */
246 static int hf_gsm_map_odb_Data = -1;              /* Odb_data */
247 static int hf_gsm_map_roamingRestrictionDueToUnsupportedFeature = -1;  /* NULL */
248 static int hf_gsm_map_regionalSubscriptionData = -1;  /* T_regionalSubscriptionData */
249 static int hf_gsm_map_regionalSubscriptionData_item = -1;  /* OCTET_STRING_SIZE_2 */
250 static int hf_gsm_map_vbsSubscriptionData = -1;   /* T_vbsSubscriptionData */
251 static int hf_gsm_map_vbsSubscriptionData_item = -1;  /* T_vbsSubscriptionData_item */
252 static int hf_gsm_map_groupid = -1;               /* OCTET_STRING_SIZE_3 */
253 static int hf_gsm_map_broadcastInitEntitlement = -1;  /* NULL */
254 static int hf_gsm_map_vgcsSubscriptionData = -1;  /* T_vgcsSubscriptionData */
255 static int hf_gsm_map_vgcsSubscriptionData_item = -1;  /* T_vgcsSubscriptionData_item */
256 static int hf_gsm_map_groupId = -1;               /* OCTET_STRING_SIZE_3 */
257 static int hf_gsm_map_vlrCamelSubscriptionInfo = -1;  /* T_vlrCamelSubscriptionInfo */
258 static int hf_gsm_map_o_CSI = -1;                 /* O_CSI */
259 static int hf_gsm_map_ss_CSI = -1;                /* ss_CSI */
260 static int hf_gsm_map_ss_CamelData = -1;          /* Ss_CamelData */
261 static int hf_gsm_map_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDP_CriteriaList */
262 static int hf_gsm_map_tif_CSI = -1;               /* NULL */
263 static int hf_gsm_map_naea_PreferredCI = -1;      /* Naea_PreferredCI */
264 static int hf_gsm_map_gprsSubscriptionData = -1;  /* T_gprsSubscriptionData */
265 static int hf_gsm_map_completeDataListIncluded = -1;  /* NULL */
266 static int hf_gsm_map_gprsDataList = -1;          /* T_gprsDataList */
267 static int hf_gsm_map_gprsDataList_item = -1;     /* T_gprsDataList_item */
268 static int hf_gsm_map_pdp_ContextId = -1;         /* INTEGER_1_50 */
269 static int hf_gsm_map_pdp_Type = -1;              /* OCTET_STRING_SIZE_2 */
270 static int hf_gsm_map_pdp_Address = -1;           /* OCTET_STRING_SIZE_1_16 */
271 static int hf_gsm_map_qos_Subscribed = -1;        /* Qos_Subscribed */
272 static int hf_gsm_map_vplmnAddressAllowed = -1;   /* NULL */
273 static int hf_gsm_map_apn = -1;                   /* OCTET_STRING_SIZE_2_63 */
274 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature = -1;  /* NULL */
275 static int hf_gsm_map_networkAccessMode = -1;     /* T_networkAccessMode */
276 static int hf_gsm_map_lsaInformation = -1;        /* T_lsaInformation */
277 static int hf_gsm_map_lsaOnlyAccessIndicator = -1;  /* T_lsaOnlyAccessIndicator */
278 static int hf_gsm_map_lsaDataList = -1;           /* T_lsaDataList */
279 static int hf_gsm_map_lsaDataList_item = -1;      /* T_lsaDataList_item */
280 static int hf_gsm_map_lsaIdentity = -1;           /* OCTET_STRING_SIZE_3 */
281 static int hf_gsm_map_lsaAttributes = -1;         /* OCTET_STRING_SIZE_1 */
282 static int hf_gsm_map_lsaActiveModeIndicator = -1;  /* NULL */
283 static int hf_gsm_map_lmu_Indicator = -1;         /* NULL */
284 static int hf_gsm_map_lcsInformation = -1;        /* T_lcsInformation */
285 static int hf_gsm_map_gmlc_List = -1;             /* T_gmlc_List */
286 static int hf_gsm_map_gmlc_List_item = -1;        /* T_gmlc_List_item */
287 static int hf_gsm_map_lcs_PrivacyExceptionList = -1;  /* T_lcs_PrivacyExceptionList */
288 static int hf_gsm_map_lcs_PrivacyExceptionList_item = -1;  /* T_lcs_PrivacyExceptionList_item */
289 static int hf_gsm_map_ss_Code = -1;               /* Ss_Code */
290 static int hf_gsm_map_ss_Status = -1;             /* Ss_Status */
291 static int hf_gsm_map_notificationToMSUser = -1;  /* NotificationToMSUser */
292 static int hf_gsm_map_externalClientList = -1;    /* T_externalClientList */
293 static int hf_gsm_map_externalClientList_item = -1;  /* T_externalClientList_item */
294 static int hf_gsm_map_clientIdentity = -1;        /* T_clientIdentity */
295 static int hf_gsm_map_externalAddress = -1;       /* OCTET_STRING_SIZE_1_20 */
296 static int hf_gsm_map_gmlc_Restriction = -1;      /* T_gmlc_Restriction */
297 static int hf_gsm_map_plmnClientList = -1;        /* T_plmnClientList */
298 static int hf_gsm_map_plmnClientList_item = -1;   /* T_plmnClientList_item */
299 static int hf_gsm_map_molr_List = -1;             /* T_molr_List */
300 static int hf_gsm_map_molr_List_item = -1;        /* T_molr_List_item */
301 static int hf_gsm_map_ss_List = -1;               /* ss_List */
302 static int hf_gsm_map_ss_List_item = -1;          /* OCTET_STRING_SIZE_1 */
303 static int hf_gsm_map_odb_GeneralData = -1;       /* Odb_GeneralData */
304 static int hf_gsm_map_regionalSubscriptionResponse = -1;  /* RegionalSubscriptionResponse */
305 static int hf_gsm_map_ss_EventList = -1;          /* T_ss_EventList */
306 static int hf_gsm_map_ss_EventList_item = -1;     /* OCTET_STRING_SIZE_1 */
307 static int hf_gsm_map_gsmSCF_Address = -1;        /* GsmSCF_Address */
308 static int hf_gsm_map_callBarringFeatureList = -1;  /* CallBarringFeatureList */
309 static int hf_gsm_map_CallBarringFeatureList_item = -1;  /* CallBarringFeatureList_item */
310 static int hf_gsm_map_forwardedToNumber = -1;     /* ForwardedToNumber */
311 static int hf_gsm_map_forwardedToSubaddress = -1;  /* ForwardedToSubaddress */
312 static int hf_gsm_map_forwardingOptions = -1;     /* ForwardingOptions */
313 static int hf_gsm_map_noReplyConditionTime = -1;  /* INTEGER */
314 static int hf_gsm_map_longForwardedToNumber = -1;  /* LongForwardedToNumber */
315 static int hf_gsm_map_matchType = -1;             /* MatchType */
316 static int hf_gsm_map_destinationNumberList = -1;  /* T_destinationNumberList */
317 static int hf_gsm_map_destinationNumberList_item = -1;  /* T_destinationNumberList_item */
318 static int hf_gsm_map_destinationNumberLengthList = -1;  /* T_destinationNumberLengthList */
319 static int hf_gsm_map_destinationNumberLengthList_item = -1;  /* INTEGER_1_15 */
320 static int hf_gsm_map_forwardingFeatureList_1_32 = -1;  /* SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList */
321 static int hf_gsm_map_forwardingFeatureList_item = -1;  /* ForwardingFeatureList */
322 static int hf_gsm_map_naea_PreferredCIC = -1;     /* OCTET_STRING_SIZE_3 */
323 static int hf_gsm_map_O_BcsmCamelTDP_CriteriaList_item = -1;  /* O_BcsmCamelTDP_CriteriaList_item */
324 static int hf_gsm_map_o_BcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
325 static int hf_gsm_map_destinationNumberCriteria = -1;  /* DestinationNumberCriteria */
326 static int hf_gsm_map_basicServiceCriteria_lst = -1;  /* BasicServiceGroupList */
327 static int hf_gsm_map_callTypeCriteria = -1;      /* CallTypeCriteria */
328 static int hf_gsm_map_cliRestrictionOption = -1;  /* CliRestrictionOption */
329 static int hf_gsm_map_overrideCategory = -1;      /* OverrideCategory */
330 static int hf_gsm_map_basicServiceList = -1;      /* BasicServiceGroupList */
331 static int hf_gsm_map_regionalSubscriptionIdentifier = -1;  /* OCTET_STRING_SIZE_2 */
332 static int hf_gsm_map_vbsGroupIndication = -1;    /* NULL */
333 static int hf_gsm_map_vgcsGroupIndication = -1;   /* NULL */
334 static int hf_gsm_map_camelSubscriptionInfoWithdraw = -1;  /* NULL */
335 static int hf_gsm_map_gprsSubscriptionDataWithdraw = -1;  /* T_gprsSubscriptionDataWithdraw */
336 static int hf_gsm_map_allGPRSData = -1;           /* NULL */
337 static int hf_gsm_map_contextIdList = -1;         /* T_contextIdList */
338 static int hf_gsm_map_contextIdList_item = -1;    /* INTEGER_1_50 */
339 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1;  /* NULL */
340 static int hf_gsm_map_lsaInformationWithdraw = -1;  /* T_lsaInformationWithdraw */
341 static int hf_gsm_map_allLSAData = -1;            /* NULL */
342 static int hf_gsm_map_lsaIdentityList = -1;       /* T_lsaIdentityList */
343 static int hf_gsm_map_lsaIdentityList_item = -1;  /* OCTET_STRING_SIZE_3 */
344 static int hf_gsm_map_gmlc_ListWithdraw = -1;     /* NULL */
345 static int hf_gsm_map_hlr_List = -1;              /* T_hlr_List */
346 static int hf_gsm_map_hlr_List_item = -1;         /* OCTET_STRING_SIZE_3_8 */
347 static int hf_gsm_map_msNotReachable = -1;        /* NULL */
348 static int hf_gsm_map_traceReference = -1;        /* OCTET_STRING_SIZE_1_2 */
349 static int hf_gsm_map_traceType = -1;             /* INTEGER_0_255 */
350 static int hf_gsm_map_omc_Id = -1;                /* OCTET_STRING_SIZE_1_20 */
351 static int hf_gsm_map_cug_CheckInfo = -1;         /* Cug_CheckInfo */
352 static int hf_gsm_map_numberOfForwarding = -1;    /* INTEGER_1_5 */
353 static int hf_gsm_map_interrogationType = -1;     /* T_interrogationType */
354 static int hf_gsm_map_or_Interrogation = -1;      /* NULL */
355 static int hf_gsm_map_or_Capability = -1;         /* INTEGER_1_127 */
356 static int hf_gsm_map_gmsc_Address = -1;          /* Gmsc_Address */
357 static int hf_gsm_map_callReferenceNumber = -1;   /* OCTET_STRING_SIZE_1_8 */
358 static int hf_gsm_map_forwardingReason = -1;      /* T_forwardingReason */
359 static int hf_gsm_map_basicServiceGroup = -1;     /* BasicService */
360 static int hf_gsm_map_networkSignalInfo = -1;     /* Bss_APDU */
361 static int hf_gsm_map_camelInfo = -1;             /* T_camelInfo */
362 static int hf_gsm_map_suppress_T_CSI = -1;        /* NULL */
363 static int hf_gsm_map_suppressionOfAnnouncement = -1;  /* NULL */
364 static int hf_gsm_map_alertingPattern = -1;       /* OCTET_STRING_SIZE_1 */
365 static int hf_gsm_map_ccbs_Call = -1;             /* NULL */
366 static int hf_gsm_map_supportedCCBS_Phase = -1;   /* INTEGER_1_127 */
367 static int hf_gsm_map_additionalSignalInfo = -1;  /* AdditionalSignalInfo */
368 static int hf_gsm_map_extendedRoutingInfo = -1;   /* T_extendedRoutingInfo */
369 static int hf_gsm_map_routingInfo = -1;           /* T_routingInfo */
370 static int hf_gsm_map_roamingNumber = -1;         /* RoamingNumber */
371 static int hf_gsm_map_forwardingData = -1;        /* ForwardingData */
372 static int hf_gsm_map_camelRoutingInfo = -1;      /* T_camelRoutingInfo */
373 static int hf_gsm_map_gmscCamelSubscriptionInfo = -1;  /* T_gmscCamelSubscriptionInfo */
374 static int hf_gsm_map_t_CSI = -1;                 /* t_CSI */
375 static int hf_gsm_map_t_BcsmCamelTDPDataList = -1;  /* BcsmCamelTDPDataList */
376 static int hf_gsm_map_cugSubscriptionFlag = -1;   /* NULL */
377 static int hf_gsm_map_subscriberInfo = -1;        /* SubscriberInfo */
378 static int hf_gsm_map_forwardingInterrogationRequired = -1;  /* NULL */
379 static int hf_gsm_map_vmsc_Address = -1;          /* T_vmsc_Address */
380 static int hf_gsm_map_ccbs_Indicators = -1;       /* T_ccbs_Indicators */
381 static int hf_gsm_map_ccbs_Possible = -1;         /* NULL */
382 static int hf_gsm_map_keepCCBS_CallIndicator = -1;  /* NULL */
383 static int hf_gsm_map_numberPortabilityStatus = -1;  /* NumberPortabilityStatus */
384 static int hf_gsm_map_assumedIdle = -1;           /* NULL */
385 static int hf_gsm_map_camelBusy = -1;             /* NULL */
386 static int hf_gsm_map_notProvidedFromVLR = -1;    /* NULL */
387 static int hf_gsm_map_ageOfLocationInformation = -1;  /* INTEGER_0_32767 */
388 static int hf_gsm_map_geographicalInformation = -1;  /* OCTET_STRING_SIZE_8 */
389 static int hf_gsm_map_vlr_number = -1;            /* Vlr_Number */
390 static int hf_gsm_map_locationNumber = -1;        /* OCTET_STRING_SIZE_2_10 */
391 static int hf_gsm_map_cellIdOrLAI = -1;           /* T_cellIdOrLAI */
392 static int hf_gsm_map_cellIdFixedLength = -1;     /* OCTET_STRING_SIZE_7 */
393 static int hf_gsm_map_laiFixedLength = -1;        /* OCTET_STRING_SIZE_5 */
394 static int hf_gsm_map_selectedLSA_Id = -1;        /* OCTET_STRING_SIZE_3 */
395 static int hf_gsm_map_geodeticInformation = -1;   /* OCTET_STRING_SIZE_10 */
396 static int hf_gsm_map_currentLocationRetrieved = -1;  /* NULL */
397 static int hf_gsm_map_sai_Present = -1;           /* NULL */
398 static int hf_gsm_map_locationInformation = -1;   /* LocationInformation */
399 static int hf_gsm_map_subscriberState = -1;       /* SubscriberState */
400 static int hf_gsm_map_locationInformationGPRS = -1;  /* T_locationInformationGPRS */
401 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI = -1;  /* T_cellGlobalIdOrServiceAreaIdOrLAI */
402 static int hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength = -1;  /* OCTET_STRING_SIZE_7 */
403 static int hf_gsm_map_routeingAreaIdentity = -1;  /* OCTET_STRING_SIZE_6 */
404 static int hf_gsm_map_selectedLSAIdentity = -1;   /* OCTET_STRING_SIZE_3 */
405 static int hf_gsm_map_ps_SubscriberState = -1;    /* T_ps_SubscriberState */
406 static int hf_gsm_map_notProvidedFromSGSN = -1;   /* NULL */
407 static int hf_gsm_map_ps_Detached = -1;           /* NULL */
408 static int hf_gsm_map_ps_AttachedNotReachableForPaging = -1;  /* NULL */
409 static int hf_gsm_map_ps_AttachedReachableForPaging = -1;  /* NULL */
410 static int hf_gsm_map_ps_PDP_ActiveNotReachableForPaging = -1;  /* T_ps_PDP_ActiveNotReachableForPaging */
411 static int hf_gsm_map_ps_PDP_ActiveNotReachableForPaging_item = -1;  /* T_ps_PDP_ActiveNotReachableForPaging_item */
412 static int hf_gsm_map_pdp_ContextIdentifier = -1;  /* INTEGER_1_50 */
413 static int hf_gsm_map_pdp_ContextActive = -1;     /* NULL */
414 static int hf_gsm_map_apn_Subscribed = -1;        /* OCTET_STRING_SIZE_2_63 */
415 static int hf_gsm_map_apn_InUse = -1;             /* OCTET_STRING_SIZE_2_63 */
416 static int hf_gsm_map_nsapi = -1;                 /* INTEGER_0_15 */
417 static int hf_gsm_map_transactionId = -1;         /* OCTET_STRING_SIZE_1_2 */
418 static int hf_gsm_map_teid_ForGnAndGp = -1;       /* OCTET_STRING_SIZE_4 */
419 static int hf_gsm_map_teid_ForIu = -1;            /* OCTET_STRING_SIZE_4 */
420 static int hf_gsm_map_ggsn_Address = -1;          /* Ggsn_Address */
421 static int hf_gsm_map_qos_Requested = -1;         /* OCTET_STRING_SIZE_1_9 */
422 static int hf_gsm_map_qos_Negotiated = -1;        /* OCTET_STRING_SIZE_1_9 */
423 static int hf_gsm_map_chargingId = -1;            /* OCTET_STRING_SIZE_4 */
424 static int hf_gsm_map_chargingCharacteristics = -1;  /* OCTET_STRING_SIZE_2 */
425 static int hf_gsm_map_rnc_Address = -1;           /* OCTET_STRING_SIZE_5_17 */
426 static int hf_gsm_map_qos2_Subscribed = -1;       /* OCTET_STRING_SIZE_1_3 */
427 static int hf_gsm_map_qos2_Requested = -1;        /* OCTET_STRING_SIZE_1_3 */
428 static int hf_gsm_map_qos2_Negotiated = -1;       /* OCTET_STRING_SIZE_1_3 */
429 static int hf_gsm_map_ps_PDP_ActiveReachableForPaging = -1;  /* T_ps_PDP_ActiveReachableForPaging */
430 static int hf_gsm_map_ps_PDP_ActiveReachableForPaging_item = -1;  /* T_ps_PDP_ActiveReachableForPaging_item */
431 static int hf_gsm_map_netDetNotReachable = -1;    /* T_netDetNotReachable */
432 static int hf_gsm_map_ms_Classmark2 = -1;         /* OCTET_STRING_SIZE_3 */
433 static int hf_gsm_map_gprs_MS_Class = -1;         /* T_gprs_MS_Class */
434 static int hf_gsm_map_mSNetworkCapability = -1;   /* OCTET_STRING_SIZE_1_8 */
435 static int hf_gsm_map_mSRadioAccessCapability = -1;  /* OCTET_STRING_SIZE_1_50 */
436 static int hf_gsm_map_mnpInfoRes = -1;            /* T_mnpInfoRes */
437 static int hf_gsm_map_routeingNumber = -1;        /* OCTET_STRING_SIZE_1_5 */
438 static int hf_gsm_map_ext_ProtocolId = -1;        /* T_ext_ProtocolId */
439 static int hf_gsm_map_ext_signalInfo = -1;        /* ExtSignalInfo */
440 static int hf_gsm_map_cug_OutgoingAccess = -1;    /* NULL */
441 static int hf_gsm_map_gsm_BearerCapability = -1;  /* Bss_APDU */
442 static int hf_gsm_map_supportedCamelPhasesInGMSC = -1;  /* SupportedCamelPhases */
443 static int hf_gsm_map_orNotSupportedInGMSC = -1;  /* NULL */
444 static int hf_gsm_map_uu_Data = -1;               /* T_uu_Data */
445 static int hf_gsm_map_uuIndicator = -1;           /* OCTET_STRING_SIZE_1 */
446 static int hf_gsm_map_uui = -1;                   /* OCTET_STRING_SIZE_1_131 */
447 static int hf_gsm_map_uusCFInteraction = -1;      /* NULL */
448 static int hf_gsm_map_allInformationSent = -1;    /* NULL */
449 static int hf_gsm_map_isdn_BearerCapability = -1;  /* Bss_APDU */
450 static int hf_gsm_map_call_Direction = -1;        /* OCTET_STRING_SIZE_1 */
451 static int hf_gsm_map_b_Subscriber_Address = -1;  /* T_b_Subscriber_Address */
452 static int hf_gsm_map_chosenChannel = -1;         /* Bss_APDU */
453 static int hf_gsm_map_lowerLayerCompatibility = -1;  /* Bss_APDU */
454 static int hf_gsm_map_highLayerCompatibility = -1;  /* Bss_APDU */
455 static int hf_gsm_map_sIWFSNumber = -1;           /* T_sIWFSNumber */
456 static int hf_gsm_map_channelType = -1;           /* Bss_APDU */
457 static int hf_gsm_map_ccbs_Monitoring = -1;       /* Ccbs_Monitoring */
458 static int hf_gsm_map_ccbs_SubscriberStatus = -1;  /* Ccbs_SubscriberStatus */
459 static int hf_gsm_map_eventReportData = -1;       /* T_eventReportData */
460 static int hf_gsm_map_callReportdata = -1;        /* T_callReportdata */
461 static int hf_gsm_map_monitoringMode = -1;        /* MonitoringMode */
462 static int hf_gsm_map_callOutcome = -1;           /* CallOutcome */
463 static int hf_gsm_map_callInfo = -1;              /* Bss_APDU */
464 static int hf_gsm_map_ccbs_Feature = -1;          /* Ccbs_Feature */
465 static int hf_gsm_map_translatedB_Number = -1;    /* TranslatedB_Number */
466 static int hf_gsm_map_replaceB_Number = -1;       /* NULL */
467 static int hf_gsm_map_ruf_Outcome = -1;           /* Ruf_Outcome */
468 static int hf_gsm_map_ss_SubscriptionOption = -1;  /* Ss_SubscriptionOption */
469 static int hf_gsm_map_ccbs_Index = -1;            /* INTEGER_1_5 */
470 static int hf_gsm_map_b_subscriberNumber = -1;    /* B_subscriberNumber */
471 static int hf_gsm_map_b_subscriberSubaddress = -1;  /* OCTET_STRING_SIZE_1_21 */
472 static int hf_gsm_map_forwardingFeatureList_1_13 = -1;  /* SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList */
473 static int hf_gsm_map_genericServiceInfo = -1;    /* T_genericServiceInfo */
474 static int hf_gsm_map_maximumEntitledPriority = -1;  /* INTEGER_0_15 */
475 static int hf_gsm_map_ccbs_FeatureList = -1;      /* T_ccbs_FeatureList */
476 static int hf_gsm_map_ccbs_FeatureList_item = -1;  /* T_ccbs_FeatureList_item */
477 static int hf_gsm_map_ussd_DataCodingScheme = -1;  /* OCTET_STRING_SIZE_1 */
478 static int hf_gsm_map_ussd_String = -1;           /* OCTET_STRING_SIZE_1_160 */
479 static int hf_gsm_map_ccbs_Data = -1;             /* T_ccbs_Data */
480 static int hf_gsm_map_serviceIndicator = -1;      /* ServiceIndicator */
481 static int hf_gsm_map_sm_RP_PRI = -1;             /* BOOLEAN */
482 static int hf_gsm_map_serviceCentreAddress = -1;  /* ServiceCentreAddress */
483 static int hf_gsm_map_gprsSupportIndicator = -1;  /* NULL */
484 static int hf_gsm_map_sm_RP_MTI = -1;             /* INTEGER_0_10 */
485 static int hf_gsm_map_sm_RP_SMEA = -1;            /* OCTET_STRING_SIZE_1_12 */
486 static int hf_gsm_map_locationInfoWithLMSI = -1;  /* T_locationInfoWithLMSI */
487 static int hf_gsm_map_networkNode_Number = -1;    /* T_networkNode_Number */
488 static int hf_gsm_map_gprsNodeIndicator = -1;     /* NULL */
489 static int hf_gsm_map_additional_Number = -1;     /* T_additional_Number */
490 static int hf_gsm_map_sm_RP_DA = -1;              /* Sm_RP_DA */
491 static int hf_gsm_map_sm_RP_OA = -1;              /* Sm_RP_OA */
492 static int hf_gsm_map_sm_RP_UI = -1;              /* Sm_RP_UI */
493 static int hf_gsm_map_serviceCentreAddressOA = -1;  /* ServiceCentreAddress */
494 static int hf_gsm_map_noSM_RP_OA = -1;            /* NULL */
495 static int hf_gsm_map_serviceCentreAddressDA = -1;  /* ServiceCentreAddress */
496 static int hf_gsm_map_noSM_RP_DA = -1;            /* NULL */
497 static int hf_gsm_map_moreMessagesToSend = -1;    /* NULL */
498 static int hf_gsm_map_sm_DeliveryOutcome = -1;    /* Sm_DeliveryOutcome */
499 static int hf_gsm_map_absentSubscriberDiagnosticSM = -1;  /* INTEGER_0_255 */
500 static int hf_gsm_map_deliveryOutcomeIndicator = -1;  /* NULL */
501 static int hf_gsm_map_additionalSM_DeliveryOutcome = -1;  /* Sm_DeliveryOutcome */
502 static int hf_gsm_map_additionalAbsentSubscriberDiagnosticSM = -1;  /* INTEGER_0_255 */
503 static int hf_gsm_map_storedMSISDN = -1;          /* StoredMSISDN */
504 static int hf_gsm_map_mw_Status = -1;             /* T_mw_Status */
505 static int hf_gsm_map_alertReason = -1;           /* T_alertReason */
506 static int hf_gsm_map_alertReasonIndicator = -1;  /* NULL */
507 static int hf_gsm_map_requestedInfo = -1;         /* RequestedInfo */
508 static int hf_gsm_map_locationInformationFlag = -1;  /* NULL */
509 static int hf_gsm_map_subscriberStateFlag = -1;   /* NULL */
510 static int hf_gsm_map_currentLocation = -1;       /* NULL */
511 static int hf_gsm_map_requestedDomain = -1;       /* T_requestedDomain */
512 static int hf_gsm_map_imei_flg = -1;              /* NULL */
513 static int hf_gsm_map_ms_classmark = -1;          /* NULL */
514 static int hf_gsm_map_mnpRequestedInfo = -1;      /* NULL */
515 static int hf_gsm_map_subscriberIdentity = -1;    /* SubscriberIdentity */
516 static int hf_gsm_map_requestedSubscriptionInfo = -1;  /* T_requestedSubscriptionInfo */
517 static int hf_gsm_map_requestedSS_Info = -1;      /* T_requestedSS_Info */
518 static int hf_gsm_map_odb = -1;                   /* NULL */
519 static int hf_gsm_map_requestedCAMEL_SubscriptionInfo = -1;  /* T_requestedCAMEL_SubscriptionInfo */
520 static int hf_gsm_map_supportedVLR_CAMEL_Phases_flg = -1;  /* NULL */
521 static int hf_gsm_map_supportedSGSN_CAMEL_Phases_flg = -1;  /* NULL */
522 static int hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo = -1;  /* AdditionalRequestedCAMEL_SubscriptionInfo */
523 static int hf_gsm_map_callForwardingData = -1;    /* T_callForwardingData */
524 static int hf_gsm_map_forwardingFeatureList = -1;  /* ForwardingFeatureList */
525 static int hf_gsm_map_notificationToCSE = -1;     /* NULL */
526 static int hf_gsm_map_callBarringData = -1;       /* T_callBarringData */
527 static int hf_gsm_map_password = -1;              /* NumericString */
528 static int hf_gsm_map_wrongPasswordAttemptsCounter = -1;  /* INTEGER_0_4 */
529 static int hf_gsm_map_odb_Info = -1;              /* T_odb_Info */
530 static int hf_gsm_map_camel_SubscriptionInfo = -1;  /* T_camel_SubscriptionInfo */
531 static int hf_gsm_map_d_CSI = -1;                 /* T_d_CSI */
532 static int hf_gsm_map_dp_AnalysedInfoCriteriaList = -1;  /* Dp_AnalysedInfoCriteriaList */
533 static int hf_gsm_map_csi_Active = -1;            /* NULL */
534 static int hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_t_BCSM_CAMEL_TDP_CriteriaList */
535 static int hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_t_BCSM_CAMEL_TDP_CriteriaList_item */
536 static int hf_gsm_map_t_BCSM_TriggerDetectionPoint = -1;  /* t_BCSM_TriggerDetectionPoint */
537 static int hf_gsm_map_basicServiceCriteria = -1;  /* BasicServiceCriteria */
538 static int hf_gsm_map_t_CauseValueCriteria = -1;  /* T_CauseValueCriteria */
539 static int hf_gsm_map_vt_CSI = -1;                /* T_vt_CSI */
540 static int hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_vt_BCSM_CAMEL_TDP_CriteriaList */
541 static int hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_vt_BCSM_CAMEL_TDP_CriteriaList_item */
542 static int hf_gsm_map_tif_CSI_NotificationToCSE = -1;  /* NULL */
543 static int hf_gsm_map_gprs_CSI = -1;              /* T_gprs_CSI */
544 static int hf_gsm_map_gprs_CamelTDPDataList = -1;  /* T_gprs_CamelTDPDataList */
545 static int hf_gsm_map_gprs_CamelTDPDataList_item = -1;  /* T_gprs_CamelTDPDataList_item */
546 static int hf_gsm_map_gprs_TriggerDetectionPoint = -1;  /* T_gprs_TriggerDetectionPoint */
547 static int hf_gsm_map_defaultSessionHandling = -1;  /* T_defaultSessionHandling */
548 static int hf_gsm_map_mo_sms_CSI = -1;            /* T_mo_sms_CSI */
549 static int hf_gsm_map_sms_CAMEL_TDP_DataList = -1;  /* Sms_CAMEL_TDP_DataList */
550 static int hf_gsm_map_m_CSI = -1;                 /* T_m_CSI */
551 static int hf_gsm_map_mobilityTriggers = -1;      /* MobilityTriggers */
552 static int hf_gsm_map_specificCSIDeletedList = -1;  /* T_specificCSIDeletedList */
553 static int hf_gsm_map_mt_sms_CSI = -1;            /* T_mt_sms_CSI */
554 static int hf_gsm_map_mt_smsCAMELTDP_CriteriaList = -1;  /* T_mt_smsCAMELTDP_CriteriaList */
555 static int hf_gsm_map_mt_smsCAMELTDP_CriteriaList_item = -1;  /* T_mt_smsCAMELTDP_CriteriaList_item */
556 static int hf_gsm_map_sms_TriggerDetectionPoint = -1;  /* sms_TriggerDetectionPoint */
557 static int hf_gsm_map_tpdu_TypeCriterion = -1;    /* T_tpdu_TypeCriterion */
558 static int hf_gsm_map_tpdu_TypeCriterion_item = -1;  /* T_tpdu_TypeCriterion_item */
559 static int hf_gsm_map_mg_csi = -1;                /* T_mg_csi */
560 static int hf_gsm_map_o_IM_CSI = -1;              /* T_o_IM_CSI */
561 static int hf_gsm_map_csiActive = -1;             /* NULL */
562 static int hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList = -1;  /* T_o_IM_BcsmCamelTDP_CriteriaList */
563 static int hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList_item = -1;  /* T_o_IM_BcsmCamelTDP_CriteriaList_item */
564 static int hf_gsm_map_o_CauseValueCriteria = -1;  /* O_CauseValueCriteria */
565 static int hf_gsm_map_d_IM_CSI = -1;              /* T_d_IM_CSI */
566 static int hf_gsm_map_vt_IM_CSI = -1;             /* T_vt_IM_CSI */
567 static int hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_vt_IM_BCSM_CAMEL_TDP_CriteriaList */
568 static int hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item */
569 static int hf_gsm_map_supportedVLR_CAMEL_Phases = -1;  /* T_supportedVLR_CAMEL_Phases */
570 static int hf_gsm_map_supportedSGSN_CAMEL_Phases = -1;  /* T_supportedSGSN_CAMEL_Phases */
571 static int hf_gsm_map_offeredCamel4CSIsInVLR = -1;  /* T_offeredCamel4CSIsInVLR */
572 static int hf_gsm_map_offeredCamel4CSIsInSGSN = -1;  /* T_offeredCamel4CSIsInSGSN */
573 static int hf_gsm_map_Sms_CAMEL_TDP_DataList_item = -1;  /* Sms_CAMEL_TDP_DataList_item */
574 static int hf_gsm_map_defaultSMS_Handling = -1;   /* T_defaultSMS_Handling */
575 static int hf_gsm_map_T_CauseValueCriteria_item = -1;  /* OCTET_STRING_SIZE_1 */
576 static int hf_gsm_map_O_CauseValueCriteria_item = -1;  /* OCTET_STRING_SIZE_1 */
577 static int hf_gsm_map_MobilityTriggers_item = -1;  /* OCTET_STRING_SIZE_1 */
578 static int hf_gsm_map_BasicServiceCriteria_item = -1;  /* BasicServiceCriteria_item */
579 static int hf_gsm_map_ext_BearerService = -1;     /* OCTET_STRING_SIZE_1_5 */
580 static int hf_gsm_map_ext_Teleservice = -1;       /* OCTET_STRING_SIZE_1_5 */
581 static int hf_gsm_map_Dp_AnalysedInfoCriteriaList_item = -1;  /* Dp_AnalysedInfoCriteriaList_item */
582 static int hf_gsm_map_dialledNumber = -1;         /* T_dialledNumber */
583 static int hf_gsm_map_modificationRequestFor_CF_Info = -1;  /* T_modificationRequestFor_CF_Info */
584 static int hf_gsm_map_basicService_ext = -1;      /* BasicService_ext */
585 static int hf_gsm_map_noReplyConditionTime_1_100 = -1;  /* INTEGER_1_100 */
586 static int hf_gsm_map_modifyNotificationToCSE = -1;  /* ModifyNotificationToCSE */
587 static int hf_gsm_map_modificationRequestFor_CB_Info = -1;  /* T_modificationRequestFor_CB_Info */
588 static int hf_gsm_map_modificationRequestFor_CSI = -1;  /* T_modificationRequestFor_CSI */
589 static int hf_gsm_map_requestedCamel_SubscriptionInfo = -1;  /* T_requestedCamel_SubscriptionInfo */
590 static int hf_gsm_map_modifyCSI_State = -1;       /* T_modifyCSI_State */
591 static int hf_gsm_map_modificationRequestFor_ODB_data = -1;  /* T_modificationRequestFor_ODB_data */
592 static int hf_gsm_map_odb_data = -1;              /* Odb_data */
593 static int hf_gsm_map_odb_HPLMN_Data = -1;        /* Odb_HPLMN_Data */
594 static int hf_gsm_map_ss_Event = -1;              /* OCTET_STRING_SIZE_1 */
595 static int hf_gsm_map_ss_EventSpecification = -1;  /* T_ss_EventSpecification */
596 static int hf_gsm_map_ss_EventSpecification_item = -1;  /* OCTET_STRING_SIZE_1_20 */
597 static int hf_gsm_map_codec_Info = -1;            /* OCTET_STRING_SIZE_5_10 */
598 static int hf_gsm_map_cipheringAlgorithm = -1;    /* OCTET_STRING_SIZE_1 */
599 static int hf_gsm_map_groupKeyNumber = -1;        /* INTEGER_0_15 */
600 static int hf_gsm_map_groupKey = -1;              /* OCTET_STRING_SIZE_8 */
601 static int hf_gsm_map_priority = -1;              /* INTEGER_0_15 */
602 static int hf_gsm_map_uplinkFree = -1;            /* NULL */
603 static int hf_gsm_map_groupCallNumber = -1;       /* T_groupCallNumber */
604 static int hf_gsm_map_uplinkRequest = -1;         /* NULL */
605 static int hf_gsm_map_uplinkReleaseIndication = -1;  /* NULL */
606 static int hf_gsm_map_releaseGroupCall = -1;      /* NULL */
607 static int hf_gsm_map_uplinkRequestAck = -1;      /* NULL */
608 static int hf_gsm_map_uplinkRejectCommand = -1;   /* NULL */
609 static int hf_gsm_map_uplinkSeizedCommand = -1;   /* NULL */
610 static int hf_gsm_map_uplinkReleaseCommand = -1;  /* NULL */
611 static int hf_gsm_map_sgsn_Address = -1;          /* OCTET_STRING_SIZE_5_17 */
612 static int hf_gsm_map_sgsn_Capability = -1;       /* T_sgsn_Capability */
613 static int hf_gsm_map_ggsn_Number = -1;           /* Ggsn_Number */
614 static int hf_gsm_map_mobileNotReachableReason = -1;  /* INTEGER_0_255 */
615 static int hf_gsm_map_dataCodingScheme = -1;      /* OCTET_STRING */
616 static int hf_gsm_map_nameString = -1;            /* OCTET_STRING */
617 static int hf_gsm_map_lcsClientType = -1;         /* LcsClientType */
618 static int hf_gsm_map_lcsClientExternalID = -1;   /* LcsClientExternalID */
619 static int hf_gsm_map_lcsClientDialedByMS = -1;   /* OCTET_STRING */
620 static int hf_gsm_map_lcsClientInternalID = -1;   /* LcsClientInternalID */
621 static int hf_gsm_map_lcsClientName = -1;         /* LcsClientName */
622 static int hf_gsm_map_locationType = -1;          /* T_locationType */
623 static int hf_gsm_map_locationEstimateType = -1;  /* T_locationEstimateType */
624 static int hf_gsm_map_mlc_Number = -1;            /* T_mlc_Number */
625 static int hf_gsm_map_lcs_ClientID = -1;          /* Lcs_ClientID */
626 static int hf_gsm_map_privacyOverride = -1;       /* NULL */
627 static int hf_gsm_map_lcs_Priority = -1;          /* OCTET_STRING_SIZE_1 */
628 static int hf_gsm_map_lcs_QoS = -1;               /* T_lcs_QoS */
629 static int hf_gsm_map_horizontal_accuracy = -1;   /* OCTET_STRING_SIZE_1 */
630 static int hf_gsm_map_verticalCoordinateRequest = -1;  /* NULL */
631 static int hf_gsm_map_vertical_accuracy = -1;     /* OCTET_STRING_SIZE_1 */
632 static int hf_gsm_map_responseTime = -1;          /* T_responseTime */
633 static int hf_gsm_map_responseTimeCategory = -1;  /* T_responseTimeCategory */
634 static int hf_gsm_map_locationEstimate = -1;      /* OCTET_STRING_SIZE_1_20 */
635 static int hf_gsm_map_ageOfLocationEstimate = -1;  /* INTEGER_0_32767 */
636 static int hf_gsm_map_mlcNumber = -1;             /* T_mlcNumber */
637 static int hf_gsm_map_targetMS = -1;              /* TargetMS */
638 static int hf_gsm_map_lcsLocationInfo = -1;       /* LcsLocationInfo */
639 static int hf_gsm_map_lcs_Event = -1;             /* Lcs_Event */
640 static int hf_gsm_map_na_ESRD = -1;               /* T_na_ESRD */
641 static int hf_gsm_map_na_ESRK = -1;               /* T_na_ESRK */
642 static int hf_gsm_map_networkResource = -1;       /* NetworkResource */
643 static int hf_gsm_map_extensibleSystemFailureParam = -1;  /* T_extensibleSystemFailureParam */
644 static int hf_gsm_map_unknownSubscriberDiagnostic = -1;  /* T_unknownSubscriberDiagnostic */
645 static int hf_gsm_map_roamingNotAllowedCause = -1;  /* T_roamingNotAllowedCause */
646 static int hf_gsm_map_absentSubscriberReason = -1;  /* T_absentSubscriberReason */
647 static int hf_gsm_map_ccbs_Busy = -1;             /* NULL */
648 static int hf_gsm_map_callBarringCause = -1;      /* CallBarringCause */
649 static int hf_gsm_map_extensibleCallBarredParam = -1;  /* T_extensibleCallBarredParam */
650 static int hf_gsm_map_unauthorisedMessageOriginator = -1;  /* NULL */
651 static int hf_gsm_map_cug_RejectCause = -1;       /* T_cug_RejectCause */
652 static int hf_gsm_map_gprsConnectionSuspended = -1;  /* NULL */
653 static int hf_gsm_map_sm_EnumeratedDeliveryFailureCause = -1;  /* T_sm_EnumeratedDeliveryFailureCause */
654 static int hf_gsm_map_diagnosticInfo = -1;        /* OCTET_STRING_SIZE_1_200 */
655 static int hf_gsm_map_unauthorizedLCSClient_Diagnostic = -1;  /* T_unauthorizedLCSClient_Diagnostic */
656 static int hf_gsm_map_positionMethodFailure_Diagnostic = -1;  /* T_positionMethodFailure_Diagnostic */
657 static int hf_gsm_map_privateExtensionList = -1;  /* PrivateExtensionList */
658 static int hf_gsm_map_pcsExtensions = -1;         /* PcsExtensions */
659 /* named bits */
660 static int hf_gsm_map_SupportedCamelPhases_phase1 = -1;
661 static int hf_gsm_map_SupportedCamelPhases_phase2 = -1;
662 static int hf_gsm_map_SupportedCamelPhases_phase3 = -1;
663 static int hf_gsm_map_SupportedCamelPhases_phase4 = -1;
664 static int hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet1 = -1;
665 static int hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet2 = -1;
666 static int hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet3 = -1;
667 static int hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet4 = -1;
668 static int hf_gsm_map_T_offeredCamel4CSIs_o_csi = -1;
669 static int hf_gsm_map_T_offeredCamel4CSIs_d_csi = -1;
670 static int hf_gsm_map_T_offeredCamel4CSIs_vt_csi = -1;
671 static int hf_gsm_map_T_offeredCamel4CSIs_t_csi = -1;
672 static int hf_gsm_map_T_offeredCamel4CSIs_mt_sms_csi = -1;
673 static int hf_gsm_map_T_offeredCamel4CSIs_mg_csi = -1;
674 static int hf_gsm_map_T_offeredCamel4CSIs_psi_enhancements = -1;
675 static int hf_gsm_map_T_requestedEquipmentInfo_equipmentStatus = -1;
676 static int hf_gsm_map_T_requestedEquipmentInfo_bmuef = -1;
677 static int hf_gsm_map_Odb_GeneralData_allOGCallsBarred = -1;
678 static int hf_gsm_map_Odb_GeneralData_internationalOGCallsBarred = -1;
679 static int hf_gsm_map_Odb_GeneralData_internationalOGCallsNotToHPLMNCountryBarred = -1;
680 static int hf_gsm_map_Odb_GeneralData_premiumRateInformationOGCallsBarred = -1;
681 static int hf_gsm_map_Odb_GeneralData_premiumRateEntertainementOGCallsBarred = -1;
682 static int hf_gsm_map_Odb_GeneralData_ssAccessBarred = -1;
683 static int hf_gsm_map_Odb_GeneralData_interzonalOGCallsBarred = -1;
684 static int hf_gsm_map_Odb_GeneralData_interzonalOGCallsNotToHPLMNCountryBarred = -1;
685 static int hf_gsm_map_Odb_GeneralData_interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred = -1;
686 static int hf_gsm_map_Odb_GeneralData_allECTBarred = -1;
687 static int hf_gsm_map_Odb_GeneralData_chargeableECTBarred = -1;
688 static int hf_gsm_map_Odb_GeneralData_internationalECTBarred = -1;
689 static int hf_gsm_map_Odb_GeneralData_interzonalECTBarred = -1;
690 static int hf_gsm_map_Odb_GeneralData_doublyChargeableECTBarred = -1;
691 static int hf_gsm_map_Odb_GeneralData_multipleECTBarred = -1;
692 static int hf_gsm_map_Odb_GeneralData_allPacketOrientedServicesBarred = -1;
693 static int hf_gsm_map_Odb_GeneralData_roamerAccessToHPLMN_AP_Barred = -1;
694 static int hf_gsm_map_Odb_GeneralData_roamerAccessToVPLMN_AP_Barred = -1;
695 static int hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNOG_CallsBarred = -1;
696 static int hf_gsm_map_Odb_GeneralData_allIC_CallsBarred = -1;
697 static int hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNIC_CallsBarred = -1;
698 static int hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred = -1;
699 static int hf_gsm_map_Odb_GeneralData_roamingOutsidePLMN_Barred = -1;
700 static int hf_gsm_map_Odb_GeneralData_roamingOutsidePLMN_CountryBarred = -1;
701 static int hf_gsm_map_Odb_GeneralData_registrationAllCF_Barred = -1;
702 static int hf_gsm_map_Odb_GeneralData_registrationCFNotToHPLMN_Barred = -1;
703 static int hf_gsm_map_Odb_GeneralData_registrationInterzonalCF_Barred = -1;
704 static int hf_gsm_map_Odb_GeneralData_registrationInterzonalCFNotToHPLMN_Barred = -1;
705 static int hf_gsm_map_Odb_GeneralData_registrationInternationalCF_Barred = -1;
706 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType1 = -1;
707 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType2 = -1;
708 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType3 = -1;
709 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType4 = -1;
710 static int hf_gsm_map_ServiceIndicator_clirInvoked = -1;
711 static int hf_gsm_map_ServiceIndicator_camelInvoked = -1;
712 static int hf_gsm_map_T_mw_Status_scAddressNotIncluded = -1;
713 static int hf_gsm_map_T_mw_Status_mnrfSet = -1;
714 static int hf_gsm_map_T_mw_Status_mcefSet = -1;
715 static int hf_gsm_map_T_mw_Status_mnrgSet = -1;
716 static int hf_gsm_map_T_specificCSIDeletedList_o_csi = -1;
717 static int hf_gsm_map_T_specificCSIDeletedList_ss_csi = -1;
718 static int hf_gsm_map_T_specificCSIDeletedList_tif_csi = -1;
719 static int hf_gsm_map_T_specificCSIDeletedList_d_csi = -1;
720 static int hf_gsm_map_T_specificCSIDeletedList_vt_csi = -1;
721 static int hf_gsm_map_T_specificCSIDeletedList_mo_sms_csi = -1;
722 static int hf_gsm_map_T_specificCSIDeletedList_m_csi = -1;
723 static int hf_gsm_map_T_specificCSIDeletedList_gprs_csi = -1;
724 static int hf_gsm_map_T_specificCSIDeletedList_t_csi = -1;
725 static int hf_gsm_map_T_specificCSIDeletedList_mt_sms_csi = -1;
726 static int hf_gsm_map_T_specificCSIDeletedList_mg_csi = -1;
727 static int hf_gsm_map_T_specificCSIDeletedList_o_IM_CSI = -1;
728 static int hf_gsm_map_T_specificCSIDeletedList_d_IM_CSI = -1;
729 static int hf_gsm_map_T_specificCSIDeletedList_vt_IM_CSI = -1;
730 static int hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase1 = -1;
731 static int hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase2 = -1;
732 static int hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase3 = -1;
733 static int hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase4 = -1;
734 static int hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase1 = -1;
735 static int hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase2 = -1;
736 static int hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase3 = -1;
737 static int hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase4 = -1;
738 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_o_csi = -1;
739 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_d_csi = -1;
740 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_vt_csi = -1;
741 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_t_csi = -1;
742 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_mt_sms_csi = -1;
743 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_mg_csi = -1;
744 static int hf_gsm_map_T_offeredCamel4CSIsInVLR_psi_enhancements = -1;
745 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_o_csi = -1;
746 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_d_csi = -1;
747 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_vt_csi = -1;
748 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_t_csi = -1;
749 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_mt_sms_csi = -1;
750 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_mg_csi = -1;
751 static int hf_gsm_map_T_offeredCamel4CSIsInSGSN_psi_enhancements = -1;
752
753 /*--- End of included file: packet-gsm_map-hf.c ---*/
754
755
756 /* Initialize the subtree pointers */
757 static gint ett_gsm_map = -1;
758 static gint ett_gsm_map_InvokeId = -1;
759 static gint ett_gsm_map_InvokePDU = -1;
760 static gint ett_gsm_map_ReturnResultPDU = -1;
761 static gint ett_gsm_map_ReturnErrorPDU = -1;
762 static gint ett_gsm_map_ReturnResult_result = -1;
763 static gint ett_gsm_map_ReturnError_result = -1;
764 static gint ett_gsm_map_GSMMAPPDU = -1;
765
766
767 /*--- Included file: packet-gsm_map-ett.c ---*/
768
769 static gint ett_gsm_map_Bss_APDU = -1;
770 static gint ett_gsm_map_An_APDU = -1;
771 static gint ett_gsm_map_SupportedCamelPhases = -1;
772 static gint ett_gsm_map_Vlr_Capability = -1;
773 static gint ett_gsm_map_T_superChargerSupportedInServingNetworkEntity = -1;
774 static gint ett_gsm_map_T_supportedLCS_CapabilitySets = -1;
775 static gint ett_gsm_map_T_offeredCamel4CSIs = -1;
776 static gint ett_gsm_map_UpdateLocationArg = -1;
777 static gint ett_gsm_map_T_add_info = -1;
778 static gint ett_gsm_map_UpdateLocationRes = -1;
779 static gint ett_gsm_map_PrivateExtensionList = -1;
780 static gint ett_gsm_map_PrivateExtension = -1;
781 static gint ett_gsm_map_PcsExtensions = -1;
782 static gint ett_gsm_map_CancelLocationArg = -1;
783 static gint ett_gsm_map_T_identity = -1;
784 static gint ett_gsm_map_T_imsi_WithLMSI = -1;
785 static gint ett_gsm_map_CancelLocationRes = -1;
786 static gint ett_gsm_map_PurgeMS_Arg = -1;
787 static gint ett_gsm_map_PurgeMS_Res = -1;
788 static gint ett_gsm_map_SendIdentificationRes = -1;
789 static gint ett_gsm_map_SendId_authenticationSetList = -1;
790 static gint ett_gsm_map_T_authenticationSetList_item = -1;
791 static gint ett_gsm_map_PrepareHO_Arg = -1;
792 static gint ett_gsm_map_PrepareHandoverV3Arg = -1;
793 static gint ett_gsm_map_T_allowedUMTS_Algorithms = -1;
794 static gint ett_gsm_map_T_radioResourceList = -1;
795 static gint ett_gsm_map_T_radioResourceList_item = -1;
796 static gint ett_gsm_map_T_bssmap_ServiceHandoverList = -1;
797 static gint ett_gsm_map_T_bssmap_ServiceHandoverList_item = -1;
798 static gint ett_gsm_map_T_iuSupportedCodecsList = -1;
799 static gint ett_gsm_map_T_utranCodecList = -1;
800 static gint ett_gsm_map_T_geranCodecList = -1;
801 static gint ett_gsm_map_T_uesbi_Iu = -1;
802 static gint ett_gsm_map_PrepareHO_Res = -1;
803 static gint ett_gsm_map_PrepareHandoverV3Res = -1;
804 static gint ett_gsm_map_T_relocationNumberList = -1;
805 static gint ett_gsm_map_T_relocationNumberList_item = -1;
806 static gint ett_gsm_map_T_selectedUMTS_Algorithms = -1;
807 static gint ett_gsm_map_T_chosenRadioResourceInformation = -1;
808 static gint ett_gsm_map_T_iuAvailableCodecsList = -1;
809 static gint ett_gsm_map_SendEndSignalV9Arg = -1;
810 static gint ett_gsm_map_PrepareSubsequentHO_Arg = -1;
811 static gint ett_gsm_map_SendAuthenticationInfoArgV3 = -1;
812 static gint ett_gsm_map_T_re_synchronisationInfo = -1;
813 static gint ett_gsm_map_SendAuthenticationInfoRes = -1;
814 static gint ett_gsm_map_SendAuthenticationInfoRes_item = -1;
815 static gint ett_gsm_map_SendAuthenticationInfoV3Res = -1;
816 static gint ett_gsm_map_T_authenticationSetList = -1;
817 static gint ett_gsm_map_T_tripletList = -1;
818 static gint ett_gsm_map_T_tripletList_item = -1;
819 static gint ett_gsm_map_T_quintupletList = -1;
820 static gint ett_gsm_map_T_quintupletList_item = -1;
821 static gint ett_gsm_map_CheckIMEIv2Arg = -1;
822 static gint ett_gsm_map_T_requestedEquipmentInfo = -1;
823 static gint ett_gsm_map_ChekIMEIv3Res = -1;
824 static gint ett_gsm_map_T_bmuef = -1;
825 static gint ett_gsm_map_BasicService = -1;
826 static gint ett_gsm_map_BasicServiceGroupList = -1;
827 static gint ett_gsm_map_Odb_GeneralData = -1;
828 static gint ett_gsm_map_Odb_HPLMN_Data = -1;
829 static gint ett_gsm_map_BcsmCamelTDPData = -1;
830 static gint ett_gsm_map_BcsmCamelTDPDataList = -1;
831 static gint ett_gsm_map_O_CSI = -1;
832 static gint ett_gsm_map_InsertSubscriberDataArg = -1;
833 static gint ett_gsm_map_bearerServiceList = -1;
834 static gint ett_gsm_map_SEQUENCE_SIZE_1_20_OF_Teleservice = -1;
835 static gint ett_gsm_map_T_provisionedSS = -1;
836 static gint ett_gsm_map_T_provisionedSS_item = -1;
837 static gint ett_gsm_map_T_cug_Info = -1;
838 static gint ett_gsm_map_T_cug_SubscriptionList = -1;
839 static gint ett_gsm_map_T_cug_SubscriptionList_item = -1;
840 static gint ett_gsm_map_T_cug_FeatureList = -1;
841 static gint ett_gsm_map_T_cug_FeatureList_item = -1;
842 static gint ett_gsm_map_T_emlpp_Info = -1;
843 static gint ett_gsm_map_T_regionalSubscriptionData = -1;
844 static gint ett_gsm_map_T_vbsSubscriptionData = -1;
845 static gint ett_gsm_map_T_vbsSubscriptionData_item = -1;
846 static gint ett_gsm_map_T_vgcsSubscriptionData = -1;
847 static gint ett_gsm_map_T_vgcsSubscriptionData_item = -1;
848 static gint ett_gsm_map_T_vlrCamelSubscriptionInfo = -1;
849 static gint ett_gsm_map_ss_CSI = -1;
850 static gint ett_gsm_map_T_gprsSubscriptionData = -1;
851 static gint ett_gsm_map_T_gprsDataList = -1;
852 static gint ett_gsm_map_T_gprsDataList_item = -1;
853 static gint ett_gsm_map_T_lsaInformation = -1;
854 static gint ett_gsm_map_T_lsaDataList = -1;
855 static gint ett_gsm_map_T_lsaDataList_item = -1;
856 static gint ett_gsm_map_T_lcsInformation = -1;
857 static gint ett_gsm_map_T_gmlc_List = -1;
858 static gint ett_gsm_map_T_lcs_PrivacyExceptionList = -1;
859 static gint ett_gsm_map_T_lcs_PrivacyExceptionList_item = -1;
860 static gint ett_gsm_map_T_externalClientList = -1;
861 static gint ett_gsm_map_T_externalClientList_item = -1;
862 static gint ett_gsm_map_T_clientIdentity = -1;
863 static gint ett_gsm_map_T_plmnClientList = -1;
864 static gint ett_gsm_map_T_molr_List = -1;
865 static gint ett_gsm_map_T_molr_List_item = -1;
866 static gint ett_gsm_map_InsertSubscriberDataRes = -1;
867 static gint ett_gsm_map_ss_List = -1;
868 static gint ett_gsm_map_Ss_CamelData = -1;
869 static gint ett_gsm_map_T_ss_EventList = -1;
870 static gint ett_gsm_map_CallBarringInfo = -1;
871 static gint ett_gsm_map_CallBarringFeatureList = -1;
872 static gint ett_gsm_map_CallBarringFeatureList_item = -1;
873 static gint ett_gsm_map_ForwardingFeatureList = -1;
874 static gint ett_gsm_map_DestinationNumberCriteria = -1;
875 static gint ett_gsm_map_T_destinationNumberList = -1;
876 static gint ett_gsm_map_T_destinationNumberLengthList = -1;
877 static gint ett_gsm_map_ForwardingInfo = -1;
878 static gint ett_gsm_map_SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList = -1;
879 static gint ett_gsm_map_Naea_PreferredCI = -1;
880 static gint ett_gsm_map_O_BcsmCamelTDP_CriteriaList = -1;
881 static gint ett_gsm_map_O_BcsmCamelTDP_CriteriaList_item = -1;
882 static gint ett_gsm_map_Ss_SubscriptionOption = -1;
883 static gint ett_gsm_map_DeleteSubscriberDataArg = -1;
884 static gint ett_gsm_map_T_gprsSubscriptionDataWithdraw = -1;
885 static gint ett_gsm_map_T_contextIdList = -1;
886 static gint ett_gsm_map_T_lsaInformationWithdraw = -1;
887 static gint ett_gsm_map_T_lsaIdentityList = -1;
888 static gint ett_gsm_map_DeleteSubscriberDataRes = -1;
889 static gint ett_gsm_map_ResetArg = -1;
890 static gint ett_gsm_map_T_hlr_List = -1;
891 static gint ett_gsm_map_RestoreDataArg = -1;
892 static gint ett_gsm_map_RestoreDataRes = -1;
893 static gint ett_gsm_map_ActivateTraceModeArg = -1;
894 static gint ett_gsm_map_ActivateTraceModeRes = -1;
895 static gint ett_gsm_map_DeactivateTraceModeArg = -1;
896 static gint ett_gsm_map_DeactivateTraceModeRes = -1;
897 static gint ett_gsm_map_SendRoutingInfoArg = -1;
898 static gint ett_gsm_map_T_camelInfo = -1;
899 static gint ett_gsm_map_SendRoutingInfoRes = -1;
900 static gint ett_gsm_map_T_extendedRoutingInfo = -1;
901 static gint ett_gsm_map_T_routingInfo = -1;
902 static gint ett_gsm_map_T_camelRoutingInfo = -1;
903 static gint ett_gsm_map_T_gmscCamelSubscriptionInfo = -1;
904 static gint ett_gsm_map_t_CSI = -1;
905 static gint ett_gsm_map_T_ccbs_Indicators = -1;
906 static gint ett_gsm_map_SubscriberState = -1;
907 static gint ett_gsm_map_LocationInformation = -1;
908 static gint ett_gsm_map_T_cellIdOrLAI = -1;
909 static gint ett_gsm_map_SubscriberInfo = -1;
910 static gint ett_gsm_map_T_locationInformationGPRS = -1;
911 static gint ett_gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI = -1;
912 static gint ett_gsm_map_T_ps_SubscriberState = -1;
913 static gint ett_gsm_map_T_ps_PDP_ActiveNotReachableForPaging = -1;
914 static gint ett_gsm_map_T_ps_PDP_ActiveNotReachableForPaging_item = -1;
915 static gint ett_gsm_map_T_ps_PDP_ActiveReachableForPaging = -1;
916 static gint ett_gsm_map_T_ps_PDP_ActiveReachableForPaging_item = -1;
917 static gint ett_gsm_map_T_gprs_MS_Class = -1;
918 static gint ett_gsm_map_T_mnpInfoRes = -1;
919 static gint ett_gsm_map_AdditionalSignalInfo = -1;
920 static gint ett_gsm_map_Cug_CheckInfo = -1;
921 static gint ett_gsm_map_ForwardingData = -1;
922 static gint ett_gsm_map_ProvideRoamingNumberArg = -1;
923 static gint ett_gsm_map_ProvideRoamingNumberRes = -1;
924 static gint ett_gsm_map_ResumeCallHandlingArg = -1;
925 static gint ett_gsm_map_T_uu_Data = -1;
926 static gint ett_gsm_map_ResumeCallHandlingRes = -1;
927 static gint ett_gsm_map_ProvideSIWFSNumberArg = -1;
928 static gint ett_gsm_map_ProvideSIWFSNumberRes = -1;
929 static gint ett_gsm_map_SIWFSSignallingModifyArg = -1;
930 static gint ett_gsm_map_SIWFSSignallingModifyRes = -1;
931 static gint ett_gsm_map_SetReportingStateArg = -1;
932 static gint ett_gsm_map_SetReportingStateRes = -1;
933 static gint ett_gsm_map_StatusReportArg = -1;
934 static gint ett_gsm_map_T_eventReportData = -1;
935 static gint ett_gsm_map_T_callReportdata = -1;
936 static gint ett_gsm_map_StatusReportRes = -1;
937 static gint ett_gsm_map_RemoteUserFreeArg = -1;
938 static gint ett_gsm_map_RemoteUserFreeRes = -1;
939 static gint ett_gsm_map_Ss_Data = -1;
940 static gint ett_gsm_map_RegisterSS_Arg = -1;
941 static gint ett_gsm_map_Ss_Info = -1;
942 static gint ett_gsm_map_Ccbs_Feature = -1;
943 static gint ett_gsm_map_Ss_ForBS = -1;
944 static gint ett_gsm_map_InterrogateSS_Res = -1;
945 static gint ett_gsm_map_SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList = -1;
946 static gint ett_gsm_map_T_genericServiceInfo = -1;
947 static gint ett_gsm_map_T_ccbs_FeatureList = -1;
948 static gint ett_gsm_map_T_ccbs_FeatureList_item = -1;
949 static gint ett_gsm_map_Ussd_Arg = -1;
950 static gint ett_gsm_map_Ussd_Res = -1;
951 static gint ett_gsm_map_ServiceIndicator = -1;
952 static gint ett_gsm_map_RegisterCC_EntryArg = -1;
953 static gint ett_gsm_map_T_ccbs_Data = -1;
954 static gint ett_gsm_map_RegisterCC_EntryRes = -1;
955 static gint ett_gsm_map_EraseCC_EntryArg = -1;
956 static gint ett_gsm_map_EraseCC_EntryRes = -1;
957 static gint ett_gsm_map_RoutingInfoForSMArg = -1;
958 static gint ett_gsm_map_RoutingInfoForSMRes = -1;
959 static gint ett_gsm_map_T_locationInfoWithLMSI = -1;
960 static gint ett_gsm_map_T_additional_Number = -1;
961 static gint ett_gsm_map_Mo_forwardSM_Arg = -1;
962 static gint ett_gsm_map_Mo_forwardSM_Res = -1;
963 static gint ett_gsm_map_Sm_RP_OA = -1;
964 static gint ett_gsm_map_Sm_RP_DA = -1;
965 static gint ett_gsm_map_Mt_forwardSM_Arg = -1;
966 static gint ett_gsm_map_Mt_forwardSM_Res = -1;
967 static gint ett_gsm_map_ReportSM_DeliveryStatusArg = -1;
968 static gint ett_gsm_map_ReportSM_DeliveryStatusRes = -1;
969 static gint ett_gsm_map_InformServiceCentreArg = -1;
970 static gint ett_gsm_map_T_mw_Status = -1;
971 static gint ett_gsm_map_AlertServiceCentreArg = -1;
972 static gint ett_gsm_map_ReadyForSM_Arg = -1;
973 static gint ett_gsm_map_ReadyForSM_Res = -1;
974 static gint ett_gsm_map_ProvideSubscriberInfoArg = -1;
975 static gint ett_gsm_map_ProvideSubscriberInfoRes = -1;
976 static gint ett_gsm_map_RequestedInfo = -1;
977 static gint ett_gsm_map_AnyTimeInterrogationArg = -1;
978 static gint ett_gsm_map_AnyTimeInterrogationRes = -1;
979 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationArg = -1;
980 static gint ett_gsm_map_T_requestedSubscriptionInfo = -1;
981 static gint ett_gsm_map_T_requestedSS_Info = -1;
982 static gint ett_gsm_map_AnyTimeSubscriptionInterrogationRes = -1;
983 static gint ett_gsm_map_T_callForwardingData = -1;
984 static gint ett_gsm_map_T_callBarringData = -1;
985 static gint ett_gsm_map_T_odb_Info = -1;
986 static gint ett_gsm_map_T_camel_SubscriptionInfo = -1;
987 static gint ett_gsm_map_T_d_CSI = -1;
988 static gint ett_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList = -1;
989 static gint ett_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList_item = -1;
990 static gint ett_gsm_map_T_vt_CSI = -1;
991 static gint ett_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList = -1;
992 static gint ett_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList_item = -1;
993 static gint ett_gsm_map_T_gprs_CSI = -1;
994 static gint ett_gsm_map_T_gprs_CamelTDPDataList = -1;
995 static gint ett_gsm_map_T_gprs_CamelTDPDataList_item = -1;
996 static gint ett_gsm_map_T_mo_sms_CSI = -1;
997 static gint ett_gsm_map_T_m_CSI = -1;
998 static gint ett_gsm_map_T_specificCSIDeletedList = -1;
999 static gint ett_gsm_map_T_mt_sms_CSI = -1;
1000 static gint ett_gsm_map_T_mt_smsCAMELTDP_CriteriaList = -1;
1001 static gint ett_gsm_map_T_mt_smsCAMELTDP_CriteriaList_item = -1;
1002 static gint ett_gsm_map_T_tpdu_TypeCriterion = -1;
1003 static gint ett_gsm_map_T_mg_csi = -1;
1004 static gint ett_gsm_map_T_o_IM_CSI = -1;
1005 static gint ett_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList = -1;
1006 static gint ett_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList_item = -1;
1007 static gint ett_gsm_map_T_d_IM_CSI = -1;
1008 static gint ett_gsm_map_T_vt_IM_CSI = -1;
1009 static gint ett_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1;
1010 static gint ett_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item = -1;
1011 static gint ett_gsm_map_T_supportedVLR_CAMEL_Phases = -1;
1012 static gint ett_gsm_map_T_supportedSGSN_CAMEL_Phases = -1;
1013 static gint ett_gsm_map_T_offeredCamel4CSIsInVLR = -1;
1014 static gint ett_gsm_map_T_offeredCamel4CSIsInSGSN = -1;
1015 static gint ett_gsm_map_Sms_CAMEL_TDP_DataList = -1;
1016 static gint ett_gsm_map_Sms_CAMEL_TDP_DataList_item = -1;
1017 static gint ett_gsm_map_T_CauseValueCriteria = -1;
1018 static gint ett_gsm_map_O_CauseValueCriteria = -1;
1019 static gint ett_gsm_map_MobilityTriggers = -1;
1020 static gint ett_gsm_map_BasicServiceCriteria = -1;
1021 static gint ett_gsm_map_BasicServiceCriteria_item = -1;
1022 static gint ett_gsm_map_Dp_AnalysedInfoCriteriaList = -1;
1023 static gint ett_gsm_map_Dp_AnalysedInfoCriteriaList_item = -1;
1024 static gint ett_gsm_map_SubscriberIdentity = -1;
1025 static gint ett_gsm_map_AnyTimeModificationArg = -1;
1026 static gint ett_gsm_map_T_modificationRequestFor_CF_Info = -1;
1027 static gint ett_gsm_map_BasicService_ext = -1;
1028 static gint ett_gsm_map_T_modificationRequestFor_CB_Info = -1;
1029 static gint ett_gsm_map_T_modificationRequestFor_CSI = -1;
1030 static gint ett_gsm_map_T_modificationRequestFor_ODB_data = -1;
1031 static gint ett_gsm_map_AnyTimeModificationRes = -1;
1032 static gint ett_gsm_map_Odb_data = -1;
1033 static gint ett_gsm_map_Ss_InvocationNotificationArg = -1;
1034 static gint ett_gsm_map_T_ss_EventSpecification = -1;
1035 static gint ett_gsm_map_Ss_InvocationNotificationRes = -1;
1036 static gint ett_gsm_map_PrepareGroupCallArg = -1;
1037 static gint ett_gsm_map_PrepareGroupCallRes = -1;
1038 static gint ett_gsm_map_SendGroupCallEndSignalArg = -1;
1039 static gint ett_gsm_map_SendGroupCallEndSignalRes = -1;
1040 static gint ett_gsm_map_ProcessGroupCallSignallingArg = -1;
1041 static gint ett_gsm_map_ForwardGroupCallSignallingArg = -1;
1042 static gint ett_gsm_map_UpdateGprsLocationArg = -1;
1043 static gint ett_gsm_map_T_sgsn_Capability = -1;
1044 static gint ett_gsm_map_UpdateGprsLocationRes = -1;
1045 static gint ett_gsm_map_SendRoutingInfoForGprsArg = -1;
1046 static gint ett_gsm_map_SendRoutingInfoForGprsRes = -1;
1047 static gint ett_gsm_map_FailureReportArg = -1;
1048 static gint ett_gsm_map_FailureReportRes = -1;
1049 static gint ett_gsm_map_NoteMsPresentForGprsArg = -1;
1050 static gint ett_gsm_map_NoteMsPresentForGprsRes = -1;
1051 static gint ett_gsm_map_LcsClientExternalID = -1;
1052 static gint ett_gsm_map_LcsClientName = -1;
1053 static gint ett_gsm_map_Lcs_ClientID = -1;
1054 static gint ett_gsm_map_LcsLocationInfo = -1;
1055 static gint ett_gsm_map_ProvideSubscriberLocation_Arg = -1;
1056 static gint ett_gsm_map_T_locationType = -1;
1057 static gint ett_gsm_map_T_lcs_QoS = -1;
1058 static gint ett_gsm_map_T_responseTime = -1;
1059 static gint ett_gsm_map_ProvideSubscriberLocation_Res = -1;
1060 static gint ett_gsm_map_TargetMS = -1;
1061 static gint ett_gsm_map_RoutingInfoForLCS_Arg = -1;
1062 static gint ett_gsm_map_RoutingInfoForLCS_Res = -1;
1063 static gint ett_gsm_map_SubscriberLocationReport_Arg = -1;
1064 static gint ett_gsm_map_SubscriberLocationReport_Res = -1;
1065 static gint ett_gsm_map_SystemFailureParam = -1;
1066 static gint ett_gsm_map_T_extensibleSystemFailureParam = -1;
1067 static gint ett_gsm_map_DataMissingParam = -1;
1068 static gint ett_gsm_map_UnexpectedDataParam = -1;
1069 static gint ett_gsm_map_FacilityNotSupParam = -1;
1070 static gint ett_gsm_map_IncompatibleTerminalParam = -1;
1071 static gint ett_gsm_map_ResourceLimitationParam = -1;
1072 static gint ett_gsm_map_UnknownSubscriberParam = -1;
1073 static gint ett_gsm_map_NumberChangedParam = -1;
1074 static gint ett_gsm_map_UnidentifiedSubParam = -1;
1075 static gint ett_gsm_map_RoamingNotAllowedParam = -1;
1076 static gint ett_gsm_map_IllegalSubscriberParam = -1;
1077 static gint ett_gsm_map_IllegalEquipmentParam = -1;
1078 static gint ett_gsm_map_BearerServNotProvParam = -1;
1079 static gint ett_gsm_map_TeleservNotProvParam = -1;
1080 static gint ett_gsm_map_TracingBufferFullParam = -1;
1081 static gint ett_gsm_map_NoRoamingNbParam = -1;
1082 static gint ett_gsm_map_AbsentSubscriberParam = -1;
1083 static gint ett_gsm_map_BusySubscriberParam = -1;
1084 static gint ett_gsm_map_NoSubscriberReplyParam = -1;
1085 static gint ett_gsm_map_CallBarredParam = -1;
1086 static gint ett_gsm_map_T_extensibleCallBarredParam = -1;
1087 static gint ett_gsm_map_ForwardingFailedParam = -1;
1088 static gint ett_gsm_map_Or_NotAllowedParam = -1;
1089 static gint ett_gsm_map_ForwardingViolationParam = -1;
1090 static gint ett_gsm_map_Cug_RejectParam = -1;
1091 static gint ett_gsm_map_Ati_NotAllowedParam = -1;
1092 static gint ett_gsm_map_NoGroupCallNbParam = -1;
1093 static gint ett_gsm_map_Ss_IncompatibilityCause = -1;
1094 static gint ett_gsm_map_ShortTermDenialParam = -1;
1095 static gint ett_gsm_map_LongTermDenialParam = -1;
1096 static gint ett_gsm_map_SubBusyForMT_SMS_Param = -1;
1097 static gint ett_gsm_map_Sm_DeliveryFailureCause = -1;
1098 static gint ett_gsm_map_MessageWaitListFullParam = -1;
1099 static gint ett_gsm_map_AbsentSubscriberSM_Param = -1;
1100 static gint ett_gsm_map_UnauthorizedRequestingNetwork_Param = -1;
1101 static gint ett_gsm_map_UnauthorizedLCSClient_Param = -1;
1102 static gint ett_gsm_map_PositionMethodFailure_Param = -1;
1103 static gint ett_gsm_map_UnknownOrUnreachableLCSClient_Param = -1;
1104 static gint ett_gsm_map_ExtensionContainer = -1;
1105
1106 /*--- End of included file: packet-gsm_map-ett.c ---*/
1107
1108
1109 static dissector_table_t        sms_dissector_table;    /* SMS TPDU */
1110 static dissector_handle_t data_handle;
1111
1112 /* Preferenc settings default */
1113 #define MAX_SSN 254
1114 static range_t *global_ssn_range;
1115 static range_t *ssn_range;
1116 dissector_handle_t      map_handle;
1117
1118 /* Global variables */
1119
1120 static proto_tree *top_tree;
1121 static int application_context_version;
1122 gint protocolId;
1123 static int gsm_map_tap = -1;
1124
1125
1126 char*
1127 unpack_digits(tvbuff_t *tvb, int offset){
1128
1129         int length;
1130         guint8 octet;
1131         int i=0;
1132         char *digit_str;
1133
1134         length = tvb_length(tvb);
1135         if (length < offset)
1136                 return NULL;
1137         length = length - offset;
1138         digit_str = g_malloc(length*2+1);
1139
1140         while ( offset <= length ){
1141
1142                 octet = tvb_get_guint8(tvb,offset);
1143                 digit_str[i] = ((octet & 0x0f) + 0x30);
1144                 i++;
1145
1146                 /*
1147                  * unpack second value in byte
1148                  */
1149                 octet = octet >> 4;
1150
1151                 if (octet == 0x0f)      /* odd number bytes - hit filler */
1152                         break;
1153
1154                 digit_str[i] = ((octet & 0x0f) + 0x30);
1155                 i++;
1156                 offset++;
1157
1158         }
1159         digit_str[i]= '\0';
1160         return digit_str;
1161 }
1162
1163
1164
1165 /*--- Included file: packet-gsm_map-fn.c ---*/
1166
1167 /*--- Fields for imported types ---*/
1168
1169
1170
1171 static const value_string gsm_map_ProtocolId_vals[] = {
1172   {   1, "gsm-0408" },
1173   {   2, "gsm-0806" },
1174   {   3, "gsm-BSSMAP" },
1175   {   4, "ets-300102-1" },
1176   { 0, NULL }
1177 };
1178
1179
1180 static int
1181 dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1182
1183   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, &protocolId);
1184
1185
1186   return offset;
1187 }
1188 static int dissect_protocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1189   return dissect_gsm_map_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protocolId);
1190 }
1191
1192
1193 static int
1194 dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1195
1196  tvbuff_t       *parameter_tvb;
1197  guint8         octet;
1198  guint8         length;
1199
1200  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1201                                     &parameter_tvb);
1202  if (!parameter_tvb)
1203         return offset;
1204  switch (protocolId){
1205         /* gsm-0408 */
1206         case 1:
1207                 break;
1208         /* gsm-0806 */
1209         case 2:
1210                 break;
1211         /* gsm-BSSMAP */
1212         case 3:
1213                 break;
1214         /* ets-300102-1 (~Q.931 ) */
1215         case 4:
1216                 octet = tvb_get_guint8(parameter_tvb,0);
1217                 length = tvb_get_guint8(parameter_tvb,1);
1218                 if ( octet == 4 )
1219                         dissect_q931_bearer_capability_ie(parameter_tvb, 2, length, tree);
1220                 break;
1221         default:
1222                 break;
1223 }
1224
1225   return offset;
1226 }
1227 static int dissect_signalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1228   return dissect_gsm_map_SignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_signalInfo);
1229 }
1230
1231
1232 static int
1233 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_) {
1234   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
1235                                          hf_index, NULL);
1236
1237   return offset;
1238 }
1239 static int dissect_extId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1240   return dissect_gsm_map_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extId);
1241 }
1242
1243
1244
1245 static int
1246 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_) {
1247
1248   proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
1249   call_dissector(data_handle, tvb, pinfo, tree);        
1250   offset = tvb_length_remaining(tvb,offset);            
1251
1252
1253   return offset;
1254 }
1255 static int dissect_extType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1256   return dissect_gsm_map_T_extType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extType);
1257 }
1258
1259 static const ber_sequence_t PrivateExtension_sequence[] = {
1260   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extId },
1261   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extType },
1262   { 0, 0, 0, NULL }
1263 };
1264
1265 static int
1266 dissect_gsm_map_PrivateExtension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1267   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1268                                 PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension);
1269
1270   return offset;
1271 }
1272 static int dissect_PrivateExtensionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1273   return dissect_gsm_map_PrivateExtension(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PrivateExtensionList_item);
1274 }
1275
1276 static const ber_sequence_t PrivateExtensionList_sequence_of[1] = {
1277   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PrivateExtensionList_item },
1278 };
1279
1280 static int
1281 dissect_gsm_map_PrivateExtensionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1282   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1283                                    PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList);
1284
1285   return offset;
1286 }
1287 static int dissect_privateExtensionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1288   return dissect_gsm_map_PrivateExtensionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privateExtensionList);
1289 }
1290
1291 static const ber_sequence_t PcsExtensions_sequence[] = {
1292   { 0, 0, 0, NULL }
1293 };
1294
1295 static int
1296 dissect_gsm_map_PcsExtensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1297   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1298                                 PcsExtensions_sequence, hf_index, ett_gsm_map_PcsExtensions);
1299
1300   return offset;
1301 }
1302 static int dissect_pcsExtensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1303   return dissect_gsm_map_PcsExtensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pcsExtensions);
1304 }
1305
1306 static const ber_sequence_t ExtensionContainer_sequence[] = {
1307   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
1308   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pcsExtensions_impl },
1309   { 0, 0, 0, NULL }
1310 };
1311
1312 static int
1313 dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1314   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1315                                 ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer);
1316
1317   return offset;
1318 }
1319 static int dissect_extensionContainer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1320   return dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
1321 }
1322 static int dissect_extensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1323   return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
1324 }
1325
1326 static const ber_sequence_t Bss_APDU_sequence[] = {
1327   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
1328   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
1329   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1330   { 0, 0, 0, NULL }
1331 };
1332
1333 static int
1334 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_) {
1335   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1336                                 Bss_APDU_sequence, hf_index, ett_gsm_map_Bss_APDU);
1337
1338   return offset;
1339 }
1340 static int dissect_bss_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1341   return dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bss_APDU);
1342 }
1343 static int dissect_networkSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1344   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
1345 }
1346 static int dissect_gsm_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1347   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_BearerCapability);
1348 }
1349 static int dissect_isdn_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1350   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_isdn_BearerCapability);
1351 }
1352 static int dissect_chosenChannel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1353   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannel);
1354 }
1355 static int dissect_lowerLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1356   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lowerLayerCompatibility);
1357 }
1358 static int dissect_highLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1359   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_highLayerCompatibility);
1360 }
1361 static int dissect_channelType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1362   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_channelType);
1363 }
1364 static int dissect_callInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1365   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
1366 }
1367
1368
1369 static const value_string gsm_map_T_accessNetworkProtocolId_vals[] = {
1370   {   1, "ts3G-48006" },
1371   {   2, "ts3G-25413" },
1372   { 0, NULL }
1373 };
1374
1375
1376 static int
1377 dissect_gsm_map_T_accessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1378   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1379
1380   return offset;
1381 }
1382 static int dissect_accessNetworkProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1383   return dissect_gsm_map_T_accessNetworkProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_accessNetworkProtocolId);
1384 }
1385
1386
1387 static int
1388 dissect_gsm_map_SignalInfo2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1389   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1390                                     NULL);
1391
1392   return offset;
1393 }
1394 static int dissect_signalInfo2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1395   return dissect_gsm_map_SignalInfo2(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_signalInfo2);
1396 }
1397
1398 static const ber_sequence_t An_APDU_sequence[] = {
1399   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_accessNetworkProtocolId },
1400   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo2 },
1401   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1402   { 0, 0, 0, NULL }
1403 };
1404
1405 static int
1406 dissect_gsm_map_An_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1407   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1408                                 An_APDU_sequence, hf_index, ett_gsm_map_An_APDU);
1409
1410   return offset;
1411 }
1412 static int dissect_an_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1413   return dissect_gsm_map_An_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
1414 }
1415 static int dissect_an_APDU_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1416   return dissect_gsm_map_An_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_an_APDU);
1417 }
1418
1419 static const asn_namedbit SupportedCamelPhases_bits[] = {
1420   {  0, &hf_gsm_map_SupportedCamelPhases_phase1, -1, -1, NULL, NULL },
1421   {  1, &hf_gsm_map_SupportedCamelPhases_phase2, -1, -1, NULL, NULL },
1422   {  2, &hf_gsm_map_SupportedCamelPhases_phase3, -1, -1, NULL, NULL },
1423   {  3, &hf_gsm_map_SupportedCamelPhases_phase4, -1, -1, NULL, NULL },
1424   { 0, NULL, 0, 0, NULL, NULL }
1425 };
1426
1427 static int
1428 dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1429   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
1430                                  SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
1431                                  NULL);
1432
1433   return offset;
1434 }
1435 static int dissect_supportedCamelPhases(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1436   return dissect_gsm_map_SupportedCamelPhases(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
1437 }
1438 static int dissect_supportedCamelPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1439   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
1440 }
1441 static int dissect_supportedCamelPhasesInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1442   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInGMSC);
1443 }
1444
1445
1446 static int
1447 dissect_gsm_map_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1448   { proto_item *ti_tmp;
1449   ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
1450   proto_item_append_text(ti_tmp, ": NULL");
1451   }
1452
1453   return offset;
1454 }
1455 static int dissect_solsaSupportIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1456   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1457 }
1458 static int dissect_solsaSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1459   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
1460 }
1461 static int dissect_sendSubscriberData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1462   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sendSubscriberData);
1463 }
1464 static int dissect_longFTN_Supported_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1465   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longFTN_Supported);
1466 }
1467 static int dissect_informPreviousNetworkEntity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1468   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_informPreviousNetworkEntity);
1469 }
1470 static int dissect_cs_LCS_NotSupportedByUE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1471   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cs_LCS_NotSupportedByUE);
1472 }
1473 static int dissect_skipSubscriberDataUpdate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1474   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_skipSubscriberDataUpdate);
1475 }
1476 static int dissect_freezeTMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1477   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeTMSI);
1478 }
1479 static int dissect_freezeP_TMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1480   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeP_TMSI);
1481 }
1482 static int dissect_ho_NumberNotRequired(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1483   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ho_NumberNotRequired);
1484 }
1485 static int dissect_multipleBearerRequested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1486   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerRequested);
1487 }
1488 static int dissect_rab_ConfigurationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1489   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator);
1490 }
1491 static int dissect_multipleBearerNotSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1492   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerNotSupported);
1493 }
1494 static int dissect_segmentationProhibited(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1495   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_segmentationProhibited);
1496 }
1497 static int dissect_immediateResponsePreferred_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1498   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_immediateResponsePreferred);
1499 }
1500 static int dissect_roamingRestrictionDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1501   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictionDueToUnsupportedFeature);
1502 }
1503 static int dissect_broadcastInitEntitlement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1504   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_broadcastInitEntitlement);
1505 }
1506 static int dissect_tif_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1507   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI);
1508 }
1509 static int dissect_completeDataListIncluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1510   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_completeDataListIncluded);
1511 }
1512 static int dissect_vplmnAddressAllowed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1513   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vplmnAddressAllowed);
1514 }
1515 static int dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1516   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature);
1517 }
1518 static int dissect_lsaActiveModeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1519   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaActiveModeIndicator);
1520 }
1521 static int dissect_lmu_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1522   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmu_Indicator);
1523 }
1524 static int dissect_vbsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1525   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsGroupIndication);
1526 }
1527 static int dissect_vgcsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1528   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsGroupIndication);
1529 }
1530 static int dissect_camelSubscriptionInfoWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1531   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelSubscriptionInfoWithdraw);
1532 }
1533 static int dissect_allGPRSData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1534   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allGPRSData);
1535 }
1536 static int dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1537   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature);
1538 }
1539 static int dissect_allLSAData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1540   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allLSAData);
1541 }
1542 static int dissect_gmlc_ListWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1543   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_ListWithdraw);
1544 }
1545 static int dissect_msNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1546   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msNotReachable);
1547 }
1548 static int dissect_or_Interrogation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1549   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Interrogation);
1550 }
1551 static int dissect_suppress_T_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1552   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_T_CSI);
1553 }
1554 static int dissect_suppressionOfAnnouncement_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1555   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppressionOfAnnouncement);
1556 }
1557 static int dissect_ccbs_Call_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1558   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Call);
1559 }
1560 static int dissect_cugSubscriptionFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1561   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cugSubscriptionFlag);
1562 }
1563 static int dissect_forwardingInterrogationRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1564   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInterrogationRequired);
1565 }
1566 static int dissect_ccbs_Possible_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1567   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Possible);
1568 }
1569 static int dissect_keepCCBS_CallIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1570   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_keepCCBS_CallIndicator);
1571 }
1572 static int dissect_assumedIdle_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1573   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_assumedIdle);
1574 }
1575 static int dissect_camelBusy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1576   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelBusy);
1577 }
1578 static int dissect_notProvidedFromVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1579   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromVLR);
1580 }
1581 static int dissect_currentLocationRetrieved_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1582   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocationRetrieved);
1583 }
1584 static int dissect_sai_Present_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1585   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sai_Present);
1586 }
1587 static int dissect_notProvidedFromSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1588   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromSGSN);
1589 }
1590 static int dissect_ps_Detached_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1591   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_Detached);
1592 }
1593 static int dissect_ps_AttachedNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1594   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedNotReachableForPaging);
1595 }
1596 static int dissect_ps_AttachedReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1597   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_AttachedReachableForPaging);
1598 }
1599 static int dissect_pdp_ContextActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1600   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextActive);
1601 }
1602 static int dissect_cug_OutgoingAccess(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1603   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_OutgoingAccess);
1604 }
1605 static int dissect_orNotSupportedInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1606   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_orNotSupportedInGMSC);
1607 }
1608 static int dissect_uusCFInteraction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1609   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uusCFInteraction);
1610 }
1611 static int dissect_allInformationSent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1612   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
1613 }
1614 static int dissect_replaceB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1615   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_replaceB_Number);
1616 }
1617 static int dissect_gprsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1618   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSupportIndicator);
1619 }
1620 static int dissect_gprsNodeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1621   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsNodeIndicator);
1622 }
1623 static int dissect_noSM_RP_OA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1624   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_OA);
1625 }
1626 static int dissect_noSM_RP_DA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1627   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_DA);
1628 }
1629 static int dissect_moreMessagesToSend(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1630   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_moreMessagesToSend);
1631 }
1632 static int dissect_deliveryOutcomeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1633   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deliveryOutcomeIndicator);
1634 }
1635 static int dissect_alertReasonIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1636   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReasonIndicator);
1637 }
1638 static int dissect_locationInformationFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1639   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationFlag);
1640 }
1641 static int dissect_subscriberStateFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1642   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStateFlag);
1643 }
1644 static int dissect_currentLocation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1645   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_currentLocation);
1646 }
1647 static int dissect_imei_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1648   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei_flg);
1649 }
1650 static int dissect_ms_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1651   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_classmark);
1652 }
1653 static int dissect_mnpRequestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1654   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpRequestedInfo);
1655 }
1656 static int dissect_odb_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1657   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb);
1658 }
1659 static int dissect_supportedVLR_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1660   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases_flg);
1661 }
1662 static int dissect_supportedSGSN_CAMEL_Phases_flg_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1663   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases_flg);
1664 }
1665 static int dissect_notificationToCSE(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1666   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1667 }
1668 static int dissect_notificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1669   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToCSE);
1670 }
1671 static int dissect_csi_Active_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1672   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csi_Active);
1673 }
1674 static int dissect_tif_CSI_NotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1675   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI_NotificationToCSE);
1676 }
1677 static int dissect_csiActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1678   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_csiActive);
1679 }
1680 static int dissect_uplinkFree_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1681   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkFree);
1682 }
1683 static int dissect_uplinkRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1684   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequest);
1685 }
1686 static int dissect_uplinkReleaseIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1687   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseIndication);
1688 }
1689 static int dissect_releaseGroupCall_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1690   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseGroupCall);
1691 }
1692 static int dissect_uplinkRequestAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1693   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequestAck);
1694 }
1695 static int dissect_uplinkRejectCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1696   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRejectCommand);
1697 }
1698 static int dissect_uplinkSeizedCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1699   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkSeizedCommand);
1700 }
1701 static int dissect_uplinkReleaseCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1702   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseCommand);
1703 }
1704 static int dissect_privacyOverride_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1705   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privacyOverride);
1706 }
1707 static int dissect_verticalCoordinateRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1708   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_verticalCoordinateRequest);
1709 }
1710 static int dissect_ccbs_Busy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1711   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Busy);
1712 }
1713 static int dissect_unauthorisedMessageOriginator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1714   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorisedMessageOriginator);
1715 }
1716 static int dissect_gprsConnectionSuspended(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1717   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsConnectionSuspended);
1718 }
1719
1720
1721 static const value_string gsm_map_T_istSupportIndicator_vals[] = {
1722   {   0, "basicISTSupported" },
1723   {   1, "istCommandSupported" },
1724   { 0, NULL }
1725 };
1726
1727
1728 static int
1729 dissect_gsm_map_T_istSupportIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1730   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1731
1732   return offset;
1733 }
1734 static int dissect_istSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1735   return dissect_gsm_map_T_istSupportIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_istSupportIndicator);
1736 }
1737
1738
1739 static int
1740 dissect_gsm_map_OCTET_STRING_SIZE_1_6(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1741   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1742                                     NULL);
1743
1744   return offset;
1745 }
1746 static int dissect_subscriberDataStored_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1747   return dissect_gsm_map_OCTET_STRING_SIZE_1_6(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberDataStored);
1748 }
1749
1750
1751 static const value_string gsm_map_T_superChargerSupportedInServingNetworkEntity_vals[] = {
1752   {   0, "sendSubscriberData" },
1753   {   1, "subscriberDataStored" },
1754   { 0, NULL }
1755 };
1756
1757 static const ber_choice_t T_superChargerSupportedInServingNetworkEntity_choice[] = {
1758   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sendSubscriberData_impl },
1759   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_subscriberDataStored_impl },
1760   { 0, 0, 0, 0, NULL }
1761 };
1762
1763 static int
1764 dissect_gsm_map_T_superChargerSupportedInServingNetworkEntity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1765   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1766                               T_superChargerSupportedInServingNetworkEntity_choice, hf_index, ett_gsm_map_T_superChargerSupportedInServingNetworkEntity);
1767
1768   return offset;
1769 }
1770 static int dissect_superChargerSupportedInServingNetworkEntity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1771   return dissect_gsm_map_T_superChargerSupportedInServingNetworkEntity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_superChargerSupportedInServingNetworkEntity);
1772 }
1773
1774 static const asn_namedbit T_supportedLCS_CapabilitySets_bits[] = {
1775   {  0, &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet1, -1, -1, NULL, NULL },
1776   {  1, &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet2, -1, -1, NULL, NULL },
1777   {  2, &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet3, -1, -1, NULL, NULL },
1778   {  3, &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet4, -1, -1, NULL, NULL },
1779   { 0, NULL, 0, 0, NULL, NULL }
1780 };
1781
1782 static int
1783 dissect_gsm_map_T_supportedLCS_CapabilitySets(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1784   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
1785                                  T_supportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_T_supportedLCS_CapabilitySets,
1786                                  NULL);
1787
1788   return offset;
1789 }
1790 static int dissect_supportedLCS_CapabilitySets_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1791   return dissect_gsm_map_T_supportedLCS_CapabilitySets(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedLCS_CapabilitySets);
1792 }
1793
1794 static const asn_namedbit T_offeredCamel4CSIs_bits[] = {
1795   {  0, &hf_gsm_map_T_offeredCamel4CSIs_o_csi, -1, -1, NULL, NULL },
1796   {  1, &hf_gsm_map_T_offeredCamel4CSIs_d_csi, -1, -1, NULL, NULL },
1797   {  2, &hf_gsm_map_T_offeredCamel4CSIs_vt_csi, -1, -1, NULL, NULL },
1798   {  3, &hf_gsm_map_T_offeredCamel4CSIs_t_csi, -1, -1, NULL, NULL },
1799   {  4, &hf_gsm_map_T_offeredCamel4CSIs_mt_sms_csi, -1, -1, NULL, NULL },
1800   {  5, &hf_gsm_map_T_offeredCamel4CSIs_mg_csi, -1, -1, NULL, NULL },
1801   {  6, &hf_gsm_map_T_offeredCamel4CSIs_psi_enhancements, -1, -1, NULL, NULL },
1802   { 0, NULL, 0, 0, NULL, NULL }
1803 };
1804
1805 static int
1806 dissect_gsm_map_T_offeredCamel4CSIs(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1807   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
1808                                  T_offeredCamel4CSIs_bits, hf_index, ett_gsm_map_T_offeredCamel4CSIs,
1809                                  NULL);
1810
1811   return offset;
1812 }
1813 static int dissect_offeredCamel4CSIs_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1814   return dissect_gsm_map_T_offeredCamel4CSIs(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIs);
1815 }
1816
1817 static const ber_sequence_t Vlr_Capability_sequence[] = {
1818   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
1819   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1820   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_solsaSupportIndicator_impl },
1821   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_istSupportIndicator_impl },
1822   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_superChargerSupportedInServingNetworkEntity },
1823   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
1824   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedLCS_CapabilitySets_impl },
1825   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIs_impl },
1826   { 0, 0, 0, NULL }
1827 };
1828
1829 static int
1830 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_) {
1831   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1832                                 Vlr_Capability_sequence, hf_index, ett_gsm_map_Vlr_Capability);
1833
1834   return offset;
1835 }
1836 static int dissect_vlr_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1837   return dissect_gsm_map_Vlr_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Capability);
1838 }
1839
1840
1841 static int
1842 dissect_gsm_map_Imsi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1843
1844  tvbuff_t       *parameter_tvb;
1845  char           *digit_str;
1846
1847  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1848                                     &parameter_tvb);
1849  if (!parameter_tvb)
1850         return offset;
1851
1852  digit_str = unpack_digits(parameter_tvb, 0);
1853
1854  proto_tree_add_string(tree, hf_gsm_map_imsi_digits, parameter_tvb, 0, -1, digit_str);
1855  if (digit_str)
1856         g_free(digit_str);
1857  
1858
1859
1860
1861   return offset;
1862 }
1863 static int dissect_imsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1864   return dissect_gsm_map_Imsi(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
1865 }
1866 static int dissect_imsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1867   return dissect_gsm_map_Imsi(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
1868 }
1869
1870
1871 static int
1872 dissect_gsm_map_Lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1873   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1874                                     NULL);
1875
1876   return offset;
1877 }
1878 static int dissect_lmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1879   return dissect_gsm_map_Lmsi(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
1880 }
1881 static int dissect_lmsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1882   return dissect_gsm_map_Lmsi(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
1883 }
1884
1885
1886 static int
1887 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_) {
1888   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1889                                     NULL);
1890
1891   return offset;
1892 }
1893 static int dissect_msc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1894   return dissect_gsm_map_Msc_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
1895 }
1896 static int dissect_msc_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1897   return dissect_gsm_map_Msc_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
1898 }
1899
1900
1901 static int
1902 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_) {
1903   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1904                                     NULL);
1905
1906   return offset;
1907 }
1908 static int dissect_vlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1909   return dissect_gsm_map_Vlr_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
1910 }
1911 static int dissect_vlr_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1912   return dissect_gsm_map_Vlr_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
1913 }
1914 static int dissect_vlr_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1915   return dissect_gsm_map_Vlr_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_number);
1916 }
1917
1918
1919 static int
1920 dissect_gsm_map_OCTET_STRING_SIZE_5_17(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1921   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1922                                     NULL);
1923
1924   return offset;
1925 }
1926 static int dissect_v_gmlc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1927   return dissect_gsm_map_OCTET_STRING_SIZE_5_17(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_v_gmlc_Address);
1928 }
1929 static int dissect_rnc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1930   return dissect_gsm_map_OCTET_STRING_SIZE_5_17(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rnc_Address);
1931 }
1932 static int dissect_sgsn_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1933   return dissect_gsm_map_OCTET_STRING_SIZE_5_17(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
1934 }
1935 static int dissect_sgsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1936   return dissect_gsm_map_OCTET_STRING_SIZE_5_17(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
1937 }
1938
1939
1940 static int
1941 dissect_gsm_map_OCTET_STRING_SIZE_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1942   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1943                                     NULL);
1944
1945   return offset;
1946 }
1947 static int dissect_imeisv_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1948   return dissect_gsm_map_OCTET_STRING_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imeisv);
1949 }
1950 static int dissect_kc(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1951   return dissect_gsm_map_OCTET_STRING_SIZE_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_kc);
1952 }
1953 static int dissect_geographicalInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1954   return dissect_gsm_map_OCTET_STRING_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
1955 }
1956 static int dissect_groupKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1957   return dissect_gsm_map_OCTET_STRING_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKey);
1958 }
1959
1960 static const ber_sequence_t T_add_info_sequence[] = {
1961   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imeisv_impl },
1962   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_skipSubscriberDataUpdate_impl },
1963   { 0, 0, 0, NULL }
1964 };
1965
1966 static int
1967 dissect_gsm_map_T_add_info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1968   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1969                                 T_add_info_sequence, hf_index, ett_gsm_map_T_add_info);
1970
1971   return offset;
1972 }
1973 static int dissect_add_info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1974   return dissect_gsm_map_T_add_info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_add_info);
1975 }
1976
1977 static const ber_sequence_t UpdateLocationArg_sequence[] = {
1978   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
1979   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
1980   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_vlr_Number },
1981   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
1982   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1983   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
1984   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_informPreviousNetworkEntity_impl },
1985   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cs_LCS_NotSupportedByUE_impl },
1986   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_v_gmlc_Address_impl },
1987   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_add_info_impl },
1988   { 0, 0, 0, NULL }
1989 };
1990
1991 static int
1992 dissect_gsm_map_UpdateLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1993   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1994                                 UpdateLocationArg_sequence, hf_index, ett_gsm_map_UpdateLocationArg);
1995
1996   return offset;
1997 }
1998
1999
2000 static int
2001 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_) {
2002
2003  tvbuff_t       *parameter_tvb;
2004  char           *digit_str;
2005
2006  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2007                                     &parameter_tvb);
2008
2009  if (!parameter_tvb)
2010         return offset;
2011
2012  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
2013  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
2014  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
2015
2016  digit_str = unpack_digits(parameter_tvb, 1);
2017
2018  proto_tree_add_string(tree, hf_gsm_map_map_hlr_number_digits, parameter_tvb, 1, -1, digit_str);
2019  if (digit_str)
2020         g_free(digit_str);
2021
2022   return offset;
2023 }
2024 static int dissect_hlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2025   return dissect_gsm_map_Hlr_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_Number);
2026 }
2027
2028 static const ber_sequence_t UpdateLocationRes_sequence[] = {
2029   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
2030   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2031   { 0, 0, 0, NULL }
2032 };
2033
2034 static int
2035 dissect_gsm_map_UpdateLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2036   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2037                                 UpdateLocationRes_sequence, hf_index, ett_gsm_map_UpdateLocationRes);
2038
2039   return offset;
2040 }
2041
2042
2043 static int
2044 dissect_gsm_map_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2045   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2046                                     NULL);
2047
2048   return offset;
2049 }
2050 static int dissect_teleservice(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2051   return dissect_gsm_map_Teleservice(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
2052 }
2053 static int dissect_teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2054   return dissect_gsm_map_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
2055 }
2056 static int dissect_teleserviceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2057   return dissect_gsm_map_Teleservice(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList_item);
2058 }
2059
2060
2061 static int
2062 dissect_gsm_map_Bearerservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2063   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2064                                     NULL);
2065
2066   return offset;
2067 }
2068 static int dissect_bearerservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2069   return dissect_gsm_map_Bearerservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerservice);
2070 }
2071 static int dissect_bearerserviceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2072   return dissect_gsm_map_Bearerservice(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bearerserviceList_item);
2073 }
2074
2075
2076 static const value_string gsm_map_CancellationType_vals[] = {
2077   {   0, "updateProcedure" },
2078   {   1, "subscriptionWithdraw" },
2079   { 0, NULL }
2080 };
2081
2082
2083 static int
2084 dissect_gsm_map_CancellationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2085   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2086
2087   return offset;
2088 }
2089 static int dissect_cancellationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2090   return dissect_gsm_map_CancellationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cancellationType);
2091 }
2092
2093 static const ber_sequence_t T_imsi_WithLMSI_sequence[] = {
2094   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2095   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lmsi },
2096   { 0, 0, 0, NULL }
2097 };
2098
2099 static int
2100 dissect_gsm_map_T_imsi_WithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2101   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2102                                 T_imsi_WithLMSI_sequence, hf_index, ett_gsm_map_T_imsi_WithLMSI);
2103
2104   return offset;
2105 }
2106 static int dissect_imsi_WithLMSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2107   return dissect_gsm_map_T_imsi_WithLMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi_WithLMSI);
2108 }
2109
2110
2111 static const value_string gsm_map_T_identity_vals[] = {
2112   {   0, "imsi" },
2113   {   1, "imsi-WithLMSI" },
2114   { 0, NULL }
2115 };
2116
2117 static const ber_choice_t T_identity_choice[] = {
2118   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2119   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
2120   { 0, 0, 0, 0, NULL }
2121 };
2122
2123 static int
2124 dissect_gsm_map_T_identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2125   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2126                               T_identity_choice, hf_index, ett_gsm_map_T_identity);
2127
2128   return offset;
2129 }
2130 static int dissect_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2131   return dissect_gsm_map_T_identity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_identity);
2132 }
2133
2134 static const ber_sequence_t CancelLocationArg_sequence[] = {
2135   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
2136   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cancellationType },
2137   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2138   { 0, 0, 0, NULL }
2139 };
2140
2141 static int
2142 dissect_gsm_map_CancelLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2143   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2144                                 CancelLocationArg_sequence, hf_index, ett_gsm_map_CancelLocationArg);
2145
2146   return offset;
2147 }
2148
2149 static const ber_sequence_t CancelLocationRes_sequence[] = {
2150   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2151   { 0, 0, 0, NULL }
2152 };
2153
2154 static int
2155 dissect_gsm_map_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2156   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2157                                 CancelLocationRes_sequence, hf_index, ett_gsm_map_CancelLocationRes);
2158
2159   return offset;
2160 }
2161
2162
2163 static int
2164 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_) {
2165   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2166                                     NULL);
2167
2168   return offset;
2169 }
2170 static int dissect_sgsn_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2171   return dissect_gsm_map_Sgsn_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
2172 }
2173 static int dissect_sgsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2174   return dissect_gsm_map_Sgsn_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
2175 }
2176
2177 static const ber_sequence_t PurgeMS_Arg_sequence[] = {
2178   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2179   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
2180   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
2181   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2182   { 0, 0, 0, NULL }
2183 };
2184
2185 static int
2186 dissect_gsm_map_PurgeMS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2187   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2188                                 PurgeMS_Arg_sequence, hf_index, ett_gsm_map_PurgeMS_Arg);
2189
2190   return offset;
2191 }
2192
2193 static const ber_sequence_t PurgeMS_Res_sequence[] = {
2194   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeTMSI_impl },
2195   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeP_TMSI_impl },
2196   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2197   { 0, 0, 0, NULL }
2198 };
2199
2200 static int
2201 dissect_gsm_map_PurgeMS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2202   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2203                                 PurgeMS_Res_sequence, hf_index, ett_gsm_map_PurgeMS_Res);
2204
2205   return offset;
2206 }
2207
2208
2209 static int
2210 dissect_gsm_map_Tmsi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2211   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2212                                     NULL);
2213
2214   return offset;
2215 }
2216
2217
2218 static int
2219 dissect_gsm_map_OCTET_STRING_SIZE_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2220   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2221                                     NULL);
2222
2223   return offset;
2224 }
2225 static int dissect_rand(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2226   return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rand);
2227 }
2228 static int dissect_ck(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2229   return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ck);
2230 }
2231 static int dissect_ik(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2232   return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ik);
2233 }
2234 static int dissect_autn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2235   return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_autn);
2236 }
2237
2238
2239 static int
2240 dissect_gsm_map_OCTET_STRING_SIZE_4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2241   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2242                                     NULL);
2243
2244   return offset;
2245 }
2246 static int dissect_sres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2247   return dissect_gsm_map_OCTET_STRING_SIZE_4(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sres);
2248 }
2249 static int dissect_cug_Interlock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2250   return dissect_gsm_map_OCTET_STRING_SIZE_4(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Interlock);
2251 }
2252 static int dissect_teid_ForGnAndGp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2253   return dissect_gsm_map_OCTET_STRING_SIZE_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForGnAndGp);
2254 }
2255 static int dissect_teid_ForIu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2256   return dissect_gsm_map_OCTET_STRING_SIZE_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teid_ForIu);
2257 }
2258 static int dissect_chargingId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2259   return dissect_gsm_map_OCTET_STRING_SIZE_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingId);
2260 }
2261
2262 static const ber_sequence_t T_authenticationSetList_item_sequence[] = {
2263   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
2264   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
2265   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
2266   { 0, 0, 0, NULL }
2267 };
2268
2269 static int
2270 dissect_gsm_map_T_authenticationSetList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2271   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2272                                 T_authenticationSetList_item_sequence, hf_index, ett_gsm_map_T_authenticationSetList_item);
2273
2274   return offset;
2275 }
2276 static int dissect_authenticationSetList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2277   return dissect_gsm_map_T_authenticationSetList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList_item);
2278 }
2279
2280 static const ber_sequence_t SendId_authenticationSetList_sequence_of[1] = {
2281   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_authenticationSetList_item },
2282 };
2283
2284 static int
2285 dissect_gsm_map_SendId_authenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2286   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2287                                    SendId_authenticationSetList_sequence_of, hf_index, ett_gsm_map_SendId_authenticationSetList);
2288
2289   return offset;
2290 }
2291 static int dissect_sendId_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2292   return dissect_gsm_map_SendId_authenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sendId_authenticationSetList);
2293 }
2294
2295 static const ber_sequence_t SendIdentificationRes_sequence[] = {
2296   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
2297   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sendId_authenticationSetList },
2298   { 0, 0, 0, NULL }
2299 };
2300
2301 static int
2302 dissect_gsm_map_SendIdentificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2303   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2304                                 SendIdentificationRes_sequence, hf_index, ett_gsm_map_SendIdentificationRes);
2305
2306   return offset;
2307 }
2308
2309
2310 static int
2311 dissect_gsm_map_OCTET_STRING_SIZE_5_7(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2312   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2313                                     NULL);
2314
2315   return offset;
2316 }
2317 static int dissect_targetCellId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2318   return dissect_gsm_map_OCTET_STRING_SIZE_5_7(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
2319 }
2320 static int dissect_targetCellId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2321   return dissect_gsm_map_OCTET_STRING_SIZE_5_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
2322 }
2323
2324 static const ber_sequence_t PrepareHO_Arg_sequence[] = {
2325   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_targetCellId },
2326   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
2327   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
2328   { 0, 0, 0, NULL }
2329 };
2330
2331 static int
2332 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_) {
2333   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2334                                 PrepareHO_Arg_sequence, hf_index, ett_gsm_map_PrepareHO_Arg);
2335
2336   return offset;
2337 }
2338
2339
2340 static int
2341 dissect_gsm_map_OCTET_STRING_SIZE_7(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2342   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2343                                     NULL);
2344
2345   return offset;
2346 }
2347 static int dissect_targetRNCId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2348   return dissect_gsm_map_OCTET_STRING_SIZE_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_targetRNCId);
2349 }
2350 static int dissect_cellIdFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2351   return dissect_gsm_map_OCTET_STRING_SIZE_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdFixedLength);
2352 }
2353 static int dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2354   return dissect_gsm_map_OCTET_STRING_SIZE_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength);
2355 }
2356
2357
2358 static int
2359 dissect_gsm_map_OCTET_STRING_SIZE_18_100(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2360   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2361                                     NULL);
2362
2363   return offset;
2364 }
2365 static int dissect_integrityProtectionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2366   return dissect_gsm_map_OCTET_STRING_SIZE_18_100(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionInfo);
2367 }
2368 static int dissect_encryptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2369   return dissect_gsm_map_OCTET_STRING_SIZE_18_100(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionInfo);
2370 }
2371
2372
2373 static int
2374 dissect_gsm_map_OCTET_STRING_SIZE_3_13(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2375   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2376                                     NULL);
2377
2378   return offset;
2379 }
2380 static int dissect_radioResourceInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2381   return dissect_gsm_map_OCTET_STRING_SIZE_3_13(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
2382 }
2383 static int dissect_radioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2384   return dissect_gsm_map_OCTET_STRING_SIZE_3_13(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceInformation);
2385 }
2386
2387
2388 static int
2389 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_) {
2390   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2391                                     NULL);
2392
2393   return offset;
2394 }
2395 static int dissect_allowedGSM_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2396   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedGSM_Algorithms);
2397 }
2398 static int dissect_bssmap_ServiceHandover(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2399   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
2400 }
2401 static int dissect_bssmap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2402   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandover);
2403 }
2404 static int dissect_ranap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2405   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover);
2406 }
2407 static int dissect_integrityProtectionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2408   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithm);
2409 }
2410 static int dissect_encryptionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2411   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithm);
2412 }
2413 static int dissect_chosenChannelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2414   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannelInfo);
2415 }
2416 static int dissect_chosenSpeechVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2417   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenSpeechVersion);
2418 }
2419 static int dissect_category_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2420   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_category);
2421 }
2422 static int dissect_interCUG_Restrictions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2423   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_interCUG_Restrictions);
2424 }
2425 static int dissect_lsaAttributes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2426   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaAttributes);
2427 }
2428 static int dissect_ss_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2429   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List_item);
2430 }
2431 static int dissect_ss_EventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2432   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList_item);
2433 }
2434 static int dissect_alertingPattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2435   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
2436 }
2437 static int dissect_alertingPattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2438   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
2439 }
2440 static int dissect_uuIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2441   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uuIndicator);
2442 }
2443 static int dissect_call_Direction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2444   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_call_Direction);
2445 }
2446 static int dissect_ussd_DataCodingScheme(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2447   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_DataCodingScheme);
2448 }
2449 static int dissect_T_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2450   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_T_CauseValueCriteria_item);
2451 }
2452 static int dissect_O_CauseValueCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2453   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_CauseValueCriteria_item);
2454 }
2455 static int dissect_MobilityTriggers_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2456   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_MobilityTriggers_item);
2457 }
2458 static int dissect_ss_Event_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2459   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Event);
2460 }
2461 static int dissect_cipheringAlgorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2462   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cipheringAlgorithm);
2463 }
2464 static int dissect_lcs_Priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2465   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Priority);
2466 }
2467 static int dissect_horizontal_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2468   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_horizontal_accuracy);
2469 }
2470 static int dissect_vertical_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2471   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vertical_accuracy);
2472 }
2473
2474
2475 static int
2476 dissect_gsm_map_OCTET_STRING_SIZE_1_9(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2477   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2478                                     NULL);
2479
2480   return offset;
2481 }
2482 static int dissect_integrityProtectionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2483   return dissect_gsm_map_OCTET_STRING_SIZE_1_9(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithms);
2484 }
2485 static int dissect_encryptionAlgorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2486   return dissect_gsm_map_OCTET_STRING_SIZE_1_9(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithms);
2487 }
2488 static int dissect_qos_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2489   return dissect_gsm_map_OCTET_STRING_SIZE_1_9(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Requested);
2490 }
2491 static int dissect_qos_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2492   return dissect_gsm_map_OCTET_STRING_SIZE_1_9(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Negotiated);
2493 }
2494
2495 static const ber_sequence_t T_allowedUMTS_Algorithms_sequence[] = {
2496   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithms_impl },
2497   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithms_impl },
2498   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2499   { 0, 0, 0, NULL }
2500 };
2501
2502 static int
2503 dissect_gsm_map_T_allowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2504   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2505                                 T_allowedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_T_allowedUMTS_Algorithms);
2506
2507   return offset;
2508 }
2509 static int dissect_allowedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2510   return dissect_gsm_map_T_allowedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allowedUMTS_Algorithms);
2511 }
2512
2513
2514
2515 static int
2516 dissect_gsm_map_INTEGER_1_255(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2517   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2518
2519   return offset;
2520 }
2521 static int dissect_rab_Id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2522   return dissect_gsm_map_INTEGER_1_255(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
2523 }
2524 static int dissect_rab_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2525   return dissect_gsm_map_INTEGER_1_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_Id);
2526 }
2527
2528 static const ber_sequence_t T_radioResourceList_item_sequence[] = {
2529   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_radioResourceInformation },
2530   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
2531   { 0, 0, 0, NULL }
2532 };
2533
2534 static int
2535 dissect_gsm_map_T_radioResourceList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2536   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2537                                 T_radioResourceList_item_sequence, hf_index, ett_gsm_map_T_radioResourceList_item);
2538
2539   return offset;
2540 }
2541 static int dissect_radioResourceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2542   return dissect_gsm_map_T_radioResourceList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList_item);
2543 }
2544
2545 static const ber_sequence_t T_radioResourceList_sequence_of[1] = {
2546   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_radioResourceList_item },
2547 };
2548
2549 static int
2550 dissect_gsm_map_T_radioResourceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2551   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2552                                    T_radioResourceList_sequence_of, hf_index, ett_gsm_map_T_radioResourceList);
2553
2554   return offset;
2555 }
2556 static int dissect_radioResourceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2557   return dissect_gsm_map_T_radioResourceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_radioResourceList);
2558 }
2559
2560 static const ber_sequence_t T_bssmap_ServiceHandoverList_item_sequence[] = {
2561   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_bssmap_ServiceHandover },
2562   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
2563   { 0, 0, 0, NULL }
2564 };
2565
2566 static int
2567 dissect_gsm_map_T_bssmap_ServiceHandoverList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2568   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2569                                 T_bssmap_ServiceHandoverList_item_sequence, hf_index, ett_gsm_map_T_bssmap_ServiceHandoverList_item);
2570
2571   return offset;
2572 }
2573 static int dissect_bssmap_ServiceHandoverList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2574   return dissect_gsm_map_T_bssmap_ServiceHandoverList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList_item);
2575 }
2576
2577 static const ber_sequence_t T_bssmap_ServiceHandoverList_sequence_of[1] = {
2578   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bssmap_ServiceHandoverList_item },
2579 };
2580
2581 static int
2582 dissect_gsm_map_T_bssmap_ServiceHandoverList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2583   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2584                                    T_bssmap_ServiceHandoverList_sequence_of, hf_index, ett_gsm_map_T_bssmap_ServiceHandoverList);
2585
2586   return offset;
2587 }
2588 static int dissect_bssmap_ServiceHandoverList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2589   return dissect_gsm_map_T_bssmap_ServiceHandoverList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bssmap_ServiceHandoverList);
2590 }
2591
2592
2593 static int
2594 dissect_gsm_map_OCTET_STRING_SIZE_1_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2595   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2596                                     NULL);
2597
2598   return offset;
2599 }
2600 static int dissect_asciCallReference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2601   return dissect_gsm_map_OCTET_STRING_SIZE_1_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
2602 }
2603 static int dissect_asciCallReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2604   return dissect_gsm_map_OCTET_STRING_SIZE_1_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
2605 }
2606 static int dissect_callReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2607   return dissect_gsm_map_OCTET_STRING_SIZE_1_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReferenceNumber);
2608 }
2609 static int dissect_mSNetworkCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2610   return dissect_gsm_map_OCTET_STRING_SIZE_1_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSNetworkCapability);
2611 }
2612
2613
2614 static int
2615 dissect_gsm_map_OCTET_STRING_SIZE_2_87(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2616   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2617                                     NULL);
2618
2619   return offset;
2620 }
2621 static int dissect_geran_classmark_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2622   return dissect_gsm_map_OCTET_STRING_SIZE_2_87(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geran_classmark);
2623 }
2624
2625
2626 static int
2627 dissect_gsm_map_OCTET_STRING_SIZE_1_4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2628   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2629                                     NULL);
2630
2631   return offset;
2632 }
2633 static int dissect_iuCurrentlyUsedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2634   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuCurrentlyUsedCodec);
2635 }
2636 static int dissect_codec1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2637   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec1);
2638 }
2639 static int dissect_codec2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2640   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec2);
2641 }
2642 static int dissect_codec3_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2643   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec3);
2644 }
2645 static int dissect_codec4_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2646   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec4);
2647 }
2648 static int dissect_codec5_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2649   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec5);
2650 }
2651 static int dissect_codec6_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2652   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec6);
2653 }
2654 static int dissect_codec7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2655   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec7);
2656 }
2657 static int dissect_codec8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2658   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec8);
2659 }
2660 static int dissect_iuSelectedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2661   return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuSelectedCodec);
2662 }
2663
2664 static const ber_sequence_t T_geranCodecList_sequence[] = {
2665   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl },
2666   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl },
2667   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl },
2668   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl },
2669   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl },
2670   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl },
2671   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl },
2672   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl },
2673   { BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2674   { 0, 0, 0, NULL }
2675 };
2676
2677 static int
2678 dissect_gsm_map_T_geranCodecList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2679   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2680                                 T_geranCodecList_sequence, hf_index, ett_gsm_map_T_geranCodecList);
2681
2682   return offset;
2683 }
2684 static int dissect_geranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2685   return dissect_gsm_map_T_geranCodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geranCodecList);
2686 }
2687
2688 static const ber_sequence_t T_utranCodecList_sequence[] = {
2689   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl },
2690   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl },
2691   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl },
2692   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl },
2693   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl },
2694   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl },
2695   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl },
2696   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl },
2697   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2698   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geranCodecList_impl },
2699   { 0, 0, 0, NULL }
2700 };
2701
2702 static int
2703 dissect_gsm_map_T_utranCodecList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2704   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2705                                 T_utranCodecList_sequence, hf_index, ett_gsm_map_T_utranCodecList);
2706
2707   return offset;
2708 }
2709 static int dissect_utranCodecList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2710   return dissect_gsm_map_T_utranCodecList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_utranCodecList);
2711 }
2712
2713 static const ber_sequence_t T_iuSupportedCodecsList_sequence[] = {
2714   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_utranCodecList_impl },
2715   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2716   { 0, 0, 0, NULL }
2717 };
2718
2719 static int
2720 dissect_gsm_map_T_iuSupportedCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2721   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2722                                 T_iuSupportedCodecsList_sequence, hf_index, ett_gsm_map_T_iuSupportedCodecsList);
2723
2724   return offset;
2725 }
2726 static int dissect_iuSupportedCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2727   return dissect_gsm_map_T_iuSupportedCodecsList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuSupportedCodecsList);
2728 }
2729
2730
2731 static int
2732 dissect_gsm_map_BIT_STRING_SIZE_1_128(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2733   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2734                                  NULL, hf_index, -1,
2735                                  NULL);
2736
2737   return offset;
2738 }
2739 static int dissect_uesbi_IuA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2740   return dissect_gsm_map_BIT_STRING_SIZE_1_128(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuA);
2741 }
2742 static int dissect_uesbi_IuB_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2743   return dissect_gsm_map_BIT_STRING_SIZE_1_128(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_IuB);
2744 }
2745
2746 static const ber_sequence_t T_uesbi_Iu_sequence[] = {
2747   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuA_impl },
2748   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuB_impl },
2749   { 0, 0, 0, NULL }
2750 };
2751
2752 static int
2753 dissect_gsm_map_T_uesbi_Iu(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2754   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2755                                 T_uesbi_Iu_sequence, hf_index, ett_gsm_map_T_uesbi_Iu);
2756
2757   return offset;
2758 }
2759 static int dissect_uesbi_Iu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2760   return dissect_gsm_map_T_uesbi_Iu(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uesbi_Iu);
2761 }
2762
2763 static const ber_sequence_t PrepareHandoverV3Arg_sequence[] = {
2764   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetCellId_impl },
2765   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
2766   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_targetRNCId_impl },
2767   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
2768   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multipleBearerRequested_impl },
2769   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
2770   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionInfo_impl },
2771   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionInfo_impl },
2772   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceInformation_impl },
2773   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedGSM_Algorithms_impl },
2774   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allowedUMTS_Algorithms_impl },
2775   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_radioResourceList_impl },
2776   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2777   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_Id_impl },
2778   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandover_impl },
2779   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ranap_ServiceHandover_impl },
2780   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bssmap_ServiceHandoverList_impl },
2781   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_asciCallReference_impl },
2782   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geran_classmark_impl },
2783   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuCurrentlyUsedCodec_impl },
2784   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuSupportedCodecsList_impl },
2785   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rab_ConfigurationIndicator_impl },
2786   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_Iu_impl },
2787   { 0, 0, 0, NULL }
2788 };
2789
2790 static int
2791 dissect_gsm_map_PrepareHandoverV3Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2792   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2793                                 PrepareHandoverV3Arg_sequence, hf_index, ett_gsm_map_PrepareHandoverV3Arg);
2794
2795   return offset;
2796 }
2797
2798
2799 static int
2800 dissect_gsm_map_HandoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2801   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2802                                     NULL);
2803
2804   return offset;
2805 }
2806 static int dissect_handoverNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2807   return dissect_gsm_map_HandoverNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
2808 }
2809 static int dissect_handoverNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2810   return dissect_gsm_map_HandoverNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
2811 }
2812
2813 static const ber_sequence_t PrepareHO_Res_sequence[] = {
2814   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
2815   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
2816   { 0, 0, 0, NULL }
2817 };
2818
2819 static int
2820 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_) {
2821   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2822                                 PrepareHO_Res_sequence, hf_index, ett_gsm_map_PrepareHO_Res);
2823
2824   return offset;
2825 }
2826
2827 static const ber_sequence_t T_relocationNumberList_item_sequence[] = {
2828   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
2829   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id },
2830   { 0, 0, 0, NULL }
2831 };
2832
2833 static int
2834 dissect_gsm_map_T_relocationNumberList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2835   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2836                                 T_relocationNumberList_item_sequence, hf_index, ett_gsm_map_T_relocationNumberList_item);
2837
2838   return offset;
2839 }
2840 static int dissect_relocationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2841   return dissect_gsm_map_T_relocationNumberList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList_item);
2842 }
2843
2844 static const ber_sequence_t T_relocationNumberList_sequence_of[1] = {
2845   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_relocationNumberList_item },
2846 };
2847
2848 static int
2849 dissect_gsm_map_T_relocationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2850   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2851                                    T_relocationNumberList_sequence_of, hf_index, ett_gsm_map_T_relocationNumberList);
2852
2853   return offset;
2854 }
2855 static int dissect_relocationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2856   return dissect_gsm_map_T_relocationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList);
2857 }
2858
2859
2860
2861 static int
2862 dissect_gsm_map_INTEGER_1_7(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2863   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2864
2865   return offset;
2866 }
2867 static int dissect_multicallBearerInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2868   return dissect_gsm_map_INTEGER_1_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multicallBearerInfo);
2869 }
2870
2871 static const ber_sequence_t T_selectedUMTS_Algorithms_sequence[] = {
2872   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithm_impl },
2873   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithm_impl },
2874   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2875   { 0, 0, 0, NULL }
2876 };
2877
2878 static int
2879 dissect_gsm_map_T_selectedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2880   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2881                                 T_selectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_T_selectedUMTS_Algorithms);
2882
2883   return offset;
2884 }
2885 static int dissect_selectedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2886   return dissect_gsm_map_T_selectedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedUMTS_Algorithms);
2887 }
2888
2889 static const ber_sequence_t T_chosenRadioResourceInformation_sequence[] = {
2890   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannelInfo_impl },
2891   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenSpeechVersion_impl },
2892   { 0, 0, 0, NULL }
2893 };
2894
2895 static int
2896 dissect_gsm_map_T_chosenRadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2897   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2898                                 T_chosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_T_chosenRadioResourceInformation);
2899
2900   return offset;
2901 }
2902 static int dissect_chosenRadioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2903   return dissect_gsm_map_T_chosenRadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenRadioResourceInformation);
2904 }
2905
2906 static const ber_sequence_t T_iuAvailableCodecsList_sequence[] = {
2907   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl },
2908   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl },
2909   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl },
2910   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl },
2911   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl },
2912   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl },
2913   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl },
2914   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl },
2915   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2916   { 0, 0, 0, NULL }
2917 };
2918
2919 static int
2920 dissect_gsm_map_T_iuAvailableCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2921   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2922                                 T_iuAvailableCodecsList_sequence, hf_index, ett_gsm_map_T_iuAvailableCodecsList);
2923
2924   return offset;
2925 }
2926 static int dissect_iuAvailableCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2927   return dissect_gsm_map_T_iuAvailableCodecsList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList);
2928 }
2929
2930 static const ber_sequence_t PrepareHandoverV3Res_sequence[] = {
2931   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_handoverNumber_impl },
2932   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_relocationNumberList_impl },
2933   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl },
2934   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicallBearerInfo_impl },
2935   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_multipleBearerNotSupported },
2936   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl },
2937   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl },
2938   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2939   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuSelectedCodec_impl },
2940   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuAvailableCodecsList_impl },
2941   { 0, 0, 0, NULL }
2942 };
2943
2944 static int
2945 dissect_gsm_map_PrepareHandoverV3Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2946   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2947                                 PrepareHandoverV3Res_sequence, hf_index, ett_gsm_map_PrepareHandoverV3Res);
2948
2949   return offset;
2950 }
2951
2952 static const ber_sequence_t SendEndSignalV9Arg_sequence[] = {
2953   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU },
2954   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2955   { 0, 0, 0, NULL }
2956 };
2957
2958 static int
2959 dissect_gsm_map_SendEndSignalV9Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2960   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2961                                 SendEndSignalV9Arg_sequence, hf_index, ett_gsm_map_SendEndSignalV9Arg);
2962
2963   return offset;
2964 }
2965
2966
2967 static int
2968 dissect_gsm_map_T_targetMSC_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2969   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2970                                     NULL);
2971
2972   return offset;
2973 }
2974 static int dissect_targetMSC_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2975   return dissect_gsm_map_T_targetMSC_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
2976 }
2977
2978 static const ber_sequence_t PrepareSubsequentHO_Arg_sequence[] = {
2979   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetCellId },
2980   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetMSC_Number },
2981   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
2982   { 0, 0, 0, NULL }
2983 };
2984
2985 static int
2986 dissect_gsm_map_PrepareSubsequentHO_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2987   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2988                                 PrepareSubsequentHO_Arg_sequence, hf_index, ett_gsm_map_PrepareSubsequentHO_Arg);
2989
2990   return offset;
2991 }
2992
2993
2994 static int
2995 dissect_gsm_map_SendAuthenticationInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2996   offset = dissect_gsm_map_Imsi(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2997
2998   return offset;
2999 }
3000
3001
3002
3003 static int
3004 dissect_gsm_map_INTEGER_1_5(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3005   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3006
3007   return offset;
3008 }
3009 static int dissect_numberOfRequestedVectors(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3010   return dissect_gsm_map_INTEGER_1_5(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfRequestedVectors);
3011 }
3012 static int dissect_numberOfForwarding_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3013   return dissect_gsm_map_INTEGER_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfForwarding);
3014 }
3015 static int dissect_ccbs_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3016   return dissect_gsm_map_INTEGER_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Index);
3017 }
3018
3019
3020 static int
3021 dissect_gsm_map_OCTET_STRING_SIZE_14(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3022   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3023                                     NULL);
3024
3025   return offset;
3026 }
3027 static int dissect_auts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3028   return dissect_gsm_map_OCTET_STRING_SIZE_14(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_auts);
3029 }
3030
3031 static const ber_sequence_t T_re_synchronisationInfo_sequence[] = {
3032   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3033   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_auts },
3034   { 0, 0, 0, NULL }
3035 };
3036
3037 static int
3038 dissect_gsm_map_T_re_synchronisationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3039   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3040                                 T_re_synchronisationInfo_sequence, hf_index, ett_gsm_map_T_re_synchronisationInfo);
3041
3042   return offset;
3043 }
3044 static int dissect_re_synchronisationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3045   return dissect_gsm_map_T_re_synchronisationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_synchronisationInfo);
3046 }
3047
3048
3049 static const value_string gsm_map_T_requestingNodeType_vals[] = {
3050   {   0, "vlr" },
3051   {   1, "sgsn" },
3052   { 0, NULL }
3053 };
3054
3055
3056 static int
3057 dissect_gsm_map_T_requestingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3058   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3059
3060   return offset;
3061 }
3062 static int dissect_requestingNodeType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3063   return dissect_gsm_map_T_requestingNodeType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingNodeType);
3064 }
3065
3066
3067 static int
3068 dissect_gsm_map_OCTET_STRING_SIZE_3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3069   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3070                                     NULL);
3071
3072   return offset;
3073 }
3074 static int dissect_requestingPLMN_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3075   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingPLMN_Id);
3076 }
3077 static int dissect_groupid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3078   return dissect_gsm_map_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupid);
3079 }
3080 static int dissect_groupId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3081   return dissect_gsm_map_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupId);
3082 }
3083 static int dissect_lsaIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3084   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentity);
3085 }
3086 static int dissect_naea_PreferredCIC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3087   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCIC);
3088 }
3089 static int dissect_lsaIdentityList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3090   return dissect_gsm_map_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList_item);
3091 }
3092 static int dissect_selectedLSA_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3093   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSA_Id);
3094 }
3095 static int dissect_selectedLSAIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3096   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedLSAIdentity);
3097 }
3098 static int dissect_ms_Classmark2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3099   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ms_Classmark2);
3100 }
3101
3102 static const ber_sequence_t SendAuthenticationInfoArgV3_sequence[] = {
3103   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3104   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
3105   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
3106   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immediateResponsePreferred_impl },
3107   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_synchronisationInfo },
3108   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3109   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingNodeType_impl },
3110   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingPLMN_Id_impl },
3111   { 0, 0, 0, NULL }
3112 };
3113
3114 static int
3115 dissect_gsm_map_SendAuthenticationInfoArgV3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3116   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3117                                 SendAuthenticationInfoArgV3_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoArgV3);
3118
3119   return offset;
3120 }
3121
3122 static const ber_sequence_t SendAuthenticationInfoRes_item_sequence[] = {
3123   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3124   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
3125   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3126   { 0, 0, 0, NULL }
3127 };
3128
3129 static int
3130 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_) {
3131   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3132                                 SendAuthenticationInfoRes_item_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoRes_item);
3133
3134   return offset;
3135 }
3136 static int dissect_SendAuthenticationInfoRes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3137   return dissect_gsm_map_SendAuthenticationInfoRes_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes_item);
3138 }
3139
3140 static const ber_sequence_t SendAuthenticationInfoRes_sequence_of[1] = {
3141   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SendAuthenticationInfoRes_item },
3142 };
3143
3144 static int
3145 dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3146   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3147                                    SendAuthenticationInfoRes_sequence_of, hf_index, ett_gsm_map_SendAuthenticationInfoRes);
3148
3149   return offset;
3150 }
3151
3152 static const ber_sequence_t T_tripletList_item_sequence[] = {
3153   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3154   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
3155   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
3156   { 0, 0, 0, NULL }
3157 };
3158
3159 static int
3160 dissect_gsm_map_T_tripletList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3161   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3162                                 T_tripletList_item_sequence, hf_index, ett_gsm_map_T_tripletList_item);
3163
3164   return offset;
3165 }
3166 static int dissect_tripletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3167   return dissect_gsm_map_T_tripletList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList_item);
3168 }
3169
3170 static const ber_sequence_t T_tripletList_sequence_of[1] = {
3171   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tripletList_item },
3172 };
3173
3174 static int
3175 dissect_gsm_map_T_tripletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3176   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3177                                    T_tripletList_sequence_of, hf_index, ett_gsm_map_T_tripletList);
3178
3179   return offset;
3180 }
3181 static int dissect_tripletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3182   return dissect_gsm_map_T_tripletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList);
3183 }
3184
3185
3186 static int
3187 dissect_gsm_map_OCTET_STRING_SIZE_4_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3188   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3189                                     NULL);
3190
3191   return offset;
3192 }
3193 static int dissect_xres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3194   return dissect_gsm_map_OCTET_STRING_SIZE_4_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_xres);
3195 }
3196
3197 static const ber_sequence_t T_quintupletList_item_sequence[] = {
3198   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
3199   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_xres },
3200   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck },
3201   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik },
3202   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_autn },
3203   { 0, 0, 0, NULL }
3204 };
3205
3206 static int
3207 dissect_gsm_map_T_quintupletList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3208   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3209                                 T_quintupletList_item_sequence, hf_index, ett_gsm_map_T_quintupletList_item);
3210
3211   return offset;
3212 }
3213 static int dissect_quintupletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3214   return dissect_gsm_map_T_quintupletList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList_item);
3215 }
3216
3217 static const ber_sequence_t T_quintupletList_sequence_of[1] = {
3218   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_quintupletList_item },
3219 };
3220
3221 static int
3222 dissect_gsm_map_T_quintupletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3223   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3224                                    T_quintupletList_sequence_of, hf_index, ett_gsm_map_T_quintupletList);
3225
3226   return offset;
3227 }
3228 static int dissect_quintupletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3229   return dissect_gsm_map_T_quintupletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList);
3230 }
3231
3232
3233 static const value_string gsm_map_T_authenticationSetList_vals[] = {
3234   {   0, "tripletList" },
3235   {   1, "quintupletList" },
3236   { 0, NULL }
3237 };
3238
3239 static const ber_choice_t T_authenticationSetList_choice[] = {
3240   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tripletList_impl },
3241   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_quintupletList_impl },
3242   { 0, 0, 0, 0, NULL }
3243 };
3244
3245 static int
3246 dissect_gsm_map_T_authenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3247   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3248                               T_authenticationSetList_choice, hf_index, ett_gsm_map_T_authenticationSetList);
3249
3250   return offset;
3251 }
3252 static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3253   return dissect_gsm_map_T_authenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList);
3254 }
3255
3256 static const ber_sequence_t SendAuthenticationInfoV3Res_sequence[] = {
3257   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList },
3258   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3259   { 0, 0, 0, NULL }
3260 };
3261
3262 static int
3263 dissect_gsm_map_SendAuthenticationInfoV3Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3264   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3265                                 SendAuthenticationInfoV3Res_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoV3Res);
3266
3267   return offset;
3268 }
3269
3270
3271 static int
3272 dissect_gsm_map_Imei(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3273   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3274                                     NULL);
3275
3276   return offset;
3277 }
3278 static int dissect_imei(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3279   return dissect_gsm_map_Imei(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
3280 }
3281 static int dissect_imei_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3282   return dissect_gsm_map_Imei(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
3283 }
3284
3285
3286 static int
3287 dissect_gsm_map_CheckIMEIArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3288   offset = dissect_gsm_map_Imei(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3289
3290   return offset;
3291 }
3292
3293 static const asn_namedbit T_requestedEquipmentInfo_bits[] = {
3294   {  0, &hf_gsm_map_T_requestedEquipmentInfo_equipmentStatus, -1, -1, NULL, NULL },
3295   {  1, &hf_gsm_map_T_requestedEquipmentInfo_bmuef, -1, -1, NULL, NULL },
3296   { 0, NULL, 0, 0, NULL, NULL }
3297 };
3298
3299 static int
3300 dissect_gsm_map_T_requestedEquipmentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3301   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3302                                  T_requestedEquipmentInfo_bits, hf_index, ett_gsm_map_T_requestedEquipmentInfo,
3303                                  NULL);
3304
3305   return offset;
3306 }
3307 static int dissect_requestedEquipmentInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3308   return dissect_gsm_map_T_requestedEquipmentInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_requestedEquipmentInfo);
3309 }
3310
3311 static const ber_sequence_t CheckIMEIv2Arg_sequence[] = {
3312   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imei },
3313   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_requestedEquipmentInfo },
3314   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3315   { 0, 0, 0, NULL }
3316 };
3317
3318 static int
3319 dissect_gsm_map_CheckIMEIv2Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3320   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3321                                 CheckIMEIv2Arg_sequence, hf_index, ett_gsm_map_CheckIMEIv2Arg);
3322
3323   return offset;
3324 }
3325
3326
3327 static const value_string gsm_map_EquipmentStatus_vals[] = {
3328   {   0, "whiteListed" },
3329   {   1, "blackListed" },
3330   {   2, "greyListed" },
3331   { 0, NULL }
3332 };
3333
3334
3335 static int
3336 dissect_gsm_map_EquipmentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3337   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3338
3339   return offset;
3340 }
3341 static int dissect_equipmentStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3342   return dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus);
3343 }
3344
3345 static const ber_sequence_t T_bmuef_sequence[] = {
3346   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuA_impl },
3347   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uesbi_IuB_impl },
3348   { 0, 0, 0, NULL }
3349 };
3350
3351 static int
3352 dissect_gsm_map_T_bmuef(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3353   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3354                                 T_bmuef_sequence, hf_index, ett_gsm_map_T_bmuef);
3355
3356   return offset;
3357 }
3358 static int dissect_bmuef(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3359   return dissect_gsm_map_T_bmuef(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bmuef);
3360 }
3361
3362 static const ber_sequence_t ChekIMEIv3Res_sequence[] = {
3363   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_equipmentStatus },
3364   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bmuef },
3365   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3366   { 0, 0, 0, NULL }
3367 };
3368
3369 static int
3370 dissect_gsm_map_ChekIMEIv3Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3371   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3372                                 ChekIMEIv3Res_sequence, hf_index, ett_gsm_map_ChekIMEIv3Res);
3373
3374   return offset;
3375 }
3376
3377
3378 static const value_string gsm_map_OverrideCategory_vals[] = {
3379   {   0, "overrideEnabled" },
3380   {   1, "overrideDisabled" },
3381   { 0, NULL }
3382 };
3383
3384
3385 static int
3386 dissect_gsm_map_OverrideCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3387   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3388
3389   return offset;
3390 }
3391 static int dissect_overrideCategory_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3392   return dissect_gsm_map_OverrideCategory(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_overrideCategory);
3393 }
3394
3395
3396 static const value_string gsm_map_BasicService_vals[] = {
3397   {   2, "bearerservice" },
3398   {   3, "teleservice" },
3399   { 0, NULL }
3400 };
3401
3402 static const ber_choice_t BasicService_choice[] = {
3403   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerservice_impl },
3404   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
3405   { 0, 0, 0, 0, NULL }
3406 };
3407
3408 static int
3409 dissect_gsm_map_BasicService(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3410   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3411                               BasicService_choice, hf_index, ett_gsm_map_BasicService);
3412
3413   return offset;
3414 }
3415 static int dissect_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3416   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceGroupList_item);
3417 }
3418 static int dissect_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3419   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicService);
3420 }
3421 static int dissect_basicServiceGroup(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3422   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup);
3423 }
3424
3425 static const ber_sequence_t BasicServiceGroupList_sequence_of[1] = {
3426   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
3427 };
3428
3429 static int
3430 dissect_gsm_map_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3431   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3432                                    BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_BasicServiceGroupList);
3433
3434   return offset;
3435 }
3436 static int dissect_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3437   return dissect_gsm_map_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
3438 }
3439 static int dissect_basicServiceGroupList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3440   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
3441 }
3442 static int dissect_basicServiceCriteria_lst_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3443   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceCriteria_lst);
3444 }
3445 static int dissect_basicServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3446   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceList);
3447 }
3448
3449
3450 static const value_string gsm_map_IntraCUG_Options_vals[] = {
3451   {   0, "noCUG-Restrictions" },
3452   {   1, "cugIC-CallBarred" },
3453   {   2, "cugOG-CallBarred" },
3454   { 0, NULL }
3455 };
3456
3457
3458 static int
3459 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_) {
3460   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3461
3462   return offset;
3463 }
3464 static int dissect_intraCUG_Options(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3465   return dissect_gsm_map_IntraCUG_Options(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_intraCUG_Options);
3466 }
3467
3468 static const asn_namedbit Odb_GeneralData_bits[] = {
3469   {  0, &hf_gsm_map_Odb_GeneralData_allOGCallsBarred, -1, -1, NULL, NULL },
3470   {  1, &hf_gsm_map_Odb_GeneralData_internationalOGCallsBarred, -1, -1, NULL, NULL },
3471   {  2, &hf_gsm_map_Odb_GeneralData_internationalOGCallsNotToHPLMNCountryBarred, -1, -1, NULL, NULL },
3472   {  3, &hf_gsm_map_Odb_GeneralData_premiumRateInformationOGCallsBarred, -1, -1, NULL, NULL },
3473   {  4, &hf_gsm_map_Odb_GeneralData_premiumRateEntertainementOGCallsBarred, -1, -1, NULL, NULL },
3474   {  5, &hf_gsm_map_Odb_GeneralData_ssAccessBarred, -1, -1, NULL, NULL },
3475   {  6, &hf_gsm_map_Odb_GeneralData_interzonalOGCallsBarred, -1, -1, NULL, NULL },
3476   {  7, &hf_gsm_map_Odb_GeneralData_interzonalOGCallsNotToHPLMNCountryBarred, -1, -1, NULL, NULL },
3477   {  8, &hf_gsm_map_Odb_GeneralData_interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred, -1, -1, NULL, NULL },
3478   {  9, &hf_gsm_map_Odb_GeneralData_allECTBarred, -1, -1, NULL, NULL },
3479   { 10, &hf_gsm_map_Odb_GeneralData_chargeableECTBarred, -1, -1, NULL, NULL },
3480   { 11, &hf_gsm_map_Odb_GeneralData_internationalECTBarred, -1, -1, NULL, NULL },
3481   { 12, &hf_gsm_map_Odb_GeneralData_interzonalECTBarred, -1, -1, NULL, NULL },
3482   { 13, &hf_gsm_map_Odb_GeneralData_doublyChargeableECTBarred, -1, -1, NULL, NULL },
3483   { 14, &hf_gsm_map_Odb_GeneralData_multipleECTBarred, -1, -1, NULL, NULL },
3484   { 15, &hf_gsm_map_Odb_GeneralData_allPacketOrientedServicesBarred, -1, -1, NULL, NULL },
3485   { 16, &hf_gsm_map_Odb_GeneralData_roamerAccessToHPLMN_AP_Barred, -1, -1, NULL, NULL },
3486   { 17, &hf_gsm_map_Odb_GeneralData_roamerAccessToVPLMN_AP_Barred, -1, -1, NULL, NULL },
3487   { 18, &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNOG_CallsBarred, -1, -1, NULL, NULL },
3488   { 19, &hf_gsm_map_Odb_GeneralData_allIC_CallsBarred, -1, -1, NULL, NULL },
3489   { 20, &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNIC_CallsBarred, -1, -1, NULL, NULL },
3490   { 21, &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, -1, -1, NULL, NULL },
3491   { 22, &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMN_Barred, -1, -1, NULL, NULL },
3492   { 23, &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMN_CountryBarred, -1, -1, NULL, NULL },
3493   { 24, &hf_gsm_map_Odb_GeneralData_registrationAllCF_Barred, -1, -1, NULL, NULL },
3494   { 25, &hf_gsm_map_Odb_GeneralData_registrationCFNotToHPLMN_Barred, -1, -1, NULL, NULL },
3495   { 26, &hf_gsm_map_Odb_GeneralData_registrationInterzonalCF_Barred, -1, -1, NULL, NULL },
3496   { 27, &hf_gsm_map_Odb_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, -1, -1, NULL, NULL },
3497   { 28, &hf_gsm_map_Odb_GeneralData_registrationInternationalCF_Barred, -1, -1, NULL, NULL },
3498   { 0, NULL, 0, 0, NULL, NULL }
3499 };
3500
3501 static int
3502 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_) {
3503   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3504                                  Odb_GeneralData_bits, hf_index, ett_gsm_map_Odb_GeneralData,
3505                                  NULL);
3506
3507   return offset;
3508 }
3509 static int dissect_odb_GeneralData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3510   return dissect_gsm_map_Odb_GeneralData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
3511 }
3512 static int dissect_odb_GeneralData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3513   return dissect_gsm_map_Odb_GeneralData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
3514 }
3515
3516 static const asn_namedbit Odb_HPLMN_Data_bits[] = {
3517   {  0, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType1, -1, -1, NULL, NULL },
3518   {  1, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType2, -1, -1, NULL, NULL },
3519   {  2, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType3, -1, -1, NULL, NULL },
3520   {  3, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType4, -1, -1, NULL, NULL },
3521   { 0, NULL, 0, 0, NULL, NULL }
3522 };
3523
3524 static int
3525 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_) {
3526   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
3527                                  Odb_HPLMN_Data_bits, hf_index, ett_gsm_map_Odb_HPLMN_Data,
3528                                  NULL);
3529
3530   return offset;
3531 }
3532 static int dissect_odb_HPLMN_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3533   return dissect_gsm_map_Odb_HPLMN_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_HPLMN_Data);
3534 }
3535
3536
3537 static const value_string gsm_map_SubscriberStatus_vals[] = {
3538   {   0, "serviceGranted" },
3539   {   1, "operatorDeterminedBarring" },
3540   { 0, NULL }
3541 };
3542
3543
3544 static int
3545 dissect_gsm_map_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3546   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3547
3548   return offset;
3549 }
3550 static int dissect_subscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3551   return dissect_gsm_map_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStatus);
3552 }
3553
3554
3555 static const value_string gsm_map_BcsmTriggerDetectionPoint_vals[] = {
3556   {   2, "collectedInfo" },
3557   {   4, "routeSelectFailure" },
3558   {  12, "termAttemptAuthorized" },
3559   {  13, "tBusy" },
3560   {  14, "tNoAnswer" },
3561   { 0, NULL }
3562 };
3563
3564
3565 static int
3566 dissect_gsm_map_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3567   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3568
3569   return offset;
3570 }
3571 static int dissect_bcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3572   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bcsmTriggerDetectionPoint);
3573 }
3574 static int dissect_o_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3575   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmTriggerDetectionPoint);
3576 }
3577
3578
3579
3580 static int
3581 dissect_gsm_map_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3582   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3583
3584   return offset;
3585 }
3586 static int dissect_serviceKey(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3587   return dissect_gsm_map_ServiceKey(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
3588 }
3589 static int dissect_serviceKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3590   return dissect_gsm_map_ServiceKey(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
3591 }
3592
3593
3594 static int
3595 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_) {
3596   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3597                                     NULL);
3598
3599   return offset;
3600 }
3601 static int dissect_gsmSCFAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3602   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCFAddress);
3603 }
3604 static int dissect_gsmSCF_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3605   return dissect_gsm_map_GsmSCF_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
3606 }
3607 static int dissect_gsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3608   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
3609 }
3610
3611
3612 static const value_string gsm_map_DefaultCallHandling_vals[] = {
3613   {   0, "continueCall" },
3614   {   1, "releaseCall" },
3615   { 0, NULL }
3616 };
3617
3618
3619 static int
3620 dissect_gsm_map_DefaultCallHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3621   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3622
3623   return offset;
3624 }
3625 static int dissect_defaultCallHandling(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3626   return dissect_gsm_map_DefaultCallHandling(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
3627 }
3628 static int dissect_defaultCallHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3629   return dissect_gsm_map_DefaultCallHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
3630 }
3631
3632 static const ber_sequence_t BcsmCamelTDPData_sequence[] = {
3633   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_bcsmTriggerDetectionPoint },
3634   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
3635   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCFAddress_impl },
3636   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
3637   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3638   { 0, 0, 0, NULL }
3639 };
3640
3641 static int
3642 dissect_gsm_map_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3643   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3644                                 BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_BcsmCamelTDPData);
3645
3646   return offset;
3647 }
3648 static int dissect_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3649   return dissect_gsm_map_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BcsmCamelTDPDataList_item);
3650 }
3651
3652 static const ber_sequence_t BcsmCamelTDPDataList_sequence_of[1] = {
3653   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BcsmCamelTDPDataList_item },
3654 };
3655
3656 static int
3657 dissect_gsm_map_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3658   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3659                                    BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_BcsmCamelTDPDataList);
3660
3661   return offset;
3662 }
3663 static int dissect_o_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3664   return dissect_gsm_map_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPDataList);
3665 }
3666 static int dissect_t_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3667   return dissect_gsm_map_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmCamelTDPDataList);
3668 }
3669
3670
3671
3672 static int
3673 dissect_gsm_map_INTEGER_1_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3674   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3675
3676   return offset;
3677 }
3678 static int dissect_camelCapabilityHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3679   return dissect_gsm_map_INTEGER_1_16(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelCapabilityHandling);
3680 }
3681
3682 static const ber_sequence_t O_CSI_sequence[] = {
3683   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_BcsmCamelTDPDataList },
3684   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3685   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
3686   { 0, 0, 0, NULL }
3687 };
3688
3689 static int
3690 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_) {
3691   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3692                                 O_CSI_sequence, hf_index, ett_gsm_map_O_CSI);
3693
3694   return offset;
3695 }
3696 static int dissect_o_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3697   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CSI);
3698 }
3699
3700
3701 static int
3702 dissect_gsm_map_Msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3703
3704  tvbuff_t       *parameter_tvb;
3705  char           *digit_str;
3706
3707  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3708                                     &parameter_tvb);
3709
3710  if (!parameter_tvb)
3711         return offset;
3712
3713  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
3714  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
3715  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
3716
3717  digit_str = unpack_digits(parameter_tvb, 1);
3718
3719  proto_tree_add_string(tree, hf_gsm_map_misdn_digits, parameter_tvb, 1, -1, digit_str);
3720  if (digit_str)
3721         g_free(digit_str);
3722
3723
3724   return offset;
3725 }
3726 static int dissect_msisdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3727   return dissect_gsm_map_Msisdn(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
3728 }
3729 static int dissect_msisdn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3730   return dissect_gsm_map_Msisdn(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
3731 }
3732
3733 static const ber_sequence_t bearerServiceList_sequence_of[1] = {
3734   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_bearerserviceList_item },
3735 };
3736
3737 static int
3738 dissect_gsm_map_bearerServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3739   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3740                                    bearerServiceList_sequence_of, hf_index, ett_gsm_map_bearerServiceList);
3741
3742   return offset;
3743 }
3744 static int dissect_bearerserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3745   return dissect_gsm_map_bearerServiceList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerserviceList);
3746 }
3747
3748 static const ber_sequence_t SEQUENCE_SIZE_1_20_OF_Teleservice_sequence_of[1] = {
3749   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_teleserviceList_item },
3750 };
3751
3752 static int
3753 dissect_gsm_map_SEQUENCE_SIZE_1_20_OF_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3754   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3755                                    SEQUENCE_SIZE_1_20_OF_Teleservice_sequence_of, hf_index, ett_gsm_map_SEQUENCE_SIZE_1_20_OF_Teleservice);
3756
3757   return offset;
3758 }
3759 static int dissect_teleserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3760   return dissect_gsm_map_SEQUENCE_SIZE_1_20_OF_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList);
3761 }
3762
3763
3764 static int
3765 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_) {
3766   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3767                                     NULL);
3768
3769   return offset;
3770 }
3771 static int dissect_ss_Code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3772   return dissect_gsm_map_Ss_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
3773 }
3774 static int dissect_ss_Code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3775   return dissect_gsm_map_Ss_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
3776 }
3777
3778
3779 static int
3780 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_) {
3781
3782  tvbuff_t       *parameter_tvb;
3783  guint8         octet;
3784
3785  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3786                                     &parameter_tvb);
3787  if (!parameter_tvb)
3788         return offset;
3789
3790  octet = tvb_get_guint8(parameter_tvb,0);
3791
3792  proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
3793  if ((octet & 0x01)== 1)        
3794         proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
3795                                                                                 
3796  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);                                                                    
3797  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);                                                                    
3798  proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);                                                                    
3799
3800
3801
3802   return offset;
3803 }
3804 static int dissect_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3805   return dissect_gsm_map_Ss_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
3806 }
3807 static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3808   return dissect_gsm_map_Ss_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
3809 }
3810
3811
3812 static int
3813 dissect_gsm_map_ForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3814
3815  tvbuff_t       *parameter_tvb;
3816  char           *digit_str;
3817
3818  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3819                                     &parameter_tvb);
3820
3821  if (!parameter_tvb)
3822         return offset;
3823
3824  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
3825  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
3826  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
3827
3828  digit_str = unpack_digits(parameter_tvb, 1);
3829
3830  proto_tree_add_string(tree, hf_gsm_map_map_ForwardedToNumber_digits, parameter_tvb, 1, -1, digit_str);
3831  if (digit_str)
3832         g_free(digit_str);
3833
3834
3835   return offset;
3836 }
3837 static int dissect_forwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3838   return dissect_gsm_map_ForwardedToNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber);
3839 }
3840
3841
3842 static int
3843 dissect_gsm_map_ForwardedToSubaddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3844   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3845                                     NULL);
3846
3847   return offset;
3848 }
3849 static int dissect_forwardedToSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3850   return dissect_gsm_map_ForwardedToSubaddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToSubaddress);
3851 }
3852
3853
3854 static int
3855 dissect_gsm_map_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3856   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3857                                     NULL);
3858
3859   return offset;
3860 }
3861 static int dissect_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3862   return dissect_gsm_map_ForwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingOptions);
3863 }
3864
3865
3866
3867 static int
3868 dissect_gsm_map_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3869   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3870
3871   return offset;
3872 }
3873 static int dissect_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3874   return dissect_gsm_map_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noReplyConditionTime);
3875 }
3876
3877
3878 static int
3879 dissect_gsm_map_LongForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3880   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3881                                     NULL);
3882
3883   return offset;
3884 }
3885 static int dissect_longForwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3886   return dissect_gsm_map_LongForwardedToNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_longForwardedToNumber);
3887 }
3888
3889 static const ber_sequence_t ForwardingFeatureList_sequence[] = {
3890   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
3891   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
3892   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
3893   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
3894   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
3895   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
3896   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3897   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longForwardedToNumber_impl },
3898   { 0, 0, 0, NULL }
3899 };
3900
3901 static int
3902 dissect_gsm_map_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3903   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3904                                 ForwardingFeatureList_sequence, hf_index, ett_gsm_map_ForwardingFeatureList);
3905
3906   return offset;
3907 }
3908 static int dissect_forwardingFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3909   return dissect_gsm_map_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList_item);
3910 }
3911 static int dissect_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3912   return dissect_gsm_map_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
3913 }
3914
3915 static const ber_sequence_t SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList_sequence_of[1] = {
3916   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList_item },
3917 };
3918
3919 static int
3920 dissect_gsm_map_SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3921   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3922                                    SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList);
3923
3924   return offset;
3925 }
3926 static int dissect_forwardingFeatureList_1_32(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3927   return dissect_gsm_map_SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList_1_32);
3928 }
3929
3930 static const ber_sequence_t ForwardingInfo_sequence[] = {
3931   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
3932   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList_1_32 },
3933   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3934   { 0, 0, 0, NULL }
3935 };
3936
3937 static int
3938 dissect_gsm_map_ForwardingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3939   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3940                                 ForwardingInfo_sequence, hf_index, ett_gsm_map_ForwardingInfo);
3941
3942   return offset;
3943 }
3944 static int dissect_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3945   return dissect_gsm_map_ForwardingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfo);
3946 }
3947
3948 static const ber_sequence_t CallBarringFeatureList_item_sequence[] = {
3949   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
3950   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
3951   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3952   { 0, 0, 0, NULL }
3953 };
3954
3955 static int
3956 dissect_gsm_map_CallBarringFeatureList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3957   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3958                                 CallBarringFeatureList_item_sequence, hf_index, ett_gsm_map_CallBarringFeatureList_item);
3959
3960   return offset;
3961 }
3962 static int dissect_CallBarringFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3963   return dissect_gsm_map_CallBarringFeatureList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CallBarringFeatureList_item);
3964 }
3965
3966 static const ber_sequence_t CallBarringFeatureList_sequence_of[1] = {
3967   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_CallBarringFeatureList_item },
3968 };
3969
3970 static int
3971 dissect_gsm_map_CallBarringFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3972   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3973                                    CallBarringFeatureList_sequence_of, hf_index, ett_gsm_map_CallBarringFeatureList);
3974
3975   return offset;
3976 }
3977 static int dissect_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3978   return dissect_gsm_map_CallBarringFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringFeatureList);
3979 }
3980
3981 static const ber_sequence_t CallBarringInfo_sequence[] = {
3982   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
3983   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList },
3984   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3985   { 0, 0, 0, NULL }
3986 };
3987
3988 static int
3989 dissect_gsm_map_CallBarringInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3990   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3991                                 CallBarringInfo_sequence, hf_index, ett_gsm_map_CallBarringInfo);
3992
3993   return offset;
3994 }
3995 static int dissect_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3996   return dissect_gsm_map_CallBarringInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfo);
3997 }
3998
3999
4000
4001 static int
4002 dissect_gsm_map_INTEGER_0_32767(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4003   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4004
4005   return offset;
4006 }
4007 static int dissect_cug_Index(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4008   return dissect_gsm_map_INTEGER_0_32767(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Index);
4009 }
4010 static int dissect_preferentialCUG_Indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4011   return dissect_gsm_map_INTEGER_0_32767(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_preferentialCUG_Indicator);
4012 }
4013 static int dissect_ageOfLocationInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4014   return dissect_gsm_map_INTEGER_0_32767(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationInformation);
4015 }
4016 static int dissect_ageOfLocationInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4017   return dissect_gsm_map_INTEGER_0_32767(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationInformation);
4018 }
4019 static int dissect_ageOfLocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4020   return dissect_gsm_map_INTEGER_0_32767(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationEstimate);
4021 }
4022
4023 static const ber_sequence_t T_cug_SubscriptionList_item_sequence[] = {
4024   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cug_Index },
4025   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
4026   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_intraCUG_Options },
4027   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
4028   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4029   { 0, 0, 0, NULL }
4030 };
4031
4032 static int
4033 dissect_gsm_map_T_cug_SubscriptionList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4034   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4035                                 T_cug_SubscriptionList_item_sequence, hf_index, ett_gsm_map_T_cug_SubscriptionList_item);
4036
4037   return offset;
4038 }
4039 static int dissect_cug_SubscriptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4040   return dissect_gsm_map_T_cug_SubscriptionList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList_item);
4041 }
4042
4043 static const ber_sequence_t T_cug_SubscriptionList_sequence_of[1] = {
4044   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList_item },
4045 };
4046
4047 static int
4048 dissect_gsm_map_T_cug_SubscriptionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4049   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4050                                    T_cug_SubscriptionList_sequence_of, hf_index, ett_gsm_map_T_cug_SubscriptionList);
4051
4052   return offset;
4053 }
4054 static int dissect_cug_SubscriptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4055   return dissect_gsm_map_T_cug_SubscriptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList);
4056 }
4057
4058 static const ber_sequence_t T_cug_FeatureList_item_sequence[] = {
4059   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
4060   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_preferentialCUG_Indicator },
4061   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_interCUG_Restrictions },
4062   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4063   { 0, 0, 0, NULL }
4064 };
4065
4066 static int
4067 dissect_gsm_map_T_cug_FeatureList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4068   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4069                                 T_cug_FeatureList_item_sequence, hf_index, ett_gsm_map_T_cug_FeatureList_item);
4070
4071   return offset;
4072 }
4073 static int dissect_cug_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4074   return dissect_gsm_map_T_cug_FeatureList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList_item);
4075 }
4076
4077 static const ber_sequence_t T_cug_FeatureList_sequence_of[1] = {
4078   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList_item },
4079 };
4080
4081 static int
4082 dissect_gsm_map_T_cug_FeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4083   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4084                                    T_cug_FeatureList_sequence_of, hf_index, ett_gsm_map_T_cug_FeatureList);
4085
4086   return offset;
4087 }
4088 static int dissect_cug_FeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4089   return dissect_gsm_map_T_cug_FeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList);
4090 }
4091
4092 static const ber_sequence_t T_cug_Info_sequence[] = {
4093   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList },
4094   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList },
4095   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4096   { 0, 0, 0, NULL }
4097 };
4098
4099 static int
4100 dissect_gsm_map_T_cug_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4101   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4102                                 T_cug_Info_sequence, hf_index, ett_gsm_map_T_cug_Info);
4103
4104   return offset;
4105 }
4106 static int dissect_cug_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4107   return dissect_gsm_map_T_cug_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Info);
4108 }
4109
4110
4111 static const value_string gsm_map_CliRestrictionOption_vals[] = {
4112   {   0, "permanent" },
4113   {   1, "temporaryDefaultRestricted" },
4114   {   2, "temporaryDefaultAllowed" },
4115   { 0, NULL }
4116 };
4117
4118
4119 static int
4120 dissect_gsm_map_CliRestrictionOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4121   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4122
4123   return offset;
4124 }
4125 static int dissect_cliRestrictionOption_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4126   return dissect_gsm_map_CliRestrictionOption(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
4127 }
4128
4129
4130 static const value_string gsm_map_Ss_SubscriptionOption_vals[] = {
4131   {   2, "cliRestrictionOption" },
4132   {   1, "overrideCategory" },
4133   { 0, NULL }
4134 };
4135
4136 static const ber_choice_t Ss_SubscriptionOption_choice[] = {
4137   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
4138   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_overrideCategory_impl },
4139   { 0, 0, 0, 0, NULL }
4140 };
4141
4142 static int
4143 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_) {
4144   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4145                               Ss_SubscriptionOption_choice, hf_index, ett_gsm_map_Ss_SubscriptionOption);
4146
4147   return offset;
4148 }
4149 static int dissect_ss_SubscriptionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4150   return dissect_gsm_map_Ss_SubscriptionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_SubscriptionOption);
4151 }
4152
4153
4154
4155 static int
4156 dissect_gsm_map_INTEGER_0_15(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4157   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4158
4159   return offset;
4160 }
4161 static int dissect_maximumentitledPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4162   return dissect_gsm_map_INTEGER_0_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_maximumentitledPriority);
4163 }
4164 static int dissect_defaultPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4165   return dissect_gsm_map_INTEGER_0_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
4166 }
4167 static int dissect_defaultPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4168   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
4169 }
4170 static int dissect_nsapi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4171   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nsapi);
4172 }
4173 static int dissect_maximumEntitledPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4174   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_maximumEntitledPriority);
4175 }
4176 static int dissect_groupKeyNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4177   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKeyNumber);
4178 }
4179 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4180   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_priority);
4181 }
4182
4183 static const ber_sequence_t Ss_Data_sequence[] = {
4184   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4185   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
4186   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
4187   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
4188   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
4189   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4190   { 0, 0, 0, NULL }
4191 };
4192
4193 static int
4194 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_) {
4195   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4196                                 Ss_Data_sequence, hf_index, ett_gsm_map_Ss_Data);
4197
4198   return offset;
4199 }
4200 static int dissect_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4201   return dissect_gsm_map_Ss_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Data);
4202 }
4203
4204 static const ber_sequence_t T_emlpp_Info_sequence[] = {
4205   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maximumentitledPriority },
4206   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
4207   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4208   { 0, 0, 0, NULL }
4209 };
4210
4211 static int
4212 dissect_gsm_map_T_emlpp_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4213   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4214                                 T_emlpp_Info_sequence, hf_index, ett_gsm_map_T_emlpp_Info);
4215
4216   return offset;
4217 }
4218 static int dissect_emlpp_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4219   return dissect_gsm_map_T_emlpp_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_emlpp_Info);
4220 }
4221
4222
4223 static const value_string gsm_map_T_provisionedSS_item_vals[] = {
4224   {   0, "forwardingInfo" },
4225   {   1, "callBarringInfo" },
4226   {   2, "cug-Info" },
4227   {   3, "ss-Data" },
4228   {   4, "emlpp-Info" },
4229   { 0, NULL }
4230 };
4231
4232 static const ber_choice_t T_provisionedSS_item_choice[] = {
4233   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
4234   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
4235   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cug_Info_impl },
4236   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data_impl },
4237   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_emlpp_Info_impl },
4238   { 0, 0, 0, 0, NULL }
4239 };
4240
4241 static int
4242 dissect_gsm_map_T_provisionedSS_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4243   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4244                               T_provisionedSS_item_choice, hf_index, ett_gsm_map_T_provisionedSS_item);
4245
4246   return offset;
4247 }
4248 static int dissect_provisionedSS_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4249   return dissect_gsm_map_T_provisionedSS_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS_item);
4250 }
4251
4252 static const ber_sequence_t T_provisionedSS_sequence_of[1] = {
4253   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_provisionedSS_item },
4254 };
4255
4256 static int
4257 dissect_gsm_map_T_provisionedSS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4258   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4259                                    T_provisionedSS_sequence_of, hf_index, ett_gsm_map_T_provisionedSS);
4260
4261   return offset;
4262 }
4263 static int dissect_provisionedSS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4264   return dissect_gsm_map_T_provisionedSS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS);
4265 }
4266
4267 static const ber_sequence_t Odb_data_sequence[] = {
4268   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_odb_GeneralData },
4269   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_odb_HPLMN_Data },
4270   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4271   { 0, 0, 0, NULL }
4272 };
4273
4274 static int
4275 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_) {
4276   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4277                                 Odb_data_sequence, hf_index, ett_gsm_map_Odb_data);
4278
4279   return offset;
4280 }
4281 static int dissect_odb_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4282   return dissect_gsm_map_Odb_data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
4283 }
4284 static int dissect_odb_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4285   return dissect_gsm_map_Odb_data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
4286 }
4287 static int dissect_odb_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4288   return dissect_gsm_map_Odb_data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_data);
4289 }
4290
4291
4292 static int
4293 dissect_gsm_map_OCTET_STRING_SIZE_2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4294   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4295                                     NULL);
4296
4297   return offset;
4298 }
4299 static int dissect_regionalSubscriptionData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4300   return dissect_gsm_map_OCTET_STRING_SIZE_2(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData_item);
4301 }
4302 static int dissect_pdp_Type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4303   return dissect_gsm_map_OCTET_STRING_SIZE_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Type);
4304 }
4305 static int dissect_regionalSubscriptionIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4306   return dissect_gsm_map_OCTET_STRING_SIZE_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionIdentifier);
4307 }
4308 static int dissect_chargingCharacteristics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4309   return dissect_gsm_map_OCTET_STRING_SIZE_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chargingCharacteristics);
4310 }
4311
4312 static const ber_sequence_t T_regionalSubscriptionData_sequence_of[1] = {
4313   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_regionalSubscriptionData_item },
4314 };
4315
4316 static int
4317 dissect_gsm_map_T_regionalSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4318   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4319                                    T_regionalSubscriptionData_sequence_of, hf_index, ett_gsm_map_T_regionalSubscriptionData);
4320
4321   return offset;
4322 }
4323 static int dissect_regionalSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4324   return dissect_gsm_map_T_regionalSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData);
4325 }
4326
4327 static const ber_sequence_t T_vbsSubscriptionData_item_sequence[] = {
4328   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupid },
4329   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_broadcastInitEntitlement },
4330   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4331   { 0, 0, 0, NULL }
4332 };
4333
4334 static int
4335 dissect_gsm_map_T_vbsSubscriptionData_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4336   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4337                                 T_vbsSubscriptionData_item_sequence, hf_index, ett_gsm_map_T_vbsSubscriptionData_item);
4338
4339   return offset;
4340 }
4341 static int dissect_vbsSubscriptionData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4342   return dissect_gsm_map_T_vbsSubscriptionData_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData_item);
4343 }
4344
4345 static const ber_sequence_t T_vbsSubscriptionData_sequence_of[1] = {
4346   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_vbsSubscriptionData_item },
4347 };
4348
4349 static int
4350 dissect_gsm_map_T_vbsSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4351   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4352                                    T_vbsSubscriptionData_sequence_of, hf_index, ett_gsm_map_T_vbsSubscriptionData);
4353
4354   return offset;
4355 }
4356 static int dissect_vbsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4357   return dissect_gsm_map_T_vbsSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData);
4358 }
4359
4360 static const ber_sequence_t T_vgcsSubscriptionData_item_sequence[] = {
4361   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupId },
4362   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4363   { 0, 0, 0, NULL }
4364 };
4365
4366 static int
4367 dissect_gsm_map_T_vgcsSubscriptionData_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4368   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4369                                 T_vgcsSubscriptionData_item_sequence, hf_index, ett_gsm_map_T_vgcsSubscriptionData_item);
4370
4371   return offset;
4372 }
4373 static int dissect_vgcsSubscriptionData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4374   return dissect_gsm_map_T_vgcsSubscriptionData_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData_item);
4375 }
4376
4377 static const ber_sequence_t T_vgcsSubscriptionData_sequence_of[1] = {
4378   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_vgcsSubscriptionData_item },
4379 };
4380
4381 static int
4382 dissect_gsm_map_T_vgcsSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4383   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4384                                    T_vgcsSubscriptionData_sequence_of, hf_index, ett_gsm_map_T_vgcsSubscriptionData);
4385
4386   return offset;
4387 }
4388 static int dissect_vgcsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4389   return dissect_gsm_map_T_vgcsSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData);
4390 }
4391
4392 static const ber_sequence_t T_ss_EventList_sequence_of[1] = {
4393   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventList_item },
4394 };
4395
4396 static int
4397 dissect_gsm_map_T_ss_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4398   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4399                                    T_ss_EventList_sequence_of, hf_index, ett_gsm_map_T_ss_EventList);
4400
4401   return offset;
4402 }
4403 static int dissect_ss_EventList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4404   return dissect_gsm_map_T_ss_EventList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList);
4405 }
4406
4407 static const ber_sequence_t Ss_CamelData_sequence[] = {
4408   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_EventList },
4409   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
4410   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4411   { 0, 0, 0, NULL }
4412 };
4413
4414 static int
4415 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_) {
4416   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4417                                 Ss_CamelData_sequence, hf_index, ett_gsm_map_Ss_CamelData);
4418
4419   return offset;
4420 }
4421 static int dissect_ss_CamelData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4422   return dissect_gsm_map_Ss_CamelData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CamelData);
4423 }
4424
4425 static const ber_sequence_t ss_CSI_sequence[] = {
4426   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_CamelData },
4427   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4428   { 0, 0, 0, NULL }
4429 };
4430
4431 static int
4432 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_) {
4433   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4434                                 ss_CSI_sequence, hf_index, ett_gsm_map_ss_CSI);
4435
4436   return offset;
4437 }
4438 static int dissect_ss_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4439   return dissect_gsm_map_ss_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CSI);
4440 }
4441
4442
4443 static const value_string gsm_map_MatchType_vals[] = {
4444   {   0, "inhibiting" },
4445   {   1, "enabling" },
4446   { 0, NULL }
4447 };
4448
4449
4450 static int
4451 dissect_gsm_map_MatchType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4452   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4453
4454   return offset;
4455 }
4456 static int dissect_matchType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4457   return dissect_gsm_map_MatchType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_matchType);
4458 }
4459
4460
4461 static int
4462 dissect_gsm_map_T_destinationNumberList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4463   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4464                                     NULL);
4465
4466   return offset;
4467 }
4468 static int dissect_destinationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4469   return dissect_gsm_map_T_destinationNumberList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList_item);
4470 }
4471
4472 static const ber_sequence_t T_destinationNumberList_sequence_of[1] = {
4473   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_destinationNumberList_item },
4474 };
4475
4476 static int
4477 dissect_gsm_map_T_destinationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4478   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4479                                    T_destinationNumberList_sequence_of, hf_index, ett_gsm_map_T_destinationNumberList);
4480
4481   return offset;
4482 }
4483 static int dissect_destinationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4484   return dissect_gsm_map_T_destinationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList);
4485 }
4486
4487
4488
4489 static int
4490 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_) {
4491   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4492
4493   return offset;
4494 }
4495 static int dissect_destinationNumberLengthList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4496   return dissect_gsm_map_INTEGER_1_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList_item);
4497 }
4498
4499 static const ber_sequence_t T_destinationNumberLengthList_sequence_of[1] = {
4500   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_destinationNumberLengthList_item },
4501 };
4502
4503 static int
4504 dissect_gsm_map_T_destinationNumberLengthList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4505   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4506                                    T_destinationNumberLengthList_sequence_of, hf_index, ett_gsm_map_T_destinationNumberLengthList);
4507
4508   return offset;
4509 }
4510 static int dissect_destinationNumberLengthList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4511   return dissect_gsm_map_T_destinationNumberLengthList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList);
4512 }
4513
4514 static const ber_sequence_t DestinationNumberCriteria_sequence[] = {
4515   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_matchType_impl },
4516   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberList_impl },
4517   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberLengthList_impl },
4518   { 0, 0, 0, NULL }
4519 };
4520
4521 static int
4522 dissect_gsm_map_DestinationNumberCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4523   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4524                                 DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_DestinationNumberCriteria);
4525
4526   return offset;
4527 }
4528 static int dissect_destinationNumberCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4529   return dissect_gsm_map_DestinationNumberCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberCriteria);
4530 }
4531
4532
4533 static const value_string gsm_map_CallTypeCriteria_vals[] = {
4534   {   0, "forwarded" },
4535   {   1, "notForwarded" },
4536   { 0, NULL }
4537 };
4538
4539
4540 static int
4541 dissect_gsm_map_CallTypeCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4542   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4543
4544   return offset;
4545 }
4546 static int dissect_callTypeCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4547   return dissect_gsm_map_CallTypeCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTypeCriteria);
4548 }
4549
4550 static const ber_sequence_t O_BcsmCamelTDP_CriteriaList_item_sequence[] = {
4551   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
4552   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberCriteria_impl },
4553   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_lst_impl },
4554   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTypeCriteria_impl },
4555   { 0, 0, 0, NULL }
4556 };
4557
4558 static int
4559 dissect_gsm_map_O_BcsmCamelTDP_CriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4560   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4561                                 O_BcsmCamelTDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDP_CriteriaList_item);
4562
4563   return offset;
4564 }
4565 static int dissect_O_BcsmCamelTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4566   return dissect_gsm_map_O_BcsmCamelTDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDP_CriteriaList_item);
4567 }
4568
4569 static const ber_sequence_t O_BcsmCamelTDP_CriteriaList_sequence_of[1] = {
4570   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDP_CriteriaList_item },
4571 };
4572
4573 static int
4574 dissect_gsm_map_O_BcsmCamelTDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4575   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4576                                    O_BcsmCamelTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDP_CriteriaList);
4577
4578   return offset;
4579 }
4580 static int dissect_o_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4581   return dissect_gsm_map_O_BcsmCamelTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDP_CriteriaList);
4582 }
4583
4584 static const ber_sequence_t T_vlrCamelSubscriptionInfo_sequence[] = {
4585   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
4586   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4587   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
4588   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
4589   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
4590   { 0, 0, 0, NULL }
4591 };
4592
4593 static int
4594 dissect_gsm_map_T_vlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4595   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4596                                 T_vlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_T_vlrCamelSubscriptionInfo);
4597
4598   return offset;
4599 }
4600 static int dissect_vlrCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4601   return dissect_gsm_map_T_vlrCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlrCamelSubscriptionInfo);
4602 }
4603
4604 static const ber_sequence_t Naea_PreferredCI_sequence[] = {
4605   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_naea_PreferredCIC_impl },
4606   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4607   { 0, 0, 0, NULL }
4608 };
4609
4610 static int
4611 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_) {
4612   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4613                                 Naea_PreferredCI_sequence, hf_index, ett_gsm_map_Naea_PreferredCI);
4614
4615   return offset;
4616 }
4617 static int dissect_naea_PreferredCI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4618   return dissect_gsm_map_Naea_PreferredCI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCI);
4619 }
4620
4621
4622
4623 static int
4624 dissect_gsm_map_INTEGER_1_50(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4625   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4626
4627   return offset;
4628 }
4629 static int dissect_pdp_ContextId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4630   return dissect_gsm_map_INTEGER_1_50(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextId);
4631 }
4632 static int dissect_contextIdList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4633   return dissect_gsm_map_INTEGER_1_50(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList_item);
4634 }
4635 static int dissect_pdp_ContextIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4636   return dissect_gsm_map_INTEGER_1_50(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextIdentifier);
4637 }
4638
4639
4640 static int
4641 dissect_gsm_map_OCTET_STRING_SIZE_1_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4642   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4643                                     NULL);
4644
4645   return offset;
4646 }
4647 static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4648   return dissect_gsm_map_OCTET_STRING_SIZE_1_16(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Address);
4649 }
4650
4651
4652 static int
4653 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_) {
4654   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4655                                     NULL);
4656
4657   return offset;
4658 }
4659 static int dissect_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4660   return dissect_gsm_map_Qos_Subscribed(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Subscribed);
4661 }
4662
4663
4664 static int
4665 dissect_gsm_map_OCTET_STRING_SIZE_2_63(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4666   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4667                                     NULL);
4668
4669   return offset;
4670 }
4671 static int dissect_apn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4672   return dissect_gsm_map_OCTET_STRING_SIZE_2_63(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn);
4673 }
4674 static int dissect_apn_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4675   return dissect_gsm_map_OCTET_STRING_SIZE_2_63(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_Subscribed);
4676 }
4677 static int dissect_apn_InUse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4678   return dissect_gsm_map_OCTET_STRING_SIZE_2_63(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn_InUse);
4679 }
4680
4681 static const ber_sequence_t T_gprsDataList_item_sequence[] = {
4682   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pdp_ContextId },
4683   { BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
4684   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
4685   { BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
4686   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vplmnAddressAllowed_impl },
4687   { BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_apn_impl },
4688   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4689   { 0, 0, 0, NULL }
4690 };
4691
4692 static int
4693 dissect_gsm_map_T_gprsDataList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4694   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4695                                 T_gprsDataList_item_sequence, hf_index, ett_gsm_map_T_gprsDataList_item);
4696
4697   return offset;
4698 }
4699 static int dissect_gprsDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4700   return dissect_gsm_map_T_gprsDataList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList_item);
4701 }
4702
4703 static const ber_sequence_t T_gprsDataList_sequence_of[1] = {
4704   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprsDataList_item },
4705 };
4706
4707 static int
4708 dissect_gsm_map_T_gprsDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4709   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4710                                    T_gprsDataList_sequence_of, hf_index, ett_gsm_map_T_gprsDataList);
4711
4712   return offset;
4713 }
4714 static int dissect_gprsDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4715   return dissect_gsm_map_T_gprsDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList);
4716 }
4717
4718 static const ber_sequence_t T_gprsSubscriptionData_sequence[] = {
4719   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
4720   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprsDataList_impl },
4721   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4722   { 0, 0, 0, NULL }
4723 };
4724
4725 static int
4726 dissect_gsm_map_T_gprsSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4727   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4728                                 T_gprsSubscriptionData_sequence, hf_index, ett_gsm_map_T_gprsSubscriptionData);
4729
4730   return offset;
4731 }
4732 static int dissect_gprsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4733   return dissect_gsm_map_T_gprsSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionData);
4734 }
4735
4736
4737 static const value_string gsm_map_T_networkAccessMode_vals[] = {
4738   {   0, "bothMSCAndSGSN" },
4739   {   1, "onlyMSC" },
4740   {   2, "onlySGSN" },
4741   { 0, NULL }
4742 };
4743
4744
4745 static int
4746 dissect_gsm_map_T_networkAccessMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4747   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4748
4749   return offset;
4750 }
4751 static int dissect_networkAccessMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4752   return dissect_gsm_map_T_networkAccessMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkAccessMode);
4753 }
4754
4755
4756 static const value_string gsm_map_T_lsaOnlyAccessIndicator_vals[] = {
4757   {   0, "accessOutsideLSAsAllowed" },
4758   {   1, "accessOutsideLSAsRestricted" },
4759   { 0, NULL }
4760 };
4761
4762
4763 static int
4764 dissect_gsm_map_T_lsaOnlyAccessIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4765   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4766
4767   return offset;
4768 }
4769 static int dissect_lsaOnlyAccessIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4770   return dissect_gsm_map_T_lsaOnlyAccessIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaOnlyAccessIndicator);
4771 }
4772
4773 static const ber_sequence_t T_lsaDataList_item_sequence[] = {
4774   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lsaIdentity_impl },
4775   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lsaAttributes_impl },
4776   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaActiveModeIndicator_impl },
4777   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4778   { 0, 0, 0, NULL }
4779 };
4780
4781 static int
4782 dissect_gsm_map_T_lsaDataList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4783   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4784                                 T_lsaDataList_item_sequence, hf_index, ett_gsm_map_T_lsaDataList_item);
4785
4786   return offset;
4787 }
4788 static int dissect_lsaDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4789   return dissect_gsm_map_T_lsaDataList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList_item);
4790 }
4791
4792 static const ber_sequence_t T_lsaDataList_sequence_of[1] = {
4793   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaDataList_item },
4794 };
4795
4796 static int
4797 dissect_gsm_map_T_lsaDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4798   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4799                                    T_lsaDataList_sequence_of, hf_index, ett_gsm_map_T_lsaDataList);
4800
4801   return offset;
4802 }
4803 static int dissect_lsaDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4804   return dissect_gsm_map_T_lsaDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList);
4805 }
4806
4807 static const ber_sequence_t T_lsaInformation_sequence[] = {
4808   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
4809   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaOnlyAccessIndicator_impl },
4810   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaDataList_impl },
4811   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4812   { 0, 0, 0, NULL }
4813 };
4814
4815 static int
4816 dissect_gsm_map_T_lsaInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4817   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4818                                 T_lsaInformation_sequence, hf_index, ett_gsm_map_T_lsaInformation);
4819
4820   return offset;
4821 }
4822 static int dissect_lsaInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4823   return dissect_gsm_map_T_lsaInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformation);
4824 }
4825
4826
4827 static int
4828 dissect_gsm_map_T_gmlc_List_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4829   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4830                                     NULL);
4831
4832   return offset;
4833 }
4834 static int dissect_gmlc_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4835   return dissect_gsm_map_T_gmlc_List_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List_item);
4836 }
4837
4838 static const ber_sequence_t T_gmlc_List_sequence_of[1] = {
4839   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gmlc_List_item },
4840 };
4841
4842 static int
4843 dissect_gsm_map_T_gmlc_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4844   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4845                                    T_gmlc_List_sequence_of, hf_index, ett_gsm_map_T_gmlc_List);
4846
4847   return offset;
4848 }
4849 static int dissect_gmlc_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4850   return dissect_gsm_map_T_gmlc_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List);
4851 }
4852
4853
4854 static const value_string gsm_map_NotificationToMSUser_vals[] = {
4855   {   0, "notifyLocationAllowed" },
4856   {   1, "notifyAndVerify-LocationAllowedIfNoResponse" },
4857   {   2, "notifyAndVerify-LocationNotAllowedIfNoResponse" },
4858   { 0, NULL }
4859 };
4860
4861
4862 static int
4863 dissect_gsm_map_NotificationToMSUser(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4864   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4865
4866   return offset;
4867 }
4868 static int dissect_notificationToMSUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4869   return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToMSUser);
4870 }
4871
4872
4873 static int
4874 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_) {
4875   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4876                                     NULL);
4877
4878   return offset;
4879 }
4880 static int dissect_externalAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4881   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalAddress);
4882 }
4883 static int dissect_omc_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4884   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_omc_Id);
4885 }
4886 static int dissect_ss_EventSpecification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4887   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification_item);
4888 }
4889 static int dissect_locationEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4890   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
4891 }
4892 static int dissect_locationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4893   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
4894 }
4895
4896 static const ber_sequence_t T_clientIdentity_sequence[] = {
4897   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
4898   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4899   { 0, 0, 0, NULL }
4900 };
4901
4902 static int
4903 dissect_gsm_map_T_clientIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4904   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4905                                 T_clientIdentity_sequence, hf_index, ett_gsm_map_T_clientIdentity);
4906
4907   return offset;
4908 }
4909 static int dissect_clientIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4910   return dissect_gsm_map_T_clientIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_clientIdentity);
4911 }
4912
4913
4914 static const value_string gsm_map_T_gmlc_Restriction_vals[] = {
4915   {   0, "gmlc-List" },
4916   {   1, "home-Country" },
4917   { 0, NULL }
4918 };
4919
4920
4921 static int
4922 dissect_gsm_map_T_gmlc_Restriction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4923   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4924
4925   return offset;
4926 }
4927 static int dissect_gmlc_Restriction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4928   return dissect_gsm_map_T_gmlc_Restriction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_Restriction);
4929 }
4930
4931 static const ber_sequence_t T_externalClientList_item_sequence[] = {
4932   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_clientIdentity },
4933   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
4934   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
4935   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4936   { 0, 0, 0, NULL }
4937 };
4938
4939 static int
4940 dissect_gsm_map_T_externalClientList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4941   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4942                                 T_externalClientList_item_sequence, hf_index, ett_gsm_map_T_externalClientList_item);
4943
4944   return offset;
4945 }
4946 static int dissect_externalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4947   return dissect_gsm_map_T_externalClientList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList_item);
4948 }
4949
4950 static const ber_sequence_t T_externalClientList_sequence_of[1] = {
4951   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_externalClientList_item },
4952 };
4953
4954 static int
4955 dissect_gsm_map_T_externalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4956   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4957                                    T_externalClientList_sequence_of, hf_index, ett_gsm_map_T_externalClientList);
4958
4959   return offset;
4960 }
4961 static int dissect_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4962   return dissect_gsm_map_T_externalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList);
4963 }
4964
4965
4966 static const value_string gsm_map_T_plmnClientList_item_vals[] = {
4967   {   0, "broadcastService" },
4968   {   1, "o-andM-HPLMN" },
4969   {   2, "o-andM-VPLMN" },
4970   {   3, "anonymousLocation" },
4971   {   4, "targetMSsubscribedService" },
4972   { 0, NULL }
4973 };
4974
4975
4976 static int
4977 dissect_gsm_map_T_plmnClientList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4978   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4979
4980   return offset;
4981 }
4982 static int dissect_plmnClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4983   return dissect_gsm_map_T_plmnClientList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList_item);
4984 }
4985
4986 static const ber_sequence_t T_plmnClientList_sequence_of[1] = {
4987   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_plmnClientList_item },
4988 };
4989
4990 static int
4991 dissect_gsm_map_T_plmnClientList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4992   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4993                                    T_plmnClientList_sequence_of, hf_index, ett_gsm_map_T_plmnClientList);
4994
4995   return offset;
4996 }
4997 static int dissect_plmnClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4998   return dissect_gsm_map_T_plmnClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList);
4999 }
5000
5001 static const ber_sequence_t T_lcs_PrivacyExceptionList_item_sequence[] = {
5002   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5003   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
5004   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
5005   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalClientList_impl },
5006   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_plmnClientList_impl },
5007   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5008   { 0, 0, 0, NULL }
5009 };
5010
5011 static int
5012 dissect_gsm_map_T_lcs_PrivacyExceptionList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5013   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5014                                 T_lcs_PrivacyExceptionList_item_sequence, hf_index, ett_gsm_map_T_lcs_PrivacyExceptionList_item);
5015
5016   return offset;
5017 }
5018 static int dissect_lcs_PrivacyExceptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5019   return dissect_gsm_map_T_lcs_PrivacyExceptionList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList_item);
5020 }
5021
5022 static const ber_sequence_t T_lcs_PrivacyExceptionList_sequence_of[1] = {
5023   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_PrivacyExceptionList_item },
5024 };
5025
5026 static int
5027 dissect_gsm_map_T_lcs_PrivacyExceptionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5028   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5029                                    T_lcs_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_T_lcs_PrivacyExceptionList);
5030
5031   return offset;
5032 }
5033 static int dissect_lcs_PrivacyExceptionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5034   return dissect_gsm_map_T_lcs_PrivacyExceptionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList);
5035 }
5036
5037 static const ber_sequence_t T_molr_List_item_sequence[] = {
5038   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
5039   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
5040   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5041   { 0, 0, 0, NULL }
5042 };
5043
5044 static int
5045 dissect_gsm_map_T_molr_List_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5047                                 T_molr_List_item_sequence, hf_index, ett_gsm_map_T_molr_List_item);
5048
5049   return offset;
5050 }
5051 static int dissect_molr_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5052   return dissect_gsm_map_T_molr_List_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List_item);
5053 }
5054
5055 static const ber_sequence_t T_molr_List_sequence_of[1] = {
5056   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_molr_List_item },
5057 };
5058
5059 static int
5060 dissect_gsm_map_T_molr_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5061   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5062                                    T_molr_List_sequence_of, hf_index, ett_gsm_map_T_molr_List);
5063
5064   return offset;
5065 }
5066 static int dissect_molr_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5067   return dissect_gsm_map_T_molr_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List);
5068 }
5069
5070 static const ber_sequence_t T_lcsInformation_sequence[] = {
5071   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_List_impl },
5072   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyExceptionList_impl },
5073   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_molr_List_impl },
5074   { 0, 0, 0, NULL }
5075 };
5076
5077 static int
5078 dissect_gsm_map_T_lcsInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5079   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5080                                 T_lcsInformation_sequence, hf_index, ett_gsm_map_T_lcsInformation);
5081
5082   return offset;
5083 }
5084 static int dissect_lcsInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5085   return dissect_gsm_map_T_lcsInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsInformation);
5086 }
5087
5088 static const ber_sequence_t InsertSubscriberDataArg_sequence[] = {
5089   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5090   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
5091   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_category_impl },
5092   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStatus_impl },
5093   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerserviceList_impl },
5094   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
5095   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_provisionedSS_impl },
5096   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Data_impl },
5097   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
5098   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionData_impl },
5099   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsSubscriptionData_impl },
5100   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsSubscriptionData_impl },
5101   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlrCamelSubscriptionInfo_impl },
5102   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5103   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
5104   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSubscriptionData_impl },
5105   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl },
5106   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkAccessMode_impl },
5107   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaInformation_impl },
5108   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmu_Indicator_impl },
5109   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsInformation_impl },
5110   { 0, 0, 0, NULL }
5111 };
5112
5113 static int
5114 dissect_gsm_map_InsertSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5115   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5116                                 InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_InsertSubscriberDataArg);
5117
5118   return offset;
5119 }
5120
5121 static const ber_sequence_t ss_List_sequence_of[1] = {
5122   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_List_item },
5123 };
5124
5125 static int
5126 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_) {
5127   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5128                                    ss_List_sequence_of, hf_index, ett_gsm_map_ss_List);
5129
5130   return offset;
5131 }
5132 static int dissect_ss_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5133   return dissect_gsm_map_ss_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List);
5134 }
5135
5136
5137 static const value_string gsm_map_RegionalSubscriptionResponse_vals[] = {
5138   {   0, "networkNodeAreaRestricted" },
5139   {   1, "tooManyZoneCodes" },
5140   {   2, "zoneCodesConflict" },
5141   {   3, "regionalSubscNotSupported" },
5142   { 0, NULL }
5143 };
5144
5145
5146 static int
5147 dissect_gsm_map_RegionalSubscriptionResponse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5148   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5149
5150   return offset;
5151 }
5152 static int dissect_regionalSubscriptionResponse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5153   return dissect_gsm_map_RegionalSubscriptionResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionResponse);
5154 }
5155
5156 static const ber_sequence_t InsertSubscriberDataRes_sequence[] = {
5157   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
5158   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerserviceList_impl },
5159   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
5160   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_GeneralData_impl },
5161   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
5162   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
5163   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5164   { 0, 0, 0, NULL }
5165 };
5166
5167 static int
5168 dissect_gsm_map_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5169   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5170                                 InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_InsertSubscriberDataRes);
5171
5172   return offset;
5173 }
5174
5175 static const ber_sequence_t T_contextIdList_sequence_of[1] = {
5176   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_contextIdList_item },
5177 };
5178
5179 static int
5180 dissect_gsm_map_T_contextIdList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5181   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5182                                    T_contextIdList_sequence_of, hf_index, ett_gsm_map_T_contextIdList);
5183
5184   return offset;
5185 }
5186 static int dissect_contextIdList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5187   return dissect_gsm_map_T_contextIdList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList);
5188 }
5189
5190
5191 static const value_string gsm_map_T_gprsSubscriptionDataWithdraw_vals[] = {
5192   {   0, "allGPRSData" },
5193   {   1, "contextIdList" },
5194   { 0, NULL }
5195 };
5196
5197 static const ber_choice_t T_gprsSubscriptionDataWithdraw_choice[] = {
5198   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allGPRSData },
5199   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextIdList },
5200   { 0, 0, 0, 0, NULL }
5201 };
5202
5203 static int
5204 dissect_gsm_map_T_gprsSubscriptionDataWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5205   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5206                               T_gprsSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_T_gprsSubscriptionDataWithdraw);
5207
5208   return offset;
5209 }
5210 static int dissect_gprsSubscriptionDataWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5211   return dissect_gsm_map_T_gprsSubscriptionDataWithdraw(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionDataWithdraw);
5212 }
5213
5214 static const ber_sequence_t T_lsaIdentityList_sequence_of[1] = {
5215   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList_item },
5216 };
5217
5218 static int
5219 dissect_gsm_map_T_lsaIdentityList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5220   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5221                                    T_lsaIdentityList_sequence_of, hf_index, ett_gsm_map_T_lsaIdentityList);
5222
5223   return offset;
5224 }
5225 static int dissect_lsaIdentityList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5226   return dissect_gsm_map_T_lsaIdentityList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList);
5227 }
5228
5229
5230 static const value_string gsm_map_T_lsaInformationWithdraw_vals[] = {
5231   {   0, "allLSAData" },
5232   {   1, "lsaIdentityList" },
5233   { 0, NULL }
5234 };
5235
5236 static const ber_choice_t T_lsaInformationWithdraw_choice[] = {
5237   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allLSAData },
5238   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList },
5239   { 0, 0, 0, 0, NULL }
5240 };
5241
5242 static int
5243 dissect_gsm_map_T_lsaInformationWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5244   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5245                               T_lsaInformationWithdraw_choice, hf_index, ett_gsm_map_T_lsaInformationWithdraw);
5246
5247   return offset;
5248 }
5249 static int dissect_lsaInformationWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5250   return dissect_gsm_map_T_lsaInformationWithdraw(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformationWithdraw);
5251 }
5252
5253 static const ber_sequence_t DeleteSubscriberDataArg_sequence[] = {
5254   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5255   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceList_impl },
5256   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
5257   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
5258   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionIdentifier_impl },
5259   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsGroupIndication_impl },
5260   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsGroupIndication_impl },
5261   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelSubscriptionInfoWithdraw_impl },
5262   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5263   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_gprsSubscriptionDataWithdraw },
5264   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl },
5265   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_lsaInformationWithdraw },
5266   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_ListWithdraw_impl },
5267   { 0, 0, 0, NULL }
5268 };
5269
5270 static int
5271 dissect_gsm_map_DeleteSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5272   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5273                                 DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataArg);
5274
5275   return offset;
5276 }
5277
5278 static const ber_sequence_t DeleteSubscriberDataRes_sequence[] = {
5279   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
5280   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5281   { 0, 0, 0, NULL }
5282 };
5283
5284 static int
5285 dissect_gsm_map_DeleteSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5286   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5287                                 DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataRes);
5288
5289   return offset;
5290 }
5291
5292
5293 static int
5294 dissect_gsm_map_OCTET_STRING_SIZE_3_8(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5295   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5296                                     NULL);
5297
5298   return offset;
5299 }
5300 static int dissect_hlr_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5301   return dissect_gsm_map_OCTET_STRING_SIZE_3_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List_item);
5302 }
5303
5304 static const ber_sequence_t T_hlr_List_sequence_of[1] = {
5305   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_List_item },
5306 };
5307
5308 static int
5309 dissect_gsm_map_T_hlr_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5310   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5311                                    T_hlr_List_sequence_of, hf_index, ett_gsm_map_T_hlr_List);
5312
5313   return offset;
5314 }
5315 static int dissect_hlr_List(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5316   return dissect_gsm_map_T_hlr_List(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List);
5317 }
5318
5319 static const ber_sequence_t ResetArg_sequence[] = {
5320   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
5321   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_hlr_List },
5322   { 0, 0, 0, NULL }
5323 };
5324
5325 static int
5326 dissect_gsm_map_ResetArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5327   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5328                                 ResetArg_sequence, hf_index, ett_gsm_map_ResetArg);
5329
5330   return offset;
5331 }
5332
5333 static const ber_sequence_t RestoreDataArg_sequence[] = {
5334   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
5335   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
5336   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5337   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
5338   { 0, 0, 0, NULL }
5339 };
5340
5341 static int
5342 dissect_gsm_map_RestoreDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5343   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5344                                 RestoreDataArg_sequence, hf_index, ett_gsm_map_RestoreDataArg);
5345
5346   return offset;
5347 }
5348
5349 static const ber_sequence_t RestoreDataRes_sequence[] = {
5350   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
5351   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msNotReachable },
5352   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5353   { 0, 0, 0, NULL }
5354 };
5355
5356 static int
5357 dissect_gsm_map_RestoreDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5358   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5359                                 RestoreDataRes_sequence, hf_index, ett_gsm_map_RestoreDataRes);
5360
5361   return offset;
5362 }
5363
5364
5365 static int
5366 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_) {
5367   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5368                                     NULL);
5369
5370   return offset;
5371 }
5372 static int dissect_traceReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5373   return dissect_gsm_map_OCTET_STRING_SIZE_1_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceReference);
5374 }
5375 static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5376   return dissect_gsm_map_OCTET_STRING_SIZE_1_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_transactionId);
5377 }
5378
5379
5380
5381 static int
5382 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_) {
5383   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5384
5385   return offset;
5386 }
5387 static int dissect_traceType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5388   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceType);
5389 }
5390 static int dissect_absentSubscriberDiagnosticSM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5391   return dissect_gsm_map_INTEGER_0_255(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
5392 }
5393 static int dissect_absentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5394   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
5395 }
5396 static int dissect_additionalAbsentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5397   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalAbsentSubscriberDiagnosticSM);
5398 }
5399 static int dissect_mobileNotReachableReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5400   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mobileNotReachableReason);
5401 }
5402
5403 static const ber_sequence_t ActivateTraceModeArg_sequence[] = {
5404   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5405   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
5406   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_traceType_impl },
5407   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_omc_Id_impl },
5408   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5409   { 0, 0, 0, NULL }
5410 };
5411
5412 static int
5413 dissect_gsm_map_ActivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5414   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5415                                 ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_ActivateTraceModeArg);
5416
5417   return offset;
5418 }
5419
5420 static const ber_sequence_t ActivateTraceModeRes_sequence[] = {
5421   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5422   { 0, 0, 0, NULL }
5423 };
5424
5425 static int
5426 dissect_gsm_map_ActivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5427   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5428                                 ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_ActivateTraceModeRes);
5429
5430   return offset;
5431 }
5432
5433 static const ber_sequence_t DeactivateTraceModeArg_sequence[] = {
5434   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5435   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
5436   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5437   { 0, 0, 0, NULL }
5438 };
5439
5440 static int
5441 dissect_gsm_map_DeactivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5442   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5443                                 DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_DeactivateTraceModeArg);
5444
5445   return offset;
5446 }
5447
5448 static const ber_sequence_t DeactivateTraceModeRes_sequence[] = {
5449   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5450   { 0, 0, 0, NULL }
5451 };
5452
5453 static int
5454 dissect_gsm_map_DeactivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5455   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5456                                 DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_DeactivateTraceModeRes);
5457
5458   return offset;
5459 }
5460
5461 static const ber_sequence_t Cug_CheckInfo_sequence[] = {
5462   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
5463   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_OutgoingAccess },
5464   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5465   { 0, 0, 0, NULL }
5466 };
5467
5468 static int
5469 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_) {
5470   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5471                                 Cug_CheckInfo_sequence, hf_index, ett_gsm_map_Cug_CheckInfo);
5472
5473   return offset;
5474 }
5475 static int dissect_cug_CheckInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5476   return dissect_gsm_map_Cug_CheckInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_CheckInfo);
5477 }
5478
5479
5480 static const value_string gsm_map_T_interrogationType_vals[] = {
5481   {   0, "basicCall" },
5482   {   1, "forwarding" },
5483   { 0, NULL }
5484 };
5485
5486
5487 static int
5488 dissect_gsm_map_T_interrogationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5489   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5490
5491   return offset;
5492 }
5493 static int dissect_interrogationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5494   return dissect_gsm_map_T_interrogationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_interrogationType);
5495 }
5496
5497
5498
5499 static int
5500 dissect_gsm_map_INTEGER_1_127(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5501   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5502
5503   return offset;
5504 }
5505 static int dissect_or_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5506   return dissect_gsm_map_INTEGER_1_127(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Capability);
5507 }
5508 static int dissect_supportedCCBS_Phase_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5509   return dissect_gsm_map_INTEGER_1_127(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCCBS_Phase);
5510 }
5511
5512
5513 static int
5514 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_) {
5515
5516  tvbuff_t       *parameter_tvb;
5517  char           *digit_str;
5518
5519  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5520                                     &parameter_tvb);
5521
5522  if (!parameter_tvb)
5523         return offset;
5524
5525  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
5526  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
5527  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
5528
5529  digit_str = unpack_digits(parameter_tvb, 1);
5530
5531  proto_tree_add_string(tree, hf_gsm_map_map_gmsc_address_digits, parameter_tvb, 1, -1, digit_str);
5532  if (digit_str)
5533         g_free(digit_str);
5534
5535
5536   return offset;
5537 }
5538 static int dissect_gmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5539   return dissect_gsm_map_Gmsc_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_Address);
5540 }
5541
5542
5543 static const value_string gsm_map_T_forwardingReason_vals[] = {
5544   {   0, "notReachable" },
5545   {   1, "busy" },
5546   {   2, "noReply" },
5547   { 0, NULL }
5548 };
5549
5550
5551 static int
5552 dissect_gsm_map_T_forwardingReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5553   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5554
5555   return offset;
5556 }
5557 static int dissect_forwardingReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5558   return dissect_gsm_map_T_forwardingReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingReason);
5559 }
5560
5561 static const ber_sequence_t T_camelInfo_sequence[] = {
5562   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_supportedCamelPhases },
5563   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_suppress_T_CSI },
5564   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5565   { 0, 0, 0, NULL }
5566 };
5567
5568 static int
5569 dissect_gsm_map_T_camelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5570   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5571                                 T_camelInfo_sequence, hf_index, ett_gsm_map_T_camelInfo);
5572
5573   return offset;
5574 }
5575 static int dissect_camelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5576   return dissect_gsm_map_T_camelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelInfo);
5577 }
5578
5579
5580 static const value_string gsm_map_T_ext_ProtocolId_vals[] = {
5581   {   1, "ets-300356" },
5582   { 0, NULL }
5583 };
5584
5585
5586 static int
5587 dissect_gsm_map_T_ext_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5588   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5589
5590   return offset;
5591 }
5592 static int dissect_ext_ProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5593   return dissect_gsm_map_T_ext_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ProtocolId);
5594 }
5595
5596
5597 static int
5598 dissect_gsm_map_ExtSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5599   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5600                                     NULL);
5601
5602   return offset;
5603 }
5604 static int dissect_ext_signalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5605   return dissect_gsm_map_ExtSignalInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_signalInfo);
5606 }
5607
5608 static const ber_sequence_t AdditionalSignalInfo_sequence[] = {
5609   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_ext_ProtocolId },
5610   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ext_signalInfo },
5611   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5612   { 0, 0, 0, NULL }
5613 };
5614
5615 static int
5616 dissect_gsm_map_AdditionalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5617   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5618                                 AdditionalSignalInfo_sequence, hf_index, ett_gsm_map_AdditionalSignalInfo);
5619
5620   return offset;
5621 }
5622 static int dissect_additionalSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5623   return dissect_gsm_map_AdditionalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSignalInfo);
5624 }
5625
5626 static const ber_sequence_t SendRoutingInfoArg_sequence[] = {
5627   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
5628   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
5629   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberOfForwarding_impl },
5630   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_interrogationType_impl },
5631   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
5632   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Capability_impl },
5633   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
5634   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
5635   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingReason_impl },
5636   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
5637   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
5638   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelInfo_impl },
5639   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
5640   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5641   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
5642   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
5643   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCCBS_Phase_impl },
5644   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
5645   { 0, 0, 0, NULL }
5646 };
5647
5648 static int
5649 dissect_gsm_map_SendRoutingInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5650   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5651                                 SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoArg);
5652
5653   return offset;
5654 }
5655
5656
5657 static int
5658 dissect_gsm_map_RoamingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5659
5660  tvbuff_t       *parameter_tvb;
5661  char           *digit_str;
5662
5663  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5664                                     &parameter_tvb);
5665
5666  if (!parameter_tvb)
5667         return offset;
5668
5669  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
5670  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
5671  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
5672
5673  digit_str = unpack_digits(parameter_tvb, 1);
5674
5675  proto_tree_add_string(tree, hf_gsm_map_map_RoamingNumber_digits, parameter_tvb, 1, -1, digit_str);
5676  if (digit_str)
5677         g_free(digit_str);
5678
5679   return offset;
5680 }
5681 static int dissect_roamingNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5682   return dissect_gsm_map_RoamingNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNumber);
5683 }
5684
5685 static const ber_sequence_t ForwardingData_sequence[] = {
5686   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
5687   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
5688   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
5689   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5690   { 0, 0, 0, NULL }
5691 };
5692
5693 static int
5694 dissect_gsm_map_ForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5695   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5696                                 ForwardingData_sequence, hf_index, ett_gsm_map_ForwardingData);
5697
5698   return offset;
5699 }
5700 static int dissect_forwardingData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5701   return dissect_gsm_map_ForwardingData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
5702 }
5703 static int dissect_forwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5704   return dissect_gsm_map_ForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
5705 }
5706
5707
5708 static const value_string gsm_map_T_routingInfo_vals[] = {
5709   {   0, "roamingNumber" },
5710   {   1, "forwardingData" },
5711   { 0, NULL }
5712 };
5713
5714 static const ber_choice_t T_routingInfo_choice[] = {
5715   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
5716   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingData },
5717   { 0, 0, 0, 0, NULL }
5718 };
5719
5720 static int
5721 dissect_gsm_map_T_routingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5722   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5723                               T_routingInfo_choice, hf_index, ett_gsm_map_T_routingInfo);
5724
5725   return offset;
5726 }
5727 static int dissect_routingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5728   return dissect_gsm_map_T_routingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo);
5729 }
5730
5731 static const ber_sequence_t t_CSI_sequence[] = {
5732   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
5733   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5734   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
5735   { 0, 0, 0, NULL }
5736 };
5737
5738 static int
5739 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_) {
5740   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5741                                 t_CSI_sequence, hf_index, ett_gsm_map_t_CSI);
5742
5743   return offset;
5744 }
5745 static int dissect_t_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5746   return dissect_gsm_map_t_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CSI);
5747 }
5748
5749 static const ber_sequence_t T_gmscCamelSubscriptionInfo_sequence[] = {
5750   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
5751   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
5752   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5753   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
5754   { 0, 0, 0, NULL }
5755 };
5756
5757 static int
5758 dissect_gsm_map_T_gmscCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5759   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5760                                 T_gmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_T_gmscCamelSubscriptionInfo);
5761
5762   return offset;
5763 }
5764 static int dissect_gmscCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5765   return dissect_gsm_map_T_gmscCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmscCamelSubscriptionInfo);
5766 }
5767
5768 static const ber_sequence_t T_camelRoutingInfo_sequence[] = {
5769   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_forwardingData },
5770   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gmscCamelSubscriptionInfo_impl },
5771   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5772   { 0, 0, 0, NULL }
5773 };
5774
5775 static int
5776 dissect_gsm_map_T_camelRoutingInfo(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(implicit_tag, pinfo, tree, tvb, offset,
5778                                 T_camelRoutingInfo_sequence, hf_index, ett_gsm_map_T_camelRoutingInfo);
5779
5780   return offset;
5781 }
5782 static int dissect_camelRoutingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5783   return dissect_gsm_map_T_camelRoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelRoutingInfo);
5784 }
5785
5786
5787 static const value_string gsm_map_T_extendedRoutingInfo_vals[] = {
5788   {   0, "routingInfo" },
5789   {   1, "camelRoutingInfo" },
5790   { 0, NULL }
5791 };
5792
5793 static const ber_choice_t T_extendedRoutingInfo_choice[] = {
5794   {   0, BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
5795   {   1, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_camelRoutingInfo_impl },
5796   { 0, 0, 0, 0, NULL }
5797 };
5798
5799 static int
5800 dissect_gsm_map_T_extendedRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5801   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5802                               T_extendedRoutingInfo_choice, hf_index, ett_gsm_map_T_extendedRoutingInfo);
5803
5804   return offset;
5805 }
5806 static int dissect_extendedRoutingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5807   return dissect_gsm_map_T_extendedRoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extendedRoutingInfo);
5808 }
5809
5810
5811 static int
5812 dissect_gsm_map_OCTET_STRING_SIZE_2_10(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5813   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5814                                     NULL);
5815
5816   return offset;
5817 }
5818 static int dissect_locationNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5819   return dissect_gsm_map_OCTET_STRING_SIZE_2_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationNumber);
5820 }
5821
5822
5823 static int
5824 dissect_gsm_map_OCTET_STRING_SIZE_5(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5825   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5826                                     NULL);
5827
5828   return offset;
5829 }
5830 static int dissect_laiFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5831   return dissect_gsm_map_OCTET_STRING_SIZE_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_laiFixedLength);
5832 }
5833
5834
5835 static const value_string gsm_map_T_cellIdOrLAI_vals[] = {
5836   {   0, "cellIdFixedLength" },
5837   {   1, "laiFixedLength" },
5838   { 0, NULL }
5839 };
5840
5841 static const ber_choice_t T_cellIdOrLAI_choice[] = {
5842   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cellIdFixedLength_impl },
5843   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_laiFixedLength_impl },
5844   { 0, 0, 0, 0, NULL }
5845 };
5846
5847 static int
5848 dissect_gsm_map_T_cellIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5849   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5850                               T_cellIdOrLAI_choice, hf_index, ett_gsm_map_T_cellIdOrLAI);
5851
5852   return offset;
5853 }
5854 static int dissect_cellIdOrLAI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5855   return dissect_gsm_map_T_cellIdOrLAI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdOrLAI);
5856 }
5857
5858
5859 static int
5860 dissect_gsm_map_OCTET_STRING_SIZE_10(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5861   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5862                                     NULL);
5863
5864   return offset;
5865 }
5866 static int dissect_geodeticInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5867   return dissect_gsm_map_OCTET_STRING_SIZE_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geodeticInformation);
5868 }
5869
5870 static const ber_sequence_t LocationInformation_sequence[] = {
5871   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ageOfLocationInformation },
5872   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geographicalInformation_impl },
5873   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_number_impl },
5874   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationNumber_impl },
5875   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_cellIdOrLAI },
5876   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5877   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedLSA_Id_impl },
5878   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
5879   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geodeticInformation_impl },
5880   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocationRetrieved_impl },
5881   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
5882   { 0, 0, 0, NULL }
5883 };
5884
5885 static int
5886 dissect_gsm_map_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5887   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5888                                 LocationInformation_sequence, hf_index, ett_gsm_map_LocationInformation);
5889
5890   return offset;
5891 }
5892 static int dissect_locationInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5893   return dissect_gsm_map_LocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation);
5894 }
5895
5896
5897 static const value_string gsm_map_SubscriberState_vals[] = {
5898   {   0, "assumedIdle" },
5899   {   1, "camelBusy" },
5900   {   2, "notProvidedFromVLR" },
5901   { 0, NULL }
5902 };
5903
5904 static const ber_choice_t SubscriberState_choice[] = {
5905   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_assumedIdle_impl },
5906   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_camelBusy_impl },
5907   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_notProvidedFromVLR_impl },
5908   { 0, 0, 0, 0, NULL }
5909 };
5910
5911 static int
5912 dissect_gsm_map_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5913   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5914                               SubscriberState_choice, hf_index, ett_gsm_map_SubscriberState);
5915
5916   return offset;
5917 }
5918 static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5919   return dissect_gsm_map_SubscriberState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState);
5920 }
5921
5922
5923 static const value_string gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI_vals[] = {
5924   {   0, "cellGlobalIdOrServiceAreaIdFixedLength" },
5925   {   1, "laiFixedLength" },
5926   { 0, NULL }
5927 };
5928
5929 static const ber_choice_t T_cellGlobalIdOrServiceAreaIdOrLAI_choice[] = {
5930   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cellGlobalIdOrServiceAreaIdFixedLength_impl },
5931   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_laiFixedLength_impl },
5932   { 0, 0, 0, 0, NULL }
5933 };
5934
5935 static int
5936 dissect_gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5937   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5938                               T_cellGlobalIdOrServiceAreaIdOrLAI_choice, hf_index, ett_gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI);
5939
5940   return offset;
5941 }
5942 static int dissect_cellGlobalIdOrServiceAreaIdOrLAI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5943   return dissect_gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI);
5944 }
5945
5946
5947 static int
5948 dissect_gsm_map_OCTET_STRING_SIZE_6(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5949   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5950                                     NULL);
5951
5952   return offset;
5953 }
5954 static int dissect_routeingAreaIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5955   return dissect_gsm_map_OCTET_STRING_SIZE_6(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routeingAreaIdentity);
5956 }
5957
5958 static const ber_sequence_t T_locationInformationGPRS_sequence[] = {
5959   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_cellGlobalIdOrServiceAreaIdOrLAI },
5960   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_routeingAreaIdentity_impl },
5961   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geographicalInformation_impl },
5962   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
5963   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedLSAIdentity_impl },
5964   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5965   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sai_Present_impl },
5966   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geodeticInformation_impl },
5967   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocationRetrieved_impl },
5968   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationInformation_impl },
5969   { 0, 0, 0, NULL }
5970 };
5971
5972 static int
5973 dissect_gsm_map_T_locationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5974   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5975                                 T_locationInformationGPRS_sequence, hf_index, ett_gsm_map_T_locationInformationGPRS);
5976
5977   return offset;
5978 }
5979 static int dissect_locationInformationGPRS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5980   return dissect_gsm_map_T_locationInformationGPRS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationGPRS);
5981 }
5982
5983
5984 static int
5985 dissect_gsm_map_Ggsn_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5986   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5987                                     NULL);
5988
5989   return offset;
5990 }
5991 static int dissect_ggsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5992   return dissect_gsm_map_Ggsn_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Address);
5993 }
5994
5995
5996 static int
5997 dissect_gsm_map_OCTET_STRING_SIZE_1_3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5998   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5999                                     NULL);
6000
6001   return offset;
6002 }
6003 static int dissect_qos2_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6004   return dissect_gsm_map_OCTET_STRING_SIZE_1_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Subscribed);
6005 }
6006 static int dissect_qos2_Requested_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6007   return dissect_gsm_map_OCTET_STRING_SIZE_1_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Requested);
6008 }
6009 static int dissect_qos2_Negotiated_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6010   return dissect_gsm_map_OCTET_STRING_SIZE_1_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos2_Negotiated);
6011 }
6012
6013 static const ber_sequence_t T_ps_PDP_ActiveNotReachableForPaging_item_sequence[] = {
6014   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pdp_ContextIdentifier_impl },
6015   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ContextActive_impl },
6016   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
6017   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
6018   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_Subscribed_impl },
6019   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_InUse_impl },
6020   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nsapi_impl },
6021   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
6022   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForGnAndGp_impl },
6023   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForIu_impl },
6024   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
6025   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
6026   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Requested_impl },
6027   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Negotiated_impl },
6028   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingId_impl },
6029   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
6030   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rnc_Address_impl },
6031   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6032   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Subscribed_impl },
6033   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Requested_impl },
6034   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Negotiated_impl },
6035   { 0, 0, 0, NULL }
6036 };
6037
6038 static int
6039 dissect_gsm_map_T_ps_PDP_ActiveNotReachableForPaging_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6040   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6041                                 T_ps_PDP_ActiveNotReachableForPaging_item_sequence, hf_index, ett_gsm_map_T_ps_PDP_ActiveNotReachableForPaging_item);
6042
6043   return offset;
6044 }
6045 static int dissect_ps_PDP_ActiveNotReachableForPaging_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6046   return dissect_gsm_map_T_ps_PDP_ActiveNotReachableForPaging_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveNotReachableForPaging_item);
6047 }
6048
6049 static const ber_sequence_t T_ps_PDP_ActiveNotReachableForPaging_sequence_of[1] = {
6050   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ps_PDP_ActiveNotReachableForPaging_item },
6051 };
6052
6053 static int
6054 dissect_gsm_map_T_ps_PDP_ActiveNotReachableForPaging(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6055   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6056                                    T_ps_PDP_ActiveNotReachableForPaging_sequence_of, hf_index, ett_gsm_map_T_ps_PDP_ActiveNotReachableForPaging);
6057
6058   return offset;
6059 }
6060 static int dissect_ps_PDP_ActiveNotReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6061   return dissect_gsm_map_T_ps_PDP_ActiveNotReachableForPaging(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveNotReachableForPaging);
6062 }
6063
6064 static const ber_sequence_t T_ps_PDP_ActiveReachableForPaging_item_sequence[] = {
6065   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pdp_ContextIdentifier_impl },
6066   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_ContextActive_impl },
6067   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
6068   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
6069   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_Subscribed_impl },
6070   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_apn_InUse_impl },
6071   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nsapi_impl },
6072   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_transactionId_impl },
6073   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForGnAndGp_impl },
6074   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teid_ForIu_impl },
6075   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
6076   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
6077   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Requested_impl },
6078   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos_Negotiated_impl },
6079   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingId_impl },
6080   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chargingCharacteristics_impl },
6081   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_rnc_Address_impl },
6082   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6083   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Subscribed_impl },
6084   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Requested_impl },
6085   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_qos2_Negotiated_impl },
6086   { 0, 0, 0, NULL }
6087 };
6088
6089 static int
6090 dissect_gsm_map_T_ps_PDP_ActiveReachableForPaging_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6091   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6092                                 T_ps_PDP_ActiveReachableForPaging_item_sequence, hf_index, ett_gsm_map_T_ps_PDP_ActiveReachableForPaging_item);
6093
6094   return offset;
6095 }
6096 static int dissect_ps_PDP_ActiveReachableForPaging_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6097   return dissect_gsm_map_T_ps_PDP_ActiveReachableForPaging_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveReachableForPaging_item);
6098 }
6099
6100 static const ber_sequence_t T_ps_PDP_ActiveReachableForPaging_sequence_of[1] = {
6101   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ps_PDP_ActiveReachableForPaging_item },
6102 };
6103
6104 static int
6105 dissect_gsm_map_T_ps_PDP_ActiveReachableForPaging(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6106   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6107                                    T_ps_PDP_ActiveReachableForPaging_sequence_of, hf_index, ett_gsm_map_T_ps_PDP_ActiveReachableForPaging);
6108
6109   return offset;
6110 }
6111 static int dissect_ps_PDP_ActiveReachableForPaging_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6112   return dissect_gsm_map_T_ps_PDP_ActiveReachableForPaging(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ps_PDP_ActiveReachableForPaging);
6113 }
6114
6115
6116 static const value_string gsm_map_T_netDetNotReachable_vals[] = {
6117   {   0, "msPurged" },
6118   {   1, "imsiDetached" },
6119   {   2, "restrictedArea" },
6120   {   3, "notRegistered" },
6121   { 0, NULL }
6122 };
6123
6124
6125 static int
6126 dissect_gsm_map_T_netDetNotReachable(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6127   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6128
6129   return offset;
6130 }
6131 static int dissect_netDetNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6132   return dissect_gsm_map_T_netDetNotReachable(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_netDetNotReachable);
6133 }
6134
6135
6136 static const value_string gsm_map_T_ps_SubscriberState_vals[] = {
6137   {   0, "notProvidedFromSGSN" },
6138   {   1, "ps-Detached" },
6139   {   2, "ps-AttachedNotReachableForPaging" },
6140   {   3, "ps-AttachedReachableForPaging" },
6141   {   4, "ps-PDP-ActiveNotReachableForPaging" },
6142   {   5, "ps-PDP-ActiveReachableForPaging" },
6143   {   6, "netDetNotReachable" },
6144   { 0, NULL }
6145 };
6146
6147 static const ber_choice_t T_ps_SubscriberState_choice[] = {
6148   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_notProvidedFromSGSN_impl },
6149   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ps_Detached_impl },
6150   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ps_AttachedNotReachableForPaging_impl },
6151   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ps_AttachedReachableForPaging_impl },
6152   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveNotReachableForPaging_impl },
6153   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_ps_PDP_ActiveReachableForPaging_impl },
6154   {   6, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_netDetNotReachable },
6155   { 0, 0, 0, 0, NULL }
6156 };
6157
6158 static int
6159 dissect_gsm_map_T_ps_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6160   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6161                               T_ps_SubscriberState_choice, hf_index, ett_gsm_map_T_ps_SubscriberState);
6162
6163   return offset;
6164 }
6165 static int dissect_ps_SubscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6166   return dissect_gsm_map_T_ps_SubscriberState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ps_SubscriberState);
6167 }
6168
6169
6170 static int
6171 dissect_gsm_map_OCTET_STRING_SIZE_1_50(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6172   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6173                                     NULL);
6174
6175   return offset;
6176 }
6177 static int dissect_mSRadioAccessCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6178   return dissect_gsm_map_OCTET_STRING_SIZE_1_50(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mSRadioAccessCapability);
6179 }
6180
6181 static const ber_sequence_t T_gprs_MS_Class_sequence[] = {
6182   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mSNetworkCapability_impl },
6183   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mSRadioAccessCapability_impl },
6184   { 0, 0, 0, NULL }
6185 };
6186
6187 static int
6188 dissect_gsm_map_T_gprs_MS_Class(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6189   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6190                                 T_gprs_MS_Class_sequence, hf_index, ett_gsm_map_T_gprs_MS_Class);
6191
6192   return offset;
6193 }
6194 static int dissect_gprs_MS_Class_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6195   return dissect_gsm_map_T_gprs_MS_Class(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_MS_Class);
6196 }
6197
6198
6199 static int
6200 dissect_gsm_map_OCTET_STRING_SIZE_1_5(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6201   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6202                                     NULL);
6203
6204   return offset;
6205 }
6206 static int dissect_routeingNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6207   return dissect_gsm_map_OCTET_STRING_SIZE_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_routeingNumber);
6208 }
6209 static int dissect_ext_BearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6210   return dissect_gsm_map_OCTET_STRING_SIZE_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_BearerService);
6211 }
6212 static int dissect_ext_Teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6213   return dissect_gsm_map_OCTET_STRING_SIZE_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ext_Teleservice);
6214 }
6215
6216
6217 static const value_string gsm_map_NumberPortabilityStatus_vals[] = {
6218   {   0, "notKnownToBePorted" },
6219   {   1, "ownNumberPortedOut" },
6220   {   2, "foreignNumberPortedToForeignNetwork" },
6221   {   4, "ownNumberNotPortedOut" },
6222   {   5, "foreignNumberPortedIn" },
6223   { 0, NULL }
6224 };
6225
6226
6227 static int
6228 dissect_gsm_map_NumberPortabilityStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6229   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6230
6231   return offset;
6232 }
6233 static int dissect_numberPortabilityStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6234   return dissect_gsm_map_NumberPortabilityStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberPortabilityStatus);
6235 }
6236
6237 static const ber_sequence_t T_mnpInfoRes_sequence[] = {
6238   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_routeingNumber_impl },
6239   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6240   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6241   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
6242   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6243   { 0, 0, 0, NULL }
6244 };
6245
6246 static int
6247 dissect_gsm_map_T_mnpInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6248   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6249                                 T_mnpInfoRes_sequence, hf_index, ett_gsm_map_T_mnpInfoRes);
6250
6251   return offset;
6252 }
6253 static int dissect_mnpInfoRes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6254   return dissect_gsm_map_T_mnpInfoRes(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mnpInfoRes);
6255 }
6256
6257 static const ber_sequence_t SubscriberInfo_sequence[] = {
6258   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
6259   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_subscriberState },
6260   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6261   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformationGPRS_impl },
6262   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_ps_SubscriberState },
6263   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
6264   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_Classmark2_impl },
6265   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_MS_Class_impl },
6266   { BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mnpInfoRes_impl },
6267   { 0, 0, 0, NULL }
6268 };
6269
6270 static int
6271 dissect_gsm_map_SubscriberInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6272   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6273                                 SubscriberInfo_sequence, hf_index, ett_gsm_map_SubscriberInfo);
6274
6275   return offset;
6276 }
6277 static int dissect_subscriberInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6278   return dissect_gsm_map_SubscriberInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
6279 }
6280 static int dissect_subscriberInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6281   return dissect_gsm_map_SubscriberInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
6282 }
6283
6284
6285 static int
6286 dissect_gsm_map_T_vmsc_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6287   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6288                                     NULL);
6289
6290   return offset;
6291 }
6292 static int dissect_vmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6293   return dissect_gsm_map_T_vmsc_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vmsc_Address);
6294 }
6295
6296 static const ber_sequence_t T_ccbs_Indicators_sequence[] = {
6297   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
6298   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepCCBS_CallIndicator_impl },
6299   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6300   { 0, 0, 0, NULL }
6301 };
6302
6303 static int
6304 dissect_gsm_map_T_ccbs_Indicators(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6305   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6306                                 T_ccbs_Indicators_sequence, hf_index, ett_gsm_map_T_ccbs_Indicators);
6307
6308   return offset;
6309 }
6310 static int dissect_ccbs_Indicators_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6311   return dissect_gsm_map_T_ccbs_Indicators(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Indicators);
6312 }
6313
6314 static const ber_sequence_t SendRoutingInfoRes_sequence[] = {
6315   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6316   { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
6317   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
6318   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cugSubscriptionFlag_impl },
6319   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberInfo_impl },
6320   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
6321   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicService },
6322   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInterrogationRequired_impl },
6323   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vmsc_Address_impl },
6324   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6325   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
6326   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Indicators_impl },
6327   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6328   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
6329   { 0, 0, 0, NULL }
6330 };
6331
6332 static int
6333 dissect_gsm_map_SendRoutingInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6334   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6335                                 SendRoutingInfoRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoRes);
6336
6337   return offset;
6338 }
6339
6340
6341 static const value_string gsm_map_NetDetNotReachable_vals[] = {
6342   {   0, "msPurged" },
6343   {   1, "imsiDetached" },
6344   {   2, "restrictedArea" },
6345   {   3, "notRegistered" },
6346   { 0, NULL }
6347 };
6348
6349
6350 static int
6351 dissect_gsm_map_NetDetNotReachable(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6352   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6353
6354   return offset;
6355 }
6356
6357 static const ber_sequence_t ProvideRoamingNumberArg_sequence[] = {
6358   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6359   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
6360   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6361   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
6362   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
6363   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
6364   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
6365   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
6366   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
6367   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
6368   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6369   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
6370   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
6371   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInGMSC_impl },
6372   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
6373   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_orNotSupportedInGMSC_impl },
6374   { 0, 0, 0, NULL }
6375 };
6376
6377 static int
6378 dissect_gsm_map_ProvideRoamingNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6379   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6380                                 ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberArg);
6381
6382   return offset;
6383 }
6384
6385 static const ber_sequence_t ProvideRoamingNumberRes_sequence[] = {
6386   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
6387   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6388   { 0, 0, 0, NULL }
6389 };
6390
6391 static int
6392 dissect_gsm_map_ProvideRoamingNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6393   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6394                                 ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberRes);
6395
6396   return offset;
6397 }
6398
6399
6400 static int
6401 dissect_gsm_map_OCTET_STRING_SIZE_1_131(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6402   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6403                                     NULL);
6404
6405   return offset;
6406 }
6407 static int dissect_uui_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6408   return dissect_gsm_map_OCTET_STRING_SIZE_1_131(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uui);
6409 }
6410
6411 static const ber_sequence_t T_uu_Data_sequence[] = {
6412   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uuIndicator_impl },
6413   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uui_impl },
6414   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uusCFInteraction_impl },
6415   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6416   { 0, 0, 0, NULL }
6417 };
6418
6419 static int
6420 dissect_gsm_map_T_uu_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6421   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6422                                 T_uu_Data_sequence, hf_index, ett_gsm_map_T_uu_Data);
6423
6424   return offset;
6425 }
6426 static int dissect_uu_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6427   return dissect_gsm_map_T_uu_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uu_Data);
6428 }
6429
6430 static const ber_sequence_t ResumeCallHandlingArg_sequence[] = {
6431   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
6432   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
6433   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingData_impl },
6434   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6435   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
6436   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
6437   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6438   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
6439   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6440   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uu_Data_impl },
6441   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allInformationSent_impl },
6442   { 0, 0, 0, NULL }
6443 };
6444
6445 static int
6446 dissect_gsm_map_ResumeCallHandlingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6447   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6448                                 ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ResumeCallHandlingArg);
6449
6450   return offset;
6451 }
6452
6453 static const ber_sequence_t ResumeCallHandlingRes_sequence[] = {
6454   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6455   { 0, 0, 0, NULL }
6456 };
6457
6458 static int
6459 dissect_gsm_map_ResumeCallHandlingRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6460   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6461                                 ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ResumeCallHandlingRes);
6462
6463   return offset;
6464 }
6465
6466
6467 static int
6468 dissect_gsm_map_T_b_Subscriber_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6469   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6470                                     NULL);
6471
6472   return offset;
6473 }
6474 static int dissect_b_Subscriber_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6475   return dissect_gsm_map_T_b_Subscriber_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_Subscriber_Address);
6476 }
6477
6478 static const ber_sequence_t ProvideSIWFSNumberArg_sequence[] = {
6479   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
6480   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_BearerCapability_impl },
6481   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_call_Direction_impl },
6482   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_b_Subscriber_Address_impl },
6483   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
6484   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lowerLayerCompatibility_impl },
6485   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_highLayerCompatibility_impl },
6486   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6487   { 0, 0, 0, NULL }
6488 };
6489
6490 static int
6491 dissect_gsm_map_ProvideSIWFSNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6492   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6493                                 ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberArg);
6494
6495   return offset;
6496 }
6497
6498
6499 static int
6500 dissect_gsm_map_T_sIWFSNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6501   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6502                                     NULL);
6503
6504   return offset;
6505 }
6506 static int dissect_sIWFSNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6507   return dissect_gsm_map_T_sIWFSNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sIWFSNumber);
6508 }
6509
6510 static const ber_sequence_t ProvideSIWFSNumberRes_sequence[] = {
6511   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sIWFSNumber_impl },
6512   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6513   { 0, 0, 0, NULL }
6514 };
6515
6516 static int
6517 dissect_gsm_map_ProvideSIWFSNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6518   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6519                                 ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberRes);
6520
6521   return offset;
6522 }
6523
6524 static const ber_sequence_t SIWFSSignallingModifyArg_sequence[] = {
6525   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
6526   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
6527   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6528   { 0, 0, 0, NULL }
6529 };
6530
6531 static int
6532 dissect_gsm_map_SIWFSSignallingModifyArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6533   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6534                                 SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyArg);
6535
6536   return offset;
6537 }
6538
6539 static const ber_sequence_t SIWFSSignallingModifyRes_sequence[] = {
6540   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
6541   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6542   { 0, 0, 0, NULL }
6543 };
6544
6545 static int
6546 dissect_gsm_map_SIWFSSignallingModifyRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6547   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6548                                 SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyRes);
6549
6550   return offset;
6551 }
6552
6553
6554 static const value_string gsm_map_Ccbs_Monitoring_vals[] = {
6555   {   0, "stopMonitoring" },
6556   {   1, "startMonitoring" },
6557   { 0, NULL }
6558 };
6559
6560
6561 static int
6562 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_) {
6563   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6564
6565   return offset;
6566 }
6567 static int dissect_ccbs_Monitoring_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6568   return dissect_gsm_map_Ccbs_Monitoring(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Monitoring);
6569 }
6570
6571 static const ber_sequence_t SetReportingStateArg_sequence[] = {
6572   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6573   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
6574   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Monitoring_impl },
6575   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6576   { 0, 0, 0, NULL }
6577 };
6578
6579 static int
6580 dissect_gsm_map_SetReportingStateArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6581   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6582                                 SetReportingStateArg_sequence, hf_index, ett_gsm_map_SetReportingStateArg);
6583
6584   return offset;
6585 }
6586
6587
6588 static const value_string gsm_map_Ccbs_SubscriberStatus_vals[] = {
6589   {   0, "ccbsNotIdle" },
6590   {   1, "ccbsIdle" },
6591   {   2, "ccbsNotReachable" },
6592   { 0, NULL }
6593 };
6594
6595
6596 static int
6597 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_) {
6598   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6599
6600   return offset;
6601 }
6602 static int dissect_ccbs_SubscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6603   return dissect_gsm_map_Ccbs_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_SubscriberStatus);
6604 }
6605
6606 static const ber_sequence_t SetReportingStateRes_sequence[] = {
6607   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
6608   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6609   { 0, 0, 0, NULL }
6610 };
6611
6612 static int
6613 dissect_gsm_map_SetReportingStateRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6614   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6615                                 SetReportingStateRes_sequence, hf_index, ett_gsm_map_SetReportingStateRes);
6616
6617   return offset;
6618 }
6619
6620
6621 static const value_string gsm_map_MonitoringMode_vals[] = {
6622   {   0, "a-side" },
6623   {   1, "b-side" },
6624   { 0, NULL }
6625 };
6626
6627
6628 static int
6629 dissect_gsm_map_MonitoringMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6630   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6631
6632   return offset;
6633 }
6634 static int dissect_monitoringMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6635   return dissect_gsm_map_MonitoringMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_monitoringMode);
6636 }
6637
6638
6639 static const value_string gsm_map_CallOutcome_vals[] = {
6640   {   0, "success" },
6641   {   1, "failure" },
6642   {   2, "busy" },
6643   { 0, NULL }
6644 };
6645
6646
6647 static int
6648 dissect_gsm_map_CallOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6649   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6650
6651   return offset;
6652 }
6653 static int dissect_callOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6654   return dissect_gsm_map_CallOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callOutcome);
6655 }
6656
6657 static const ber_sequence_t T_eventReportData_sequence[] = {
6658   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
6659   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6660   { 0, 0, 0, NULL }
6661 };
6662
6663 static int
6664 dissect_gsm_map_T_eventReportData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6665   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6666                                 T_eventReportData_sequence, hf_index, ett_gsm_map_T_eventReportData);
6667
6668   return offset;
6669 }
6670 static int dissect_eventReportData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6671   return dissect_gsm_map_T_eventReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventReportData);
6672 }
6673
6674 static const ber_sequence_t T_callReportdata_sequence[] = {
6675   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_monitoringMode_impl },
6676   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOutcome_impl },
6677   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6678   { 0, 0, 0, NULL }
6679 };
6680
6681 static int
6682 dissect_gsm_map_T_callReportdata(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(implicit_tag, pinfo, tree, tvb, offset,
6684                                 T_callReportdata_sequence, hf_index, ett_gsm_map_T_callReportdata);
6685
6686   return offset;
6687 }
6688 static int dissect_callReportdata_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6689   return dissect_gsm_map_T_callReportdata(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReportdata);
6690 }
6691
6692 static const ber_sequence_t StatusReportArg_sequence[] = {
6693   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6694   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventReportData_impl },
6695   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReportdata_impl },
6696   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6697   { 0, 0, 0, NULL }
6698 };
6699
6700 static int
6701 dissect_gsm_map_StatusReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6702   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6703                                 StatusReportArg_sequence, hf_index, ett_gsm_map_StatusReportArg);
6704
6705   return offset;
6706 }
6707
6708 static const ber_sequence_t StatusReportRes_sequence[] = {
6709   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6710   { 0, 0, 0, NULL }
6711 };
6712
6713 static int
6714 dissect_gsm_map_StatusReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6715   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6716                                 StatusReportRes_sequence, hf_index, ett_gsm_map_StatusReportRes);
6717
6718   return offset;
6719 }
6720
6721
6722 static const value_string gsm_map_Ruf_Outcome_vals[] = {
6723   {   0, "accepted" },
6724   {   1, "rejected" },
6725   {   2, "noResponseFromFreeMS" },
6726   {   3, "noResponseFromBusyMS" },
6727   {   4, "udubFromFreeMS" },
6728   {   5, "udubFromBusyMS" },
6729   { 0, NULL }
6730 };
6731
6732
6733 static int
6734 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_) {
6735   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6736
6737   return offset;
6738 }
6739 static int dissect_ruf_Outcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6740   return dissect_gsm_map_Ruf_Outcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ruf_Outcome);
6741 }
6742
6743
6744 static int
6745 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_) {
6746   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6747                                     NULL);
6748
6749   return offset;
6750 }
6751 static int dissect_b_subscriberNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6752   return dissect_gsm_map_B_subscriberNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberNumber);
6753 }
6754
6755
6756 static int
6757 dissect_gsm_map_OCTET_STRING_SIZE_1_21(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6758   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6759                                     NULL);
6760
6761   return offset;
6762 }
6763 static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6764   return dissect_gsm_map_OCTET_STRING_SIZE_1_21(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberSubaddress);
6765 }
6766
6767 static const ber_sequence_t Ccbs_Feature_sequence[] = {
6768   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
6769   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
6770   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
6771   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
6772   { 0, 0, 0, NULL }
6773 };
6774
6775 static int
6776 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_) {
6777   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6778                                 Ccbs_Feature_sequence, hf_index, ett_gsm_map_Ccbs_Feature);
6779
6780   return offset;
6781 }
6782 static int dissect_ccbs_Feature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6783   return dissect_gsm_map_Ccbs_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
6784 }
6785
6786
6787 static int
6788 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_) {
6789   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6790                                     NULL);
6791
6792   return offset;
6793 }
6794 static int dissect_translatedB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6795   return dissect_gsm_map_TranslatedB_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
6796 }
6797
6798 static const ber_sequence_t RemoteUserFreeArg_sequence[] = {
6799   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6800   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
6801   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
6802   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
6803   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replaceB_Number_impl },
6804   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
6805   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6806   { 0, 0, 0, NULL }
6807 };
6808
6809 static int
6810 dissect_gsm_map_RemoteUserFreeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6811   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6812                                 RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_RemoteUserFreeArg);
6813
6814   return offset;
6815 }
6816
6817 static const ber_sequence_t RemoteUserFreeRes_sequence[] = {
6818   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ruf_Outcome_impl },
6819   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6820   { 0, 0, 0, NULL }
6821 };
6822
6823 static int
6824 dissect_gsm_map_RemoteUserFreeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6825   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6826                                 RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_RemoteUserFreeRes);
6827
6828   return offset;
6829 }
6830
6831 static const ber_sequence_t RegisterSS_Arg_sequence[] = {
6832   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
6833   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
6834   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
6835   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
6836   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
6837   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
6838   { 0, 0, 0, NULL }
6839 };
6840
6841 static int
6842 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_) {
6843   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6844                                 RegisterSS_Arg_sequence, hf_index, ett_gsm_map_RegisterSS_Arg);
6845
6846   return offset;
6847 }
6848
6849
6850 static const value_string gsm_map_Ss_Info_vals[] = {
6851   {   0, "forwardingInfo" },
6852   {   1, "callBarringInfo" },
6853   {   3, "ss-Data" },
6854   { 0, NULL }
6855 };
6856
6857 static const ber_choice_t Ss_Info_choice[] = {
6858   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
6859   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
6860   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data_impl },
6861   { 0, 0, 0, 0, NULL }
6862 };
6863
6864 static int
6865 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_) {
6866   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6867                               Ss_Info_choice, hf_index, ett_gsm_map_Ss_Info);
6868
6869   return offset;
6870 }
6871
6872 static const ber_sequence_t Ss_ForBS_sequence[] = {
6873   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
6874   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
6875   { 0, 0, 0, NULL }
6876 };
6877
6878 static int
6879 dissect_gsm_map_Ss_ForBS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6880   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6881                                 Ss_ForBS_sequence, hf_index, ett_gsm_map_Ss_ForBS);
6882
6883   return offset;
6884 }
6885
6886 static const ber_sequence_t SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList_sequence_of[1] = {
6887   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList_item },
6888 };
6889
6890 static int
6891 dissect_gsm_map_SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6892   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6893                                    SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList);
6894
6895   return offset;
6896 }
6897 static int dissect_forwardingFeatureList_1_13_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6898   return dissect_gsm_map_SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList_1_13);
6899 }
6900
6901 static const ber_sequence_t T_ccbs_FeatureList_item_sequence[] = {
6902   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
6903   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
6904   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
6905   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
6906   { 0, 0, 0, NULL }
6907 };
6908
6909 static int
6910 dissect_gsm_map_T_ccbs_FeatureList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6911   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6912                                 T_ccbs_FeatureList_item_sequence, hf_index, ett_gsm_map_T_ccbs_FeatureList_item);
6913
6914   return offset;
6915 }
6916 static int dissect_ccbs_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6917   return dissect_gsm_map_T_ccbs_FeatureList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList_item);
6918 }
6919
6920 static const ber_sequence_t T_ccbs_FeatureList_sequence_of[1] = {
6921   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ccbs_FeatureList_item },
6922 };
6923
6924 static int
6925 dissect_gsm_map_T_ccbs_FeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6926   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6927                                    T_ccbs_FeatureList_sequence_of, hf_index, ett_gsm_map_T_ccbs_FeatureList);
6928
6929   return offset;
6930 }
6931 static int dissect_ccbs_FeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6932   return dissect_gsm_map_T_ccbs_FeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList);
6933 }
6934
6935 static const ber_sequence_t T_genericServiceInfo_sequence[] = {
6936   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
6937   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
6938   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximumEntitledPriority_impl },
6939   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
6940   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_FeatureList_impl },
6941   { 0, 0, 0, NULL }
6942 };
6943
6944 static int
6945 dissect_gsm_map_T_genericServiceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6946   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6947                                 T_genericServiceInfo_sequence, hf_index, ett_gsm_map_T_genericServiceInfo);
6948
6949   return offset;
6950 }
6951 static int dissect_genericServiceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6952   return dissect_gsm_map_T_genericServiceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_genericServiceInfo);
6953 }
6954
6955
6956 static const value_string gsm_map_InterrogateSS_Res_vals[] = {
6957   {   0, "ss-Status" },
6958   {   2, "basicServiceGroupList" },
6959   {   3, "forwardingFeatureList" },
6960   {   4, "genericServiceInfo" },
6961   { 0, NULL }
6962 };
6963
6964 static const ber_choice_t InterrogateSS_Res_choice[] = {
6965   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
6966   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_basicServiceGroupList_impl },
6967   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_forwardingFeatureList_1_13_impl },
6968   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_genericServiceInfo_impl },
6969   { 0, 0, 0, 0, NULL }
6970 };
6971
6972 static int
6973 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_) {
6974   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6975                               InterrogateSS_Res_choice, hf_index, ett_gsm_map_InterrogateSS_Res);
6976
6977   return offset;
6978 }
6979
6980
6981 static int
6982 dissect_gsm_map_OCTET_STRING_SIZE_1_160(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6983   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6984                                     NULL);
6985
6986   return offset;
6987 }
6988 static int dissect_ussd_String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6989   return dissect_gsm_map_OCTET_STRING_SIZE_1_160(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_String);
6990 }
6991
6992 static const ber_sequence_t Ussd_Arg_sequence[] = {
6993   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
6994   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
6995   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertingPattern },
6996   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6997   { 0, 0, 0, NULL }
6998 };
6999
7000 static int
7001 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_) {
7002   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7003                                 Ussd_Arg_sequence, hf_index, ett_gsm_map_Ussd_Arg);
7004
7005   return offset;
7006 }
7007
7008 static const ber_sequence_t Ussd_Res_sequence[] = {
7009   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
7010   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
7011   { 0, 0, 0, NULL }
7012 };
7013
7014 static int
7015 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_) {
7016   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7017                                 Ussd_Res_sequence, hf_index, ett_gsm_map_Ussd_Res);
7018
7019   return offset;
7020 }
7021
7022
7023 static int
7024 dissect_gsm_map_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7025   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
7026                                          pinfo, tree, tvb, offset, hf_index,
7027                                          NULL);
7028
7029   return offset;
7030 }
7031
7032
7033 static const value_string gsm_map_GetPasswordArg_vals[] = {
7034   {   0, "enterPW" },
7035   {   1, "enterNewPW" },
7036   {   2, "enterNewPW-Again" },
7037   { 0, NULL }
7038 };
7039
7040
7041 static int
7042 dissect_gsm_map_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7043   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7044
7045   return offset;
7046 }
7047
7048
7049 static int
7050 dissect_gsm_map_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7051   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
7052                                          pinfo, tree, tvb, offset, hf_index,
7053                                          NULL);
7054
7055   return offset;
7056 }
7057
7058 static const asn_namedbit ServiceIndicator_bits[] = {
7059   {  0, &hf_gsm_map_ServiceIndicator_clirInvoked, -1, -1, NULL, NULL },
7060   {  1, &hf_gsm_map_ServiceIndicator_camelInvoked, -1, -1, NULL, NULL },
7061   { 0, NULL, 0, 0, NULL, NULL }
7062 };
7063
7064 static int
7065 dissect_gsm_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7066   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7067                                  ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
7068                                  NULL);
7069
7070   return offset;
7071 }
7072 static int dissect_serviceIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7073   return dissect_gsm_map_ServiceIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceIndicator);
7074 }
7075
7076 static const ber_sequence_t T_ccbs_Data_sequence[] = {
7077   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
7078   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
7079   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceIndicator_impl },
7080   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
7081   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
7082   { 0, 0, 0, NULL }
7083 };
7084
7085 static int
7086 dissect_gsm_map_T_ccbs_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7087   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7088                                 T_ccbs_Data_sequence, hf_index, ett_gsm_map_T_ccbs_Data);
7089
7090   return offset;
7091 }
7092 static int dissect_ccbs_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7093   return dissect_gsm_map_T_ccbs_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Data);
7094 }
7095
7096 static const ber_sequence_t RegisterCC_EntryArg_sequence[] = {
7097   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
7098   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Data_impl },
7099   { 0, 0, 0, NULL }
7100 };
7101
7102 static int
7103 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_) {
7104   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7105                                 RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_RegisterCC_EntryArg);
7106
7107   return offset;
7108 }
7109
7110 static const ber_sequence_t RegisterCC_EntryRes_sequence[] = {
7111   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
7112   { 0, 0, 0, NULL }
7113 };
7114
7115 static int
7116 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_) {
7117   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7118                                 RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_RegisterCC_EntryRes);
7119
7120   return offset;
7121 }
7122
7123 static const ber_sequence_t EraseCC_EntryArg_sequence[] = {
7124   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
7125   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
7126   { 0, 0, 0, NULL }
7127 };
7128
7129 static int
7130 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_) {
7131   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7132                                 EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_EraseCC_EntryArg);
7133
7134   return offset;
7135 }
7136
7137 static const ber_sequence_t EraseCC_EntryRes_sequence[] = {
7138   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
7139   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
7140   { 0, 0, 0, NULL }
7141 };
7142
7143 static int
7144 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_) {
7145   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7146                                 EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_EraseCC_EntryRes);
7147
7148   return offset;
7149 }
7150
7151
7152 static int
7153 dissect_gsm_map_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7154   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
7155
7156   return offset;
7157 }
7158 static int dissect_sm_RP_PRI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7159   return dissect_gsm_map_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_PRI);
7160 }
7161
7162
7163 static int
7164 dissect_gsm_map_ServiceCentreAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7165
7166  tvbuff_t       *parameter_tvb;
7167  char           *digit_str;
7168
7169  offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7170                                     &parameter_tvb);
7171  if (!parameter_tvb)
7172         return offset;
7173
7174  proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
7175  proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
7176  proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
7177
7178  digit_str = unpack_digits(parameter_tvb, 1);
7179
7180  proto_tree_add_string(tree, hf_gsm_map_servicecentreaddress_digits, parameter_tvb, 1, -1, digit_str);
7181  if (digit_str)
7182         g_free(digit_str);
7183
7184
7185   return offset;
7186 }
7187 static int dissect_serviceCentreAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7188   return dissect_gsm_map_ServiceCentreAddress(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
7189 }
7190 static int dissect_serviceCentreAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7191   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
7192 }
7193 static int dissect_serviceCentreAddressOA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7194   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressOA);
7195 }
7196 static int dissect_serviceCentreAddressDA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7197   return dissect_gsm_map_ServiceCentreAddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressDA);
7198 }
7199
7200
7201
7202 static int
7203 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_) {
7204   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7205
7206   return offset;
7207 }
7208 static int dissect_sm_RP_MTI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7209   return dissect_gsm_map_INTEGER_0_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_MTI);
7210 }
7211
7212
7213 static int
7214 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_) {
7215   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7216                                     NULL);
7217
7218   return offset;
7219 }
7220 static int dissect_sm_RP_SMEA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7221   return dissect_gsm_map_OCTET_STRING_SIZE_1_12(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_SMEA);
7222 }
7223
7224 static const ber_sequence_t RoutingInfoForSMArg_sequence[] = {
7225   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
7226   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sm_RP_PRI_impl },
7227   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddress_impl },
7228   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7229   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
7230   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_MTI_impl },
7231   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_SMEA_impl },
7232   { 0, 0, 0, NULL }
7233 };
7234
7235 static int
7236 dissect_gsm_map_RoutingInfoForSMArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7237   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7238                                 RoutingInfoForSMArg_sequence, hf_index, ett_gsm_map_RoutingInfoForSMArg);
7239
7240   return offset;
7241 }
7242
7243
7244 static int
7245 dissect_gsm_map_T_networkNode_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7246   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7247                                     NULL);
7248
7249   return offset;
7250 }
7251 static int dissect_networkNode_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7252   return dissect_gsm_map_T_networkNode_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
7253 }
7254
7255
7256 static const value_string gsm_map_T_additional_Number_vals[] = {
7257   {   0, "msc-Number" },
7258   {   1, "sgsn-Number" },
7259   { 0, NULL }
7260 };
7261
7262 static const ber_choice_t T_additional_Number_choice[] = {
7263   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
7264   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
7265   { 0, 0, 0, 0, NULL }
7266 };
7267
7268 static int
7269 dissect_gsm_map_T_additional_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7270   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7271                               T_additional_Number_choice, hf_index, ett_gsm_map_T_additional_Number);
7272
7273   return offset;
7274 }
7275 static int dissect_additional_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7276   return dissect_gsm_map_T_additional_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additional_Number);
7277 }
7278
7279 static const ber_sequence_t T_locationInfoWithLMSI_sequence[] = {
7280   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_networkNode_Number_impl },
7281   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
7282   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7283   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
7284   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_additional_Number },
7285   { 0, 0, 0, NULL }
7286 };
7287
7288 static int
7289 dissect_gsm_map_T_locationInfoWithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7290   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7291                                 T_locationInfoWithLMSI_sequence, hf_index, ett_gsm_map_T_locationInfoWithLMSI);
7292
7293   return offset;
7294 }
7295 static int dissect_locationInfoWithLMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7296   return dissect_gsm_map_T_locationInfoWithLMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInfoWithLMSI);
7297 }
7298
7299 static const ber_sequence_t RoutingInfoForSMRes_sequence[] = {
7300   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
7301   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationInfoWithLMSI_impl },
7302   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7303   { 0, 0, 0, NULL }
7304 };
7305
7306 static int
7307 dissect_gsm_map_RoutingInfoForSMRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7308   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7309                                 RoutingInfoForSMRes_sequence, hf_index, ett_gsm_map_RoutingInfoForSMRes);
7310
7311   return offset;
7312 }
7313
7314
7315 static const value_string gsm_map_Sm_RP_DA_vals[] = {
7316   {   0, "imsi" },
7317   {   1, "lmsi" },
7318   {   4, "serviceCentreAddressDA" },
7319   {   5, "noSM-RP-DA" },
7320   { 0, NULL }
7321 };
7322
7323 static const ber_choice_t Sm_RP_DA_choice[] = {
7324   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7325   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
7326   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressDA_impl },
7327   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_DA_impl },
7328   { 0, 0, 0, 0, NULL }
7329 };
7330
7331 static int
7332 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_) {
7333   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7334                               Sm_RP_DA_choice, hf_index, ett_gsm_map_Sm_RP_DA);
7335
7336   return offset;
7337 }
7338 static int dissect_sm_RP_DA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7339   return dissect_gsm_map_Sm_RP_DA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_DA);
7340 }
7341
7342
7343 static const value_string gsm_map_Sm_RP_OA_vals[] = {
7344   {   2, "msisdn" },
7345   {   4, "serviceCentreAddressOA" },
7346   {   5, "noSM-RP-OA" },
7347   { 0, NULL }
7348 };
7349
7350 static const ber_choice_t Sm_RP_OA_choice[] = {
7351   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
7352   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressOA_impl },
7353   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_OA_impl },
7354   { 0, 0, 0, 0, NULL }
7355 };
7356
7357 static int
7358 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_) {
7359   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7360                               Sm_RP_OA_choice, hf_index, ett_gsm_map_Sm_RP_OA);
7361
7362   return offset;
7363 }
7364 static int dissect_sm_RP_OA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7365   return dissect_gsm_map_Sm_RP_OA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_OA);
7366 }
7367
7368
7369 static int
7370 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_) {
7371
7372   tvbuff_t      *tpdu_tvb;
7373         
7374   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7375                                     &tpdu_tvb);
7376     /*
7377      * dissect the embedded TPDU message
7378      */
7379  if (!tpdu_tvb)
7380         return offset;
7381
7382     dissector_try_port(sms_dissector_table, 0, tpdu_tvb, pinfo, top_tree);
7383
7384   return offset;
7385 }
7386 static int dissect_sm_RP_UI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7387   return dissect_gsm_map_Sm_RP_UI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_UI);
7388 }
7389
7390 static const ber_sequence_t Mo_forwardSM_Arg_sequence[] = {
7391   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
7392   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
7393   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
7394   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7395   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
7396   { 0, 0, 0, NULL }
7397 };
7398
7399 static int
7400 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_) {
7401   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7402                                 Mo_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Arg);
7403
7404   return offset;
7405 }
7406
7407 static const ber_sequence_t Mo_forwardSM_Res_sequence[] = {
7408   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
7409   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7410   { 0, 0, 0, NULL }
7411 };
7412
7413 static int
7414 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_) {
7415   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7416                                 Mo_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Res);
7417
7418   return offset;
7419 }
7420
7421 static const ber_sequence_t Mt_forwardSM_Arg_sequence[] = {
7422   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
7423   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
7424   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
7425   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_moreMessagesToSend },
7426   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7427   { 0, 0, 0, NULL }
7428 };
7429
7430 static int
7431 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_) {
7432   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7433                                 Mt_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Arg);
7434
7435   return offset;
7436 }
7437
7438 static const ber_sequence_t Mt_forwardSM_Res_sequence[] = {
7439   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
7440   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7441   { 0, 0, 0, NULL }
7442 };
7443
7444 static int
7445 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_) {
7446   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7447                                 Mt_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Res);
7448
7449   return offset;
7450 }
7451
7452
7453 static int
7454 dissect_gsm_map_StoredMSISDN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7455   offset = dissect_gsm_map_Msisdn(implicit_tag, tvb, offset, pinfo, tree, hf_index);
7456
7457   return offset;
7458 }
7459 static int dissect_storedMSISDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7460   return dissect_gsm_map_StoredMSISDN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_storedMSISDN);
7461 }
7462
7463
7464 static const value_string gsm_map_Sm_DeliveryOutcome_vals[] = {
7465   {   0, "memoryCapacityExceeded" },
7466   {   1, "absentSubscriber" },
7467   {   2, "successfulTransfer" },
7468   { 0, NULL }
7469 };
7470
7471
7472 static int
7473 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_) {
7474   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7475
7476   return offset;
7477 }
7478 static int dissect_sm_DeliveryOutcome(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7479   return dissect_gsm_map_Sm_DeliveryOutcome(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_DeliveryOutcome);
7480 }
7481 static int dissect_additionalSM_DeliveryOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7482   return dissect_gsm_map_Sm_DeliveryOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSM_DeliveryOutcome);
7483 }
7484
7485 static const ber_sequence_t ReportSM_DeliveryStatusArg_sequence[] = {
7486   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
7487   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
7488   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_DeliveryOutcome },
7489   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberDiagnosticSM_impl },
7490   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7491   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
7492   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deliveryOutcomeIndicator_impl },
7493   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSM_DeliveryOutcome_impl },
7494   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
7495   { 0, 0, 0, NULL }
7496 };
7497
7498 static int
7499 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_) {
7500   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7501                                 ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusArg);
7502
7503   return offset;
7504 }
7505
7506 static const ber_sequence_t ReportSM_DeliveryStatusRes_sequence[] = {
7507   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
7508   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7509   { 0, 0, 0, NULL }
7510 };
7511
7512 static int
7513 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_) {
7514   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7515                                 ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusRes);
7516
7517   return offset;
7518 }
7519
7520 static const asn_namedbit T_mw_Status_bits[] = {
7521   {  0, &hf_gsm_map_T_mw_Status_scAddressNotIncluded, -1, -1, NULL, NULL },
7522   {  1, &hf_gsm_map_T_mw_Status_mnrfSet, -1, -1, NULL, NULL },
7523   {  2, &hf_gsm_map_T_mw_Status_mcefSet, -1, -1, NULL, NULL },
7524   {  3, &hf_gsm_map_T_mw_Status_mnrgSet, -1, -1, NULL, NULL },
7525   { 0, NULL, 0, 0, NULL, NULL }
7526 };
7527
7528 static int
7529 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_) {
7530   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7531                                  T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
7532                                  NULL);
7533
7534   return offset;
7535 }
7536 static int dissect_mw_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7537   return dissect_gsm_map_T_mw_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mw_Status);
7538 }
7539
7540 static const ber_sequence_t InformServiceCentreArg_sequence[] = {
7541   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
7542   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mw_Status },
7543   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7544   { 0, 0, 0, NULL }
7545 };
7546
7547 static int
7548 dissect_gsm_map_InformServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7549   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7550                                 InformServiceCentreArg_sequence, hf_index, ett_gsm_map_InformServiceCentreArg);
7551
7552   return offset;
7553 }
7554
7555 static const ber_sequence_t AlertServiceCentreArg_sequence[] = {
7556   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
7557   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
7558   { 0, 0, 0, NULL }
7559 };
7560
7561 static int
7562 dissect_gsm_map_AlertServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7563   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7564                                 AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_AlertServiceCentreArg);
7565
7566   return offset;
7567 }
7568
7569
7570 static const value_string gsm_map_T_alertReason_vals[] = {
7571   {   0, "msPresent" },
7572   {   1, "memoryAvailable" },
7573   { 0, NULL }
7574 };
7575
7576
7577 static int
7578 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_) {
7579   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7580
7581   return offset;
7582 }
7583 static int dissect_alertReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7584   return dissect_gsm_map_T_alertReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReason);
7585 }
7586
7587 static const ber_sequence_t ReadyForSM_Arg_sequence[] = {
7588   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7589   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_alertReason },
7590   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertReasonIndicator },
7591   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7592   { 0, 0, 0, NULL }
7593 };
7594
7595 static int
7596 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_) {
7597   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7598                                 ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_ReadyForSM_Arg);
7599
7600   return offset;
7601 }
7602
7603 static const ber_sequence_t ReadyForSM_Res_sequence[] = {
7604   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7605   { 0, 0, 0, NULL }
7606 };
7607
7608 static int
7609 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_) {
7610   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7611                                 ReadyForSM_Res_sequence, hf_index, ett_gsm_map_ReadyForSM_Res);
7612
7613   return offset;
7614 }
7615
7616
7617 static const value_string gsm_map_T_requestedDomain_vals[] = {
7618   {   0, "cs-Domain" },
7619   {   1, "ps-Domain" },
7620   { 0, NULL }
7621 };
7622
7623
7624 static int
7625 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_) {
7626   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7627
7628   return offset;
7629 }
7630 static int dissect_requestedDomain_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7631   return dissect_gsm_map_T_requestedDomain(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedDomain);
7632 }
7633
7634 static const ber_sequence_t RequestedInfo_sequence[] = {
7635   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformationFlag_impl },
7636   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStateFlag_impl },
7637   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7638   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentLocation_impl },
7639   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedDomain_impl },
7640   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_flg_impl },
7641   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ms_classmark_impl },
7642   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mnpRequestedInfo_impl },
7643   { 0, 0, 0, NULL }
7644 };
7645
7646 static int
7647 dissect_gsm_map_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7648   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7649                                 RequestedInfo_sequence, hf_index, ett_gsm_map_RequestedInfo);
7650
7651   return offset;
7652 }
7653 static int dissect_requestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7654   return dissect_gsm_map_RequestedInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedInfo);
7655 }
7656
7657 static const ber_sequence_t ProvideSubscriberInfoArg_sequence[] = {
7658   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7659   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
7660   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
7661   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7662   { 0, 0, 0, NULL }
7663 };
7664
7665 static int
7666 dissect_gsm_map_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7667   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7668                                 ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoArg);
7669
7670   return offset;
7671 }
7672
7673 static const ber_sequence_t ProvideSubscriberInfoRes_sequence[] = {
7674   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
7675   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7676   { 0, 0, 0, NULL }
7677 };
7678
7679 static int
7680 dissect_gsm_map_ProvideSubscriberInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7681   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7682                                 ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoRes);
7683
7684   return offset;
7685 }
7686
7687
7688 static const value_string gsm_map_SubscriberIdentity_vals[] = {
7689   {   0, "imsi" },
7690   {   1, "msisdn" },
7691   { 0, NULL }
7692 };
7693
7694 static const ber_choice_t SubscriberIdentity_choice[] = {
7695   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
7696   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
7697   { 0, 0, 0, 0, NULL }
7698 };
7699
7700 static int
7701 dissect_gsm_map_SubscriberIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7702   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7703                               SubscriberIdentity_choice, hf_index, ett_gsm_map_SubscriberIdentity);
7704
7705   return offset;
7706 }
7707 static int dissect_subscriberIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7708   return dissect_gsm_map_SubscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
7709 }
7710
7711 static const ber_sequence_t AnyTimeInterrogationArg_sequence[] = {
7712   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity },
7713   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
7714   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
7715   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7716   { 0, 0, 0, NULL }
7717 };
7718
7719 static int
7720 dissect_gsm_map_AnyTimeInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7721   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7722                                 AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationArg);
7723
7724   return offset;
7725 }
7726
7727 static const ber_sequence_t AnyTimeInterrogationRes_sequence[] = {
7728   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
7729   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7730   { 0, 0, 0, NULL }
7731 };
7732
7733 static int
7734 dissect_gsm_map_AnyTimeInterrogationRes(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                                 AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationRes);
7737
7738   return offset;
7739 }
7740
7741 static const ber_sequence_t T_requestedSS_Info_sequence[] = {
7742   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
7743   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
7744   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
7745   { 0, 0, 0, NULL }
7746 };
7747
7748 static int
7749 dissect_gsm_map_T_requestedSS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7750   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7751                                 T_requestedSS_Info_sequence, hf_index, ett_gsm_map_T_requestedSS_Info);
7752
7753   return offset;
7754 }
7755 static int dissect_requestedSS_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7756   return dissect_gsm_map_T_requestedSS_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSS_Info);
7757 }
7758
7759
7760 static const value_string gsm_map_T_requestedCAMEL_SubscriptionInfo_vals[] = {
7761   {   0, "o-CSI" },
7762   {   1, "t-CSI" },
7763   {   2, "vt-CSI" },
7764   {   3, "tif-CSI" },
7765   {   4, "gprs-CSI" },
7766   {   5, "mo-sms-CSI" },
7767   {   6, "ss-CSI" },
7768   {   7, "m-CSI" },
7769   {   8, "d-csi" },
7770   { 0, NULL }
7771 };
7772
7773
7774 static int
7775 dissect_gsm_map_T_requestedCAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7776   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7777
7778   return offset;
7779 }
7780 static int dissect_requestedCAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7781   return dissect_gsm_map_T_requestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCAMEL_SubscriptionInfo);
7782 }
7783
7784
7785 static const value_string gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals[] = {
7786   {   0, "mt-sms-CSI" },
7787   {   1, "mg-csi" },
7788   {   2, "o-IM-CSI" },
7789   {   3, "d-IM-CSI" },
7790   {   4, "vt-IM-CSI" },
7791   { 0, NULL }
7792 };
7793
7794
7795 static int
7796 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_) {
7797   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7798
7799   return offset;
7800 }
7801 static int dissect_additionalRequestedCAMEL_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7802   return dissect_gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo);
7803 }
7804
7805 static const ber_sequence_t T_requestedSubscriptionInfo_sequence[] = {
7806   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedSS_Info_impl },
7807   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_impl },
7808   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestedCAMEL_SubscriptionInfo_impl },
7809   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_flg_impl },
7810   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_flg_impl },
7811   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_extensionContainer },
7812   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalRequestedCAMEL_SubscriptionInfo_impl },
7813   { 0, 0, 0, NULL }
7814 };
7815
7816 static int
7817 dissect_gsm_map_T_requestedSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7818   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7819                                 T_requestedSubscriptionInfo_sequence, hf_index, ett_gsm_map_T_requestedSubscriptionInfo);
7820
7821   return offset;
7822 }
7823 static int dissect_requestedSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7824   return dissect_gsm_map_T_requestedSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedSubscriptionInfo);
7825 }
7826
7827 static const ber_sequence_t AnyTimeSubscriptionInterrogationArg_sequence[] = {
7828   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity },
7829   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedSubscriptionInfo_impl },
7830   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
7831   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7832   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
7833   { 0, 0, 0, NULL }
7834 };
7835
7836 static int
7837 dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7838   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7839                                 AnyTimeSubscriptionInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationArg);
7840
7841   return offset;
7842 }
7843
7844 static const ber_sequence_t T_callForwardingData_sequence[] = {
7845   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList },
7846   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
7847   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7848   { 0, 0, 0, NULL }
7849 };
7850
7851 static int
7852 dissect_gsm_map_T_callForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7853   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7854                                 T_callForwardingData_sequence, hf_index, ett_gsm_map_T_callForwardingData);
7855
7856   return offset;
7857 }
7858 static int dissect_callForwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7859   return dissect_gsm_map_T_callForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callForwardingData);
7860 }
7861
7862
7863 static int
7864 dissect_gsm_map_NumericString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7865   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
7866                                          pinfo, tree, tvb, offset, hf_index,
7867                                          NULL);
7868
7869   return offset;
7870 }
7871 static int dissect_password(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7872   return dissect_gsm_map_NumericString(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_password);
7873 }
7874 static int dissect_password_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7875   return dissect_gsm_map_NumericString(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_password);
7876 }
7877
7878
7879
7880 static int
7881 dissect_gsm_map_INTEGER_0_4(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7882   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7883
7884   return offset;
7885 }
7886 static int dissect_wrongPasswordAttemptsCounter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7887   return dissect_gsm_map_INTEGER_0_4(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
7888 }
7889 static int dissect_wrongPasswordAttemptsCounter_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7890   return dissect_gsm_map_INTEGER_0_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_wrongPasswordAttemptsCounter);
7891 }
7892
7893 static const ber_sequence_t T_callBarringData_sequence[] = {
7894   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList },
7895   { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_password },
7896   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_wrongPasswordAttemptsCounter },
7897   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
7898   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7899   { 0, 0, 0, NULL }
7900 };
7901
7902 static int
7903 dissect_gsm_map_T_callBarringData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7904   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7905                                 T_callBarringData_sequence, hf_index, ett_gsm_map_T_callBarringData);
7906
7907   return offset;
7908 }
7909 static int dissect_callBarringData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7910   return dissect_gsm_map_T_callBarringData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringData);
7911 }
7912
7913 static const ber_sequence_t T_odb_Info_sequence[] = {
7914   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_odb_Data },
7915   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_notificationToCSE },
7916   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7917   { 0, 0, 0, NULL }
7918 };
7919
7920 static int
7921 dissect_gsm_map_T_odb_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7922   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7923                                 T_odb_Info_sequence, hf_index, ett_gsm_map_T_odb_Info);
7924
7925   return offset;
7926 }
7927 static int dissect_odb_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7928   return dissect_gsm_map_T_odb_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Info);
7929 }
7930
7931
7932 static int
7933 dissect_gsm_map_T_dialledNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7934   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
7935                                     NULL);
7936
7937   return offset;
7938 }
7939 static int dissect_dialledNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7940   return dissect_gsm_map_T_dialledNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_dialledNumber);
7941 }
7942
7943 static const ber_sequence_t Dp_AnalysedInfoCriteriaList_item_sequence[] = {
7944   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_dialledNumber },
7945   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
7946   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
7947   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_defaultCallHandling },
7948   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7949   { 0, 0, 0, NULL }
7950 };
7951
7952 static int
7953 dissect_gsm_map_Dp_AnalysedInfoCriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7954   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7955                                 Dp_AnalysedInfoCriteriaList_item_sequence, hf_index, ett_gsm_map_Dp_AnalysedInfoCriteriaList_item);
7956
7957   return offset;
7958 }
7959 static int dissect_Dp_AnalysedInfoCriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7960   return dissect_gsm_map_Dp_AnalysedInfoCriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Dp_AnalysedInfoCriteriaList_item);
7961 }
7962
7963 static const ber_sequence_t Dp_AnalysedInfoCriteriaList_sequence_of[1] = {
7964   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Dp_AnalysedInfoCriteriaList_item },
7965 };
7966
7967 static int
7968 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_) {
7969   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
7970                                    Dp_AnalysedInfoCriteriaList_sequence_of, hf_index, ett_gsm_map_Dp_AnalysedInfoCriteriaList);
7971
7972   return offset;
7973 }
7974 static int dissect_dp_AnalysedInfoCriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7975   return dissect_gsm_map_Dp_AnalysedInfoCriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dp_AnalysedInfoCriteriaList);
7976 }
7977
7978 static const ber_sequence_t T_d_CSI_sequence[] = {
7979   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dp_AnalysedInfoCriteriaList_impl },
7980   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
7981   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7982   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
7983   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
7984   { 0, 0, 0, NULL }
7985 };
7986
7987 static int
7988 dissect_gsm_map_T_d_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
7989   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7990                                 T_d_CSI_sequence, hf_index, ett_gsm_map_T_d_CSI);
7991
7992   return offset;
7993 }
7994 static int dissect_d_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7995   return dissect_gsm_map_T_d_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_CSI);
7996 }
7997
7998
7999 static const value_string gsm_map_t_BCSM_TriggerDetectionPoint_vals[] = {
8000   {  12, "termAttemptAuthorized" },
8001   {  13, "tBusy" },
8002   {  14, "tNoAnswer" },
8003   { 0, NULL }
8004 };
8005
8006
8007 static int
8008 dissect_gsm_map_t_BCSM_TriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8009   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8010
8011   return offset;
8012 }
8013 static int dissect_t_BCSM_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8014   return dissect_gsm_map_t_BCSM_TriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_TriggerDetectionPoint);
8015 }
8016
8017
8018 static const value_string gsm_map_BasicServiceCriteria_item_vals[] = {
8019   {   2, "ext-BearerService" },
8020   {   3, "ext-Teleservice" },
8021   { 0, NULL }
8022 };
8023
8024 static const ber_choice_t BasicServiceCriteria_item_choice[] = {
8025   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_BearerService_impl },
8026   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_Teleservice_impl },
8027   { 0, 0, 0, 0, NULL }
8028 };
8029
8030 static int
8031 dissect_gsm_map_BasicServiceCriteria_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8032   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8033                               BasicServiceCriteria_item_choice, hf_index, ett_gsm_map_BasicServiceCriteria_item);
8034
8035   return offset;
8036 }
8037 static int dissect_BasicServiceCriteria_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8038   return dissect_gsm_map_BasicServiceCriteria_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceCriteria_item);
8039 }
8040
8041 static const ber_sequence_t BasicServiceCriteria_sequence_of[1] = {
8042   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceCriteria_item },
8043 };
8044
8045 static int
8046 dissect_gsm_map_BasicServiceCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8047   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8048                                    BasicServiceCriteria_sequence_of, hf_index, ett_gsm_map_BasicServiceCriteria);
8049
8050   return offset;
8051 }
8052 static int dissect_basicServiceCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8053   return dissect_gsm_map_BasicServiceCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceCriteria);
8054 }
8055
8056 static const ber_sequence_t T_CauseValueCriteria_sequence_of[1] = {
8057   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_T_CauseValueCriteria_item },
8058 };
8059
8060 static int
8061 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_) {
8062   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8063                                    T_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_T_CauseValueCriteria);
8064
8065   return offset;
8066 }
8067 static int dissect_t_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8068   return dissect_gsm_map_T_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CauseValueCriteria);
8069 }
8070
8071 static const ber_sequence_t T_t_BCSM_CAMEL_TDP_CriteriaList_item_sequence[] = {
8072   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_TriggerDetectionPoint },
8073   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
8074   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CauseValueCriteria_impl },
8075   { 0, 0, 0, NULL }
8076 };
8077
8078 static int
8079 dissect_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8080   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8081                                 T_t_BCSM_CAMEL_TDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList_item);
8082
8083   return offset;
8084 }
8085 static int dissect_t_BCSM_CAMEL_TDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8086   return dissect_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList_item);
8087 }
8088
8089 static const ber_sequence_t T_t_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
8090   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_item },
8091 };
8092
8093 static int
8094 dissect_gsm_map_T_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_) {
8095   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8096                                    T_t_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList);
8097
8098   return offset;
8099 }
8100 static int dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8101   return dissect_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList);
8102 }
8103
8104 static const ber_sequence_t T_vt_CSI_sequence[] = {
8105   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
8106   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8107   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8108   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8109   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8110   { 0, 0, 0, NULL }
8111 };
8112
8113 static int
8114 dissect_gsm_map_T_vt_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8115   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8116                                 T_vt_CSI_sequence, hf_index, ett_gsm_map_T_vt_CSI);
8117
8118   return offset;
8119 }
8120 static int dissect_vt_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8121   return dissect_gsm_map_T_vt_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_CSI);
8122 }
8123
8124 static const ber_sequence_t T_vt_BCSM_CAMEL_TDP_CriteriaList_item_sequence[] = {
8125   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_TriggerDetectionPoint },
8126   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
8127   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_t_CauseValueCriteria_impl },
8128   { 0, 0, 0, NULL }
8129 };
8130
8131 static int
8132 dissect_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8133   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8134                                 T_vt_BCSM_CAMEL_TDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList_item);
8135
8136   return offset;
8137 }
8138 static int dissect_vt_BCSM_CAMEL_TDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8139   return dissect_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList_item);
8140 }
8141
8142 static const ber_sequence_t T_vt_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
8143   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_vt_BCSM_CAMEL_TDP_CriteriaList_item },
8144 };
8145
8146 static int
8147 dissect_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8148   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8149                                    T_vt_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList);
8150
8151   return offset;
8152 }
8153 static int dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8154   return dissect_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList);
8155 }
8156
8157
8158 static const value_string gsm_map_T_gprs_TriggerDetectionPoint_vals[] = {
8159   {   1, "attach" },
8160   {   2, "attachChangeOfPosition" },
8161   {  11, "pdp-ContextEstablishment" },
8162   {  12, "pdp-ContextEstablishmentAcknowledgement" },
8163   {  14, "pdp-ContextChangeOfPosition" },
8164   { 0, NULL }
8165 };
8166
8167
8168 static int
8169 dissect_gsm_map_T_gprs_TriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8170   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8171
8172   return offset;
8173 }
8174 static int dissect_gprs_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8175   return dissect_gsm_map_T_gprs_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_TriggerDetectionPoint);
8176 }
8177
8178
8179 static const value_string gsm_map_T_defaultSessionHandling_vals[] = {
8180   {   0, "continueTransaction" },
8181   {   1, "releaseTransaction" },
8182   { 0, NULL }
8183 };
8184
8185
8186 static int
8187 dissect_gsm_map_T_defaultSessionHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8188   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8189
8190   return offset;
8191 }
8192 static int dissect_defaultSessionHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8193   return dissect_gsm_map_T_defaultSessionHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSessionHandling);
8194 }
8195
8196 static const ber_sequence_t T_gprs_CamelTDPDataList_item_sequence[] = {
8197   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprs_TriggerDetectionPoint_impl },
8198   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
8199   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
8200   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSessionHandling_impl },
8201   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8202   { 0, 0, 0, NULL }
8203 };
8204
8205 static int
8206 dissect_gsm_map_T_gprs_CamelTDPDataList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8207   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8208                                 T_gprs_CamelTDPDataList_item_sequence, hf_index, ett_gsm_map_T_gprs_CamelTDPDataList_item);
8209
8210   return offset;
8211 }
8212 static int dissect_gprs_CamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8213   return dissect_gsm_map_T_gprs_CamelTDPDataList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CamelTDPDataList_item);
8214 }
8215
8216 static const ber_sequence_t T_gprs_CamelTDPDataList_sequence_of[1] = {
8217   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprs_CamelTDPDataList_item },
8218 };
8219
8220 static int
8221 dissect_gsm_map_T_gprs_CamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8222   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8223                                    T_gprs_CamelTDPDataList_sequence_of, hf_index, ett_gsm_map_T_gprs_CamelTDPDataList);
8224
8225   return offset;
8226 }
8227 static int dissect_gprs_CamelTDPDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8228   return dissect_gsm_map_T_gprs_CamelTDPDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CamelTDPDataList);
8229 }
8230
8231 static const ber_sequence_t T_gprs_CSI_sequence[] = {
8232   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CamelTDPDataList_impl },
8233   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8234   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8235   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8236   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8237   { 0, 0, 0, NULL }
8238 };
8239
8240 static int
8241 dissect_gsm_map_T_gprs_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8242   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8243                                 T_gprs_CSI_sequence, hf_index, ett_gsm_map_T_gprs_CSI);
8244
8245   return offset;
8246 }
8247 static int dissect_gprs_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8248   return dissect_gsm_map_T_gprs_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprs_CSI);
8249 }
8250
8251
8252 static const value_string gsm_map_sms_TriggerDetectionPoint_vals[] = {
8253   {   1, "sms-CollectedInfo" },
8254   {   2, "sms-DeliveryRequest" },
8255   { 0, NULL }
8256 };
8257
8258
8259 static int
8260 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_) {
8261   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8262
8263   return offset;
8264 }
8265 static int dissect_sms_TriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8266   return dissect_gsm_map_sms_TriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
8267 }
8268 static int dissect_sms_TriggerDetectionPoint_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8269   return dissect_gsm_map_sms_TriggerDetectionPoint(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_TriggerDetectionPoint);
8270 }
8271
8272
8273 static const value_string gsm_map_T_defaultSMS_Handling_vals[] = {
8274   {   0, "continueTransaction" },
8275   {   1, "releaseTransaction" },
8276   { 0, NULL }
8277 };
8278
8279
8280 static int
8281 dissect_gsm_map_T_defaultSMS_Handling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8282   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8283
8284   return offset;
8285 }
8286 static int dissect_defaultSMS_Handling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8287   return dissect_gsm_map_T_defaultSMS_Handling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultSMS_Handling);
8288 }
8289
8290 static const ber_sequence_t Sms_CAMEL_TDP_DataList_item_sequence[] = {
8291   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sms_TriggerDetectionPoint_impl },
8292   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_serviceKey_impl },
8293   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
8294   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_defaultSMS_Handling_impl },
8295   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8296   { 0, 0, 0, NULL }
8297 };
8298
8299 static int
8300 dissect_gsm_map_Sms_CAMEL_TDP_DataList_item(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                                 Sms_CAMEL_TDP_DataList_item_sequence, hf_index, ett_gsm_map_Sms_CAMEL_TDP_DataList_item);
8303
8304   return offset;
8305 }
8306 static int dissect_Sms_CAMEL_TDP_DataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8307   return dissect_gsm_map_Sms_CAMEL_TDP_DataList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_Sms_CAMEL_TDP_DataList_item);
8308 }
8309
8310 static const ber_sequence_t Sms_CAMEL_TDP_DataList_sequence_of[1] = {
8311   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Sms_CAMEL_TDP_DataList_item },
8312 };
8313
8314 static int
8315 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_) {
8316   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8317                                    Sms_CAMEL_TDP_DataList_sequence_of, hf_index, ett_gsm_map_Sms_CAMEL_TDP_DataList);
8318
8319   return offset;
8320 }
8321 static int dissect_sms_CAMEL_TDP_DataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8322   return dissect_gsm_map_Sms_CAMEL_TDP_DataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sms_CAMEL_TDP_DataList);
8323 }
8324
8325 static const ber_sequence_t T_mo_sms_CSI_sequence[] = {
8326   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sms_CAMEL_TDP_DataList_impl },
8327   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8328   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8329   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8330   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8331   { 0, 0, 0, NULL }
8332 };
8333
8334 static int
8335 dissect_gsm_map_T_mo_sms_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8336   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8337                                 T_mo_sms_CSI_sequence, hf_index, ett_gsm_map_T_mo_sms_CSI);
8338
8339   return offset;
8340 }
8341 static int dissect_mo_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8342   return dissect_gsm_map_T_mo_sms_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mo_sms_CSI);
8343 }
8344
8345 static const ber_sequence_t MobilityTriggers_sequence_of[1] = {
8346   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_MobilityTriggers_item },
8347 };
8348
8349 static int
8350 dissect_gsm_map_MobilityTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8351   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8352                                    MobilityTriggers_sequence_of, hf_index, ett_gsm_map_MobilityTriggers);
8353
8354   return offset;
8355 }
8356 static int dissect_mobilityTriggers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8357   return dissect_gsm_map_MobilityTriggers(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mobilityTriggers);
8358 }
8359
8360 static const ber_sequence_t T_m_CSI_sequence[] = {
8361   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
8362   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
8363   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
8364   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8365   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8366   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8367   { 0, 0, 0, NULL }
8368 };
8369
8370 static int
8371 dissect_gsm_map_T_m_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8372   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8373                                 T_m_CSI_sequence, hf_index, ett_gsm_map_T_m_CSI);
8374
8375   return offset;
8376 }
8377 static int dissect_m_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8378   return dissect_gsm_map_T_m_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_m_CSI);
8379 }
8380
8381 static const asn_namedbit T_specificCSIDeletedList_bits[] = {
8382   {  0, &hf_gsm_map_T_specificCSIDeletedList_o_csi, -1, -1, NULL, NULL },
8383   {  1, &hf_gsm_map_T_specificCSIDeletedList_ss_csi, -1, -1, NULL, NULL },
8384   {  2, &hf_gsm_map_T_specificCSIDeletedList_tif_csi, -1, -1, NULL, NULL },
8385   {  3, &hf_gsm_map_T_specificCSIDeletedList_d_csi, -1, -1, NULL, NULL },
8386   {  4, &hf_gsm_map_T_specificCSIDeletedList_vt_csi, -1, -1, NULL, NULL },
8387   {  5, &hf_gsm_map_T_specificCSIDeletedList_mo_sms_csi, -1, -1, NULL, NULL },
8388   {  6, &hf_gsm_map_T_specificCSIDeletedList_m_csi, -1, -1, NULL, NULL },
8389   {  7, &hf_gsm_map_T_specificCSIDeletedList_gprs_csi, -1, -1, NULL, NULL },
8390   {  8, &hf_gsm_map_T_specificCSIDeletedList_t_csi, -1, -1, NULL, NULL },
8391   {  9, &hf_gsm_map_T_specificCSIDeletedList_mt_sms_csi, -1, -1, NULL, NULL },
8392   { 10, &hf_gsm_map_T_specificCSIDeletedList_mg_csi, -1, -1, NULL, NULL },
8393   { 11, &hf_gsm_map_T_specificCSIDeletedList_o_IM_CSI, -1, -1, NULL, NULL },
8394   { 12, &hf_gsm_map_T_specificCSIDeletedList_d_IM_CSI, -1, -1, NULL, NULL },
8395   { 13, &hf_gsm_map_T_specificCSIDeletedList_vt_IM_CSI, -1, -1, NULL, NULL },
8396   { 0, NULL, 0, 0, NULL, NULL }
8397 };
8398
8399 static int
8400 dissect_gsm_map_T_specificCSIDeletedList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8401   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8402                                  T_specificCSIDeletedList_bits, hf_index, ett_gsm_map_T_specificCSIDeletedList,
8403                                  NULL);
8404
8405   return offset;
8406 }
8407 static int dissect_specificCSIDeletedList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8408   return dissect_gsm_map_T_specificCSIDeletedList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_specificCSIDeletedList);
8409 }
8410
8411 static const ber_sequence_t T_mt_sms_CSI_sequence[] = {
8412   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sms_CAMEL_TDP_DataList_impl },
8413   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8414   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8415   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8416   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8417   { 0, 0, 0, NULL }
8418 };
8419
8420 static int
8421 dissect_gsm_map_T_mt_sms_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8422   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8423                                 T_mt_sms_CSI_sequence, hf_index, ett_gsm_map_T_mt_sms_CSI);
8424
8425   return offset;
8426 }
8427 static int dissect_mt_sms_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8428   return dissect_gsm_map_T_mt_sms_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_sms_CSI);
8429 }
8430
8431
8432 static const value_string gsm_map_T_tpdu_TypeCriterion_item_vals[] = {
8433   {   0, "sms-DELIVER" },
8434   {   1, "sms-SUBMIT-REPORT" },
8435   {   2, "sms-STATUS-REPORT" },
8436   { 0, NULL }
8437 };
8438
8439
8440 static int
8441 dissect_gsm_map_T_tpdu_TypeCriterion_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8442   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8443
8444   return offset;
8445 }
8446 static int dissect_tpdu_TypeCriterion_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8447   return dissect_gsm_map_T_tpdu_TypeCriterion_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_tpdu_TypeCriterion_item);
8448 }
8449
8450 static const ber_sequence_t T_tpdu_TypeCriterion_sequence_of[1] = {
8451   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_tpdu_TypeCriterion_item },
8452 };
8453
8454 static int
8455 dissect_gsm_map_T_tpdu_TypeCriterion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8456   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8457                                    T_tpdu_TypeCriterion_sequence_of, hf_index, ett_gsm_map_T_tpdu_TypeCriterion);
8458
8459   return offset;
8460 }
8461 static int dissect_tpdu_TypeCriterion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8462   return dissect_gsm_map_T_tpdu_TypeCriterion(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tpdu_TypeCriterion);
8463 }
8464
8465 static const ber_sequence_t T_mt_smsCAMELTDP_CriteriaList_item_sequence[] = {
8466   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sms_TriggerDetectionPoint },
8467   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tpdu_TypeCriterion_impl },
8468   { 0, 0, 0, NULL }
8469 };
8470
8471 static int
8472 dissect_gsm_map_T_mt_smsCAMELTDP_CriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8473   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8474                                 T_mt_smsCAMELTDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_T_mt_smsCAMELTDP_CriteriaList_item);
8475
8476   return offset;
8477 }
8478 static int dissect_mt_smsCAMELTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8479   return dissect_gsm_map_T_mt_smsCAMELTDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mt_smsCAMELTDP_CriteriaList_item);
8480 }
8481
8482 static const ber_sequence_t T_mt_smsCAMELTDP_CriteriaList_sequence_of[1] = {
8483   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mt_smsCAMELTDP_CriteriaList_item },
8484 };
8485
8486 static int
8487 dissect_gsm_map_T_mt_smsCAMELTDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8488   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8489                                    T_mt_smsCAMELTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_mt_smsCAMELTDP_CriteriaList);
8490
8491   return offset;
8492 }
8493 static int dissect_mt_smsCAMELTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8494   return dissect_gsm_map_T_mt_smsCAMELTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mt_smsCAMELTDP_CriteriaList);
8495 }
8496
8497 static const ber_sequence_t T_mg_csi_sequence[] = {
8498   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mobilityTriggers },
8499   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
8500   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
8501   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8502   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8503   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8504   { 0, 0, 0, NULL }
8505 };
8506
8507 static int
8508 dissect_gsm_map_T_mg_csi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8509   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8510                                 T_mg_csi_sequence, hf_index, ett_gsm_map_T_mg_csi);
8511
8512   return offset;
8513 }
8514 static int dissect_mg_csi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8515   return dissect_gsm_map_T_mg_csi(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mg_csi);
8516 }
8517
8518 static const ber_sequence_t T_o_IM_CSI_sequence[] = {
8519   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_BcsmCamelTDPDataList },
8520   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8521   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8522   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8523   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csiActive_impl },
8524   { 0, 0, 0, NULL }
8525 };
8526
8527 static int
8528 dissect_gsm_map_T_o_IM_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8529   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8530                                 T_o_IM_CSI_sequence, hf_index, ett_gsm_map_T_o_IM_CSI);
8531
8532   return offset;
8533 }
8534 static int dissect_o_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8535   return dissect_gsm_map_T_o_IM_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_CSI);
8536 }
8537
8538 static const ber_sequence_t O_CauseValueCriteria_sequence_of[1] = {
8539   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_O_CauseValueCriteria_item },
8540 };
8541
8542 static int
8543 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_) {
8544   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8545                                    O_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_O_CauseValueCriteria);
8546
8547   return offset;
8548 }
8549 static int dissect_o_CauseValueCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8550   return dissect_gsm_map_O_CauseValueCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CauseValueCriteria);
8551 }
8552
8553 static const ber_sequence_t T_o_IM_BcsmCamelTDP_CriteriaList_item_sequence[] = {
8554   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
8555   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberCriteria_impl },
8556   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
8557   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTypeCriteria_impl },
8558   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CauseValueCriteria_impl },
8559   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8560   { 0, 0, 0, NULL }
8561 };
8562
8563 static int
8564 dissect_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8565   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8566                                 T_o_IM_BcsmCamelTDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList_item);
8567
8568   return offset;
8569 }
8570 static int dissect_o_IM_BcsmCamelTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8571   return dissect_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList_item);
8572 }
8573
8574 static const ber_sequence_t T_o_IM_BcsmCamelTDP_CriteriaList_sequence_of[1] = {
8575   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_IM_BcsmCamelTDP_CriteriaList_item },
8576 };
8577
8578 static int
8579 dissect_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8580   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8581                                    T_o_IM_BcsmCamelTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList);
8582
8583   return offset;
8584 }
8585 static int dissect_o_IM_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8586   return dissect_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList);
8587 }
8588
8589 static const ber_sequence_t T_d_IM_CSI_sequence[] = {
8590   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dp_AnalysedInfoCriteriaList_impl },
8591   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8592   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8593   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8594   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8595   { 0, 0, 0, NULL }
8596 };
8597
8598 static int
8599 dissect_gsm_map_T_d_IM_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8600   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8601                                 T_d_IM_CSI_sequence, hf_index, ett_gsm_map_T_d_IM_CSI);
8602
8603   return offset;
8604 }
8605 static int dissect_d_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8606   return dissect_gsm_map_T_d_IM_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_d_IM_CSI);
8607 }
8608
8609 static const ber_sequence_t T_vt_IM_CSI_sequence[] = {
8610   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
8611   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
8612   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
8613   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToCSE_impl },
8614   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_csi_Active_impl },
8615   { 0, 0, 0, NULL }
8616 };
8617
8618 static int
8619 dissect_gsm_map_T_vt_IM_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8620   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8621                                 T_vt_IM_CSI_sequence, hf_index, ett_gsm_map_T_vt_IM_CSI);
8622
8623   return offset;
8624 }
8625 static int dissect_vt_IM_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8626   return dissect_gsm_map_T_vt_IM_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_CSI);
8627 }
8628
8629 static const ber_sequence_t T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item_sequence[] = {
8630   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_t_BCSM_TriggerDetectionPoint },
8631   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
8632   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_t_CauseValueCriteria_impl },
8633   { 0, 0, 0, NULL }
8634 };
8635
8636 static int
8637 dissect_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8638   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8639                                 T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item);
8640
8641   return offset;
8642 }
8643 static int dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8644   return dissect_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item);
8645 }
8646
8647 static const ber_sequence_t T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
8648   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item },
8649 };
8650
8651 static int
8652 dissect_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8653   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
8654                                    T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList);
8655
8656   return offset;
8657 }
8658 static int dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8659   return dissect_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList);
8660 }
8661
8662 static const ber_sequence_t T_camel_SubscriptionInfo_sequence[] = {
8663   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
8664   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
8665   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_CSI_impl },
8666   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
8667   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_BCSM_CAMEL_TDP_CriteriaList_impl },
8668   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_CSI_impl },
8669   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_BCSM_CAMEL_TDP_CriteriaList_impl },
8670   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
8671   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_NotificationToCSE_impl },
8672   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprs_CSI_impl },
8673   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mo_sms_CSI_impl },
8674   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
8675   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_m_CSI_impl },
8676   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8677   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_specificCSIDeletedList_impl },
8678   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_sms_CSI_impl },
8679   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mt_smsCAMELTDP_CriteriaList_impl },
8680   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mg_csi_impl },
8681   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_CSI_impl },
8682   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_IM_BcsmCamelTDP_CriteriaList_impl },
8683   { BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_d_IM_CSI_impl },
8684   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_CSI_impl },
8685   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vt_IM_BCSM_CAMEL_TDP_CriteriaList_impl },
8686   { 0, 0, 0, NULL }
8687 };
8688
8689 static int
8690 dissect_gsm_map_T_camel_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8691   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8692                                 T_camel_SubscriptionInfo_sequence, hf_index, ett_gsm_map_T_camel_SubscriptionInfo);
8693
8694   return offset;
8695 }
8696 static int dissect_camel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8697   return dissect_gsm_map_T_camel_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camel_SubscriptionInfo);
8698 }
8699
8700 static const asn_namedbit T_supportedVLR_CAMEL_Phases_bits[] = {
8701   {  0, &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase1, -1, -1, NULL, NULL },
8702   {  1, &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase2, -1, -1, NULL, NULL },
8703   {  2, &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase3, -1, -1, NULL, NULL },
8704   {  3, &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase4, -1, -1, NULL, NULL },
8705   { 0, NULL, 0, 0, NULL, NULL }
8706 };
8707
8708 static int
8709 dissect_gsm_map_T_supportedVLR_CAMEL_Phases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8710   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8711                                  T_supportedVLR_CAMEL_Phases_bits, hf_index, ett_gsm_map_T_supportedVLR_CAMEL_Phases,
8712                                  NULL);
8713
8714   return offset;
8715 }
8716 static int dissect_supportedVLR_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8717   return dissect_gsm_map_T_supportedVLR_CAMEL_Phases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedVLR_CAMEL_Phases);
8718 }
8719
8720 static const asn_namedbit T_supportedSGSN_CAMEL_Phases_bits[] = {
8721   {  0, &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase1, -1, -1, NULL, NULL },
8722   {  1, &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase2, -1, -1, NULL, NULL },
8723   {  2, &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase3, -1, -1, NULL, NULL },
8724   {  3, &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase4, -1, -1, NULL, NULL },
8725   { 0, NULL, 0, 0, NULL, NULL }
8726 };
8727
8728 static int
8729 dissect_gsm_map_T_supportedSGSN_CAMEL_Phases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8730   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8731                                  T_supportedSGSN_CAMEL_Phases_bits, hf_index, ett_gsm_map_T_supportedSGSN_CAMEL_Phases,
8732                                  NULL);
8733
8734   return offset;
8735 }
8736 static int dissect_supportedSGSN_CAMEL_Phases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8737   return dissect_gsm_map_T_supportedSGSN_CAMEL_Phases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedSGSN_CAMEL_Phases);
8738 }
8739
8740 static const asn_namedbit T_offeredCamel4CSIsInVLR_bits[] = {
8741   {  0, &hf_gsm_map_T_offeredCamel4CSIsInVLR_o_csi, -1, -1, NULL, NULL },
8742   {  1, &hf_gsm_map_T_offeredCamel4CSIsInVLR_d_csi, -1, -1, NULL, NULL },
8743   {  2, &hf_gsm_map_T_offeredCamel4CSIsInVLR_vt_csi, -1, -1, NULL, NULL },
8744   {  3, &hf_gsm_map_T_offeredCamel4CSIsInVLR_t_csi, -1, -1, NULL, NULL },
8745   {  4, &hf_gsm_map_T_offeredCamel4CSIsInVLR_mt_sms_csi, -1, -1, NULL, NULL },
8746   {  5, &hf_gsm_map_T_offeredCamel4CSIsInVLR_mg_csi, -1, -1, NULL, NULL },
8747   {  6, &hf_gsm_map_T_offeredCamel4CSIsInVLR_psi_enhancements, -1, -1, NULL, NULL },
8748   { 0, NULL, 0, 0, NULL, NULL }
8749 };
8750
8751 static int
8752 dissect_gsm_map_T_offeredCamel4CSIsInVLR(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8753   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8754                                  T_offeredCamel4CSIsInVLR_bits, hf_index, ett_gsm_map_T_offeredCamel4CSIsInVLR,
8755                                  NULL);
8756
8757   return offset;
8758 }
8759 static int dissect_offeredCamel4CSIsInVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8760   return dissect_gsm_map_T_offeredCamel4CSIsInVLR(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInVLR);
8761 }
8762
8763 static const asn_namedbit T_offeredCamel4CSIsInSGSN_bits[] = {
8764   {  0, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_o_csi, -1, -1, NULL, NULL },
8765   {  1, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_d_csi, -1, -1, NULL, NULL },
8766   {  2, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_vt_csi, -1, -1, NULL, NULL },
8767   {  3, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_t_csi, -1, -1, NULL, NULL },
8768   {  4, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_mt_sms_csi, -1, -1, NULL, NULL },
8769   {  5, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_mg_csi, -1, -1, NULL, NULL },
8770   {  6, &hf_gsm_map_T_offeredCamel4CSIsInSGSN_psi_enhancements, -1, -1, NULL, NULL },
8771   { 0, NULL, 0, 0, NULL, NULL }
8772 };
8773
8774 static int
8775 dissect_gsm_map_T_offeredCamel4CSIsInSGSN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8776   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
8777                                  T_offeredCamel4CSIsInSGSN_bits, hf_index, ett_gsm_map_T_offeredCamel4CSIsInSGSN,
8778                                  NULL);
8779
8780   return offset;
8781 }
8782 static int dissect_offeredCamel4CSIsInSGSN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8783   return dissect_gsm_map_T_offeredCamel4CSIsInSGSN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_offeredCamel4CSIsInSGSN);
8784 }
8785
8786 static const ber_sequence_t AnyTimeSubscriptionInterrogationRes_sequence[] = {
8787   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callForwardingData_impl },
8788   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callBarringData_impl },
8789   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Info_impl },
8790   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camel_SubscriptionInfo_impl },
8791   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedVLR_CAMEL_Phases_impl },
8792   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedSGSN_CAMEL_Phases_impl },
8793   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8794   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInVLR_impl },
8795   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_offeredCamel4CSIsInSGSN_impl },
8796   { 0, 0, 0, NULL }
8797 };
8798
8799 static int
8800 dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8801   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8802                                 AnyTimeSubscriptionInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeSubscriptionInterrogationRes);
8803
8804   return offset;
8805 }
8806
8807
8808 static const value_string gsm_map_BasicService_ext_vals[] = {
8809   {   2, "ext-BearerService" },
8810   {   3, "ext-Teleservice" },
8811   { 0, NULL }
8812 };
8813
8814 static const ber_choice_t BasicService_ext_choice[] = {
8815   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ext_BearerService_impl },
8816   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ext_Teleservice_impl },
8817   { 0, 0, 0, 0, NULL }
8818 };
8819
8820 static int
8821 dissect_gsm_map_BasicService_ext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8822   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
8823                               BasicService_ext_choice, hf_index, ett_gsm_map_BasicService_ext);
8824
8825   return offset;
8826 }
8827 static int dissect_basicService_ext(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8828   return dissect_gsm_map_BasicService_ext(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicService_ext);
8829 }
8830
8831
8832
8833 static int
8834 dissect_gsm_map_INTEGER_1_100(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8835   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8836
8837   return offset;
8838 }
8839 static int dissect_noReplyConditionTime_1_100_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8840   return dissect_gsm_map_INTEGER_1_100(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noReplyConditionTime_1_100);
8841 }
8842
8843
8844 static const value_string gsm_map_ModifyNotificationToCSE_vals[] = {
8845   {   0, "deactivate" },
8846   {   1, "activate" },
8847   { 0, NULL }
8848 };
8849
8850
8851 static int
8852 dissect_gsm_map_ModifyNotificationToCSE(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8853   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8854
8855   return offset;
8856 }
8857 static int dissect_modifyNotificationToCSE_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8858   return dissect_gsm_map_ModifyNotificationToCSE(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyNotificationToCSE);
8859 }
8860
8861 static const ber_sequence_t T_modificationRequestFor_CF_Info_sequence[] = {
8862   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
8863   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_basicService_ext },
8864   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
8865   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
8866   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
8867   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_1_100_impl },
8868   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
8869   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8870   { 0, 0, 0, NULL }
8871 };
8872
8873 static int
8874 dissect_gsm_map_T_modificationRequestFor_CF_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8875   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8876                                 T_modificationRequestFor_CF_Info_sequence, hf_index, ett_gsm_map_T_modificationRequestFor_CF_Info);
8877
8878   return offset;
8879 }
8880 static int dissect_modificationRequestFor_CF_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8881   return dissect_gsm_map_T_modificationRequestFor_CF_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CF_Info);
8882 }
8883
8884 static const ber_sequence_t T_modificationRequestFor_CB_Info_sequence[] = {
8885   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
8886   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_basicService_ext },
8887   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
8888   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_password_impl },
8889   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_wrongPasswordAttemptsCounter_impl },
8890   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
8891   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8892   { 0, 0, 0, NULL }
8893 };
8894
8895 static int
8896 dissect_gsm_map_T_modificationRequestFor_CB_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8897   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8898                                 T_modificationRequestFor_CB_Info_sequence, hf_index, ett_gsm_map_T_modificationRequestFor_CB_Info);
8899
8900   return offset;
8901 }
8902 static int dissect_modificationRequestFor_CB_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8903   return dissect_gsm_map_T_modificationRequestFor_CB_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CB_Info);
8904 }
8905
8906
8907 static const value_string gsm_map_T_requestedCamel_SubscriptionInfo_vals[] = {
8908   {   0, "o-CSI" },
8909   {   1, "t-CSI" },
8910   {   2, "vt-CSI" },
8911   {   3, "tif-CSI" },
8912   {   4, "gprs-CSI" },
8913   {   5, "mo-sms-CSI" },
8914   {   6, "ss-CSI" },
8915   {   7, "m-CSI" },
8916   {   8, "d-csi" },
8917   { 0, NULL }
8918 };
8919
8920
8921 static int
8922 dissect_gsm_map_T_requestedCamel_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8923   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8924
8925   return offset;
8926 }
8927 static int dissect_requestedCamel_SubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8928   return dissect_gsm_map_T_requestedCamel_SubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedCamel_SubscriptionInfo);
8929 }
8930
8931
8932 static const value_string gsm_map_T_modifyCSI_State_vals[] = {
8933   {   0, "deactivate" },
8934   {   1, "activate" },
8935   { 0, NULL }
8936 };
8937
8938
8939 static int
8940 dissect_gsm_map_T_modifyCSI_State(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8941   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
8942
8943   return offset;
8944 }
8945 static int dissect_modifyCSI_State_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8946   return dissect_gsm_map_T_modifyCSI_State(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modifyCSI_State);
8947 }
8948
8949 static const ber_sequence_t T_modificationRequestFor_CSI_sequence[] = {
8950   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_requestedCamel_SubscriptionInfo_impl },
8951   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
8952   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyCSI_State_impl },
8953   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8954   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalRequestedCAMEL_SubscriptionInfo_impl },
8955   { 0, 0, 0, NULL }
8956 };
8957
8958 static int
8959 dissect_gsm_map_T_modificationRequestFor_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8960   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8961                                 T_modificationRequestFor_CSI_sequence, hf_index, ett_gsm_map_T_modificationRequestFor_CSI);
8962
8963   return offset;
8964 }
8965 static int dissect_modificationRequestFor_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8966   return dissect_gsm_map_T_modificationRequestFor_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_CSI);
8967 }
8968
8969 static const ber_sequence_t T_modificationRequestFor_ODB_data_sequence[] = {
8970   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_data_impl },
8971   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyNotificationToCSE_impl },
8972   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8973   { 0, 0, 0, NULL }
8974 };
8975
8976 static int
8977 dissect_gsm_map_T_modificationRequestFor_ODB_data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
8978   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
8979                                 T_modificationRequestFor_ODB_data_sequence, hf_index, ett_gsm_map_T_modificationRequestFor_ODB_data);
8980
8981   return offset;
8982 }
8983 static int dissect_modificationRequestFor_ODB_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
8984   return dissect_gsm_map_T_modificationRequestFor_ODB_data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_modificationRequestFor_ODB_data);
8985 }
8986
8987 static const ber_sequence_t AnyTimeModificationArg_sequence[] = {
8988   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_subscriberIdentity },
8989   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
8990   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CF_Info_impl },
8991   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CB_Info_impl },
8992   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_CSI_impl },
8993   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
8994   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_longFTN_Supported_impl },
8995   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modificationRequestFor_ODB_data_impl },
8996   { 0, 0, 0, NULL }
8997 };
8998
8999 static int
9000 dissect_gsm_map_AnyTimeModificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9001   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9002                                 AnyTimeModificationArg_sequence, hf_index, ett_gsm_map_AnyTimeModificationArg);
9003
9004   return offset;
9005 }
9006
9007 static const ber_sequence_t AnyTimeModificationRes_sequence[] = {
9008   { 0, 0, 0, NULL }
9009 };
9010
9011 static int
9012 dissect_gsm_map_AnyTimeModificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9013   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9014                                 AnyTimeModificationRes_sequence, hf_index, ett_gsm_map_AnyTimeModificationRes);
9015
9016   return offset;
9017 }
9018
9019 static const ber_sequence_t T_ss_EventSpecification_sequence_of[1] = {
9020   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventSpecification_item },
9021 };
9022
9023 static int
9024 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_) {
9025   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
9026                                    T_ss_EventSpecification_sequence_of, hf_index, ett_gsm_map_T_ss_EventSpecification);
9027
9028   return offset;
9029 }
9030 static int dissect_ss_EventSpecification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9031   return dissect_gsm_map_T_ss_EventSpecification(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification);
9032 }
9033
9034 static const ber_sequence_t Ss_InvocationNotificationArg_sequence[] = {
9035   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9036   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9037   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ss_Event_impl },
9038   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_EventSpecification_impl },
9039   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9040   { 0, 0, 0, NULL }
9041 };
9042
9043 static int
9044 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_) {
9045   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9046                                 Ss_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationArg);
9047
9048   return offset;
9049 }
9050
9051 static const ber_sequence_t Ss_InvocationNotificationRes_sequence[] = {
9052   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9053   { 0, 0, 0, NULL }
9054 };
9055
9056 static int
9057 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_) {
9058   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9059                                 Ss_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationRes);
9060
9061   return offset;
9062 }
9063
9064
9065 static int
9066 dissect_gsm_map_OCTET_STRING_SIZE_5_10(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9067   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9068                                     NULL);
9069
9070   return offset;
9071 }
9072 static int dissect_codec_Info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9073   return dissect_gsm_map_OCTET_STRING_SIZE_5_10(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_codec_Info);
9074 }
9075
9076 static const ber_sequence_t PrepareGroupCallArg_sequence[] = {
9077   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_teleservice },
9078   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_asciCallReference },
9079   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_codec_Info },
9080   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cipheringAlgorithm },
9081   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKeyNumber_impl },
9082   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKey_impl },
9083   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
9084   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkFree_impl },
9085   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9086   { 0, 0, 0, NULL }
9087 };
9088
9089 static int
9090 dissect_gsm_map_PrepareGroupCallArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9091   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9092                                 PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_PrepareGroupCallArg);
9093
9094   return offset;
9095 }
9096
9097
9098 static int
9099 dissect_gsm_map_T_groupCallNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9100   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9101                                     NULL);
9102
9103   return offset;
9104 }
9105 static int dissect_groupCallNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9106   return dissect_gsm_map_T_groupCallNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupCallNumber);
9107 }
9108
9109 static const ber_sequence_t PrepareGroupCallRes_sequence[] = {
9110   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupCallNumber },
9111   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9112   { 0, 0, 0, NULL }
9113 };
9114
9115 static int
9116 dissect_gsm_map_PrepareGroupCallRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9117   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9118                                 PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_PrepareGroupCallRes);
9119
9120   return offset;
9121 }
9122
9123 static const ber_sequence_t SendGroupCallEndSignalArg_sequence[] = {
9124   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
9125   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9126   { 0, 0, 0, NULL }
9127 };
9128
9129 static int
9130 dissect_gsm_map_SendGroupCallEndSignalArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9131   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9132                                 SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalArg);
9133
9134   return offset;
9135 }
9136
9137 static const ber_sequence_t SendGroupCallEndSignalRes_sequence[] = {
9138   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9139   { 0, 0, 0, NULL }
9140 };
9141
9142 static int
9143 dissect_gsm_map_SendGroupCallEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9144   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9145                                 SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalRes);
9146
9147   return offset;
9148 }
9149
9150 static const ber_sequence_t ProcessGroupCallSignallingArg_sequence[] = {
9151   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequest_impl },
9152   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
9153   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseGroupCall_impl },
9154   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9155   { 0, 0, 0, NULL }
9156 };
9157
9158 static int
9159 dissect_gsm_map_ProcessGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9160   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9161                                 ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ProcessGroupCallSignallingArg);
9162
9163   return offset;
9164 }
9165
9166 static const ber_sequence_t ForwardGroupCallSignallingArg_sequence[] = {
9167   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
9168   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequestAck_impl },
9169   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
9170   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRejectCommand_impl },
9171   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkSeizedCommand_impl },
9172   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseCommand_impl },
9173   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9174   { 0, 0, 0, NULL }
9175 };
9176
9177 static int
9178 dissect_gsm_map_ForwardGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9179   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9180                                 ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ForwardGroupCallSignallingArg);
9181
9182   return offset;
9183 }
9184
9185 static const ber_sequence_t T_sgsn_Capability_sequence[] = {
9186   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_solsaSupportIndicator },
9187   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9188   { 0, 0, 0, NULL }
9189 };
9190
9191 static int
9192 dissect_gsm_map_T_sgsn_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9193   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9194                                 T_sgsn_Capability_sequence, hf_index, ett_gsm_map_T_sgsn_Capability);
9195
9196   return offset;
9197 }
9198 static int dissect_sgsn_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9199   return dissect_gsm_map_T_sgsn_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Capability);
9200 }
9201
9202 static const ber_sequence_t UpdateGprsLocationArg_sequence[] = {
9203   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
9204   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Number },
9205   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Address },
9206   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9207   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Capability_impl },
9208   { 0, 0, 0, NULL }
9209 };
9210
9211 static int
9212 dissect_gsm_map_UpdateGprsLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9213   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9214                                 UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_UpdateGprsLocationArg);
9215
9216   return offset;
9217 }
9218
9219 static const ber_sequence_t UpdateGprsLocationRes_sequence[] = {
9220   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
9221   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9222   { 0, 0, 0, NULL }
9223 };
9224
9225 static int
9226 dissect_gsm_map_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9227   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9228                                 UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_UpdateGprsLocationRes);
9229
9230   return offset;
9231 }
9232
9233
9234 static int
9235 dissect_gsm_map_Ggsn_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9236   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9237                                     NULL);
9238
9239   return offset;
9240 }
9241 static int dissect_ggsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9242   return dissect_gsm_map_Ggsn_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Number);
9243 }
9244
9245 static const ber_sequence_t SendRoutingInfoForGprsArg_sequence[] = {
9246   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9247   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9248   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
9249   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9250   { 0, 0, 0, NULL }
9251 };
9252
9253 static int
9254 dissect_gsm_map_SendRoutingInfoForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9255   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9256                                 SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsArg);
9257
9258   return offset;
9259 }
9260
9261 static const ber_sequence_t SendRoutingInfoForGprsRes_sequence[] = {
9262   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
9263   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9264   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mobileNotReachableReason_impl },
9265   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9266   { 0, 0, 0, NULL }
9267 };
9268
9269 static int
9270 dissect_gsm_map_SendRoutingInfoForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9271   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9272                                 SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsRes);
9273
9274   return offset;
9275 }
9276
9277 static const ber_sequence_t FailureReportArg_sequence[] = {
9278   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9279   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
9280   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9281   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9282   { 0, 0, 0, NULL }
9283 };
9284
9285 static int
9286 dissect_gsm_map_FailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9287   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9288                                 FailureReportArg_sequence, hf_index, ett_gsm_map_FailureReportArg);
9289
9290   return offset;
9291 }
9292
9293 static const ber_sequence_t FailureReportRes_sequence[] = {
9294   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9295   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9296   { 0, 0, 0, NULL }
9297 };
9298
9299 static int
9300 dissect_gsm_map_FailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9301   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9302                                 FailureReportRes_sequence, hf_index, ett_gsm_map_FailureReportRes);
9303
9304   return offset;
9305 }
9306
9307 static const ber_sequence_t NoteMsPresentForGprsArg_sequence[] = {
9308   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9309   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
9310   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
9311   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9312   { 0, 0, 0, NULL }
9313 };
9314
9315 static int
9316 dissect_gsm_map_NoteMsPresentForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9317   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9318                                 NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsArg);
9319
9320   return offset;
9321 }
9322
9323 static const ber_sequence_t NoteMsPresentForGprsRes_sequence[] = {
9324   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9325   { 0, 0, 0, NULL }
9326 };
9327
9328 static int
9329 dissect_gsm_map_NoteMsPresentForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9330   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9331                                 NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsRes);
9332
9333   return offset;
9334 }
9335
9336
9337 static const value_string gsm_map_LcsClientType_vals[] = {
9338   {   0, "emergencyServices" },
9339   {   1, "valueAddedServices" },
9340   {   2, "plmnOperatorServices" },
9341   {   3, "lawfulInterceptServices" },
9342   { 0, NULL }
9343 };
9344
9345
9346 static int
9347 dissect_gsm_map_LcsClientType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9348   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9349
9350   return offset;
9351 }
9352 static int dissect_lcsClientType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9353   return dissect_gsm_map_LcsClientType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientType);
9354 }
9355
9356 static const ber_sequence_t LcsClientExternalID_sequence[] = {
9357   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
9358   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9359   { 0, 0, 0, NULL }
9360 };
9361
9362 static int
9363 dissect_gsm_map_LcsClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9364   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9365                                 LcsClientExternalID_sequence, hf_index, ett_gsm_map_LcsClientExternalID);
9366
9367   return offset;
9368 }
9369 static int dissect_lcsClientExternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9370   return dissect_gsm_map_LcsClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientExternalID);
9371 }
9372
9373
9374 static const value_string gsm_map_LcsClientInternalID_vals[] = {
9375   {   0, "broadcastService" },
9376   {   1, "o-andM-HPLMN" },
9377   {   2, "o-andM-VPLMN" },
9378   {   3, "anonymousLocation" },
9379   {   4, "targetMSsubscribedService" },
9380   { 0, NULL }
9381 };
9382
9383
9384 static int
9385 dissect_gsm_map_LcsClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9386   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9387
9388   return offset;
9389 }
9390 static int dissect_lcsClientInternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9391   return dissect_gsm_map_LcsClientInternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientInternalID);
9392 }
9393
9394
9395 static int
9396 dissect_gsm_map_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9397   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9398                                     NULL);
9399
9400   return offset;
9401 }
9402 static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9403   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dataCodingScheme);
9404 }
9405 static int dissect_nameString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9406   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nameString);
9407 }
9408 static int dissect_lcsClientDialedByMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9409   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientDialedByMS);
9410 }
9411
9412 static const ber_sequence_t LcsClientName_sequence[] = {
9413   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
9414   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
9415   { 0, 0, 0, NULL }
9416 };
9417
9418 static int
9419 dissect_gsm_map_LcsClientName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9420   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9421                                 LcsClientName_sequence, hf_index, ett_gsm_map_LcsClientName);
9422
9423   return offset;
9424 }
9425 static int dissect_lcsClientName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9426   return dissect_gsm_map_LcsClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientName);
9427 }
9428
9429 static const ber_sequence_t Lcs_ClientID_sequence[] = {
9430   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lcsClientType_impl },
9431   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
9432   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientDialedByMS_impl },
9433   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientInternalID_impl },
9434   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
9435   { 0, 0, 0, NULL }
9436 };
9437
9438 static int
9439 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_) {
9440   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9441                                 Lcs_ClientID_sequence, hf_index, ett_gsm_map_Lcs_ClientID);
9442
9443   return offset;
9444 }
9445 static int dissect_lcs_ClientID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9446   return dissect_gsm_map_Lcs_ClientID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
9447 }
9448 static int dissect_lcs_ClientID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9449   return dissect_gsm_map_Lcs_ClientID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
9450 }
9451
9452
9453 static const value_string gsm_map_Lcs_Event_vals[] = {
9454   {   0, "emergencyCallOrigination" },
9455   {   1, "emergencyCallRelease" },
9456   {   2, "mo-lr" },
9457   { 0, NULL }
9458 };
9459
9460
9461 static int
9462 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_) {
9463   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9464
9465   return offset;
9466 }
9467 static int dissect_lcs_Event(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9468   return dissect_gsm_map_Lcs_Event(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Event);
9469 }
9470
9471 static const ber_sequence_t LcsLocationInfo_sequence[] = {
9472   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msc_Number },
9473   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
9474   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9475   { 0, 0, 0, NULL }
9476 };
9477
9478 static int
9479 dissect_gsm_map_LcsLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9480   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9481                                 LcsLocationInfo_sequence, hf_index, ett_gsm_map_LcsLocationInfo);
9482
9483   return offset;
9484 }
9485 static int dissect_lcsLocationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9486   return dissect_gsm_map_LcsLocationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
9487 }
9488 static int dissect_lcsLocationInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9489   return dissect_gsm_map_LcsLocationInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
9490 }
9491
9492
9493 static const value_string gsm_map_T_locationEstimateType_vals[] = {
9494   {   0, "currentLocation" },
9495   {   1, "currentOrLastKnownLocation" },
9496   {   2, "initialLocation" },
9497   { 0, NULL }
9498 };
9499
9500
9501 static int
9502 dissect_gsm_map_T_locationEstimateType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9503   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9504
9505   return offset;
9506 }
9507 static int dissect_locationEstimateType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9508   return dissect_gsm_map_T_locationEstimateType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
9509 }
9510
9511 static const ber_sequence_t T_locationType_sequence[] = {
9512   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationEstimateType_impl },
9513   { 0, 0, 0, NULL }
9514 };
9515
9516 static int
9517 dissect_gsm_map_T_locationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9518   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9519                                 T_locationType_sequence, hf_index, ett_gsm_map_T_locationType);
9520
9521   return offset;
9522 }
9523 static int dissect_locationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9524   return dissect_gsm_map_T_locationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationType);
9525 }
9526
9527
9528 static int
9529 dissect_gsm_map_T_mlc_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9530   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9531                                     NULL);
9532
9533   return offset;
9534 }
9535 static int dissect_mlc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9536   return dissect_gsm_map_T_mlc_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mlc_Number);
9537 }
9538
9539
9540 static const value_string gsm_map_T_responseTimeCategory_vals[] = {
9541   {   0, "lowdelay" },
9542   {   1, "delaytolerant" },
9543   { 0, NULL }
9544 };
9545
9546
9547 static int
9548 dissect_gsm_map_T_responseTimeCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9549   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9550
9551   return offset;
9552 }
9553 static int dissect_responseTimeCategory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9554   return dissect_gsm_map_T_responseTimeCategory(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_responseTimeCategory);
9555 }
9556
9557 static const ber_sequence_t T_responseTime_sequence[] = {
9558   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_responseTimeCategory },
9559   { 0, 0, 0, NULL }
9560 };
9561
9562 static int
9563 dissect_gsm_map_T_responseTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9564   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9565                                 T_responseTime_sequence, hf_index, ett_gsm_map_T_responseTime);
9566
9567   return offset;
9568 }
9569 static int dissect_responseTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9570   return dissect_gsm_map_T_responseTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_responseTime);
9571 }
9572
9573 static const ber_sequence_t T_lcs_QoS_sequence[] = {
9574   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_horizontal_accuracy_impl },
9575   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verticalCoordinateRequest_impl },
9576   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vertical_accuracy_impl },
9577   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_responseTime_impl },
9578   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9579   { 0, 0, 0, NULL }
9580 };
9581
9582 static int
9583 dissect_gsm_map_T_lcs_QoS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9584   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9585                                 T_lcs_QoS_sequence, hf_index, ett_gsm_map_T_lcs_QoS);
9586
9587   return offset;
9588 }
9589 static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9590   return dissect_gsm_map_T_lcs_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_QoS);
9591 }
9592
9593 static const ber_sequence_t ProvideSubscriberLocation_Arg_sequence[] = {
9594   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_locationType },
9595   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_mlc_Number },
9596   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ClientID_impl },
9597   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privacyOverride_impl },
9598   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9599   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9600   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
9601   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
9602   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_Priority_impl },
9603   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
9604   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9605   { 0, 0, 0, NULL }
9606 };
9607
9608 static int
9609 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_) {
9610   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9611                                 ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Arg);
9612
9613   return offset;
9614 }
9615
9616 static const ber_sequence_t ProvideSubscriberLocation_Res_sequence[] = {
9617   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_locationEstimate },
9618   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
9619   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9620   { 0, 0, 0, NULL }
9621 };
9622
9623 static int
9624 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_) {
9625   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9626                                 ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Res);
9627
9628   return offset;
9629 }
9630
9631
9632 static const value_string gsm_map_TargetMS_vals[] = {
9633   {   0, "imsi" },
9634   {   1, "msisdn" },
9635   { 0, NULL }
9636 };
9637
9638 static const ber_choice_t TargetMS_choice[] = {
9639   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9640   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9641   { 0, 0, 0, 0, NULL }
9642 };
9643
9644 static int
9645 dissect_gsm_map_TargetMS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9646   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9647                               TargetMS_choice, hf_index, ett_gsm_map_TargetMS);
9648
9649   return offset;
9650 }
9651 static int dissect_targetMS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9652   return dissect_gsm_map_TargetMS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
9653 }
9654
9655
9656 static int
9657 dissect_gsm_map_T_mlcNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9658   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9659                                     NULL);
9660
9661   return offset;
9662 }
9663 static int dissect_mlcNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9664   return dissect_gsm_map_T_mlcNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mlcNumber);
9665 }
9666
9667 static const ber_sequence_t RoutingInfoForLCS_Arg_sequence[] = {
9668   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mlcNumber_impl },
9669   { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
9670   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9671   { 0, 0, 0, NULL }
9672 };
9673
9674 static int
9675 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_) {
9676   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9677                                 RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Arg);
9678
9679   return offset;
9680 }
9681
9682 static const ber_sequence_t RoutingInfoForLCS_Res_sequence[] = {
9683   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
9684   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lcsLocationInfo_impl },
9685   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9686   { 0, 0, 0, NULL }
9687 };
9688
9689 static int
9690 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_) {
9691   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9692                                 RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Res);
9693
9694   return offset;
9695 }
9696
9697
9698 static int
9699 dissect_gsm_map_T_na_ESRD(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_na_ESRD_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9706   return dissect_gsm_map_T_na_ESRD(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRD);
9707 }
9708
9709
9710 static int
9711 dissect_gsm_map_T_na_ESRK(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9712   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
9713                                     NULL);
9714
9715   return offset;
9716 }
9717 static int dissect_na_ESRK_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9718   return dissect_gsm_map_T_na_ESRK(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK);
9719 }
9720
9721 static const ber_sequence_t SubscriberLocationReport_Arg_sequence[] = {
9722   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_lcs_Event },
9723   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_ClientID },
9724   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcsLocationInfo },
9725   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
9726   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
9727   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
9728   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
9729   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
9730   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
9731   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
9732   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
9733   { 0, 0, 0, NULL }
9734 };
9735
9736 static int
9737 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_) {
9738   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9739                                 SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Arg);
9740
9741   return offset;
9742 }
9743
9744 static const ber_sequence_t SubscriberLocationReport_Res_sequence[] = {
9745   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9746   { 0, 0, 0, NULL }
9747 };
9748
9749 static int
9750 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_) {
9751   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9752                                 SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Res);
9753
9754   return offset;
9755 }
9756
9757
9758 static const value_string gsm_map_NetworkResource_vals[] = {
9759   {   0, "plmn" },
9760   {   1, "hlr" },
9761   {   2, "vlr" },
9762   {   3, "pvlr" },
9763   {   4, "controllingMSC" },
9764   {   5, "vmsc" },
9765   {   6, "eir" },
9766   {   7, "rss" },
9767   { 0, NULL }
9768 };
9769
9770
9771 static int
9772 dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9773   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9774
9775   return offset;
9776 }
9777 static int dissect_networkResource(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9778   return dissect_gsm_map_NetworkResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkResource);
9779 }
9780
9781 static const ber_sequence_t T_extensibleSystemFailureParam_sequence[] = {
9782   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_networkResource },
9783   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9784   { 0, 0, 0, NULL }
9785 };
9786
9787 static int
9788 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_) {
9789   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9790                                 T_extensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_T_extensibleSystemFailureParam);
9791
9792   return offset;
9793 }
9794 static int dissect_extensibleSystemFailureParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9795   return dissect_gsm_map_T_extensibleSystemFailureParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleSystemFailureParam);
9796 }
9797
9798
9799 static const value_string gsm_map_SystemFailureParam_vals[] = {
9800   {   0, "networkResource" },
9801   {   1, "extensibleSystemFailureParam" },
9802   { 0, NULL }
9803 };
9804
9805 static const ber_choice_t SystemFailureParam_choice[] = {
9806   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_networkResource },
9807   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleSystemFailureParam },
9808   { 0, 0, 0, 0, NULL }
9809 };
9810
9811 static int
9812 dissect_gsm_map_SystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9813   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
9814                               SystemFailureParam_choice, hf_index, ett_gsm_map_SystemFailureParam);
9815
9816   return offset;
9817 }
9818
9819 static const ber_sequence_t DataMissingParam_sequence[] = {
9820   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9821   { 0, 0, 0, NULL }
9822 };
9823
9824 static int
9825 dissect_gsm_map_DataMissingParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9826   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9827                                 DataMissingParam_sequence, hf_index, ett_gsm_map_DataMissingParam);
9828
9829   return offset;
9830 }
9831
9832 static const ber_sequence_t UnexpectedDataParam_sequence[] = {
9833   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9834   { 0, 0, 0, NULL }
9835 };
9836
9837 static int
9838 dissect_gsm_map_UnexpectedDataParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9839   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9840                                 UnexpectedDataParam_sequence, hf_index, ett_gsm_map_UnexpectedDataParam);
9841
9842   return offset;
9843 }
9844
9845 static const ber_sequence_t FacilityNotSupParam_sequence[] = {
9846   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9847   { 0, 0, 0, NULL }
9848 };
9849
9850 static int
9851 dissect_gsm_map_FacilityNotSupParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9852   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9853                                 FacilityNotSupParam_sequence, hf_index, ett_gsm_map_FacilityNotSupParam);
9854
9855   return offset;
9856 }
9857
9858 static const ber_sequence_t IncompatibleTerminalParam_sequence[] = {
9859   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9860   { 0, 0, 0, NULL }
9861 };
9862
9863 static int
9864 dissect_gsm_map_IncompatibleTerminalParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9865   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9866                                 IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_IncompatibleTerminalParam);
9867
9868   return offset;
9869 }
9870
9871 static const ber_sequence_t ResourceLimitationParam_sequence[] = {
9872   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9873   { 0, 0, 0, NULL }
9874 };
9875
9876 static int
9877 dissect_gsm_map_ResourceLimitationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9878   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9879                                 ResourceLimitationParam_sequence, hf_index, ett_gsm_map_ResourceLimitationParam);
9880
9881   return offset;
9882 }
9883
9884
9885 static const value_string gsm_map_T_unknownSubscriberDiagnostic_vals[] = {
9886   {   0, "imsiUnknown" },
9887   {   1, "gprsSubscriptionUnknown" },
9888   { 0, NULL }
9889 };
9890
9891
9892 static int
9893 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_) {
9894   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9895
9896   return offset;
9897 }
9898 static int dissect_unknownSubscriberDiagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9899   return dissect_gsm_map_T_unknownSubscriberDiagnostic(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unknownSubscriberDiagnostic);
9900 }
9901
9902 static const ber_sequence_t UnknownSubscriberParam_sequence[] = {
9903   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9904   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_unknownSubscriberDiagnostic },
9905   { 0, 0, 0, NULL }
9906 };
9907
9908 static int
9909 dissect_gsm_map_UnknownSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9910   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9911                                 UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_UnknownSubscriberParam);
9912
9913   return offset;
9914 }
9915
9916 static const ber_sequence_t NumberChangedParam_sequence[] = {
9917   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9918   { 0, 0, 0, NULL }
9919 };
9920
9921 static int
9922 dissect_gsm_map_NumberChangedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9923   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9924                                 NumberChangedParam_sequence, hf_index, ett_gsm_map_NumberChangedParam);
9925
9926   return offset;
9927 }
9928
9929 static const ber_sequence_t UnidentifiedSubParam_sequence[] = {
9930   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9931   { 0, 0, 0, NULL }
9932 };
9933
9934 static int
9935 dissect_gsm_map_UnidentifiedSubParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9936   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9937                                 UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_UnidentifiedSubParam);
9938
9939   return offset;
9940 }
9941
9942
9943 static const value_string gsm_map_T_roamingNotAllowedCause_vals[] = {
9944   {   0, "plmnRoamingNotAllowed" },
9945   {   3, "operatorDeterminedBarring" },
9946   { 0, NULL }
9947 };
9948
9949
9950 static int
9951 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_) {
9952   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
9953
9954   return offset;
9955 }
9956 static int dissect_roamingNotAllowedCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
9957   return dissect_gsm_map_T_roamingNotAllowedCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNotAllowedCause);
9958 }
9959
9960 static const ber_sequence_t RoamingNotAllowedParam_sequence[] = {
9961   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_roamingNotAllowedCause },
9962   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9963   { 0, 0, 0, NULL }
9964 };
9965
9966 static int
9967 dissect_gsm_map_RoamingNotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9968   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9969                                 RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_RoamingNotAllowedParam);
9970
9971   return offset;
9972 }
9973
9974 static const ber_sequence_t IllegalSubscriberParam_sequence[] = {
9975   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9976   { 0, 0, 0, NULL }
9977 };
9978
9979 static int
9980 dissect_gsm_map_IllegalSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9981   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9982                                 IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_IllegalSubscriberParam);
9983
9984   return offset;
9985 }
9986
9987 static const ber_sequence_t IllegalEquipmentParam_sequence[] = {
9988   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
9989   { 0, 0, 0, NULL }
9990 };
9991
9992 static int
9993 dissect_gsm_map_IllegalEquipmentParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
9994   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
9995                                 IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_IllegalEquipmentParam);
9996
9997   return offset;
9998 }
9999
10000 static const ber_sequence_t BearerServNotProvParam_sequence[] = {
10001   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10002   { 0, 0, 0, NULL }
10003 };
10004
10005 static int
10006 dissect_gsm_map_BearerServNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10007   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10008                                 BearerServNotProvParam_sequence, hf_index, ett_gsm_map_BearerServNotProvParam);
10009
10010   return offset;
10011 }
10012
10013 static const ber_sequence_t TeleservNotProvParam_sequence[] = {
10014   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10015   { 0, 0, 0, NULL }
10016 };
10017
10018 static int
10019 dissect_gsm_map_TeleservNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10020   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10021                                 TeleservNotProvParam_sequence, hf_index, ett_gsm_map_TeleservNotProvParam);
10022
10023   return offset;
10024 }
10025
10026 static const ber_sequence_t TracingBufferFullParam_sequence[] = {
10027   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10028   { 0, 0, 0, NULL }
10029 };
10030
10031 static int
10032 dissect_gsm_map_TracingBufferFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10033   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10034                                 TracingBufferFullParam_sequence, hf_index, ett_gsm_map_TracingBufferFullParam);
10035
10036   return offset;
10037 }
10038
10039 static const ber_sequence_t NoRoamingNbParam_sequence[] = {
10040   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10041   { 0, 0, 0, NULL }
10042 };
10043
10044 static int
10045 dissect_gsm_map_NoRoamingNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10046   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10047                                 NoRoamingNbParam_sequence, hf_index, ett_gsm_map_NoRoamingNbParam);
10048
10049   return offset;
10050 }
10051
10052
10053 static const value_string gsm_map_T_absentSubscriberReason_vals[] = {
10054   {   0, "imsiDetach" },
10055   {   1, "restrictedArea" },
10056   {   2, "noPageResponse" },
10057   { 0, NULL }
10058 };
10059
10060
10061 static int
10062 dissect_gsm_map_T_absentSubscriberReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10063   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10064
10065   return offset;
10066 }
10067 static int dissect_absentSubscriberReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10068   return dissect_gsm_map_T_absentSubscriberReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberReason);
10069 }
10070
10071 static const ber_sequence_t AbsentSubscriberParam_sequence[] = {
10072   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10073   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberReason_impl },
10074   { 0, 0, 0, NULL }
10075 };
10076
10077 static int
10078 dissect_gsm_map_AbsentSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10079   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10080                                 AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_AbsentSubscriberParam);
10081
10082   return offset;
10083 }
10084
10085 static const ber_sequence_t BusySubscriberParam_sequence[] = {
10086   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10087   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
10088   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Busy_impl },
10089   { 0, 0, 0, NULL }
10090 };
10091
10092 static int
10093 dissect_gsm_map_BusySubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10094   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10095                                 BusySubscriberParam_sequence, hf_index, ett_gsm_map_BusySubscriberParam);
10096
10097   return offset;
10098 }
10099
10100 static const ber_sequence_t NoSubscriberReplyParam_sequence[] = {
10101   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10102   { 0, 0, 0, NULL }
10103 };
10104
10105 static int
10106 dissect_gsm_map_NoSubscriberReplyParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10107   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10108                                 NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_NoSubscriberReplyParam);
10109
10110   return offset;
10111 }
10112
10113
10114 static const value_string gsm_map_CallBarringCause_vals[] = {
10115   {   0, "barringServiceActive" },
10116   {   1, "operatorBarring" },
10117   { 0, NULL }
10118 };
10119
10120
10121 static int
10122 dissect_gsm_map_CallBarringCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10123   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10124
10125   return offset;
10126 }
10127 static int dissect_callBarringCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10128   return dissect_gsm_map_CallBarringCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringCause);
10129 }
10130
10131 static const ber_sequence_t T_extensibleCallBarredParam_sequence[] = {
10132   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
10133   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10134   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorisedMessageOriginator_impl },
10135   { 0, 0, 0, NULL }
10136 };
10137
10138 static int
10139 dissect_gsm_map_T_extensibleCallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10140   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10141                                 T_extensibleCallBarredParam_sequence, hf_index, ett_gsm_map_T_extensibleCallBarredParam);
10142
10143   return offset;
10144 }
10145 static int dissect_extensibleCallBarredParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10146   return dissect_gsm_map_T_extensibleCallBarredParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleCallBarredParam);
10147 }
10148
10149
10150 static const value_string gsm_map_CallBarredParam_vals[] = {
10151   {   0, "callBarringCause" },
10152   {   1, "extensibleCallBarredParam" },
10153   { 0, NULL }
10154 };
10155
10156 static const ber_choice_t CallBarredParam_choice[] = {
10157   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
10158   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleCallBarredParam },
10159   { 0, 0, 0, 0, NULL }
10160 };
10161
10162 static int
10163 dissect_gsm_map_CallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10164   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
10165                               CallBarredParam_choice, hf_index, ett_gsm_map_CallBarredParam);
10166
10167   return offset;
10168 }
10169
10170 static const ber_sequence_t ForwardingFailedParam_sequence[] = {
10171   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10172   { 0, 0, 0, NULL }
10173 };
10174
10175 static int
10176 dissect_gsm_map_ForwardingFailedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10177   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10178                                 ForwardingFailedParam_sequence, hf_index, ett_gsm_map_ForwardingFailedParam);
10179
10180   return offset;
10181 }
10182
10183 static const ber_sequence_t Or_NotAllowedParam_sequence[] = {
10184   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10185   { 0, 0, 0, NULL }
10186 };
10187
10188 static int
10189 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_) {
10190   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10191                                 Or_NotAllowedParam_sequence, hf_index, ett_gsm_map_Or_NotAllowedParam);
10192
10193   return offset;
10194 }
10195
10196 static const ber_sequence_t ForwardingViolationParam_sequence[] = {
10197   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10198   { 0, 0, 0, NULL }
10199 };
10200
10201 static int
10202 dissect_gsm_map_ForwardingViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10203   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10204                                 ForwardingViolationParam_sequence, hf_index, ett_gsm_map_ForwardingViolationParam);
10205
10206   return offset;
10207 }
10208
10209
10210 static const value_string gsm_map_T_cug_RejectCause_vals[] = {
10211   {   0, "incomingCallsBarredWithinCUG" },
10212   {   1, "subscriberNotMemberOfCUG" },
10213   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
10214   {   7, "calledPartySS-InteractionViolation" },
10215   { 0, NULL }
10216 };
10217
10218
10219 static int
10220 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_) {
10221   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10222
10223   return offset;
10224 }
10225 static int dissect_cug_RejectCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10226   return dissect_gsm_map_T_cug_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause);
10227 }
10228
10229 static const ber_sequence_t Cug_RejectParam_sequence[] = {
10230   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause },
10231   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10232   { 0, 0, 0, NULL }
10233 };
10234
10235 static int
10236 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_) {
10237   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10238                                 Cug_RejectParam_sequence, hf_index, ett_gsm_map_Cug_RejectParam);
10239
10240   return offset;
10241 }
10242
10243 static const ber_sequence_t Ati_NotAllowedParam_sequence[] = {
10244   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10245   { 0, 0, 0, NULL }
10246 };
10247
10248 static int
10249 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_) {
10250   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10251                                 Ati_NotAllowedParam_sequence, hf_index, ett_gsm_map_Ati_NotAllowedParam);
10252
10253   return offset;
10254 }
10255
10256 static const ber_sequence_t NoGroupCallNbParam_sequence[] = {
10257   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10258   { 0, 0, 0, NULL }
10259 };
10260
10261 static int
10262 dissect_gsm_map_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10263   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10264                                 NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_NoGroupCallNbParam);
10265
10266   return offset;
10267 }
10268
10269 static const ber_sequence_t Ss_IncompatibilityCause_sequence[] = {
10270   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
10271   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
10272   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
10273   { 0, 0, 0, NULL }
10274 };
10275
10276 static int
10277 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_) {
10278   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10279                                 Ss_IncompatibilityCause_sequence, hf_index, ett_gsm_map_Ss_IncompatibilityCause);
10280
10281   return offset;
10282 }
10283
10284
10285 static const value_string gsm_map_Pw_RegistrationFailureCause_vals[] = {
10286   {   0, "undetermined" },
10287   {   1, "invalidFormat" },
10288   {   2, "newPasswordsMismatch" },
10289   { 0, NULL }
10290 };
10291
10292
10293 static int
10294 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_) {
10295   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10296
10297   return offset;
10298 }
10299
10300 static const ber_sequence_t ShortTermDenialParam_sequence[] = {
10301   { 0, 0, 0, NULL }
10302 };
10303
10304 static int
10305 dissect_gsm_map_ShortTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10306   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10307                                 ShortTermDenialParam_sequence, hf_index, ett_gsm_map_ShortTermDenialParam);
10308
10309   return offset;
10310 }
10311
10312 static const ber_sequence_t LongTermDenialParam_sequence[] = {
10313   { 0, 0, 0, NULL }
10314 };
10315
10316 static int
10317 dissect_gsm_map_LongTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10318   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10319                                 LongTermDenialParam_sequence, hf_index, ett_gsm_map_LongTermDenialParam);
10320
10321   return offset;
10322 }
10323
10324 static const ber_sequence_t SubBusyForMT_SMS_Param_sequence[] = {
10325   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10326   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gprsConnectionSuspended },
10327   { 0, 0, 0, NULL }
10328 };
10329
10330 static int
10331 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_) {
10332   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10333                                 SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_SubBusyForMT_SMS_Param);
10334
10335   return offset;
10336 }
10337
10338
10339 static const value_string gsm_map_T_sm_EnumeratedDeliveryFailureCause_vals[] = {
10340   {   0, "memoryCapacityExceeded" },
10341   {   1, "equipmentProtocolError" },
10342   {   2, "equipmentNotSM-Equipped" },
10343   {   3, "unknownServiceCentre" },
10344   {   4, "sc-Congestion" },
10345   {   5, "invalidSME-Address" },
10346   {   6, "subscriberNotSC-Subscriber" },
10347   { 0, NULL }
10348 };
10349
10350
10351 static int
10352 dissect_gsm_map_T_sm_EnumeratedDeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10353   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10354
10355   return offset;
10356 }
10357 static int dissect_sm_EnumeratedDeliveryFailureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10358   return dissect_gsm_map_T_sm_EnumeratedDeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_EnumeratedDeliveryFailureCause);
10359 }
10360
10361
10362 static int
10363 dissect_gsm_map_OCTET_STRING_SIZE_1_200(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10364   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
10365                                     NULL);
10366
10367   return offset;
10368 }
10369 static int dissect_diagnosticInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10370   return dissect_gsm_map_OCTET_STRING_SIZE_1_200(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_diagnosticInfo);
10371 }
10372
10373 static const ber_sequence_t Sm_DeliveryFailureCause_sequence[] = {
10374   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_EnumeratedDeliveryFailureCause },
10375   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnosticInfo },
10376   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10377   { 0, 0, 0, NULL }
10378 };
10379
10380 static int
10381 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_) {
10382   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10383                                 Sm_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_Sm_DeliveryFailureCause);
10384
10385   return offset;
10386 }
10387
10388 static const ber_sequence_t MessageWaitListFullParam_sequence[] = {
10389   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10390   { 0, 0, 0, NULL }
10391 };
10392
10393 static int
10394 dissect_gsm_map_MessageWaitListFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10395   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10396                                 MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_MessageWaitListFullParam);
10397
10398   return offset;
10399 }
10400
10401 static const ber_sequence_t AbsentSubscriberSM_Param_sequence[] = {
10402   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_absentSubscriberDiagnosticSM },
10403   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10404   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
10405   { 0, 0, 0, NULL }
10406 };
10407
10408 static int
10409 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_) {
10410   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10411                                 AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_AbsentSubscriberSM_Param);
10412
10413   return offset;
10414 }
10415
10416 static const ber_sequence_t UnauthorizedRequestingNetwork_Param_sequence[] = {
10417   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10418   { 0, 0, 0, NULL }
10419 };
10420
10421 static int
10422 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_) {
10423   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10424                                 UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_UnauthorizedRequestingNetwork_Param);
10425
10426   return offset;
10427 }
10428
10429
10430 static const value_string gsm_map_T_unauthorizedLCSClient_Diagnostic_vals[] = {
10431   {   0, "noAdditionalInformation" },
10432   {   1, "clientNotInMSPrivacyExceptionList" },
10433   {   2, "callToClientNotSetup" },
10434   {   3, "privacyOverrideNotApplicable" },
10435   {   4, "disallowedByLocalRegulatoryRequirements" },
10436   { 0, NULL }
10437 };
10438
10439
10440 static int
10441 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_) {
10442   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10443
10444   return offset;
10445 }
10446 static int dissect_unauthorizedLCSClient_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10447   return dissect_gsm_map_T_unauthorizedLCSClient_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorizedLCSClient_Diagnostic);
10448 }
10449
10450 static const ber_sequence_t UnauthorizedLCSClient_Param_sequence[] = {
10451   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorizedLCSClient_Diagnostic_impl },
10452   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10453   { 0, 0, 0, NULL }
10454 };
10455
10456 static int
10457 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_) {
10458   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10459                                 UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_UnauthorizedLCSClient_Param);
10460
10461   return offset;
10462 }
10463
10464
10465 static const value_string gsm_map_T_positionMethodFailure_Diagnostic_vals[] = {
10466   {   0, "congestion" },
10467   {   1, "insufficientResources" },
10468   {   2, "insufficientMeasurementData" },
10469   {   3, "inconsistentMeasurementData" },
10470   {   4, "locationProcedureNotCompleted" },
10471   {   5, "locationProcedureNotSupportedByTargetMS" },
10472   {   6, "qoSNotAttainable" },
10473   {   7, "positionMethodNotAvailableInNetwork" },
10474   {   8, "positionMethodNotAvailableInLocationArea" },
10475   { 0, NULL }
10476 };
10477
10478
10479 static int
10480 dissect_gsm_map_T_positionMethodFailure_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
10481   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
10482
10483   return offset;
10484 }
10485 static int dissect_positionMethodFailure_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10486   return dissect_gsm_map_T_positionMethodFailure_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_positionMethodFailure_Diagnostic);
10487 }
10488
10489 static const ber_sequence_t PositionMethodFailure_Param_sequence[] = {
10490   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_positionMethodFailure_Diagnostic_impl },
10491   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
10492   { 0, 0, 0, NULL }
10493 };
10494
10495 static int
10496 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_) {
10497   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10498                                 PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_PositionMethodFailure_Param);
10499
10500   return offset;
10501 }
10502
10503 static const ber_sequence_t UnknownOrUnreachableLCSClient_Param_sequence[] = {
10504   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
10505   { 0, 0, 0, NULL }
10506 };
10507
10508 static int
10509 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_) {
10510   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
10511                                 UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_UnknownOrUnreachableLCSClient_Param);
10512
10513   return offset;
10514 }
10515
10516
10517 /*--- End of included file: packet-gsm_map-fn.c ---*/
10518
10519
10520 /* Stuff included from the "old" packet-gsm_map.c for tapping purposes */
10521 static gchar *
10522 my_match_strval(guint32 val, const value_string *vs, gint *idx)
10523 {
10524     gint        i = 0;
10525
10526     while (vs[i].strptr) {
10527         if (vs[i].value == val)
10528         {
10529             *idx = i;
10530             return(vs[i].strptr);
10531         }
10532
10533         i++;
10534     }
10535
10536     *idx = -1;
10537     return(NULL);
10538 }
10539 /* End includes from old" packet-gsm_map.c */
10540
10541 const value_string gsm_map_opr_code_strings[] = {
10542   {   2, "updateLocation" },
10543   {   3, "cancelLocation" },
10544   {   4, "provideRoamingNumber" },
10545   {   6, "resumeCallHandling" },
10546   {   7, "insertSubscriberData" },
10547   {   8, "deleteSubscriberData" },
10548   {   9, "sendParameters" },                                    /* map-ac infoRetrieval (14) version1 (1)*/
10549   {  10, "registerSS" },
10550   {  11, "eraseSS" },
10551   {  12, "activateSS" },
10552   {  13, "deactivateSS" },
10553   {  14, "interrogateSS" },
10554   {  17, "registerPassword" },
10555   {  18, "getPassword" },
10556   {  19, "processUnstructuredSS-Data" },                /* map-ac networkFunctionalSs (18) version1 (1) */
10557   {  22, "sendRoutingInfo" },
10558   {  23, "updateGprsLocation" },
10559   {  24, "sendRoutingInfoForGprs" },
10560   {  25, "failureReport" },
10561   {  26, "noteMsPresentForGprs" },
10562   {  28, "performHandover" },                                   /* map-ac handoverControl (11) version1 (1)*/
10563   {  29, "sendEndSignal" },
10564   {  30, "performSubsequentHandover" },                 /* map-ac handoverControl (11) version1 (1) */
10565   {  31, "provideSIWFSNumber" },
10566   {  32, "sIWFSSignallingModify" },
10567   {  33, "processAccessSignalling" },
10568   {  34, "forwardAccessSignalling" },
10569   {  35, "noteInternalHandover" },                              /* map-ac handoverControl (11) version1 (1) */
10570   {  37, "reset" },
10571   {  38, "forwardCheckSS-Indication" },
10572   {  39, "prepareGroupCall" },
10573   {  40, "sendGroupCallEndSignal" },
10574   {  41, "processGroupCallSignalling" },
10575   {  42, "forwardGroupCallSignalling" },
10576   {  43, "checkIMEI" },
10577   {  44, "mt-forwardSM" },
10578   {  45, "sendRoutingInfoForSM" },
10579   {  46, "mo-forwardSM" },
10580   {  47, "reportSM-DeliveryStatus" },
10581   {  48, "noteSubscriberPresent" },                             /* map-ac mwdMngt (24) version1 (1) */
10582   {  49, "alertServiceCentreWithoutResult" },   /* map-ac shortMsgAlert (23) version1 (1) */
10583   {  50, "activateTraceMode" },
10584   {  51, "deactivateTraceMode" },
10585   {  52, "traceSubscriberActivity" },                   /* map-ac handoverControl (11) version1 (1) */
10586   {  54, "beginSubscriberActivity" },                   /* map-ac networkFunctionalSs (18) version1 (1) */
10587   {  55, "sendIdentification" },
10588   {  56, "sendAuthenticationInfo" },
10589   {  57, "restoreData" },
10590   {  58, "sendIMSI" },
10591   {  59, "processUnstructuredSS-Request" },
10592   {  60, "unstructuredSS-Request" },
10593   {  61, "unstructuredSS-Notify" },
10594   {  62, "anyTimeSubscriptionInterrogation" },
10595   {  63, "informServiceCentre" },
10596   {  64, "alertServiceCentre" },
10597   {  65, "anyTimeModification" },
10598   {  66, "readyForSM" },
10599   {  67, "purgeMS" },
10600   {  68, "prepareHandover" },
10601   {  69, "prepareSubsequentHandover" },
10602   {  70, "provideSubscriberInfo" },
10603   {  71, "anyTimeInterrogation" },
10604   {  72, "ss-InvocationNotification" },
10605   {  73, "setReportingState" },
10606   {  74, "statusReport" },
10607   {  75, "remoteUserFree" },
10608   {  76, "registerCC-Entry" },
10609   {  77, "eraseCC-Entry" },
10610   {  83, "provideSubscriberLocation" },
10611   {  85, "sendRoutingInfoForLCS" },
10612   {  86, "subscriberLocationReport" },
10613   { 0, NULL }
10614 };
10615 static const value_string gsm_map_err_code_string_vals[] = {
10616     { 1,        "Unknown Subscriber" },
10617     { 3,        "Unknown MSC" },
10618     { 5,        "Unidentified Subscriber" },
10619     { 6,        "Absent Subscriber SM" },
10620     { 7,        "Unknown Equipment" },
10621     { 8,        "Roaming Not Allowed" },
10622     { 9,        "Illegal Subscriber" },
10623     { 10,       "Bearer Service Not Provisioned" },
10624     { 11,       "Teleservice Not Provisioned" },
10625     { 12,       "Illegal Equipment" },
10626     { 13,       "Call Barred" },
10627     { 14,       "Forwarding Violation" },
10628     { 15,       "CUG Reject" },
10629     { 16,       "Illegal SS Operation" },
10630     { 17,       "SS Error Status" },
10631     { 18,       "SS Not Available" },
10632     { 19,       "SS Subscription Violation" },
10633     { 20,       "SS Incompatibility" },
10634     { 21,       "Facility Not Supported" },
10635     { 25,       "No Handover Number Available" },
10636     { 26,       "Subsequent Handover Failure" },
10637     { 27,       "Absent Subscriber" },
10638     { 28,       "Incompatible Terminal" },
10639     { 29,       "Short Term Denial" },
10640     { 30,       "Long Term Denial" },
10641     { 31,       "Subscriber Busy For MT SMS" },
10642     { 32,       "SM Delivery Failure" },
10643     { 33,       "Message Waiting List Full" },
10644     { 34,       "System Failure" },
10645     { 35,       "Data Missing" },
10646     { 36,       "Unexpected Data Value" },
10647     { 37,       "PW Registration Failure" },
10648     { 38,       "Negative PW Check" },
10649     { 39,       "No Roaming Number Available" },
10650     { 40,       "Tracing Buffer Full" },
10651     { 42,       "Target Cell Outside Group Call Area" },
10652     { 43,       "Number Of PW Attempts Violation" },
10653     { 44,       "Number Changed" },
10654     { 45,       "Busy Subscriber" },
10655     { 46,       "No Subscriber Reply" },
10656     { 47,       "Forwarding Failed" },
10657     { 48,       "OR Not Allowed" },
10658     { 49,       "ATI Not Allowed" },
10659     { 50,       "No Group Call Number Available" },
10660     { 51,       "Resource Limitation" },
10661     { 52,       "Unauthorized Requesting Network" },
10662     { 53,       "Unauthorized LCS Client" },
10663     { 54,       "Position Method Failure" },
10664     { 58,       "Unknown Or Unreachable LCS Client" },
10665     { 59,       "MM Event Not Supported" },
10666     { 60,       "ATSI Not Allowed" },
10667     { 61,       "ATM Not Allowed" },
10668     { 62,       "Information Not Available" },
10669     { 71,       "Unknown Alphabet" },
10670     { 72,       "USSD Busy" },
10671     { 120,      "Nbr Sb Exceeded" },
10672     { 121,      "Rejected By User" },
10673     { 122,      "Rejected By Network" },
10674     { 123,      "Deflection To Served Subscriber" },
10675     { 124,      "Special Service Code" },
10676     { 125,      "Invalid Deflected To Number" },
10677     { 126,      "Max Number Of MPTY Participants Exceeded" },
10678     { 127,      "Resources Not Available" },
10679     { 0, NULL }
10680 };
10681 static const true_false_string gsm_map_extension_value = {
10682   "No Extension",
10683   "Extension"
10684 };
10685 static const value_string gsm_map_nature_of_number_values[] = {
10686         {   0x00,       "unknown" },
10687         {   0x01,       "International Number" },
10688         {   0x02,       "National Significant Number" },
10689         {   0x03,       "Network Specific Number" },
10690         {   0x04,       "Subscriber Number" },
10691         {   0x05,       "Reserved" },
10692         {   0x06,       "Abbreviated Number" },
10693         {   0x07,       "Reserved for extension" },
10694         { 0, NULL }
10695 };
10696 static const value_string gsm_map_number_plan_values[] = {
10697         {   0x00,       "unknown" },
10698         {   0x01,       "ISDN/Telephony Numbering (Rec ITU-T E.164)" },
10699         {   0x02,       "spare" },
10700         {   0x03,       "Data Numbering (ITU-T Rec. X.121)" },
10701         {   0x04,       "Telex Numbering (ITU-T Rec. F.69)" },
10702         {   0x05,       "spare" },
10703         {   0x06,       "Land Mobile Numbering (ITU-T Rec. E.212)" },
10704         {   0x07,       "spare" },
10705         {   0x08,       "National Numbering" },
10706         {   0x09,       "Private Numbering" },
10707         {   0x0f,       "Reserved for extension" },
10708         { 0, NULL }
10709 };
10710
10711 static const true_false_string gsm_map_Ss_Status_q_bit_values = {
10712   "Quiescent",
10713   "Operative"
10714 };
10715 static const true_false_string gsm_map_Ss_Status_p_values = {
10716   "Provisioned",
10717   "Not Provisioned"
10718 };
10719 static const true_false_string gsm_map_Ss_Status_r_values = {
10720   "Registered",
10721   "Not Registered"
10722 };
10723 static const true_false_string gsm_map_Ss_Status_a_values = {
10724   "Active",
10725   "not Active"
10726 };
10727
10728 static guint32 opcode=0;
10729
10730 static int
10731 dissect_gsm_map_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
10732   offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
10733
10734   if (check_col(pinfo->cinfo, COL_INFO)){
10735     col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
10736   }
10737
10738   return offset;
10739 }
10740
10741 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10742
10743   guint8 octet;
10744
10745   switch(opcode){
10746   case  2: /*updateLocation*/
10747     offset=dissect_gsm_map_UpdateLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
10748     break;
10749   case  3: /*cancelLocation*/
10750         octet = tvb_get_guint8(tvb,0) & 0xf;
10751         if ( octet == 3){ /*   */
10752                 offset = offset +2;
10753                 offset=dissect_gsm_map_CancelLocationArg(TRUE, tvb, offset, pinfo, tree, -1);
10754         }else{
10755     offset=dissect_gsm_map_CancelLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
10756         }
10757     break;
10758   case  4: /*provideRoamingNumber*/
10759     offset=dissect_gsm_map_ProvideRoamingNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
10760     break;
10761   case  6: /*resumeCallHandling*/
10762     offset=dissect_gsm_map_ResumeCallHandlingArg(FALSE, tvb, offset, pinfo, tree, -1);
10763     break;
10764   case  7: /*insertSubscriberData*/
10765     offset=dissect_gsm_map_InsertSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
10766     break;
10767   case  8: /*deleteSubscriberData*/
10768     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
10769     break;
10770         /* TODO find out why this isn't in the ASN1 file
10771   case  9: sendParameters
10772     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
10773     break;
10774         */
10775   case  10: /*registerSS*/
10776     offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10777     break;
10778   case  11: /*eraseSS*/
10779     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
10780     break;
10781   case 12: /*activateSS*/
10782     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
10783     break;
10784   case 13: /*deactivateSS*/
10785     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
10786     break;
10787   case 14: /*interrogateSS*/
10788     offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
10789     break;
10790   case 17: /*registerPassword*/
10791     offset=dissect_gsm_map_Ss_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
10792     break;
10793   case 18: /*getPassword*/
10794     offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_getPassword);
10795     break;
10796   case 22: /*sendRoutingInfo*/
10797     offset=dissect_gsm_map_SendRoutingInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
10798     break;
10799   case 23: /*updateGprsLocation*/
10800     offset=dissect_gsm_map_UpdateGprsLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
10801     break;
10802   case 24: /*sendRoutingInfoForGprs*/
10803     offset=dissect_gsm_map_SendRoutingInfoForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
10804     break;
10805   case 25: /*failureReport*/
10806     offset=dissect_gsm_map_FailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
10807     break;
10808   case 26: /*noteMsPresentForGprs*/
10809     offset=dissect_gsm_map_NoteMsPresentForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
10810     break;
10811   case 29: /*sendEndSignal*/
10812         octet = tvb_get_guint8(tvb,0) & 0xf;
10813         if ( octet == 3){ /* This is a V9 message ??? */
10814                 offset = offset +2;
10815                 offset=dissect_gsm_map_SendEndSignalV9Arg(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
10816         }else{
10817                 offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
10818         }
10819     break;
10820   case 31: /*provideSIWFSNumbe*/
10821     offset=dissect_gsm_map_ProvideSIWFSNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
10822     break;
10823   case 32: /*sIWFSSignallingModify*/
10824     offset=dissect_gsm_map_SIWFSSignallingModifyArg(FALSE, tvb, offset, pinfo, tree, -1);
10825     break;
10826   case 33: /*processAccessSignalling*/
10827     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
10828     break;
10829   case 34: /*forwardAccessSignalling*/
10830     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
10831     break;
10832   case 37: /*reset*/
10833     offset=dissect_gsm_map_ResetArg(FALSE, tvb, offset, pinfo, tree, -1);
10834     break;
10835   case 38: /*forwardCheckSS-Indication*/
10836     return offset;
10837     break;
10838   case 39: /*prepareGroupCall*/
10839     offset=dissect_gsm_map_PrepareGroupCallArg(FALSE, tvb, offset, pinfo, tree, -1);
10840     break;
10841   case 40: /*sendGroupCallEndSignal*/
10842     dissect_gsm_map_SendGroupCallEndSignalArg(FALSE, tvb, offset, pinfo, tree, -1);
10843     break;
10844   case 42: /*processGroupCallSignalling*/
10845     offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1);
10846     break;
10847   case 43: /*checkIMEI*/
10848           if (application_context_version < 2 ){
10849                   offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
10850           }else{
10851                   offset=dissect_gsm_map_CheckIMEIv2Arg(FALSE, tvb, offset, pinfo, tree, -1);
10852           }
10853     break;
10854   case 44: /*mt-forwardSM*/
10855     offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
10856     break;
10857   case 45: /*sendRoutingInfoForSM*/
10858     offset=dissect_gsm_map_RoutingInfoForSMArg(FALSE, tvb, offset, pinfo, tree, -1);
10859     break;
10860   case 46: /*mo-forwardSM*/
10861     offset=dissect_gsm_map_Mo_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10862     break;
10863   case 47: /*reportSM-DeliveryStatus*/
10864     offset=dissect_gsm_map_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, pinfo, tree, -1);
10865     break;
10866   case 50: /*activateTraceMode*/
10867     offset=dissect_gsm_map_ActivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
10868     break;
10869   case 51: /*deactivateTraceMode*/
10870     offset=dissect_gsm_map_DeactivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
10871     break;
10872   case 55: /*sendIdentification*/
10873     offset=dissect_gsm_map_Tmsi(FALSE, tvb, offset, pinfo, tree, -1);
10874     break;
10875   case 56: /*sendAuthenticationInfo*/
10876           if (application_context_version < 3 ){
10877                   offset=dissect_gsm_map_SendAuthenticationInfoArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
10878           }else{
10879                   offset=dissect_gsm_map_SendAuthenticationInfoArgV3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoArg);
10880           }
10881         break;
10882   case 57: /*restoreData*/
10883         offset=dissect_gsm_map_RestoreDataArg(FALSE, tvb, offset, pinfo, tree, -1);
10884         break;
10885   case 58: /*sendIMSI*/
10886         offset=dissect_gsm_map_Msisdn(FALSE, tvb, offset, pinfo, tree, -1);
10887         break;
10888   case 59: /*processUnstructuredSS-Request*/
10889     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10890     break;
10891   case 60: /*unstructuredSS-Request*/
10892     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10893     break;
10894   case 61: /*unstructuredSS-Notify*/
10895     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10896     break;
10897   case 62: /*AnyTimeSubscriptionInterrogation*/
10898           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
10899           break;
10900   case 63: /*informServiceCentre*/
10901     offset=dissect_gsm_map_InformServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
10902     break;
10903   case 64: /*alertServiceCentre*/
10904     offset=dissect_gsm_map_AlertServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
10905     break;
10906   case 65: /*AnyTimeModification*/
10907           offset=dissect_gsm_map_AnyTimeModificationArg(FALSE, tvb, offset, pinfo, tree, -1);
10908           break;
10909   case 66: /*readyForSM*/
10910     offset=dissect_gsm_map_ReadyForSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10911     break;
10912   case 67: /*purgeMS*/
10913     offset=dissect_gsm_map_PurgeMS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10914     break;
10915   case 68: /*prepareHandover*/
10916         octet = tvb_get_guint8(tvb,0) & 0xf;
10917         if ( octet == 3){ /* This is a V9 message ??? */
10918                 offset = offset +2;
10919                 offset=dissect_gsm_map_PrepareHandoverV3Arg(TRUE, tvb, offset, pinfo, tree, -1);
10920         }else{
10921                 offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10922         }
10923     break;
10924   case 69: /*prepareSubsequentHandover*/
10925     offset=dissect_gsm_map_PrepareSubsequentHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10926     break;
10927   case 70: /*provideSubscriberInfo*/
10928     offset=dissect_gsm_map_ProvideSubscriberInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
10929     break;
10930   case 71: /*anyTimeInterrogation*/
10931     offset=dissect_gsm_map_AnyTimeInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
10932     break;
10933   case 72: /*ss-InvocationNotificatio*/
10934     offset=dissect_gsm_map_Ss_InvocationNotificationArg(FALSE, tvb, offset, pinfo, tree, -1);
10935     break;
10936   case 73: /*setReportingState*/
10937     offset=dissect_gsm_map_SetReportingStateArg(FALSE, tvb, offset, pinfo, tree, -1);
10938     break;
10939   case 74: /*statusReport*/
10940     offset=dissect_gsm_map_StatusReportArg(FALSE, tvb, offset, pinfo, tree, -1);
10941     break;
10942   case 75: /*remoteUserFree*/
10943     offset=dissect_gsm_map_RemoteUserFreeArg(FALSE, tvb, offset, pinfo, tree, -1);
10944     break;
10945   case 76: /*registerCC-Entry*/
10946     offset=dissect_gsm_map_RegisterCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
10947     break;
10948   case 77: /*eraseCC-Entry*/
10949     offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
10950     break;
10951   case 83: /*provideSubscriberLocation*/
10952     offset=dissect_gsm_map_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10953     break;
10954   case 85: /*sendRoutingInfoForLCS*/
10955     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10956     break;
10957   case 86: /*subscriberLocationReport*/
10958     offset=dissect_gsm_map_SubscriberLocationReport_Arg(FALSE, tvb, offset, pinfo, tree, -1);
10959     break;
10960   default:
10961     proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
10962   }
10963   return offset;
10964 }
10965
10966
10967 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
10968         
10969   guint8 octet;
10970   switch(opcode){
10971   case  2: /*updateLocation*/
10972           octet = tvb_get_guint8(tvb,offset);
10973           /* As it seems like SEQUENCE OF sometimes is omitted, find out if it's there */
10974           if ( octet == 0x30 ){ /* Class 0 Univerasl, P/C 1 Constructed,Tag 16 Sequence OF */
10975     offset=dissect_gsm_map_UpdateLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
10976           }else{ /* Try decoding with IMPLICIT flag set */ 
10977                   offset=dissect_gsm_map_UpdateLocationRes(TRUE, tvb, offset, pinfo, tree, -1);
10978           }
10979     break;
10980   case  3: /*cancelLocation*/
10981     offset=dissect_gsm_map_CancelLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
10982     break;
10983   case  4: /*provideRoamingNumber*/
10984     offset=dissect_gsm_map_ProvideRoamingNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
10985     break;
10986   case  6: /*resumeCallHandling*/
10987     offset=dissect_gsm_map_ResumeCallHandlingRes(FALSE, tvb, offset, pinfo, tree, -1);
10988     break;
10989   case  7: /*insertSubscriberData*/
10990     offset=dissect_gsm_map_InsertSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
10991     break;
10992   case  8: /*deleteSubscriberData*/
10993     offset=dissect_gsm_map_DeleteSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
10994     break;
10995         /* TODO find out why this isn't in the ASN1 file
10996   case  9: sendParameters
10997     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
10998     break;
10999         */
11000   case  10: /*registerSS*/
11001     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
11002     break;
11003   case  11: /*eraseSS*/
11004     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
11005     break;
11006   case 12: /*activateSS*/
11007     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
11008     break;
11009   case 13: /*deactivateSS*/
11010     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
11011     break;
11012   case 14: /*interrogateSS*/
11013     offset=dissect_gsm_map_InterrogateSS_Res(FALSE, tvb, offset, pinfo, tree, -1);
11014     break;
11015   case 17: /*registerPassword*/
11016     offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
11017     break;
11018   case 18: /*getPassword*/
11019     offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentPassword);
11020     break;
11021   case 22: /*sendRoutingInfo*/
11022           /* This is done to get around a problem with IMPLICIT tag:s */
11023     offset = offset +2;
11024     offset=dissect_gsm_map_SendRoutingInfoRes(TRUE, tvb, offset, pinfo, tree, -1);
11025     break;
11026   case 23: /*updateGprsLocation*/
11027     offset=dissect_gsm_map_UpdateGprsLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
11028     break;
11029   case 24: /*sendRoutingInfoForGprs*/
11030     offset=dissect_gsm_map_SendRoutingInfoForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
11031     break;
11032   case 25: /*failureReport*/
11033     offset=dissect_gsm_map_FailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
11034     break;
11035   case 26: /*noteMsPresentForGprs*/
11036     offset=dissect_gsm_map_NoteMsPresentForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
11037     break;
11038   case 29: /*sendEndSignal*/
11039           /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain 
11040            * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) }
11041            */
11042     offset=dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, -1);
11043     break;
11044   case 31: /*provideSIWFSNumbe*/
11045     offset=dissect_gsm_map_ProvideSIWFSNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
11046     break;
11047   case 32: /*provideSIWFSNumbe*/
11048     offset=dissect_gsm_map_SIWFSSignallingModifyRes(FALSE, tvb, offset, pinfo, tree, -1);
11049     break;
11050   case 39: /*prepareGroupCall*/
11051     offset=dissect_gsm_map_PrepareGroupCallRes(FALSE, tvb, offset, pinfo, tree, -1);
11052     break;
11053   case 40: /*sendGroupCallEndSignal*/
11054     dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
11055     break;
11056   case 43: /*checkIMEI*/
11057     offset=dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_equipmentStatus);
11058     break;
11059   case 45: /*sendRoutingInfoForSM*/
11060     offset=dissect_gsm_map_RoutingInfoForSMRes(FALSE, tvb, offset, pinfo, tree, -1);
11061     break;
11062   case 46: /*mo-forwardSM*/
11063     offset=dissect_gsm_map_Mo_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
11064     break;
11065   case 48: /*reportSM-DeliveryStatus*/
11066     offset=dissect_gsm_map_ReportSM_DeliveryStatusRes(FALSE, tvb, offset, pinfo, tree, -1);
11067     break;
11068   case 50: /*activateTraceMode*/
11069     offset=dissect_gsm_map_ActivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
11070     break;
11071   case 51: /*deactivateTraceMode*/
11072     offset=dissect_gsm_map_DeactivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
11073     break;
11074   case 55: /*sendIdentification*/
11075     offset=dissect_gsm_map_SendIdentificationRes(FALSE, tvb, offset, pinfo, tree, -1);
11076     break;
11077   case 56: /*sendAuthenticationInfo*/
11078           if (application_context_version < 3 ){
11079                   offset=dissect_gsm_map_SendAuthenticationInfoRes(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes);
11080           }else{
11081                   offset=dissect_gsm_map_SendAuthenticationInfoV3Res(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes);
11082           }
11083           break;
11084   case 57: /*restoreData*/
11085     offset=dissect_gsm_map_RestoreDataRes(FALSE, tvb, offset, pinfo, tree, -1);
11086     break;
11087   case 58: /*sendIMSI*/
11088     offset=dissect_gsm_map_Imsi(FALSE, tvb, offset, pinfo, tree,hf_gsm_map_imsi);
11089     break;
11090   case 59: /*unstructuredSS-Request*/
11091     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
11092     break;
11093   case 60: /*unstructuredSS-Request*/
11094     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
11095     break;
11096   case 61: /*unstructuredSS-Notify*/
11097     /* TRUE ? */
11098     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
11099     break;
11100   case 62: /*AnyTimeSubscriptionInterrogation*/
11101           offset=dissect_gsm_map_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
11102           break;
11103   case 65: /*AnyTimeModification*/
11104           offset=dissect_gsm_map_AnyTimeModificationRes(FALSE, tvb, offset, pinfo, tree, -1);
11105           break;
11106   case 66: /*readyForSM*/
11107     offset=dissect_gsm_map_ReadyForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
11108     break;
11109   case 67: /*purgeMS*/
11110     offset=dissect_gsm_map_PurgeMS_Res(FALSE, tvb, offset, pinfo, tree, -1);
11111     break;
11112   case 68: /*prepareHandover*/
11113         octet = tvb_get_guint8(tvb,0) & 0xf;
11114         if ( octet == 3){ /* This is a V9 message ??? */
11115                 offset = offset +2;
11116                 offset=dissect_gsm_map_PrepareHandoverV3Res(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal);
11117         }else{
11118                 offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1);
11119         }
11120     break;
11121   case 69: /*prepareSubsequentHandover*/
11122      offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
11123     break;
11124   case 70: /*provideSubscriberInfo*/
11125     offset=dissect_gsm_map_ProvideSubscriberInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
11126     break;
11127   case 71: /*anyTimeInterrogation*/
11128     offset=dissect_gsm_map_AnyTimeInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
11129     break;
11130   case 72: /*ss-InvocationNotificatio*/
11131     offset=dissect_gsm_map_Ss_InvocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
11132     break;
11133   case 73: /*setReportingState*/
11134     offset=dissect_gsm_map_SetReportingStateRes(FALSE, tvb, offset, pinfo, tree, -1);
11135     break;
11136   case 74: /*statusReport*/
11137     offset=dissect_gsm_map_StatusReportRes(FALSE, tvb, offset, pinfo, tree, -1);
11138     break;
11139   case 75: /*remoteUserFree*/
11140     offset=dissect_gsm_map_RemoteUserFreeRes(FALSE, tvb, offset, pinfo, tree, -1);
11141     break;
11142   case 76: /*registerCC-Entry*/
11143     offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
11144     break;
11145   case 77: /*eraseCC-Entry*/
11146     offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
11147     break;
11148   case 83: /*provideSubscriberLocation*/
11149     offset=dissect_gsm_map_ProvideSubscriberLocation_Res(FALSE, tvb, offset, pinfo, tree, -1);
11150     break;
11151   case 85: /*sendRoutingInfoForLCS*/
11152     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
11153     break;
11154   case 86: /*subscriberLocationReport*/
11155     offset=dissect_gsm_map_SubscriberLocationReport_Res(FALSE, tvb, offset, pinfo, tree, -1);
11156     break;
11157  default:
11158     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
11159   }
11160   return offset;
11161 }
11162
11163 static int 
11164 dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11165   return dissect_gsm_map_Opcode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeCmd);
11166 }
11167
11168 static int dissect_invokeid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11169   return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_invokeid, NULL);
11170 }
11171
11172
11173 static const value_string InvokeId_vals[] = {
11174   {   0, "invokeid" },
11175   {   1, "absent" },
11176   { 0, NULL }
11177 };
11178
11179 static int dissect_absent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11180   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absent);
11181 }
11182
11183
11184 static const ber_choice_t InvokeId_choice[] = {
11185   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeid },
11186   {   1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_absent },
11187   { 0, 0, 0, 0, NULL }
11188 };
11189
11190 static int
11191 dissect_gsm_map_InvokeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
11192   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
11193                               InvokeId_choice, hf_index, ett_gsm_map_InvokeId);
11194
11195   return offset;
11196 }
11197 static int dissect_invokeId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11198   return dissect_gsm_map_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeId);
11199 }
11200
11201 static const ber_sequence_t InvokePDU_sequence[] = {
11202   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
11203   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd },
11204   { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeData },
11205   { 0, 0, 0, NULL }
11206 };
11207
11208 static int
11209 dissect_gsm_map_InvokePDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
11210   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11211                                 InvokePDU_sequence, hf_index, ett_gsm_map_InvokePDU);
11212
11213   return offset;
11214 }
11215 static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11216   return dissect_gsm_map_InvokePDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invoke);
11217 }
11218
11219 static const ber_sequence_t ReturnResult_result_sequence[] = {
11220   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd },
11221   { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_returnResultData },
11222   { 0, 0, 0, NULL }
11223 };
11224 static int
11225 dissect_returnResult_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11226   offset = dissect_ber_sequence(FALSE, pinfo, tree, tvb, offset,
11227                                 ReturnResult_result_sequence, hf_gsm_map_returnResult_result, ett_gsm_map_ReturnResult_result);
11228
11229   return offset;
11230 }
11231
11232 static const ber_sequence_t ReturnResultPDU_sequence[] = {
11233   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
11234   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_returnResult_result },
11235   { 0, 0, 0, NULL }
11236 };
11237
11238 static int
11239 dissect_gsm_map_returnResultPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
11240   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11241                                 ReturnResultPDU_sequence, hf_index, ett_gsm_map_ReturnResultPDU);
11242
11243   return offset;
11244 }
11245 static int dissect_returnResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11246   return dissect_gsm_map_returnResultPDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResult);
11247 }
11248
11249 static int
11250 dissect_local_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11251   return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_local_errorCode, NULL);
11252 }
11253
11254 static int
11255 dissect_global_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11256   offset =  dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
11257                                          hf_gsm_map_global_errorCode_oid, NULL);
11258   return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_global_errorCode, NULL);
11259 }
11260 static const ber_choice_t ReturnError_result_choice[] = {
11261   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_local_errorCode },
11262   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_global_errorCode },
11263   {   0, 0, 0, 0, NULL }
11264 };
11265
11266
11267 static int
11268 dissect_ReturnError_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11269
11270   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
11271                               ReturnError_result_choice, hf_gsm_map_returnError_result, ett_gsm_map_ReturnError_result);
11272
11273   return offset;
11274 }
11275
11276 static const ber_sequence_t ReturnErrorPDU_sequence[] = {
11277   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
11278   { BER_CLASS_UNI, -1/*choice*/,BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ReturnError_result },
11279   { 0, 0, 0, NULL }
11280 };
11281
11282 static int
11283 dissect_gsm_map_ReturnErrorPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
11284   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
11285                                 ReturnErrorPDU_sequence, hf_index, ett_gsm_map_ReturnErrorPDU);
11286
11287   return offset;
11288 }
11289 static int dissect_returnError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
11290   return dissect_gsm_map_ReturnErrorPDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnError);
11291 }
11292
11293
11294 static const value_string GSMMAPPDU_vals[] = {
11295   {   1, "Invoke " },
11296   {   2, "ReturnResult " },
11297   {   3, "ReturnError " },
11298   {   4, "Reject " },
11299   { 0, NULL }
11300 };
11301
11302 static const ber_choice_t GSMMAPPDU_choice[] = {
11303   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl },
11304   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResult_impl },
11305   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl },
11306 #ifdef REMOVED
11307   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl },
11308 #endif
11309   { 0, 0, 0, 0, NULL }
11310 };
11311
11312 static guint8 gsmmap_pdu_type = 0;
11313 static guint8 gsm_map_pdu_size = 0;
11314
11315 static int
11316 dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) {
11317
11318   char *version_ptr, *version_str;
11319
11320   opcode = 0;
11321   application_context_version = 0;
11322   if (pinfo->private_data != NULL){
11323     version_ptr = strrchr(pinfo->private_data,'.');
11324     if (version_ptr) {
11325       version_str = g_strdup(version_ptr+1);
11326       application_context_version = atoi(version_str);
11327     }
11328   }
11329
11330   gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
11331   /* Get the length and add 2 */
11332   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
11333
11334   if (check_col(pinfo->cinfo, COL_INFO)){
11335     col_set_str(pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, GSMMAPPDU_vals, "Unknown GSM-MAP PDU (%u)"));
11336   }
11337
11338   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
11339                               GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU);
11340
11341
11342   return offset;
11343 }
11344
11345
11346
11347
11348 static void
11349 dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
11350 {
11351     proto_item          *item=NULL;
11352     proto_tree          *tree=NULL;
11353         /* Used for gsm_map TAP */
11354         static                  gsm_map_tap_rec_t tap_rec;
11355         gint                    op_idx;
11356     gchar                       *str = NULL;
11357
11358
11359     if (check_col(pinfo->cinfo, COL_PROTOCOL))
11360     {
11361         col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP");
11362     }
11363
11364         top_tree = parent_tree;
11365
11366     /* create display subtree for the protocol */
11367     if(parent_tree){
11368        item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
11369        tree = proto_item_add_subtree(item, ett_gsm_map);
11370     }
11371
11372     dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, pinfo, tree, -1);
11373         str = my_match_strval(opcode, gsm_map_opr_code_strings, &op_idx);
11374
11375         tap_rec.invoke = FALSE;
11376         if ( gsmmap_pdu_type  == 1 )
11377                 tap_rec.invoke = TRUE;
11378         tap_rec.opr_code_idx = op_idx;
11379         tap_rec.size = gsm_map_pdu_size;
11380
11381         tap_queue_packet(gsm_map_tap, pinfo, &tap_rec);
11382
11383
11384 }
11385
11386 static const value_string ssCode_vals[] = {
11387   { 0x00, "allSS - all SS" },
11388   { 0x10 ,"allLineIdentificationSS - all line identification SS" },
11389   { 0x11 ,"clip - calling line identification presentation" },
11390   { 0x12 ,"clir - calling line identification restriction" },
11391   { 0x13 ,"colp - connected line identification presentation" },
11392   { 0x14 ,"colr - connected line identification restriction" },
11393   { 0x15 ,"mci - malicious call identification" },
11394   { 0x18 ,"allNameIdentificationSS - all name indentification SS" },
11395   { 0x19 ,"cnap - calling name presentation" },
11396   { 0x20 ,"allForwardingSS - all forwarding SS" },
11397   { 0x21 ,"cfu - call forwarding unconditional" },
11398   { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" },
11399   { 0x29 ,"cfb - call forwarding busy" },
11400   { 0x2a ,"cfnry - call forwarding on no reply" },
11401   { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" },
11402   { 0x24 ,"cd - call deflection" },
11403   { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" },
11404   { 0x31 ,"ect - explicit call transfer" },
11405   { 0x32 ,"mah - mobile access hunting" },
11406   { 0x40 ,"allCallCompletionSS - all Call completion SS" },
11407   { 0x41 ,"cw - call waiting" },
11408   { 0x42 ,"hold - call hold" },
11409   { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" },
11410   { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" },
11411   { 0x45 ,"mc - multicall" },
11412   { 0x50 ,"allMultiPartySS - all multiparty SS" },
11413   { 0x51 ,"multiPTY - multiparty" },
11414   { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" },
11415   { 0x61 ,"cug - closed user group" },
11416   { 0x70 ,"allChargingSS - all charging SS" },
11417   { 0x71 ,"aoci - advice of charge information" },
11418   { 0x72 ,"aocc - advice of charge charging" },
11419   { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" },
11420   { 0x81 ,"uus1 - UUS1 user-to-user signalling" },
11421   { 0x82 ,"uus2 - UUS2 user-to-user signalling" },
11422   { 0x83 ,"uus3 - UUS3 user-to-user signalling" },
11423   { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" },
11424   { 0x91 ,"barringOfOutgoingCalls" },
11425   { 0x92 ,"baoc - barring of all outgoing calls" },
11426   { 0x93 ,"boic - barring of outgoing international calls" },
11427   { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" },
11428   { 0x99 ,"barringOfIncomingCalls" },
11429   { 0x9a ,"baic - barring of all incoming calls" },
11430   { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" },
11431   { 0xf0 ,"allPLMN-specificSS" },
11432   { 0xa0 ,"allCallPrioritySS - all call priority SS" },
11433   { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" },
11434   { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" },
11435   { 0xb1 ,"universal - allow location by any LCS client" },
11436   { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" },
11437   { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" },
11438   { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" },
11439   { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" },
11440   { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" },
11441   { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" },
11442   { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" },
11443
11444   { 0xf1 ,"plmn-specificSS-1" },
11445   { 0xf2 ,"plmn-specificSS-2" },
11446   { 0xf3 ,"plmn-specificSS-3" },
11447   { 0xf4 ,"plmn-specificSS-4" },
11448   { 0xf5 ,"plmn-specificSS-5" },
11449   { 0xf6 ,"plmn-specificSS-6" },
11450   { 0xf7 ,"plmn-specificSS-7" },
11451   { 0xf8 ,"plmn-specificSS-8" },
11452   { 0xf9 ,"plmn-specificSS-9" },
11453   { 0xfa ,"plmn-specificSS-a" },
11454   { 0xfb ,"plmn-specificSS-b" },
11455   { 0xfc ,"plmn-specificSS-c" },
11456   { 0xfd ,"plmn-specificSS-d" },
11457   { 0xfe ,"plmn-specificSS-e" },
11458   { 0xff ,"plmn-specificSS-f" },
11459   { 0, NULL }
11460 };
11461
11462 static const value_string Teleservice_vals[] = {
11463 {0x00, "allTeleservices" },
11464 {0x10, "allSpeechTransmissionServices" },
11465 {0x11, "telephony" },
11466 {0x12, "emergencyCalls" },
11467 {0x20, "allShortMessageServices" },
11468 {0x21, "shortMessageMT-PP" },
11469 {0x22, "shortMessageMO-PP" },
11470 {0x60, "allFacsimileTransmissionServices" },
11471 {0x61, "facsimileGroup3AndAlterSpeech" },
11472 {0x62, "automaticFacsimileGroup3" },
11473 {0x63, "facsimileGroup4" },
11474
11475 {0x70, "allDataTeleservices" },
11476 {0x80, "allTeleservices-ExeptSMS" },
11477
11478 {0x90, "allVoiceGroupCallServices" },
11479 {0x91, "voiceGroupCall" },
11480 {0x92, "voiceBroadcastCall" },
11481
11482 {0xd0, "allPLMN-specificTS" },
11483 {0xd1, "plmn-specificTS-1" },
11484 {0xd2, "plmn-specificTS-2" },
11485 {0xd3, "plmn-specificTS-3" },
11486 {0xd4, "plmn-specificTS-4" },
11487 {0xd5, "plmn-specificTS-5" },
11488 {0xd6, "plmn-specificTS-6" },
11489 {0xd7, "plmn-specificTS-7" },
11490 {0xd8, "plmn-specificTS-8" },
11491 {0xd9, "plmn-specificTS-9" },
11492 {0xda, "plmn-specificTS-A" },
11493 {0xdb, "plmn-specificTS-B" },
11494 {0xdc, "plmn-specificTS-C" },
11495 {0xdd, "plmn-specificTS-D" },
11496 {0xde, "plmn-specificTS-E" },
11497 {0xdf, "plmn-specificTS-F" },
11498   { 0, NULL }
11499 };
11500
11501 static const value_string Bearerservice_vals[] = {
11502 {0x00, "allBearerServices" },
11503 {0x10, "allDataCDA-Services" },
11504 {0x11, "dataCDA-300bps" },
11505 {0x12, "dataCDA-1200bps" },
11506 {0x13, "dataCDA-1200-75bps" },
11507 {0x14, "dataCDA-2400bps" },
11508 {0x15, "dataCDA-4800bps" },
11509 {0x16, "dataCDA-9600bps" },
11510 {0x17, "general-dataCDA" },
11511
11512 {0x18, "allDataCDS-Services" },
11513 {0x1A, "dataCDS-1200bps" },
11514 {0x1C, "dataCDS-2400bps" },
11515 {0x1D, "dataCDS-4800bps" },
11516 {0x1E, "dataCDS-9600bps" },
11517 {0x1F, "general-dataCDS" },
11518
11519 {0x20, "allPadAccessCA-Services" },
11520 {0x21, "padAccessCA-300bps" },
11521 {0x22, "padAccessCA-1200bps" },
11522 {0x23, "padAccessCA-1200-75bps" },
11523 {0x24, "padAccessCA-2400bps" },
11524 {0x25, "padAccessCA-4800bps" },
11525 {0x26, "padAccessCA-9600bps" },
11526 {0x27, "general-padAccessCA" },
11527
11528 {0x28, "allDataPDS-Services" },
11529 {0x2C, "dataPDS-2400bps" },
11530 {0x2D, "dataPDS-4800bps" },
11531 {0x2E, "dataPDS-9600bps" },
11532 {0x2F, "general-dataPDS" },
11533
11534 {0x30, "allAlternateSpeech-DataCDA" },
11535 {0x38, "allAlternateSpeech-DataCDS" },
11536 {0x40, "allSpeechFollowedByDataCDA" },
11537 {0x48, "allSpeechFollowedByDataCDS" },
11538
11539 {0x50, "allDataCircuitAsynchronous" },
11540 {0x60, "allAsynchronousServices" },
11541 {0x58, "allDataCircuitSynchronous" },
11542 {0x68, "allSynchronousServices" },
11543
11544 {0xD0, "allPLMN-specificBS" },
11545 {0xD1, "plmn-specificBS-1" },
11546 {0xD2, "plmn-specificBS-2" },
11547 {0xD3, "plmn-specificBS-3" },
11548 {0xD4, "plmn-specificBS-4" },
11549 {0xD5, "plmn-specificBS-5" },
11550 {0xD6, "plmn-specificBS-6" },
11551 {0xD7, "plmn-specificBS-7" },
11552 {0xD8, "plmn-specificBS-8" },
11553 {0xD9, "plmn-specificBS-9" },
11554 {0xDA, "plmn-specificBS-A" },
11555 {0xDB, "plmn-specificBS-B" },
11556 {0xDC, "plmn-specificBS-C" },
11557 {0xDD, "plmn-specificBS-D" },
11558 {0xDE, "plmn-specificBS-E" },
11559 {0xDF, "plmn-specificBS-F" },
11560
11561 { 0, NULL }
11562 };
11563
11564 /*--- proto_reg_handoff_gsm_map ---------------------------------------*/
11565 static void range_delete_callback(guint32 ssn)
11566 {
11567     if (ssn) {
11568         dissector_delete("tcap.itu_ssn", ssn, map_handle);
11569     }
11570 }
11571
11572 static void range_add_callback(guint32 ssn)
11573 {
11574     if (ssn) {
11575         dissector_add("tcap.itu_ssn", ssn, map_handle);
11576     }
11577 }
11578
11579 void proto_reg_handoff_gsm_map(void) {
11580
11581     static int map_prefs_initialized = FALSE;
11582     data_handle = find_dissector("data");
11583
11584     if (!map_prefs_initialized) {
11585         map_prefs_initialized = TRUE;
11586         map_handle = create_dissector_handle(dissect_gsm_map, proto_gsm_map);
11587     }
11588     else {
11589         range_foreach(ssn_range, range_delete_callback);
11590     }
11591
11592     g_free(ssn_range);
11593     ssn_range = range_copy(global_ssn_range);
11594
11595     range_foreach(ssn_range, range_add_callback);
11596
11597 }
11598
11599 /*--- proto_register_gsm_map -------------------------------------------*/
11600 void proto_register_gsm_map(void) {
11601         module_t *gsm_map_module;
11602
11603   /* List of fields */
11604   static hf_register_info hf[] = {
11605     { &hf_gsm_map_invokeCmd,
11606       { "invokeCmd", "gsm_map.invokeCmd",
11607         FT_UINT32, BASE_DEC, VALS(gsm_map_opr_code_strings), 0,
11608         "InvokePDU/invokeCmd", HFILL }},
11609     { &hf_gsm_map_invokeid,
11610       { "invokeid", "gsm_map.invokeid",
11611         FT_INT32, BASE_DEC, NULL, 0,
11612         "InvokeId/invokeid", HFILL }},
11613     { &hf_gsm_map_absent,
11614       { "absent", "gsm_map.absent",
11615         FT_NONE, BASE_NONE, NULL, 0,
11616         "InvokeId/absent", HFILL }},
11617     { &hf_gsm_map_invokeId,
11618       { "invokeId", "gsm_map.invokeId",
11619         FT_UINT32, BASE_DEC, VALS(InvokeId_vals), 0,
11620         "InvokePDU/invokeId", HFILL }},
11621         { &hf_gsm_map_SendAuthenticationInfoArg,
11622       { "SendAuthenticationInfoArg", "gsm_map.SendAuthenticationInfoArg",
11623         FT_BYTES, BASE_NONE, NULL, 0,
11624         "SendAuthenticationInfoArg", HFILL }},
11625         { &hf_gsm_map_SendAuthenticationInfoRes,
11626       { "SendAuthenticationInfoRes", "gsm_map.SendAuthenticationInfoRes",
11627         FT_BYTES, BASE_NONE, NULL, 0,
11628         "SendAuthenticationInfoRes", HFILL }},
11629     { &hf_gsm_map_currentPassword,
11630       { "currentPassword", "gsm_map.currentPassword",
11631         FT_STRING, BASE_NONE, NULL, 0,
11632         "", HFILL }},
11633         { &hf_gsm_mapSendEndSignal,
11634       { "mapSendEndSignalArg", "gsm_map.mapsendendsignalarg",
11635         FT_BYTES, BASE_NONE, NULL, 0,
11636         "mapSendEndSignalArg", HFILL }},
11637     { &hf_gsm_map_invoke,
11638       { "invoke", "gsm_map.invoke",
11639         FT_NONE, BASE_NONE, NULL, 0,
11640         "GSMMAPPDU/invoke", HFILL }},
11641     { &hf_gsm_map_returnResult,
11642       { "returnResult", "gsm_map.returnResult",
11643         FT_NONE, BASE_NONE, NULL, 0,
11644         "GSMMAPPDU/returnResult", HFILL }},
11645         {&hf_gsm_map_returnResult_result,
11646       { "returnResult_result", "gsm_map.returnresultresult",
11647         FT_BYTES, BASE_NONE, NULL, 0,
11648         "returnResult_result", HFILL }},
11649         {&hf_gsm_map_returnError_result,
11650       { "returnError_result", "gsm_map.returnerrorresult",
11651         FT_UINT32, BASE_DEC, NULL, 0,
11652         "returnError_result", HFILL }},
11653         {&hf_gsm_map_returnError,
11654       { "returnError", "gsm_map.returnError",
11655         FT_NONE, BASE_NONE, NULL, 0,
11656         "GSMMAPPDU/returnError", HFILL }},
11657         {&hf_gsm_map_local_errorCode,
11658       { "Local Error Code", "gsm_map.localerrorCode",
11659         FT_UINT32, BASE_DEC, VALS(gsm_map_err_code_string_vals), 0,
11660         "localerrorCode", HFILL }},
11661         {&hf_gsm_map_global_errorCode_oid,
11662       { "Global Error Code OID", "gsm_map.hlobalerrorCodeoid",
11663         FT_BYTES, BASE_NONE, NULL, 0,
11664         "globalerrorCodeoid", HFILL }},
11665         {&hf_gsm_map_global_errorCode,
11666       { "Global Error Code", "gsm_map.globalerrorCode",
11667         FT_UINT32, BASE_DEC, NULL, 0,
11668         "globalerrorCode", HFILL }},
11669     { &hf_gsm_map_getPassword,
11670       { "Password", "gsm_map.password",
11671         FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0,
11672         "Password", HFILL }},
11673     { &hf_gsm_map_extension,
11674       { "Extension", "gsm_map.extension",
11675         FT_BOOLEAN, 8, TFS(&gsm_map_extension_value), 0x80,
11676         "Extension", HFILL }},
11677     { &hf_gsm_map_nature_of_number,
11678       { "Nature of number", "gsm_map.nature_of_number",
11679         FT_UINT8, BASE_HEX, VALS(gsm_map_nature_of_number_values), 0x70,
11680         "ature of number", HFILL }},
11681     { &hf_gsm_map_number_plan,
11682       { "Number plan", "gsm_map.number_plan",
11683         FT_UINT8, BASE_HEX, VALS(gsm_map_number_plan_values), 0x0f,
11684         "Number plan", HFILL }},
11685         { &hf_gsm_map_misdn_digits,
11686       { "Misdn digits", "gsm_map.misdn_digits",
11687         FT_STRING, BASE_NONE, NULL, 0,
11688         "Misdn digits", HFILL }},
11689         { &hf_gsm_map_servicecentreaddress_digits,
11690       { "ServiceCentreAddress digits", "gsm_map.servicecentreaddress_digits",
11691         FT_STRING, BASE_NONE, NULL, 0,
11692         "ServiceCentreAddress digits", HFILL }},
11693         { &hf_gsm_map_map_gmsc_address_digits,
11694       { "Gmsc Address digits digits", "gsm_map.gmsc_address_digits",
11695         FT_STRING, BASE_NONE, NULL, 0,
11696         "Gmsc Address digits", HFILL }},
11697         { &hf_gsm_map_imsi_digits,
11698       { "Imsi digits", "gsm_map.imsi_digits",
11699         FT_STRING, BASE_NONE, NULL, 0,
11700         "Imsi digits", HFILL }},
11701         {&hf_gsm_map_map_RoamingNumber_digits,
11702       { "RoamingNumber digits", "gsm_map.RoamingNumber_digits",
11703         FT_STRING, BASE_NONE, NULL, 0,
11704         "RoamingNumber digits", HFILL }},
11705         {&hf_gsm_map_map_hlr_number_digits,
11706       { "Hlr-Number digits", "gsm_map.hlr_number_digits",
11707         FT_STRING, BASE_NONE, NULL, 0,
11708         "Hlr-Number digits", HFILL }},
11709         {&hf_gsm_map_map_ForwardedToNumber_digits,
11710       { "Forwarded To Number digits", "gsm_map.forwardedtonumber_digits",
11711         FT_STRING, BASE_NONE, NULL, 0,
11712         "Forwarded To Number digits", HFILL }},
11713         { &hf_gsm_map_Ss_Status_unused,
11714       { "Unused", "gsm_map.unused",
11715         FT_UINT8, BASE_HEX, NULL, 0xf0,
11716         "Unused", HFILL }},
11717         { &hf_gsm_map_Ss_Status_q_bit,
11718       { "Q bit", "gsm_map.ss_status_q_bit",
11719         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08,
11720         "Q bit", HFILL }},
11721         { &hf_gsm_map_Ss_Status_p_bit,
11722       { "P bit", "gsm_map.ss_status_p_bit",
11723         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04,
11724         "P bit", HFILL }},
11725         { &hf_gsm_map_Ss_Status_r_bit,
11726       { "R bit", "gsm_map.ss_status_r_bit",
11727         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02,
11728         "R bit", HFILL }},
11729         { &hf_gsm_map_Ss_Status_a_bit,
11730       { "A bit", "gsm_map.ss_status_a_bit",
11731         FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
11732         "A bit", HFILL }},
11733
11734
11735 /*--- Included file: packet-gsm_map-hfarr.c ---*/
11736
11737     { &hf_gsm_map_protocolId,
11738       { "protocolId", "gsm_map.protocolId",
11739         FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0,
11740         "Bss-APDU/protocolId", HFILL }},
11741     { &hf_gsm_map_signalInfo,
11742       { "signalInfo", "gsm_map.signalInfo",
11743         FT_BYTES, BASE_HEX, NULL, 0,
11744         "Bss-APDU/signalInfo", HFILL }},
11745     { &hf_gsm_map_extensionContainer,
11746       { "extensionContainer", "gsm_map.extensionContainer",
11747         FT_NONE, BASE_NONE, NULL, 0,
11748         "", HFILL }},
11749     { &hf_gsm_map_accessNetworkProtocolId,
11750       { "accessNetworkProtocolId", "gsm_map.accessNetworkProtocolId",
11751         FT_UINT32, BASE_DEC, VALS(gsm_map_T_accessNetworkProtocolId_vals), 0,
11752         "An-APDU/accessNetworkProtocolId", HFILL }},
11753     { &hf_gsm_map_signalInfo2,
11754       { "signalInfo2", "gsm_map.signalInfo2",
11755         FT_BYTES, BASE_HEX, NULL, 0,
11756         "An-APDU/signalInfo2", HFILL }},
11757     { &hf_gsm_map_supportedCamelPhases,
11758       { "supportedCamelPhases", "gsm_map.supportedCamelPhases",
11759         FT_BYTES, BASE_HEX, NULL, 0,
11760         "", HFILL }},
11761     { &hf_gsm_map_solsaSupportIndicator,
11762       { "solsaSupportIndicator", "gsm_map.solsaSupportIndicator",
11763         FT_NONE, BASE_NONE, NULL, 0,
11764         "", HFILL }},
11765     { &hf_gsm_map_istSupportIndicator,
11766       { "istSupportIndicator", "gsm_map.istSupportIndicator",
11767         FT_UINT32, BASE_DEC, VALS(gsm_map_T_istSupportIndicator_vals), 0,
11768         "Vlr-Capability/istSupportIndicator", HFILL }},
11769     { &hf_gsm_map_superChargerSupportedInServingNetworkEntity,
11770       { "superChargerSupportedInServingNetworkEntity", "gsm_map.superChargerSupportedInServingNetworkEntity",
11771         FT_UINT32, BASE_DEC, VALS(gsm_map_T_superChargerSupportedInServingNetworkEntity_vals), 0,
11772         "Vlr-Capability/superChargerSupportedInServingNetworkEntity", HFILL }},
11773     { &hf_gsm_map_sendSubscriberData,
11774       { "sendSubscriberData", "gsm_map.sendSubscriberData",
11775         FT_NONE, BASE_NONE, NULL, 0,
11776         "Vlr-Capability/superChargerSupportedInServingNetworkEntity/sendSubscriberData", HFILL }},
11777     { &hf_gsm_map_subscriberDataStored,
11778       { "subscriberDataStored", "gsm_map.subscriberDataStored",
11779         FT_BYTES, BASE_HEX, NULL, 0,
11780         "Vlr-Capability/superChargerSupportedInServingNetworkEntity/subscriberDataStored", HFILL }},
11781     { &hf_gsm_map_longFTN_Supported,
11782       { "longFTN-Supported", "gsm_map.longFTN_Supported",
11783         FT_NONE, BASE_NONE, NULL, 0,
11784         "", HFILL }},
11785     { &hf_gsm_map_supportedLCS_CapabilitySets,
11786       { "supportedLCS-CapabilitySets", "gsm_map.supportedLCS_CapabilitySets",
11787         FT_BYTES, BASE_HEX, NULL, 0,
11788         "Vlr-Capability/supportedLCS-CapabilitySets", HFILL }},
11789     { &hf_gsm_map_offeredCamel4CSIs,
11790       { "offeredCamel4CSIs", "gsm_map.offeredCamel4CSIs",
11791         FT_BYTES, BASE_HEX, NULL, 0,
11792         "Vlr-Capability/offeredCamel4CSIs", HFILL }},
11793     { &hf_gsm_map_imsi,
11794       { "imsi", "gsm_map.imsi",
11795         FT_BYTES, BASE_HEX, NULL, 0,
11796         "", HFILL }},
11797     { &hf_gsm_map_msc_Number,
11798       { "msc-Number", "gsm_map.msc_Number",
11799         FT_BYTES, BASE_HEX, NULL, 0,
11800         "", HFILL }},
11801     { &hf_gsm_map_vlr_Number,
11802       { "vlr-Number", "gsm_map.vlr_Number",
11803         FT_BYTES, BASE_HEX, NULL, 0,
11804         "", HFILL }},
11805     { &hf_gsm_map_lmsi,
11806       { "lmsi", "gsm_map.lmsi",
11807         FT_BYTES, BASE_HEX, NULL, 0,
11808         "", HFILL }},
11809     { &hf_gsm_map_vlr_Capability,
11810       { "vlr-Capability", "gsm_map.vlr_Capability",
11811         FT_NONE, BASE_NONE, NULL, 0,
11812         "", HFILL }},
11813     { &hf_gsm_map_informPreviousNetworkEntity,
11814       { "informPreviousNetworkEntity", "gsm_map.informPreviousNetworkEntity",
11815         FT_NONE, BASE_NONE, NULL, 0,
11816         "UpdateLocationArg/informPreviousNetworkEntity", HFILL }},
11817     { &hf_gsm_map_cs_LCS_NotSupportedByUE,
11818       { "cs-LCS-NotSupportedByUE", "gsm_map.cs_LCS_NotSupportedByUE",
11819         FT_NONE, BASE_NONE, NULL, 0,
11820         "UpdateLocationArg/cs-LCS-NotSupportedByUE", HFILL }},
11821     { &hf_gsm_map_v_gmlc_Address,
11822       { "v-gmlc-Address", "gsm_map.v_gmlc_Address",
11823         FT_BYTES, BASE_HEX, NULL, 0,
11824         "UpdateLocationArg/v-gmlc-Address", HFILL }},
11825     { &hf_gsm_map_add_info,
11826       { "add-info", "gsm_map.add_info",
11827         FT_NONE, BASE_NONE, NULL, 0,
11828         "UpdateLocationArg/add-info", HFILL }},
11829     { &hf_gsm_map_imeisv,
11830       { "imeisv", "gsm_map.imeisv",
11831         FT_BYTES, BASE_HEX, NULL, 0,
11832         "UpdateLocationArg/add-info/imeisv", HFILL }},
11833     { &hf_gsm_map_skipSubscriberDataUpdate,
11834       { "skipSubscriberDataUpdate", "gsm_map.skipSubscriberDataUpdate",
11835         FT_NONE, BASE_NONE, NULL, 0,
11836         "UpdateLocationArg/add-info/skipSubscriberDataUpdate", HFILL }},
11837     { &hf_gsm_map_hlr_Number,
11838       { "hlr-Number", "gsm_map.hlr_Number",
11839         FT_BYTES, BASE_HEX, NULL, 0,
11840         "", HFILL }},
11841     { &hf_gsm_map_PrivateExtensionList_item,
11842       { "Item", "gsm_map.PrivateExtensionList_item",
11843         FT_NONE, BASE_NONE, NULL, 0,
11844         "PrivateExtensionList/_item", HFILL }},
11845     { &hf_gsm_map_extId,
11846       { "extId", "gsm_map.extId",
11847         FT_STRING, BASE_NONE, NULL, 0,
11848         "PrivateExtension/extId", HFILL }},
11849     { &hf_gsm_map_extType,
11850       { "extType", "gsm_map.extType",
11851         FT_NONE, BASE_NONE, NULL, 0,
11852         "PrivateExtension/extType", HFILL }},
11853     { &hf_gsm_map_identity,
11854       { "identity", "gsm_map.identity",
11855         FT_UINT32, BASE_DEC, VALS(gsm_map_T_identity_vals), 0,
11856         "CancelLocationArg/identity", HFILL }},
11857     { &hf_gsm_map_imsi_WithLMSI,
11858       { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI",
11859         FT_NONE, BASE_NONE, NULL, 0,
11860         "CancelLocationArg/identity/imsi-WithLMSI", HFILL }},
11861     { &hf_gsm_map_cancellationType,
11862       { "cancellationType", "gsm_map.cancellationType",
11863         FT_UINT32, BASE_DEC, VALS(gsm_map_CancellationType_vals), 0,
11864         "CancelLocationArg/cancellationType", HFILL }},
11865     { &hf_gsm_map_sgsn_Number,
11866       { "sgsn-Number", "gsm_map.sgsn_Number",
11867         FT_BYTES, BASE_HEX, NULL, 0,
11868         "", HFILL }},
11869     { &hf_gsm_map_freezeTMSI,
11870       { "freezeTMSI", "gsm_map.freezeTMSI",
11871         FT_NONE, BASE_NONE, NULL, 0,
11872         "PurgeMS-Res/freezeTMSI", HFILL }},
11873     { &hf_gsm_map_freezeP_TMSI,
11874       { "freezeP-TMSI", "gsm_map.freezeP_TMSI",
11875         FT_NONE, BASE_NONE, NULL, 0,
11876         "PurgeMS-Res/freezeP-TMSI", HFILL }},
11877     { &hf_gsm_map_sendId_authenticationSetList,
11878       { "authenticationSetList", "gsm_map.authenticationSetList",
11879         FT_NONE, BASE_NONE, NULL, 0,
11880         "SendIdentificationRes/authenticationSetList", HFILL }},
11881     { &hf_gsm_map_authenticationSetList_item,
11882       { "Item", "gsm_map.authenticationSetList_item",
11883         FT_NONE, BASE_NONE, NULL, 0,
11884         "SendIdentificationRes/authenticationSetList/_item", HFILL }},
11885     { &hf_gsm_map_rand,
11886       { "rand", "gsm_map.rand",
11887         FT_BYTES, BASE_HEX, NULL, 0,
11888         "", HFILL }},
11889     { &hf_gsm_map_sres,
11890       { "sres", "gsm_map.sres",
11891         FT_BYTES, BASE_HEX, NULL, 0,
11892         "", HFILL }},
11893     { &hf_gsm_map_kc,
11894       { "kc", "gsm_map.kc",
11895         FT_BYTES, BASE_HEX, NULL, 0,
11896         "", HFILL }},
11897     { &hf_gsm_map_targetCellId,
11898       { "targetCellId", "gsm_map.targetCellId",
11899         FT_BYTES, BASE_HEX, NULL, 0,
11900         "", HFILL }},
11901     { &hf_gsm_map_ho_NumberNotRequired,
11902       { "ho-NumberNotRequired", "gsm_map.ho_NumberNotRequired",
11903         FT_NONE, BASE_NONE, NULL, 0,
11904         "", HFILL }},
11905     { &hf_gsm_map_bss_APDU,
11906       { "bss-APDU", "gsm_map.bss_APDU",
11907         FT_NONE, BASE_NONE, NULL, 0,
11908         "", HFILL }},
11909     { &hf_gsm_map_targetRNCId,
11910       { "targetRNCId", "gsm_map.targetRNCId",
11911         FT_BYTES, BASE_HEX, NULL, 0,
11912         "PrepareHandoverV3Arg/targetRNCId", HFILL }},
11913     { &hf_gsm_map_an_APDU,
11914       { "an-APDU", "gsm_map.an_APDU",
11915         FT_NONE, BASE_NONE, NULL, 0,
11916         "", HFILL }},
11917     { &hf_gsm_map_multipleBearerRequested,
11918       { "multipleBearerRequested", "gsm_map.multipleBearerRequested",
11919         FT_NONE, BASE_NONE, NULL, 0,
11920         "PrepareHandoverV3Arg/multipleBearerRequested", HFILL }},
11921     { &hf_gsm_map_integrityProtectionInfo,
11922       { "integrityProtectionInfo", "gsm_map.integrityProtectionInfo",
11923         FT_BYTES, BASE_HEX, NULL, 0,
11924         "PrepareHandoverV3Arg/integrityProtectionInfo", HFILL }},
11925     { &hf_gsm_map_encryptionInfo,
11926       { "encryptionInfo", "gsm_map.encryptionInfo",
11927         FT_BYTES, BASE_HEX, NULL, 0,
11928         "PrepareHandoverV3Arg/encryptionInfo", HFILL }},
11929     { &hf_gsm_map_radioResourceInformation,
11930       { "radioResourceInformation", "gsm_map.radioResourceInformation",
11931         FT_BYTES, BASE_HEX, NULL, 0,
11932         "", HFILL }},
11933     { &hf_gsm_map_allowedGSM_Algorithms,
11934       { "allowedGSM-Algorithms", "gsm_map.allowedGSM_Algorithms",
11935         FT_BYTES, BASE_HEX, NULL, 0,
11936         "PrepareHandoverV3Arg/allowedGSM-Algorithms", HFILL }},
11937     { &hf_gsm_map_allowedUMTS_Algorithms,
11938       { "allowedUMTS-Algorithms", "gsm_map.allowedUMTS_Algorithms",
11939         FT_NONE, BASE_NONE, NULL, 0,
11940         "PrepareHandoverV3Arg/allowedUMTS-Algorithms", HFILL }},
11941     { &hf_gsm_map_integrityProtectionAlgorithms,
11942       { "integrityProtectionAlgorithms", "gsm_map.integrityProtectionAlgorithms",
11943         FT_BYTES, BASE_HEX, NULL, 0,
11944         "PrepareHandoverV3Arg/allowedUMTS-Algorithms/integrityProtectionAlgorithms", HFILL }},
11945     { &hf_gsm_map_encryptionAlgorithms,
11946       { "encryptionAlgorithms", "gsm_map.encryptionAlgorithms",
11947         FT_BYTES, BASE_HEX, NULL, 0,
11948         "PrepareHandoverV3Arg/allowedUMTS-Algorithms/encryptionAlgorithms", HFILL }},
11949     { &hf_gsm_map_radioResourceList,
11950       { "radioResourceList", "gsm_map.radioResourceList",
11951         FT_NONE, BASE_NONE, NULL, 0,
11952         "PrepareHandoverV3Arg/radioResourceList", HFILL }},
11953     { &hf_gsm_map_radioResourceList_item,
11954       { "Item", "gsm_map.radioResourceList_item",
11955         FT_NONE, BASE_NONE, NULL, 0,
11956         "PrepareHandoverV3Arg/radioResourceList/_item", HFILL }},
11957     { &hf_gsm_map_rab_Id,
11958       { "rab-Id", "gsm_map.rab_Id",
11959         FT_UINT32, BASE_DEC, NULL, 0,
11960         "", HFILL }},
11961     { &hf_gsm_map_bssmap_ServiceHandover,
11962       { "bssmap-ServiceHandover", "gsm_map.bssmap_ServiceHandover",
11963         FT_BYTES, BASE_HEX, NULL, 0,
11964         "", HFILL }},
11965     { &hf_gsm_map_ranap_ServiceHandover,
11966       { "ranap-ServiceHandover", "gsm_map.ranap_ServiceHandover",
11967         FT_BYTES, BASE_HEX, NULL, 0,
11968         "PrepareHandoverV3Arg/ranap-ServiceHandover", HFILL }},
11969     { &hf_gsm_map_bssmap_ServiceHandoverList,
11970       { "bssmap-ServiceHandoverList", "gsm_map.bssmap_ServiceHandoverList",
11971         FT_NONE, BASE_NONE, NULL, 0,
11972         "PrepareHandoverV3Arg/bssmap-ServiceHandoverList", HFILL }},
11973     { &hf_gsm_map_bssmap_ServiceHandoverList_item,
11974       { "Item", "gsm_map.bssmap_ServiceHandoverList_item",
11975         FT_NONE, BASE_NONE, NULL, 0,
11976         "PrepareHandoverV3Arg/bssmap-ServiceHandoverList/_item", HFILL }},
11977     { &hf_gsm_map_asciCallReference,
11978       { "asciCallReference", "gsm_map.asciCallReference",
11979         FT_BYTES, BASE_HEX, NULL, 0,
11980         "", HFILL }},
11981     { &hf_gsm_map_geran_classmark,
11982       { "geran-classmark", "gsm_map.geran_classmark",
11983         FT_BYTES, BASE_HEX, NULL, 0,
11984         "PrepareHandoverV3Arg/geran-classmark", HFILL }},
11985     { &hf_gsm_map_iuCurrentlyUsedCodec,
11986       { "iuCurrentlyUsedCodec", "gsm_map.iuCurrentlyUsedCodec",
11987         FT_BYTES, BASE_HEX, NULL, 0,
11988         "PrepareHandoverV3Arg/iuCurrentlyUsedCodec", HFILL }},
11989     { &hf_gsm_map_iuSupportedCodecsList,
11990       { "iuSupportedCodecsList", "gsm_map.iuSupportedCodecsList",
11991         FT_NONE, BASE_NONE, NULL, 0,
11992         "PrepareHandoverV3Arg/iuSupportedCodecsList", HFILL }},
11993     { &hf_gsm_map_utranCodecList,
11994       { "utranCodecList", "gsm_map.utranCodecList",
11995         FT_NONE, BASE_NONE, NULL, 0,
11996         "PrepareHandoverV3Arg/iuSupportedCodecsList/utranCodecList", HFILL }},
11997     { &hf_gsm_map_codec1,
11998       { "codec1", "gsm_map.codec1",
11999         FT_BYTES, BASE_HEX, NULL, 0,
12000         "", HFILL }},
12001     { &hf_gsm_map_codec2,
12002       { "codec2", "gsm_map.codec2",
12003         FT_BYTES, BASE_HEX, NULL, 0,
12004         "", HFILL }},
12005     { &hf_gsm_map_codec3,
12006       { "codec3", "gsm_map.codec3",
12007         FT_BYTES, BASE_HEX, NULL, 0,
12008         "", HFILL }},
12009     { &hf_gsm_map_codec4,
12010       { "codec4", "gsm_map.codec4",
12011         FT_BYTES, BASE_HEX, NULL, 0,
12012         "", HFILL }},
12013     { &hf_gsm_map_codec5,
12014       { "codec5", "gsm_map.codec5",
12015         FT_BYTES, BASE_HEX, NULL, 0,
12016         "", HFILL }},
12017     { &hf_gsm_map_codec6,
12018       { "codec6", "gsm_map.codec6",
12019         FT_BYTES, BASE_HEX, NULL, 0,
12020         "", HFILL }},
12021     { &hf_gsm_map_codec7,
12022       { "codec7", "gsm_map.codec7",
12023         FT_BYTES, BASE_HEX, NULL, 0,
12024         "", HFILL }},
12025     { &hf_gsm_map_codec8,
12026       { "codec8", "gsm_map.codec8",
12027         FT_BYTES, BASE_HEX, NULL, 0,
12028         "", HFILL }},
12029     { &hf_gsm_map_geranCodecList,
12030       { "geranCodecList", "gsm_map.geranCodecList",
12031         FT_NONE, BASE_NONE, NULL, 0,
12032         "PrepareHandoverV3Arg/iuSupportedCodecsList/utranCodecList/geranCodecList", HFILL }},
12033     { &hf_gsm_map_rab_ConfigurationIndicator,
12034       { "rab-ConfigurationIndicator", "gsm_map.rab_ConfigurationIndicator",
12035         FT_NONE, BASE_NONE, NULL, 0,
12036         "PrepareHandoverV3Arg/rab-ConfigurationIndicator", HFILL }},
12037     { &hf_gsm_map_uesbi_Iu,
12038       { "uesbi-Iu", "gsm_map.uesbi_Iu",
12039         FT_NONE, BASE_NONE, NULL, 0,
12040         "PrepareHandoverV3Arg/uesbi-Iu", HFILL }},
12041     { &hf_gsm_map_uesbi_IuA,
12042       { "uesbi-IuA", "gsm_map.uesbi_IuA",
12043         FT_BYTES, BASE_HEX, NULL, 0,
12044         "", HFILL }},
12045     { &hf_gsm_map_uesbi_IuB,
12046       { "uesbi-IuB", "gsm_map.uesbi_IuB",
12047         FT_BYTES, BASE_HEX, NULL, 0,
12048         "", HFILL }},
12049     { &hf_gsm_map_handoverNumber,
12050       { "handoverNumber", "gsm_map.handoverNumber",
12051         FT_BYTES, BASE_HEX, NULL, 0,
12052         "", HFILL }},
12053     { &hf_gsm_map_relocationNumberList,
12054       { "relocationNumberList", "gsm_map.relocationNumberList",
12055         FT_NONE, BASE_NONE, NULL, 0,
12056         "PrepareHandoverV3Res/relocationNumberList", HFILL }},
12057     { &hf_gsm_map_relocationNumberList_item,
12058       { "Item", "gsm_map.relocationNumberList_item",
12059         FT_NONE, BASE_NONE, NULL, 0,
12060         "PrepareHandoverV3Res/relocationNumberList/_item", HFILL }},
12061     { &hf_gsm_map_multicallBearerInfo,
12062       { "multicallBearerInfo", "gsm_map.multicallBearerInfo",
12063         FT_UINT32, BASE_DEC, NULL, 0,
12064         "PrepareHandoverV3Res/multicallBearerInfo", HFILL }},
12065     { &hf_gsm_map_multipleBearerNotSupported,
12066       { "multipleBearerNotSupported", "gsm_map.multipleBearerNotSupported",
12067         FT_NONE, BASE_NONE, NULL, 0,
12068         "PrepareHandoverV3Res/multipleBearerNotSupported", HFILL }},
12069     { &hf_gsm_map_selectedUMTS_Algorithms,
12070       { "selectedUMTS-Algorithms", "gsm_map.selectedUMTS_Algorithms",
12071         FT_NONE, BASE_NONE, NULL, 0,
12072         "PrepareHandoverV3Res/selectedUMTS-Algorithms", HFILL }},
12073     { &hf_gsm_map_integrityProtectionAlgorithm,
12074       { "integrityProtectionAlgorithm", "gsm_map.integrityProtectionAlgorithm",
12075         FT_BYTES, BASE_HEX, NULL, 0,
12076         "PrepareHandoverV3Res/selectedUMTS-Algorithms/integrityProtectionAlgorithm", HFILL }},
12077     { &hf_gsm_map_encryptionAlgorithm,
12078       { "encryptionAlgorithm", "gsm_map.encryptionAlgorithm",
12079         FT_BYTES, BASE_HEX, NULL, 0,
12080         "PrepareHandoverV3Res/selectedUMTS-Algorithms/encryptionAlgorithm", HFILL }},
12081     { &hf_gsm_map_chosenRadioResourceInformation,
12082       { "chosenRadioResourceInformation", "gsm_map.chosenRadioResourceInformation",
12083         FT_NONE, BASE_NONE, NULL, 0,
12084         "PrepareHandoverV3Res/chosenRadioResourceInformation", HFILL }},
12085     { &hf_gsm_map_chosenChannelInfo,
12086       { "chosenChannelInfo", "gsm_map.chosenChannelInfo",
12087         FT_BYTES, BASE_HEX, NULL, 0,
12088         "PrepareHandoverV3Res/chosenRadioResourceInformation/chosenChannelInfo", HFILL }},
12089     { &hf_gsm_map_chosenSpeechVersion,
12090       { "chosenSpeechVersion", "gsm_map.chosenSpeechVersion",
12091         FT_BYTES, BASE_HEX, NULL, 0,
12092         "PrepareHandoverV3Res/chosenRadioResourceInformation/chosenSpeechVersion", HFILL }},
12093     { &hf_gsm_map_iuSelectedCodec,
12094       { "iuSelectedCodec", "gsm_map.iuSelectedCodec",
12095         FT_BYTES, BASE_HEX, NULL, 0,
12096         "PrepareHandoverV3Res/iuSelectedCodec", HFILL }},
12097     { &hf_gsm_map_iuAvailableCodecsList,
12098       { "iuAvailableCodecsList", "gsm_map.iuAvailableCodecsList",
12099         FT_NONE, BASE_NONE, NULL, 0,
12100         "PrepareHandoverV3Res/iuAvailableCodecsList", HFILL }},
12101     { &hf_gsm_map_targetMSC_Number,
12102       { "targetMSC-Number", "gsm_map.targetMSC_Number",
12103         FT_BYTES, BASE_HEX, NULL, 0,
12104         "PrepareSubsequentHO-Arg/targetMSC-Number", HFILL }},
12105     { &hf_gsm_map_numberOfRequestedVectors,
12106       { "numberOfRequestedVectors", "gsm_map.numberOfRequestedVectors",
12107         FT_UINT32, BASE_DEC, NULL, 0,
12108         "SendAuthenticationInfoArgV3/numberOfRequestedVectors", HFILL }},
12109     { &hf_gsm_map_segmentationProhibited,
12110       { "segmentationProhibited", "gsm_map.segmentationProhibited",
12111         FT_NONE, BASE_NONE, NULL, 0,
12112         "SendAuthenticationInfoArgV3/segmentationProhibited", HFILL }},
12113     { &hf_gsm_map_immediateResponsePreferred,
12114       { "immediateResponsePreferred", "gsm_map.immediateResponsePreferred",
12115         FT_NONE, BASE_NONE, NULL, 0,
12116         "SendAuthenticationInfoArgV3/immediateResponsePreferred", HFILL }},
12117     { &hf_gsm_map_re_synchronisationInfo,
12118       { "re-synchronisationInfo", "gsm_map.re_synchronisationInfo",
12119         FT_NONE, BASE_NONE, NULL, 0,
12120         "SendAuthenticationInfoArgV3/re-synchronisationInfo", HFILL }},
12121     { &hf_gsm_map_auts,
12122       { "auts", "gsm_map.auts",
12123         FT_BYTES, BASE_HEX, NULL, 0,
12124         "SendAuthenticationInfoArgV3/re-synchronisationInfo/auts", HFILL }},
12125     { &hf_gsm_map_requestingNodeType,
12126       { "requestingNodeType", "gsm_map.requestingNodeType",
12127         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestingNodeType_vals), 0,
12128         "SendAuthenticationInfoArgV3/requestingNodeType", HFILL }},
12129     { &hf_gsm_map_requestingPLMN_Id,
12130       { "requestingPLMN-Id", "gsm_map.requestingPLMN_Id",
12131         FT_BYTES, BASE_HEX, NULL, 0,
12132         "SendAuthenticationInfoArgV3/requestingPLMN-Id", HFILL }},
12133     { &hf_gsm_map_SendAuthenticationInfoRes_item,
12134       { "Item", "gsm_map.SendAuthenticationInfoRes_item",
12135         FT_NONE, BASE_NONE, NULL, 0,
12136         "SendAuthenticationInfoRes/_item", HFILL }},
12137     { &hf_gsm_map_authenticationSetList,
12138       { "authenticationSetList", "gsm_map.authenticationSetList",
12139         FT_UINT32, BASE_DEC, VALS(gsm_map_T_authenticationSetList_vals), 0,
12140         "SendAuthenticationInfoV3Res/authenticationSetList", HFILL }},
12141     { &hf_gsm_map_tripletList,
12142       { "tripletList", "gsm_map.tripletList",
12143         FT_NONE, BASE_NONE, NULL, 0,
12144         "SendAuthenticationInfoV3Res/authenticationSetList/tripletList", HFILL }},
12145     { &hf_gsm_map_tripletList_item,
12146       { "Item", "gsm_map.tripletList_item",
12147         FT_NONE, BASE_NONE, NULL, 0,
12148         "SendAuthenticationInfoV3Res/authenticationSetList/tripletList/_item", HFILL }},
12149     { &hf_gsm_map_quintupletList,
12150       { "quintupletList", "gsm_map.quintupletList",
12151         FT_NONE, BASE_NONE, NULL, 0,
12152         "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList", HFILL }},
12153     { &hf_gsm_map_quintupletList_item,
12154       { "Item", "gsm_map.quintupletList_item",
12155         FT_NONE, BASE_NONE, NULL, 0,
12156         "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item", HFILL }},
12157     { &hf_gsm_map_xres,
12158       { "xres", "gsm_map.xres",
12159         FT_BYTES, BASE_HEX, NULL, 0,
12160         "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/xres", HFILL }},
12161     { &hf_gsm_map_ck,
12162       { "ck", "gsm_map.ck",
12163         FT_BYTES, BASE_HEX, NULL, 0,
12164         "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/ck", HFILL }},
12165     { &hf_gsm_map_ik,
12166       { "ik", "gsm_map.ik",
12167         FT_BYTES, BASE_HEX, NULL, 0,
12168         "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/ik", HFILL }},
12169     { &hf_gsm_map_autn,
12170       { "autn", "gsm_map.autn",
12171         FT_BYTES, BASE_HEX, NULL, 0,
12172         "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/autn", HFILL }},
12173     { &hf_gsm_map_imei,
12174       { "imei", "gsm_map.imei",
12175         FT_BYTES, BASE_HEX, NULL, 0,
12176         "", HFILL }},
12177     { &hf_gsm_map_requestedEquipmentInfo,
12178       { "requestedEquipmentInfo", "gsm_map.requestedEquipmentInfo",
12179         FT_BYTES, BASE_HEX, NULL, 0,
12180         "CheckIMEIv2Arg/requestedEquipmentInfo", HFILL }},
12181     { &hf_gsm_map_equipmentStatus,
12182       { "equipmentStatus", "gsm_map.equipmentStatus",
12183         FT_UINT32, BASE_DEC, VALS(gsm_map_EquipmentStatus_vals), 0,
12184         "ChekIMEIv3Res/equipmentStatus", HFILL }},
12185     { &hf_gsm_map_bmuef,
12186       { "bmuef", "gsm_map.bmuef",
12187         FT_NONE, BASE_NONE, NULL, 0,
12188         "ChekIMEIv3Res/bmuef", HFILL }},
12189     { &hf_gsm_map_bearerservice,
12190       { "bearerservice", "gsm_map.bearerservice",
12191         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
12192         "BasicService/bearerservice", HFILL }},
12193     { &hf_gsm_map_teleservice,
12194       { "teleservice", "gsm_map.teleservice",
12195         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
12196         "", HFILL }},
12197     { &hf_gsm_map_BasicServiceGroupList_item,
12198       { "Item", "gsm_map.BasicServiceGroupList_item",
12199         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_vals), 0,
12200         "BasicServiceGroupList/_item", HFILL }},
12201     { &hf_gsm_map_bcsmTriggerDetectionPoint,
12202       { "bcsmTriggerDetectionPoint", "gsm_map.bcsmTriggerDetectionPoint",
12203         FT_UINT32, BASE_DEC, VALS(gsm_map_BcsmTriggerDetectionPoint_vals), 0,
12204         "BcsmCamelTDPData/bcsmTriggerDetectionPoint", HFILL }},
12205     { &hf_gsm_map_serviceKey,
12206       { "serviceKey", "gsm_map.serviceKey",
12207         FT_UINT32, BASE_DEC, NULL, 0,
12208         "", HFILL }},
12209     { &hf_gsm_map_gsmSCFAddress,
12210       { "gsmSCFAddress", "gsm_map.gsmSCFAddress",
12211         FT_BYTES, BASE_HEX, NULL, 0,
12212         "BcsmCamelTDPData/gsmSCFAddress", HFILL }},
12213     { &hf_gsm_map_defaultCallHandling,
12214       { "defaultCallHandling", "gsm_map.defaultCallHandling",
12215         FT_UINT32, BASE_DEC, VALS(gsm_map_DefaultCallHandling_vals), 0,
12216         "", HFILL }},
12217     { &hf_gsm_map_BcsmCamelTDPDataList_item,
12218       { "Item", "gsm_map.BcsmCamelTDPDataList_item",
12219         FT_NONE, BASE_NONE, NULL, 0,
12220         "BcsmCamelTDPDataList/_item", HFILL }},
12221     { &hf_gsm_map_o_BcsmCamelTDPDataList,
12222       { "o-BcsmCamelTDPDataList", "gsm_map.o_BcsmCamelTDPDataList",
12223         FT_NONE, BASE_NONE, NULL, 0,
12224         "", HFILL }},
12225     { &hf_gsm_map_camelCapabilityHandling,
12226       { "camelCapabilityHandling", "gsm_map.camelCapabilityHandling",
12227         FT_UINT32, BASE_DEC, NULL, 0,
12228         "", HFILL }},
12229     { &hf_gsm_map_msisdn,
12230       { "msisdn", "gsm_map.msisdn",
12231         FT_BYTES, BASE_HEX, NULL, 0,
12232         "", HFILL }},
12233     { &hf_gsm_map_category,
12234       { "category", "gsm_map.category",
12235         FT_BYTES, BASE_HEX, NULL, 0,
12236         "InsertSubscriberDataArg/category", HFILL }},
12237     { &hf_gsm_map_subscriberStatus,
12238       { "subscriberStatus", "gsm_map.subscriberStatus",
12239         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberStatus_vals), 0,
12240         "InsertSubscriberDataArg/subscriberStatus", HFILL }},
12241     { &hf_gsm_map_bearerserviceList,
12242       { "bearerserviceList", "gsm_map.bearerserviceList",
12243         FT_NONE, BASE_NONE, NULL, 0,
12244         "", HFILL }},
12245     { &hf_gsm_map_bearerserviceList_item,
12246       { "Item", "gsm_map.bearerserviceList_item",
12247         FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
12248         "", HFILL }},
12249     { &hf_gsm_map_teleserviceList,
12250       { "teleserviceList", "gsm_map.teleserviceList",
12251         FT_NONE, BASE_NONE, NULL, 0,
12252         "", HFILL }},
12253     { &hf_gsm_map_teleserviceList_item,
12254       { "Item", "gsm_map.teleserviceList_item",
12255         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
12256         "", HFILL }},
12257     { &hf_gsm_map_provisionedSS,
12258       { "provisionedSS", "gsm_map.provisionedSS",
12259         FT_NONE, BASE_NONE, NULL, 0,
12260         "InsertSubscriberDataArg/provisionedSS", HFILL }},
12261     { &hf_gsm_map_provisionedSS_item,
12262       { "Item", "gsm_map.provisionedSS_item",
12263         FT_UINT32, BASE_DEC, VALS(gsm_map_T_provisionedSS_item_vals), 0,
12264         "InsertSubscriberDataArg/provisionedSS/_item", HFILL }},
12265     { &hf_gsm_map_forwardingInfo,
12266       { "forwardingInfo", "gsm_map.forwardingInfo",
12267         FT_NONE, BASE_NONE, NULL, 0,
12268         "", HFILL }},
12269     { &hf_gsm_map_callBarringInfo,
12270       { "callBarringInfo", "gsm_map.callBarringInfo",
12271         FT_NONE, BASE_NONE, NULL, 0,
12272         "", HFILL }},
12273     { &hf_gsm_map_cug_Info,
12274       { "cug-Info", "gsm_map.cug_Info",
12275         FT_NONE, BASE_NONE, NULL, 0,
12276         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info", HFILL }},
12277     { &hf_gsm_map_cug_SubscriptionList,
12278       { "cug-SubscriptionList", "gsm_map.cug_SubscriptionList",
12279         FT_NONE, BASE_NONE, NULL, 0,
12280         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList", HFILL }},
12281     { &hf_gsm_map_cug_SubscriptionList_item,
12282       { "Item", "gsm_map.cug_SubscriptionList_item",
12283         FT_NONE, BASE_NONE, NULL, 0,
12284         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList/_item", HFILL }},
12285     { &hf_gsm_map_cug_Index,
12286       { "cug-Index", "gsm_map.cug_Index",
12287         FT_UINT32, BASE_DEC, NULL, 0,
12288         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList/_item/cug-Index", HFILL }},
12289     { &hf_gsm_map_cug_Interlock,
12290       { "cug-Interlock", "gsm_map.cug_Interlock",
12291         FT_BYTES, BASE_HEX, NULL, 0,
12292         "", HFILL }},
12293     { &hf_gsm_map_intraCUG_Options,
12294       { "intraCUG-Options", "gsm_map.intraCUG_Options",
12295         FT_UINT32, BASE_DEC, VALS(gsm_map_IntraCUG_Options_vals), 0,
12296         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList/_item/intraCUG-Options", HFILL }},
12297     { &hf_gsm_map_basicServiceGroupList,
12298       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
12299         FT_NONE, BASE_NONE, NULL, 0,
12300         "", HFILL }},
12301     { &hf_gsm_map_cug_FeatureList,
12302       { "cug-FeatureList", "gsm_map.cug_FeatureList",
12303         FT_NONE, BASE_NONE, NULL, 0,
12304         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList", HFILL }},
12305     { &hf_gsm_map_cug_FeatureList_item,
12306       { "Item", "gsm_map.cug_FeatureList_item",
12307         FT_NONE, BASE_NONE, NULL, 0,
12308         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList/_item", HFILL }},
12309     { &hf_gsm_map_basicService,
12310       { "basicService", "gsm_map.basicService",
12311         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_vals), 0,
12312         "", HFILL }},
12313     { &hf_gsm_map_preferentialCUG_Indicator,
12314       { "preferentialCUG-Indicator", "gsm_map.preferentialCUG_Indicator",
12315         FT_UINT32, BASE_DEC, NULL, 0,
12316         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList/_item/preferentialCUG-Indicator", HFILL }},
12317     { &hf_gsm_map_interCUG_Restrictions,
12318       { "interCUG-Restrictions", "gsm_map.interCUG_Restrictions",
12319         FT_BYTES, BASE_HEX, NULL, 0,
12320         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList/_item/interCUG-Restrictions", HFILL }},
12321     { &hf_gsm_map_ss_Data,
12322       { "ss-Data", "gsm_map.ss_Data",
12323         FT_NONE, BASE_NONE, NULL, 0,
12324         "", HFILL }},
12325     { &hf_gsm_map_emlpp_Info,
12326       { "emlpp-Info", "gsm_map.emlpp_Info",
12327         FT_NONE, BASE_NONE, NULL, 0,
12328         "InsertSubscriberDataArg/provisionedSS/_item/emlpp-Info", HFILL }},
12329     { &hf_gsm_map_maximumentitledPriority,
12330       { "maximumentitledPriority", "gsm_map.maximumentitledPriority",
12331         FT_UINT32, BASE_DEC, NULL, 0,
12332         "InsertSubscriberDataArg/provisionedSS/_item/emlpp-Info/maximumentitledPriority", HFILL }},
12333     { &hf_gsm_map_defaultPriority,
12334       { "defaultPriority", "gsm_map.defaultPriority",
12335         FT_UINT32, BASE_DEC, NULL, 0,
12336         "", HFILL }},
12337     { &hf_gsm_map_odb_Data,
12338       { "odb-Data", "gsm_map.odb_Data",
12339         FT_NONE, BASE_NONE, NULL, 0,
12340         "", HFILL }},
12341     { &hf_gsm_map_roamingRestrictionDueToUnsupportedFeature,
12342       { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.roamingRestrictionDueToUnsupportedFeature",
12343         FT_NONE, BASE_NONE, NULL, 0,
12344         "", HFILL }},
12345     { &hf_gsm_map_regionalSubscriptionData,
12346       { "regionalSubscriptionData", "gsm_map.regionalSubscriptionData",
12347         FT_NONE, BASE_NONE, NULL, 0,
12348         "InsertSubscriberDataArg/regionalSubscriptionData", HFILL }},
12349     { &hf_gsm_map_regionalSubscriptionData_item,
12350       { "Item", "gsm_map.regionalSubscriptionData_item",
12351         FT_BYTES, BASE_HEX, NULL, 0,
12352         "InsertSubscriberDataArg/regionalSubscriptionData/_item", HFILL }},
12353     { &hf_gsm_map_vbsSubscriptionData,
12354       { "vbsSubscriptionData", "gsm_map.vbsSubscriptionData",
12355         FT_NONE, BASE_NONE, NULL, 0,
12356         "InsertSubscriberDataArg/vbsSubscriptionData", HFILL }},
12357     { &hf_gsm_map_vbsSubscriptionData_item,
12358       { "Item", "gsm_map.vbsSubscriptionData_item",
12359         FT_NONE, BASE_NONE, NULL, 0,
12360         "InsertSubscriberDataArg/vbsSubscriptionData/_item", HFILL }},
12361     { &hf_gsm_map_groupid,
12362       { "groupid", "gsm_map.groupid",
12363         FT_BYTES, BASE_HEX, NULL, 0,
12364         "InsertSubscriberDataArg/vbsSubscriptionData/_item/groupid", HFILL }},
12365     { &hf_gsm_map_broadcastInitEntitlement,
12366       { "broadcastInitEntitlement", "gsm_map.broadcastInitEntitlement",
12367         FT_NONE, BASE_NONE, NULL, 0,
12368         "InsertSubscriberDataArg/vbsSubscriptionData/_item/broadcastInitEntitlement", HFILL }},
12369     { &hf_gsm_map_vgcsSubscriptionData,
12370       { "vgcsSubscriptionData", "gsm_map.vgcsSubscriptionData",
12371         FT_NONE, BASE_NONE, NULL, 0,
12372         "InsertSubscriberDataArg/vgcsSubscriptionData", HFILL }},
12373     { &hf_gsm_map_vgcsSubscriptionData_item,
12374       { "Item", "gsm_map.vgcsSubscriptionData_item",
12375         FT_NONE, BASE_NONE, NULL, 0,
12376         "InsertSubscriberDataArg/vgcsSubscriptionData/_item", HFILL }},
12377     { &hf_gsm_map_groupId,
12378       { "groupId", "gsm_map.groupId",
12379         FT_BYTES, BASE_HEX, NULL, 0,
12380         "InsertSubscriberDataArg/vgcsSubscriptionData/_item/groupId", HFILL }},
12381     { &hf_gsm_map_vlrCamelSubscriptionInfo,
12382       { "vlrCamelSubscriptionInfo", "gsm_map.vlrCamelSubscriptionInfo",
12383         FT_NONE, BASE_NONE, NULL, 0,
12384         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo", HFILL }},
12385     { &hf_gsm_map_o_CSI,
12386       { "o-CSI", "gsm_map.o_CSI",
12387         FT_NONE, BASE_NONE, NULL, 0,
12388         "", HFILL }},
12389     { &hf_gsm_map_ss_CSI,
12390       { "ss-CSI", "gsm_map.ss_CSI",
12391         FT_NONE, BASE_NONE, NULL, 0,
12392         "", HFILL }},
12393     { &hf_gsm_map_ss_CamelData,
12394       { "ss-CamelData", "gsm_map.ss_CamelData",
12395         FT_NONE, BASE_NONE, NULL, 0,
12396         "", HFILL }},
12397     { &hf_gsm_map_o_BcsmCamelTDP_CriteriaList,
12398       { "o-BcsmCamelTDP-CriteriaList", "gsm_map.o_BcsmCamelTDP_CriteriaList",
12399         FT_NONE, BASE_NONE, NULL, 0,
12400         "", HFILL }},
12401     { &hf_gsm_map_tif_CSI,
12402       { "tif-CSI", "gsm_map.tif_CSI",
12403         FT_NONE, BASE_NONE, NULL, 0,
12404         "", HFILL }},
12405     { &hf_gsm_map_naea_PreferredCI,
12406       { "naea-PreferredCI", "gsm_map.naea_PreferredCI",
12407         FT_NONE, BASE_NONE, NULL, 0,
12408         "", HFILL }},
12409     { &hf_gsm_map_gprsSubscriptionData,
12410       { "gprsSubscriptionData", "gsm_map.gprsSubscriptionData",
12411         FT_NONE, BASE_NONE, NULL, 0,
12412         "InsertSubscriberDataArg/gprsSubscriptionData", HFILL }},
12413     { &hf_gsm_map_completeDataListIncluded,
12414       { "completeDataListIncluded", "gsm_map.completeDataListIncluded",
12415         FT_NONE, BASE_NONE, NULL, 0,
12416         "", HFILL }},
12417     { &hf_gsm_map_gprsDataList,
12418       { "gprsDataList", "gsm_map.gprsDataList",
12419         FT_NONE, BASE_NONE, NULL, 0,
12420         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList", HFILL }},
12421     { &hf_gsm_map_gprsDataList_item,
12422       { "Item", "gsm_map.gprsDataList_item",
12423         FT_NONE, BASE_NONE, NULL, 0,
12424         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item", HFILL }},
12425     { &hf_gsm_map_pdp_ContextId,
12426       { "pdp-ContextId", "gsm_map.pdp_ContextId",
12427         FT_UINT32, BASE_DEC, NULL, 0,
12428         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/pdp-ContextId", HFILL }},
12429     { &hf_gsm_map_pdp_Type,
12430       { "pdp-Type", "gsm_map.pdp_Type",
12431         FT_BYTES, BASE_HEX, NULL, 0,
12432         "", HFILL }},
12433     { &hf_gsm_map_pdp_Address,
12434       { "pdp-Address", "gsm_map.pdp_Address",
12435         FT_BYTES, BASE_HEX, NULL, 0,
12436         "", HFILL }},
12437     { &hf_gsm_map_qos_Subscribed,
12438       { "qos-Subscribed", "gsm_map.qos_Subscribed",
12439         FT_BYTES, BASE_HEX, NULL, 0,
12440         "", HFILL }},
12441     { &hf_gsm_map_vplmnAddressAllowed,
12442       { "vplmnAddressAllowed", "gsm_map.vplmnAddressAllowed",
12443         FT_NONE, BASE_NONE, NULL, 0,
12444         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/vplmnAddressAllowed", HFILL }},
12445     { &hf_gsm_map_apn,
12446       { "apn", "gsm_map.apn",
12447         FT_BYTES, BASE_HEX, NULL, 0,
12448         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/apn", HFILL }},
12449     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature,
12450       { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsupportedFeature",
12451         FT_NONE, BASE_NONE, NULL, 0,
12452         "InsertSubscriberDataArg/roamingRestrictedInSgsnDueToUnsupportedFeature", HFILL }},
12453     { &hf_gsm_map_networkAccessMode,
12454       { "networkAccessMode", "gsm_map.networkAccessMode",
12455         FT_UINT32, BASE_DEC, VALS(gsm_map_T_networkAccessMode_vals), 0,
12456         "InsertSubscriberDataArg/networkAccessMode", HFILL }},
12457     { &hf_gsm_map_lsaInformation,
12458       { "lsaInformation", "gsm_map.lsaInformation",
12459         FT_NONE, BASE_NONE, NULL, 0,
12460         "InsertSubscriberDataArg/lsaInformation", HFILL }},
12461     { &hf_gsm_map_lsaOnlyAccessIndicator,
12462       { "lsaOnlyAccessIndicator", "gsm_map.lsaOnlyAccessIndicator",
12463         FT_UINT32, BASE_DEC, VALS(gsm_map_T_lsaOnlyAccessIndicator_vals), 0,
12464         "InsertSubscriberDataArg/lsaInformation/lsaOnlyAccessIndicator", HFILL }},
12465     { &hf_gsm_map_lsaDataList,
12466       { "lsaDataList", "gsm_map.lsaDataList",
12467         FT_NONE, BASE_NONE, NULL, 0,
12468         "InsertSubscriberDataArg/lsaInformation/lsaDataList", HFILL }},
12469     { &hf_gsm_map_lsaDataList_item,
12470       { "Item", "gsm_map.lsaDataList_item",
12471         FT_NONE, BASE_NONE, NULL, 0,
12472         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item", HFILL }},
12473     { &hf_gsm_map_lsaIdentity,
12474       { "lsaIdentity", "gsm_map.lsaIdentity",
12475         FT_BYTES, BASE_HEX, NULL, 0,
12476         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item/lsaIdentity", HFILL }},
12477     { &hf_gsm_map_lsaAttributes,
12478       { "lsaAttributes", "gsm_map.lsaAttributes",
12479         FT_BYTES, BASE_HEX, NULL, 0,
12480         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item/lsaAttributes", HFILL }},
12481     { &hf_gsm_map_lsaActiveModeIndicator,
12482       { "lsaActiveModeIndicator", "gsm_map.lsaActiveModeIndicator",
12483         FT_NONE, BASE_NONE, NULL, 0,
12484         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item/lsaActiveModeIndicator", HFILL }},
12485     { &hf_gsm_map_lmu_Indicator,
12486       { "lmu-Indicator", "gsm_map.lmu_Indicator",
12487         FT_NONE, BASE_NONE, NULL, 0,
12488         "InsertSubscriberDataArg/lmu-Indicator", HFILL }},
12489     { &hf_gsm_map_lcsInformation,
12490       { "lcsInformation", "gsm_map.lcsInformation",
12491         FT_NONE, BASE_NONE, NULL, 0,
12492         "InsertSubscriberDataArg/lcsInformation", HFILL }},
12493     { &hf_gsm_map_gmlc_List,
12494       { "gmlc-List", "gsm_map.gmlc_List",
12495         FT_NONE, BASE_NONE, NULL, 0,
12496         "InsertSubscriberDataArg/lcsInformation/gmlc-List", HFILL }},
12497     { &hf_gsm_map_gmlc_List_item,
12498       { "Item", "gsm_map.gmlc_List_item",
12499         FT_BYTES, BASE_HEX, NULL, 0,
12500         "InsertSubscriberDataArg/lcsInformation/gmlc-List/_item", HFILL }},
12501     { &hf_gsm_map_lcs_PrivacyExceptionList,
12502       { "lcs-PrivacyExceptionList", "gsm_map.lcs_PrivacyExceptionList",
12503         FT_NONE, BASE_NONE, NULL, 0,
12504         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList", HFILL }},
12505     { &hf_gsm_map_lcs_PrivacyExceptionList_item,
12506       { "Item", "gsm_map.lcs_PrivacyExceptionList_item",
12507         FT_NONE, BASE_NONE, NULL, 0,
12508         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item", HFILL }},
12509     { &hf_gsm_map_ss_Code,
12510       { "ss-Code", "gsm_map.ss_Code",
12511         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
12512         "", HFILL }},
12513     { &hf_gsm_map_ss_Status,
12514       { "ss-Status", "gsm_map.ss_Status",
12515         FT_BYTES, BASE_HEX, NULL, 0,
12516         "", HFILL }},
12517     { &hf_gsm_map_notificationToMSUser,
12518       { "notificationToMSUser", "gsm_map.notificationToMSUser",
12519         FT_UINT32, BASE_DEC, VALS(gsm_map_NotificationToMSUser_vals), 0,
12520         "", HFILL }},
12521     { &hf_gsm_map_externalClientList,
12522       { "externalClientList", "gsm_map.externalClientList",
12523         FT_NONE, BASE_NONE, NULL, 0,
12524         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList", HFILL }},
12525     { &hf_gsm_map_externalClientList_item,
12526       { "Item", "gsm_map.externalClientList_item",
12527         FT_NONE, BASE_NONE, NULL, 0,
12528         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList/_item", HFILL }},
12529     { &hf_gsm_map_clientIdentity,
12530       { "clientIdentity", "gsm_map.clientIdentity",
12531         FT_NONE, BASE_NONE, NULL, 0,
12532         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList/_item/clientIdentity", HFILL }},
12533     { &hf_gsm_map_externalAddress,
12534       { "externalAddress", "gsm_map.externalAddress",
12535         FT_BYTES, BASE_HEX, NULL, 0,
12536         "", HFILL }},
12537     { &hf_gsm_map_gmlc_Restriction,
12538       { "gmlc-Restriction", "gsm_map.gmlc_Restriction",
12539         FT_UINT32, BASE_DEC, VALS(gsm_map_T_gmlc_Restriction_vals), 0,
12540         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList/_item/gmlc-Restriction", HFILL }},
12541     { &hf_gsm_map_plmnClientList,
12542       { "plmnClientList", "gsm_map.plmnClientList",
12543         FT_NONE, BASE_NONE, NULL, 0,
12544         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/plmnClientList", HFILL }},
12545     { &hf_gsm_map_plmnClientList_item,
12546       { "Item", "gsm_map.plmnClientList_item",
12547         FT_UINT32, BASE_DEC, VALS(gsm_map_T_plmnClientList_item_vals), 0,
12548         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/plmnClientList/_item", HFILL }},
12549     { &hf_gsm_map_molr_List,
12550       { "molr-List", "gsm_map.molr_List",
12551         FT_NONE, BASE_NONE, NULL, 0,
12552         "InsertSubscriberDataArg/lcsInformation/molr-List", HFILL }},
12553     { &hf_gsm_map_molr_List_item,
12554       { "Item", "gsm_map.molr_List_item",
12555         FT_NONE, BASE_NONE, NULL, 0,
12556         "InsertSubscriberDataArg/lcsInformation/molr-List/_item", HFILL }},
12557     { &hf_gsm_map_ss_List,
12558       { "ss-List", "gsm_map.ss_List",
12559         FT_NONE, BASE_NONE, NULL, 0,
12560         "", HFILL }},
12561     { &hf_gsm_map_ss_List_item,
12562       { "Item", "gsm_map.ss_List_item",
12563         FT_BYTES, BASE_HEX, NULL, 0,
12564         "", HFILL }},
12565     { &hf_gsm_map_odb_GeneralData,
12566       { "odb-GeneralData", "gsm_map.odb_GeneralData",
12567         FT_BYTES, BASE_HEX, NULL, 0,
12568         "", HFILL }},
12569     { &hf_gsm_map_regionalSubscriptionResponse,
12570       { "regionalSubscriptionResponse", "gsm_map.regionalSubscriptionResponse",
12571         FT_UINT32, BASE_DEC, VALS(gsm_map_RegionalSubscriptionResponse_vals), 0,
12572         "", HFILL }},
12573     { &hf_gsm_map_ss_EventList,
12574       { "ss-EventList", "gsm_map.ss_EventList",
12575         FT_NONE, BASE_NONE, NULL, 0,
12576         "Ss-CamelData/ss-EventList", HFILL }},
12577     { &hf_gsm_map_ss_EventList_item,
12578       { "Item", "gsm_map.ss_EventList_item",
12579         FT_BYTES, BASE_HEX, NULL, 0,
12580         "Ss-CamelData/ss-EventList/_item", HFILL }},
12581     { &hf_gsm_map_gsmSCF_Address,
12582       { "gsmSCF-Address", "gsm_map.gsmSCF_Address",
12583         FT_BYTES, BASE_HEX, NULL, 0,
12584         "", HFILL }},
12585     { &hf_gsm_map_callBarringFeatureList,
12586       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
12587         FT_NONE, BASE_NONE, NULL, 0,
12588         "", HFILL }},
12589     { &hf_gsm_map_CallBarringFeatureList_item,
12590       { "Item", "gsm_map.CallBarringFeatureList_item",
12591         FT_NONE, BASE_NONE, NULL, 0,
12592         "CallBarringFeatureList/_item", HFILL }},
12593     { &hf_gsm_map_forwardedToNumber,
12594       { "forwardedToNumber", "gsm_map.forwardedToNumber",
12595         FT_BYTES, BASE_HEX, NULL, 0,
12596         "", HFILL }},
12597     { &hf_gsm_map_forwardedToSubaddress,
12598       { "forwardedToSubaddress", "gsm_map.forwardedToSubaddress",
12599         FT_BYTES, BASE_HEX, NULL, 0,
12600         "", HFILL }},
12601     { &hf_gsm_map_forwardingOptions,
12602       { "forwardingOptions", "gsm_map.forwardingOptions",
12603         FT_BYTES, BASE_HEX, NULL, 0,
12604         "", HFILL }},
12605     { &hf_gsm_map_noReplyConditionTime,
12606       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
12607         FT_INT32, BASE_DEC, NULL, 0,
12608         "", HFILL }},
12609     { &hf_gsm_map_longForwardedToNumber,
12610       { "longForwardedToNumber", "gsm_map.longForwardedToNumber",
12611         FT_BYTES, BASE_HEX, NULL, 0,
12612         "ForwardingFeatureList/longForwardedToNumber", HFILL }},
12613     { &hf_gsm_map_matchType,
12614       { "matchType", "gsm_map.matchType",
12615         FT_UINT32, BASE_DEC, VALS(gsm_map_MatchType_vals), 0,
12616         "DestinationNumberCriteria/matchType", HFILL }},
12617     { &hf_gsm_map_destinationNumberList,
12618       { "destinationNumberList", "gsm_map.destinationNumberList",
12619         FT_NONE, BASE_NONE, NULL, 0,
12620         "DestinationNumberCriteria/destinationNumberList", HFILL }},
12621     { &hf_gsm_map_destinationNumberList_item,
12622       { "Item", "gsm_map.destinationNumberList_item",
12623         FT_BYTES, BASE_HEX, NULL, 0,
12624         "DestinationNumberCriteria/destinationNumberList/_item", HFILL }},
12625     { &hf_gsm_map_destinationNumberLengthList,
12626       { "destinationNumberLengthList", "gsm_map.destinationNumberLengthList",
12627         FT_NONE, BASE_NONE, NULL, 0,
12628         "DestinationNumberCriteria/destinationNumberLengthList", HFILL }},
12629     { &hf_gsm_map_destinationNumberLengthList_item,
12630       { "Item", "gsm_map.destinationNumberLengthList_item",
12631         FT_UINT32, BASE_DEC, NULL, 0,
12632         "DestinationNumberCriteria/destinationNumberLengthList/_item", HFILL }},
12633     { &hf_gsm_map_forwardingFeatureList_1_32,
12634       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
12635         FT_NONE, BASE_NONE, NULL, 0,
12636         "ForwardingInfo/forwardingFeatureList", HFILL }},
12637     { &hf_gsm_map_forwardingFeatureList_item,
12638       { "Item", "gsm_map.forwardingFeatureList_item",
12639         FT_NONE, BASE_NONE, NULL, 0,
12640         "", HFILL }},
12641     { &hf_gsm_map_naea_PreferredCIC,
12642       { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC",
12643         FT_BYTES, BASE_HEX, NULL, 0,
12644         "Naea-PreferredCI/naea-PreferredCIC", HFILL }},
12645     { &hf_gsm_map_O_BcsmCamelTDP_CriteriaList_item,
12646       { "Item", "gsm_map.O_BcsmCamelTDP_CriteriaList_item",
12647         FT_NONE, BASE_NONE, NULL, 0,
12648         "O-BcsmCamelTDP-CriteriaList/_item", HFILL }},
12649     { &hf_gsm_map_o_BcsmTriggerDetectionPoint,
12650       { "o-BcsmTriggerDetectionPoint", "gsm_map.o_BcsmTriggerDetectionPoint",
12651         FT_UINT32, BASE_DEC, VALS(gsm_map_BcsmTriggerDetectionPoint_vals), 0,
12652         "", HFILL }},
12653     { &hf_gsm_map_destinationNumberCriteria,
12654       { "destinationNumberCriteria", "gsm_map.destinationNumberCriteria",
12655         FT_NONE, BASE_NONE, NULL, 0,
12656         "", HFILL }},
12657     { &hf_gsm_map_basicServiceCriteria_lst,
12658       { "basicServiceCriteria", "gsm_map.basicServiceCriteria",
12659         FT_NONE, BASE_NONE, NULL, 0,
12660         "O-BcsmCamelTDP-CriteriaList/_item/basicServiceCriteria", HFILL }},
12661     { &hf_gsm_map_callTypeCriteria,
12662       { "callTypeCriteria", "gsm_map.callTypeCriteria",
12663         FT_UINT32, BASE_DEC, VALS(gsm_map_CallTypeCriteria_vals), 0,
12664         "", HFILL }},
12665     { &hf_gsm_map_cliRestrictionOption,
12666       { "cliRestrictionOption", "gsm_map.cliRestrictionOption",
12667         FT_UINT32, BASE_DEC, VALS(gsm_map_CliRestrictionOption_vals), 0,
12668         "", HFILL }},
12669     { &hf_gsm_map_overrideCategory,
12670       { "overrideCategory", "gsm_map.overrideCategory",
12671         FT_UINT32, BASE_DEC, VALS(gsm_map_OverrideCategory_vals), 0,
12672         "Ss-SubscriptionOption/overrideCategory", HFILL }},
12673     { &hf_gsm_map_basicServiceList,
12674       { "basicServiceList", "gsm_map.basicServiceList",
12675         FT_NONE, BASE_NONE, NULL, 0,
12676         "DeleteSubscriberDataArg/basicServiceList", HFILL }},
12677     { &hf_gsm_map_regionalSubscriptionIdentifier,
12678       { "regionalSubscriptionIdentifier", "gsm_map.regionalSubscriptionIdentifier",
12679         FT_BYTES, BASE_HEX, NULL, 0,
12680         "DeleteSubscriberDataArg/regionalSubscriptionIdentifier", HFILL }},
12681     { &hf_gsm_map_vbsGroupIndication,
12682       { "vbsGroupIndication", "gsm_map.vbsGroupIndication",
12683         FT_NONE, BASE_NONE, NULL, 0,
12684         "DeleteSubscriberDataArg/vbsGroupIndication", HFILL }},
12685     { &hf_gsm_map_vgcsGroupIndication,
12686       { "vgcsGroupIndication", "gsm_map.vgcsGroupIndication",
12687         FT_NONE, BASE_NONE, NULL, 0,
12688         "DeleteSubscriberDataArg/vgcsGroupIndication", HFILL }},
12689     { &hf_gsm_map_camelSubscriptionInfoWithdraw,
12690       { "camelSubscriptionInfoWithdraw", "gsm_map.camelSubscriptionInfoWithdraw",
12691         FT_NONE, BASE_NONE, NULL, 0,
12692         "DeleteSubscriberDataArg/camelSubscriptionInfoWithdraw", HFILL }},
12693     { &hf_gsm_map_gprsSubscriptionDataWithdraw,
12694       { "gprsSubscriptionDataWithdraw", "gsm_map.gprsSubscriptionDataWithdraw",
12695         FT_UINT32, BASE_DEC, VALS(gsm_map_T_gprsSubscriptionDataWithdraw_vals), 0,
12696         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw", HFILL }},
12697     { &hf_gsm_map_allGPRSData,
12698       { "allGPRSData", "gsm_map.allGPRSData",
12699         FT_NONE, BASE_NONE, NULL, 0,
12700         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw/allGPRSData", HFILL }},
12701     { &hf_gsm_map_contextIdList,
12702       { "contextIdList", "gsm_map.contextIdList",
12703         FT_NONE, BASE_NONE, NULL, 0,
12704         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw/contextIdList", HFILL }},
12705     { &hf_gsm_map_contextIdList_item,
12706       { "Item", "gsm_map.contextIdList_item",
12707         FT_UINT32, BASE_DEC, NULL, 0,
12708         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw/contextIdList/_item", HFILL }},
12709     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature,
12710       { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsuppportedFeature",
12711         FT_NONE, BASE_NONE, NULL, 0,
12712         "DeleteSubscriberDataArg/roamingRestrictedInSgsnDueToUnsuppportedFeature", HFILL }},
12713     { &hf_gsm_map_lsaInformationWithdraw,
12714       { "lsaInformationWithdraw", "gsm_map.lsaInformationWithdraw",
12715         FT_UINT32, BASE_DEC, VALS(gsm_map_T_lsaInformationWithdraw_vals), 0,
12716         "DeleteSubscriberDataArg/lsaInformationWithdraw", HFILL }},
12717     { &hf_gsm_map_allLSAData,
12718       { "allLSAData", "gsm_map.allLSAData",
12719         FT_NONE, BASE_NONE, NULL, 0,
12720         "DeleteSubscriberDataArg/lsaInformationWithdraw/allLSAData", HFILL }},
12721     { &hf_gsm_map_lsaIdentityList,
12722       { "lsaIdentityList", "gsm_map.lsaIdentityList",
12723         FT_NONE, BASE_NONE, NULL, 0,
12724         "DeleteSubscriberDataArg/lsaInformationWithdraw/lsaIdentityList", HFILL }},
12725     { &hf_gsm_map_lsaIdentityList_item,
12726       { "Item", "gsm_map.lsaIdentityList_item",
12727         FT_BYTES, BASE_HEX, NULL, 0,
12728         "DeleteSubscriberDataArg/lsaInformationWithdraw/lsaIdentityList/_item", HFILL }},
12729     { &hf_gsm_map_gmlc_ListWithdraw,
12730       { "gmlc-ListWithdraw", "gsm_map.gmlc_ListWithdraw",
12731         FT_NONE, BASE_NONE, NULL, 0,
12732         "DeleteSubscriberDataArg/gmlc-ListWithdraw", HFILL }},
12733     { &hf_gsm_map_hlr_List,
12734       { "hlr-List", "gsm_map.hlr_List",
12735         FT_NONE, BASE_NONE, NULL, 0,
12736         "ResetArg/hlr-List", HFILL }},
12737     { &hf_gsm_map_hlr_List_item,
12738       { "Item", "gsm_map.hlr_List_item",
12739         FT_BYTES, BASE_HEX, NULL, 0,
12740         "ResetArg/hlr-List/_item", HFILL }},
12741     { &hf_gsm_map_msNotReachable,
12742       { "msNotReachable", "gsm_map.msNotReachable",
12743         FT_NONE, BASE_NONE, NULL, 0,
12744         "RestoreDataRes/msNotReachable", HFILL }},
12745     { &hf_gsm_map_traceReference,
12746       { "traceReference", "gsm_map.traceReference",
12747         FT_BYTES, BASE_HEX, NULL, 0,
12748         "", HFILL }},
12749     { &hf_gsm_map_traceType,
12750       { "traceType", "gsm_map.traceType",
12751         FT_UINT32, BASE_DEC, NULL, 0,
12752         "ActivateTraceModeArg/traceType", HFILL }},
12753     { &hf_gsm_map_omc_Id,
12754       { "omc-Id", "gsm_map.omc_Id",
12755         FT_BYTES, BASE_HEX, NULL, 0,
12756         "ActivateTraceModeArg/omc-Id", HFILL }},
12757     { &hf_gsm_map_cug_CheckInfo,
12758       { "cug-CheckInfo", "gsm_map.cug_CheckInfo",
12759         FT_NONE, BASE_NONE, NULL, 0,
12760         "", HFILL }},
12761     { &hf_gsm_map_numberOfForwarding,
12762       { "numberOfForwarding", "gsm_map.numberOfForwarding",
12763         FT_UINT32, BASE_DEC, NULL, 0,
12764         "SendRoutingInfoArg/numberOfForwarding", HFILL }},
12765     { &hf_gsm_map_interrogationType,
12766       { "interrogationType", "gsm_map.interrogationType",
12767         FT_UINT32, BASE_DEC, VALS(gsm_map_T_interrogationType_vals), 0,
12768         "SendRoutingInfoArg/interrogationType", HFILL }},
12769     { &hf_gsm_map_or_Interrogation,
12770       { "or-Interrogation", "gsm_map.or_Interrogation",
12771         FT_NONE, BASE_NONE, NULL, 0,
12772         "", HFILL }},
12773     { &hf_gsm_map_or_Capability,
12774       { "or-Capability", "gsm_map.or_Capability",
12775         FT_UINT32, BASE_DEC, NULL, 0,
12776         "SendRoutingInfoArg/or-Capability", HFILL }},
12777     { &hf_gsm_map_gmsc_Address,
12778       { "gmsc-Address", "gsm_map.gmsc_Address",
12779         FT_BYTES, BASE_HEX, NULL, 0,
12780         "", HFILL }},
12781     { &hf_gsm_map_callReferenceNumber,
12782       { "callReferenceNumber", "gsm_map.callReferenceNumber",
12783         FT_BYTES, BASE_HEX, NULL, 0,
12784         "", HFILL }},
12785     { &hf_gsm_map_forwardingReason,
12786       { "forwardingReason", "gsm_map.forwardingReason",
12787         FT_UINT32, BASE_DEC, VALS(gsm_map_T_forwardingReason_vals), 0,
12788         "SendRoutingInfoArg/forwardingReason", HFILL }},
12789     { &hf_gsm_map_basicServiceGroup,
12790       { "basicServiceGroup", "gsm_map.basicServiceGroup",
12791         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_vals), 0,
12792         "", HFILL }},
12793     { &hf_gsm_map_networkSignalInfo,
12794       { "networkSignalInfo", "gsm_map.networkSignalInfo",
12795         FT_NONE, BASE_NONE, NULL, 0,
12796         "", HFILL }},
12797     { &hf_gsm_map_camelInfo,
12798       { "camelInfo", "gsm_map.camelInfo",
12799         FT_NONE, BASE_NONE, NULL, 0,
12800         "SendRoutingInfoArg/camelInfo", HFILL }},
12801     { &hf_gsm_map_suppress_T_CSI,
12802       { "suppress-T-CSI", "gsm_map.suppress_T_CSI",
12803         FT_NONE, BASE_NONE, NULL, 0,
12804         "SendRoutingInfoArg/camelInfo/suppress-T-CSI", HFILL }},
12805     { &hf_gsm_map_suppressionOfAnnouncement,
12806       { "suppressionOfAnnouncement", "gsm_map.suppressionOfAnnouncement",
12807         FT_NONE, BASE_NONE, NULL, 0,
12808         "", HFILL }},
12809     { &hf_gsm_map_alertingPattern,
12810       { "alertingPattern", "gsm_map.alertingPattern",
12811         FT_BYTES, BASE_HEX, NULL, 0,
12812         "", HFILL }},
12813     { &hf_gsm_map_ccbs_Call,
12814       { "ccbs-Call", "gsm_map.ccbs_Call",
12815         FT_NONE, BASE_NONE, NULL, 0,
12816         "", HFILL }},
12817     { &hf_gsm_map_supportedCCBS_Phase,
12818       { "supportedCCBS-Phase", "gsm_map.supportedCCBS_Phase",
12819         FT_UINT32, BASE_DEC, NULL, 0,
12820         "SendRoutingInfoArg/supportedCCBS-Phase", HFILL }},
12821     { &hf_gsm_map_additionalSignalInfo,
12822       { "additionalSignalInfo", "gsm_map.additionalSignalInfo",
12823         FT_NONE, BASE_NONE, NULL, 0,
12824         "", HFILL }},
12825     { &hf_gsm_map_extendedRoutingInfo,
12826       { "extendedRoutingInfo", "gsm_map.extendedRoutingInfo",
12827         FT_UINT32, BASE_DEC, VALS(gsm_map_T_extendedRoutingInfo_vals), 0,
12828         "SendRoutingInfoRes/extendedRoutingInfo", HFILL }},
12829     { &hf_gsm_map_routingInfo,
12830       { "routingInfo", "gsm_map.routingInfo",
12831         FT_UINT32, BASE_DEC, VALS(gsm_map_T_routingInfo_vals), 0,
12832         "SendRoutingInfoRes/extendedRoutingInfo/routingInfo", HFILL }},
12833     { &hf_gsm_map_roamingNumber,
12834       { "roamingNumber", "gsm_map.roamingNumber",
12835         FT_BYTES, BASE_HEX, NULL, 0,
12836         "", HFILL }},
12837     { &hf_gsm_map_forwardingData,
12838       { "forwardingData", "gsm_map.forwardingData",
12839         FT_NONE, BASE_NONE, NULL, 0,
12840         "", HFILL }},
12841     { &hf_gsm_map_camelRoutingInfo,
12842       { "camelRoutingInfo", "gsm_map.camelRoutingInfo",
12843         FT_NONE, BASE_NONE, NULL, 0,
12844         "SendRoutingInfoRes/extendedRoutingInfo/camelRoutingInfo", HFILL }},
12845     { &hf_gsm_map_gmscCamelSubscriptionInfo,
12846       { "gmscCamelSubscriptionInfo", "gsm_map.gmscCamelSubscriptionInfo",
12847         FT_NONE, BASE_NONE, NULL, 0,
12848         "SendRoutingInfoRes/extendedRoutingInfo/camelRoutingInfo/gmscCamelSubscriptionInfo", HFILL }},
12849     { &hf_gsm_map_t_CSI,
12850       { "t-CSI", "gsm_map.t_CSI",
12851         FT_NONE, BASE_NONE, NULL, 0,
12852         "", HFILL }},
12853     { &hf_gsm_map_t_BcsmCamelTDPDataList,
12854       { "t-BcsmCamelTDPDataList", "gsm_map.t_BcsmCamelTDPDataList",
12855         FT_NONE, BASE_NONE, NULL, 0,
12856         "", HFILL }},
12857     { &hf_gsm_map_cugSubscriptionFlag,
12858       { "cugSubscriptionFlag", "gsm_map.cugSubscriptionFlag",
12859         FT_NONE, BASE_NONE, NULL, 0,
12860         "SendRoutingInfoRes/cugSubscriptionFlag", HFILL }},
12861     { &hf_gsm_map_subscriberInfo,
12862       { "subscriberInfo", "gsm_map.subscriberInfo",
12863         FT_NONE, BASE_NONE, NULL, 0,
12864         "", HFILL }},
12865     { &hf_gsm_map_forwardingInterrogationRequired,
12866       { "forwardingInterrogationRequired", "gsm_map.forwardingInterrogationRequired",
12867         FT_NONE, BASE_NONE, NULL, 0,
12868         "SendRoutingInfoRes/forwardingInterrogationRequired", HFILL }},
12869     { &hf_gsm_map_vmsc_Address,
12870       { "vmsc-Address", "gsm_map.vmsc_Address",
12871         FT_BYTES, BASE_HEX, NULL, 0,
12872         "SendRoutingInfoRes/vmsc-Address", HFILL }},
12873     { &hf_gsm_map_ccbs_Indicators,
12874       { "ccbs-Indicators", "gsm_map.ccbs_Indicators",
12875         FT_NONE, BASE_NONE, NULL, 0,
12876         "SendRoutingInfoRes/ccbs-Indicators", HFILL }},
12877     { &hf_gsm_map_ccbs_Possible,
12878       { "ccbs-Possible", "gsm_map.ccbs_Possible",
12879         FT_NONE, BASE_NONE, NULL, 0,
12880         "", HFILL }},
12881     { &hf_gsm_map_keepCCBS_CallIndicator,
12882       { "keepCCBS-CallIndicator", "gsm_map.keepCCBS_CallIndicator",
12883         FT_NONE, BASE_NONE, NULL, 0,
12884         "SendRoutingInfoRes/ccbs-Indicators/keepCCBS-CallIndicator", HFILL }},
12885     { &hf_gsm_map_numberPortabilityStatus,
12886       { "numberPortabilityStatus", "gsm_map.numberPortabilityStatus",
12887         FT_UINT32, BASE_DEC, VALS(gsm_map_NumberPortabilityStatus_vals), 0,
12888         "", HFILL }},
12889     { &hf_gsm_map_assumedIdle,
12890       { "assumedIdle", "gsm_map.assumedIdle",
12891         FT_NONE, BASE_NONE, NULL, 0,
12892         "SubscriberState/assumedIdle", HFILL }},
12893     { &hf_gsm_map_camelBusy,
12894       { "camelBusy", "gsm_map.camelBusy",
12895         FT_NONE, BASE_NONE, NULL, 0,
12896         "SubscriberState/camelBusy", HFILL }},
12897     { &hf_gsm_map_notProvidedFromVLR,
12898       { "notProvidedFromVLR", "gsm_map.notProvidedFromVLR",
12899         FT_NONE, BASE_NONE, NULL, 0,
12900         "SubscriberState/notProvidedFromVLR", HFILL }},
12901     { &hf_gsm_map_ageOfLocationInformation,
12902       { "ageOfLocationInformation", "gsm_map.ageOfLocationInformation",
12903         FT_UINT32, BASE_DEC, NULL, 0,
12904         "", HFILL }},
12905     { &hf_gsm_map_geographicalInformation,
12906       { "geographicalInformation", "gsm_map.geographicalInformation",
12907         FT_BYTES, BASE_HEX, NULL, 0,
12908         "", HFILL }},
12909     { &hf_gsm_map_vlr_number,
12910       { "vlr-number", "gsm_map.vlr_number",
12911         FT_BYTES, BASE_HEX, NULL, 0,
12912         "LocationInformation/vlr-number", HFILL }},
12913     { &hf_gsm_map_locationNumber,
12914       { "locationNumber", "gsm_map.locationNumber",
12915         FT_BYTES, BASE_HEX, NULL, 0,
12916         "LocationInformation/locationNumber", HFILL }},
12917     { &hf_gsm_map_cellIdOrLAI,
12918       { "cellIdOrLAI", "gsm_map.cellIdOrLAI",
12919         FT_UINT32, BASE_DEC, VALS(gsm_map_T_cellIdOrLAI_vals), 0,
12920         "LocationInformation/cellIdOrLAI", HFILL }},
12921     { &hf_gsm_map_cellIdFixedLength,
12922       { "cellIdFixedLength", "gsm_map.cellIdFixedLength",
12923         FT_BYTES, BASE_HEX, NULL, 0,
12924         "LocationInformation/cellIdOrLAI/cellIdFixedLength", HFILL }},
12925     { &hf_gsm_map_laiFixedLength,
12926       { "laiFixedLength", "gsm_map.laiFixedLength",
12927         FT_BYTES, BASE_HEX, NULL, 0,
12928         "", HFILL }},
12929     { &hf_gsm_map_selectedLSA_Id,
12930       { "selectedLSA-Id", "gsm_map.selectedLSA_Id",
12931         FT_BYTES, BASE_HEX, NULL, 0,
12932         "LocationInformation/selectedLSA-Id", HFILL }},
12933     { &hf_gsm_map_geodeticInformation,
12934       { "geodeticInformation", "gsm_map.geodeticInformation",
12935         FT_BYTES, BASE_HEX, NULL, 0,
12936         "", HFILL }},
12937     { &hf_gsm_map_currentLocationRetrieved,
12938       { "currentLocationRetrieved", "gsm_map.currentLocationRetrieved",
12939         FT_NONE, BASE_NONE, NULL, 0,
12940         "", HFILL }},
12941     { &hf_gsm_map_sai_Present,
12942       { "sai-Present", "gsm_map.sai_Present",
12943         FT_NONE, BASE_NONE, NULL, 0,
12944         "", HFILL }},
12945     { &hf_gsm_map_locationInformation,
12946       { "locationInformation", "gsm_map.locationInformation",
12947         FT_NONE, BASE_NONE, NULL, 0,
12948         "SubscriberInfo/locationInformation", HFILL }},
12949     { &hf_gsm_map_subscriberState,
12950       { "subscriberState", "gsm_map.subscriberState",
12951         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberState_vals), 0,
12952         "SubscriberInfo/subscriberState", HFILL }},
12953     { &hf_gsm_map_locationInformationGPRS,
12954       { "locationInformationGPRS", "gsm_map.locationInformationGPRS",
12955         FT_NONE, BASE_NONE, NULL, 0,
12956         "SubscriberInfo/locationInformationGPRS", HFILL }},
12957     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdOrLAI,
12958       { "cellGlobalIdOrServiceAreaIdOrLAI", "gsm_map.cellGlobalIdOrServiceAreaIdOrLAI",
12959         FT_UINT32, BASE_DEC, VALS(gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
12960         "SubscriberInfo/locationInformationGPRS/cellGlobalIdOrServiceAreaIdOrLAI", HFILL }},
12961     { &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength,
12962       { "cellGlobalIdOrServiceAreaIdFixedLength", "gsm_map.cellGlobalIdOrServiceAreaIdFixedLength",
12963         FT_BYTES, BASE_HEX, NULL, 0,
12964         "SubscriberInfo/locationInformationGPRS/cellGlobalIdOrServiceAreaIdOrLAI/cellGlobalIdOrServiceAreaIdFixedLength", HFILL }},
12965     { &hf_gsm_map_routeingAreaIdentity,
12966       { "routeingAreaIdentity", "gsm_map.routeingAreaIdentity",
12967         FT_BYTES, BASE_HEX, NULL, 0,
12968         "SubscriberInfo/locationInformationGPRS/routeingAreaIdentity", HFILL }},
12969     { &hf_gsm_map_selectedLSAIdentity,
12970       { "selectedLSAIdentity", "gsm_map.selectedLSAIdentity",
12971         FT_BYTES, BASE_HEX, NULL, 0,
12972         "SubscriberInfo/locationInformationGPRS/selectedLSAIdentity", HFILL }},
12973     { &hf_gsm_map_ps_SubscriberState,
12974       { "ps-SubscriberState", "gsm_map.ps_SubscriberState",
12975         FT_UINT32, BASE_DEC, VALS(gsm_map_T_ps_SubscriberState_vals), 0,
12976         "SubscriberInfo/ps-SubscriberState", HFILL }},
12977     { &hf_gsm_map_notProvidedFromSGSN,
12978       { "notProvidedFromSGSN", "gsm_map.notProvidedFromSGSN",
12979         FT_NONE, BASE_NONE, NULL, 0,
12980         "SubscriberInfo/ps-SubscriberState/notProvidedFromSGSN", HFILL }},
12981     { &hf_gsm_map_ps_Detached,
12982       { "ps-Detached", "gsm_map.ps_Detached",
12983         FT_NONE, BASE_NONE, NULL, 0,
12984         "SubscriberInfo/ps-SubscriberState/ps-Detached", HFILL }},
12985     { &hf_gsm_map_ps_AttachedNotReachableForPaging,
12986       { "ps-AttachedNotReachableForPaging", "gsm_map.ps_AttachedNotReachableForPaging",
12987         FT_NONE, BASE_NONE, NULL, 0,
12988         "SubscriberInfo/ps-SubscriberState/ps-AttachedNotReachableForPaging", HFILL }},
12989     { &hf_gsm_map_ps_AttachedReachableForPaging,
12990       { "ps-AttachedReachableForPaging", "gsm_map.ps_AttachedReachableForPaging",
12991         FT_NONE, BASE_NONE, NULL, 0,
12992         "SubscriberInfo/ps-SubscriberState/ps-AttachedReachableForPaging", HFILL }},
12993     { &hf_gsm_map_ps_PDP_ActiveNotReachableForPaging,
12994       { "ps-PDP-ActiveNotReachableForPaging", "gsm_map.ps_PDP_ActiveNotReachableForPaging",
12995         FT_NONE, BASE_NONE, NULL, 0,
12996         "SubscriberInfo/ps-SubscriberState/ps-PDP-ActiveNotReachableForPaging", HFILL }},
12997     { &hf_gsm_map_ps_PDP_ActiveNotReachableForPaging_item,
12998       { "Item", "gsm_map.ps_PDP_ActiveNotReachableForPaging_item",
12999         FT_NONE, BASE_NONE, NULL, 0,
13000         "SubscriberInfo/ps-SubscriberState/ps-PDP-ActiveNotReachableForPaging/_item", HFILL }},
13001     { &hf_gsm_map_pdp_ContextIdentifier,
13002       { "pdp-ContextIdentifier", "gsm_map.pdp_ContextIdentifier",
13003         FT_UINT32, BASE_DEC, NULL, 0,
13004         "", HFILL }},
13005     { &hf_gsm_map_pdp_ContextActive,
13006       { "pdp-ContextActive", "gsm_map.pdp_ContextActive",
13007         FT_NONE, BASE_NONE, NULL, 0,
13008         "", HFILL }},
13009     { &hf_gsm_map_apn_Subscribed,
13010       { "apn-Subscribed", "gsm_map.apn_Subscribed",
13011         FT_BYTES, BASE_HEX, NULL, 0,
13012         "", HFILL }},
13013     { &hf_gsm_map_apn_InUse,
13014       { "apn-InUse", "gsm_map.apn_InUse",
13015         FT_BYTES, BASE_HEX, NULL, 0,
13016         "", HFILL }},
13017     { &hf_gsm_map_nsapi,
13018       { "nsapi", "gsm_map.nsapi",
13019         FT_UINT32, BASE_DEC, NULL, 0,
13020         "", HFILL }},
13021     { &hf_gsm_map_transactionId,
13022       { "transactionId", "gsm_map.transactionId",
13023         FT_BYTES, BASE_HEX, NULL, 0,
13024         "", HFILL }},
13025     { &hf_gsm_map_teid_ForGnAndGp,
13026       { "teid-ForGnAndGp", "gsm_map.teid_ForGnAndGp",
13027         FT_BYTES, BASE_HEX, NULL, 0,
13028         "", HFILL }},
13029     { &hf_gsm_map_teid_ForIu,
13030       { "teid-ForIu", "gsm_map.teid_ForIu",
13031         FT_BYTES, BASE_HEX, NULL, 0,
13032         "", HFILL }},
13033     { &hf_gsm_map_ggsn_Address,
13034       { "ggsn-Address", "gsm_map.ggsn_Address",
13035         FT_BYTES, BASE_HEX, NULL, 0,
13036         "", HFILL }},
13037     { &hf_gsm_map_qos_Requested,
13038       { "qos-Requested", "gsm_map.qos_Requested",
13039         FT_BYTES, BASE_HEX, NULL, 0,
13040         "", HFILL }},
13041     { &hf_gsm_map_qos_Negotiated,
13042       { "qos-Negotiated", "gsm_map.qos_Negotiated",
13043         FT_BYTES, BASE_HEX, NULL, 0,
13044         "", HFILL }},
13045     { &hf_gsm_map_chargingId,
13046       { "chargingId", "gsm_map.chargingId",
13047         FT_BYTES, BASE_HEX, NULL, 0,
13048         "", HFILL }},
13049     { &hf_gsm_map_chargingCharacteristics,
13050       { "chargingCharacteristics", "gsm_map.chargingCharacteristics",
13051         FT_BYTES, BASE_HEX, NULL, 0,
13052         "", HFILL }},
13053     { &hf_gsm_map_rnc_Address,
13054       { "rnc-Address", "gsm_map.rnc_Address",
13055         FT_BYTES, BASE_HEX, NULL, 0,
13056         "", HFILL }},
13057     { &hf_gsm_map_qos2_Subscribed,
13058       { "qos2-Subscribed", "gsm_map.qos2_Subscribed",
13059         FT_BYTES, BASE_HEX, NULL, 0,
13060         "", HFILL }},
13061     { &hf_gsm_map_qos2_Requested,
13062       { "qos2-Requested", "gsm_map.qos2_Requested",
13063         FT_BYTES, BASE_HEX, NULL, 0,
13064         "", HFILL }},
13065     { &hf_gsm_map_qos2_Negotiated,
13066       { "qos2-Negotiated", "gsm_map.qos2_Negotiated",
13067         FT_BYTES, BASE_HEX, NULL, 0,
13068         "", HFILL }},
13069     { &hf_gsm_map_ps_PDP_ActiveReachableForPaging,
13070       { "ps-PDP-ActiveReachableForPaging", "gsm_map.ps_PDP_ActiveReachableForPaging",
13071         FT_NONE, BASE_NONE, NULL, 0,
13072         "SubscriberInfo/ps-SubscriberState/ps-PDP-ActiveReachableForPaging", HFILL }},
13073     { &hf_gsm_map_ps_PDP_ActiveReachableForPaging_item,
13074       { "Item", "gsm_map.ps_PDP_ActiveReachableForPaging_item",
13075         FT_NONE, BASE_NONE, NULL, 0,
13076         "SubscriberInfo/ps-SubscriberState/ps-PDP-ActiveReachableForPaging/_item", HFILL }},
13077     { &hf_gsm_map_netDetNotReachable,
13078       { "netDetNotReachable", "gsm_map.netDetNotReachable",
13079         FT_UINT32, BASE_DEC, VALS(gsm_map_T_netDetNotReachable_vals), 0,
13080         "SubscriberInfo/ps-SubscriberState/netDetNotReachable", HFILL }},
13081     { &hf_gsm_map_ms_Classmark2,
13082       { "ms-Classmark2", "gsm_map.ms_Classmark2",
13083         FT_BYTES, BASE_HEX, NULL, 0,
13084         "SubscriberInfo/ms-Classmark2", HFILL }},
13085     { &hf_gsm_map_gprs_MS_Class,
13086       { "gprs-MS-Class", "gsm_map.gprs_MS_Class",
13087         FT_NONE, BASE_NONE, NULL, 0,
13088         "SubscriberInfo/gprs-MS-Class", HFILL }},
13089     { &hf_gsm_map_mSNetworkCapability,
13090       { "mSNetworkCapability", "gsm_map.mSNetworkCapability",
13091         FT_BYTES, BASE_HEX, NULL, 0,
13092         "SubscriberInfo/gprs-MS-Class/mSNetworkCapability", HFILL }},
13093     { &hf_gsm_map_mSRadioAccessCapability,
13094       { "mSRadioAccessCapability", "gsm_map.mSRadioAccessCapability",
13095         FT_BYTES, BASE_HEX, NULL, 0,
13096         "SubscriberInfo/gprs-MS-Class/mSRadioAccessCapability", HFILL }},
13097     { &hf_gsm_map_mnpInfoRes,
13098       { "mnpInfoRes", "gsm_map.mnpInfoRes",
13099         FT_NONE, BASE_NONE, NULL, 0,
13100         "SubscriberInfo/mnpInfoRes", HFILL }},
13101     { &hf_gsm_map_routeingNumber,
13102       { "routeingNumber", "gsm_map.routeingNumber",
13103         FT_BYTES, BASE_HEX, NULL, 0,
13104         "SubscriberInfo/mnpInfoRes/routeingNumber", HFILL }},
13105     { &hf_gsm_map_ext_ProtocolId,
13106       { "ext-ProtocolId", "gsm_map.ext_ProtocolId",
13107         FT_UINT32, BASE_DEC, VALS(gsm_map_T_ext_ProtocolId_vals), 0,
13108         "AdditionalSignalInfo/ext-ProtocolId", HFILL }},
13109     { &hf_gsm_map_ext_signalInfo,
13110       { "signalInfo", "gsm_map.signalInfo",
13111         FT_BYTES, BASE_HEX, NULL, 0,
13112         "AdditionalSignalInfo/signalInfo", HFILL }},
13113     { &hf_gsm_map_cug_OutgoingAccess,
13114       { "cug-OutgoingAccess", "gsm_map.cug_OutgoingAccess",
13115         FT_NONE, BASE_NONE, NULL, 0,
13116         "Cug-CheckInfo/cug-OutgoingAccess", HFILL }},
13117     { &hf_gsm_map_gsm_BearerCapability,
13118       { "gsm-BearerCapability", "gsm_map.gsm_BearerCapability",
13119         FT_NONE, BASE_NONE, NULL, 0,
13120         "", HFILL }},
13121     { &hf_gsm_map_supportedCamelPhasesInGMSC,
13122       { "supportedCamelPhasesInGMSC", "gsm_map.supportedCamelPhasesInGMSC",
13123         FT_BYTES, BASE_HEX, NULL, 0,
13124         "ProvideRoamingNumberArg/supportedCamelPhasesInGMSC", HFILL }},
13125     { &hf_gsm_map_orNotSupportedInGMSC,
13126       { "orNotSupportedInGMSC", "gsm_map.orNotSupportedInGMSC",
13127         FT_NONE, BASE_NONE, NULL, 0,
13128         "ProvideRoamingNumberArg/orNotSupportedInGMSC", HFILL }},
13129     { &hf_gsm_map_uu_Data,
13130       { "uu-Data", "gsm_map.uu_Data",
13131         FT_NONE, BASE_NONE, NULL, 0,
13132         "ResumeCallHandlingArg/uu-Data", HFILL }},
13133     { &hf_gsm_map_uuIndicator,
13134       { "uuIndicator", "gsm_map.uuIndicator",
13135         FT_BYTES, BASE_HEX, NULL, 0,
13136         "ResumeCallHandlingArg/uu-Data/uuIndicator", HFILL }},
13137     { &hf_gsm_map_uui,
13138       { "uui", "gsm_map.uui",
13139         FT_BYTES, BASE_HEX, NULL, 0,
13140         "ResumeCallHandlingArg/uu-Data/uui", HFILL }},
13141     { &hf_gsm_map_uusCFInteraction,
13142       { "uusCFInteraction", "gsm_map.uusCFInteraction",
13143         FT_NONE, BASE_NONE, NULL, 0,
13144         "ResumeCallHandlingArg/uu-Data/uusCFInteraction", HFILL }},
13145     { &hf_gsm_map_allInformationSent,
13146       { "allInformationSent", "gsm_map.allInformationSent",
13147         FT_NONE, BASE_NONE, NULL, 0,
13148         "ResumeCallHandlingArg/allInformationSent", HFILL }},
13149     { &hf_gsm_map_isdn_BearerCapability,
13150       { "isdn-BearerCapability", "gsm_map.isdn_BearerCapability",
13151         FT_NONE, BASE_NONE, NULL, 0,
13152         "ProvideSIWFSNumberArg/isdn-BearerCapability", HFILL }},
13153     { &hf_gsm_map_call_Direction,
13154       { "call-Direction", "gsm_map.call_Direction",
13155         FT_BYTES, BASE_HEX, NULL, 0,
13156         "ProvideSIWFSNumberArg/call-Direction", HFILL }},
13157     { &hf_gsm_map_b_Subscriber_Address,
13158       { "b-Subscriber-Address", "gsm_map.b_Subscriber_Address",
13159         FT_BYTES, BASE_HEX, NULL, 0,
13160         "ProvideSIWFSNumberArg/b-Subscriber-Address", HFILL }},
13161     { &hf_gsm_map_chosenChannel,
13162       { "chosenChannel", "gsm_map.chosenChannel",
13163         FT_NONE, BASE_NONE, NULL, 0,
13164         "", HFILL }},
13165     { &hf_gsm_map_lowerLayerCompatibility,
13166       { "lowerLayerCompatibility", "gsm_map.lowerLayerCompatibility",
13167         FT_NONE, BASE_NONE, NULL, 0,
13168         "ProvideSIWFSNumberArg/lowerLayerCompatibility", HFILL }},
13169     { &hf_gsm_map_highLayerCompatibility,
13170       { "highLayerCompatibility", "gsm_map.highLayerCompatibility",
13171         FT_NONE, BASE_NONE, NULL, 0,
13172         "ProvideSIWFSNumberArg/highLayerCompatibility", HFILL }},
13173     { &hf_gsm_map_sIWFSNumber,
13174       { "sIWFSNumber", "gsm_map.sIWFSNumber",
13175         FT_BYTES, BASE_HEX, NULL, 0,
13176         "ProvideSIWFSNumberRes/sIWFSNumber", HFILL }},
13177     { &hf_gsm_map_channelType,
13178       { "channelType", "gsm_map.channelType",
13179         FT_NONE, BASE_NONE, NULL, 0,
13180         "SIWFSSignallingModifyArg/channelType", HFILL }},
13181     { &hf_gsm_map_ccbs_Monitoring,
13182       { "ccbs-Monitoring", "gsm_map.ccbs_Monitoring",
13183         FT_UINT32, BASE_DEC, VALS(gsm_map_Ccbs_Monitoring_vals), 0,
13184         "SetReportingStateArg/ccbs-Monitoring", HFILL }},
13185     { &hf_gsm_map_ccbs_SubscriberStatus,
13186       { "ccbs-SubscriberStatus", "gsm_map.ccbs_SubscriberStatus",
13187         FT_UINT32, BASE_DEC, VALS(gsm_map_Ccbs_SubscriberStatus_vals), 0,
13188         "", HFILL }},
13189     { &hf_gsm_map_eventReportData,
13190       { "eventReportData", "gsm_map.eventReportData",
13191         FT_NONE, BASE_NONE, NULL, 0,
13192         "StatusReportArg/eventReportData", HFILL }},
13193     { &hf_gsm_map_callReportdata,
13194       { "callReportdata", "gsm_map.callReportdata",
13195         FT_NONE, BASE_NONE, NULL, 0,
13196         "StatusReportArg/callReportdata", HFILL }},
13197     { &hf_gsm_map_monitoringMode,
13198       { "monitoringMode", "gsm_map.monitoringMode",
13199         FT_UINT32, BASE_DEC, VALS(gsm_map_MonitoringMode_vals), 0,
13200         "StatusReportArg/callReportdata/monitoringMode", HFILL }},
13201     { &hf_gsm_map_callOutcome,
13202       { "callOutcome", "gsm_map.callOutcome",
13203         FT_UINT32, BASE_DEC, VALS(gsm_map_CallOutcome_vals), 0,
13204         "StatusReportArg/callReportdata/callOutcome", HFILL }},
13205     { &hf_gsm_map_callInfo,
13206       { "callInfo", "gsm_map.callInfo",
13207         FT_NONE, BASE_NONE, NULL, 0,
13208         "", HFILL }},
13209     { &hf_gsm_map_ccbs_Feature,
13210       { "ccbs-Feature", "gsm_map.ccbs_Feature",
13211         FT_NONE, BASE_NONE, NULL, 0,
13212         "", HFILL }},
13213     { &hf_gsm_map_translatedB_Number,
13214       { "translatedB-Number", "gsm_map.translatedB_Number",
13215         FT_BYTES, BASE_HEX, NULL, 0,
13216         "", HFILL }},
13217     { &hf_gsm_map_replaceB_Number,
13218       { "replaceB-Number", "gsm_map.replaceB_Number",
13219         FT_NONE, BASE_NONE, NULL, 0,
13220         "RemoteUserFreeArg/replaceB-Number", HFILL }},
13221     { &hf_gsm_map_ruf_Outcome,
13222       { "ruf-Outcome", "gsm_map.ruf_Outcome",
13223         FT_UINT32, BASE_DEC, VALS(gsm_map_Ruf_Outcome_vals), 0,
13224         "RemoteUserFreeRes/ruf-Outcome", HFILL }},
13225     { &hf_gsm_map_ss_SubscriptionOption,
13226       { "ss-SubscriptionOption", "gsm_map.ss_SubscriptionOption",
13227         FT_UINT32, BASE_DEC, VALS(gsm_map_Ss_SubscriptionOption_vals), 0,
13228         "Ss-Data/ss-SubscriptionOption", HFILL }},
13229     { &hf_gsm_map_ccbs_Index,
13230       { "ccbs-Index", "gsm_map.ccbs_Index",
13231         FT_UINT32, BASE_DEC, NULL, 0,
13232         "", HFILL }},
13233     { &hf_gsm_map_b_subscriberNumber,
13234       { "b-subscriberNumber", "gsm_map.b_subscriberNumber",
13235         FT_BYTES, BASE_HEX, NULL, 0,
13236         "", HFILL }},
13237     { &hf_gsm_map_b_subscriberSubaddress,
13238       { "b-subscriberSubaddress", "gsm_map.b_subscriberSubaddress",
13239         FT_BYTES, BASE_HEX, NULL, 0,
13240         "", HFILL }},
13241     { &hf_gsm_map_forwardingFeatureList_1_13,
13242       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
13243         FT_NONE, BASE_NONE, NULL, 0,
13244         "InterrogateSS-Res/forwardingFeatureList", HFILL }},
13245     { &hf_gsm_map_genericServiceInfo,
13246       { "genericServiceInfo", "gsm_map.genericServiceInfo",
13247         FT_NONE, BASE_NONE, NULL, 0,
13248         "InterrogateSS-Res/genericServiceInfo", HFILL }},
13249     { &hf_gsm_map_maximumEntitledPriority,
13250       { "maximumEntitledPriority", "gsm_map.maximumEntitledPriority",
13251         FT_UINT32, BASE_DEC, NULL, 0,
13252         "InterrogateSS-Res/genericServiceInfo/maximumEntitledPriority", HFILL }},
13253     { &hf_gsm_map_ccbs_FeatureList,
13254       { "ccbs-FeatureList", "gsm_map.ccbs_FeatureList",
13255         FT_NONE, BASE_NONE, NULL, 0,
13256         "InterrogateSS-Res/genericServiceInfo/ccbs-FeatureList", HFILL }},
13257     { &hf_gsm_map_ccbs_FeatureList_item,
13258       { "Item", "gsm_map.ccbs_FeatureList_item",
13259         FT_NONE, BASE_NONE, NULL, 0,
13260         "InterrogateSS-Res/genericServiceInfo/ccbs-FeatureList/_item", HFILL }},
13261     { &hf_gsm_map_ussd_DataCodingScheme,
13262       { "ussd-DataCodingScheme", "gsm_map.ussd_DataCodingScheme",
13263         FT_BYTES, BASE_HEX, NULL, 0,
13264         "", HFILL }},
13265     { &hf_gsm_map_ussd_String,
13266       { "ussd-String", "gsm_map.ussd_String",
13267         FT_BYTES, BASE_HEX, NULL, 0,
13268         "", HFILL }},
13269     { &hf_gsm_map_ccbs_Data,
13270       { "ccbs-Data", "gsm_map.ccbs_Data",
13271         FT_NONE, BASE_NONE, NULL, 0,
13272         "RegisterCC-EntryArg/ccbs-Data", HFILL }},
13273     { &hf_gsm_map_serviceIndicator,
13274       { "serviceIndicator", "gsm_map.serviceIndicator",
13275         FT_BYTES, BASE_HEX, NULL, 0,
13276         "RegisterCC-EntryArg/ccbs-Data/serviceIndicator", HFILL }},
13277     { &hf_gsm_map_sm_RP_PRI,
13278       { "sm-RP-PRI", "gsm_map.sm_RP_PRI",
13279         FT_BOOLEAN, 8, NULL, 0,
13280         "RoutingInfoForSMArg/sm-RP-PRI", HFILL }},
13281     { &hf_gsm_map_serviceCentreAddress,
13282       { "serviceCentreAddress", "gsm_map.serviceCentreAddress",
13283         FT_BYTES, BASE_HEX, NULL, 0,
13284         "", HFILL }},
13285     { &hf_gsm_map_gprsSupportIndicator,
13286       { "gprsSupportIndicator", "gsm_map.gprsSupportIndicator",
13287         FT_NONE, BASE_NONE, NULL, 0,
13288         "", HFILL }},
13289     { &hf_gsm_map_sm_RP_MTI,
13290       { "sm-RP-MTI", "gsm_map.sm_RP_MTI",
13291         FT_UINT32, BASE_DEC, NULL, 0,
13292         "RoutingInfoForSMArg/sm-RP-MTI", HFILL }},
13293     { &hf_gsm_map_sm_RP_SMEA,
13294       { "sm-RP-SMEA", "gsm_map.sm_RP_SMEA",
13295         FT_BYTES, BASE_HEX, NULL, 0,
13296         "RoutingInfoForSMArg/sm-RP-SMEA", HFILL }},
13297     { &hf_gsm_map_locationInfoWithLMSI,
13298       { "locationInfoWithLMSI", "gsm_map.locationInfoWithLMSI",
13299         FT_NONE, BASE_NONE, NULL, 0,
13300         "RoutingInfoForSMRes/locationInfoWithLMSI", HFILL }},
13301     { &hf_gsm_map_networkNode_Number,
13302       { "networkNode-Number", "gsm_map.networkNode_Number",
13303         FT_BYTES, BASE_HEX, NULL, 0,
13304         "RoutingInfoForSMRes/locationInfoWithLMSI/networkNode-Number", HFILL }},
13305     { &hf_gsm_map_gprsNodeIndicator,
13306       { "gprsNodeIndicator", "gsm_map.gprsNodeIndicator",
13307         FT_NONE, BASE_NONE, NULL, 0,
13308         "RoutingInfoForSMRes/locationInfoWithLMSI/gprsNodeIndicator", HFILL }},
13309     { &hf_gsm_map_additional_Number,
13310       { "additional-Number", "gsm_map.additional_Number",
13311         FT_UINT32, BASE_DEC, VALS(gsm_map_T_additional_Number_vals), 0,
13312         "RoutingInfoForSMRes/locationInfoWithLMSI/additional-Number", HFILL }},
13313     { &hf_gsm_map_sm_RP_DA,
13314       { "sm-RP-DA", "gsm_map.sm_RP_DA",
13315         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_DA_vals), 0,
13316         "", HFILL }},
13317     { &hf_gsm_map_sm_RP_OA,
13318       { "sm-RP-OA", "gsm_map.sm_RP_OA",
13319         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_RP_OA_vals), 0,
13320         "", HFILL }},
13321     { &hf_gsm_map_sm_RP_UI,
13322       { "sm-RP-UI", "gsm_map.sm_RP_UI",
13323         FT_BYTES, BASE_HEX, NULL, 0,
13324         "", HFILL }},
13325     { &hf_gsm_map_serviceCentreAddressOA,
13326       { "serviceCentreAddressOA", "gsm_map.serviceCentreAddressOA",
13327         FT_BYTES, BASE_HEX, NULL, 0,
13328         "Sm-RP-OA/serviceCentreAddressOA", HFILL }},
13329     { &hf_gsm_map_noSM_RP_OA,
13330       { "noSM-RP-OA", "gsm_map.noSM_RP_OA",
13331         FT_NONE, BASE_NONE, NULL, 0,
13332         "Sm-RP-OA/noSM-RP-OA", HFILL }},
13333     { &hf_gsm_map_serviceCentreAddressDA,
13334       { "serviceCentreAddressDA", "gsm_map.serviceCentreAddressDA",
13335         FT_BYTES, BASE_HEX, NULL, 0,
13336         "Sm-RP-DA/serviceCentreAddressDA", HFILL }},
13337     { &hf_gsm_map_noSM_RP_DA,
13338       { "noSM-RP-DA", "gsm_map.noSM_RP_DA",
13339         FT_NONE, BASE_NONE, NULL, 0,
13340         "Sm-RP-DA/noSM-RP-DA", HFILL }},
13341     { &hf_gsm_map_moreMessagesToSend,
13342       { "moreMessagesToSend", "gsm_map.moreMessagesToSend",
13343         FT_NONE, BASE_NONE, NULL, 0,
13344         "Mt-forwardSM-Arg/moreMessagesToSend", HFILL }},
13345     { &hf_gsm_map_sm_DeliveryOutcome,
13346       { "sm-DeliveryOutcome", "gsm_map.sm_DeliveryOutcome",
13347         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
13348         "ReportSM-DeliveryStatusArg/sm-DeliveryOutcome", HFILL }},
13349     { &hf_gsm_map_absentSubscriberDiagnosticSM,
13350       { "absentSubscriberDiagnosticSM", "gsm_map.absentSubscriberDiagnosticSM",
13351         FT_UINT32, BASE_DEC, NULL, 0,
13352         "", HFILL }},
13353     { &hf_gsm_map_deliveryOutcomeIndicator,
13354       { "deliveryOutcomeIndicator", "gsm_map.deliveryOutcomeIndicator",
13355         FT_NONE, BASE_NONE, NULL, 0,
13356         "ReportSM-DeliveryStatusArg/deliveryOutcomeIndicator", HFILL }},
13357     { &hf_gsm_map_additionalSM_DeliveryOutcome,
13358       { "additionalSM-DeliveryOutcome", "gsm_map.additionalSM_DeliveryOutcome",
13359         FT_UINT32, BASE_DEC, VALS(gsm_map_Sm_DeliveryOutcome_vals), 0,
13360         "ReportSM-DeliveryStatusArg/additionalSM-DeliveryOutcome", HFILL }},
13361     { &hf_gsm_map_additionalAbsentSubscriberDiagnosticSM,
13362       { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.additionalAbsentSubscriberDiagnosticSM",
13363         FT_UINT32, BASE_DEC, NULL, 0,
13364         "", HFILL }},
13365     { &hf_gsm_map_storedMSISDN,
13366       { "storedMSISDN", "gsm_map.storedMSISDN",
13367         FT_BYTES, BASE_HEX, NULL, 0,
13368         "", HFILL }},
13369     { &hf_gsm_map_mw_Status,
13370       { "mw-Status", "gsm_map.mw_Status",
13371         FT_BYTES, BASE_HEX, NULL, 0,
13372         "InformServiceCentreArg/mw-Status", HFILL }},
13373     { &hf_gsm_map_alertReason,
13374       { "alertReason", "gsm_map.alertReason",
13375         FT_UINT32, BASE_DEC, VALS(gsm_map_T_alertReason_vals), 0,
13376         "ReadyForSM-Arg/alertReason", HFILL }},
13377     { &hf_gsm_map_alertReasonIndicator,
13378       { "alertReasonIndicator", "gsm_map.alertReasonIndicator",
13379         FT_NONE, BASE_NONE, NULL, 0,
13380         "ReadyForSM-Arg/alertReasonIndicator", HFILL }},
13381     { &hf_gsm_map_requestedInfo,
13382       { "requestedInfo", "gsm_map.requestedInfo",
13383         FT_NONE, BASE_NONE, NULL, 0,
13384         "", HFILL }},
13385     { &hf_gsm_map_locationInformationFlag,
13386       { "locationInformation", "gsm_map.locationInformation",
13387         FT_NONE, BASE_NONE, NULL, 0,
13388         "RequestedInfo/locationInformation", HFILL }},
13389     { &hf_gsm_map_subscriberStateFlag,
13390       { "subscriberState", "gsm_map.subscriberState",
13391         FT_NONE, BASE_NONE, NULL, 0,
13392         "RequestedInfo/subscriberState", HFILL }},
13393     { &hf_gsm_map_currentLocation,
13394       { "currentLocation", "gsm_map.currentLocation",
13395         FT_NONE, BASE_NONE, NULL, 0,
13396         "RequestedInfo/currentLocation", HFILL }},
13397     { &hf_gsm_map_requestedDomain,
13398       { "requestedDomain", "gsm_map.requestedDomain",
13399         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestedDomain_vals), 0,
13400         "RequestedInfo/requestedDomain", HFILL }},
13401     { &hf_gsm_map_imei_flg,
13402       { "imei", "gsm_map.imei",
13403         FT_NONE, BASE_NONE, NULL, 0,
13404         "RequestedInfo/imei", HFILL }},
13405     { &hf_gsm_map_ms_classmark,
13406       { "ms-classmark", "gsm_map.ms_classmark",
13407         FT_NONE, BASE_NONE, NULL, 0,
13408         "RequestedInfo/ms-classmark", HFILL }},
13409     { &hf_gsm_map_mnpRequestedInfo,
13410       { "mnpRequestedInfo", "gsm_map.mnpRequestedInfo",
13411         FT_NONE, BASE_NONE, NULL, 0,
13412         "RequestedInfo/mnpRequestedInfo", HFILL }},
13413     { &hf_gsm_map_subscriberIdentity,
13414       { "subscriberIdentity", "gsm_map.subscriberIdentity",
13415         FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
13416         "", HFILL }},
13417     { &hf_gsm_map_requestedSubscriptionInfo,
13418       { "requestedSubscriptionInfo", "gsm_map.requestedSubscriptionInfo",
13419         FT_NONE, BASE_NONE, NULL, 0,
13420         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo", HFILL }},
13421     { &hf_gsm_map_requestedSS_Info,
13422       { "requestedSS-Info", "gsm_map.requestedSS_Info",
13423         FT_NONE, BASE_NONE, NULL, 0,
13424         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo/requestedSS-Info", HFILL }},
13425     { &hf_gsm_map_odb,
13426       { "odb", "gsm_map.odb",
13427         FT_NONE, BASE_NONE, NULL, 0,
13428         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo/odb", HFILL }},
13429     { &hf_gsm_map_requestedCAMEL_SubscriptionInfo,
13430       { "requestedCAMEL-SubscriptionInfo", "gsm_map.requestedCAMEL_SubscriptionInfo",
13431         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestedCAMEL_SubscriptionInfo_vals), 0,
13432         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo/requestedCAMEL-SubscriptionInfo", HFILL }},
13433     { &hf_gsm_map_supportedVLR_CAMEL_Phases_flg,
13434       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
13435         FT_NONE, BASE_NONE, NULL, 0,
13436         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo/supportedVLR-CAMEL-Phases", HFILL }},
13437     { &hf_gsm_map_supportedSGSN_CAMEL_Phases_flg,
13438       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
13439         FT_NONE, BASE_NONE, NULL, 0,
13440         "AnyTimeSubscriptionInterrogationArg/requestedSubscriptionInfo/supportedSGSN-CAMEL-Phases", HFILL }},
13441     { &hf_gsm_map_additionalRequestedCAMEL_SubscriptionInfo,
13442       { "additionalRequestedCAMEL-SubscriptionInfo", "gsm_map.additionalRequestedCAMEL_SubscriptionInfo",
13443         FT_UINT32, BASE_DEC, VALS(gsm_map_AdditionalRequestedCAMEL_SubscriptionInfo_vals), 0,
13444         "", HFILL }},
13445     { &hf_gsm_map_callForwardingData,
13446       { "callForwardingData", "gsm_map.callForwardingData",
13447         FT_NONE, BASE_NONE, NULL, 0,
13448         "AnyTimeSubscriptionInterrogationRes/callForwardingData", HFILL }},
13449     { &hf_gsm_map_forwardingFeatureList,
13450       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
13451         FT_NONE, BASE_NONE, NULL, 0,
13452         "AnyTimeSubscriptionInterrogationRes/callForwardingData/forwardingFeatureList", HFILL }},
13453     { &hf_gsm_map_notificationToCSE,
13454       { "notificationToCSE", "gsm_map.notificationToCSE",
13455         FT_NONE, BASE_NONE, NULL, 0,
13456         "", HFILL }},
13457     { &hf_gsm_map_callBarringData,
13458       { "callBarringData", "gsm_map.callBarringData",
13459         FT_NONE, BASE_NONE, NULL, 0,
13460         "AnyTimeSubscriptionInterrogationRes/callBarringData", HFILL }},
13461     { &hf_gsm_map_password,
13462       { "password", "gsm_map.password",
13463         FT_STRING, BASE_NONE, NULL, 0,
13464         "", HFILL }},
13465     { &hf_gsm_map_wrongPasswordAttemptsCounter,
13466       { "wrongPasswordAttemptsCounter", "gsm_map.wrongPasswordAttemptsCounter",
13467         FT_UINT32, BASE_DEC, NULL, 0,
13468         "", HFILL }},
13469     { &hf_gsm_map_odb_Info,
13470       { "odb-Info", "gsm_map.odb_Info",
13471         FT_NONE, BASE_NONE, NULL, 0,
13472         "AnyTimeSubscriptionInterrogationRes/odb-Info", HFILL }},
13473     { &hf_gsm_map_camel_SubscriptionInfo,
13474       { "camel-SubscriptionInfo", "gsm_map.camel_SubscriptionInfo",
13475         FT_NONE, BASE_NONE, NULL, 0,
13476         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo", HFILL }},
13477     { &hf_gsm_map_d_CSI,
13478       { "d-CSI", "gsm_map.d_CSI",
13479         FT_NONE, BASE_NONE, NULL, 0,
13480         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/d-CSI", HFILL }},
13481     { &hf_gsm_map_dp_AnalysedInfoCriteriaList,
13482       { "dp-AnalysedInfoCriteriaList", "gsm_map.dp_AnalysedInfoCriteriaList",
13483         FT_NONE, BASE_NONE, NULL, 0,
13484         "", HFILL }},
13485     { &hf_gsm_map_csi_Active,
13486       { "csi-Active", "gsm_map.csi_Active",
13487         FT_NONE, BASE_NONE, NULL, 0,
13488         "", HFILL }},
13489     { &hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList,
13490       { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.t_BCSM_CAMEL_TDP_CriteriaList",
13491         FT_NONE, BASE_NONE, NULL, 0,
13492         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/t-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
13493     { &hf_gsm_map_t_BCSM_CAMEL_TDP_CriteriaList_item,
13494       { "Item", "gsm_map.t_BCSM_CAMEL_TDP_CriteriaList_item",
13495         FT_NONE, BASE_NONE, NULL, 0,
13496         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/t-BCSM-CAMEL-TDP-CriteriaList/_item", HFILL }},
13497     { &hf_gsm_map_t_BCSM_TriggerDetectionPoint,
13498       { "t-BCSM-TriggerDetectionPoint", "gsm_map.t_BCSM_TriggerDetectionPoint",
13499         FT_UINT32, BASE_DEC, VALS(gsm_map_t_BCSM_TriggerDetectionPoint_vals), 0,
13500         "", HFILL }},
13501     { &hf_gsm_map_basicServiceCriteria,
13502       { "basicServiceCriteria", "gsm_map.basicServiceCriteria",
13503         FT_NONE, BASE_NONE, NULL, 0,
13504         "", HFILL }},
13505     { &hf_gsm_map_t_CauseValueCriteria,
13506       { "t-CauseValueCriteria", "gsm_map.t_CauseValueCriteria",
13507         FT_NONE, BASE_NONE, NULL, 0,
13508         "", HFILL }},
13509     { &hf_gsm_map_vt_CSI,
13510       { "vt-CSI", "gsm_map.vt_CSI",
13511         FT_NONE, BASE_NONE, NULL, 0,
13512         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/vt-CSI", HFILL }},
13513     { &hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList,
13514       { "vt-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_BCSM_CAMEL_TDP_CriteriaList",
13515         FT_NONE, BASE_NONE, NULL, 0,
13516         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/vt-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
13517     { &hf_gsm_map_vt_BCSM_CAMEL_TDP_CriteriaList_item,
13518       { "Item", "gsm_map.vt_BCSM_CAMEL_TDP_CriteriaList_item",
13519         FT_NONE, BASE_NONE, NULL, 0,
13520         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/vt-BCSM-CAMEL-TDP-CriteriaList/_item", HFILL }},
13521     { &hf_gsm_map_tif_CSI_NotificationToCSE,
13522       { "tif-CSI-NotificationToCSE", "gsm_map.tif_CSI_NotificationToCSE",
13523         FT_NONE, BASE_NONE, NULL, 0,
13524         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/tif-CSI-NotificationToCSE", HFILL }},
13525     { &hf_gsm_map_gprs_CSI,
13526       { "gprs-CSI", "gsm_map.gprs_CSI",
13527         FT_NONE, BASE_NONE, NULL, 0,
13528         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/gprs-CSI", HFILL }},
13529     { &hf_gsm_map_gprs_CamelTDPDataList,
13530       { "gprs-CamelTDPDataList", "gsm_map.gprs_CamelTDPDataList",
13531         FT_NONE, BASE_NONE, NULL, 0,
13532         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/gprs-CSI/gprs-CamelTDPDataList", HFILL }},
13533     { &hf_gsm_map_gprs_CamelTDPDataList_item,
13534       { "Item", "gsm_map.gprs_CamelTDPDataList_item",
13535         FT_NONE, BASE_NONE, NULL, 0,
13536         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/gprs-CSI/gprs-CamelTDPDataList/_item", HFILL }},
13537     { &hf_gsm_map_gprs_TriggerDetectionPoint,
13538       { "gprs-TriggerDetectionPoint", "gsm_map.gprs_TriggerDetectionPoint",
13539         FT_UINT32, BASE_DEC, VALS(gsm_map_T_gprs_TriggerDetectionPoint_vals), 0,
13540         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/gprs-CSI/gprs-CamelTDPDataList/_item/gprs-TriggerDetectionPoint", HFILL }},
13541     { &hf_gsm_map_defaultSessionHandling,
13542       { "defaultSessionHandling", "gsm_map.defaultSessionHandling",
13543         FT_UINT32, BASE_DEC, VALS(gsm_map_T_defaultSessionHandling_vals), 0,
13544         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/gprs-CSI/gprs-CamelTDPDataList/_item/defaultSessionHandling", HFILL }},
13545     { &hf_gsm_map_mo_sms_CSI,
13546       { "mo-sms-CSI", "gsm_map.mo_sms_CSI",
13547         FT_NONE, BASE_NONE, NULL, 0,
13548         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mo-sms-CSI", HFILL }},
13549     { &hf_gsm_map_sms_CAMEL_TDP_DataList,
13550       { "sms-CAMEL-TDP-DataList", "gsm_map.sms_CAMEL_TDP_DataList",
13551         FT_NONE, BASE_NONE, NULL, 0,
13552         "", HFILL }},
13553     { &hf_gsm_map_m_CSI,
13554       { "m-CSI", "gsm_map.m_CSI",
13555         FT_NONE, BASE_NONE, NULL, 0,
13556         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/m-CSI", HFILL }},
13557     { &hf_gsm_map_mobilityTriggers,
13558       { "mobilityTriggers", "gsm_map.mobilityTriggers",
13559         FT_NONE, BASE_NONE, NULL, 0,
13560         "", HFILL }},
13561     { &hf_gsm_map_specificCSIDeletedList,
13562       { "specificCSIDeletedList", "gsm_map.specificCSIDeletedList",
13563         FT_BYTES, BASE_HEX, NULL, 0,
13564         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/specificCSIDeletedList", HFILL }},
13565     { &hf_gsm_map_mt_sms_CSI,
13566       { "mt-sms-CSI", "gsm_map.mt_sms_CSI",
13567         FT_NONE, BASE_NONE, NULL, 0,
13568         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mt-sms-CSI", HFILL }},
13569     { &hf_gsm_map_mt_smsCAMELTDP_CriteriaList,
13570       { "mt-smsCAMELTDP-CriteriaList", "gsm_map.mt_smsCAMELTDP_CriteriaList",
13571         FT_NONE, BASE_NONE, NULL, 0,
13572         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mt-smsCAMELTDP-CriteriaList", HFILL }},
13573     { &hf_gsm_map_mt_smsCAMELTDP_CriteriaList_item,
13574       { "Item", "gsm_map.mt_smsCAMELTDP_CriteriaList_item",
13575         FT_NONE, BASE_NONE, NULL, 0,
13576         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mt-smsCAMELTDP-CriteriaList/_item", HFILL }},
13577     { &hf_gsm_map_sms_TriggerDetectionPoint,
13578       { "sms-TriggerDetectionPoint", "gsm_map.sms_TriggerDetectionPoint",
13579         FT_UINT32, BASE_DEC, VALS(gsm_map_sms_TriggerDetectionPoint_vals), 0,
13580         "", HFILL }},
13581     { &hf_gsm_map_tpdu_TypeCriterion,
13582       { "tpdu-TypeCriterion", "gsm_map.tpdu_TypeCriterion",
13583         FT_NONE, BASE_NONE, NULL, 0,
13584         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mt-smsCAMELTDP-CriteriaList/_item/tpdu-TypeCriterion", HFILL }},
13585     { &hf_gsm_map_tpdu_TypeCriterion_item,
13586       { "Item", "gsm_map.tpdu_TypeCriterion_item",
13587         FT_UINT32, BASE_DEC, VALS(gsm_map_T_tpdu_TypeCriterion_item_vals), 0,
13588         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mt-smsCAMELTDP-CriteriaList/_item/tpdu-TypeCriterion/_item", HFILL }},
13589     { &hf_gsm_map_mg_csi,
13590       { "mg-csi", "gsm_map.mg_csi",
13591         FT_NONE, BASE_NONE, NULL, 0,
13592         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/mg-csi", HFILL }},
13593     { &hf_gsm_map_o_IM_CSI,
13594       { "o-IM-CSI", "gsm_map.o_IM_CSI",
13595         FT_NONE, BASE_NONE, NULL, 0,
13596         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/o-IM-CSI", HFILL }},
13597     { &hf_gsm_map_csiActive,
13598       { "csiActive", "gsm_map.csiActive",
13599         FT_NONE, BASE_NONE, NULL, 0,
13600         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/o-IM-CSI/csiActive", HFILL }},
13601     { &hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList,
13602       { "o-IM-BcsmCamelTDP-CriteriaList", "gsm_map.o_IM_BcsmCamelTDP_CriteriaList",
13603         FT_NONE, BASE_NONE, NULL, 0,
13604         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/o-IM-BcsmCamelTDP-CriteriaList", HFILL }},
13605     { &hf_gsm_map_o_IM_BcsmCamelTDP_CriteriaList_item,
13606       { "Item", "gsm_map.o_IM_BcsmCamelTDP_CriteriaList_item",
13607         FT_NONE, BASE_NONE, NULL, 0,
13608         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/o-IM-BcsmCamelTDP-CriteriaList/_item", HFILL }},
13609     { &hf_gsm_map_o_CauseValueCriteria,
13610       { "o-CauseValueCriteria", "gsm_map.o_CauseValueCriteria",
13611         FT_NONE, BASE_NONE, NULL, 0,
13612         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/o-IM-BcsmCamelTDP-CriteriaList/_item/o-CauseValueCriteria", HFILL }},
13613     { &hf_gsm_map_d_IM_CSI,
13614       { "d-IM-CSI", "gsm_map.d_IM_CSI",
13615         FT_NONE, BASE_NONE, NULL, 0,
13616         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/d-IM-CSI", HFILL }},
13617     { &hf_gsm_map_vt_IM_CSI,
13618       { "vt-IM-CSI", "gsm_map.vt_IM_CSI",
13619         FT_NONE, BASE_NONE, NULL, 0,
13620         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/vt-IM-CSI", HFILL }},
13621     { &hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList,
13622       { "vt-IM-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.vt_IM_BCSM_CAMEL_TDP_CriteriaList",
13623         FT_NONE, BASE_NONE, NULL, 0,
13624         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/vt-IM-BCSM-CAMEL-TDP-CriteriaList", HFILL }},
13625     { &hf_gsm_map_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item,
13626       { "Item", "gsm_map.vt_IM_BCSM_CAMEL_TDP_CriteriaList_item",
13627         FT_NONE, BASE_NONE, NULL, 0,
13628         "AnyTimeSubscriptionInterrogationRes/camel-SubscriptionInfo/vt-IM-BCSM-CAMEL-TDP-CriteriaList/_item", HFILL }},
13629     { &hf_gsm_map_supportedVLR_CAMEL_Phases,
13630       { "supportedVLR-CAMEL-Phases", "gsm_map.supportedVLR_CAMEL_Phases",
13631         FT_BYTES, BASE_HEX, NULL, 0,
13632         "AnyTimeSubscriptionInterrogationRes/supportedVLR-CAMEL-Phases", HFILL }},
13633     { &hf_gsm_map_supportedSGSN_CAMEL_Phases,
13634       { "supportedSGSN-CAMEL-Phases", "gsm_map.supportedSGSN_CAMEL_Phases",
13635         FT_BYTES, BASE_HEX, NULL, 0,
13636         "AnyTimeSubscriptionInterrogationRes/supportedSGSN-CAMEL-Phases", HFILL }},
13637     { &hf_gsm_map_offeredCamel4CSIsInVLR,
13638       { "offeredCamel4CSIsInVLR", "gsm_map.offeredCamel4CSIsInVLR",
13639         FT_BYTES, BASE_HEX, NULL, 0,
13640         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInVLR", HFILL }},
13641     { &hf_gsm_map_offeredCamel4CSIsInSGSN,
13642       { "offeredCamel4CSIsInSGSN", "gsm_map.offeredCamel4CSIsInSGSN",
13643         FT_BYTES, BASE_HEX, NULL, 0,
13644         "AnyTimeSubscriptionInterrogationRes/offeredCamel4CSIsInSGSN", HFILL }},
13645     { &hf_gsm_map_Sms_CAMEL_TDP_DataList_item,
13646       { "Item", "gsm_map.Sms_CAMEL_TDP_DataList_item",
13647         FT_NONE, BASE_NONE, NULL, 0,
13648         "Sms-CAMEL-TDP-DataList/_item", HFILL }},
13649     { &hf_gsm_map_defaultSMS_Handling,
13650       { "defaultSMS-Handling", "gsm_map.defaultSMS_Handling",
13651         FT_UINT32, BASE_DEC, VALS(gsm_map_T_defaultSMS_Handling_vals), 0,
13652         "Sms-CAMEL-TDP-DataList/_item/defaultSMS-Handling", HFILL }},
13653     { &hf_gsm_map_T_CauseValueCriteria_item,
13654       { "Item", "gsm_map.T_CauseValueCriteria_item",
13655         FT_BYTES, BASE_HEX, NULL, 0,
13656         "T-CauseValueCriteria/_item", HFILL }},
13657     { &hf_gsm_map_O_CauseValueCriteria_item,
13658       { "Item", "gsm_map.O_CauseValueCriteria_item",
13659         FT_BYTES, BASE_HEX, NULL, 0,
13660         "O-CauseValueCriteria/_item", HFILL }},
13661     { &hf_gsm_map_MobilityTriggers_item,
13662       { "Item", "gsm_map.MobilityTriggers_item",
13663         FT_BYTES, BASE_HEX, NULL, 0,
13664         "MobilityTriggers/_item", HFILL }},
13665     { &hf_gsm_map_BasicServiceCriteria_item,
13666       { "Item", "gsm_map.BasicServiceCriteria_item",
13667         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCriteria_item_vals), 0,
13668         "BasicServiceCriteria/_item", HFILL }},
13669     { &hf_gsm_map_ext_BearerService,
13670       { "ext-BearerService", "gsm_map.ext_BearerService",
13671         FT_BYTES, BASE_HEX, NULL, 0,
13672         "", HFILL }},
13673     { &hf_gsm_map_ext_Teleservice,
13674       { "ext-Teleservice", "gsm_map.ext_Teleservice",
13675         FT_BYTES, BASE_HEX, NULL, 0,
13676         "", HFILL }},
13677     { &hf_gsm_map_Dp_AnalysedInfoCriteriaList_item,
13678       { "Item", "gsm_map.Dp_AnalysedInfoCriteriaList_item",
13679         FT_NONE, BASE_NONE, NULL, 0,
13680         "Dp-AnalysedInfoCriteriaList/_item", HFILL }},
13681     { &hf_gsm_map_dialledNumber,
13682       { "dialledNumber", "gsm_map.dialledNumber",
13683         FT_BYTES, BASE_HEX, NULL, 0,
13684         "Dp-AnalysedInfoCriteriaList/_item/dialledNumber", HFILL }},
13685     { &hf_gsm_map_modificationRequestFor_CF_Info,
13686       { "modificationRequestFor-CF-Info", "gsm_map.modificationRequestFor_CF_Info",
13687         FT_NONE, BASE_NONE, NULL, 0,
13688         "AnyTimeModificationArg/modificationRequestFor-CF-Info", HFILL }},
13689     { &hf_gsm_map_basicService_ext,
13690       { "basicService", "gsm_map.basicService",
13691         FT_UINT32, BASE_DEC, VALS(gsm_map_BasicService_ext_vals), 0,
13692         "", HFILL }},
13693     { &hf_gsm_map_noReplyConditionTime_1_100,
13694       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
13695         FT_UINT32, BASE_DEC, NULL, 0,
13696         "AnyTimeModificationArg/modificationRequestFor-CF-Info/noReplyConditionTime", HFILL }},
13697     { &hf_gsm_map_modifyNotificationToCSE,
13698       { "modifyNotificationToCSE", "gsm_map.modifyNotificationToCSE",
13699         FT_UINT32, BASE_DEC, VALS(gsm_map_ModifyNotificationToCSE_vals), 0,
13700         "", HFILL }},
13701     { &hf_gsm_map_modificationRequestFor_CB_Info,
13702       { "modificationRequestFor-CB-Info", "gsm_map.modificationRequestFor_CB_Info",
13703         FT_NONE, BASE_NONE, NULL, 0,
13704         "AnyTimeModificationArg/modificationRequestFor-CB-Info", HFILL }},
13705     { &hf_gsm_map_modificationRequestFor_CSI,
13706       { "modificationRequestFor-CSI", "gsm_map.modificationRequestFor_CSI",
13707         FT_NONE, BASE_NONE, NULL, 0,
13708         "AnyTimeModificationArg/modificationRequestFor-CSI", HFILL }},
13709     { &hf_gsm_map_requestedCamel_SubscriptionInfo,
13710       { "requestedCamel-SubscriptionInfo", "gsm_map.requestedCamel_SubscriptionInfo",
13711         FT_UINT32, BASE_DEC, VALS(gsm_map_T_requestedCamel_SubscriptionInfo_vals), 0,
13712         "AnyTimeModificationArg/modificationRequestFor-CSI/requestedCamel-SubscriptionInfo", HFILL }},
13713     { &hf_gsm_map_modifyCSI_State,
13714       { "modifyCSI-State", "gsm_map.modifyCSI_State",
13715         FT_UINT32, BASE_DEC, VALS(gsm_map_T_modifyCSI_State_vals), 0,
13716         "AnyTimeModificationArg/modificationRequestFor-CSI/modifyCSI-State", HFILL }},
13717     { &hf_gsm_map_modificationRequestFor_ODB_data,
13718       { "modificationRequestFor-ODB-data", "gsm_map.modificationRequestFor_ODB_data",
13719         FT_NONE, BASE_NONE, NULL, 0,
13720         "AnyTimeModificationArg/modificationRequestFor-ODB-data", HFILL }},
13721     { &hf_gsm_map_odb_data,
13722       { "odb-data", "gsm_map.odb_data",
13723         FT_NONE, BASE_NONE, NULL, 0,
13724         "AnyTimeModificationArg/modificationRequestFor-ODB-data/odb-data", HFILL }},
13725     { &hf_gsm_map_odb_HPLMN_Data,
13726       { "odb-HPLMN-Data", "gsm_map.odb_HPLMN_Data",
13727         FT_BYTES, BASE_HEX, NULL, 0,
13728         "Odb-data/odb-HPLMN-Data", HFILL }},
13729     { &hf_gsm_map_ss_Event,
13730       { "ss-Event", "gsm_map.ss_Event",
13731         FT_BYTES, BASE_HEX, NULL, 0,
13732         "Ss-InvocationNotificationArg/ss-Event", HFILL }},
13733     { &hf_gsm_map_ss_EventSpecification,
13734       { "ss-EventSpecification", "gsm_map.ss_EventSpecification",
13735         FT_NONE, BASE_NONE, NULL, 0,
13736         "Ss-InvocationNotificationArg/ss-EventSpecification", HFILL }},
13737     { &hf_gsm_map_ss_EventSpecification_item,
13738       { "Item", "gsm_map.ss_EventSpecification_item",
13739         FT_BYTES, BASE_HEX, NULL, 0,
13740         "Ss-InvocationNotificationArg/ss-EventSpecification/_item", HFILL }},
13741     { &hf_gsm_map_codec_Info,
13742       { "codec-Info", "gsm_map.codec_Info",
13743         FT_BYTES, BASE_HEX, NULL, 0,
13744         "PrepareGroupCallArg/codec-Info", HFILL }},
13745     { &hf_gsm_map_cipheringAlgorithm,
13746       { "cipheringAlgorithm", "gsm_map.cipheringAlgorithm",
13747         FT_BYTES, BASE_HEX, NULL, 0,
13748         "PrepareGroupCallArg/cipheringAlgorithm", HFILL }},
13749     { &hf_gsm_map_groupKeyNumber,
13750       { "groupKeyNumber", "gsm_map.groupKeyNumber",
13751         FT_UINT32, BASE_DEC, NULL, 0,
13752         "PrepareGroupCallArg/groupKeyNumber", HFILL }},
13753     { &hf_gsm_map_groupKey,
13754       { "groupKey", "gsm_map.groupKey",
13755         FT_BYTES, BASE_HEX, NULL, 0,
13756         "PrepareGroupCallArg/groupKey", HFILL }},
13757     { &hf_gsm_map_priority,
13758       { "priority", "gsm_map.priority",
13759         FT_UINT32, BASE_DEC, NULL, 0,
13760         "PrepareGroupCallArg/priority", HFILL }},
13761     { &hf_gsm_map_uplinkFree,
13762       { "uplinkFree", "gsm_map.uplinkFree",
13763         FT_NONE, BASE_NONE, NULL, 0,
13764         "PrepareGroupCallArg/uplinkFree", HFILL }},
13765     { &hf_gsm_map_groupCallNumber,
13766       { "groupCallNumber", "gsm_map.groupCallNumber",
13767         FT_BYTES, BASE_HEX, NULL, 0,
13768         "PrepareGroupCallRes/groupCallNumber", HFILL }},
13769     { &hf_gsm_map_uplinkRequest,
13770       { "uplinkRequest", "gsm_map.uplinkRequest",
13771         FT_NONE, BASE_NONE, NULL, 0,
13772         "ProcessGroupCallSignallingArg/uplinkRequest", HFILL }},
13773     { &hf_gsm_map_uplinkReleaseIndication,
13774       { "uplinkReleaseIndication", "gsm_map.uplinkReleaseIndication",
13775         FT_NONE, BASE_NONE, NULL, 0,
13776         "", HFILL }},
13777     { &hf_gsm_map_releaseGroupCall,
13778       { "releaseGroupCall", "gsm_map.releaseGroupCall",
13779         FT_NONE, BASE_NONE, NULL, 0,
13780         "ProcessGroupCallSignallingArg/releaseGroupCall", HFILL }},
13781     { &hf_gsm_map_uplinkRequestAck,
13782       { "uplinkRequestAck", "gsm_map.uplinkRequestAck",
13783         FT_NONE, BASE_NONE, NULL, 0,
13784         "ForwardGroupCallSignallingArg/uplinkRequestAck", HFILL }},
13785     { &hf_gsm_map_uplinkRejectCommand,
13786       { "uplinkRejectCommand", "gsm_map.uplinkRejectCommand",
13787         FT_NONE, BASE_NONE, NULL, 0,
13788         "ForwardGroupCallSignallingArg/uplinkRejectCommand", HFILL }},
13789     { &hf_gsm_map_uplinkSeizedCommand,
13790       { "uplinkSeizedCommand", "gsm_map.uplinkSeizedCommand",
13791         FT_NONE, BASE_NONE, NULL, 0,
13792         "ForwardGroupCallSignallingArg/uplinkSeizedCommand", HFILL }},
13793     { &hf_gsm_map_uplinkReleaseCommand,
13794       { "uplinkReleaseCommand", "gsm_map.uplinkReleaseCommand",
13795         FT_NONE, BASE_NONE, NULL, 0,
13796         "ForwardGroupCallSignallingArg/uplinkReleaseCommand", HFILL }},
13797     { &hf_gsm_map_sgsn_Address,
13798       { "sgsn-Address", "gsm_map.sgsn_Address",
13799         FT_BYTES, BASE_HEX, NULL, 0,
13800         "", HFILL }},
13801     { &hf_gsm_map_sgsn_Capability,
13802       { "sgsn-Capability", "gsm_map.sgsn_Capability",
13803         FT_NONE, BASE_NONE, NULL, 0,
13804         "UpdateGprsLocationArg/sgsn-Capability", HFILL }},
13805     { &hf_gsm_map_ggsn_Number,
13806       { "ggsn-Number", "gsm_map.ggsn_Number",
13807         FT_BYTES, BASE_HEX, NULL, 0,
13808         "", HFILL }},
13809     { &hf_gsm_map_mobileNotReachableReason,
13810       { "mobileNotReachableReason", "gsm_map.mobileNotReachableReason",
13811         FT_UINT32, BASE_DEC, NULL, 0,
13812         "SendRoutingInfoForGprsRes/mobileNotReachableReason", HFILL }},
13813     { &hf_gsm_map_dataCodingScheme,
13814       { "dataCodingScheme", "gsm_map.dataCodingScheme",
13815         FT_BYTES, BASE_HEX, NULL, 0,
13816         "LcsClientName/dataCodingScheme", HFILL }},
13817     { &hf_gsm_map_nameString,
13818       { "nameString", "gsm_map.nameString",
13819         FT_BYTES, BASE_HEX, NULL, 0,
13820         "LcsClientName/nameString", HFILL }},
13821     { &hf_gsm_map_lcsClientType,
13822       { "lcsClientType", "gsm_map.lcsClientType",
13823         FT_UINT32, BASE_DEC, VALS(gsm_map_LcsClientType_vals), 0,
13824         "Lcs-ClientID/lcsClientType", HFILL }},
13825     { &hf_gsm_map_lcsClientExternalID,
13826       { "lcsClientExternalID", "gsm_map.lcsClientExternalID",
13827         FT_NONE, BASE_NONE, NULL, 0,
13828         "Lcs-ClientID/lcsClientExternalID", HFILL }},
13829     { &hf_gsm_map_lcsClientDialedByMS,
13830       { "lcsClientDialedByMS", "gsm_map.lcsClientDialedByMS",
13831         FT_BYTES, BASE_HEX, NULL, 0,
13832         "Lcs-ClientID/lcsClientDialedByMS", HFILL }},
13833     { &hf_gsm_map_lcsClientInternalID,
13834       { "lcsClientInternalID", "gsm_map.lcsClientInternalID",
13835         FT_UINT32, BASE_DEC, VALS(gsm_map_LcsClientInternalID_vals), 0,
13836         "Lcs-ClientID/lcsClientInternalID", HFILL }},
13837     { &hf_gsm_map_lcsClientName,
13838       { "lcsClientName", "gsm_map.lcsClientName",
13839         FT_NONE, BASE_NONE, NULL, 0,
13840         "Lcs-ClientID/lcsClientName", HFILL }},
13841     { &hf_gsm_map_locationType,
13842       { "locationType", "gsm_map.locationType",
13843         FT_NONE, BASE_NONE, NULL, 0,
13844         "ProvideSubscriberLocation-Arg/locationType", HFILL }},
13845     { &hf_gsm_map_locationEstimateType,
13846       { "locationEstimateType", "gsm_map.locationEstimateType",
13847         FT_UINT32, BASE_DEC, VALS(gsm_map_T_locationEstimateType_vals), 0,
13848         "ProvideSubscriberLocation-Arg/locationType/locationEstimateType", HFILL }},
13849     { &hf_gsm_map_mlc_Number,
13850       { "mlc-Number", "gsm_map.mlc_Number",
13851         FT_BYTES, BASE_HEX, NULL, 0,
13852         "ProvideSubscriberLocation-Arg/mlc-Number", HFILL }},
13853     { &hf_gsm_map_lcs_ClientID,
13854       { "lcs-ClientID", "gsm_map.lcs_ClientID",
13855         FT_NONE, BASE_NONE, NULL, 0,
13856         "", HFILL }},
13857     { &hf_gsm_map_privacyOverride,
13858       { "privacyOverride", "gsm_map.privacyOverride",
13859         FT_NONE, BASE_NONE, NULL, 0,
13860         "ProvideSubscriberLocation-Arg/privacyOverride", HFILL }},
13861     { &hf_gsm_map_lcs_Priority,
13862       { "lcs-Priority", "gsm_map.lcs_Priority",
13863         FT_BYTES, BASE_HEX, NULL, 0,
13864         "ProvideSubscriberLocation-Arg/lcs-Priority", HFILL }},
13865     { &hf_gsm_map_lcs_QoS,
13866       { "lcs-QoS", "gsm_map.lcs_QoS",
13867         FT_NONE, BASE_NONE, NULL, 0,
13868         "ProvideSubscriberLocation-Arg/lcs-QoS", HFILL }},
13869     { &hf_gsm_map_horizontal_accuracy,
13870       { "horizontal-accuracy", "gsm_map.horizontal_accuracy",
13871         FT_BYTES, BASE_HEX, NULL, 0,
13872         "ProvideSubscriberLocation-Arg/lcs-QoS/horizontal-accuracy", HFILL }},
13873     { &hf_gsm_map_verticalCoordinateRequest,
13874       { "verticalCoordinateRequest", "gsm_map.verticalCoordinateRequest",
13875         FT_NONE, BASE_NONE, NULL, 0,
13876         "ProvideSubscriberLocation-Arg/lcs-QoS/verticalCoordinateRequest", HFILL }},
13877     { &hf_gsm_map_vertical_accuracy,
13878       { "vertical-accuracy", "gsm_map.vertical_accuracy",
13879         FT_BYTES, BASE_HEX, NULL, 0,
13880         "ProvideSubscriberLocation-Arg/lcs-QoS/vertical-accuracy", HFILL }},
13881     { &hf_gsm_map_responseTime,
13882       { "responseTime", "gsm_map.responseTime",
13883         FT_NONE, BASE_NONE, NULL, 0,
13884         "ProvideSubscriberLocation-Arg/lcs-QoS/responseTime", HFILL }},
13885     { &hf_gsm_map_responseTimeCategory,
13886       { "responseTimeCategory", "gsm_map.responseTimeCategory",
13887         FT_UINT32, BASE_DEC, VALS(gsm_map_T_responseTimeCategory_vals), 0,
13888         "ProvideSubscriberLocation-Arg/lcs-QoS/responseTime/responseTimeCategory", HFILL }},
13889     { &hf_gsm_map_locationEstimate,
13890       { "locationEstimate", "gsm_map.locationEstimate",
13891         FT_BYTES, BASE_HEX, NULL, 0,
13892         "", HFILL }},
13893     { &hf_gsm_map_ageOfLocationEstimate,
13894       { "ageOfLocationEstimate", "gsm_map.ageOfLocationEstimate",
13895         FT_UINT32, BASE_DEC, NULL, 0,
13896         "", HFILL }},
13897     { &hf_gsm_map_mlcNumber,
13898       { "mlcNumber", "gsm_map.mlcNumber",
13899         FT_BYTES, BASE_HEX, NULL, 0,
13900         "RoutingInfoForLCS-Arg/mlcNumber", HFILL }},
13901     { &hf_gsm_map_targetMS,
13902       { "targetMS", "gsm_map.targetMS",
13903         FT_UINT32, BASE_DEC, VALS(gsm_map_TargetMS_vals), 0,
13904         "", HFILL }},
13905     { &hf_gsm_map_lcsLocationInfo,
13906       { "lcsLocationInfo", "gsm_map.lcsLocationInfo",
13907         FT_NONE, BASE_NONE, NULL, 0,
13908         "", HFILL }},
13909     { &hf_gsm_map_lcs_Event,
13910       { "lcs-Event", "gsm_map.lcs_Event",
13911         FT_UINT32, BASE_DEC, VALS(gsm_map_Lcs_Event_vals), 0,
13912         "SubscriberLocationReport-Arg/lcs-Event", HFILL }},
13913     { &hf_gsm_map_na_ESRD,
13914       { "na-ESRD", "gsm_map.na_ESRD",
13915         FT_BYTES, BASE_HEX, NULL, 0,
13916         "SubscriberLocationReport-Arg/na-ESRD", HFILL }},
13917     { &hf_gsm_map_na_ESRK,
13918       { "na-ESRK", "gsm_map.na_ESRK",
13919         FT_BYTES, BASE_HEX, NULL, 0,
13920         "SubscriberLocationReport-Arg/na-ESRK", HFILL }},
13921     { &hf_gsm_map_networkResource,
13922       { "networkResource", "gsm_map.networkResource",
13923         FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0,
13924         "", HFILL }},
13925     { &hf_gsm_map_extensibleSystemFailureParam,
13926       { "extensibleSystemFailureParam", "gsm_map.extensibleSystemFailureParam",
13927         FT_NONE, BASE_NONE, NULL, 0,
13928         "SystemFailureParam/extensibleSystemFailureParam", HFILL }},
13929     { &hf_gsm_map_unknownSubscriberDiagnostic,
13930       { "unknownSubscriberDiagnostic", "gsm_map.unknownSubscriberDiagnostic",
13931         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unknownSubscriberDiagnostic_vals), 0,
13932         "UnknownSubscriberParam/unknownSubscriberDiagnostic", HFILL }},
13933     { &hf_gsm_map_roamingNotAllowedCause,
13934       { "roamingNotAllowedCause", "gsm_map.roamingNotAllowedCause",
13935         FT_UINT32, BASE_DEC, VALS(gsm_map_T_roamingNotAllowedCause_vals), 0,
13936         "RoamingNotAllowedParam/roamingNotAllowedCause", HFILL }},
13937     { &hf_gsm_map_absentSubscriberReason,
13938       { "absentSubscriberReason", "gsm_map.absentSubscriberReason",
13939         FT_UINT32, BASE_DEC, VALS(gsm_map_T_absentSubscriberReason_vals), 0,
13940         "AbsentSubscriberParam/absentSubscriberReason", HFILL }},
13941     { &hf_gsm_map_ccbs_Busy,
13942       { "ccbs-Busy", "gsm_map.ccbs_Busy",
13943         FT_NONE, BASE_NONE, NULL, 0,
13944         "BusySubscriberParam/ccbs-Busy", HFILL }},
13945     { &hf_gsm_map_callBarringCause,
13946       { "callBarringCause", "gsm_map.callBarringCause",
13947         FT_UINT32, BASE_DEC, VALS(gsm_map_CallBarringCause_vals), 0,
13948         "", HFILL }},
13949     { &hf_gsm_map_extensibleCallBarredParam,
13950       { "extensibleCallBarredParam", "gsm_map.extensibleCallBarredParam",
13951         FT_NONE, BASE_NONE, NULL, 0,
13952         "CallBarredParam/extensibleCallBarredParam", HFILL }},
13953     { &hf_gsm_map_unauthorisedMessageOriginator,
13954       { "unauthorisedMessageOriginator", "gsm_map.unauthorisedMessageOriginator",
13955         FT_NONE, BASE_NONE, NULL, 0,
13956         "CallBarredParam/extensibleCallBarredParam/unauthorisedMessageOriginator", HFILL }},
13957     { &hf_gsm_map_cug_RejectCause,
13958       { "cug-RejectCause", "gsm_map.cug_RejectCause",
13959         FT_UINT32, BASE_DEC, VALS(gsm_map_T_cug_RejectCause_vals), 0,
13960         "Cug-RejectParam/cug-RejectCause", HFILL }},
13961     { &hf_gsm_map_gprsConnectionSuspended,
13962       { "gprsConnectionSuspended", "gsm_map.gprsConnectionSuspended",
13963         FT_NONE, BASE_NONE, NULL, 0,
13964         "SubBusyForMT-SMS-Param/gprsConnectionSuspended", HFILL }},
13965     { &hf_gsm_map_sm_EnumeratedDeliveryFailureCause,
13966       { "sm-EnumeratedDeliveryFailureCause", "gsm_map.sm_EnumeratedDeliveryFailureCause",
13967         FT_UINT32, BASE_DEC, VALS(gsm_map_T_sm_EnumeratedDeliveryFailureCause_vals), 0,
13968         "Sm-DeliveryFailureCause/sm-EnumeratedDeliveryFailureCause", HFILL }},
13969     { &hf_gsm_map_diagnosticInfo,
13970       { "diagnosticInfo", "gsm_map.diagnosticInfo",
13971         FT_BYTES, BASE_HEX, NULL, 0,
13972         "Sm-DeliveryFailureCause/diagnosticInfo", HFILL }},
13973     { &hf_gsm_map_unauthorizedLCSClient_Diagnostic,
13974       { "unauthorizedLCSClient-Diagnostic", "gsm_map.unauthorizedLCSClient_Diagnostic",
13975         FT_UINT32, BASE_DEC, VALS(gsm_map_T_unauthorizedLCSClient_Diagnostic_vals), 0,
13976         "UnauthorizedLCSClient-Param/unauthorizedLCSClient-Diagnostic", HFILL }},
13977     { &hf_gsm_map_positionMethodFailure_Diagnostic,
13978       { "positionMethodFailure-Diagnostic", "gsm_map.positionMethodFailure_Diagnostic",
13979         FT_UINT32, BASE_DEC, VALS(gsm_map_T_positionMethodFailure_Diagnostic_vals), 0,
13980         "PositionMethodFailure-Param/positionMethodFailure-Diagnostic", HFILL }},
13981     { &hf_gsm_map_privateExtensionList,
13982       { "privateExtensionList", "gsm_map.privateExtensionList",
13983         FT_NONE, BASE_NONE, NULL, 0,
13984         "ExtensionContainer/privateExtensionList", HFILL }},
13985     { &hf_gsm_map_pcsExtensions,
13986       { "pcsExtensions", "gsm_map.pcsExtensions",
13987         FT_NONE, BASE_NONE, NULL, 0,
13988         "ExtensionContainer/pcsExtensions", HFILL }},
13989     { &hf_gsm_map_SupportedCamelPhases_phase1,
13990       { "phase1", "gsm_map.phase1",
13991         FT_BOOLEAN, 8, NULL, 0x80,
13992         "", HFILL }},
13993     { &hf_gsm_map_SupportedCamelPhases_phase2,
13994       { "phase2", "gsm_map.phase2",
13995         FT_BOOLEAN, 8, NULL, 0x40,
13996         "", HFILL }},
13997     { &hf_gsm_map_SupportedCamelPhases_phase3,
13998       { "phase3", "gsm_map.phase3",
13999         FT_BOOLEAN, 8, NULL, 0x20,
14000         "", HFILL }},
14001     { &hf_gsm_map_SupportedCamelPhases_phase4,
14002       { "phase4", "gsm_map.phase4",
14003         FT_BOOLEAN, 8, NULL, 0x10,
14004         "", HFILL }},
14005     { &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet1,
14006       { "lcsCapabilitySet1", "gsm_map.lcsCapabilitySet1",
14007         FT_BOOLEAN, 8, NULL, 0x80,
14008         "", HFILL }},
14009     { &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet2,
14010       { "lcsCapabilitySet2", "gsm_map.lcsCapabilitySet2",
14011         FT_BOOLEAN, 8, NULL, 0x40,
14012         "", HFILL }},
14013     { &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet3,
14014       { "lcsCapabilitySet3", "gsm_map.lcsCapabilitySet3",
14015         FT_BOOLEAN, 8, NULL, 0x20,
14016         "", HFILL }},
14017     { &hf_gsm_map_T_supportedLCS_CapabilitySets_lcsCapabilitySet4,
14018       { "lcsCapabilitySet4", "gsm_map.lcsCapabilitySet4",
14019         FT_BOOLEAN, 8, NULL, 0x10,
14020         "", HFILL }},
14021     { &hf_gsm_map_T_offeredCamel4CSIs_o_csi,
14022       { "o-csi", "gsm_map.o-csi",
14023         FT_BOOLEAN, 8, NULL, 0x80,
14024         "", HFILL }},
14025     { &hf_gsm_map_T_offeredCamel4CSIs_d_csi,
14026       { "d-csi", "gsm_map.d-csi",
14027         FT_BOOLEAN, 8, NULL, 0x40,
14028         "", HFILL }},
14029     { &hf_gsm_map_T_offeredCamel4CSIs_vt_csi,
14030       { "vt-csi", "gsm_map.vt-csi",
14031         FT_BOOLEAN, 8, NULL, 0x20,
14032         "", HFILL }},
14033     { &hf_gsm_map_T_offeredCamel4CSIs_t_csi,
14034       { "t-csi", "gsm_map.t-csi",
14035         FT_BOOLEAN, 8, NULL, 0x10,
14036         "", HFILL }},
14037     { &hf_gsm_map_T_offeredCamel4CSIs_mt_sms_csi,
14038       { "mt-sms-csi", "gsm_map.mt-sms-csi",
14039         FT_BOOLEAN, 8, NULL, 0x08,
14040         "", HFILL }},
14041     { &hf_gsm_map_T_offeredCamel4CSIs_mg_csi,
14042       { "mg-csi", "gsm_map.mg-csi",
14043         FT_BOOLEAN, 8, NULL, 0x04,
14044         "", HFILL }},
14045     { &hf_gsm_map_T_offeredCamel4CSIs_psi_enhancements,
14046       { "psi-enhancements", "gsm_map.psi-enhancements",
14047         FT_BOOLEAN, 8, NULL, 0x02,
14048         "", HFILL }},
14049     { &hf_gsm_map_T_requestedEquipmentInfo_equipmentStatus,
14050       { "equipmentStatus", "gsm_map.equipmentStatus",
14051         FT_BOOLEAN, 8, NULL, 0x80,
14052         "", HFILL }},
14053     { &hf_gsm_map_T_requestedEquipmentInfo_bmuef,
14054       { "bmuef", "gsm_map.bmuef",
14055         FT_BOOLEAN, 8, NULL, 0x40,
14056         "", HFILL }},
14057     { &hf_gsm_map_Odb_GeneralData_allOGCallsBarred,
14058       { "allOGCallsBarred", "gsm_map.allOGCallsBarred",
14059         FT_BOOLEAN, 8, NULL, 0x80,
14060         "", HFILL }},
14061     { &hf_gsm_map_Odb_GeneralData_internationalOGCallsBarred,
14062       { "internationalOGCallsBarred", "gsm_map.internationalOGCallsBarred",
14063         FT_BOOLEAN, 8, NULL, 0x40,
14064         "", HFILL }},
14065     { &hf_gsm_map_Odb_GeneralData_internationalOGCallsNotToHPLMNCountryBarred,
14066       { "internationalOGCallsNotToHPLMNCountryBarred", "gsm_map.internationalOGCallsNotToHPLMNCountryBarred",
14067         FT_BOOLEAN, 8, NULL, 0x20,
14068         "", HFILL }},
14069     { &hf_gsm_map_Odb_GeneralData_premiumRateInformationOGCallsBarred,
14070       { "premiumRateInformationOGCallsBarred", "gsm_map.premiumRateInformationOGCallsBarred",
14071         FT_BOOLEAN, 8, NULL, 0x10,
14072         "", HFILL }},
14073     { &hf_gsm_map_Odb_GeneralData_premiumRateEntertainementOGCallsBarred,
14074       { "premiumRateEntertainementOGCallsBarred", "gsm_map.premiumRateEntertainementOGCallsBarred",
14075         FT_BOOLEAN, 8, NULL, 0x08,
14076         "", HFILL }},
14077     { &hf_gsm_map_Odb_GeneralData_ssAccessBarred,
14078       { "ssAccessBarred", "gsm_map.ssAccessBarred",
14079         FT_BOOLEAN, 8, NULL, 0x04,
14080         "", HFILL }},
14081     { &hf_gsm_map_Odb_GeneralData_interzonalOGCallsBarred,
14082       { "interzonalOGCallsBarred", "gsm_map.interzonalOGCallsBarred",
14083         FT_BOOLEAN, 8, NULL, 0x02,
14084         "", HFILL }},
14085     { &hf_gsm_map_Odb_GeneralData_interzonalOGCallsNotToHPLMNCountryBarred,
14086       { "interzonalOGCallsNotToHPLMNCountryBarred", "gsm_map.interzonalOGCallsNotToHPLMNCountryBarred",
14087         FT_BOOLEAN, 8, NULL, 0x01,
14088         "", HFILL }},
14089     { &hf_gsm_map_Odb_GeneralData_interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred,
14090       { "interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred", "gsm_map.interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred",
14091         FT_BOOLEAN, 8, NULL, 0x80,
14092         "", HFILL }},
14093     { &hf_gsm_map_Odb_GeneralData_allECTBarred,
14094       { "allECTBarred", "gsm_map.allECTBarred",
14095         FT_BOOLEAN, 8, NULL, 0x40,
14096         "", HFILL }},
14097     { &hf_gsm_map_Odb_GeneralData_chargeableECTBarred,
14098       { "chargeableECTBarred", "gsm_map.chargeableECTBarred",
14099         FT_BOOLEAN, 8, NULL, 0x20,
14100         "", HFILL }},
14101     { &hf_gsm_map_Odb_GeneralData_internationalECTBarred,
14102       { "internationalECTBarred", "gsm_map.internationalECTBarred",
14103         FT_BOOLEAN, 8, NULL, 0x10,
14104         "", HFILL }},
14105     { &hf_gsm_map_Odb_GeneralData_interzonalECTBarred,
14106       { "interzonalECTBarred", "gsm_map.interzonalECTBarred",
14107         FT_BOOLEAN, 8, NULL, 0x08,
14108         "", HFILL }},
14109     { &hf_gsm_map_Odb_GeneralData_doublyChargeableECTBarred,
14110       { "doublyChargeableECTBarred", "gsm_map.doublyChargeableECTBarred",
14111         FT_BOOLEAN, 8, NULL, 0x04,
14112         "", HFILL }},
14113     { &hf_gsm_map_Odb_GeneralData_multipleECTBarred,
14114       { "multipleECTBarred", "gsm_map.multipleECTBarred",
14115         FT_BOOLEAN, 8, NULL, 0x02,
14116         "", HFILL }},
14117     { &hf_gsm_map_Odb_GeneralData_allPacketOrientedServicesBarred,
14118       { "allPacketOrientedServicesBarred", "gsm_map.allPacketOrientedServicesBarred",
14119         FT_BOOLEAN, 8, NULL, 0x01,
14120         "", HFILL }},
14121     { &hf_gsm_map_Odb_GeneralData_roamerAccessToHPLMN_AP_Barred,
14122       { "roamerAccessToHPLMN-AP-Barred", "gsm_map.roamerAccessToHPLMN-AP-Barred",
14123         FT_BOOLEAN, 8, NULL, 0x80,
14124         "", HFILL }},
14125     { &hf_gsm_map_Odb_GeneralData_roamerAccessToVPLMN_AP_Barred,
14126       { "roamerAccessToVPLMN-AP-Barred", "gsm_map.roamerAccessToVPLMN-AP-Barred",
14127         FT_BOOLEAN, 8, NULL, 0x40,
14128         "", HFILL }},
14129     { &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNOG_CallsBarred,
14130       { "roamingOutsidePLMNOG-CallsBarred", "gsm_map.roamingOutsidePLMNOG-CallsBarred",
14131         FT_BOOLEAN, 8, NULL, 0x20,
14132         "", HFILL }},
14133     { &hf_gsm_map_Odb_GeneralData_allIC_CallsBarred,
14134       { "allIC-CallsBarred", "gsm_map.allIC-CallsBarred",
14135         FT_BOOLEAN, 8, NULL, 0x10,
14136         "", HFILL }},
14137     { &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNIC_CallsBarred,
14138       { "roamingOutsidePLMNIC-CallsBarred", "gsm_map.roamingOutsidePLMNIC-CallsBarred",
14139         FT_BOOLEAN, 8, NULL, 0x08,
14140         "", HFILL }},
14141     { &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred,
14142       { "roamingOutsidePLMNICountryIC-CallsBarred", "gsm_map.roamingOutsidePLMNICountryIC-CallsBarred",
14143         FT_BOOLEAN, 8, NULL, 0x04,
14144         "", HFILL }},
14145     { &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMN_Barred,
14146       { "roamingOutsidePLMN-Barred", "gsm_map.roamingOutsidePLMN-Barred",
14147         FT_BOOLEAN, 8, NULL, 0x02,
14148         "", HFILL }},
14149     { &hf_gsm_map_Odb_GeneralData_roamingOutsidePLMN_CountryBarred,
14150       { "roamingOutsidePLMN-CountryBarred", "gsm_map.roamingOutsidePLMN-CountryBarred",
14151         FT_BOOLEAN, 8, NULL, 0x01,
14152         "", HFILL }},
14153     { &hf_gsm_map_Odb_GeneralData_registrationAllCF_Barred,
14154       { "registrationAllCF-Barred", "gsm_map.registrationAllCF-Barred",
14155         FT_BOOLEAN, 8, NULL, 0x80,
14156         "", HFILL }},
14157     { &hf_gsm_map_Odb_GeneralData_registrationCFNotToHPLMN_Barred,
14158       { "registrationCFNotToHPLMN-Barred", "gsm_map.registrationCFNotToHPLMN-Barred",
14159         FT_BOOLEAN, 8, NULL, 0x40,
14160         "", HFILL }},
14161     { &hf_gsm_map_Odb_GeneralData_registrationInterzonalCF_Barred,
14162       { "registrationInterzonalCF-Barred", "gsm_map.registrationInterzonalCF-Barred",
14163         FT_BOOLEAN, 8, NULL, 0x20,
14164         "", HFILL }},
14165     { &hf_gsm_map_Odb_GeneralData_registrationInterzonalCFNotToHPLMN_Barred,
14166       { "registrationInterzonalCFNotToHPLMN-Barred", "gsm_map.registrationInterzonalCFNotToHPLMN-Barred",
14167         FT_BOOLEAN, 8, NULL, 0x10,
14168         "", HFILL }},
14169     { &hf_gsm_map_Odb_GeneralData_registrationInternationalCF_Barred,
14170       { "registrationInternationalCF-Barred", "gsm_map.registrationInternationalCF-Barred",
14171         FT_BOOLEAN, 8, NULL, 0x08,
14172         "", HFILL }},
14173     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType1,
14174       { "plmnSpecificBarringType1", "gsm_map.plmnSpecificBarringType1",
14175         FT_BOOLEAN, 8, NULL, 0x80,
14176         "", HFILL }},
14177     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType2,
14178       { "plmnSpecificBarringType2", "gsm_map.plmnSpecificBarringType2",
14179         FT_BOOLEAN, 8, NULL, 0x40,
14180         "", HFILL }},
14181     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType3,
14182       { "plmnSpecificBarringType3", "gsm_map.plmnSpecificBarringType3",
14183         FT_BOOLEAN, 8, NULL, 0x20,
14184         "", HFILL }},
14185     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType4,
14186       { "plmnSpecificBarringType4", "gsm_map.plmnSpecificBarringType4",
14187         FT_BOOLEAN, 8, NULL, 0x10,
14188         "", HFILL }},
14189     { &hf_gsm_map_ServiceIndicator_clirInvoked,
14190       { "clirInvoked", "gsm_map.clirInvoked",
14191         FT_BOOLEAN, 8, NULL, 0x80,
14192         "", HFILL }},
14193     { &hf_gsm_map_ServiceIndicator_camelInvoked,
14194       { "camelInvoked", "gsm_map.camelInvoked",
14195         FT_BOOLEAN, 8, NULL, 0x40,
14196         "", HFILL }},
14197     { &hf_gsm_map_T_mw_Status_scAddressNotIncluded,
14198       { "scAddressNotIncluded", "gsm_map.scAddressNotIncluded",
14199         FT_BOOLEAN, 8, NULL, 0x80,
14200         "", HFILL }},
14201     { &hf_gsm_map_T_mw_Status_mnrfSet,
14202       { "mnrfSet", "gsm_map.mnrfSet",
14203         FT_BOOLEAN, 8, NULL, 0x40,
14204         "", HFILL }},
14205     { &hf_gsm_map_T_mw_Status_mcefSet,
14206       { "mcefSet", "gsm_map.mcefSet",
14207         FT_BOOLEAN, 8, NULL, 0x20,
14208         "", HFILL }},
14209     { &hf_gsm_map_T_mw_Status_mnrgSet,
14210       { "mnrgSet", "gsm_map.mnrgSet",
14211         FT_BOOLEAN, 8, NULL, 0x10,
14212         "", HFILL }},
14213     { &hf_gsm_map_T_specificCSIDeletedList_o_csi,
14214       { "o-csi", "gsm_map.o-csi",
14215         FT_BOOLEAN, 8, NULL, 0x80,
14216         "", HFILL }},
14217     { &hf_gsm_map_T_specificCSIDeletedList_ss_csi,
14218       { "ss-csi", "gsm_map.ss-csi",
14219         FT_BOOLEAN, 8, NULL, 0x40,
14220         "", HFILL }},
14221     { &hf_gsm_map_T_specificCSIDeletedList_tif_csi,
14222       { "tif-csi", "gsm_map.tif-csi",
14223         FT_BOOLEAN, 8, NULL, 0x20,
14224         "", HFILL }},
14225     { &hf_gsm_map_T_specificCSIDeletedList_d_csi,
14226       { "d-csi", "gsm_map.d-csi",
14227         FT_BOOLEAN, 8, NULL, 0x10,
14228         "", HFILL }},
14229     { &hf_gsm_map_T_specificCSIDeletedList_vt_csi,
14230       { "vt-csi", "gsm_map.vt-csi",
14231         FT_BOOLEAN, 8, NULL, 0x08,
14232         "", HFILL }},
14233     { &hf_gsm_map_T_specificCSIDeletedList_mo_sms_csi,
14234       { "mo-sms-csi", "gsm_map.mo-sms-csi",
14235         FT_BOOLEAN, 8, NULL, 0x04,
14236         "", HFILL }},
14237     { &hf_gsm_map_T_specificCSIDeletedList_m_csi,
14238       { "m-csi", "gsm_map.m-csi",
14239         FT_BOOLEAN, 8, NULL, 0x02,
14240         "", HFILL }},
14241     { &hf_gsm_map_T_specificCSIDeletedList_gprs_csi,
14242       { "gprs-csi", "gsm_map.gprs-csi",
14243         FT_BOOLEAN, 8, NULL, 0x01,
14244         "", HFILL }},
14245     { &hf_gsm_map_T_specificCSIDeletedList_t_csi,
14246       { "t-csi", "gsm_map.t-csi",
14247         FT_BOOLEAN, 8, NULL, 0x80,
14248         "", HFILL }},
14249     { &hf_gsm_map_T_specificCSIDeletedList_mt_sms_csi,
14250       { "mt-sms-csi", "gsm_map.mt-sms-csi",
14251         FT_BOOLEAN, 8, NULL, 0x40,
14252         "", HFILL }},
14253     { &hf_gsm_map_T_specificCSIDeletedList_mg_csi,
14254       { "mg-csi", "gsm_map.mg-csi",
14255         FT_BOOLEAN, 8, NULL, 0x20,
14256         "", HFILL }},
14257     { &hf_gsm_map_T_specificCSIDeletedList_o_IM_CSI,
14258       { "o-IM-CSI", "gsm_map.o-IM-CSI",
14259         FT_BOOLEAN, 8, NULL, 0x10,
14260         "", HFILL }},
14261     { &hf_gsm_map_T_specificCSIDeletedList_d_IM_CSI,
14262       { "d-IM-CSI", "gsm_map.d-IM-CSI",
14263         FT_BOOLEAN, 8, NULL, 0x08,
14264         "", HFILL }},
14265     { &hf_gsm_map_T_specificCSIDeletedList_vt_IM_CSI,
14266       { "vt-IM-CSI", "gsm_map.vt-IM-CSI",
14267         FT_BOOLEAN, 8, NULL, 0x04,
14268         "", HFILL }},
14269     { &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase1,
14270       { "phase1", "gsm_map.phase1",
14271         FT_BOOLEAN, 8, NULL, 0x80,
14272         "", HFILL }},
14273     { &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase2,
14274       { "phase2", "gsm_map.phase2",
14275         FT_BOOLEAN, 8, NULL, 0x40,
14276         "", HFILL }},
14277     { &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase3,
14278       { "phase3", "gsm_map.phase3",
14279         FT_BOOLEAN, 8, NULL, 0x20,
14280         "", HFILL }},
14281     { &hf_gsm_map_T_supportedVLR_CAMEL_Phases_phase4,
14282       { "phase4", "gsm_map.phase4",
14283         FT_BOOLEAN, 8, NULL, 0x10,
14284         "", HFILL }},
14285     { &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase1,
14286       { "phase1", "gsm_map.phase1",
14287         FT_BOOLEAN, 8, NULL, 0x80,
14288         "", HFILL }},
14289     { &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase2,
14290       { "phase2", "gsm_map.phase2",
14291         FT_BOOLEAN, 8, NULL, 0x40,
14292         "", HFILL }},
14293     { &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase3,
14294       { "phase3", "gsm_map.phase3",
14295         FT_BOOLEAN, 8, NULL, 0x20,
14296         "", HFILL }},
14297     { &hf_gsm_map_T_supportedSGSN_CAMEL_Phases_phase4,
14298       { "phase4", "gsm_map.phase4",
14299         FT_BOOLEAN, 8, NULL, 0x10,
14300         "", HFILL }},
14301     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_o_csi,
14302       { "o-csi", "gsm_map.o-csi",
14303         FT_BOOLEAN, 8, NULL, 0x80,
14304         "", HFILL }},
14305     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_d_csi,
14306       { "d-csi", "gsm_map.d-csi",
14307         FT_BOOLEAN, 8, NULL, 0x40,
14308         "", HFILL }},
14309     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_vt_csi,
14310       { "vt-csi", "gsm_map.vt-csi",
14311         FT_BOOLEAN, 8, NULL, 0x20,
14312         "", HFILL }},
14313     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_t_csi,
14314       { "t-csi", "gsm_map.t-csi",
14315         FT_BOOLEAN, 8, NULL, 0x10,
14316         "", HFILL }},
14317     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_mt_sms_csi,
14318       { "mt-sms-csi", "gsm_map.mt-sms-csi",
14319         FT_BOOLEAN, 8, NULL, 0x08,
14320         "", HFILL }},
14321     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_mg_csi,
14322       { "mg-csi", "gsm_map.mg-csi",
14323         FT_BOOLEAN, 8, NULL, 0x04,
14324         "", HFILL }},
14325     { &hf_gsm_map_T_offeredCamel4CSIsInVLR_psi_enhancements,
14326       { "psi-enhancements", "gsm_map.psi-enhancements",
14327         FT_BOOLEAN, 8, NULL, 0x02,
14328         "", HFILL }},
14329     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_o_csi,
14330       { "o-csi", "gsm_map.o-csi",
14331         FT_BOOLEAN, 8, NULL, 0x80,
14332         "", HFILL }},
14333     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_d_csi,
14334       { "d-csi", "gsm_map.d-csi",
14335         FT_BOOLEAN, 8, NULL, 0x40,
14336         "", HFILL }},
14337     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_vt_csi,
14338       { "vt-csi", "gsm_map.vt-csi",
14339         FT_BOOLEAN, 8, NULL, 0x20,
14340         "", HFILL }},
14341     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_t_csi,
14342       { "t-csi", "gsm_map.t-csi",
14343         FT_BOOLEAN, 8, NULL, 0x10,
14344         "", HFILL }},
14345     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_mt_sms_csi,
14346       { "mt-sms-csi", "gsm_map.mt-sms-csi",
14347         FT_BOOLEAN, 8, NULL, 0x08,
14348         "", HFILL }},
14349     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_mg_csi,
14350       { "mg-csi", "gsm_map.mg-csi",
14351         FT_BOOLEAN, 8, NULL, 0x04,
14352         "", HFILL }},
14353     { &hf_gsm_map_T_offeredCamel4CSIsInSGSN_psi_enhancements,
14354       { "psi-enhancements", "gsm_map.psi-enhancements",
14355         FT_BOOLEAN, 8, NULL, 0x02,
14356         "", HFILL }},
14357
14358 /*--- End of included file: packet-gsm_map-hfarr.c ---*/
14359
14360   };
14361
14362   /* List of subtrees */
14363   static gint *ett[] = {
14364     &ett_gsm_map,
14365     &ett_gsm_map_InvokeId,
14366     &ett_gsm_map_InvokePDU,
14367     &ett_gsm_map_ReturnResultPDU,
14368         &ett_gsm_map_ReturnErrorPDU,
14369     &ett_gsm_map_ReturnResult_result,
14370         &ett_gsm_map_ReturnError_result,
14371     &ett_gsm_map_GSMMAPPDU,
14372
14373 /*--- Included file: packet-gsm_map-ettarr.c ---*/
14374
14375     &ett_gsm_map_Bss_APDU,
14376     &ett_gsm_map_An_APDU,
14377     &ett_gsm_map_SupportedCamelPhases,
14378     &ett_gsm_map_Vlr_Capability,
14379     &ett_gsm_map_T_superChargerSupportedInServingNetworkEntity,
14380     &ett_gsm_map_T_supportedLCS_CapabilitySets,
14381     &ett_gsm_map_T_offeredCamel4CSIs,
14382     &ett_gsm_map_UpdateLocationArg,
14383     &ett_gsm_map_T_add_info,
14384     &ett_gsm_map_UpdateLocationRes,
14385     &ett_gsm_map_PrivateExtensionList,
14386     &ett_gsm_map_PrivateExtension,
14387     &ett_gsm_map_PcsExtensions,
14388     &ett_gsm_map_CancelLocationArg,
14389     &ett_gsm_map_T_identity,
14390     &ett_gsm_map_T_imsi_WithLMSI,
14391     &ett_gsm_map_CancelLocationRes,
14392     &ett_gsm_map_PurgeMS_Arg,
14393     &ett_gsm_map_PurgeMS_Res,
14394     &ett_gsm_map_SendIdentificationRes,
14395     &ett_gsm_map_SendId_authenticationSetList,
14396     &ett_gsm_map_T_authenticationSetList_item,
14397     &ett_gsm_map_PrepareHO_Arg,
14398     &ett_gsm_map_PrepareHandoverV3Arg,
14399     &ett_gsm_map_T_allowedUMTS_Algorithms,
14400     &ett_gsm_map_T_radioResourceList,
14401     &ett_gsm_map_T_radioResourceList_item,
14402     &ett_gsm_map_T_bssmap_ServiceHandoverList,
14403     &ett_gsm_map_T_bssmap_ServiceHandoverList_item,
14404     &ett_gsm_map_T_iuSupportedCodecsList,
14405     &ett_gsm_map_T_utranCodecList,
14406     &ett_gsm_map_T_geranCodecList,
14407     &ett_gsm_map_T_uesbi_Iu,
14408     &ett_gsm_map_PrepareHO_Res,
14409     &ett_gsm_map_PrepareHandoverV3Res,
14410     &ett_gsm_map_T_relocationNumberList,
14411     &ett_gsm_map_T_relocationNumberList_item,
14412     &ett_gsm_map_T_selectedUMTS_Algorithms,
14413     &ett_gsm_map_T_chosenRadioResourceInformation,
14414     &ett_gsm_map_T_iuAvailableCodecsList,
14415     &ett_gsm_map_SendEndSignalV9Arg,
14416     &ett_gsm_map_PrepareSubsequentHO_Arg,
14417     &ett_gsm_map_SendAuthenticationInfoArgV3,
14418     &ett_gsm_map_T_re_synchronisationInfo,
14419     &ett_gsm_map_SendAuthenticationInfoRes,
14420     &ett_gsm_map_SendAuthenticationInfoRes_item,
14421     &ett_gsm_map_SendAuthenticationInfoV3Res,
14422     &ett_gsm_map_T_authenticationSetList,
14423     &ett_gsm_map_T_tripletList,
14424     &ett_gsm_map_T_tripletList_item,
14425     &ett_gsm_map_T_quintupletList,
14426     &ett_gsm_map_T_quintupletList_item,
14427     &ett_gsm_map_CheckIMEIv2Arg,
14428     &ett_gsm_map_T_requestedEquipmentInfo,
14429     &ett_gsm_map_ChekIMEIv3Res,
14430     &ett_gsm_map_T_bmuef,
14431     &ett_gsm_map_BasicService,
14432     &ett_gsm_map_BasicServiceGroupList,
14433     &ett_gsm_map_Odb_GeneralData,
14434     &ett_gsm_map_Odb_HPLMN_Data,
14435     &ett_gsm_map_BcsmCamelTDPData,
14436     &ett_gsm_map_BcsmCamelTDPDataList,
14437     &ett_gsm_map_O_CSI,
14438     &ett_gsm_map_InsertSubscriberDataArg,
14439     &ett_gsm_map_bearerServiceList,
14440     &ett_gsm_map_SEQUENCE_SIZE_1_20_OF_Teleservice,
14441     &ett_gsm_map_T_provisionedSS,
14442     &ett_gsm_map_T_provisionedSS_item,
14443     &ett_gsm_map_T_cug_Info,
14444     &ett_gsm_map_T_cug_SubscriptionList,
14445     &ett_gsm_map_T_cug_SubscriptionList_item,
14446     &ett_gsm_map_T_cug_FeatureList,
14447     &ett_gsm_map_T_cug_FeatureList_item,
14448     &ett_gsm_map_T_emlpp_Info,
14449     &ett_gsm_map_T_regionalSubscriptionData,
14450     &ett_gsm_map_T_vbsSubscriptionData,
14451     &ett_gsm_map_T_vbsSubscriptionData_item,
14452     &ett_gsm_map_T_vgcsSubscriptionData,
14453     &ett_gsm_map_T_vgcsSubscriptionData_item,
14454     &ett_gsm_map_T_vlrCamelSubscriptionInfo,
14455     &ett_gsm_map_ss_CSI,
14456     &ett_gsm_map_T_gprsSubscriptionData,
14457     &ett_gsm_map_T_gprsDataList,
14458     &ett_gsm_map_T_gprsDataList_item,
14459     &ett_gsm_map_T_lsaInformation,
14460     &ett_gsm_map_T_lsaDataList,
14461     &ett_gsm_map_T_lsaDataList_item,
14462     &ett_gsm_map_T_lcsInformation,
14463     &ett_gsm_map_T_gmlc_List,
14464     &ett_gsm_map_T_lcs_PrivacyExceptionList,
14465     &ett_gsm_map_T_lcs_PrivacyExceptionList_item,
14466     &ett_gsm_map_T_externalClientList,
14467     &ett_gsm_map_T_externalClientList_item,
14468     &ett_gsm_map_T_clientIdentity,
14469     &ett_gsm_map_T_plmnClientList,
14470     &ett_gsm_map_T_molr_List,
14471     &ett_gsm_map_T_molr_List_item,
14472     &ett_gsm_map_InsertSubscriberDataRes,
14473     &ett_gsm_map_ss_List,
14474     &ett_gsm_map_Ss_CamelData,
14475     &ett_gsm_map_T_ss_EventList,
14476     &ett_gsm_map_CallBarringInfo,
14477     &ett_gsm_map_CallBarringFeatureList,
14478     &ett_gsm_map_CallBarringFeatureList_item,
14479     &ett_gsm_map_ForwardingFeatureList,
14480     &ett_gsm_map_DestinationNumberCriteria,
14481     &ett_gsm_map_T_destinationNumberList,
14482     &ett_gsm_map_T_destinationNumberLengthList,
14483     &ett_gsm_map_ForwardingInfo,
14484     &ett_gsm_map_SEQUENCE_SIZE_1_32_OF_ForwardingFeatureList,
14485     &ett_gsm_map_Naea_PreferredCI,
14486     &ett_gsm_map_O_BcsmCamelTDP_CriteriaList,
14487     &ett_gsm_map_O_BcsmCamelTDP_CriteriaList_item,
14488     &ett_gsm_map_Ss_SubscriptionOption,
14489     &ett_gsm_map_DeleteSubscriberDataArg,
14490     &ett_gsm_map_T_gprsSubscriptionDataWithdraw,
14491     &ett_gsm_map_T_contextIdList,
14492     &ett_gsm_map_T_lsaInformationWithdraw,
14493     &ett_gsm_map_T_lsaIdentityList,
14494     &ett_gsm_map_DeleteSubscriberDataRes,
14495     &ett_gsm_map_ResetArg,
14496     &ett_gsm_map_T_hlr_List,
14497     &ett_gsm_map_RestoreDataArg,
14498     &ett_gsm_map_RestoreDataRes,
14499     &ett_gsm_map_ActivateTraceModeArg,
14500     &ett_gsm_map_ActivateTraceModeRes,
14501     &ett_gsm_map_DeactivateTraceModeArg,
14502     &ett_gsm_map_DeactivateTraceModeRes,
14503     &ett_gsm_map_SendRoutingInfoArg,
14504     &ett_gsm_map_T_camelInfo,
14505     &ett_gsm_map_SendRoutingInfoRes,
14506     &ett_gsm_map_T_extendedRoutingInfo,
14507     &ett_gsm_map_T_routingInfo,
14508     &ett_gsm_map_T_camelRoutingInfo,
14509     &ett_gsm_map_T_gmscCamelSubscriptionInfo,
14510     &ett_gsm_map_t_CSI,
14511     &ett_gsm_map_T_ccbs_Indicators,
14512     &ett_gsm_map_SubscriberState,
14513     &ett_gsm_map_LocationInformation,
14514     &ett_gsm_map_T_cellIdOrLAI,
14515     &ett_gsm_map_SubscriberInfo,
14516     &ett_gsm_map_T_locationInformationGPRS,
14517     &ett_gsm_map_T_cellGlobalIdOrServiceAreaIdOrLAI,
14518     &ett_gsm_map_T_ps_SubscriberState,
14519     &ett_gsm_map_T_ps_PDP_ActiveNotReachableForPaging,
14520     &ett_gsm_map_T_ps_PDP_ActiveNotReachableForPaging_item,
14521     &ett_gsm_map_T_ps_PDP_ActiveReachableForPaging,
14522     &ett_gsm_map_T_ps_PDP_ActiveReachableForPaging_item,
14523     &ett_gsm_map_T_gprs_MS_Class,
14524     &ett_gsm_map_T_mnpInfoRes,
14525     &ett_gsm_map_AdditionalSignalInfo,
14526     &ett_gsm_map_Cug_CheckInfo,
14527     &ett_gsm_map_ForwardingData,
14528     &ett_gsm_map_ProvideRoamingNumberArg,
14529     &ett_gsm_map_ProvideRoamingNumberRes,
14530     &ett_gsm_map_ResumeCallHandlingArg,
14531     &ett_gsm_map_T_uu_Data,
14532     &ett_gsm_map_ResumeCallHandlingRes,
14533     &ett_gsm_map_ProvideSIWFSNumberArg,
14534     &ett_gsm_map_ProvideSIWFSNumberRes,
14535     &ett_gsm_map_SIWFSSignallingModifyArg,
14536     &ett_gsm_map_SIWFSSignallingModifyRes,
14537     &ett_gsm_map_SetReportingStateArg,
14538     &ett_gsm_map_SetReportingStateRes,
14539     &ett_gsm_map_StatusReportArg,
14540     &ett_gsm_map_T_eventReportData,
14541     &ett_gsm_map_T_callReportdata,
14542     &ett_gsm_map_StatusReportRes,
14543     &ett_gsm_map_RemoteUserFreeArg,
14544     &ett_gsm_map_RemoteUserFreeRes,
14545     &ett_gsm_map_Ss_Data,
14546     &ett_gsm_map_RegisterSS_Arg,
14547     &ett_gsm_map_Ss_Info,
14548     &ett_gsm_map_Ccbs_Feature,
14549     &ett_gsm_map_Ss_ForBS,
14550     &ett_gsm_map_InterrogateSS_Res,
14551     &ett_gsm_map_SEQUENCE_SIZE_1_13_OF_ForwardingFeatureList,
14552     &ett_gsm_map_T_genericServiceInfo,
14553     &ett_gsm_map_T_ccbs_FeatureList,
14554     &ett_gsm_map_T_ccbs_FeatureList_item,
14555     &ett_gsm_map_Ussd_Arg,
14556     &ett_gsm_map_Ussd_Res,
14557     &ett_gsm_map_ServiceIndicator,
14558     &ett_gsm_map_RegisterCC_EntryArg,
14559     &ett_gsm_map_T_ccbs_Data,
14560     &ett_gsm_map_RegisterCC_EntryRes,
14561     &ett_gsm_map_EraseCC_EntryArg,
14562     &ett_gsm_map_EraseCC_EntryRes,
14563     &ett_gsm_map_RoutingInfoForSMArg,
14564     &ett_gsm_map_RoutingInfoForSMRes,
14565     &ett_gsm_map_T_locationInfoWithLMSI,
14566     &ett_gsm_map_T_additional_Number,
14567     &ett_gsm_map_Mo_forwardSM_Arg,
14568     &ett_gsm_map_Mo_forwardSM_Res,
14569     &ett_gsm_map_Sm_RP_OA,
14570     &ett_gsm_map_Sm_RP_DA,
14571     &ett_gsm_map_Mt_forwardSM_Arg,
14572     &ett_gsm_map_Mt_forwardSM_Res,
14573     &ett_gsm_map_ReportSM_DeliveryStatusArg,
14574     &ett_gsm_map_ReportSM_DeliveryStatusRes,
14575     &ett_gsm_map_InformServiceCentreArg,
14576     &ett_gsm_map_T_mw_Status,
14577     &ett_gsm_map_AlertServiceCentreArg,
14578     &ett_gsm_map_ReadyForSM_Arg,
14579     &ett_gsm_map_ReadyForSM_Res,
14580     &ett_gsm_map_ProvideSubscriberInfoArg,
14581     &ett_gsm_map_ProvideSubscriberInfoRes,
14582     &ett_gsm_map_RequestedInfo,
14583     &ett_gsm_map_AnyTimeInterrogationArg,
14584     &ett_gsm_map_AnyTimeInterrogationRes,
14585     &ett_gsm_map_AnyTimeSubscriptionInterrogationArg,
14586     &ett_gsm_map_T_requestedSubscriptionInfo,
14587     &ett_gsm_map_T_requestedSS_Info,
14588     &ett_gsm_map_AnyTimeSubscriptionInterrogationRes,
14589     &ett_gsm_map_T_callForwardingData,
14590     &ett_gsm_map_T_callBarringData,
14591     &ett_gsm_map_T_odb_Info,
14592     &ett_gsm_map_T_camel_SubscriptionInfo,
14593     &ett_gsm_map_T_d_CSI,
14594     &ett_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList,
14595     &ett_gsm_map_T_t_BCSM_CAMEL_TDP_CriteriaList_item,
14596     &ett_gsm_map_T_vt_CSI,
14597     &ett_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList,
14598     &ett_gsm_map_T_vt_BCSM_CAMEL_TDP_CriteriaList_item,
14599     &ett_gsm_map_T_gprs_CSI,
14600     &ett_gsm_map_T_gprs_CamelTDPDataList,
14601     &ett_gsm_map_T_gprs_CamelTDPDataList_item,
14602     &ett_gsm_map_T_mo_sms_CSI,
14603     &ett_gsm_map_T_m_CSI,
14604     &ett_gsm_map_T_specificCSIDeletedList,
14605     &ett_gsm_map_T_mt_sms_CSI,
14606     &ett_gsm_map_T_mt_smsCAMELTDP_CriteriaList,
14607     &ett_gsm_map_T_mt_smsCAMELTDP_CriteriaList_item,
14608     &ett_gsm_map_T_tpdu_TypeCriterion,
14609     &ett_gsm_map_T_mg_csi,
14610     &ett_gsm_map_T_o_IM_CSI,
14611     &ett_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList,
14612     &ett_gsm_map_T_o_IM_BcsmCamelTDP_CriteriaList_item,
14613     &ett_gsm_map_T_d_IM_CSI,
14614     &ett_gsm_map_T_vt_IM_CSI,
14615     &ett_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList,
14616     &ett_gsm_map_T_vt_IM_BCSM_CAMEL_TDP_CriteriaList_item,
14617     &ett_gsm_map_T_supportedVLR_CAMEL_Phases,
14618     &ett_gsm_map_T_supportedSGSN_CAMEL_Phases,
14619     &ett_gsm_map_T_offeredCamel4CSIsInVLR,
14620     &ett_gsm_map_T_offeredCamel4CSIsInSGSN,
14621     &ett_gsm_map_Sms_CAMEL_TDP_DataList,
14622     &ett_gsm_map_Sms_CAMEL_TDP_DataList_item,
14623     &ett_gsm_map_T_CauseValueCriteria,
14624     &ett_gsm_map_O_CauseValueCriteria,
14625     &ett_gsm_map_MobilityTriggers,
14626     &ett_gsm_map_BasicServiceCriteria,
14627     &ett_gsm_map_BasicServiceCriteria_item,
14628     &ett_gsm_map_Dp_AnalysedInfoCriteriaList,
14629     &ett_gsm_map_Dp_AnalysedInfoCriteriaList_item,
14630     &ett_gsm_map_SubscriberIdentity,
14631     &ett_gsm_map_AnyTimeModificationArg,
14632     &ett_gsm_map_T_modificationRequestFor_CF_Info,
14633     &ett_gsm_map_BasicService_ext,
14634     &ett_gsm_map_T_modificationRequestFor_CB_Info,
14635     &ett_gsm_map_T_modificationRequestFor_CSI,
14636     &ett_gsm_map_T_modificationRequestFor_ODB_data,
14637     &ett_gsm_map_AnyTimeModificationRes,
14638     &ett_gsm_map_Odb_data,
14639     &ett_gsm_map_Ss_InvocationNotificationArg,
14640     &ett_gsm_map_T_ss_EventSpecification,
14641     &ett_gsm_map_Ss_InvocationNotificationRes,
14642     &ett_gsm_map_PrepareGroupCallArg,
14643     &ett_gsm_map_PrepareGroupCallRes,
14644     &ett_gsm_map_SendGroupCallEndSignalArg,
14645     &ett_gsm_map_SendGroupCallEndSignalRes,
14646     &ett_gsm_map_ProcessGroupCallSignallingArg,
14647     &ett_gsm_map_ForwardGroupCallSignallingArg,
14648     &ett_gsm_map_UpdateGprsLocationArg,
14649     &ett_gsm_map_T_sgsn_Capability,
14650     &ett_gsm_map_UpdateGprsLocationRes,
14651     &ett_gsm_map_SendRoutingInfoForGprsArg,
14652     &ett_gsm_map_SendRoutingInfoForGprsRes,
14653     &ett_gsm_map_FailureReportArg,
14654     &ett_gsm_map_FailureReportRes,
14655     &ett_gsm_map_NoteMsPresentForGprsArg,
14656     &ett_gsm_map_NoteMsPresentForGprsRes,
14657     &ett_gsm_map_LcsClientExternalID,
14658     &ett_gsm_map_LcsClientName,
14659     &ett_gsm_map_Lcs_ClientID,
14660     &ett_gsm_map_LcsLocationInfo,
14661     &ett_gsm_map_ProvideSubscriberLocation_Arg,
14662     &ett_gsm_map_T_locationType,
14663     &ett_gsm_map_T_lcs_QoS,
14664     &ett_gsm_map_T_responseTime,
14665     &ett_gsm_map_ProvideSubscriberLocation_Res,
14666     &ett_gsm_map_TargetMS,
14667     &ett_gsm_map_RoutingInfoForLCS_Arg,
14668     &ett_gsm_map_RoutingInfoForLCS_Res,
14669     &ett_gsm_map_SubscriberLocationReport_Arg,
14670     &ett_gsm_map_SubscriberLocationReport_Res,
14671     &ett_gsm_map_SystemFailureParam,
14672     &ett_gsm_map_T_extensibleSystemFailureParam,
14673     &ett_gsm_map_DataMissingParam,
14674     &ett_gsm_map_UnexpectedDataParam,
14675     &ett_gsm_map_FacilityNotSupParam,
14676     &ett_gsm_map_IncompatibleTerminalParam,
14677     &ett_gsm_map_ResourceLimitationParam,
14678     &ett_gsm_map_UnknownSubscriberParam,
14679     &ett_gsm_map_NumberChangedParam,
14680     &ett_gsm_map_UnidentifiedSubParam,
14681     &ett_gsm_map_RoamingNotAllowedParam,
14682     &ett_gsm_map_IllegalSubscriberParam,
14683     &ett_gsm_map_IllegalEquipmentParam,
14684     &ett_gsm_map_BearerServNotProvParam,
14685     &ett_gsm_map_TeleservNotProvParam,
14686     &ett_gsm_map_TracingBufferFullParam,
14687     &ett_gsm_map_NoRoamingNbParam,
14688     &ett_gsm_map_AbsentSubscriberParam,
14689     &ett_gsm_map_BusySubscriberParam,
14690     &ett_gsm_map_NoSubscriberReplyParam,
14691     &ett_gsm_map_CallBarredParam,
14692     &ett_gsm_map_T_extensibleCallBarredParam,
14693     &ett_gsm_map_ForwardingFailedParam,
14694     &ett_gsm_map_Or_NotAllowedParam,
14695     &ett_gsm_map_ForwardingViolationParam,
14696     &ett_gsm_map_Cug_RejectParam,
14697     &ett_gsm_map_Ati_NotAllowedParam,
14698     &ett_gsm_map_NoGroupCallNbParam,
14699     &ett_gsm_map_Ss_IncompatibilityCause,
14700     &ett_gsm_map_ShortTermDenialParam,
14701     &ett_gsm_map_LongTermDenialParam,
14702     &ett_gsm_map_SubBusyForMT_SMS_Param,
14703     &ett_gsm_map_Sm_DeliveryFailureCause,
14704     &ett_gsm_map_MessageWaitListFullParam,
14705     &ett_gsm_map_AbsentSubscriberSM_Param,
14706     &ett_gsm_map_UnauthorizedRequestingNetwork_Param,
14707     &ett_gsm_map_UnauthorizedLCSClient_Param,
14708     &ett_gsm_map_PositionMethodFailure_Param,
14709     &ett_gsm_map_UnknownOrUnreachableLCSClient_Param,
14710     &ett_gsm_map_ExtensionContainer,
14711
14712 /*--- End of included file: packet-gsm_map-ettarr.c ---*/
14713
14714   };
14715
14716   /* Register protocol */
14717   proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
14718 /*XXX  register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map);*/
14719   /* Register fields and subtrees */
14720   proto_register_field_array(proto_gsm_map, hf, array_length(hf));
14721   proto_register_subtree_array(ett, array_length(ett));
14722
14723   sms_dissector_table = register_dissector_table("gsm_map.sms_tpdu", 
14724                                                  "GSM SMS TPDU", FT_UINT8,
14725                                                  BASE_DEC);
14726
14727   gsm_map_tap = register_tap("gsm_map");
14728   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)" );
14729   register_ber_oid_name("0.4.0.0.1.0.1.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version2(2)" );
14730   register_ber_oid_name("0.4.0.0.1.0.2.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version3(3)" );
14731   register_ber_oid_name("0.4.0.0.1.0.2.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version2(2)" );
14732   register_ber_oid_name("0.4.0.0.1.0.2.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version1(1)" );
14733   register_ber_oid_name("0.4.0.0.1.0.3.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version3(3)" );
14734   register_ber_oid_name("0.4.0.0.1.0.3.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version2(2)" );
14735   register_ber_oid_name("0.4.0.0.1.0.3.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version1(1)" );
14736   register_ber_oid_name("0.4.0.0.1.0.5.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version3(3)" );
14737   register_ber_oid_name("0.4.0.0.1.0.5.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version2(2)" );
14738   register_ber_oid_name("0.4.0.0.1.0.5.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version1(1)" );
14739   register_ber_oid_name("0.4.0.0.1.0.10.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reset(10) version2(2)" );
14740   register_ber_oid_name("0.4.0.0.1.0.10.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reset(10) version1(1)" );
14741   register_ber_oid_name("0.4.0.0.1.0.11.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version3(3)" );
14742   register_ber_oid_name("0.4.0.0.1.0.11.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version2(2)" );
14743   register_ber_oid_name("0.4.0.0.1.0.11.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version1(1)" );
14744   register_ber_oid_name("0.4.0.0.1.0.26.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) imsiRetrieval(26) version2(2)" );
14745   register_ber_oid_name("0.4.0.0.1.0.13.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) equipmentMngt(13) version2(2)" );
14746   register_ber_oid_name("0.4.0.0.1.0.13.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) equipmentMngt(13) version1(1)" );
14747   register_ber_oid_name("0.4.0.0.1.0.14.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version3(3)" );
14748   register_ber_oid_name("0.4.0.0.1.0.14.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version2(2)" );
14749   register_ber_oid_name("0.4.0.0.1.0.14.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) infoRetrieval(14) version1(1)" );
14750   register_ber_oid_name("0.4.0.0.1.0.15.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) interVlrInfoRetrieval(15) version2(2)" );
14751   register_ber_oid_name("0.4.0.0.1.0.16.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version3(3)" );
14752   register_ber_oid_name("0.4.0.0.1.0.16.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version2(2)" );
14753   register_ber_oid_name("0.4.0.0.1.0.16.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) subscriberDataMngt(16) version1(1)" );
14754   register_ber_oid_name("0.4.0.0.1.0.17.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) tracing(17) version2(2)" );
14755   register_ber_oid_name("0.4.0.0.1.0.17.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) tracing(17) version1(1)" );
14756   register_ber_oid_name("0.4.0.0.1.0.18.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkFunctionalSs(18) version2(2)" );
14757   register_ber_oid_name("0.4.0.0.1.0.18.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkFunctionalSs(18) version1(1)" );
14758   register_ber_oid_name("0.4.0.0.1.0.19.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkUnstructuredSs(19) version2(2)" );
14759   register_ber_oid_name("0.4.0.0.1.0.20.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgGateway(20) version2(2)" );
14760   register_ber_oid_name("0.4.0.0.1.0.20.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgGateway(20) version1(1)" );
14761   register_ber_oid_name("0.4.0.0.1.0.21.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgMO-Relay(21) version2(2)" );
14762   register_ber_oid_name("0.4.0.0.1.0.21.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) --shortMsgRelay--21 version1(1)" );
14763   register_ber_oid_name("0.4.0.0.1.0.23.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgAlert(23) version2(2)" );
14764   register_ber_oid_name("0.4.0.0.1.0.23.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgAlert(23) version1(1)" );
14765   register_ber_oid_name("0.4.0.0.1.0.24.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) mwdMngt(24) version2(2)" );
14766   register_ber_oid_name("0.4.0.0.1.0.24.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) mwdMngt(24) version1(1)" );
14767   register_ber_oid_name("0.4.0.0.1.0.25.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) shortMsgMT-Relay(25) version2(2)" );
14768   register_ber_oid_name("0.4.0.0.1.0.25.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) msPurging(27) version2(2)" );
14769
14770   /* Register our configuration options, particularly our ssn:s */
14771   /* Set default SSNs */
14772   range_convert_str(&global_ssn_range, "6-9", MAX_SSN);
14773   ssn_range = range_empty();
14774
14775
14776   gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);
14777
14778   prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs",
14779                                   "TCAP Subsystem numbers used for GSM MAP",
14780                                   &global_ssn_range, MAX_SSN);
14781 }
14782
14783