update gsmmap to use the new signature for the ber integer dissection helper
[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 -k -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  *
12  * $Id$
13  *
14  * Ethereal - Network traffic analyzer
15  * By Gerald Combs <gerald@ethereal.com>
16  * Copyright 1998 Gerald Combs
17  *
18  * This program is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU General Public License
20  * as published by the Free Software Foundation; either version 2
21  * of the License, or (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
31  * References: ETSI TS 129 002
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
41 #include <epan/tap.h>
42
43 #include <stdio.h>
44 #include <string.h>
45
46 #include "packet-ber.h"
47 #include "packet-gsm_map.h"
48
49 #define PNAME  "GSM_MobileAPplication"
50 #define PSNAME "GSM_MAP"
51 #define PFNAME "gsm_map"
52
53 /* Initialize the protocol and registered fields */
54 int proto_gsm_map = -1;
55 static int hf_gsm_map_invokeCmd = -1;             /* Opcode */
56 static int hf_gsm_map_invokeid = -1;              /* INTEGER */
57 static int hf_gsm_map_absent = -1;                /* NULL */
58 static int hf_gsm_map_invokeId = -1;              /* InvokeId */
59 static int hf_gsm_map_invoke = -1;                /* InvokePDU */
60 static int hf_gsm_map_returnResult = -1;                /* InvokePDU */
61 static int hf_gsm_map_returnResult_result = -1;
62 static int hf_gsm_map_getPassword = -1;  
63 static int hf_gsm_map_currentPassword = -1;  
64
65 /*--- Included file: packet-gsm_map-hf.c ---*/
66
67 static int hf_gsm_map_protocolId = -1;            /* ProtocolId */
68 static int hf_gsm_map_signalInfo = -1;            /* OCTET_STRING_SIZE_1_200 */
69 static int hf_gsm_map_extensionContainer = -1;    /* ExtensionContainer */
70 static int hf_gsm_map_supportedCamelPhases = -1;  /* SupportedCamelPhases */
71 static int hf_gsm_map_solsaSupportIndicator = -1;  /* NULL */
72 static int hf_gsm_map_imsi = -1;                  /* Imsi */
73 static int hf_gsm_map_msc_Number = -1;            /* Msc_Number */
74 static int hf_gsm_map_vlr_Number = -1;            /* Vlr_Number */
75 static int hf_gsm_map_lmsi = -1;                  /* Lmsi */
76 static int hf_gsm_map_vlr_Capability = -1;        /* Vlr_Capability */
77 static int hf_gsm_map_hlr_Number = -1;            /* Hlr_Number */
78 static int hf_gsm_map_PrivateExtensionList_item = -1;  /* PrivateExtension */
79 static int hf_gsm_map_identity = -1;              /* T_identity */
80 static int hf_gsm_map_imsi_WithLMSI = -1;         /* T_imsi_WithLMSI */
81 static int hf_gsm_map_cancellationType = -1;      /* CancellationType */
82 static int hf_gsm_map_sgsn_Number = -1;           /* Sgsn_Number */
83 static int hf_gsm_map_freezeTMSI = -1;            /* NULL */
84 static int hf_gsm_map_freezeP_TMSI = -1;          /* NULL */
85 static int hf_gsm_map_authenticationSetList = -1;  /* T_authenticationSetList */
86 static int hf_gsm_map_authenticationSetList_item = -1;  /* T_authenticationSetList_item */
87 static int hf_gsm_map_rand = -1;                  /* OCTET_STRING_SIZE_16 */
88 static int hf_gsm_map_sres = -1;                  /* OCTET_STRING_SIZE_4 */
89 static int hf_gsm_map_kc = -1;                    /* OCTET_STRING_SIZE_8 */
90 static int hf_gsm_map_targetCellId = -1;          /* OCTET_STRING_SIZE_5_7 */
91 static int hf_gsm_map_ho_NumberNotRequired = -1;  /* NULL */
92 static int hf_gsm_map_bss_APDU = -1;              /* Bss_APDU */
93 static int hf_gsm_map_handoverNumber = -1;        /* T_handoverNumber */
94 static int hf_gsm_map_targetMSC_Number = -1;      /* T_targetMSC_Number */
95 static int hf_gsm_map_numberOfRequestedVectors = -1;  /* INTEGER_1_5 */
96 static int hf_gsm_map_segmentationProhibited = -1;  /* NULL */
97 static int hf_gsm_map_immediateResponsePreferred = -1;  /* NULL */
98 static int hf_gsm_map_re_synchronisationInfo = -1;  /* T_re_synchronisationInfo */
99 static int hf_gsm_map_auts = -1;                  /* OCTET_STRING_SIZE_14 */
100 static int hf_gsm_map_requestingNodeType = -1;    /* T_requestingNodeType */
101 static int hf_gsm_map_requestingPLMN_Id = -1;     /* OCTET_STRING_SIZE_3 */
102 static int hf_gsm_map_SendAuthenticationInfoRes_item = -1;  /* SendAuthenticationInfoRes_item */
103 static int hf_gsm_map_bearerService = -1;         /* OCTET_STRING */
104 static int hf_gsm_map_teleservice = -1;           /* Teleservice */
105 static int hf_gsm_map_BasicServiceGroupList_item = -1;  /* BasicService */
106 static int hf_gsm_map_bcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
107 static int hf_gsm_map_serviceKey = -1;            /* ServiceKey */
108 static int hf_gsm_map_gsmSCFAddress = -1;         /* GsmSCF_Address */
109 static int hf_gsm_map_defaultCallHandling = -1;   /* DefaultCallHandling */
110 static int hf_gsm_map_BcsmCamelTDPDataList_item = -1;  /* BcsmCamelTDPData */
111 static int hf_gsm_map_o_BcsmCamelTDPDataList = -1;  /* BcsmCamelTDPDataList */
112 static int hf_gsm_map_camelCapabilityHandling = -1;  /* INTEGER_1_16 */
113 static int hf_gsm_map_msisdn = -1;                /* Msisdn */
114 static int hf_gsm_map_category = -1;              /* OCTET_STRING_SIZE_1 */
115 static int hf_gsm_map_subscriberStatus = -1;      /* SubscriberStatus */
116 static int hf_gsm_map_bearerServiceList = -1;     /* SEQUNCE_OF_OCTET_STRING_SIZE_1_5 */
117 static int hf_gsm_map_bearerServiceList_item = -1;  /* OCTET_STRING_SIZE_1_5 */
118 static int hf_gsm_map_teleserviceList = -1;       /* SEQUNCE_OF_Teleservice */
119 static int hf_gsm_map_teleserviceList_item = -1;  /* Teleservice */
120 static int hf_gsm_map_provisionedSS = -1;         /* T_provisionedSS */
121 static int hf_gsm_map_provisionedSS_item = -1;    /* T_provisionedSS_item */
122 static int hf_gsm_map_forwardingInfo = -1;        /* ForwardingInfo */
123 static int hf_gsm_map_callBarringInfo = -1;       /* CallBarringInfo */
124 static int hf_gsm_map_cug_Info = -1;              /* T_cug_Info */
125 static int hf_gsm_map_cug_SubscriptionList = -1;  /* T_cug_SubscriptionList */
126 static int hf_gsm_map_cug_SubscriptionList_item = -1;  /* T_cug_SubscriptionList_item */
127 static int hf_gsm_map_cug_Index = -1;             /* INTEGER_0_32767 */
128 static int hf_gsm_map_cug_Interlock = -1;         /* OCTET_STRING_SIZE_4 */
129 static int hf_gsm_map_intraCUG_Options = -1;      /* IntraCUG_Options */
130 static int hf_gsm_map_basicServiceGroupList = -1;  /* BasicServiceGroupList */
131 static int hf_gsm_map_cug_FeatureList = -1;       /* T_cug_FeatureList */
132 static int hf_gsm_map_cug_FeatureList_item = -1;  /* T_cug_FeatureList_item */
133 static int hf_gsm_map_basicService = -1;          /* BasicService */
134 static int hf_gsm_map_preferentialCUG_Indicator = -1;  /* INTEGER_0_32767 */
135 static int hf_gsm_map_interCUG_Restrictions = -1;  /* OCTET_STRING_SIZE_1 */
136 static int hf_gsm_map_ss_Data2 = -1;              /* T_ss_Data2 */
137 static int hf_gsm_map_ss_Code = -1;               /* Ss_Code */
138 static int hf_gsm_map_ss_Status = -1;             /* Ss_Status */
139 static int hf_gsm_map_ss_SubscriptionOption = -1;  /* Ss_SubscriptionOption */
140 static int hf_gsm_map_emlpp_Info = -1;            /* T_emlpp_Info */
141 static int hf_gsm_map_maximumentitledPriority = -1;  /* INTEGER_0_15 */
142 static int hf_gsm_map_defaultPriority = -1;       /* INTEGER_0_15 */
143 static int hf_gsm_map_odb_Data = -1;              /* T_odb_Data */
144 static int hf_gsm_map_odb_GeneralData = -1;       /* Odb_GeneralData */
145 static int hf_gsm_map_odb_HPLMN_Data = -1;        /* Odb_HPLMN_Data */
146 static int hf_gsm_map_roamingRestrictionDueToUnsupportedFeature = -1;  /* NULL */
147 static int hf_gsm_map_regionalSubscriptionData = -1;  /* SEQUNCE_OF_OCTET_STRING_SIZE_2 */
148 static int hf_gsm_map_regionalSubscriptionData_item = -1;  /* OCTET_STRING_SIZE_2 */
149 static int hf_gsm_map_vbsSubscriptionData = -1;   /* T_vbsSubscriptionData */
150 static int hf_gsm_map_vbsSubscriptionData_item = -1;  /* T_vbsSubscriptionData_item */
151 static int hf_gsm_map_groupid = -1;               /* OCTET_STRING_SIZE_3 */
152 static int hf_gsm_map_broadcastInitEntitlement = -1;  /* NULL */
153 static int hf_gsm_map_vgcsSubscriptionData = -1;  /* T_vgcsSubscriptionData */
154 static int hf_gsm_map_vgcsSubscriptionData_item = -1;  /* T_vgcsSubscriptionData_item */
155 static int hf_gsm_map_groupId = -1;               /* OCTET_STRING_SIZE_3 */
156 static int hf_gsm_map_vlrCamelSubscriptionInfo = -1;  /* T_vlrCamelSubscriptionInfo */
157 static int hf_gsm_map_o_CSI = -1;                 /* O_CSI */
158 static int hf_gsm_map_ss_CSI = -1;                /* T_ss_CSI */
159 static int hf_gsm_map_ss_CamelData = -1;          /* T_ss_CamelData */
160 static int hf_gsm_map_ss_EventList = -1;          /* SEQUNCE_OF_OCTET_STRING_SIZE_1 */
161 static int hf_gsm_map_ss_EventList_item = -1;     /* OCTET_STRING_SIZE_1 */
162 static int hf_gsm_map_gsmSCF_Address = -1;        /* GsmSCF_Address */
163 static int hf_gsm_map_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDP_CriteriaList */
164 static int hf_gsm_map_tif_CSI = -1;               /* NULL */
165 static int hf_gsm_map_naea_PreferredCI = -1;      /* Naea_PreferredCI */
166 static int hf_gsm_map_gprsSubscriptionData = -1;  /* T_gprsSubscriptionData */
167 static int hf_gsm_map_completeDataListIncluded = -1;  /* NULL */
168 static int hf_gsm_map_gprsDataList = -1;          /* T_gprsDataList */
169 static int hf_gsm_map_gprsDataList_item = -1;     /* T_gprsDataList_item */
170 static int hf_gsm_map_pdp_ContextId = -1;         /* INTEGER_1_50 */
171 static int hf_gsm_map_pdp_Type = -1;              /* OCTET_STRING_SIZE_2 */
172 static int hf_gsm_map_pdp_Address = -1;           /* OCTET_STRING_SIZE_1_16 */
173 static int hf_gsm_map_qos_Subscribed = -1;        /* OCTET_STRING_SIZE_3 */
174 static int hf_gsm_map_vplmnAddressAllowed = -1;   /* NULL */
175 static int hf_gsm_map_apn = -1;                   /* OCTET_STRING_SIZE_2_63 */
176 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature = -1;  /* NULL */
177 static int hf_gsm_map_networkAccessMode = -1;     /* T_networkAccessMode */
178 static int hf_gsm_map_lsaInformation = -1;        /* T_lsaInformation */
179 static int hf_gsm_map_lsaOnlyAccessIndicator = -1;  /* T_lsaOnlyAccessIndicator */
180 static int hf_gsm_map_lsaDataList = -1;           /* T_lsaDataList */
181 static int hf_gsm_map_lsaDataList_item = -1;      /* T_lsaDataList_item */
182 static int hf_gsm_map_lsaIdentity = -1;           /* OCTET_STRING_SIZE_3 */
183 static int hf_gsm_map_lsaAttributes = -1;         /* OCTET_STRING_SIZE_1 */
184 static int hf_gsm_map_lsaActiveModeIndicator = -1;  /* NULL */
185 static int hf_gsm_map_lmu_Indicator = -1;         /* NULL */
186 static int hf_gsm_map_lcsInformation = -1;        /* T_lcsInformation */
187 static int hf_gsm_map_gmlc_List = -1;             /* T_gmlc_List */
188 static int hf_gsm_map_gmlc_List_item = -1;        /* T_gmlc_List_item */
189 static int hf_gsm_map_lcs_PrivacyExceptionList = -1;  /* T_lcs_PrivacyExceptionList */
190 static int hf_gsm_map_lcs_PrivacyExceptionList_item = -1;  /* T_lcs_PrivacyExceptionList_item */
191 static int hf_gsm_map_notificationToMSUser = -1;  /* NotificationToMSUser */
192 static int hf_gsm_map_externalClientList = -1;    /* T_externalClientList */
193 static int hf_gsm_map_externalClientList_item = -1;  /* T_externalClientList_item */
194 static int hf_gsm_map_clientIdentity = -1;        /* T_clientIdentity */
195 static int hf_gsm_map_externalAddress = -1;       /* OCTET_STRING_SIZE_1_20 */
196 static int hf_gsm_map_gmlc_Restriction = -1;      /* T_gmlc_Restriction */
197 static int hf_gsm_map_plmnClientList = -1;        /* T_plmnClientList */
198 static int hf_gsm_map_plmnClientList_item = -1;   /* T_plmnClientList_item */
199 static int hf_gsm_map_molr_List = -1;             /* T_molr_List */
200 static int hf_gsm_map_molr_List_item = -1;        /* T_molr_List_item */
201 static int hf_gsm_map_ss_List = -1;               /* SEQUNCE_OF_OCTET_STRING_SIZE_1 */
202 static int hf_gsm_map_ss_List_item = -1;          /* OCTET_STRING_SIZE_1 */
203 static int hf_gsm_map_regionalSubscriptionResponse = -1;  /* RegionalSubscriptionResponse */
204 static int hf_gsm_map_callBarringFeatureList = -1;  /* T_callBarringFeatureList */
205 static int hf_gsm_map_callBarringFeatureList_item = -1;  /* T_callBarringFeatureList_item */
206 static int hf_gsm_map_forwardedToNumber = -1;     /* ForwardedToNumber */
207 static int hf_gsm_map_forwardedToSubaddress = -1;  /* ForwardedToSubaddress */
208 static int hf_gsm_map_forwardingOptions = -1;     /* ForwardingOptions */
209 static int hf_gsm_map_noReplyConditionTime = -1;  /* INTEGER */
210 static int hf_gsm_map_matchType = -1;             /* MatchType */
211 static int hf_gsm_map_destinationNumberList = -1;  /* T_destinationNumberList */
212 static int hf_gsm_map_destinationNumberList_item = -1;  /* T_destinationNumberList_item */
213 static int hf_gsm_map_destinationNumberLengthList = -1;  /* SEQUNCE_OF_INTEGER_1_15 */
214 static int hf_gsm_map_destinationNumberLengthList_item = -1;  /* INTEGER_1_15 */
215 static int hf_gsm_map_forwardingFeatureList = -1;  /* SEQUNCE_OF_ForwardingFeatureList */
216 static int hf_gsm_map_forwardingFeatureList_item = -1;  /* ForwardingFeatureList */
217 static int hf_gsm_map_naea_PreferredCIC = -1;     /* OCTET_STRING_SIZE_3 */
218 static int hf_gsm_map_O_BcsmCamelTDP_CriteriaList_item = -1;  /* O_BcsmCamelTDP_CriteriaList_item */
219 static int hf_gsm_map_o_BcsmTriggerDetectionPoint = -1;  /* BcsmTriggerDetectionPoint */
220 static int hf_gsm_map_destinationNumberCriteria = -1;  /* DestinationNumberCriteria */
221 static int hf_gsm_map_basicServiceCriteria = -1;  /* BasicServiceGroupList */
222 static int hf_gsm_map_callTypeCriteria = -1;      /* CallTypeCriteria */
223 static int hf_gsm_map_cliRestrictionOption = -1;  /* CliRestrictionOption */
224 static int hf_gsm_map_overrideCategory = -1;      /* OverrideCategory */
225 static int hf_gsm_map_basicServiceList = -1;      /* BasicServiceGroupList */
226 static int hf_gsm_map_regionalSubscriptionIdentifier = -1;  /* OCTET_STRING_SIZE_2 */
227 static int hf_gsm_map_vbsGroupIndication = -1;    /* NULL */
228 static int hf_gsm_map_vgcsGroupIndication = -1;   /* NULL */
229 static int hf_gsm_map_camelSubscriptionInfoWithdraw = -1;  /* NULL */
230 static int hf_gsm_map_gprsSubscriptionDataWithdraw = -1;  /* T_gprsSubscriptionDataWithdraw */
231 static int hf_gsm_map_allGPRSData = -1;           /* NULL */
232 static int hf_gsm_map_contextIdList = -1;         /* SEQUNCE_OF_INTEGER_1_50 */
233 static int hf_gsm_map_contextIdList_item = -1;    /* INTEGER_1_50 */
234 static int hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1;  /* NULL */
235 static int hf_gsm_map_lsaInformationWithdraw = -1;  /* T_lsaInformationWithdraw */
236 static int hf_gsm_map_allLSAData = -1;            /* NULL */
237 static int hf_gsm_map_lsaIdentityList = -1;       /* SEQUNCE_OF_OCTET_STRING_SIZE_3 */
238 static int hf_gsm_map_lsaIdentityList_item = -1;  /* OCTET_STRING_SIZE_3 */
239 static int hf_gsm_map_gmlc_ListWithdraw = -1;     /* NULL */
240 static int hf_gsm_map_hlr_List = -1;              /* SEQUNCE_OF_OCTET_STRING_SIZE_3_8 */
241 static int hf_gsm_map_hlr_List_item = -1;         /* OCTET_STRING_SIZE_3_8 */
242 static int hf_gsm_map_msNotReachable = -1;        /* NULL */
243 static int hf_gsm_map_traceReference = -1;        /* OCTET_STRING_SIZE_1_2 */
244 static int hf_gsm_map_traceType = -1;             /* INTEGER_0_255 */
245 static int hf_gsm_map_omc_Id = -1;                /* OCTET_STRING_SIZE_1_20 */
246 static int hf_gsm_map_cug_CheckInfo = -1;         /* Cug_CheckInfo */
247 static int hf_gsm_map_numberOfForwarding = -1;    /* INTEGER_1_5 */
248 static int hf_gsm_map_interrogationType = -1;     /* T_interrogationType */
249 static int hf_gsm_map_or_Interrogation = -1;      /* NULL */
250 static int hf_gsm_map_or_Capability = -1;         /* INTEGER_1_127 */
251 static int hf_gsm_map_gmsc_Address = -1;          /* Gmsc_Address */
252 static int hf_gsm_map_callReferenceNumber = -1;   /* OCTET_STRING_SIZE_1_8 */
253 static int hf_gsm_map_forwardingReason = -1;      /* T_forwardingReason */
254 static int hf_gsm_map_basicServiceGroup = -1;     /* BasicService */
255 static int hf_gsm_map_networkSignalInfo = -1;     /* Bss_APDU */
256 static int hf_gsm_map_camelInfo = -1;             /* T_camelInfo */
257 static int hf_gsm_map_suppress_T_CSI = -1;        /* NULL */
258 static int hf_gsm_map_suppressionOfAnnouncement = -1;  /* NULL */
259 static int hf_gsm_map_alertingPattern = -1;       /* OCTET_STRING_SIZE_1 */
260 static int hf_gsm_map_ccbs_Call = -1;             /* NULL */
261 static int hf_gsm_map_supportedCCBS_Phase = -1;   /* INTEGER_1_127 */
262 static int hf_gsm_map_additionalSignalInfo = -1;  /* AdditionalSignalInfo */
263 static int hf_gsm_map_extendedRoutingInfo = -1;   /* T_extendedRoutingInfo */
264 static int hf_gsm_map_routingInfo = -1;           /* T_routingInfo */
265 static int hf_gsm_map_roamingNumber = -1;         /* RoamingNumber */
266 static int hf_gsm_map_forwardingData = -1;        /* ForwardingData */
267 static int hf_gsm_map_camelRoutingInfo = -1;      /* T_camelRoutingInfo */
268 static int hf_gsm_map_gmscCamelSubscriptionInfo = -1;  /* T_gmscCamelSubscriptionInfo */
269 static int hf_gsm_map_t_CSI = -1;                 /* T_t_CSI */
270 static int hf_gsm_map_t_BcsmCamelTDPDataList = -1;  /* BcsmCamelTDPDataList */
271 static int hf_gsm_map_cugSubscriptionFlag = -1;   /* NULL */
272 static int hf_gsm_map_subscriberInfo = -1;        /* SubscriberInfo */
273 static int hf_gsm_map_forwardingInterrogationRequired = -1;  /* NULL */
274 static int hf_gsm_map_vmsc_Address = -1;          /* T_vmsc_Address */
275 static int hf_gsm_map_ccbs_Indicators = -1;       /* T_ccbs_Indicators */
276 static int hf_gsm_map_ccbs_Possible = -1;         /* NULL */
277 static int hf_gsm_map_keepCCBS_CallIndicator = -1;  /* NULL */
278 static int hf_gsm_map_numberPortabilityStatus = -1;  /* T_numberPortabilityStatus */
279 static int hf_gsm_map_assumedIdle = -1;           /* NULL */
280 static int hf_gsm_map_camelBusy = -1;             /* NULL */
281 static int hf_gsm_map_notProvidedFromVLR = -1;    /* NULL */
282 static int hf_gsm_map_ageOfLocationInformation = -1;  /* INTEGER_0_32767 */
283 static int hf_gsm_map_geographicalInformation = -1;  /* OCTET_STRING_SIZE_8 */
284 static int hf_gsm_map_vlr_number = -1;            /* Vlr_Number */
285 static int hf_gsm_map_locationNumber = -1;        /* OCTET_STRING_SIZE_2_10 */
286 static int hf_gsm_map_cellIdOrLAI = -1;           /* T_cellIdOrLAI */
287 static int hf_gsm_map_cellIdFixedLength = -1;     /* OCTET_STRING_SIZE_7 */
288 static int hf_gsm_map_laiFixedLength = -1;        /* OCTET_STRING_SIZE_5 */
289 static int hf_gsm_map_locationInformation = -1;   /* LocationInformation */
290 static int hf_gsm_map_subscriberState = -1;       /* SubscriberState */
291 static int hf_gsm_map_ext_ProtocolId = -1;        /* T_ext_ProtocolId */
292 static int hf_gsm_map_cug_OutgoingAccess = -1;    /* NULL */
293 static int hf_gsm_map_gsm_BearerCapability = -1;  /* Bss_APDU */
294 static int hf_gsm_map_supportedCamelPhasesInGMSC = -1;  /* SupportedCamelPhases */
295 static int hf_gsm_map_orNotSupportedInGMSC = -1;  /* NULL */
296 static int hf_gsm_map_uu_Data = -1;               /* T_uu_Data */
297 static int hf_gsm_map_uuIndicator = -1;           /* OCTET_STRING_SIZE_1 */
298 static int hf_gsm_map_uui = -1;                   /* OCTET_STRING_SIZE_1_131 */
299 static int hf_gsm_map_uusCFInteraction = -1;      /* NULL */
300 static int hf_gsm_map_allInformationSent = -1;    /* NULL */
301 static int hf_gsm_map_isdn_BearerCapability = -1;  /* Bss_APDU */
302 static int hf_gsm_map_call_Direction = -1;        /* OCTET_STRING_SIZE_1 */
303 static int hf_gsm_map_b_Subscriber_Address = -1;  /* T_b_Subscriber_Address */
304 static int hf_gsm_map_chosenChannel = -1;         /* Bss_APDU */
305 static int hf_gsm_map_lowerLayerCompatibility = -1;  /* Bss_APDU */
306 static int hf_gsm_map_highLayerCompatibility = -1;  /* Bss_APDU */
307 static int hf_gsm_map_sIWFSNumber = -1;           /* T_sIWFSNumber */
308 static int hf_gsm_map_channelType = -1;           /* Bss_APDU */
309 static int hf_gsm_map_ccbs_Monitoring = -1;       /* Ccbs_Monitoring */
310 static int hf_gsm_map_ccbs_SubscriberStatus = -1;  /* Ccbs_SubscriberStatus */
311 static int hf_gsm_map_eventReportData = -1;       /* T_eventReportData */
312 static int hf_gsm_map_callReportdata = -1;        /* T_callReportdata */
313 static int hf_gsm_map_monitoringMode = -1;        /* MonitoringMode */
314 static int hf_gsm_map_callOutcome = -1;           /* CallOutcome */
315 static int hf_gsm_map_callInfo = -1;              /* Bss_APDU */
316 static int hf_gsm_map_ccbs_Feature = -1;          /* Ccbs_Feature */
317 static int hf_gsm_map_translatedB_Number = -1;    /* TranslatedB_Number */
318 static int hf_gsm_map_replaceB_Number = -1;       /* NULL */
319 static int hf_gsm_map_ruf_Outcome = -1;           /* Ruf_Outcome */
320 static int hf_gsm_map_ss_Data = -1;               /* Ss_Data */
321 static int hf_gsm_map_ccbs_Index = -1;            /* INTEGER_1_5 */
322 static int hf_gsm_map_b_subscriberNumber = -1;    /* B_subscriberNumber */
323 static int hf_gsm_map_b_subscriberSubaddress = -1;  /* OCTET_STRING_SIZE_1_21 */
324 static int hf_gsm_map_genericServiceInfo = -1;    /* T_genericServiceInfo */
325 static int hf_gsm_map_maximumEntitledPriority = -1;  /* INTEGER_0_15 */
326 static int hf_gsm_map_ccbs_FeatureList = -1;      /* T_ccbs_FeatureList */
327 static int hf_gsm_map_ccbs_FeatureList_item = -1;  /* T_ccbs_FeatureList_item */
328 static int hf_gsm_map_ussd_DataCodingScheme = -1;  /* OCTET_STRING_SIZE_1 */
329 static int hf_gsm_map_ussd_String = -1;           /* OCTET_STRING_SIZE_1_160 */
330 static int hf_gsm_map_ccbs_Data = -1;             /* T_ccbs_Data */
331 static int hf_gsm_map_serviceIndicator = -1;      /* ServiceIndicator */
332 static int hf_gsm_map_sm_RP_PRI = -1;             /* BOOLEAN */
333 static int hf_gsm_map_serviceCentreAddress = -1;  /* OCTET_STRING_SIZE_1_20 */
334 static int hf_gsm_map_gprsSupportIndicator = -1;  /* NULL */
335 static int hf_gsm_map_sm_RP_MTI = -1;             /* INTEGER_0_10 */
336 static int hf_gsm_map_sm_RP_SMEA = -1;            /* OCTET_STRING_SIZE_1_12 */
337 static int hf_gsm_map_locationInfoWithLMSI = -1;  /* T_locationInfoWithLMSI */
338 static int hf_gsm_map_networkNode_Number = -1;    /* T_networkNode_Number */
339 static int hf_gsm_map_gprsNodeIndicator = -1;     /* NULL */
340 static int hf_gsm_map_additional_Number = -1;     /* T_additional_Number */
341 static int hf_gsm_map_sm_RP_DA = -1;              /* Sm_RP_DA */
342 static int hf_gsm_map_sm_RP_OA = -1;              /* Sm_RP_OA */
343 static int hf_gsm_map_sm_RP_UI = -1;              /* OCTET_STRING_SIZE_1_200 */
344 static int hf_gsm_map_serviceCentreAddressOA = -1;  /* OCTET_STRING_SIZE_1_20 */
345 static int hf_gsm_map_noSM_RP_OA = -1;            /* NULL */
346 static int hf_gsm_map_serviceCentreAddressDA = -1;  /* OCTET_STRING_SIZE_1_20 */
347 static int hf_gsm_map_noSM_RP_DA = -1;            /* NULL */
348 static int hf_gsm_map_moreMessagesToSend = -1;    /* NULL */
349 static int hf_gsm_map_sm_DeliveryOutcome = -1;    /* Sm_DeliveryOutcome */
350 static int hf_gsm_map_absentSubscriberDiagnosticSM = -1;  /* INTEGER_0_255 */
351 static int hf_gsm_map_deliveryOutcomeIndicator = -1;  /* NULL */
352 static int hf_gsm_map_additionalSM_DeliveryOutcome = -1;  /* Sm_DeliveryOutcome */
353 static int hf_gsm_map_additionalAbsentSubscriberDiagnosticSM = -1;  /* INTEGER_0_255 */
354 static int hf_gsm_map_storedMSISDN = -1;          /* StoredMSISDN */
355 static int hf_gsm_map_mw_Status = -1;             /* T_mw_Status */
356 static int hf_gsm_map_alertReason = -1;           /* T_alertReason */
357 static int hf_gsm_map_alertReasonIndicator = -1;  /* NULL */
358 static int hf_gsm_map_requestedInfo = -1;         /* RequestedInfo */
359 static int hf_gsm_map_locationInformationFlag = -1;  /* NULL */
360 static int hf_gsm_map_subscriberStateFlag = -1;   /* NULL */
361 static int hf_gsm_map_subscriberIdentity = -1;    /* T_subscriberIdentity */
362 static int hf_gsm_map_ss_Event = -1;              /* OCTET_STRING_SIZE_1 */
363 static int hf_gsm_map_ss_EventSpecification = -1;  /* SEQUNCE_OF_OCTET_STRING_SIZE_1_20 */
364 static int hf_gsm_map_ss_EventSpecification_item = -1;  /* OCTET_STRING_SIZE_1_20 */
365 static int hf_gsm_map_asciCallReference = -1;     /* OCTET_STRING_SIZE_1_8 */
366 static int hf_gsm_map_codec_Info = -1;            /* OCTET_STRING_SIZE_5_10 */
367 static int hf_gsm_map_cipheringAlgorithm = -1;    /* OCTET_STRING_SIZE_1 */
368 static int hf_gsm_map_groupKeyNumber = -1;        /* INTEGER_0_15 */
369 static int hf_gsm_map_groupKey = -1;              /* OCTET_STRING_SIZE_8 */
370 static int hf_gsm_map_priority = -1;              /* INTEGER_0_15 */
371 static int hf_gsm_map_uplinkFree = -1;            /* NULL */
372 static int hf_gsm_map_groupCallNumber = -1;       /* T_groupCallNumber */
373 static int hf_gsm_map_uplinkRequest = -1;         /* NULL */
374 static int hf_gsm_map_uplinkReleaseIndication = -1;  /* NULL */
375 static int hf_gsm_map_releaseGroupCall = -1;      /* NULL */
376 static int hf_gsm_map_uplinkRequestAck = -1;      /* NULL */
377 static int hf_gsm_map_uplinkRejectCommand = -1;   /* NULL */
378 static int hf_gsm_map_uplinkSeizedCommand = -1;   /* NULL */
379 static int hf_gsm_map_uplinkReleaseCommand = -1;  /* NULL */
380 static int hf_gsm_map_sgsn_Address = -1;          /* OCTET_STRING_SIZE_5_17 */
381 static int hf_gsm_map_sgsn_Capability = -1;       /* T_sgsn_Capability */
382 static int hf_gsm_map_ggsn_Address = -1;          /* Ggsn_Address */
383 static int hf_gsm_map_ggsn_Number = -1;           /* Ggsn_Number */
384 static int hf_gsm_map_mobileNotReachableReason = -1;  /* INTEGER_0_255 */
385 static int hf_gsm_map_dataCodingScheme = -1;      /* OCTET_STRING */
386 static int hf_gsm_map_nameString = -1;            /* OCTET_STRING */
387 static int hf_gsm_map_lcsClientType = -1;         /* LcsClientType */
388 static int hf_gsm_map_lcsClientExternalID = -1;   /* LcsClientExternalID */
389 static int hf_gsm_map_lcsClientDialedByMS = -1;   /* OCTET_STRING */
390 static int hf_gsm_map_lcsClientInternalID = -1;   /* LcsClientInternalID */
391 static int hf_gsm_map_lcsClientName = -1;         /* LcsClientName */
392 static int hf_gsm_map_locationType = -1;          /* T_locationType */
393 static int hf_gsm_map_locationEstimateType = -1;  /* T_locationEstimateType */
394 static int hf_gsm_map_mlc_Number = -1;            /* T_mlc_Number */
395 static int hf_gsm_map_lcs_ClientID = -1;          /* Lcs_ClientID */
396 static int hf_gsm_map_privacyOverride = -1;       /* NULL */
397 static int hf_gsm_map_imei = -1;                  /* Imei */
398 static int hf_gsm_map_lcs_Priority = -1;          /* OCTET_STRING_SIZE_1 */
399 static int hf_gsm_map_lcs_QoS = -1;               /* T_lcs_QoS */
400 static int hf_gsm_map_horizontal_accuracy = -1;   /* OCTET_STRING_SIZE_1 */
401 static int hf_gsm_map_verticalCoordinateRequest = -1;  /* NULL */
402 static int hf_gsm_map_vertical_accuracy = -1;     /* OCTET_STRING_SIZE_1 */
403 static int hf_gsm_map_responseTime = -1;          /* T_responseTime */
404 static int hf_gsm_map_responseTimeCategory = -1;  /* T_responseTimeCategory */
405 static int hf_gsm_map_locationEstimate = -1;      /* OCTET_STRING_SIZE_1_20 */
406 static int hf_gsm_map_ageOfLocationEstimate = -1;  /* INTEGER_0_32767 */
407 static int hf_gsm_map_mlcNumber = -1;             /* T_mlcNumber */
408 static int hf_gsm_map_targetMS = -1;              /* TargetMS */
409 static int hf_gsm_map_lcsLocationInfo = -1;       /* LcsLocationInfo */
410 static int hf_gsm_map_lcs_Event = -1;             /* Lcs_Event */
411 static int hf_gsm_map_na_ESRD = -1;               /* T_na_ESRD */
412 static int hf_gsm_map_na_ESRK = -1;               /* T_na_ESRK */
413 static int hf_gsm_map_networkResource = -1;       /* NetworkResource */
414 static int hf_gsm_map_extensibleSystemFailureParam = -1;  /* T_extensibleSystemFailureParam */
415 static int hf_gsm_map_unknownSubscriberDiagnostic = -1;  /* T_unknownSubscriberDiagnostic */
416 static int hf_gsm_map_roamingNotAllowedCause = -1;  /* T_roamingNotAllowedCause */
417 static int hf_gsm_map_absentSubscriberReason = -1;  /* T_absentSubscriberReason */
418 static int hf_gsm_map_ccbs_Busy = -1;             /* NULL */
419 static int hf_gsm_map_callBarringCause = -1;      /* CallBarringCause */
420 static int hf_gsm_map_extensibleCallBarredParam = -1;  /* T_extensibleCallBarredParam */
421 static int hf_gsm_map_unauthorisedMessageOriginator = -1;  /* NULL */
422 static int hf_gsm_map_cug_RejectCause = -1;       /* T_cug_RejectCause */
423 static int hf_gsm_map_gprsConnectionSuspended = -1;  /* NULL */
424 static int hf_gsm_map_sm_EnumeratedDeliveryFailureCause = -1;  /* T_sm_EnumeratedDeliveryFailureCause */
425 static int hf_gsm_map_diagnosticInfo = -1;        /* OCTET_STRING_SIZE_1_200 */
426 static int hf_gsm_map_unauthorizedLCSClient_Diagnostic = -1;  /* T_unauthorizedLCSClient_Diagnostic */
427 static int hf_gsm_map_positionMethodFailure_Diagnostic = -1;  /* T_positionMethodFailure_Diagnostic */
428 static int hf_gsm_map_privateExtensionList = -1;  /* PrivateExtensionList */
429 static int hf_gsm_map_pcsExtensions = -1;         /* PcsExtensions */
430 /* named bits */
431 static int hf_gsm_map_SupportedCamelPhases_phase1 = -1;
432 static int hf_gsm_map_SupportedCamelPhases_phase2 = -1;
433 static int hf_gsm_map_Odb_GeneralData_allOGCallsBarred = -1;
434 static int hf_gsm_map_Odb_GeneralData_internationalOGCallsBarred = -1;
435 static int hf_gsm_map_Odb_GeneralData_internationalOGCallsNotToHPLMNCountryBarred = -1;
436 static int hf_gsm_map_Odb_GeneralData_premiumRateInformationOGCallsBarred = -1;
437 static int hf_gsm_map_Odb_GeneralData_premiumRateEntertainementOGCallsBarred = -1;
438 static int hf_gsm_map_Odb_GeneralData_ssAccessBarred = -1;
439 static int hf_gsm_map_Odb_GeneralData_interzonalOGCallsBarred = -1;
440 static int hf_gsm_map_Odb_GeneralData_interzonalOGCallsNotToHPLMNCountryBarred = -1;
441 static int hf_gsm_map_Odb_GeneralData_interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred = -1;
442 static int hf_gsm_map_Odb_GeneralData_allECTBarred = -1;
443 static int hf_gsm_map_Odb_GeneralData_chargeableECTBarred = -1;
444 static int hf_gsm_map_Odb_GeneralData_internationalECTBarred = -1;
445 static int hf_gsm_map_Odb_GeneralData_interzonalECTBarred = -1;
446 static int hf_gsm_map_Odb_GeneralData_doublyChargeableECTBarred = -1;
447 static int hf_gsm_map_Odb_GeneralData_multipleECTBarred = -1;
448 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType1 = -1;
449 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType2 = -1;
450 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType3 = -1;
451 static int hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType4 = -1;
452 static int hf_gsm_map_ServiceIndicator_clirInvoked = -1;
453 static int hf_gsm_map_ServiceIndicator_camelInvoked = -1;
454 static int hf_gsm_map_T_mw_Status_scAddressNotIncluded = -1;
455 static int hf_gsm_map_T_mw_Status_mnrfSet = -1;
456 static int hf_gsm_map_T_mw_Status_mcefSet = -1;
457 static int hf_gsm_map_T_mw_Status_mnrgSet = -1;
458
459 /*--- End of included file: packet-gsm_map-hf.c ---*/
460
461
462 /* Initialize the subtree pointers */
463 static gint ett_gsm_map = -1;
464 static gint ett_gsm_map_InvokeId = -1;
465 static gint ett_gsm_map_InvokePDU = -1;
466 static gint ett_gsm_map_ReturnResultPDU = -1;
467 static gint ett_gsm_map_ReturnResult_result = -1;
468 static gint ett_gsm_map_GSMMAPPDU = -1;
469 static int gsm_map_tap = -1;
470
471 /*--- Included file: packet-gsm_map-ett.c ---*/
472
473 static gint ett_gsm_map_Bss_APDU = -1;
474 static gint ett_gsm_map_SupportedCamelPhases = -1;
475 static gint ett_gsm_map_Vlr_Capability = -1;
476 static gint ett_gsm_map_UpdateLocationArg = -1;
477 static gint ett_gsm_map_UpdateLocationRes = -1;
478 static gint ett_gsm_map_PrivateExtensionList = -1;
479 static gint ett_gsm_map_PrivateExtension = -1;
480 static gint ett_gsm_map_PcsExtensions = -1;
481 static gint ett_gsm_map_CancelLocationArg = -1;
482 static gint ett_gsm_map_T_identity = -1;
483 static gint ett_gsm_map_T_imsi_WithLMSI = -1;
484 static gint ett_gsm_map_CancelLocationRes = -1;
485 static gint ett_gsm_map_PurgeMS_Arg = -1;
486 static gint ett_gsm_map_PurgeMS_Res = -1;
487 static gint ett_gsm_map_SendIdentificationRes = -1;
488 static gint ett_gsm_map_T_authenticationSetList = -1;
489 static gint ett_gsm_map_T_authenticationSetList_item = -1;
490 static gint ett_gsm_map_PrepareHO_Arg = -1;
491 static gint ett_gsm_map_PrepareHO_Res = -1;
492 static gint ett_gsm_map_PrepareSubsequentHO_Arg = -1;
493 static gint ett_gsm_map_SendAuthenticationInfoArg = -1;
494 static gint ett_gsm_map_T_re_synchronisationInfo = -1;
495 static gint ett_gsm_map_SendAuthenticationInfoRes = -1;
496 static gint ett_gsm_map_SendAuthenticationInfoRes_item = -1;
497 static gint ett_gsm_map_BasicService = -1;
498 static gint ett_gsm_map_BasicServiceGroupList = -1;
499 static gint ett_gsm_map_Odb_GeneralData = -1;
500 static gint ett_gsm_map_Odb_HPLMN_Data = -1;
501 static gint ett_gsm_map_BcsmCamelTDPData = -1;
502 static gint ett_gsm_map_BcsmCamelTDPDataList = -1;
503 static gint ett_gsm_map_O_CSI = -1;
504 static gint ett_gsm_map_InsertSubscriberDataArg = -1;
505 static gint ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_5 = -1;
506 static gint ett_gsm_map_SEQUNCE_OF_Teleservice = -1;
507 static gint ett_gsm_map_T_provisionedSS = -1;
508 static gint ett_gsm_map_T_provisionedSS_item = -1;
509 static gint ett_gsm_map_T_cug_Info = -1;
510 static gint ett_gsm_map_T_cug_SubscriptionList = -1;
511 static gint ett_gsm_map_T_cug_SubscriptionList_item = -1;
512 static gint ett_gsm_map_T_cug_FeatureList = -1;
513 static gint ett_gsm_map_T_cug_FeatureList_item = -1;
514 static gint ett_gsm_map_T_ss_Data2 = -1;
515 static gint ett_gsm_map_T_emlpp_Info = -1;
516 static gint ett_gsm_map_T_odb_Data = -1;
517 static gint ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_2 = -1;
518 static gint ett_gsm_map_T_vbsSubscriptionData = -1;
519 static gint ett_gsm_map_T_vbsSubscriptionData_item = -1;
520 static gint ett_gsm_map_T_vgcsSubscriptionData = -1;
521 static gint ett_gsm_map_T_vgcsSubscriptionData_item = -1;
522 static gint ett_gsm_map_T_vlrCamelSubscriptionInfo = -1;
523 static gint ett_gsm_map_T_ss_CSI = -1;
524 static gint ett_gsm_map_T_ss_CamelData = -1;
525 static gint ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1 = -1;
526 static gint ett_gsm_map_T_gprsSubscriptionData = -1;
527 static gint ett_gsm_map_T_gprsDataList = -1;
528 static gint ett_gsm_map_T_gprsDataList_item = -1;
529 static gint ett_gsm_map_T_lsaInformation = -1;
530 static gint ett_gsm_map_T_lsaDataList = -1;
531 static gint ett_gsm_map_T_lsaDataList_item = -1;
532 static gint ett_gsm_map_T_lcsInformation = -1;
533 static gint ett_gsm_map_T_gmlc_List = -1;
534 static gint ett_gsm_map_T_lcs_PrivacyExceptionList = -1;
535 static gint ett_gsm_map_T_lcs_PrivacyExceptionList_item = -1;
536 static gint ett_gsm_map_T_externalClientList = -1;
537 static gint ett_gsm_map_T_externalClientList_item = -1;
538 static gint ett_gsm_map_T_clientIdentity = -1;
539 static gint ett_gsm_map_T_plmnClientList = -1;
540 static gint ett_gsm_map_T_molr_List = -1;
541 static gint ett_gsm_map_T_molr_List_item = -1;
542 static gint ett_gsm_map_InsertSubscriberDataRes = -1;
543 static gint ett_gsm_map_CallBarringInfo = -1;
544 static gint ett_gsm_map_T_callBarringFeatureList = -1;
545 static gint ett_gsm_map_T_callBarringFeatureList_item = -1;
546 static gint ett_gsm_map_ForwardingFeatureList = -1;
547 static gint ett_gsm_map_DestinationNumberCriteria = -1;
548 static gint ett_gsm_map_T_destinationNumberList = -1;
549 static gint ett_gsm_map_SEQUNCE_OF_INTEGER_1_15 = -1;
550 static gint ett_gsm_map_ForwardingInfo = -1;
551 static gint ett_gsm_map_SEQUNCE_OF_ForwardingFeatureList = -1;
552 static gint ett_gsm_map_Naea_PreferredCI = -1;
553 static gint ett_gsm_map_O_BcsmCamelTDP_CriteriaList = -1;
554 static gint ett_gsm_map_O_BcsmCamelTDP_CriteriaList_item = -1;
555 static gint ett_gsm_map_Ss_SubscriptionOption = -1;
556 static gint ett_gsm_map_DeleteSubscriberDataArg = -1;
557 static gint ett_gsm_map_T_gprsSubscriptionDataWithdraw = -1;
558 static gint ett_gsm_map_SEQUNCE_OF_INTEGER_1_50 = -1;
559 static gint ett_gsm_map_T_lsaInformationWithdraw = -1;
560 static gint ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3 = -1;
561 static gint ett_gsm_map_DeleteSubscriberDataRes = -1;
562 static gint ett_gsm_map_ResetArg = -1;
563 static gint ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3_8 = -1;
564 static gint ett_gsm_map_RestoreDataArg = -1;
565 static gint ett_gsm_map_RestoreDataRes = -1;
566 static gint ett_gsm_map_ActivateTraceModeArg = -1;
567 static gint ett_gsm_map_ActivateTraceModeRes = -1;
568 static gint ett_gsm_map_DeactivateTraceModeArg = -1;
569 static gint ett_gsm_map_DeactivateTraceModeRes = -1;
570 static gint ett_gsm_map_SendRoutingInfoArg = -1;
571 static gint ett_gsm_map_T_camelInfo = -1;
572 static gint ett_gsm_map_SendRoutingInfoRes = -1;
573 static gint ett_gsm_map_T_extendedRoutingInfo = -1;
574 static gint ett_gsm_map_T_routingInfo = -1;
575 static gint ett_gsm_map_T_camelRoutingInfo = -1;
576 static gint ett_gsm_map_T_gmscCamelSubscriptionInfo = -1;
577 static gint ett_gsm_map_T_t_CSI = -1;
578 static gint ett_gsm_map_T_ccbs_Indicators = -1;
579 static gint ett_gsm_map_SubscriberState = -1;
580 static gint ett_gsm_map_LocationInformation = -1;
581 static gint ett_gsm_map_T_cellIdOrLAI = -1;
582 static gint ett_gsm_map_SubscriberInfo = -1;
583 static gint ett_gsm_map_AdditionalSignalInfo = -1;
584 static gint ett_gsm_map_Cug_CheckInfo = -1;
585 static gint ett_gsm_map_ForwardingData = -1;
586 static gint ett_gsm_map_ProvideRoamingNumberArg = -1;
587 static gint ett_gsm_map_ProvideRoamingNumberRes = -1;
588 static gint ett_gsm_map_ResumeCallHandlingArg = -1;
589 static gint ett_gsm_map_T_uu_Data = -1;
590 static gint ett_gsm_map_ResumeCallHandlingRes = -1;
591 static gint ett_gsm_map_ProvideSIWFSNumberArg = -1;
592 static gint ett_gsm_map_ProvideSIWFSNumberRes = -1;
593 static gint ett_gsm_map_SIWFSSignallingModifyArg = -1;
594 static gint ett_gsm_map_SIWFSSignallingModifyRes = -1;
595 static gint ett_gsm_map_SetReportingStateArg = -1;
596 static gint ett_gsm_map_SetReportingStateRes = -1;
597 static gint ett_gsm_map_StatusReportArg = -1;
598 static gint ett_gsm_map_T_eventReportData = -1;
599 static gint ett_gsm_map_T_callReportdata = -1;
600 static gint ett_gsm_map_StatusReportRes = -1;
601 static gint ett_gsm_map_RemoteUserFreeArg = -1;
602 static gint ett_gsm_map_RemoteUserFreeRes = -1;
603 static gint ett_gsm_map_Ss_Data = -1;
604 static gint ett_gsm_map_RegisterSS_Arg = -1;
605 static gint ett_gsm_map_Ss_Info = -1;
606 static gint ett_gsm_map_Ccbs_Feature = -1;
607 static gint ett_gsm_map_Ss_ForBS = -1;
608 static gint ett_gsm_map_InterrogateSS_Res = -1;
609 static gint ett_gsm_map_T_genericServiceInfo = -1;
610 static gint ett_gsm_map_T_ccbs_FeatureList = -1;
611 static gint ett_gsm_map_T_ccbs_FeatureList_item = -1;
612 static gint ett_gsm_map_Ussd_Arg = -1;
613 static gint ett_gsm_map_Ussd_Res = -1;
614 static gint ett_gsm_map_ServiceIndicator = -1;
615 static gint ett_gsm_map_RegisterCC_EntryArg = -1;
616 static gint ett_gsm_map_T_ccbs_Data = -1;
617 static gint ett_gsm_map_RegisterCC_EntryRes = -1;
618 static gint ett_gsm_map_EraseCC_EntryArg = -1;
619 static gint ett_gsm_map_EraseCC_EntryRes = -1;
620 static gint ett_gsm_map_RoutingInfoForSMArg = -1;
621 static gint ett_gsm_map_RoutingInfoForSMRes = -1;
622 static gint ett_gsm_map_T_locationInfoWithLMSI = -1;
623 static gint ett_gsm_map_T_additional_Number = -1;
624 static gint ett_gsm_map_Mo_forwardSM_Arg = -1;
625 static gint ett_gsm_map_Mo_forwardSM_Res = -1;
626 static gint ett_gsm_map_Sm_RP_OA = -1;
627 static gint ett_gsm_map_Sm_RP_DA = -1;
628 static gint ett_gsm_map_Mt_forwardSM_Arg = -1;
629 static gint ett_gsm_map_Mt_forwardSM_Res = -1;
630 static gint ett_gsm_map_ReportSM_DeliveryStatusArg = -1;
631 static gint ett_gsm_map_ReportSM_DeliveryStatusRes = -1;
632 static gint ett_gsm_map_InformServiceCentreArg = -1;
633 static gint ett_gsm_map_T_mw_Status = -1;
634 static gint ett_gsm_map_AlertServiceCentreArg = -1;
635 static gint ett_gsm_map_ReadyForSM_Arg = -1;
636 static gint ett_gsm_map_ReadyForSM_Res = -1;
637 static gint ett_gsm_map_ProvideSubscriberInfoArg = -1;
638 static gint ett_gsm_map_ProvideSubscriberInfoRes = -1;
639 static gint ett_gsm_map_RequestedInfo = -1;
640 static gint ett_gsm_map_AnyTimeInterrogationArg = -1;
641 static gint ett_gsm_map_T_subscriberIdentity = -1;
642 static gint ett_gsm_map_AnyTimeInterrogationRes = -1;
643 static gint ett_gsm_map_Ss_InvocationNotificationArg = -1;
644 static gint ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_20 = -1;
645 static gint ett_gsm_map_Ss_InvocationNotificationRes = -1;
646 static gint ett_gsm_map_PrepareGroupCallArg = -1;
647 static gint ett_gsm_map_PrepareGroupCallRes = -1;
648 static gint ett_gsm_map_SendGroupCallEndSignalArg = -1;
649 static gint ett_gsm_map_SendGroupCallEndSignalRes = -1;
650 static gint ett_gsm_map_ProcessGroupCallSignallingArg = -1;
651 static gint ett_gsm_map_ForwardGroupCallSignallingArg = -1;
652 static gint ett_gsm_map_UpdateGprsLocationArg = -1;
653 static gint ett_gsm_map_T_sgsn_Capability = -1;
654 static gint ett_gsm_map_UpdateGprsLocationRes = -1;
655 static gint ett_gsm_map_SendRoutingInfoForGprsArg = -1;
656 static gint ett_gsm_map_SendRoutingInfoForGprsRes = -1;
657 static gint ett_gsm_map_FailureReportArg = -1;
658 static gint ett_gsm_map_FailureReportRes = -1;
659 static gint ett_gsm_map_NoteMsPresentForGprsArg = -1;
660 static gint ett_gsm_map_NoteMsPresentForGprsRes = -1;
661 static gint ett_gsm_map_LcsClientExternalID = -1;
662 static gint ett_gsm_map_LcsClientName = -1;
663 static gint ett_gsm_map_Lcs_ClientID = -1;
664 static gint ett_gsm_map_LcsLocationInfo = -1;
665 static gint ett_gsm_map_ProvideSubscriberLocation_Arg = -1;
666 static gint ett_gsm_map_T_locationType = -1;
667 static gint ett_gsm_map_T_lcs_QoS = -1;
668 static gint ett_gsm_map_T_responseTime = -1;
669 static gint ett_gsm_map_ProvideSubscriberLocation_Res = -1;
670 static gint ett_gsm_map_TargetMS = -1;
671 static gint ett_gsm_map_RoutingInfoForLCS_Arg = -1;
672 static gint ett_gsm_map_RoutingInfoForLCS_Res = -1;
673 static gint ett_gsm_map_SubscriberLocationReport_Arg = -1;
674 static gint ett_gsm_map_SubscriberLocationReport_Res = -1;
675 static gint ett_gsm_map_SystemFailureParam = -1;
676 static gint ett_gsm_map_T_extensibleSystemFailureParam = -1;
677 static gint ett_gsm_map_DataMissingParam = -1;
678 static gint ett_gsm_map_UnexpectedDataParam = -1;
679 static gint ett_gsm_map_FacilityNotSupParam = -1;
680 static gint ett_gsm_map_IncompatibleTerminalParam = -1;
681 static gint ett_gsm_map_ResourceLimitationParam = -1;
682 static gint ett_gsm_map_UnknownSubscriberParam = -1;
683 static gint ett_gsm_map_NumberChangedParam = -1;
684 static gint ett_gsm_map_UnidentifiedSubParam = -1;
685 static gint ett_gsm_map_RoamingNotAllowedParam = -1;
686 static gint ett_gsm_map_IllegalSubscriberParam = -1;
687 static gint ett_gsm_map_IllegalEquipmentParam = -1;
688 static gint ett_gsm_map_BearerServNotProvParam = -1;
689 static gint ett_gsm_map_TeleservNotProvParam = -1;
690 static gint ett_gsm_map_TracingBufferFullParam = -1;
691 static gint ett_gsm_map_NoRoamingNbParam = -1;
692 static gint ett_gsm_map_AbsentSubscriberParam = -1;
693 static gint ett_gsm_map_BusySubscriberParam = -1;
694 static gint ett_gsm_map_NoSubscriberReplyParam = -1;
695 static gint ett_gsm_map_CallBarredParam = -1;
696 static gint ett_gsm_map_T_extensibleCallBarredParam = -1;
697 static gint ett_gsm_map_ForwardingFailedParam = -1;
698 static gint ett_gsm_map_Or_NotAllowedParam = -1;
699 static gint ett_gsm_map_ForwardingViolationParam = -1;
700 static gint ett_gsm_map_Cug_RejectParam = -1;
701 static gint ett_gsm_map_Ati_NotAllowedParam = -1;
702 static gint ett_gsm_map_NoGroupCallNbParam = -1;
703 static gint ett_gsm_map_Ss_IncompatibilityCause = -1;
704 static gint ett_gsm_map_ShortTermDenialParam = -1;
705 static gint ett_gsm_map_LongTermDenialParam = -1;
706 static gint ett_gsm_map_SubBusyForMT_SMS_Param = -1;
707 static gint ett_gsm_map_Sm_DeliveryFailureCause = -1;
708 static gint ett_gsm_map_MessageWaitListFullParam = -1;
709 static gint ett_gsm_map_AbsentSubscriberSM_Param = -1;
710 static gint ett_gsm_map_UnauthorizedRequestingNetwork_Param = -1;
711 static gint ett_gsm_map_UnauthorizedLCSClient_Param = -1;
712 static gint ett_gsm_map_PositionMethodFailure_Param = -1;
713 static gint ett_gsm_map_UnknownOrUnreachableLCSClient_Param = -1;
714 static gint ett_gsm_map_ExtensionContainer = -1;
715
716 /*--- End of included file: packet-gsm_map-ett.c ---*/
717
718
719 static dissector_table_t        sms_dissector_table;    /* SMS TPDU */
720
721 static int  dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
722
723
724 /*--- Included file: packet-gsm_map-fn.c ---*/
725
726 /*--- Fields for imported types ---*/
727
728
729
730 static const value_string ProtocolId_vals[] = {
731   {   1, "gsm-0408" },
732   {   2, "gsm-0806" },
733   {   3, "gsm-BSSMAP" },
734   {   4, "ets-300102-1" },
735   { 0, NULL }
736 };
737
738
739 static int
740 dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
741   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
742
743   return offset;
744 }
745 static int dissect_protocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
746   return dissect_gsm_map_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_protocolId);
747 }
748
749
750 static int
751 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_) {
752   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
753                                     NULL);
754
755   return offset;
756 }
757 static int dissect_signalInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
758   return dissect_gsm_map_OCTET_STRING_SIZE_1_200(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_signalInfo);
759 }
760 static int dissect_sm_RP_UI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
761   return dissect_gsm_map_OCTET_STRING_SIZE_1_200(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_UI);
762 }
763 static int dissect_diagnosticInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
764   return dissect_gsm_map_OCTET_STRING_SIZE_1_200(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_diagnosticInfo);
765 }
766
767 static const ber_sequence PrivateExtension_sequence[] = {
768   { 0, 0, 0, NULL }
769 };
770
771 static int
772 dissect_gsm_map_PrivateExtension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
773   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
774                                 PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension);
775
776   return offset;
777 }
778 static int dissect_PrivateExtensionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
779   return dissect_gsm_map_PrivateExtension(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_PrivateExtensionList_item);
780 }
781
782 static const ber_sequence PrivateExtensionList_sequence_of[1] = {
783   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PrivateExtensionList_item },
784 };
785
786 static int
787 dissect_gsm_map_PrivateExtensionList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
788   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
789                                    PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList);
790
791   return offset;
792 }
793 static int dissect_privateExtensionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
794   return dissect_gsm_map_PrivateExtensionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privateExtensionList);
795 }
796
797 static const ber_sequence PcsExtensions_sequence[] = {
798   { 0, 0, 0, NULL }
799 };
800
801 static int
802 dissect_gsm_map_PcsExtensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
803   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
804                                 PcsExtensions_sequence, hf_index, ett_gsm_map_PcsExtensions);
805
806   return offset;
807 }
808 static int dissect_pcsExtensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
809   return dissect_gsm_map_PcsExtensions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pcsExtensions);
810 }
811
812 static const ber_sequence ExtensionContainer_sequence[] = {
813   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privateExtensionList_impl },
814   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pcsExtensions_impl },
815   { 0, 0, 0, NULL }
816 };
817
818 static int
819 dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
820   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
821                                 ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer);
822
823   return offset;
824 }
825 static int dissect_extensionContainer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
826   return dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
827 }
828 static int dissect_extensionContainer_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
829   return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_extensionContainer);
830 }
831
832 static const ber_sequence Bss_APDU_sequence[] = {
833   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_protocolId },
834   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
835   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
836   { 0, 0, 0, NULL }
837 };
838
839 static int
840 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_) {
841   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
842                                 Bss_APDU_sequence, hf_index, ett_gsm_map_Bss_APDU);
843
844   return offset;
845 }
846 static int dissect_bss_APDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
847   return dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bss_APDU);
848 }
849 static int dissect_networkSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
850   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkSignalInfo);
851 }
852 static int dissect_gsm_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
853   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsm_BearerCapability);
854 }
855 static int dissect_isdn_BearerCapability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
856   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_isdn_BearerCapability);
857 }
858 static int dissect_chosenChannel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
859   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannel);
860 }
861 static int dissect_lowerLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
862   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lowerLayerCompatibility);
863 }
864 static int dissect_highLayerCompatibility_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
865   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_highLayerCompatibility);
866 }
867 static int dissect_channelType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
868   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_channelType);
869 }
870 static int dissect_callInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
871   return dissect_gsm_map_Bss_APDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callInfo);
872 }
873
874 static const asn_namedbit SupportedCamelPhases_bits[] = {
875   {  0, &hf_gsm_map_SupportedCamelPhases_phase1, -1, -1, NULL, NULL },
876   {  1, &hf_gsm_map_SupportedCamelPhases_phase2, -1, -1, NULL, NULL },
877   { 0, NULL, 0, 0, NULL, NULL }
878 };
879
880 static int
881 dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
882   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
883                                  SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
884                                  NULL);
885
886   return offset;
887 }
888 static int dissect_supportedCamelPhases(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
889   return dissect_gsm_map_SupportedCamelPhases(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
890 }
891 static int dissect_supportedCamelPhases_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
892   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhases);
893 }
894 static int dissect_supportedCamelPhasesInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
895   return dissect_gsm_map_SupportedCamelPhases(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCamelPhasesInGMSC);
896 }
897
898
899 static int
900 dissect_gsm_map_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
901   { proto_item *ti_tmp;
902   ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
903   proto_item_append_text(ti_tmp, ": NULL");
904   }
905
906   return offset;
907 }
908 static int dissect_solsaSupportIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
909   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
910 }
911 static int dissect_solsaSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
912   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_solsaSupportIndicator);
913 }
914 static int dissect_freezeTMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
915   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeTMSI);
916 }
917 static int dissect_freezeP_TMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
918   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_freezeP_TMSI);
919 }
920 static int dissect_ho_NumberNotRequired(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
921   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ho_NumberNotRequired);
922 }
923 static int dissect_segmentationProhibited(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
924   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_segmentationProhibited);
925 }
926 static int dissect_immediateResponsePreferred_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
927   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_immediateResponsePreferred);
928 }
929 static int dissect_roamingRestrictionDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
930   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictionDueToUnsupportedFeature);
931 }
932 static int dissect_broadcastInitEntitlement(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
933   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_broadcastInitEntitlement);
934 }
935 static int dissect_tif_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
936   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tif_CSI);
937 }
938 static int dissect_completeDataListIncluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
939   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_completeDataListIncluded);
940 }
941 static int dissect_vplmnAddressAllowed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
942   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vplmnAddressAllowed);
943 }
944 static int dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
945   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature);
946 }
947 static int dissect_lsaActiveModeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
948   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaActiveModeIndicator);
949 }
950 static int dissect_lmu_Indicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
951   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmu_Indicator);
952 }
953 static int dissect_vbsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
954   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsGroupIndication);
955 }
956 static int dissect_vgcsGroupIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
957   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsGroupIndication);
958 }
959 static int dissect_camelSubscriptionInfoWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
960   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelSubscriptionInfoWithdraw);
961 }
962 static int dissect_allGPRSData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
963   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allGPRSData);
964 }
965 static int dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
966   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature);
967 }
968 static int dissect_allLSAData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
969   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_allLSAData);
970 }
971 static int dissect_gmlc_ListWithdraw_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
972   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_ListWithdraw);
973 }
974 static int dissect_msNotReachable(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
975   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msNotReachable);
976 }
977 static int dissect_or_Interrogation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
978   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Interrogation);
979 }
980 static int dissect_suppress_T_CSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
981   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_suppress_T_CSI);
982 }
983 static int dissect_suppressionOfAnnouncement_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
984   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_suppressionOfAnnouncement);
985 }
986 static int dissect_ccbs_Call_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
987   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Call);
988 }
989 static int dissect_cugSubscriptionFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
990   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cugSubscriptionFlag);
991 }
992 static int dissect_forwardingInterrogationRequired_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
993   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInterrogationRequired);
994 }
995 static int dissect_ccbs_Possible_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
996   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Possible);
997 }
998 static int dissect_keepCCBS_CallIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
999   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_keepCCBS_CallIndicator);
1000 }
1001 static int dissect_assumedIdle_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1002   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_assumedIdle);
1003 }
1004 static int dissect_camelBusy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1005   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelBusy);
1006 }
1007 static int dissect_notProvidedFromVLR_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1008   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notProvidedFromVLR);
1009 }
1010 static int dissect_cug_OutgoingAccess(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1011   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_OutgoingAccess);
1012 }
1013 static int dissect_orNotSupportedInGMSC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1014   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_orNotSupportedInGMSC);
1015 }
1016 static int dissect_uusCFInteraction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1017   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uusCFInteraction);
1018 }
1019 static int dissect_allInformationSent_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1020   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_allInformationSent);
1021 }
1022 static int dissect_replaceB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1023   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_replaceB_Number);
1024 }
1025 static int dissect_gprsSupportIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1026   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSupportIndicator);
1027 }
1028 static int dissect_gprsNodeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1029   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsNodeIndicator);
1030 }
1031 static int dissect_noSM_RP_OA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1032   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_OA);
1033 }
1034 static int dissect_noSM_RP_DA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1035   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noSM_RP_DA);
1036 }
1037 static int dissect_moreMessagesToSend(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1038   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_moreMessagesToSend);
1039 }
1040 static int dissect_deliveryOutcomeIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1041   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_deliveryOutcomeIndicator);
1042 }
1043 static int dissect_alertReasonIndicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1044   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReasonIndicator);
1045 }
1046 static int dissect_locationInformationFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1047   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformationFlag);
1048 }
1049 static int dissect_subscriberStateFlag_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1050   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStateFlag);
1051 }
1052 static int dissect_uplinkFree_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1053   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkFree);
1054 }
1055 static int dissect_uplinkRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1056   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequest);
1057 }
1058 static int dissect_uplinkReleaseIndication_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1059   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseIndication);
1060 }
1061 static int dissect_releaseGroupCall_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1062   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_releaseGroupCall);
1063 }
1064 static int dissect_uplinkRequestAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1065   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRequestAck);
1066 }
1067 static int dissect_uplinkRejectCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1068   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkRejectCommand);
1069 }
1070 static int dissect_uplinkSeizedCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1071   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkSeizedCommand);
1072 }
1073 static int dissect_uplinkReleaseCommand_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1074   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uplinkReleaseCommand);
1075 }
1076 static int dissect_privacyOverride_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1077   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_privacyOverride);
1078 }
1079 static int dissect_verticalCoordinateRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1080   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_verticalCoordinateRequest);
1081 }
1082 static int dissect_ccbs_Busy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1083   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Busy);
1084 }
1085 static int dissect_unauthorisedMessageOriginator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1086   return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorisedMessageOriginator);
1087 }
1088 static int dissect_gprsConnectionSuspended(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1089   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsConnectionSuspended);
1090 }
1091
1092 static const ber_sequence Vlr_Capability_sequence[] = {
1093   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
1094   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1095   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_solsaSupportIndicator_impl },
1096   { 0, 0, 0, NULL }
1097 };
1098
1099 static int
1100 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_) {
1101   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1102                                 Vlr_Capability_sequence, hf_index, ett_gsm_map_Vlr_Capability);
1103
1104   return offset;
1105 }
1106 static int dissect_vlr_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1107   return dissect_gsm_map_Vlr_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Capability);
1108 }
1109
1110
1111 static int
1112 dissect_gsm_map_Imsi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1113   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1114                                     NULL);
1115
1116   return offset;
1117 }
1118 static int dissect_imsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1119   return dissect_gsm_map_Imsi(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
1120 }
1121 static int dissect_imsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1122   return dissect_gsm_map_Imsi(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imsi);
1123 }
1124
1125
1126 static int
1127 dissect_gsm_map_Lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1128   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1129                                     NULL);
1130
1131   return offset;
1132 }
1133 static int dissect_lmsi(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1134   return dissect_gsm_map_Lmsi(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
1135 }
1136 static int dissect_lmsi_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1137   return dissect_gsm_map_Lmsi(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lmsi);
1138 }
1139
1140
1141 static int
1142 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_) {
1143   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1144                                     NULL);
1145
1146   return offset;
1147 }
1148 static int dissect_msc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1149   return dissect_gsm_map_Msc_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
1150 }
1151 static int dissect_msc_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1152   return dissect_gsm_map_Msc_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msc_Number);
1153 }
1154
1155
1156 static int
1157 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_) {
1158   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1159                                     NULL);
1160
1161   return offset;
1162 }
1163 static int dissect_vlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1164   return dissect_gsm_map_Vlr_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
1165 }
1166 static int dissect_vlr_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1167   return dissect_gsm_map_Vlr_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_Number);
1168 }
1169 static int dissect_vlr_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1170   return dissect_gsm_map_Vlr_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlr_number);
1171 }
1172
1173 static const ber_sequence UpdateLocationArg_sequence[] = {
1174   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
1175   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
1176   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_vlr_Number },
1177   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
1178   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1179   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
1180   { 0, 0, 0, NULL }
1181 };
1182
1183 static int
1184 dissect_gsm_map_UpdateLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1185   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1186                                 UpdateLocationArg_sequence, hf_index, ett_gsm_map_UpdateLocationArg);
1187
1188   return offset;
1189 }
1190
1191
1192 static int
1193 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_) {
1194   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1195                                     NULL);
1196
1197   return offset;
1198 }
1199 static int dissect_hlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1200   return dissect_gsm_map_Hlr_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_Number);
1201 }
1202
1203 static const ber_sequence UpdateLocationRes_sequence[] = {
1204   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
1205   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1206   { 0, 0, 0, NULL }
1207 };
1208
1209 static int
1210 dissect_gsm_map_UpdateLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1211   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1212                                 UpdateLocationRes_sequence, hf_index, ett_gsm_map_UpdateLocationRes);
1213
1214   return offset;
1215 }
1216
1217
1218 static int
1219 dissect_gsm_map_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1220   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1221                                     NULL);
1222
1223   return offset;
1224 }
1225 static int dissect_teleservice(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1226   return dissect_gsm_map_Teleservice(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
1227 }
1228 static int dissect_teleservice_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1229   return dissect_gsm_map_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleservice);
1230 }
1231 static int dissect_teleserviceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1232   return dissect_gsm_map_Teleservice(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList_item);
1233 }
1234
1235
1236 static const value_string CancellationType_vals[] = {
1237   {   0, "updateProcedure" },
1238   {   1, "subscriptionWithdraw" },
1239   { 0, NULL }
1240 };
1241
1242
1243 static int
1244 dissect_gsm_map_CancellationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1245   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1246
1247   return offset;
1248 }
1249 static int dissect_cancellationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1250   return dissect_gsm_map_CancellationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cancellationType);
1251 }
1252
1253 static const ber_sequence T_imsi_WithLMSI_sequence[] = {
1254   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
1255   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lmsi },
1256   { 0, 0, 0, NULL }
1257 };
1258
1259 static int
1260 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_) {
1261   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1262                                 T_imsi_WithLMSI_sequence, hf_index, ett_gsm_map_T_imsi_WithLMSI);
1263
1264   return offset;
1265 }
1266 static int dissect_imsi_WithLMSI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1267   return dissect_gsm_map_T_imsi_WithLMSI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imsi_WithLMSI);
1268 }
1269
1270
1271 static const value_string T_identity_vals[] = {
1272   {   0, "imsi" },
1273   {   1, "imsi-WithLMSI" },
1274   { 0, NULL }
1275 };
1276
1277 static const ber_choice T_identity_choice[] = {
1278   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
1279   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_imsi_WithLMSI },
1280   { 0, 0, 0, 0, NULL }
1281 };
1282
1283 static int
1284 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_) {
1285   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1286                               T_identity_choice, hf_index, ett_gsm_map_T_identity);
1287
1288   return offset;
1289 }
1290 static int dissect_identity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1291   return dissect_gsm_map_T_identity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_identity);
1292 }
1293
1294 static const ber_sequence CancelLocationArg_sequence[] = {
1295   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_identity },
1296   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cancellationType },
1297   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1298   { 0, 0, 0, NULL }
1299 };
1300
1301 static int
1302 dissect_gsm_map_CancelLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1303   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1304                                 CancelLocationArg_sequence, hf_index, ett_gsm_map_CancelLocationArg);
1305
1306   return offset;
1307 }
1308
1309 static const ber_sequence CancelLocationRes_sequence[] = {
1310   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1311   { 0, 0, 0, NULL }
1312 };
1313
1314 static int
1315 dissect_gsm_map_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1316   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1317                                 CancelLocationRes_sequence, hf_index, ett_gsm_map_CancelLocationRes);
1318
1319   return offset;
1320 }
1321
1322
1323 static int
1324 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_) {
1325   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1326                                     NULL);
1327
1328   return offset;
1329 }
1330 static int dissect_sgsn_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1331   return dissect_gsm_map_Sgsn_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
1332 }
1333 static int dissect_sgsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1334   return dissect_gsm_map_Sgsn_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Number);
1335 }
1336
1337 static const ber_sequence PurgeMS_Arg_sequence[] = {
1338   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
1339   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Number_impl },
1340   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
1341   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1342   { 0, 0, 0, NULL }
1343 };
1344
1345 static int
1346 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_) {
1347   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1348                                 PurgeMS_Arg_sequence, hf_index, ett_gsm_map_PurgeMS_Arg);
1349
1350   return offset;
1351 }
1352
1353 static const ber_sequence PurgeMS_Res_sequence[] = {
1354   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeTMSI_impl },
1355   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_freezeP_TMSI_impl },
1356   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
1357   { 0, 0, 0, NULL }
1358 };
1359
1360 static int
1361 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_) {
1362   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1363                                 PurgeMS_Res_sequence, hf_index, ett_gsm_map_PurgeMS_Res);
1364
1365   return offset;
1366 }
1367
1368
1369 static int
1370 dissect_gsm_map_Tmsi(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1371   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1372                                     NULL);
1373
1374   return offset;
1375 }
1376
1377
1378 static int
1379 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_) {
1380   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1381                                     NULL);
1382
1383   return offset;
1384 }
1385 static int dissect_rand(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1386   return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rand);
1387 }
1388
1389
1390 static int
1391 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_) {
1392   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1393                                     NULL);
1394
1395   return offset;
1396 }
1397 static int dissect_sres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1398   return dissect_gsm_map_OCTET_STRING_SIZE_4(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sres);
1399 }
1400 static int dissect_cug_Interlock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1401   return dissect_gsm_map_OCTET_STRING_SIZE_4(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Interlock);
1402 }
1403
1404
1405 static int
1406 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_) {
1407   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1408                                     NULL);
1409
1410   return offset;
1411 }
1412 static int dissect_kc(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1413   return dissect_gsm_map_OCTET_STRING_SIZE_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_kc);
1414 }
1415 static int dissect_geographicalInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1416   return dissect_gsm_map_OCTET_STRING_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_geographicalInformation);
1417 }
1418 static int dissect_groupKey_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1419   return dissect_gsm_map_OCTET_STRING_SIZE_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKey);
1420 }
1421
1422 static const ber_sequence T_authenticationSetList_item_sequence[] = {
1423   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
1424   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
1425   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
1426   { 0, 0, 0, NULL }
1427 };
1428
1429 static int
1430 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_) {
1431   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1432                                 T_authenticationSetList_item_sequence, hf_index, ett_gsm_map_T_authenticationSetList_item);
1433
1434   return offset;
1435 }
1436 static int dissect_authenticationSetList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1437   return dissect_gsm_map_T_authenticationSetList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList_item);
1438 }
1439
1440 static const ber_sequence T_authenticationSetList_sequence_of[1] = {
1441   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_authenticationSetList_item },
1442 };
1443
1444 static int
1445 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_) {
1446   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1447                                    T_authenticationSetList_sequence_of, hf_index, ett_gsm_map_T_authenticationSetList);
1448
1449   return offset;
1450 }
1451 static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1452   return dissect_gsm_map_T_authenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList);
1453 }
1454
1455 static const ber_sequence SendIdentificationRes_sequence[] = {
1456   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
1457   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_authenticationSetList },
1458   { 0, 0, 0, NULL }
1459 };
1460
1461 static int
1462 dissect_gsm_map_SendIdentificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1463   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1464                                 SendIdentificationRes_sequence, hf_index, ett_gsm_map_SendIdentificationRes);
1465
1466   return offset;
1467 }
1468
1469
1470 static int
1471 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_) {
1472   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1473                                     NULL);
1474
1475   return offset;
1476 }
1477 static int dissect_targetCellId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1478   return dissect_gsm_map_OCTET_STRING_SIZE_5_7(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetCellId);
1479 }
1480
1481 static const ber_sequence PrepareHO_Arg_sequence[] = {
1482   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_targetCellId },
1483   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ho_NumberNotRequired },
1484   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
1485   { 0, 0, 0, NULL }
1486 };
1487
1488 static int
1489 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_) {
1490   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1491                                 PrepareHO_Arg_sequence, hf_index, ett_gsm_map_PrepareHO_Arg);
1492
1493   return offset;
1494 }
1495
1496
1497 static int
1498 dissect_gsm_map_T_handoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1499   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1500                                     NULL);
1501
1502   return offset;
1503 }
1504 static int dissect_handoverNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1505   return dissect_gsm_map_T_handoverNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber);
1506 }
1507
1508 static const ber_sequence PrepareHO_Res_sequence[] = {
1509   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_handoverNumber },
1510   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
1511   { 0, 0, 0, NULL }
1512 };
1513
1514 static int
1515 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_) {
1516   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1517                                 PrepareHO_Res_sequence, hf_index, ett_gsm_map_PrepareHO_Res);
1518
1519   return offset;
1520 }
1521
1522
1523 static int
1524 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_) {
1525   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1526                                     NULL);
1527
1528   return offset;
1529 }
1530 static int dissect_targetMSC_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1531   return dissect_gsm_map_T_targetMSC_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMSC_Number);
1532 }
1533
1534 static const ber_sequence PrepareSubsequentHO_Arg_sequence[] = {
1535   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetCellId },
1536   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_targetMSC_Number },
1537   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_bss_APDU },
1538   { 0, 0, 0, NULL }
1539 };
1540
1541 static int
1542 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_) {
1543   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1544                                 PrepareSubsequentHO_Arg_sequence, hf_index, ett_gsm_map_PrepareSubsequentHO_Arg);
1545
1546   return offset;
1547 }
1548
1549
1550
1551 static int
1552 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_) {
1553   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1554
1555   return offset;
1556 }
1557 static int dissect_numberOfRequestedVectors(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1558   return dissect_gsm_map_INTEGER_1_5(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfRequestedVectors);
1559 }
1560 static int dissect_numberOfForwarding_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1561   return dissect_gsm_map_INTEGER_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberOfForwarding);
1562 }
1563 static int dissect_ccbs_Index_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1564   return dissect_gsm_map_INTEGER_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Index);
1565 }
1566
1567
1568 static int
1569 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_) {
1570   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1571                                     NULL);
1572
1573   return offset;
1574 }
1575 static int dissect_auts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1576   return dissect_gsm_map_OCTET_STRING_SIZE_14(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_auts);
1577 }
1578
1579 static const ber_sequence T_re_synchronisationInfo_sequence[] = {
1580   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
1581   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_auts },
1582   { 0, 0, 0, NULL }
1583 };
1584
1585 static int
1586 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_) {
1587   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1588                                 T_re_synchronisationInfo_sequence, hf_index, ett_gsm_map_T_re_synchronisationInfo);
1589
1590   return offset;
1591 }
1592 static int dissect_re_synchronisationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1593   return dissect_gsm_map_T_re_synchronisationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_re_synchronisationInfo);
1594 }
1595
1596
1597 static const value_string T_requestingNodeType_vals[] = {
1598   {   0, "vlr" },
1599   {   1, "sgsn" },
1600   { 0, NULL }
1601 };
1602
1603
1604 static int
1605 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_) {
1606   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1607
1608   return offset;
1609 }
1610 static int dissect_requestingNodeType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1611   return dissect_gsm_map_T_requestingNodeType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingNodeType);
1612 }
1613
1614
1615 static int
1616 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_) {
1617   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1618                                     NULL);
1619
1620   return offset;
1621 }
1622 static int dissect_requestingPLMN_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1623   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestingPLMN_Id);
1624 }
1625 static int dissect_groupid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1626   return dissect_gsm_map_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupid);
1627 }
1628 static int dissect_groupId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1629   return dissect_gsm_map_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupId);
1630 }
1631 static int dissect_qos_Subscribed_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1632   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_qos_Subscribed);
1633 }
1634 static int dissect_lsaIdentity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1635   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentity);
1636 }
1637 static int dissect_naea_PreferredCIC_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1638   return dissect_gsm_map_OCTET_STRING_SIZE_3(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCIC);
1639 }
1640 static int dissect_lsaIdentityList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1641   return dissect_gsm_map_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList_item);
1642 }
1643
1644 static const ber_sequence SendAuthenticationInfoArg_sequence[] = {
1645   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
1646   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_numberOfRequestedVectors },
1647   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_segmentationProhibited },
1648   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_immediateResponsePreferred_impl },
1649   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_re_synchronisationInfo },
1650   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
1651   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingNodeType_impl },
1652   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_requestingPLMN_Id_impl },
1653   { 0, 0, 0, NULL }
1654 };
1655
1656 static int
1657 dissect_gsm_map_SendAuthenticationInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1658   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1659                                 SendAuthenticationInfoArg_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoArg);
1660
1661   return offset;
1662 }
1663
1664 static const ber_sequence SendAuthenticationInfoRes_item_sequence[] = {
1665   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand },
1666   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres },
1667   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc },
1668   { 0, 0, 0, NULL }
1669 };
1670
1671 static int
1672 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_) {
1673   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1674                                 SendAuthenticationInfoRes_item_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoRes_item);
1675
1676   return offset;
1677 }
1678 static int dissect_SendAuthenticationInfoRes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1679   return dissect_gsm_map_SendAuthenticationInfoRes_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_SendAuthenticationInfoRes_item);
1680 }
1681
1682 static const ber_sequence SendAuthenticationInfoRes_sequence_of[1] = {
1683   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SendAuthenticationInfoRes_item },
1684 };
1685
1686 static int
1687 dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1688   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1689                                    SendAuthenticationInfoRes_sequence_of, hf_index, ett_gsm_map_SendAuthenticationInfoRes);
1690
1691   return offset;
1692 }
1693
1694
1695 static int
1696 dissect_gsm_map_Imei(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1697   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1698                                     NULL);
1699
1700   return offset;
1701 }
1702 static int dissect_imei_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1703   return dissect_gsm_map_Imei(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_imei);
1704 }
1705
1706
1707 static int
1708 dissect_gsm_map_CheckIMEIArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1709   offset = dissect_gsm_map_Imei(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1710
1711   return offset;
1712 }
1713
1714
1715 static const value_string EquipmentStatus_vals[] = {
1716   {   0, "whiteListed" },
1717   {   1, "blackListed" },
1718   {   2, "greyListed" },
1719   { 0, NULL }
1720 };
1721
1722
1723 static int
1724 dissect_gsm_map_EquipmentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1725   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1726
1727   return offset;
1728 }
1729
1730
1731 static const value_string OverrideCategory_vals[] = {
1732   {   0, "overrideEnabled" },
1733   {   1, "overrideDisabled" },
1734   { 0, NULL }
1735 };
1736
1737
1738 static int
1739 dissect_gsm_map_OverrideCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1740   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1741
1742   return offset;
1743 }
1744 static int dissect_overrideCategory_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1745   return dissect_gsm_map_OverrideCategory(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_overrideCategory);
1746 }
1747
1748
1749 static int
1750 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_) {
1751   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1752                                     NULL);
1753
1754   return offset;
1755 }
1756 static int dissect_bearerService_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1757   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerService);
1758 }
1759 static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1760   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_dataCodingScheme);
1761 }
1762 static int dissect_nameString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1763   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_nameString);
1764 }
1765 static int dissect_lcsClientDialedByMS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1766   return dissect_gsm_map_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientDialedByMS);
1767 }
1768
1769
1770 static const value_string BasicService_vals[] = {
1771   {   2, "bearerService" },
1772   {   3, "teleservice" },
1773   { 0, NULL }
1774 };
1775
1776 static const ber_choice BasicService_choice[] = {
1777   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_bearerService_impl },
1778   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_teleservice_impl },
1779   { 0, 0, 0, 0, NULL }
1780 };
1781
1782 static int
1783 dissect_gsm_map_BasicService(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1784   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1785                               BasicService_choice, hf_index, ett_gsm_map_BasicService);
1786
1787   return offset;
1788 }
1789 static int dissect_BasicServiceGroupList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1790   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BasicServiceGroupList_item);
1791 }
1792 static int dissect_basicService(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1793   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicService);
1794 }
1795 static int dissect_basicServiceGroup(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1796   return dissect_gsm_map_BasicService(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroup);
1797 }
1798
1799 static const ber_sequence BasicServiceGroupList_sequence_of[1] = {
1800   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_BasicServiceGroupList_item },
1801 };
1802
1803 static int
1804 dissect_gsm_map_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1805   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1806                                    BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_BasicServiceGroupList);
1807
1808   return offset;
1809 }
1810 static int dissect_basicServiceGroupList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1811   return dissect_gsm_map_BasicServiceGroupList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
1812 }
1813 static int dissect_basicServiceGroupList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1814   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceGroupList);
1815 }
1816 static int dissect_basicServiceCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1817   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceCriteria);
1818 }
1819 static int dissect_basicServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1820   return dissect_gsm_map_BasicServiceGroupList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_basicServiceList);
1821 }
1822
1823
1824 static const value_string IntraCUG_Options_vals[] = {
1825   {   0, "noCUG-Restrictions" },
1826   {   1, "cugIC-CallBarred" },
1827   {   2, "cugOG-CallBarred" },
1828   { 0, NULL }
1829 };
1830
1831
1832 static int
1833 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_) {
1834   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1835
1836   return offset;
1837 }
1838 static int dissect_intraCUG_Options(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1839   return dissect_gsm_map_IntraCUG_Options(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_intraCUG_Options);
1840 }
1841
1842 static const asn_namedbit Odb_GeneralData_bits[] = {
1843   {  0, &hf_gsm_map_Odb_GeneralData_allOGCallsBarred, -1, -1, NULL, NULL },
1844   {  1, &hf_gsm_map_Odb_GeneralData_internationalOGCallsBarred, -1, -1, NULL, NULL },
1845   {  2, &hf_gsm_map_Odb_GeneralData_internationalOGCallsNotToHPLMNCountryBarred, -1, -1, NULL, NULL },
1846   {  3, &hf_gsm_map_Odb_GeneralData_premiumRateInformationOGCallsBarred, -1, -1, NULL, NULL },
1847   {  4, &hf_gsm_map_Odb_GeneralData_premiumRateEntertainementOGCallsBarred, -1, -1, NULL, NULL },
1848   {  5, &hf_gsm_map_Odb_GeneralData_ssAccessBarred, -1, -1, NULL, NULL },
1849   {  6, &hf_gsm_map_Odb_GeneralData_interzonalOGCallsBarred, -1, -1, NULL, NULL },
1850   {  7, &hf_gsm_map_Odb_GeneralData_interzonalOGCallsNotToHPLMNCountryBarred, -1, -1, NULL, NULL },
1851   {  8, &hf_gsm_map_Odb_GeneralData_interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred, -1, -1, NULL, NULL },
1852   {  9, &hf_gsm_map_Odb_GeneralData_allECTBarred, -1, -1, NULL, NULL },
1853   { 10, &hf_gsm_map_Odb_GeneralData_chargeableECTBarred, -1, -1, NULL, NULL },
1854   { 11, &hf_gsm_map_Odb_GeneralData_internationalECTBarred, -1, -1, NULL, NULL },
1855   { 12, &hf_gsm_map_Odb_GeneralData_interzonalECTBarred, -1, -1, NULL, NULL },
1856   { 13, &hf_gsm_map_Odb_GeneralData_doublyChargeableECTBarred, -1, -1, NULL, NULL },
1857   { 14, &hf_gsm_map_Odb_GeneralData_multipleECTBarred, -1, -1, NULL, NULL },
1858   { 0, NULL, 0, 0, NULL, NULL }
1859 };
1860
1861 static int
1862 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_) {
1863   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
1864                                  Odb_GeneralData_bits, hf_index, ett_gsm_map_Odb_GeneralData,
1865                                  NULL);
1866
1867   return offset;
1868 }
1869 static int dissect_odb_GeneralData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1870   return dissect_gsm_map_Odb_GeneralData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
1871 }
1872 static int dissect_odb_GeneralData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1873   return dissect_gsm_map_Odb_GeneralData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_GeneralData);
1874 }
1875
1876 static const asn_namedbit Odb_HPLMN_Data_bits[] = {
1877   {  0, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType1, -1, -1, NULL, NULL },
1878   {  1, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType2, -1, -1, NULL, NULL },
1879   {  2, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType3, -1, -1, NULL, NULL },
1880   {  3, &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType4, -1, -1, NULL, NULL },
1881   { 0, NULL, 0, 0, NULL, NULL }
1882 };
1883
1884 static int
1885 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_) {
1886   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
1887                                  Odb_HPLMN_Data_bits, hf_index, ett_gsm_map_Odb_HPLMN_Data,
1888                                  NULL);
1889
1890   return offset;
1891 }
1892 static int dissect_odb_HPLMN_Data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1893   return dissect_gsm_map_Odb_HPLMN_Data(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_odb_HPLMN_Data);
1894 }
1895
1896
1897 static const value_string SubscriberStatus_vals[] = {
1898   {   0, "serviceGranted" },
1899   {   1, "operatorDeterminedBarring" },
1900   { 0, NULL }
1901 };
1902
1903
1904 static int
1905 dissect_gsm_map_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1906   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1907
1908   return offset;
1909 }
1910 static int dissect_subscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1911   return dissect_gsm_map_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberStatus);
1912 }
1913
1914
1915 static const value_string BcsmTriggerDetectionPoint_vals[] = {
1916   {   2, "collectedInfo" },
1917   {  12, "termAttemptAuthorized" },
1918   { 0, NULL }
1919 };
1920
1921
1922 static int
1923 dissect_gsm_map_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1924   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1925
1926   return offset;
1927 }
1928 static int dissect_bcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1929   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bcsmTriggerDetectionPoint);
1930 }
1931 static int dissect_o_BcsmTriggerDetectionPoint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1932   return dissect_gsm_map_BcsmTriggerDetectionPoint(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmTriggerDetectionPoint);
1933 }
1934
1935
1936
1937 static int
1938 dissect_gsm_map_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1939   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1940
1941   return offset;
1942 }
1943 static int dissect_serviceKey(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1944   return dissect_gsm_map_ServiceKey(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceKey);
1945 }
1946
1947
1948 static int
1949 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_) {
1950   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1951                                     NULL);
1952
1953   return offset;
1954 }
1955 static int dissect_gsmSCFAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1956   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCFAddress);
1957 }
1958 static int dissect_gsmSCF_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1959   return dissect_gsm_map_GsmSCF_Address(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
1960 }
1961 static int dissect_gsmSCF_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1962   return dissect_gsm_map_GsmSCF_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gsmSCF_Address);
1963 }
1964
1965
1966 static const value_string DefaultCallHandling_vals[] = {
1967   {   0, "continueCall" },
1968   {   1, "releaseCall" },
1969   { 0, NULL }
1970 };
1971
1972
1973 static int
1974 dissect_gsm_map_DefaultCallHandling(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1975   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1976
1977   return offset;
1978 }
1979 static int dissect_defaultCallHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1980   return dissect_gsm_map_DefaultCallHandling(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultCallHandling);
1981 }
1982
1983 static const ber_sequence BcsmCamelTDPData_sequence[] = {
1984   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_bcsmTriggerDetectionPoint },
1985   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serviceKey },
1986   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsmSCFAddress_impl },
1987   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_defaultCallHandling_impl },
1988   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
1989   { 0, 0, 0, NULL }
1990 };
1991
1992 static int
1993 dissect_gsm_map_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1994   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1995                                 BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_BcsmCamelTDPData);
1996
1997   return offset;
1998 }
1999 static int dissect_BcsmCamelTDPDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2000   return dissect_gsm_map_BcsmCamelTDPData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_BcsmCamelTDPDataList_item);
2001 }
2002
2003 static const ber_sequence BcsmCamelTDPDataList_sequence_of[1] = {
2004   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BcsmCamelTDPDataList_item },
2005 };
2006
2007 static int
2008 dissect_gsm_map_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2009   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2010                                    BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_BcsmCamelTDPDataList);
2011
2012   return offset;
2013 }
2014 static int dissect_o_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2015   return dissect_gsm_map_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDPDataList);
2016 }
2017 static int dissect_t_BcsmCamelTDPDataList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2018   return dissect_gsm_map_BcsmCamelTDPDataList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_t_BcsmCamelTDPDataList);
2019 }
2020
2021
2022
2023 static int
2024 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_) {
2025   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2026
2027   return offset;
2028 }
2029 static int dissect_camelCapabilityHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2030   return dissect_gsm_map_INTEGER_1_16(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelCapabilityHandling);
2031 }
2032
2033 static const ber_sequence O_CSI_sequence[] = {
2034   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_o_BcsmCamelTDPDataList },
2035   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2036   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
2037   { 0, 0, 0, NULL }
2038 };
2039
2040 static int
2041 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_) {
2042   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2043                                 O_CSI_sequence, hf_index, ett_gsm_map_O_CSI);
2044
2045   return offset;
2046 }
2047 static int dissect_o_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2048   return dissect_gsm_map_O_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_CSI);
2049 }
2050
2051
2052 static int
2053 dissect_gsm_map_Msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2054   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2055                                     NULL);
2056
2057   return offset;
2058 }
2059 static int dissect_msisdn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2060   return dissect_gsm_map_Msisdn(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
2061 }
2062 static int dissect_msisdn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2063   return dissect_gsm_map_Msisdn(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_msisdn);
2064 }
2065
2066
2067 static int
2068 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_) {
2069   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2070                                     NULL);
2071
2072   return offset;
2073 }
2074 static int dissect_category_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2075   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_category);
2076 }
2077 static int dissect_interCUG_Restrictions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2078   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_interCUG_Restrictions);
2079 }
2080 static int dissect_ss_EventList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2081   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList_item);
2082 }
2083 static int dissect_lsaAttributes_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2084   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaAttributes);
2085 }
2086 static int dissect_ss_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2087   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List_item);
2088 }
2089 static int dissect_alertingPattern(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2090   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
2091 }
2092 static int dissect_alertingPattern_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2093   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_alertingPattern);
2094 }
2095 static int dissect_uuIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2096   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uuIndicator);
2097 }
2098 static int dissect_call_Direction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2099   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_call_Direction);
2100 }
2101 static int dissect_ussd_DataCodingScheme(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2102   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_DataCodingScheme);
2103 }
2104 static int dissect_ss_Event_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2105   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Event);
2106 }
2107 static int dissect_cipheringAlgorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2108   return dissect_gsm_map_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cipheringAlgorithm);
2109 }
2110 static int dissect_lcs_Priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2111   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Priority);
2112 }
2113 static int dissect_horizontal_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2114   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_horizontal_accuracy);
2115 }
2116 static int dissect_vertical_accuracy_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2117   return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vertical_accuracy);
2118 }
2119
2120
2121 static int
2122 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_) {
2123   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2124                                     NULL);
2125
2126   return offset;
2127 }
2128 static int dissect_bearerServiceList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2129   return dissect_gsm_map_OCTET_STRING_SIZE_1_5(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_bearerServiceList_item);
2130 }
2131
2132 static const ber_sequence SEQUNCE_OF_OCTET_STRING_SIZE_1_5_sequence_of[1] = {
2133   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_bearerServiceList_item },
2134 };
2135
2136 static int
2137 dissect_gsm_map_SEQUNCE_OF_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_) {
2138   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2139                                    SEQUNCE_OF_OCTET_STRING_SIZE_1_5_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_5);
2140
2141   return offset;
2142 }
2143 static int dissect_bearerServiceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2144   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_bearerServiceList);
2145 }
2146
2147 static const ber_sequence SEQUNCE_OF_Teleservice_sequence_of[1] = {
2148   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_teleserviceList_item },
2149 };
2150
2151 static int
2152 dissect_gsm_map_SEQUNCE_OF_Teleservice(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2153   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2154                                    SEQUNCE_OF_Teleservice_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_Teleservice);
2155
2156   return offset;
2157 }
2158 static int dissect_teleserviceList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2159   return dissect_gsm_map_SEQUNCE_OF_Teleservice(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_teleserviceList);
2160 }
2161
2162
2163 static int
2164 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_) {
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_ss_Code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2171   return dissect_gsm_map_Ss_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
2172 }
2173 static int dissect_ss_Code_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2174   return dissect_gsm_map_Ss_Code(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
2175 }
2176
2177
2178 static int
2179 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_) {
2180   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2181                                     NULL);
2182
2183   return offset;
2184 }
2185 static int dissect_ss_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2186   return dissect_gsm_map_Ss_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
2187 }
2188 static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2189   return dissect_gsm_map_Ss_Status(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Status);
2190 }
2191
2192
2193 static int
2194 dissect_gsm_map_ForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2195   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2196                                     NULL);
2197
2198   return offset;
2199 }
2200 static int dissect_forwardedToNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2201   return dissect_gsm_map_ForwardedToNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToNumber);
2202 }
2203
2204
2205 static int
2206 dissect_gsm_map_ForwardedToSubaddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2207   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2208                                     NULL);
2209
2210   return offset;
2211 }
2212 static int dissect_forwardedToSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2213   return dissect_gsm_map_ForwardedToSubaddress(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardedToSubaddress);
2214 }
2215
2216
2217 static int
2218 dissect_gsm_map_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2219   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2220                                     NULL);
2221
2222   return offset;
2223 }
2224 static int dissect_forwardingOptions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2225   return dissect_gsm_map_ForwardingOptions(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingOptions);
2226 }
2227
2228
2229
2230 static int
2231 dissect_gsm_map_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2232   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2233
2234   return offset;
2235 }
2236 static int dissect_noReplyConditionTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2237   return dissect_gsm_map_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_noReplyConditionTime);
2238 }
2239
2240 static const ber_sequence ForwardingFeatureList_sequence[] = {
2241   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
2242   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
2243   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
2244   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
2245   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
2246   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
2247   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2248   { 0, 0, 0, NULL }
2249 };
2250
2251 static int
2252 dissect_gsm_map_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2253   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2254                                 ForwardingFeatureList_sequence, hf_index, ett_gsm_map_ForwardingFeatureList);
2255
2256   return offset;
2257 }
2258 static int dissect_forwardingFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2259   return dissect_gsm_map_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList_item);
2260 }
2261
2262 static const ber_sequence SEQUNCE_OF_ForwardingFeatureList_sequence_of[1] = {
2263   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList_item },
2264 };
2265
2266 static int
2267 dissect_gsm_map_SEQUNCE_OF_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2268   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2269                                    SEQUNCE_OF_ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_ForwardingFeatureList);
2270
2271   return offset;
2272 }
2273 static int dissect_forwardingFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2274   return dissect_gsm_map_SEQUNCE_OF_ForwardingFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
2275 }
2276 static int dissect_forwardingFeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2277   return dissect_gsm_map_SEQUNCE_OF_ForwardingFeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingFeatureList);
2278 }
2279
2280 static const ber_sequence ForwardingInfo_sequence[] = {
2281   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
2282   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingFeatureList },
2283   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2284   { 0, 0, 0, NULL }
2285 };
2286
2287 static int
2288 dissect_gsm_map_ForwardingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2289   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2290                                 ForwardingInfo_sequence, hf_index, ett_gsm_map_ForwardingInfo);
2291
2292   return offset;
2293 }
2294 static int dissect_forwardingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2295   return dissect_gsm_map_ForwardingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingInfo);
2296 }
2297
2298 static const ber_sequence T_callBarringFeatureList_item_sequence[] = {
2299   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
2300   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
2301   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2302   { 0, 0, 0, NULL }
2303 };
2304
2305 static int
2306 dissect_gsm_map_T_callBarringFeatureList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2307   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2308                                 T_callBarringFeatureList_item_sequence, hf_index, ett_gsm_map_T_callBarringFeatureList_item);
2309
2310   return offset;
2311 }
2312 static int dissect_callBarringFeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2313   return dissect_gsm_map_T_callBarringFeatureList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringFeatureList_item);
2314 }
2315
2316 static const ber_sequence T_callBarringFeatureList_sequence_of[1] = {
2317   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList_item },
2318 };
2319
2320 static int
2321 dissect_gsm_map_T_callBarringFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2322   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2323                                    T_callBarringFeatureList_sequence_of, hf_index, ett_gsm_map_T_callBarringFeatureList);
2324
2325   return offset;
2326 }
2327 static int dissect_callBarringFeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2328   return dissect_gsm_map_T_callBarringFeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringFeatureList);
2329 }
2330
2331 static const ber_sequence CallBarringInfo_sequence[] = {
2332   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
2333   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_callBarringFeatureList },
2334   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2335   { 0, 0, 0, NULL }
2336 };
2337
2338 static int
2339 dissect_gsm_map_CallBarringInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2340   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2341                                 CallBarringInfo_sequence, hf_index, ett_gsm_map_CallBarringInfo);
2342
2343   return offset;
2344 }
2345 static int dissect_callBarringInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2346   return dissect_gsm_map_CallBarringInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringInfo);
2347 }
2348
2349
2350
2351 static int
2352 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_) {
2353   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2354
2355   return offset;
2356 }
2357 static int dissect_cug_Index(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2358   return dissect_gsm_map_INTEGER_0_32767(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Index);
2359 }
2360 static int dissect_preferentialCUG_Indicator(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2361   return dissect_gsm_map_INTEGER_0_32767(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_preferentialCUG_Indicator);
2362 }
2363 static int dissect_ageOfLocationInformation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2364   return dissect_gsm_map_INTEGER_0_32767(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationInformation);
2365 }
2366 static int dissect_ageOfLocationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2367   return dissect_gsm_map_INTEGER_0_32767(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ageOfLocationEstimate);
2368 }
2369
2370 static const ber_sequence T_cug_SubscriptionList_item_sequence[] = {
2371   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cug_Index },
2372   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
2373   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_intraCUG_Options },
2374   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
2375   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2376   { 0, 0, 0, NULL }
2377 };
2378
2379 static int
2380 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_) {
2381   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2382                                 T_cug_SubscriptionList_item_sequence, hf_index, ett_gsm_map_T_cug_SubscriptionList_item);
2383
2384   return offset;
2385 }
2386 static int dissect_cug_SubscriptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2387   return dissect_gsm_map_T_cug_SubscriptionList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList_item);
2388 }
2389
2390 static const ber_sequence T_cug_SubscriptionList_sequence_of[1] = {
2391   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList_item },
2392 };
2393
2394 static int
2395 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_) {
2396   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2397                                    T_cug_SubscriptionList_sequence_of, hf_index, ett_gsm_map_T_cug_SubscriptionList);
2398
2399   return offset;
2400 }
2401 static int dissect_cug_SubscriptionList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2402   return dissect_gsm_map_T_cug_SubscriptionList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_SubscriptionList);
2403 }
2404
2405 static const ber_sequence T_cug_FeatureList_item_sequence[] = {
2406   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
2407   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_preferentialCUG_Indicator },
2408   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_interCUG_Restrictions },
2409   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2410   { 0, 0, 0, NULL }
2411 };
2412
2413 static int
2414 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_) {
2415   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2416                                 T_cug_FeatureList_item_sequence, hf_index, ett_gsm_map_T_cug_FeatureList_item);
2417
2418   return offset;
2419 }
2420 static int dissect_cug_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2421   return dissect_gsm_map_T_cug_FeatureList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList_item);
2422 }
2423
2424 static const ber_sequence T_cug_FeatureList_sequence_of[1] = {
2425   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList_item },
2426 };
2427
2428 static int
2429 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_) {
2430   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2431                                    T_cug_FeatureList_sequence_of, hf_index, ett_gsm_map_T_cug_FeatureList);
2432
2433   return offset;
2434 }
2435 static int dissect_cug_FeatureList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2436   return dissect_gsm_map_T_cug_FeatureList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_FeatureList);
2437 }
2438
2439 static const ber_sequence T_cug_Info_sequence[] = {
2440   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cug_SubscriptionList },
2441   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_FeatureList },
2442   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2443   { 0, 0, 0, NULL }
2444 };
2445
2446 static int
2447 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_) {
2448   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2449                                 T_cug_Info_sequence, hf_index, ett_gsm_map_T_cug_Info);
2450
2451   return offset;
2452 }
2453 static int dissect_cug_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2454   return dissect_gsm_map_T_cug_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_Info);
2455 }
2456
2457
2458 static const value_string CliRestrictionOption_vals[] = {
2459   {   0, "permanent" },
2460   {   1, "temporaryDefaultRestricted" },
2461   {   2, "temporaryDefaultAllowed" },
2462   { 0, NULL }
2463 };
2464
2465
2466 static int
2467 dissect_gsm_map_CliRestrictionOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2468   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2469
2470   return offset;
2471 }
2472 static int dissect_cliRestrictionOption_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2473   return dissect_gsm_map_CliRestrictionOption(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cliRestrictionOption);
2474 }
2475
2476
2477 static const value_string Ss_SubscriptionOption_vals[] = {
2478   {   2, "cliRestrictionOption" },
2479   {   1, "overrideCategory" },
2480   { 0, NULL }
2481 };
2482
2483 static const ber_choice Ss_SubscriptionOption_choice[] = {
2484   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
2485   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_overrideCategory_impl },
2486   { 0, 0, 0, 0, NULL }
2487 };
2488
2489 static int
2490 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_) {
2491   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2492                               Ss_SubscriptionOption_choice, hf_index, ett_gsm_map_Ss_SubscriptionOption);
2493
2494   return offset;
2495 }
2496 static int dissect_ss_SubscriptionOption(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2497   return dissect_gsm_map_Ss_SubscriptionOption(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_SubscriptionOption);
2498 }
2499
2500 static const ber_sequence T_ss_Data2_sequence[] = {
2501   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
2502   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
2503   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
2504   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
2505   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2506   { 0, 0, 0, NULL }
2507 };
2508
2509 static int
2510 dissect_gsm_map_T_ss_Data2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2511   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2512                                 T_ss_Data2_sequence, hf_index, ett_gsm_map_T_ss_Data2);
2513
2514   return offset;
2515 }
2516 static int dissect_ss_Data2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2517   return dissect_gsm_map_T_ss_Data2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Data2);
2518 }
2519
2520
2521
2522 static int
2523 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_) {
2524   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2525
2526   return offset;
2527 }
2528 static int dissect_maximumentitledPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2529   return dissect_gsm_map_INTEGER_0_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_maximumentitledPriority);
2530 }
2531 static int dissect_defaultPriority(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2532   return dissect_gsm_map_INTEGER_0_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
2533 }
2534 static int dissect_defaultPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2535   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_defaultPriority);
2536 }
2537 static int dissect_maximumEntitledPriority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2538   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_maximumEntitledPriority);
2539 }
2540 static int dissect_groupKeyNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2541   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_groupKeyNumber);
2542 }
2543 static int dissect_priority_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2544   return dissect_gsm_map_INTEGER_0_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_priority);
2545 }
2546
2547 static const ber_sequence T_emlpp_Info_sequence[] = {
2548   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maximumentitledPriority },
2549   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
2550   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2551   { 0, 0, 0, NULL }
2552 };
2553
2554 static int
2555 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_) {
2556   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2557                                 T_emlpp_Info_sequence, hf_index, ett_gsm_map_T_emlpp_Info);
2558
2559   return offset;
2560 }
2561 static int dissect_emlpp_Info_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2562   return dissect_gsm_map_T_emlpp_Info(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_emlpp_Info);
2563 }
2564
2565
2566 static const value_string T_provisionedSS_item_vals[] = {
2567   {   0, "forwardingInfo" },
2568   {   1, "callBarringInfo" },
2569   {   2, "cug-Info" },
2570   {   3, "ss-Data2" },
2571   {   4, "emlpp-Info" },
2572   { 0, NULL }
2573 };
2574
2575 static const ber_choice T_provisionedSS_item_choice[] = {
2576   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
2577   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
2578   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cug_Info_impl },
2579   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data2_impl },
2580   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_emlpp_Info_impl },
2581   { 0, 0, 0, 0, NULL }
2582 };
2583
2584 static int
2585 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_) {
2586   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2587                               T_provisionedSS_item_choice, hf_index, ett_gsm_map_T_provisionedSS_item);
2588
2589   return offset;
2590 }
2591 static int dissect_provisionedSS_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2592   return dissect_gsm_map_T_provisionedSS_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS_item);
2593 }
2594
2595 static const ber_sequence T_provisionedSS_sequence_of[1] = {
2596   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_provisionedSS_item },
2597 };
2598
2599 static int
2600 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_) {
2601   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2602                                    T_provisionedSS_sequence_of, hf_index, ett_gsm_map_T_provisionedSS);
2603
2604   return offset;
2605 }
2606 static int dissect_provisionedSS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2607   return dissect_gsm_map_T_provisionedSS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_provisionedSS);
2608 }
2609
2610 static const ber_sequence T_odb_Data_sequence[] = {
2611   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_odb_GeneralData },
2612   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_odb_HPLMN_Data },
2613   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2614   { 0, 0, 0, NULL }
2615 };
2616
2617 static int
2618 dissect_gsm_map_T_odb_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2619   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2620                                 T_odb_Data_sequence, hf_index, ett_gsm_map_T_odb_Data);
2621
2622   return offset;
2623 }
2624 static int dissect_odb_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2625   return dissect_gsm_map_T_odb_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_odb_Data);
2626 }
2627
2628
2629 static int
2630 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_) {
2631   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2632                                     NULL);
2633
2634   return offset;
2635 }
2636 static int dissect_regionalSubscriptionData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2637   return dissect_gsm_map_OCTET_STRING_SIZE_2(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData_item);
2638 }
2639 static int dissect_pdp_Type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2640   return dissect_gsm_map_OCTET_STRING_SIZE_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Type);
2641 }
2642 static int dissect_regionalSubscriptionIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2643   return dissect_gsm_map_OCTET_STRING_SIZE_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionIdentifier);
2644 }
2645
2646 static const ber_sequence SEQUNCE_OF_OCTET_STRING_SIZE_2_sequence_of[1] = {
2647   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_regionalSubscriptionData_item },
2648 };
2649
2650 static int
2651 dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2652   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2653                                    SEQUNCE_OF_OCTET_STRING_SIZE_2_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_2);
2654
2655   return offset;
2656 }
2657 static int dissect_regionalSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2658   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionData);
2659 }
2660
2661 static const ber_sequence T_vbsSubscriptionData_item_sequence[] = {
2662   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupid },
2663   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_broadcastInitEntitlement },
2664   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2665   { 0, 0, 0, NULL }
2666 };
2667
2668 static int
2669 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_) {
2670   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2671                                 T_vbsSubscriptionData_item_sequence, hf_index, ett_gsm_map_T_vbsSubscriptionData_item);
2672
2673   return offset;
2674 }
2675 static int dissect_vbsSubscriptionData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2676   return dissect_gsm_map_T_vbsSubscriptionData_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData_item);
2677 }
2678
2679 static const ber_sequence T_vbsSubscriptionData_sequence_of[1] = {
2680   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_vbsSubscriptionData_item },
2681 };
2682
2683 static int
2684 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_) {
2685   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2686                                    T_vbsSubscriptionData_sequence_of, hf_index, ett_gsm_map_T_vbsSubscriptionData);
2687
2688   return offset;
2689 }
2690 static int dissect_vbsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2691   return dissect_gsm_map_T_vbsSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vbsSubscriptionData);
2692 }
2693
2694 static const ber_sequence T_vgcsSubscriptionData_item_sequence[] = {
2695   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupId },
2696   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2697   { 0, 0, 0, NULL }
2698 };
2699
2700 static int
2701 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_) {
2702   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2703                                 T_vgcsSubscriptionData_item_sequence, hf_index, ett_gsm_map_T_vgcsSubscriptionData_item);
2704
2705   return offset;
2706 }
2707 static int dissect_vgcsSubscriptionData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2708   return dissect_gsm_map_T_vgcsSubscriptionData_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData_item);
2709 }
2710
2711 static const ber_sequence T_vgcsSubscriptionData_sequence_of[1] = {
2712   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_vgcsSubscriptionData_item },
2713 };
2714
2715 static int
2716 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_) {
2717   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2718                                    T_vgcsSubscriptionData_sequence_of, hf_index, ett_gsm_map_T_vgcsSubscriptionData);
2719
2720   return offset;
2721 }
2722 static int dissect_vgcsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2723   return dissect_gsm_map_T_vgcsSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vgcsSubscriptionData);
2724 }
2725
2726 static const ber_sequence SEQUNCE_OF_OCTET_STRING_SIZE_1_sequence_of[1] = {
2727   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventList_item },
2728 };
2729
2730 static int
2731 dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2732   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2733                                    SEQUNCE_OF_OCTET_STRING_SIZE_1_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1);
2734
2735   return offset;
2736 }
2737 static int dissect_ss_EventList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2738   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventList);
2739 }
2740 static int dissect_ss_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2741   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_List);
2742 }
2743
2744 static const ber_sequence T_ss_CamelData_sequence[] = {
2745   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_EventList },
2746   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsmSCF_Address },
2747   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2748   { 0, 0, 0, NULL }
2749 };
2750
2751 static int
2752 dissect_gsm_map_T_ss_CamelData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2753   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2754                                 T_ss_CamelData_sequence, hf_index, ett_gsm_map_T_ss_CamelData);
2755
2756   return offset;
2757 }
2758 static int dissect_ss_CamelData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2759   return dissect_gsm_map_T_ss_CamelData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CamelData);
2760 }
2761
2762 static const ber_sequence T_ss_CSI_sequence[] = {
2763   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ss_CamelData },
2764   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
2765   { 0, 0, 0, NULL }
2766 };
2767
2768 static int
2769 dissect_gsm_map_T_ss_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2770   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2771                                 T_ss_CSI_sequence, hf_index, ett_gsm_map_T_ss_CSI);
2772
2773   return offset;
2774 }
2775 static int dissect_ss_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2776   return dissect_gsm_map_T_ss_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_CSI);
2777 }
2778
2779
2780 static const value_string MatchType_vals[] = {
2781   {   0, "inhibiting" },
2782   {   1, "enabling" },
2783   { 0, NULL }
2784 };
2785
2786
2787 static int
2788 dissect_gsm_map_MatchType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2789   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2790
2791   return offset;
2792 }
2793 static int dissect_matchType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2794   return dissect_gsm_map_MatchType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_matchType);
2795 }
2796
2797
2798 static int
2799 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_) {
2800   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2801                                     NULL);
2802
2803   return offset;
2804 }
2805 static int dissect_destinationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2806   return dissect_gsm_map_T_destinationNumberList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList_item);
2807 }
2808
2809 static const ber_sequence T_destinationNumberList_sequence_of[1] = {
2810   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_destinationNumberList_item },
2811 };
2812
2813 static int
2814 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_) {
2815   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2816                                    T_destinationNumberList_sequence_of, hf_index, ett_gsm_map_T_destinationNumberList);
2817
2818   return offset;
2819 }
2820 static int dissect_destinationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2821   return dissect_gsm_map_T_destinationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberList);
2822 }
2823
2824
2825
2826 static int
2827 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_) {
2828   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2829
2830   return offset;
2831 }
2832 static int dissect_destinationNumberLengthList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2833   return dissect_gsm_map_INTEGER_1_15(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList_item);
2834 }
2835
2836 static const ber_sequence SEQUNCE_OF_INTEGER_1_15_sequence_of[1] = {
2837   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_destinationNumberLengthList_item },
2838 };
2839
2840 static int
2841 dissect_gsm_map_SEQUNCE_OF_INTEGER_1_15(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2842   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2843                                    SEQUNCE_OF_INTEGER_1_15_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_INTEGER_1_15);
2844
2845   return offset;
2846 }
2847 static int dissect_destinationNumberLengthList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2848   return dissect_gsm_map_SEQUNCE_OF_INTEGER_1_15(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberLengthList);
2849 }
2850
2851 static const ber_sequence DestinationNumberCriteria_sequence[] = {
2852   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_matchType_impl },
2853   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberList_impl },
2854   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberLengthList_impl },
2855   { 0, 0, 0, NULL }
2856 };
2857
2858 static int
2859 dissect_gsm_map_DestinationNumberCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2860   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2861                                 DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_DestinationNumberCriteria);
2862
2863   return offset;
2864 }
2865 static int dissect_destinationNumberCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2866   return dissect_gsm_map_DestinationNumberCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_destinationNumberCriteria);
2867 }
2868
2869
2870 static const value_string CallTypeCriteria_vals[] = {
2871   {   0, "forwarded" },
2872   {   1, "notForwarded" },
2873   { 0, NULL }
2874 };
2875
2876
2877 static int
2878 dissect_gsm_map_CallTypeCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2879   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2880
2881   return offset;
2882 }
2883 static int dissect_callTypeCriteria_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2884   return dissect_gsm_map_CallTypeCriteria(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callTypeCriteria);
2885 }
2886
2887 static const ber_sequence O_BcsmCamelTDP_CriteriaList_item_sequence[] = {
2888   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_o_BcsmTriggerDetectionPoint },
2889   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_destinationNumberCriteria_impl },
2890   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceCriteria_impl },
2891   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callTypeCriteria_impl },
2892   { 0, 0, 0, NULL }
2893 };
2894
2895 static int
2896 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_) {
2897   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2898                                 O_BcsmCamelTDP_CriteriaList_item_sequence, hf_index, ett_gsm_map_O_BcsmCamelTDP_CriteriaList_item);
2899
2900   return offset;
2901 }
2902 static int dissect_O_BcsmCamelTDP_CriteriaList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2903   return dissect_gsm_map_O_BcsmCamelTDP_CriteriaList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_O_BcsmCamelTDP_CriteriaList_item);
2904 }
2905
2906 static const ber_sequence O_BcsmCamelTDP_CriteriaList_sequence_of[1] = {
2907   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_O_BcsmCamelTDP_CriteriaList_item },
2908 };
2909
2910 static int
2911 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_) {
2912   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2913                                    O_BcsmCamelTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_O_BcsmCamelTDP_CriteriaList);
2914
2915   return offset;
2916 }
2917 static int dissect_o_BcsmCamelTDP_CriteriaList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2918   return dissect_gsm_map_O_BcsmCamelTDP_CriteriaList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_o_BcsmCamelTDP_CriteriaList);
2919 }
2920
2921 static const ber_sequence T_vlrCamelSubscriptionInfo_sequence[] = {
2922   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
2923   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2924   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_CSI_impl },
2925   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
2926   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tif_CSI_impl },
2927   { 0, 0, 0, NULL }
2928 };
2929
2930 static int
2931 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_) {
2932   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2933                                 T_vlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_T_vlrCamelSubscriptionInfo);
2934
2935   return offset;
2936 }
2937 static int dissect_vlrCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2938   return dissect_gsm_map_T_vlrCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vlrCamelSubscriptionInfo);
2939 }
2940
2941 static const ber_sequence Naea_PreferredCI_sequence[] = {
2942   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_naea_PreferredCIC_impl },
2943   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
2944   { 0, 0, 0, NULL }
2945 };
2946
2947 static int
2948 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_) {
2949   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2950                                 Naea_PreferredCI_sequence, hf_index, ett_gsm_map_Naea_PreferredCI);
2951
2952   return offset;
2953 }
2954 static int dissect_naea_PreferredCI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2955   return dissect_gsm_map_Naea_PreferredCI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_naea_PreferredCI);
2956 }
2957
2958
2959
2960 static int
2961 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_) {
2962   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2963
2964   return offset;
2965 }
2966 static int dissect_pdp_ContextId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2967   return dissect_gsm_map_INTEGER_1_50(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_ContextId);
2968 }
2969 static int dissect_contextIdList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2970   return dissect_gsm_map_INTEGER_1_50(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList_item);
2971 }
2972
2973
2974 static int
2975 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_) {
2976   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2977                                     NULL);
2978
2979   return offset;
2980 }
2981 static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2982   return dissect_gsm_map_OCTET_STRING_SIZE_1_16(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_pdp_Address);
2983 }
2984
2985
2986 static int
2987 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_) {
2988   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2989                                     NULL);
2990
2991   return offset;
2992 }
2993 static int dissect_apn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2994   return dissect_gsm_map_OCTET_STRING_SIZE_2_63(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_apn);
2995 }
2996
2997 static const ber_sequence T_gprsDataList_item_sequence[] = {
2998   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pdp_ContextId },
2999   { BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_pdp_Type_impl },
3000   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pdp_Address_impl },
3001   { BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_qos_Subscribed_impl },
3002   { BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vplmnAddressAllowed_impl },
3003   { BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_apn_impl },
3004   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3005   { 0, 0, 0, NULL }
3006 };
3007
3008 static int
3009 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_) {
3010   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3011                                 T_gprsDataList_item_sequence, hf_index, ett_gsm_map_T_gprsDataList_item);
3012
3013   return offset;
3014 }
3015 static int dissect_gprsDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3016   return dissect_gsm_map_T_gprsDataList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList_item);
3017 }
3018
3019 static const ber_sequence T_gprsDataList_sequence_of[1] = {
3020   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprsDataList_item },
3021 };
3022
3023 static int
3024 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_) {
3025   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3026                                    T_gprsDataList_sequence_of, hf_index, ett_gsm_map_T_gprsDataList);
3027
3028   return offset;
3029 }
3030 static int dissect_gprsDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3031   return dissect_gsm_map_T_gprsDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsDataList);
3032 }
3033
3034 static const ber_sequence T_gprsSubscriptionData_sequence[] = {
3035   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
3036   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprsDataList_impl },
3037   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3038   { 0, 0, 0, NULL }
3039 };
3040
3041 static int
3042 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_) {
3043   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3044                                 T_gprsSubscriptionData_sequence, hf_index, ett_gsm_map_T_gprsSubscriptionData);
3045
3046   return offset;
3047 }
3048 static int dissect_gprsSubscriptionData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3049   return dissect_gsm_map_T_gprsSubscriptionData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionData);
3050 }
3051
3052
3053 static const value_string T_networkAccessMode_vals[] = {
3054   {   0, "bothMSCAndSGSN" },
3055   {   1, "onlyMSC" },
3056   {   2, "onlySGSN" },
3057   { 0, NULL }
3058 };
3059
3060
3061 static int
3062 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_) {
3063   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3064
3065   return offset;
3066 }
3067 static int dissect_networkAccessMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3068   return dissect_gsm_map_T_networkAccessMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkAccessMode);
3069 }
3070
3071
3072 static const value_string T_lsaOnlyAccessIndicator_vals[] = {
3073   {   0, "accessOutsideLSAsAllowed" },
3074   {   1, "accessOutsideLSAsRestricted" },
3075   { 0, NULL }
3076 };
3077
3078
3079 static int
3080 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_) {
3081   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3082
3083   return offset;
3084 }
3085 static int dissect_lsaOnlyAccessIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3086   return dissect_gsm_map_T_lsaOnlyAccessIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaOnlyAccessIndicator);
3087 }
3088
3089 static const ber_sequence T_lsaDataList_item_sequence[] = {
3090   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lsaIdentity_impl },
3091   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lsaAttributes_impl },
3092   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaActiveModeIndicator_impl },
3093   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3094   { 0, 0, 0, NULL }
3095 };
3096
3097 static int
3098 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_) {
3099   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3100                                 T_lsaDataList_item_sequence, hf_index, ett_gsm_map_T_lsaDataList_item);
3101
3102   return offset;
3103 }
3104 static int dissect_lsaDataList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3105   return dissect_gsm_map_T_lsaDataList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList_item);
3106 }
3107
3108 static const ber_sequence T_lsaDataList_sequence_of[1] = {
3109   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaDataList_item },
3110 };
3111
3112 static int
3113 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_) {
3114   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3115                                    T_lsaDataList_sequence_of, hf_index, ett_gsm_map_T_lsaDataList);
3116
3117   return offset;
3118 }
3119 static int dissect_lsaDataList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3120   return dissect_gsm_map_T_lsaDataList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaDataList);
3121 }
3122
3123 static const ber_sequence T_lsaInformation_sequence[] = {
3124   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_completeDataListIncluded },
3125   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaOnlyAccessIndicator_impl },
3126   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaDataList_impl },
3127   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3128   { 0, 0, 0, NULL }
3129 };
3130
3131 static int
3132 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_) {
3133   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3134                                 T_lsaInformation_sequence, hf_index, ett_gsm_map_T_lsaInformation);
3135
3136   return offset;
3137 }
3138 static int dissect_lsaInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3139   return dissect_gsm_map_T_lsaInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformation);
3140 }
3141
3142
3143 static int
3144 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_) {
3145   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3146                                     NULL);
3147
3148   return offset;
3149 }
3150 static int dissect_gmlc_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3151   return dissect_gsm_map_T_gmlc_List_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List_item);
3152 }
3153
3154 static const ber_sequence T_gmlc_List_sequence_of[1] = {
3155   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gmlc_List_item },
3156 };
3157
3158 static int
3159 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_) {
3160   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3161                                    T_gmlc_List_sequence_of, hf_index, ett_gsm_map_T_gmlc_List);
3162
3163   return offset;
3164 }
3165 static int dissect_gmlc_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3166   return dissect_gsm_map_T_gmlc_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_List);
3167 }
3168
3169
3170 static const value_string NotificationToMSUser_vals[] = {
3171   {   0, "notifyLocationAllowed" },
3172   {   1, "notifyAndVerify-LocationAllowedIfNoResponse" },
3173   {   2, "notifyAndVerify-LocationNotAllowedIfNoResponse" },
3174   { 0, NULL }
3175 };
3176
3177
3178 static int
3179 dissect_gsm_map_NotificationToMSUser(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3180   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3181
3182   return offset;
3183 }
3184 static int dissect_notificationToMSUser_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3185   return dissect_gsm_map_NotificationToMSUser(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_notificationToMSUser);
3186 }
3187
3188
3189 static int
3190 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_) {
3191   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3192                                     NULL);
3193
3194   return offset;
3195 }
3196 static int dissect_externalAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3197   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalAddress);
3198 }
3199 static int dissect_omc_Id_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3200   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_omc_Id);
3201 }
3202 static int dissect_serviceCentreAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3203   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
3204 }
3205 static int dissect_serviceCentreAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3206   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddress);
3207 }
3208 static int dissect_serviceCentreAddressOA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3209   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressOA);
3210 }
3211 static int dissect_serviceCentreAddressDA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3212   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceCentreAddressDA);
3213 }
3214 static int dissect_ss_EventSpecification_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3215   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification_item);
3216 }
3217 static int dissect_locationEstimate(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3218   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
3219 }
3220 static int dissect_locationEstimate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3221   return dissect_gsm_map_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimate);
3222 }
3223
3224 static const ber_sequence T_clientIdentity_sequence[] = {
3225   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
3226   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3227   { 0, 0, 0, NULL }
3228 };
3229
3230 static int
3231 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_) {
3232   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3233                                 T_clientIdentity_sequence, hf_index, ett_gsm_map_T_clientIdentity);
3234
3235   return offset;
3236 }
3237 static int dissect_clientIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3238   return dissect_gsm_map_T_clientIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_clientIdentity);
3239 }
3240
3241
3242 static const value_string T_gmlc_Restriction_vals[] = {
3243   {   0, "gmlc-List" },
3244   {   1, "home-Country" },
3245   { 0, NULL }
3246 };
3247
3248
3249 static int
3250 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_) {
3251   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3252
3253   return offset;
3254 }
3255 static int dissect_gmlc_Restriction_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3256   return dissect_gsm_map_T_gmlc_Restriction(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmlc_Restriction);
3257 }
3258
3259 static const ber_sequence T_externalClientList_item_sequence[] = {
3260   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_clientIdentity },
3261   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_Restriction_impl },
3262   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
3263   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3264   { 0, 0, 0, NULL }
3265 };
3266
3267 static int
3268 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_) {
3269   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3270                                 T_externalClientList_item_sequence, hf_index, ett_gsm_map_T_externalClientList_item);
3271
3272   return offset;
3273 }
3274 static int dissect_externalClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3275   return dissect_gsm_map_T_externalClientList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList_item);
3276 }
3277
3278 static const ber_sequence T_externalClientList_sequence_of[1] = {
3279   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_externalClientList_item },
3280 };
3281
3282 static int
3283 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_) {
3284   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3285                                    T_externalClientList_sequence_of, hf_index, ett_gsm_map_T_externalClientList);
3286
3287   return offset;
3288 }
3289 static int dissect_externalClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3290   return dissect_gsm_map_T_externalClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_externalClientList);
3291 }
3292
3293
3294 static const value_string T_plmnClientList_item_vals[] = {
3295   {   0, "broadcastService" },
3296   {   1, "o-andM-HPLMN" },
3297   {   2, "o-andM-VPLMN" },
3298   {   3, "anonymousLocation" },
3299   {   4, "targetMSsubscribedService" },
3300   { 0, NULL }
3301 };
3302
3303
3304 static int
3305 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_) {
3306   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3307
3308   return offset;
3309 }
3310 static int dissect_plmnClientList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3311   return dissect_gsm_map_T_plmnClientList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList_item);
3312 }
3313
3314 static const ber_sequence T_plmnClientList_sequence_of[1] = {
3315   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_plmnClientList_item },
3316 };
3317
3318 static int
3319 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_) {
3320   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3321                                    T_plmnClientList_sequence_of, hf_index, ett_gsm_map_T_plmnClientList);
3322
3323   return offset;
3324 }
3325 static int dissect_plmnClientList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3326   return dissect_gsm_map_T_plmnClientList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_plmnClientList);
3327 }
3328
3329 static const ber_sequence T_lcs_PrivacyExceptionList_item_sequence[] = {
3330   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
3331   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
3332   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationToMSUser_impl },
3333   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalClientList_impl },
3334   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_plmnClientList_impl },
3335   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3336   { 0, 0, 0, NULL }
3337 };
3338
3339 static int
3340 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_) {
3341   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3342                                 T_lcs_PrivacyExceptionList_item_sequence, hf_index, ett_gsm_map_T_lcs_PrivacyExceptionList_item);
3343
3344   return offset;
3345 }
3346 static int dissect_lcs_PrivacyExceptionList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3347   return dissect_gsm_map_T_lcs_PrivacyExceptionList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList_item);
3348 }
3349
3350 static const ber_sequence T_lcs_PrivacyExceptionList_sequence_of[1] = {
3351   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_PrivacyExceptionList_item },
3352 };
3353
3354 static int
3355 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_) {
3356   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3357                                    T_lcs_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_T_lcs_PrivacyExceptionList);
3358
3359   return offset;
3360 }
3361 static int dissect_lcs_PrivacyExceptionList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3362   return dissect_gsm_map_T_lcs_PrivacyExceptionList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_PrivacyExceptionList);
3363 }
3364
3365 static const ber_sequence T_molr_List_item_sequence[] = {
3366   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
3367   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
3368   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3369   { 0, 0, 0, NULL }
3370 };
3371
3372 static int
3373 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_) {
3374   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3375                                 T_molr_List_item_sequence, hf_index, ett_gsm_map_T_molr_List_item);
3376
3377   return offset;
3378 }
3379 static int dissect_molr_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3380   return dissect_gsm_map_T_molr_List_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List_item);
3381 }
3382
3383 static const ber_sequence T_molr_List_sequence_of[1] = {
3384   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_molr_List_item },
3385 };
3386
3387 static int
3388 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_) {
3389   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3390                                    T_molr_List_sequence_of, hf_index, ett_gsm_map_T_molr_List);
3391
3392   return offset;
3393 }
3394 static int dissect_molr_List_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3395   return dissect_gsm_map_T_molr_List(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_molr_List);
3396 }
3397
3398 static const ber_sequence T_lcsInformation_sequence[] = {
3399   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_List_impl },
3400   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_PrivacyExceptionList_impl },
3401   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_molr_List_impl },
3402   { 0, 0, 0, NULL }
3403 };
3404
3405 static int
3406 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_) {
3407   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3408                                 T_lcsInformation_sequence, hf_index, ett_gsm_map_T_lcsInformation);
3409
3410   return offset;
3411 }
3412 static int dissect_lcsInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3413   return dissect_gsm_map_T_lcsInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsInformation);
3414 }
3415
3416 static const ber_sequence InsertSubscriberDataArg_sequence[] = {
3417   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3418   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
3419   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_category_impl },
3420   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStatus_impl },
3421   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerServiceList_impl },
3422   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
3423   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_provisionedSS_impl },
3424   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_Data_impl },
3425   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
3426   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionData_impl },
3427   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsSubscriptionData_impl },
3428   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsSubscriptionData_impl },
3429   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlrCamelSubscriptionInfo_impl },
3430   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3431   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
3432   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSubscriptionData_impl },
3433   { BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsupportedFeature_impl },
3434   { BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkAccessMode_impl },
3435   { BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lsaInformation_impl },
3436   { BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmu_Indicator_impl },
3437   { BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsInformation_impl },
3438   { 0, 0, 0, NULL }
3439 };
3440
3441 static int
3442 dissect_gsm_map_InsertSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3443   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3444                                 InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_InsertSubscriberDataArg);
3445
3446   return offset;
3447 }
3448
3449
3450 static const value_string RegionalSubscriptionResponse_vals[] = {
3451   {   0, "networkNodeAreaRestricted" },
3452   {   1, "tooManyZoneCodes" },
3453   {   2, "zoneCodesConflict" },
3454   {   3, "regionalSubscNotSupported" },
3455   { 0, NULL }
3456 };
3457
3458
3459 static int
3460 dissect_gsm_map_RegionalSubscriptionResponse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3461   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3462
3463   return offset;
3464 }
3465 static int dissect_regionalSubscriptionResponse_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3466   return dissect_gsm_map_RegionalSubscriptionResponse(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_regionalSubscriptionResponse);
3467 }
3468
3469 static const ber_sequence InsertSubscriberDataRes_sequence[] = {
3470   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teleserviceList_impl },
3471   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bearerServiceList_impl },
3472   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
3473   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_odb_GeneralData_impl },
3474   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
3475   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhases_impl },
3476   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3477   { 0, 0, 0, NULL }
3478 };
3479
3480 static int
3481 dissect_gsm_map_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3482   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3483                                 InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_InsertSubscriberDataRes);
3484
3485   return offset;
3486 }
3487
3488 static const ber_sequence SEQUNCE_OF_INTEGER_1_50_sequence_of[1] = {
3489   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_contextIdList_item },
3490 };
3491
3492 static int
3493 dissect_gsm_map_SEQUNCE_OF_INTEGER_1_50(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3494   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3495                                    SEQUNCE_OF_INTEGER_1_50_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_INTEGER_1_50);
3496
3497   return offset;
3498 }
3499 static int dissect_contextIdList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3500   return dissect_gsm_map_SEQUNCE_OF_INTEGER_1_50(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_contextIdList);
3501 }
3502
3503
3504 static const value_string T_gprsSubscriptionDataWithdraw_vals[] = {
3505   {   0, "allGPRSData" },
3506   {   1, "contextIdList" },
3507   { 0, NULL }
3508 };
3509
3510 static const ber_choice T_gprsSubscriptionDataWithdraw_choice[] = {
3511   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allGPRSData },
3512   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextIdList },
3513   { 0, 0, 0, 0, NULL }
3514 };
3515
3516 static int
3517 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_) {
3518   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3519                               T_gprsSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_T_gprsSubscriptionDataWithdraw);
3520
3521   return offset;
3522 }
3523 static int dissect_gprsSubscriptionDataWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3524   return dissect_gsm_map_T_gprsSubscriptionDataWithdraw(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_gprsSubscriptionDataWithdraw);
3525 }
3526
3527 static const ber_sequence SEQUNCE_OF_OCTET_STRING_SIZE_3_sequence_of[1] = {
3528   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList_item },
3529 };
3530
3531 static int
3532 dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3533   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3534                                    SEQUNCE_OF_OCTET_STRING_SIZE_3_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3);
3535
3536   return offset;
3537 }
3538 static int dissect_lsaIdentityList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3539   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaIdentityList);
3540 }
3541
3542
3543 static const value_string T_lsaInformationWithdraw_vals[] = {
3544   {   0, "allLSAData" },
3545   {   1, "lsaIdentityList" },
3546   { 0, NULL }
3547 };
3548
3549 static const ber_choice T_lsaInformationWithdraw_choice[] = {
3550   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_allLSAData },
3551   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lsaIdentityList },
3552   { 0, 0, 0, 0, NULL }
3553 };
3554
3555 static int
3556 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_) {
3557   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3558                               T_lsaInformationWithdraw_choice, hf_index, ett_gsm_map_T_lsaInformationWithdraw);
3559
3560   return offset;
3561 }
3562 static int dissect_lsaInformationWithdraw(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3563   return dissect_gsm_map_T_lsaInformationWithdraw(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lsaInformationWithdraw);
3564 }
3565
3566 static const ber_sequence DeleteSubscriberDataArg_sequence[] = {
3567   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3568   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_basicServiceList_impl },
3569   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
3570   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictionDueToUnsupportedFeature_impl },
3571   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionIdentifier_impl },
3572   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vbsGroupIndication_impl },
3573   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vgcsGroupIndication_impl },
3574   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelSubscriptionInfoWithdraw_impl },
3575   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3576   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_gprsSubscriptionDataWithdraw },
3577   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_roamingRestrictedInSgsnDueToUnsuppportedFeature_impl },
3578   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_lsaInformationWithdraw },
3579   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmlc_ListWithdraw_impl },
3580   { 0, 0, 0, NULL }
3581 };
3582
3583 static int
3584 dissect_gsm_map_DeleteSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3585   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3586                                 DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataArg);
3587
3588   return offset;
3589 }
3590
3591 static const ber_sequence DeleteSubscriberDataRes_sequence[] = {
3592   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_regionalSubscriptionResponse_impl },
3593   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3594   { 0, 0, 0, NULL }
3595 };
3596
3597 static int
3598 dissect_gsm_map_DeleteSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3599   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3600                                 DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_DeleteSubscriberDataRes);
3601
3602   return offset;
3603 }
3604
3605
3606 static int
3607 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_) {
3608   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3609                                     NULL);
3610
3611   return offset;
3612 }
3613 static int dissect_hlr_List_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3614   return dissect_gsm_map_OCTET_STRING_SIZE_3_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List_item);
3615 }
3616
3617 static const ber_sequence SEQUNCE_OF_OCTET_STRING_SIZE_3_8_sequence_of[1] = {
3618   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_List_item },
3619 };
3620
3621 static int
3622 dissect_gsm_map_SEQUNCE_OF_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_) {
3623   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3624                                    SEQUNCE_OF_OCTET_STRING_SIZE_3_8_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3_8);
3625
3626   return offset;
3627 }
3628 static int dissect_hlr_List(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3629   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_hlr_List);
3630 }
3631
3632 static const ber_sequence ResetArg_sequence[] = {
3633   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
3634   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_hlr_List },
3635   { 0, 0, 0, NULL }
3636 };
3637
3638 static int
3639 dissect_gsm_map_ResetArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3640   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3641                                 ResetArg_sequence, hf_index, ett_gsm_map_ResetArg);
3642
3643   return offset;
3644 }
3645
3646 static const ber_sequence RestoreDataArg_sequence[] = {
3647   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
3648   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
3649   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3650   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_Capability_impl },
3651   { 0, 0, 0, NULL }
3652 };
3653
3654 static int
3655 dissect_gsm_map_RestoreDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3656   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3657                                 RestoreDataArg_sequence, hf_index, ett_gsm_map_RestoreDataArg);
3658
3659   return offset;
3660 }
3661
3662 static const ber_sequence RestoreDataRes_sequence[] = {
3663   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
3664   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_msNotReachable },
3665   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3666   { 0, 0, 0, NULL }
3667 };
3668
3669 static int
3670 dissect_gsm_map_RestoreDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3671   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3672                                 RestoreDataRes_sequence, hf_index, ett_gsm_map_RestoreDataRes);
3673
3674   return offset;
3675 }
3676
3677
3678 static int
3679 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_) {
3680   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3681                                     NULL);
3682
3683   return offset;
3684 }
3685 static int dissect_traceReference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3686   return dissect_gsm_map_OCTET_STRING_SIZE_1_2(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceReference);
3687 }
3688
3689
3690
3691 static int
3692 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_) {
3693   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3694
3695   return offset;
3696 }
3697 static int dissect_traceType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3698   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_traceType);
3699 }
3700 static int dissect_absentSubscriberDiagnosticSM(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3701   return dissect_gsm_map_INTEGER_0_255(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
3702 }
3703 static int dissect_absentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3704   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberDiagnosticSM);
3705 }
3706 static int dissect_additionalAbsentSubscriberDiagnosticSM_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3707   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalAbsentSubscriberDiagnosticSM);
3708 }
3709 static int dissect_mobileNotReachableReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3710   return dissect_gsm_map_INTEGER_0_255(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mobileNotReachableReason);
3711 }
3712
3713 static const ber_sequence ActivateTraceModeArg_sequence[] = {
3714   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3715   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
3716   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_traceType_impl },
3717   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_omc_Id_impl },
3718   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3719   { 0, 0, 0, NULL }
3720 };
3721
3722 static int
3723 dissect_gsm_map_ActivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3724   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3725                                 ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_ActivateTraceModeArg);
3726
3727   return offset;
3728 }
3729
3730 static const ber_sequence ActivateTraceModeRes_sequence[] = {
3731   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3732   { 0, 0, 0, NULL }
3733 };
3734
3735 static int
3736 dissect_gsm_map_ActivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3737   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3738                                 ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_ActivateTraceModeRes);
3739
3740   return offset;
3741 }
3742
3743 static const ber_sequence DeactivateTraceModeArg_sequence[] = {
3744   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
3745   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_traceReference_impl },
3746   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3747   { 0, 0, 0, NULL }
3748 };
3749
3750 static int
3751 dissect_gsm_map_DeactivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3752   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3753                                 DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_DeactivateTraceModeArg);
3754
3755   return offset;
3756 }
3757
3758 static const ber_sequence DeactivateTraceModeRes_sequence[] = {
3759   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3760   { 0, 0, 0, NULL }
3761 };
3762
3763 static int
3764 dissect_gsm_map_DeactivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3765   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3766                                 DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_DeactivateTraceModeRes);
3767
3768   return offset;
3769 }
3770
3771 static const ber_sequence Cug_CheckInfo_sequence[] = {
3772   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cug_Interlock },
3773   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_OutgoingAccess },
3774   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3775   { 0, 0, 0, NULL }
3776 };
3777
3778 static int
3779 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_) {
3780   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3781                                 Cug_CheckInfo_sequence, hf_index, ett_gsm_map_Cug_CheckInfo);
3782
3783   return offset;
3784 }
3785 static int dissect_cug_CheckInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3786   return dissect_gsm_map_Cug_CheckInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cug_CheckInfo);
3787 }
3788
3789
3790 static const value_string T_interrogationType_vals[] = {
3791   {   0, "basicCall" },
3792   {   1, "forwarding" },
3793   { 0, NULL }
3794 };
3795
3796
3797 static int
3798 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_) {
3799   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3800
3801   return offset;
3802 }
3803 static int dissect_interrogationType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3804   return dissect_gsm_map_T_interrogationType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_interrogationType);
3805 }
3806
3807
3808
3809 static int
3810 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_) {
3811   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3812
3813   return offset;
3814 }
3815 static int dissect_or_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3816   return dissect_gsm_map_INTEGER_1_127(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_or_Capability);
3817 }
3818 static int dissect_supportedCCBS_Phase_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3819   return dissect_gsm_map_INTEGER_1_127(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_supportedCCBS_Phase);
3820 }
3821
3822
3823 static int
3824 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_) {
3825   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3826                                     NULL);
3827
3828   return offset;
3829 }
3830 static int dissect_gmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3831   return dissect_gsm_map_Gmsc_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmsc_Address);
3832 }
3833
3834
3835 static int
3836 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_) {
3837   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3838                                     NULL);
3839
3840   return offset;
3841 }
3842 static int dissect_callReferenceNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3843   return dissect_gsm_map_OCTET_STRING_SIZE_1_8(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReferenceNumber);
3844 }
3845 static int dissect_asciCallReference(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3846   return dissect_gsm_map_OCTET_STRING_SIZE_1_8(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_asciCallReference);
3847 }
3848
3849
3850 static const value_string T_forwardingReason_vals[] = {
3851   {   0, "notReachable" },
3852   {   1, "busy" },
3853   {   2, "noReply" },
3854   { 0, NULL }
3855 };
3856
3857
3858 static int
3859 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_) {
3860   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3861
3862   return offset;
3863 }
3864 static int dissect_forwardingReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3865   return dissect_gsm_map_T_forwardingReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingReason);
3866 }
3867
3868 static const ber_sequence T_camelInfo_sequence[] = {
3869   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_supportedCamelPhases },
3870   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_suppress_T_CSI },
3871   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3872   { 0, 0, 0, NULL }
3873 };
3874
3875 static int
3876 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_) {
3877   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3878                                 T_camelInfo_sequence, hf_index, ett_gsm_map_T_camelInfo);
3879
3880   return offset;
3881 }
3882 static int dissect_camelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3883   return dissect_gsm_map_T_camelInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelInfo);
3884 }
3885
3886
3887 static const value_string T_ext_ProtocolId_vals[] = {
3888   {   1, "ets-300356" },
3889   { 0, NULL }
3890 };
3891
3892
3893 static int
3894 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_) {
3895   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
3896
3897   return offset;
3898 }
3899 static int dissect_ext_ProtocolId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3900   return dissect_gsm_map_T_ext_ProtocolId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ext_ProtocolId);
3901 }
3902
3903 static const ber_sequence AdditionalSignalInfo_sequence[] = {
3904   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_ext_ProtocolId },
3905   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signalInfo },
3906   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
3907   { 0, 0, 0, NULL }
3908 };
3909
3910 static int
3911 dissect_gsm_map_AdditionalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3912   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3913                                 AdditionalSignalInfo_sequence, hf_index, ett_gsm_map_AdditionalSignalInfo);
3914
3915   return offset;
3916 }
3917 static int dissect_additionalSignalInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3918   return dissect_gsm_map_AdditionalSignalInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSignalInfo);
3919 }
3920
3921 static const ber_sequence SendRoutingInfoArg_sequence[] = {
3922   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
3923   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
3924   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberOfForwarding_impl },
3925   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_interrogationType_impl },
3926   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
3927   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Capability_impl },
3928   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
3929   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
3930   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingReason_impl },
3931   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
3932   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
3933   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelInfo_impl },
3934   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
3935   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3936   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
3937   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
3938   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCCBS_Phase_impl },
3939   { BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
3940   { 0, 0, 0, NULL }
3941 };
3942
3943 static int
3944 dissect_gsm_map_SendRoutingInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3945   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3946                                 SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoArg);
3947
3948   return offset;
3949 }
3950
3951
3952 static int
3953 dissect_gsm_map_RoamingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3954   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3955                                     NULL);
3956
3957   return offset;
3958 }
3959 static int dissect_roamingNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3960   return dissect_gsm_map_RoamingNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNumber);
3961 }
3962
3963 static const ber_sequence ForwardingData_sequence[] = {
3964   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
3965   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
3966   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingOptions_impl },
3967   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
3968   { 0, 0, 0, NULL }
3969 };
3970
3971 static int
3972 dissect_gsm_map_ForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
3973   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3974                                 ForwardingData_sequence, hf_index, ett_gsm_map_ForwardingData);
3975
3976   return offset;
3977 }
3978 static int dissect_forwardingData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3979   return dissect_gsm_map_ForwardingData(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
3980 }
3981 static int dissect_forwardingData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
3982   return dissect_gsm_map_ForwardingData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_forwardingData);
3983 }
3984
3985
3986 static const value_string T_routingInfo_vals[] = {
3987   {   0, "roamingNumber" },
3988   {   1, "forwardingData" },
3989   { 0, NULL }
3990 };
3991
3992 static const ber_choice T_routingInfo_choice[] = {
3993   {   0, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
3994   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_forwardingData },
3995   { 0, 0, 0, 0, NULL }
3996 };
3997
3998 static int
3999 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_) {
4000   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4001                               T_routingInfo_choice, hf_index, ett_gsm_map_T_routingInfo);
4002
4003   return offset;
4004 }
4005 static int dissect_routingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4006   return dissect_gsm_map_T_routingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_routingInfo);
4007 }
4008
4009 static const ber_sequence T_t_CSI_sequence[] = {
4010   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_t_BcsmCamelTDPDataList },
4011   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4012   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_camelCapabilityHandling_impl },
4013   { 0, 0, 0, NULL }
4014 };
4015
4016 static int
4017 dissect_gsm_map_T_t_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4018   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4019                                 T_t_CSI_sequence, hf_index, ett_gsm_map_T_t_CSI);
4020
4021   return offset;
4022 }
4023 static int dissect_t_CSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4024   return dissect_gsm_map_T_t_CSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_t_CSI);
4025 }
4026
4027 static const ber_sequence T_gmscCamelSubscriptionInfo_sequence[] = {
4028   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_t_CSI_impl },
4029   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
4030   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4031   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_BcsmCamelTDP_CriteriaList_impl },
4032   { 0, 0, 0, NULL }
4033 };
4034
4035 static int
4036 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_) {
4037   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4038                                 T_gmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_T_gmscCamelSubscriptionInfo);
4039
4040   return offset;
4041 }
4042 static int dissect_gmscCamelSubscriptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4043   return dissect_gsm_map_T_gmscCamelSubscriptionInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_gmscCamelSubscriptionInfo);
4044 }
4045
4046 static const ber_sequence T_camelRoutingInfo_sequence[] = {
4047   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_forwardingData },
4048   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gmscCamelSubscriptionInfo_impl },
4049   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4050   { 0, 0, 0, NULL }
4051 };
4052
4053 static int
4054 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_) {
4055   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4056                                 T_camelRoutingInfo_sequence, hf_index, ett_gsm_map_T_camelRoutingInfo);
4057
4058   return offset;
4059 }
4060 static int dissect_camelRoutingInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4061   return dissect_gsm_map_T_camelRoutingInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_camelRoutingInfo);
4062 }
4063
4064
4065 static const value_string T_extendedRoutingInfo_vals[] = {
4066   {   0, "routingInfo" },
4067   {   1, "camelRoutingInfo" },
4068   { 0, NULL }
4069 };
4070
4071 static const ber_choice T_extendedRoutingInfo_choice[] = {
4072   {   0, BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_routingInfo },
4073   {   1, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_camelRoutingInfo_impl },
4074   { 0, 0, 0, 0, NULL }
4075 };
4076
4077 static int
4078 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_) {
4079   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4080                               T_extendedRoutingInfo_choice, hf_index, ett_gsm_map_T_extendedRoutingInfo);
4081
4082   return offset;
4083 }
4084 static int dissect_extendedRoutingInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4085   return dissect_gsm_map_T_extendedRoutingInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extendedRoutingInfo);
4086 }
4087
4088
4089 static int
4090 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_) {
4091   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4092                                     NULL);
4093
4094   return offset;
4095 }
4096 static int dissect_locationNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4097   return dissect_gsm_map_OCTET_STRING_SIZE_2_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationNumber);
4098 }
4099
4100
4101 static int
4102 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_) {
4103   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4104                                     NULL);
4105
4106   return offset;
4107 }
4108 static int dissect_cellIdFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4109   return dissect_gsm_map_OCTET_STRING_SIZE_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdFixedLength);
4110 }
4111
4112
4113 static int
4114 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_) {
4115   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4116                                     NULL);
4117
4118   return offset;
4119 }
4120 static int dissect_laiFixedLength_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4121   return dissect_gsm_map_OCTET_STRING_SIZE_5(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_laiFixedLength);
4122 }
4123
4124
4125 static const value_string T_cellIdOrLAI_vals[] = {
4126   {   0, "cellIdFixedLength" },
4127   {   1, "laiFixedLength" },
4128   { 0, NULL }
4129 };
4130
4131 static const ber_choice T_cellIdOrLAI_choice[] = {
4132   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cellIdFixedLength_impl },
4133   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_laiFixedLength_impl },
4134   { 0, 0, 0, 0, NULL }
4135 };
4136
4137 static int
4138 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_) {
4139   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4140                               T_cellIdOrLAI_choice, hf_index, ett_gsm_map_T_cellIdOrLAI);
4141
4142   return offset;
4143 }
4144 static int dissect_cellIdOrLAI(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4145   return dissect_gsm_map_T_cellIdOrLAI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cellIdOrLAI);
4146 }
4147
4148 static const ber_sequence LocationInformation_sequence[] = {
4149   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ageOfLocationInformation },
4150   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_geographicalInformation_impl },
4151   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vlr_number_impl },
4152   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationNumber_impl },
4153   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_cellIdOrLAI },
4154   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4155   { 0, 0, 0, NULL }
4156 };
4157
4158 static int
4159 dissect_gsm_map_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4160   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4161                                 LocationInformation_sequence, hf_index, ett_gsm_map_LocationInformation);
4162
4163   return offset;
4164 }
4165 static int dissect_locationInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4166   return dissect_gsm_map_LocationInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInformation);
4167 }
4168
4169
4170 static const value_string SubscriberState_vals[] = {
4171   {   0, "assumedIdle" },
4172   {   1, "camelBusy" },
4173   {   2, "notProvidedFromVLR" },
4174   { 0, NULL }
4175 };
4176
4177 static const ber_choice SubscriberState_choice[] = {
4178   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_assumedIdle_impl },
4179   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_camelBusy_impl },
4180   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_notProvidedFromVLR_impl },
4181   { 0, 0, 0, 0, NULL }
4182 };
4183
4184 static int
4185 dissect_gsm_map_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4186   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4187                               SubscriberState_choice, hf_index, ett_gsm_map_SubscriberState);
4188
4189   return offset;
4190 }
4191 static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4192   return dissect_gsm_map_SubscriberState(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberState);
4193 }
4194
4195 static const ber_sequence SubscriberInfo_sequence[] = {
4196   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformation_impl },
4197   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_subscriberState },
4198   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4199   { 0, 0, 0, NULL }
4200 };
4201
4202 static int
4203 dissect_gsm_map_SubscriberInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4204   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4205                                 SubscriberInfo_sequence, hf_index, ett_gsm_map_SubscriberInfo);
4206
4207   return offset;
4208 }
4209 static int dissect_subscriberInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4210   return dissect_gsm_map_SubscriberInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
4211 }
4212 static int dissect_subscriberInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4213   return dissect_gsm_map_SubscriberInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberInfo);
4214 }
4215
4216
4217 static int
4218 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_) {
4219   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4220                                     NULL);
4221
4222   return offset;
4223 }
4224 static int dissect_vmsc_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4225   return dissect_gsm_map_T_vmsc_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_vmsc_Address);
4226 }
4227
4228 static const ber_sequence T_ccbs_Indicators_sequence[] = {
4229   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
4230   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_keepCCBS_CallIndicator_impl },
4231   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4232   { 0, 0, 0, NULL }
4233 };
4234
4235 static int
4236 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_) {
4237   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4238                                 T_ccbs_Indicators_sequence, hf_index, ett_gsm_map_T_ccbs_Indicators);
4239
4240   return offset;
4241 }
4242 static int dissect_ccbs_Indicators_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4243   return dissect_gsm_map_T_ccbs_Indicators(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Indicators);
4244 }
4245
4246
4247 static const value_string T_numberPortabilityStatus_vals[] = {
4248   {   0, "notKnownToBePorted" },
4249   {   1, "ownNumberPortedOut" },
4250   {   2, "foreignNumberPortedToForeignNetwork" },
4251   { 0, NULL }
4252 };
4253
4254
4255 static int
4256 dissect_gsm_map_T_numberPortabilityStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4257   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4258
4259   return offset;
4260 }
4261 static int dissect_numberPortabilityStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4262   return dissect_gsm_map_T_numberPortabilityStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_numberPortabilityStatus);
4263 }
4264
4265 static const ber_sequence SendRoutingInfoRes_sequence[] = {
4266   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4267   { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extendedRoutingInfo },
4268   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
4269   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cugSubscriptionFlag_impl },
4270   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberInfo_impl },
4271   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_List_impl },
4272   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicService },
4273   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingInterrogationRequired_impl },
4274   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vmsc_Address_impl },
4275   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4276   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_naea_PreferredCI_impl },
4277   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Indicators_impl },
4278   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
4279   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numberPortabilityStatus_impl },
4280   { 0, 0, 0, NULL }
4281 };
4282
4283 static int
4284 dissect_gsm_map_SendRoutingInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4285   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4286                                 SendRoutingInfoRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoRes);
4287
4288   return offset;
4289 }
4290
4291
4292 static const value_string NetDetNotReachable_vals[] = {
4293   {   0, "msPurged" },
4294   {   1, "imsiDetached" },
4295   {   2, "restrictedArea" },
4296   {   3, "notRegistered" },
4297   { 0, NULL }
4298 };
4299
4300
4301 static int
4302 dissect_gsm_map_NetDetNotReachable(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4303   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4304
4305   return offset;
4306 }
4307
4308 static const ber_sequence ProvideRoamingNumberArg_sequence[] = {
4309   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4310   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
4311   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
4312   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
4313   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
4314   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
4315   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_suppressionOfAnnouncement_impl },
4316   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gmsc_Address_impl },
4317   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
4318   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_Interrogation_impl },
4319   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4320   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
4321   { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Call_impl },
4322   { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supportedCamelPhasesInGMSC_impl },
4323   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSignalInfo_impl },
4324   { BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_orNotSupportedInGMSC_impl },
4325   { 0, 0, 0, NULL }
4326 };
4327
4328 static int
4329 dissect_gsm_map_ProvideRoamingNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4330   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4331                                 ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberArg);
4332
4333   return offset;
4334 }
4335
4336 static const ber_sequence ProvideRoamingNumberRes_sequence[] = {
4337   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_roamingNumber },
4338   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4339   { 0, 0, 0, NULL }
4340 };
4341
4342 static int
4343 dissect_gsm_map_ProvideRoamingNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4344   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4345                                 ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ProvideRoamingNumberRes);
4346
4347   return offset;
4348 }
4349
4350
4351 static int
4352 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_) {
4353   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4354                                     NULL);
4355
4356   return offset;
4357 }
4358 static int dissect_uui_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4359   return dissect_gsm_map_OCTET_STRING_SIZE_1_131(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uui);
4360 }
4361
4362 static const ber_sequence T_uu_Data_sequence[] = {
4363   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uuIndicator_impl },
4364   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uui_impl },
4365   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uusCFInteraction_impl },
4366   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4367   { 0, 0, 0, NULL }
4368 };
4369
4370 static int
4371 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_) {
4372   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4373                                 T_uu_Data_sequence, hf_index, ett_gsm_map_T_uu_Data);
4374
4375   return offset;
4376 }
4377 static int dissect_uu_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4378   return dissect_gsm_map_T_uu_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_uu_Data);
4379 }
4380
4381 static const ber_sequence ResumeCallHandlingArg_sequence[] = {
4382   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReferenceNumber_impl },
4383   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
4384   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardingData_impl },
4385   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4386   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cug_CheckInfo_impl },
4387   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_o_CSI_impl },
4388   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4389   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
4390   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
4391   { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uu_Data_impl },
4392   { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_allInformationSent_impl },
4393   { 0, 0, 0, NULL }
4394 };
4395
4396 static int
4397 dissect_gsm_map_ResumeCallHandlingArg(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(implicit_tag, pinfo, tree, tvb, offset,
4399                                 ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ResumeCallHandlingArg);
4400
4401   return offset;
4402 }
4403
4404 static const ber_sequence ResumeCallHandlingRes_sequence[] = {
4405   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
4406   { 0, 0, 0, NULL }
4407 };
4408
4409 static int
4410 dissect_gsm_map_ResumeCallHandlingRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4411   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4412                                 ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ResumeCallHandlingRes);
4413
4414   return offset;
4415 }
4416
4417
4418 static int
4419 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_) {
4420   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4421                                     NULL);
4422
4423   return offset;
4424 }
4425 static int dissect_b_Subscriber_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4426   return dissect_gsm_map_T_b_Subscriber_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_Subscriber_Address);
4427 }
4428
4429 static const ber_sequence ProvideSIWFSNumberArg_sequence[] = {
4430   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_BearerCapability_impl },
4431   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_BearerCapability_impl },
4432   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_call_Direction_impl },
4433   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_b_Subscriber_Address_impl },
4434   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
4435   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lowerLayerCompatibility_impl },
4436   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_highLayerCompatibility_impl },
4437   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4438   { 0, 0, 0, NULL }
4439 };
4440
4441 static int
4442 dissect_gsm_map_ProvideSIWFSNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4443   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4444                                 ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberArg);
4445
4446   return offset;
4447 }
4448
4449
4450 static int
4451 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_) {
4452   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4453                                     NULL);
4454
4455   return offset;
4456 }
4457 static int dissect_sIWFSNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4458   return dissect_gsm_map_T_sIWFSNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sIWFSNumber);
4459 }
4460
4461 static const ber_sequence ProvideSIWFSNumberRes_sequence[] = {
4462   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sIWFSNumber_impl },
4463   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4464   { 0, 0, 0, NULL }
4465 };
4466
4467 static int
4468 dissect_gsm_map_ProvideSIWFSNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4469   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4470                                 ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_map_ProvideSIWFSNumberRes);
4471
4472   return offset;
4473 }
4474
4475 static const ber_sequence SIWFSSignallingModifyArg_sequence[] = {
4476   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_channelType_impl },
4477   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
4478   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4479   { 0, 0, 0, NULL }
4480 };
4481
4482 static int
4483 dissect_gsm_map_SIWFSSignallingModifyArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4484   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4485                                 SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyArg);
4486
4487   return offset;
4488 }
4489
4490 static const ber_sequence SIWFSSignallingModifyRes_sequence[] = {
4491   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannel_impl },
4492   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4493   { 0, 0, 0, NULL }
4494 };
4495
4496 static int
4497 dissect_gsm_map_SIWFSSignallingModifyRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4498   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4499                                 SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_map_SIWFSSignallingModifyRes);
4500
4501   return offset;
4502 }
4503
4504
4505 static const value_string Ccbs_Monitoring_vals[] = {
4506   {   0, "stopMonitoring" },
4507   {   1, "startMonitoring" },
4508   { 0, NULL }
4509 };
4510
4511
4512 static int
4513 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_) {
4514   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4515
4516   return offset;
4517 }
4518 static int dissect_ccbs_Monitoring_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4519   return dissect_gsm_map_Ccbs_Monitoring(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Monitoring);
4520 }
4521
4522 static const ber_sequence SetReportingStateArg_sequence[] = {
4523   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4524   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
4525   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Monitoring_impl },
4526   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4527   { 0, 0, 0, NULL }
4528 };
4529
4530 static int
4531 dissect_gsm_map_SetReportingStateArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4532   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4533                                 SetReportingStateArg_sequence, hf_index, ett_gsm_map_SetReportingStateArg);
4534
4535   return offset;
4536 }
4537
4538
4539 static const value_string Ccbs_SubscriberStatus_vals[] = {
4540   {   0, "ccbsNotIdle" },
4541   {   1, "ccbsIdle" },
4542   {   2, "ccbsNotReachable" },
4543   { 0, NULL }
4544 };
4545
4546
4547 static int
4548 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_) {
4549   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4550
4551   return offset;
4552 }
4553 static int dissect_ccbs_SubscriberStatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4554   return dissect_gsm_map_Ccbs_SubscriberStatus(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_SubscriberStatus);
4555 }
4556
4557 static const ber_sequence SetReportingStateRes_sequence[] = {
4558   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
4559   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4560   { 0, 0, 0, NULL }
4561 };
4562
4563 static int
4564 dissect_gsm_map_SetReportingStateRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4565   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4566                                 SetReportingStateRes_sequence, hf_index, ett_gsm_map_SetReportingStateRes);
4567
4568   return offset;
4569 }
4570
4571
4572 static const value_string MonitoringMode_vals[] = {
4573   {   0, "a-side" },
4574   {   1, "b-side" },
4575   { 0, NULL }
4576 };
4577
4578
4579 static int
4580 dissect_gsm_map_MonitoringMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4581   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4582
4583   return offset;
4584 }
4585 static int dissect_monitoringMode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4586   return dissect_gsm_map_MonitoringMode(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_monitoringMode);
4587 }
4588
4589
4590 static const value_string CallOutcome_vals[] = {
4591   {   0, "success" },
4592   {   1, "failure" },
4593   {   2, "busy" },
4594   { 0, NULL }
4595 };
4596
4597
4598 static int
4599 dissect_gsm_map_CallOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4600   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4601
4602   return offset;
4603 }
4604 static int dissect_callOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4605   return dissect_gsm_map_CallOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callOutcome);
4606 }
4607
4608 static const ber_sequence T_eventReportData_sequence[] = {
4609   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_SubscriberStatus_impl },
4610   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4611   { 0, 0, 0, NULL }
4612 };
4613
4614 static int
4615 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_) {
4616   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4617                                 T_eventReportData_sequence, hf_index, ett_gsm_map_T_eventReportData);
4618
4619   return offset;
4620 }
4621 static int dissect_eventReportData_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4622   return dissect_gsm_map_T_eventReportData(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_eventReportData);
4623 }
4624
4625 static const ber_sequence T_callReportdata_sequence[] = {
4626   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_monitoringMode_impl },
4627   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callOutcome_impl },
4628   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4629   { 0, 0, 0, NULL }
4630 };
4631
4632 static int
4633 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_) {
4634   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4635                                 T_callReportdata_sequence, hf_index, ett_gsm_map_T_callReportdata);
4636
4637   return offset;
4638 }
4639 static int dissect_callReportdata_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4640   return dissect_gsm_map_T_callReportdata(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_callReportdata);
4641 }
4642
4643 static const ber_sequence StatusReportArg_sequence[] = {
4644   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4645   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventReportData_impl },
4646   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_callReportdata_impl },
4647   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4648   { 0, 0, 0, NULL }
4649 };
4650
4651 static int
4652 dissect_gsm_map_StatusReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4653   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4654                                 StatusReportArg_sequence, hf_index, ett_gsm_map_StatusReportArg);
4655
4656   return offset;
4657 }
4658
4659 static const ber_sequence StatusReportRes_sequence[] = {
4660   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4661   { 0, 0, 0, NULL }
4662 };
4663
4664 static int
4665 dissect_gsm_map_StatusReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4666   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4667                                 StatusReportRes_sequence, hf_index, ett_gsm_map_StatusReportRes);
4668
4669   return offset;
4670 }
4671
4672
4673 static const value_string Ruf_Outcome_vals[] = {
4674   {   0, "accepted" },
4675   {   1, "rejected" },
4676   {   2, "noResponseFromFreeMS" },
4677   {   3, "noResponseFromBusyMS" },
4678   {   4, "udubFromFreeMS" },
4679   {   5, "udubFromBusyMS" },
4680   { 0, NULL }
4681 };
4682
4683
4684 static int
4685 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_) {
4686   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
4687
4688   return offset;
4689 }
4690 static int dissect_ruf_Outcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4691   return dissect_gsm_map_Ruf_Outcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ruf_Outcome);
4692 }
4693
4694
4695 static int
4696 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_) {
4697   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4698                                     NULL);
4699
4700   return offset;
4701 }
4702 static int dissect_b_subscriberNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4703   return dissect_gsm_map_B_subscriberNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberNumber);
4704 }
4705
4706
4707 static int
4708 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_) {
4709   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4710                                     NULL);
4711
4712   return offset;
4713 }
4714 static int dissect_b_subscriberSubaddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4715   return dissect_gsm_map_OCTET_STRING_SIZE_1_21(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_b_subscriberSubaddress);
4716 }
4717
4718 static const ber_sequence Ccbs_Feature_sequence[] = {
4719   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
4720   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
4721   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
4722   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
4723   { 0, 0, 0, NULL }
4724 };
4725
4726 static int
4727 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_) {
4728   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4729                                 Ccbs_Feature_sequence, hf_index, ett_gsm_map_Ccbs_Feature);
4730
4731   return offset;
4732 }
4733 static int dissect_ccbs_Feature_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4734   return dissect_gsm_map_Ccbs_Feature(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Feature);
4735 }
4736
4737
4738 static int
4739 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_) {
4740   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4741                                     NULL);
4742
4743   return offset;
4744 }
4745 static int dissect_translatedB_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4746   return dissect_gsm_map_TranslatedB_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_translatedB_Number);
4747 }
4748
4749 static const ber_sequence RemoteUserFreeArg_sequence[] = {
4750   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
4751   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
4752   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
4753   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
4754   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replaceB_Number_impl },
4755   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_alertingPattern_impl },
4756   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4757   { 0, 0, 0, NULL }
4758 };
4759
4760 static int
4761 dissect_gsm_map_RemoteUserFreeArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4762   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4763                                 RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_RemoteUserFreeArg);
4764
4765   return offset;
4766 }
4767
4768 static const ber_sequence RemoteUserFreeRes_sequence[] = {
4769   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ruf_Outcome_impl },
4770   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
4771   { 0, 0, 0, NULL }
4772 };
4773
4774 static int
4775 dissect_gsm_map_RemoteUserFreeRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4776   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4777                                 RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_RemoteUserFreeRes);
4778
4779   return offset;
4780 }
4781
4782 static const ber_sequence Ss_Data_sequence[] = {
4783   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4784   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
4785   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ss_SubscriptionOption },
4786   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicServiceGroupList },
4787   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_defaultPriority },
4788   { 0, 0, 0, NULL }
4789 };
4790
4791 static int
4792 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_) {
4793   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4794                                 Ss_Data_sequence, hf_index, ett_gsm_map_Ss_Data);
4795
4796   return offset;
4797 }
4798 static int dissect_ss_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4799   return dissect_gsm_map_Ss_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Data);
4800 }
4801
4802 static const ber_sequence RegisterSS_Arg_sequence[] = {
4803   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4804   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
4805   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToNumber_impl },
4806   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_forwardedToSubaddress_impl },
4807   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noReplyConditionTime_impl },
4808   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
4809   { 0, 0, 0, NULL }
4810 };
4811
4812 static int
4813 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_) {
4814   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4815                                 RegisterSS_Arg_sequence, hf_index, ett_gsm_map_RegisterSS_Arg);
4816
4817   return offset;
4818 }
4819
4820
4821 static const value_string Ss_Info_vals[] = {
4822   {   0, "forwardingInfo" },
4823   {   1, "callBarringInfo" },
4824   {   3, "ss-Data" },
4825   { 0, NULL }
4826 };
4827
4828 static const ber_choice Ss_Info_choice[] = {
4829   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_forwardingInfo_impl },
4830   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_callBarringInfo_impl },
4831   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_ss_Data_impl },
4832   { 0, 0, 0, 0, NULL }
4833 };
4834
4835 static int
4836 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_) {
4837   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4838                               Ss_Info_choice, hf_index, ett_gsm_map_Ss_Info);
4839
4840   return offset;
4841 }
4842
4843 static const ber_sequence Ss_ForBS_sequence[] = {
4844   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Code },
4845   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
4846   { 0, 0, 0, NULL }
4847 };
4848
4849 static int
4850 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_) {
4851   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4852                                 Ss_ForBS_sequence, hf_index, ett_gsm_map_Ss_ForBS);
4853
4854   return offset;
4855 }
4856
4857 static const ber_sequence T_ccbs_FeatureList_item_sequence[] = {
4858   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
4859   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberNumber_impl },
4860   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_b_subscriberSubaddress_impl },
4861   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_basicServiceGroup },
4862   { 0, 0, 0, NULL }
4863 };
4864
4865 static int
4866 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_) {
4867   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4868                                 T_ccbs_FeatureList_item_sequence, hf_index, ett_gsm_map_T_ccbs_FeatureList_item);
4869
4870   return offset;
4871 }
4872 static int dissect_ccbs_FeatureList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4873   return dissect_gsm_map_T_ccbs_FeatureList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList_item);
4874 }
4875
4876 static const ber_sequence T_ccbs_FeatureList_sequence_of[1] = {
4877   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ccbs_FeatureList_item },
4878 };
4879
4880 static int
4881 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_) {
4882   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4883                                    T_ccbs_FeatureList_sequence_of, hf_index, ett_gsm_map_T_ccbs_FeatureList);
4884
4885   return offset;
4886 }
4887 static int dissect_ccbs_FeatureList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4888   return dissect_gsm_map_T_ccbs_FeatureList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_FeatureList);
4889 }
4890
4891 static const ber_sequence T_genericServiceInfo_sequence[] = {
4892   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_Status },
4893   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cliRestrictionOption_impl },
4894   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximumEntitledPriority_impl },
4895   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_defaultPriority_impl },
4896   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_FeatureList_impl },
4897   { 0, 0, 0, NULL }
4898 };
4899
4900 static int
4901 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_) {
4902   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4903                                 T_genericServiceInfo_sequence, hf_index, ett_gsm_map_T_genericServiceInfo);
4904
4905   return offset;
4906 }
4907 static int dissect_genericServiceInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4908   return dissect_gsm_map_T_genericServiceInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_genericServiceInfo);
4909 }
4910
4911
4912 static const value_string InterrogateSS_Res_vals[] = {
4913   {   0, "ss-Status" },
4914   {   2, "basicServiceGroupList" },
4915   {   3, "forwardingFeatureList" },
4916   {   4, "genericServiceInfo" },
4917   { 0, NULL }
4918 };
4919
4920 static const ber_choice InterrogateSS_Res_choice[] = {
4921   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
4922   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_basicServiceGroupList_impl },
4923   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_forwardingFeatureList_impl },
4924   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_genericServiceInfo_impl },
4925   { 0, 0, 0, 0, NULL }
4926 };
4927
4928 static int
4929 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_) {
4930   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4931                               InterrogateSS_Res_choice, hf_index, ett_gsm_map_InterrogateSS_Res);
4932
4933   return offset;
4934 }
4935
4936
4937 static int
4938 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_) {
4939   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4940                                     NULL);
4941
4942   return offset;
4943 }
4944 static int dissect_ussd_String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
4945   return dissect_gsm_map_OCTET_STRING_SIZE_1_160(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ussd_String);
4946 }
4947
4948 static const ber_sequence Ussd_Arg_sequence[] = {
4949   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
4950   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
4951   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertingPattern },
4952   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
4953   { 0, 0, 0, NULL }
4954 };
4955
4956 static int
4957 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_) {
4958   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4959                                 Ussd_Arg_sequence, hf_index, ett_gsm_map_Ussd_Arg);
4960
4961   return offset;
4962 }
4963
4964 static const ber_sequence Ussd_Res_sequence[] = {
4965   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_DataCodingScheme },
4966   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ussd_String },
4967   { 0, 0, 0, NULL }
4968 };
4969
4970 static int
4971 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_) {
4972   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4973                                 Ussd_Res_sequence, hf_index, ett_gsm_map_Ussd_Res);
4974
4975   return offset;
4976 }
4977
4978
4979 static int
4980 dissect_gsm_map_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4981   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
4982                                          pinfo, tree, tvb, offset, hf_index,
4983                                          NULL);
4984
4985   return offset;
4986 }
4987
4988
4989 static const value_string GetPasswordArg_vals[] = {
4990   {   0, "enterPW" },
4991   {   1, "enterNewPW" },
4992   {   2, "enterNewPW-Again" },
4993   { 0, NULL }
4994 };
4995
4996
4997 static int
4998 dissect_gsm_map_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
4999   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5000
5001   return offset;
5002 }
5003
5004
5005 static int
5006 dissect_gsm_map_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5007   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
5008                                          pinfo, tree, tvb, offset, hf_index,
5009                                          NULL);
5010
5011   return offset;
5012 }
5013
5014 static const asn_namedbit ServiceIndicator_bits[] = {
5015   {  0, &hf_gsm_map_ServiceIndicator_clirInvoked, -1, -1, NULL, NULL },
5016   {  1, &hf_gsm_map_ServiceIndicator_camelInvoked, -1, -1, NULL, NULL },
5017   { 0, NULL, 0, 0, NULL, NULL }
5018 };
5019
5020 static int
5021 dissect_gsm_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5022   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
5023                                  ServiceIndicator_bits, hf_index, ett_gsm_map_ServiceIndicator,
5024                                  NULL);
5025
5026   return offset;
5027 }
5028 static int dissect_serviceIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5029   return dissect_gsm_map_ServiceIndicator(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_serviceIndicator);
5030 }
5031
5032 static const ber_sequence T_ccbs_Data_sequence[] = {
5033   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
5034   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_translatedB_Number_impl },
5035   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_serviceIndicator_impl },
5036   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_callInfo_impl },
5037   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_networkSignalInfo_impl },
5038   { 0, 0, 0, NULL }
5039 };
5040
5041 static int
5042 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_) {
5043   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5044                                 T_ccbs_Data_sequence, hf_index, ett_gsm_map_T_ccbs_Data);
5045
5046   return offset;
5047 }
5048 static int dissect_ccbs_Data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5049   return dissect_gsm_map_T_ccbs_Data(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ccbs_Data);
5050 }
5051
5052 static const ber_sequence RegisterCC_EntryArg_sequence[] = {
5053   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
5054   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Data_impl },
5055   { 0, 0, 0, NULL }
5056 };
5057
5058 static int
5059 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_) {
5060   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5061                                 RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_RegisterCC_EntryArg);
5062
5063   return offset;
5064 }
5065
5066 static const ber_sequence RegisterCC_EntryRes_sequence[] = {
5067   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Feature_impl },
5068   { 0, 0, 0, NULL }
5069 };
5070
5071 static int
5072 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_) {
5073   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5074                                 RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_RegisterCC_EntryRes);
5075
5076   return offset;
5077 }
5078
5079 static const ber_sequence EraseCC_EntryArg_sequence[] = {
5080   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
5081   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Index_impl },
5082   { 0, 0, 0, NULL }
5083 };
5084
5085 static int
5086 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_) {
5087   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5088                                 EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_EraseCC_EntryArg);
5089
5090   return offset;
5091 }
5092
5093 static const ber_sequence EraseCC_EntryRes_sequence[] = {
5094   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
5095   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
5096   { 0, 0, 0, NULL }
5097 };
5098
5099 static int
5100 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_) {
5101   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5102                                 EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_EraseCC_EntryRes);
5103
5104   return offset;
5105 }
5106
5107
5108 static int
5109 dissect_gsm_map_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5110   offset = dissect_ber_boolean(pinfo, tree, tvb, offset, hf_index);
5111
5112   return offset;
5113 }
5114 static int dissect_sm_RP_PRI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5115   return dissect_gsm_map_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_PRI);
5116 }
5117
5118
5119
5120 static int
5121 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_) {
5122   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5123
5124   return offset;
5125 }
5126 static int dissect_sm_RP_MTI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5127   return dissect_gsm_map_INTEGER_0_10(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_MTI);
5128 }
5129
5130
5131 static int
5132 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_) {
5133   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5134                                     NULL);
5135
5136   return offset;
5137 }
5138 static int dissect_sm_RP_SMEA_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5139   return dissect_gsm_map_OCTET_STRING_SIZE_1_12(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_SMEA);
5140 }
5141
5142 static const ber_sequence RoutingInfoForSMArg_sequence[] = {
5143   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
5144   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sm_RP_PRI_impl },
5145   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddress_impl },
5146   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5147   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
5148   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_MTI_impl },
5149   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sm_RP_SMEA_impl },
5150   { 0, 0, 0, NULL }
5151 };
5152
5153 static int
5154 dissect_gsm_map_RoutingInfoForSMArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5155   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5156                                 RoutingInfoForSMArg_sequence, hf_index, ett_gsm_map_RoutingInfoForSMArg);
5157
5158   return offset;
5159 }
5160
5161
5162 static int
5163 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_) {
5164   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5165                                     NULL);
5166
5167   return offset;
5168 }
5169 static int dissect_networkNode_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5170   return dissect_gsm_map_T_networkNode_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_networkNode_Number);
5171 }
5172
5173
5174 static const value_string T_additional_Number_vals[] = {
5175   {   0, "msc-Number" },
5176   {   1, "sgsn-Number" },
5177   { 0, NULL }
5178 };
5179
5180 static const ber_choice T_additional_Number_choice[] = {
5181   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_msc_Number_impl },
5182   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Number_impl },
5183   { 0, 0, 0, 0, NULL }
5184 };
5185
5186 static int
5187 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_) {
5188   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5189                               T_additional_Number_choice, hf_index, ett_gsm_map_T_additional_Number);
5190
5191   return offset;
5192 }
5193 static int dissect_additional_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5194   return dissect_gsm_map_T_additional_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_additional_Number);
5195 }
5196
5197 static const ber_sequence T_locationInfoWithLMSI_sequence[] = {
5198   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_networkNode_Number_impl },
5199   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_lmsi },
5200   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5201   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsNodeIndicator_impl },
5202   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_additional_Number },
5203   { 0, 0, 0, NULL }
5204 };
5205
5206 static int
5207 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_) {
5208   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5209                                 T_locationInfoWithLMSI_sequence, hf_index, ett_gsm_map_T_locationInfoWithLMSI);
5210
5211   return offset;
5212 }
5213 static int dissect_locationInfoWithLMSI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5214   return dissect_gsm_map_T_locationInfoWithLMSI(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationInfoWithLMSI);
5215 }
5216
5217 static const ber_sequence RoutingInfoForSMRes_sequence[] = {
5218   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
5219   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationInfoWithLMSI_impl },
5220   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5221   { 0, 0, 0, NULL }
5222 };
5223
5224 static int
5225 dissect_gsm_map_RoutingInfoForSMRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5226   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5227                                 RoutingInfoForSMRes_sequence, hf_index, ett_gsm_map_RoutingInfoForSMRes);
5228
5229   return offset;
5230 }
5231
5232
5233 static const value_string Sm_RP_DA_vals[] = {
5234   {   0, "imsi" },
5235   {   1, "lmsi" },
5236   {   4, "serviceCentreAddressDA" },
5237   {   5, "noSM-RP-DA" },
5238   { 0, NULL }
5239 };
5240
5241 static const ber_choice Sm_RP_DA_choice[] = {
5242   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5243   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
5244   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressDA_impl },
5245   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_DA_impl },
5246   { 0, 0, 0, 0, NULL }
5247 };
5248
5249 static int
5250 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_) {
5251   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5252                               Sm_RP_DA_choice, hf_index, ett_gsm_map_Sm_RP_DA);
5253
5254   return offset;
5255 }
5256 static int dissect_sm_RP_DA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5257   return dissect_gsm_map_Sm_RP_DA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_DA);
5258 }
5259
5260
5261 static const value_string Sm_RP_OA_vals[] = {
5262   {   2, "msisdn" },
5263   {   4, "serviceCentreAddressOA" },
5264   {   5, "noSM-RP-OA" },
5265   { 0, NULL }
5266 };
5267
5268 static const ber_choice Sm_RP_OA_choice[] = {
5269   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
5270   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_serviceCentreAddressOA_impl },
5271   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_noSM_RP_OA_impl },
5272   { 0, 0, 0, 0, NULL }
5273 };
5274
5275 static int
5276 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_) {
5277   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5278                               Sm_RP_OA_choice, hf_index, ett_gsm_map_Sm_RP_OA);
5279
5280   return offset;
5281 }
5282 static int dissect_sm_RP_OA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5283   return dissect_gsm_map_Sm_RP_OA(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_RP_OA);
5284 }
5285
5286 static const ber_sequence Mo_forwardSM_Arg_sequence[] = {
5287   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
5288   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
5289   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
5290   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5291   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
5292   { 0, 0, 0, NULL }
5293 };
5294
5295 static int
5296 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_) {
5297   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5298                                 Mo_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Arg);
5299
5300   return offset;
5301 }
5302
5303 static const ber_sequence Mo_forwardSM_Res_sequence[] = {
5304   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
5305   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5306   { 0, 0, 0, NULL }
5307 };
5308
5309 static int
5310 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_) {
5311   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5312                                 Mo_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mo_forwardSM_Res);
5313
5314   return offset;
5315 }
5316
5317 static const ber_sequence Mt_forwardSM_Arg_sequence[] = {
5318   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_DA },
5319   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_sm_RP_OA },
5320   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
5321   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_moreMessagesToSend },
5322   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5323   { 0, 0, 0, NULL }
5324 };
5325
5326 static int
5327 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_) {
5328   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5329                                 Mt_forwardSM_Arg_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Arg);
5330
5331   return offset;
5332 }
5333
5334 static const ber_sequence Mt_forwardSM_Res_sequence[] = {
5335   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sm_RP_UI },
5336   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5337   { 0, 0, 0, NULL }
5338 };
5339
5340 static int
5341 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_) {
5342   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5343                                 Mt_forwardSM_Res_sequence, hf_index, ett_gsm_map_Mt_forwardSM_Res);
5344
5345   return offset;
5346 }
5347
5348
5349 static int
5350 dissect_gsm_map_StoredMSISDN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5351   offset = dissect_gsm_map_Msisdn(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5352
5353   return offset;
5354 }
5355 static int dissect_storedMSISDN(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5356   return dissect_gsm_map_StoredMSISDN(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_storedMSISDN);
5357 }
5358
5359
5360 static const value_string Sm_DeliveryOutcome_vals[] = {
5361   {   0, "memoryCapacityExceeded" },
5362   {   1, "absentSubscriber" },
5363   {   2, "successfulTransfer" },
5364   { 0, NULL }
5365 };
5366
5367
5368 static int
5369 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_) {
5370   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5371
5372   return offset;
5373 }
5374 static int dissect_sm_DeliveryOutcome(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5375   return dissect_gsm_map_Sm_DeliveryOutcome(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_DeliveryOutcome);
5376 }
5377 static int dissect_additionalSM_DeliveryOutcome_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5378   return dissect_gsm_map_Sm_DeliveryOutcome(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_additionalSM_DeliveryOutcome);
5379 }
5380
5381 static const ber_sequence ReportSM_DeliveryStatusArg_sequence[] = {
5382   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
5383   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
5384   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_DeliveryOutcome },
5385   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberDiagnosticSM_impl },
5386   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5387   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprsSupportIndicator_impl },
5388   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deliveryOutcomeIndicator_impl },
5389   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalSM_DeliveryOutcome_impl },
5390   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
5391   { 0, 0, 0, NULL }
5392 };
5393
5394 static int
5395 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_) {
5396   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5397                                 ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusArg);
5398
5399   return offset;
5400 }
5401
5402 static const ber_sequence ReportSM_DeliveryStatusRes_sequence[] = {
5403   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
5404   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5405   { 0, 0, 0, NULL }
5406 };
5407
5408 static int
5409 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_) {
5410   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5411                                 ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_ReportSM_DeliveryStatusRes);
5412
5413   return offset;
5414 }
5415
5416 static const asn_namedbit T_mw_Status_bits[] = {
5417   {  0, &hf_gsm_map_T_mw_Status_scAddressNotIncluded, -1, -1, NULL, NULL },
5418   {  1, &hf_gsm_map_T_mw_Status_mnrfSet, -1, -1, NULL, NULL },
5419   {  2, &hf_gsm_map_T_mw_Status_mcefSet, -1, -1, NULL, NULL },
5420   {  3, &hf_gsm_map_T_mw_Status_mnrgSet, -1, -1, NULL, NULL },
5421   { 0, NULL, 0, 0, NULL, NULL }
5422 };
5423
5424 static int
5425 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_) {
5426   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
5427                                  T_mw_Status_bits, hf_index, ett_gsm_map_T_mw_Status,
5428                                  NULL);
5429
5430   return offset;
5431 }
5432 static int dissect_mw_Status(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5433   return dissect_gsm_map_T_mw_Status(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mw_Status);
5434 }
5435
5436 static const ber_sequence InformServiceCentreArg_sequence[] = {
5437   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_storedMSISDN },
5438   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mw_Status },
5439   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5440   { 0, 0, 0, NULL }
5441 };
5442
5443 static int
5444 dissect_gsm_map_InformServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5445   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5446                                 InformServiceCentreArg_sequence, hf_index, ett_gsm_map_InformServiceCentreArg);
5447
5448   return offset;
5449 }
5450
5451 static const ber_sequence AlertServiceCentreArg_sequence[] = {
5452   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msisdn },
5453   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_serviceCentreAddress },
5454   { 0, 0, 0, NULL }
5455 };
5456
5457 static int
5458 dissect_gsm_map_AlertServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5459   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5460                                 AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_AlertServiceCentreArg);
5461
5462   return offset;
5463 }
5464
5465
5466 static const value_string T_alertReason_vals[] = {
5467   {   0, "msPresent" },
5468   {   1, "memoryAvailable" },
5469   { 0, NULL }
5470 };
5471
5472
5473 static int
5474 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_) {
5475   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5476
5477   return offset;
5478 }
5479 static int dissect_alertReason(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5480   return dissect_gsm_map_T_alertReason(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_alertReason);
5481 }
5482
5483 static const ber_sequence ReadyForSM_Arg_sequence[] = {
5484   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5485   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_alertReason },
5486   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alertReasonIndicator },
5487   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5488   { 0, 0, 0, NULL }
5489 };
5490
5491 static int
5492 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_) {
5493   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5494                                 ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_ReadyForSM_Arg);
5495
5496   return offset;
5497 }
5498
5499 static const ber_sequence ReadyForSM_Res_sequence[] = {
5500   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5501   { 0, 0, 0, NULL }
5502 };
5503
5504 static int
5505 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_) {
5506   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5507                                 ReadyForSM_Res_sequence, hf_index, ett_gsm_map_ReadyForSM_Res);
5508
5509   return offset;
5510 }
5511
5512 static const ber_sequence RequestedInfo_sequence[] = {
5513   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationInformationFlag_impl },
5514   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_subscriberStateFlag_impl },
5515   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5516   { 0, 0, 0, NULL }
5517 };
5518
5519 static int
5520 dissect_gsm_map_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5521   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5522                                 RequestedInfo_sequence, hf_index, ett_gsm_map_RequestedInfo);
5523
5524   return offset;
5525 }
5526 static int dissect_requestedInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5527   return dissect_gsm_map_RequestedInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_requestedInfo);
5528 }
5529
5530 static const ber_sequence ProvideSubscriberInfoArg_sequence[] = {
5531   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5532   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
5533   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
5534   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5535   { 0, 0, 0, NULL }
5536 };
5537
5538 static int
5539 dissect_gsm_map_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5540   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5541                                 ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoArg);
5542
5543   return offset;
5544 }
5545
5546 static const ber_sequence ProvideSubscriberInfoRes_sequence[] = {
5547   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
5548   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5549   { 0, 0, 0, NULL }
5550 };
5551
5552 static int
5553 dissect_gsm_map_ProvideSubscriberInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5554   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5555                                 ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ProvideSubscriberInfoRes);
5556
5557   return offset;
5558 }
5559
5560
5561 static const value_string T_subscriberIdentity_vals[] = {
5562   {   0, "imsi" },
5563   {   1, "msisdn" },
5564   { 0, NULL }
5565 };
5566
5567 static const ber_choice T_subscriberIdentity_choice[] = {
5568   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5569   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
5570   { 0, 0, 0, 0, NULL }
5571 };
5572
5573 static int
5574 dissect_gsm_map_T_subscriberIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5575   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5576                               T_subscriberIdentity_choice, hf_index, ett_gsm_map_T_subscriberIdentity);
5577
5578   return offset;
5579 }
5580 static int dissect_subscriberIdentity(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5581   return dissect_gsm_map_T_subscriberIdentity(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_subscriberIdentity);
5582 }
5583
5584 static const ber_sequence AnyTimeInterrogationArg_sequence[] = {
5585   { BER_CLASS_CON, 0, 0, dissect_subscriberIdentity },
5586   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_requestedInfo_impl },
5587   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsmSCF_Address_impl },
5588   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5589   { 0, 0, 0, NULL }
5590 };
5591
5592 static int
5593 dissect_gsm_map_AnyTimeInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5594   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5595                                 AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationArg);
5596
5597   return offset;
5598 }
5599
5600 static const ber_sequence AnyTimeInterrogationRes_sequence[] = {
5601   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subscriberInfo },
5602   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5603   { 0, 0, 0, NULL }
5604 };
5605
5606 static int
5607 dissect_gsm_map_AnyTimeInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5608   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5609                                 AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_AnyTimeInterrogationRes);
5610
5611   return offset;
5612 }
5613
5614 static const ber_sequence SEQUNCE_OF_OCTET_STRING_SIZE_1_20_sequence_of[1] = {
5615   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ss_EventSpecification_item },
5616 };
5617
5618 static int
5619 dissect_gsm_map_SEQUNCE_OF_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_) {
5620   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5621                                    SEQUNCE_OF_OCTET_STRING_SIZE_1_20_sequence_of, hf_index, ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_20);
5622
5623   return offset;
5624 }
5625 static int dissect_ss_EventSpecification_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5626   return dissect_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_20(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ss_EventSpecification);
5627 }
5628
5629 static const ber_sequence Ss_InvocationNotificationArg_sequence[] = {
5630   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5631   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
5632   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ss_Event_impl },
5633   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_EventSpecification_impl },
5634   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5635   { 0, 0, 0, NULL }
5636 };
5637
5638 static int
5639 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_) {
5640   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5641                                 Ss_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationArg);
5642
5643   return offset;
5644 }
5645
5646 static const ber_sequence Ss_InvocationNotificationRes_sequence[] = {
5647   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5648   { 0, 0, 0, NULL }
5649 };
5650
5651 static int
5652 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_) {
5653   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5654                                 Ss_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_Ss_InvocationNotificationRes);
5655
5656   return offset;
5657 }
5658
5659
5660 static int
5661 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_) {
5662   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5663                                     NULL);
5664
5665   return offset;
5666 }
5667 static int dissect_codec_Info(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5668   return dissect_gsm_map_OCTET_STRING_SIZE_5_10(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_codec_Info);
5669 }
5670
5671 static const ber_sequence PrepareGroupCallArg_sequence[] = {
5672   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_teleservice },
5673   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_asciCallReference },
5674   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_codec_Info },
5675   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cipheringAlgorithm },
5676   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKeyNumber_impl },
5677   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_groupKey_impl },
5678   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_priority_impl },
5679   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkFree_impl },
5680   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5681   { 0, 0, 0, NULL }
5682 };
5683
5684 static int
5685 dissect_gsm_map_PrepareGroupCallArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5686   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5687                                 PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_PrepareGroupCallArg);
5688
5689   return offset;
5690 }
5691
5692
5693 static int
5694 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_) {
5695   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5696                                     NULL);
5697
5698   return offset;
5699 }
5700 static int dissect_groupCallNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5701   return dissect_gsm_map_T_groupCallNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_groupCallNumber);
5702 }
5703
5704 static const ber_sequence PrepareGroupCallRes_sequence[] = {
5705   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_groupCallNumber },
5706   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5707   { 0, 0, 0, NULL }
5708 };
5709
5710 static int
5711 dissect_gsm_map_PrepareGroupCallRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5712   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5713                                 PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_PrepareGroupCallRes);
5714
5715   return offset;
5716 }
5717
5718 static const ber_sequence SendGroupCallEndSignalArg_sequence[] = {
5719   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
5720   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5721   { 0, 0, 0, NULL }
5722 };
5723
5724 static int
5725 dissect_gsm_map_SendGroupCallEndSignalArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5726   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5727                                 SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalArg);
5728
5729   return offset;
5730 }
5731
5732 static const ber_sequence SendGroupCallEndSignalRes_sequence[] = {
5733   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5734   { 0, 0, 0, NULL }
5735 };
5736
5737 static int
5738 dissect_gsm_map_SendGroupCallEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5739   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5740                                 SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_SendGroupCallEndSignalRes);
5741
5742   return offset;
5743 }
5744
5745 static const ber_sequence ProcessGroupCallSignallingArg_sequence[] = {
5746   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequest_impl },
5747   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
5748   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_releaseGroupCall_impl },
5749   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5750   { 0, 0, 0, NULL }
5751 };
5752
5753 static int
5754 dissect_gsm_map_ProcessGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5755   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5756                                 ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ProcessGroupCallSignallingArg);
5757
5758   return offset;
5759 }
5760
5761 static const ber_sequence ForwardGroupCallSignallingArg_sequence[] = {
5762   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_imsi },
5763   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRequestAck_impl },
5764   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseIndication_impl },
5765   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkRejectCommand_impl },
5766   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkSeizedCommand_impl },
5767   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_uplinkReleaseCommand_impl },
5768   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5769   { 0, 0, 0, NULL }
5770 };
5771
5772 static int
5773 dissect_gsm_map_ForwardGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5774   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5775                                 ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_ForwardGroupCallSignallingArg);
5776
5777   return offset;
5778 }
5779
5780
5781 static int
5782 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_) {
5783   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5784                                     NULL);
5785
5786   return offset;
5787 }
5788 static int dissect_sgsn_Address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5789   return dissect_gsm_map_OCTET_STRING_SIZE_5_17(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
5790 }
5791 static int dissect_sgsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5792   return dissect_gsm_map_OCTET_STRING_SIZE_5_17(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Address);
5793 }
5794
5795 static const ber_sequence T_sgsn_Capability_sequence[] = {
5796   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_solsaSupportIndicator },
5797   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5798   { 0, 0, 0, NULL }
5799 };
5800
5801 static int
5802 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_) {
5803   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5804                                 T_sgsn_Capability_sequence, hf_index, ett_gsm_map_T_sgsn_Capability);
5805
5806   return offset;
5807 }
5808 static int dissect_sgsn_Capability_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5809   return dissect_gsm_map_T_sgsn_Capability(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_sgsn_Capability);
5810 }
5811
5812 static const ber_sequence UpdateGprsLocationArg_sequence[] = {
5813   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi },
5814   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Number },
5815   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sgsn_Address },
5816   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5817   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sgsn_Capability_impl },
5818   { 0, 0, 0, NULL }
5819 };
5820
5821 static int
5822 dissect_gsm_map_UpdateGprsLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5823   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5824                                 UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_UpdateGprsLocationArg);
5825
5826   return offset;
5827 }
5828
5829 static const ber_sequence UpdateGprsLocationRes_sequence[] = {
5830   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_hlr_Number },
5831   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
5832   { 0, 0, 0, NULL }
5833 };
5834
5835 static int
5836 dissect_gsm_map_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5837   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5838                                 UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_UpdateGprsLocationRes);
5839
5840   return offset;
5841 }
5842
5843
5844 static int
5845 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_) {
5846   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5847                                     NULL);
5848
5849   return offset;
5850 }
5851 static int dissect_ggsn_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5852   return dissect_gsm_map_Ggsn_Address(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Address);
5853 }
5854
5855
5856 static int
5857 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_) {
5858   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5859                                     NULL);
5860
5861   return offset;
5862 }
5863 static int dissect_ggsn_Number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5864   return dissect_gsm_map_Ggsn_Number(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ggsn_Number);
5865 }
5866
5867 static const ber_sequence SendRoutingInfoForGprsArg_sequence[] = {
5868   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5869   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
5870   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
5871   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5872   { 0, 0, 0, NULL }
5873 };
5874
5875 static int
5876 dissect_gsm_map_SendRoutingInfoForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5877   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5878                                 SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsArg);
5879
5880   return offset;
5881 }
5882
5883 static const ber_sequence SendRoutingInfoForGprsRes_sequence[] = {
5884   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
5885   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
5886   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mobileNotReachableReason_impl },
5887   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5888   { 0, 0, 0, NULL }
5889 };
5890
5891 static int
5892 dissect_gsm_map_SendRoutingInfoForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5893   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5894                                 SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_SendRoutingInfoForGprsRes);
5895
5896   return offset;
5897 }
5898
5899 static const ber_sequence FailureReportArg_sequence[] = {
5900   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5901   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_ggsn_Number_impl },
5902   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
5903   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5904   { 0, 0, 0, NULL }
5905 };
5906
5907 static int
5908 dissect_gsm_map_FailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5909   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5910                                 FailureReportArg_sequence, hf_index, ett_gsm_map_FailureReportArg);
5911
5912   return offset;
5913 }
5914
5915 static const ber_sequence FailureReportRes_sequence[] = {
5916   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
5917   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5918   { 0, 0, 0, NULL }
5919 };
5920
5921 static int
5922 dissect_gsm_map_FailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5923   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5924                                 FailureReportRes_sequence, hf_index, ett_gsm_map_FailureReportRes);
5925
5926   return offset;
5927 }
5928
5929 static const ber_sequence NoteMsPresentForGprsArg_sequence[] = {
5930   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
5931   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sgsn_Address_impl },
5932   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ggsn_Address_impl },
5933   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5934   { 0, 0, 0, NULL }
5935 };
5936
5937 static int
5938 dissect_gsm_map_NoteMsPresentForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5939   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5940                                 NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsArg);
5941
5942   return offset;
5943 }
5944
5945 static const ber_sequence NoteMsPresentForGprsRes_sequence[] = {
5946   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5947   { 0, 0, 0, NULL }
5948 };
5949
5950 static int
5951 dissect_gsm_map_NoteMsPresentForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5952   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5953                                 NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_NoteMsPresentForGprsRes);
5954
5955   return offset;
5956 }
5957
5958
5959 static const value_string LcsClientType_vals[] = {
5960   {   0, "emergencyServices" },
5961   {   1, "valueAddedServices" },
5962   {   2, "plmnOperatorServices" },
5963   {   3, "lawfulInterceptServices" },
5964   { 0, NULL }
5965 };
5966
5967
5968 static int
5969 dissect_gsm_map_LcsClientType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5970   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5971
5972   return offset;
5973 }
5974 static int dissect_lcsClientType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5975   return dissect_gsm_map_LcsClientType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientType);
5976 }
5977
5978 static const ber_sequence LcsClientExternalID_sequence[] = {
5979   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_externalAddress_impl },
5980   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
5981   { 0, 0, 0, NULL }
5982 };
5983
5984 static int
5985 dissect_gsm_map_LcsClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
5986   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5987                                 LcsClientExternalID_sequence, hf_index, ett_gsm_map_LcsClientExternalID);
5988
5989   return offset;
5990 }
5991 static int dissect_lcsClientExternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
5992   return dissect_gsm_map_LcsClientExternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientExternalID);
5993 }
5994
5995
5996 static const value_string LcsClientInternalID_vals[] = {
5997   {   0, "broadcastService" },
5998   {   1, "o-andM-HPLMN" },
5999   {   2, "o-andM-VPLMN" },
6000   {   3, "anonymousLocation" },
6001   {   4, "targetMSsubscribedService" },
6002   { 0, NULL }
6003 };
6004
6005
6006 static int
6007 dissect_gsm_map_LcsClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6008   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6009
6010   return offset;
6011 }
6012 static int dissect_lcsClientInternalID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6013   return dissect_gsm_map_LcsClientInternalID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientInternalID);
6014 }
6015
6016 static const ber_sequence LcsClientName_sequence[] = {
6017   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_dataCodingScheme_impl },
6018   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_nameString_impl },
6019   { 0, 0, 0, NULL }
6020 };
6021
6022 static int
6023 dissect_gsm_map_LcsClientName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6024   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6025                                 LcsClientName_sequence, hf_index, ett_gsm_map_LcsClientName);
6026
6027   return offset;
6028 }
6029 static int dissect_lcsClientName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6030   return dissect_gsm_map_LcsClientName(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsClientName);
6031 }
6032
6033 static const ber_sequence Lcs_ClientID_sequence[] = {
6034   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_lcsClientType_impl },
6035   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientExternalID_impl },
6036   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientDialedByMS_impl },
6037   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientInternalID_impl },
6038   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcsClientName_impl },
6039   { 0, 0, 0, NULL }
6040 };
6041
6042 static int
6043 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_) {
6044   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6045                                 Lcs_ClientID_sequence, hf_index, ett_gsm_map_Lcs_ClientID);
6046
6047   return offset;
6048 }
6049 static int dissect_lcs_ClientID(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6050   return dissect_gsm_map_Lcs_ClientID(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
6051 }
6052 static int dissect_lcs_ClientID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6053   return dissect_gsm_map_Lcs_ClientID(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_ClientID);
6054 }
6055
6056
6057 static const value_string Lcs_Event_vals[] = {
6058   {   0, "emergencyCallOrigination" },
6059   {   1, "emergencyCallRelease" },
6060   {   2, "mo-lr" },
6061   { 0, NULL }
6062 };
6063
6064
6065 static int
6066 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_) {
6067   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6068
6069   return offset;
6070 }
6071 static int dissect_lcs_Event(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6072   return dissect_gsm_map_Lcs_Event(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_Event);
6073 }
6074
6075 static const ber_sequence LcsLocationInfo_sequence[] = {
6076   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_msc_Number },
6077   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
6078   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6079   { 0, 0, 0, NULL }
6080 };
6081
6082 static int
6083 dissect_gsm_map_LcsLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6084   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6085                                 LcsLocationInfo_sequence, hf_index, ett_gsm_map_LcsLocationInfo);
6086
6087   return offset;
6088 }
6089 static int dissect_lcsLocationInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6090   return dissect_gsm_map_LcsLocationInfo(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
6091 }
6092 static int dissect_lcsLocationInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6093   return dissect_gsm_map_LcsLocationInfo(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcsLocationInfo);
6094 }
6095
6096
6097 static const value_string T_locationEstimateType_vals[] = {
6098   {   0, "currentLocation" },
6099   {   1, "currentOrLastKnownLocation" },
6100   {   2, "initialLocation" },
6101   { 0, NULL }
6102 };
6103
6104
6105 static int
6106 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_) {
6107   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6108
6109   return offset;
6110 }
6111 static int dissect_locationEstimateType_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6112   return dissect_gsm_map_T_locationEstimateType(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_locationEstimateType);
6113 }
6114
6115 static const ber_sequence T_locationType_sequence[] = {
6116   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_locationEstimateType_impl },
6117   { 0, 0, 0, NULL }
6118 };
6119
6120 static int
6121 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_) {
6122   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6123                                 T_locationType_sequence, hf_index, ett_gsm_map_T_locationType);
6124
6125   return offset;
6126 }
6127 static int dissect_locationType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6128   return dissect_gsm_map_T_locationType(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_locationType);
6129 }
6130
6131
6132 static int
6133 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_) {
6134   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6135                                     NULL);
6136
6137   return offset;
6138 }
6139 static int dissect_mlc_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6140   return dissect_gsm_map_T_mlc_Number(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_mlc_Number);
6141 }
6142
6143
6144 static const value_string T_responseTimeCategory_vals[] = {
6145   {   0, "lowdelay" },
6146   {   1, "delaytolerant" },
6147   { 0, NULL }
6148 };
6149
6150
6151 static int
6152 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_) {
6153   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6154
6155   return offset;
6156 }
6157 static int dissect_responseTimeCategory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6158   return dissect_gsm_map_T_responseTimeCategory(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_responseTimeCategory);
6159 }
6160
6161 static const ber_sequence T_responseTime_sequence[] = {
6162   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_responseTimeCategory },
6163   { 0, 0, 0, NULL }
6164 };
6165
6166 static int
6167 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_) {
6168   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6169                                 T_responseTime_sequence, hf_index, ett_gsm_map_T_responseTime);
6170
6171   return offset;
6172 }
6173 static int dissect_responseTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6174   return dissect_gsm_map_T_responseTime(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_responseTime);
6175 }
6176
6177 static const ber_sequence T_lcs_QoS_sequence[] = {
6178   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_horizontal_accuracy_impl },
6179   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_verticalCoordinateRequest_impl },
6180   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_vertical_accuracy_impl },
6181   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_responseTime_impl },
6182   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6183   { 0, 0, 0, NULL }
6184 };
6185
6186 static int
6187 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_) {
6188   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6189                                 T_lcs_QoS_sequence, hf_index, ett_gsm_map_T_lcs_QoS);
6190
6191   return offset;
6192 }
6193 static int dissect_lcs_QoS_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6194   return dissect_gsm_map_T_lcs_QoS(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_lcs_QoS);
6195 }
6196
6197 static const ber_sequence ProvideSubscriberLocation_Arg_sequence[] = {
6198   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_locationType },
6199   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_mlc_Number },
6200   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_ClientID_impl },
6201   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_privacyOverride_impl },
6202   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6203   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6204   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lmsi_impl },
6205   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
6206   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_Priority_impl },
6207   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_lcs_QoS_impl },
6208   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6209   { 0, 0, 0, NULL }
6210 };
6211
6212 static int
6213 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_) {
6214   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6215                                 ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Arg);
6216
6217   return offset;
6218 }
6219
6220 static const ber_sequence ProvideSubscriberLocation_Res_sequence[] = {
6221   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_locationEstimate },
6222   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
6223   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6224   { 0, 0, 0, NULL }
6225 };
6226
6227 static int
6228 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_) {
6229   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6230                                 ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_ProvideSubscriberLocation_Res);
6231
6232   return offset;
6233 }
6234
6235
6236 static const value_string TargetMS_vals[] = {
6237   {   0, "imsi" },
6238   {   1, "msisdn" },
6239   { 0, NULL }
6240 };
6241
6242 static const ber_choice TargetMS_choice[] = {
6243   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6244   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6245   { 0, 0, 0, 0, NULL }
6246 };
6247
6248 static int
6249 dissect_gsm_map_TargetMS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6250   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6251                               TargetMS_choice, hf_index, ett_gsm_map_TargetMS);
6252
6253   return offset;
6254 }
6255 static int dissect_targetMS(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6256   return dissect_gsm_map_TargetMS(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_targetMS);
6257 }
6258
6259
6260 static int
6261 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_) {
6262   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6263                                     NULL);
6264
6265   return offset;
6266 }
6267 static int dissect_mlcNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6268   return dissect_gsm_map_T_mlcNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_mlcNumber);
6269 }
6270
6271 static const ber_sequence RoutingInfoForLCS_Arg_sequence[] = {
6272   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mlcNumber_impl },
6273   { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
6274   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6275   { 0, 0, 0, NULL }
6276 };
6277
6278 static int
6279 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_) {
6280   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6281                                 RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Arg);
6282
6283   return offset;
6284 }
6285
6286 static const ber_sequence RoutingInfoForLCS_Res_sequence[] = {
6287   { BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_targetMS },
6288   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_lcsLocationInfo_impl },
6289   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6290   { 0, 0, 0, NULL }
6291 };
6292
6293 static int
6294 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_) {
6295   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6296                                 RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_RoutingInfoForLCS_Res);
6297
6298   return offset;
6299 }
6300
6301
6302 static int
6303 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_) {
6304   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6305                                     NULL);
6306
6307   return offset;
6308 }
6309 static int dissect_na_ESRD_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6310   return dissect_gsm_map_T_na_ESRD(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRD);
6311 }
6312
6313
6314 static int
6315 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_) {
6316   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6317                                     NULL);
6318
6319   return offset;
6320 }
6321 static int dissect_na_ESRK_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6322   return dissect_gsm_map_T_na_ESRK(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_na_ESRK);
6323 }
6324
6325 static const ber_sequence SubscriberLocationReport_Arg_sequence[] = {
6326   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_lcs_Event },
6327   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcs_ClientID },
6328   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_lcsLocationInfo },
6329   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_msisdn_impl },
6330   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imsi_impl },
6331   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_imei_impl },
6332   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRD_impl },
6333   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_na_ESRK_impl },
6334   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationEstimate_impl },
6335   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ageOfLocationEstimate_impl },
6336   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
6337   { 0, 0, 0, NULL }
6338 };
6339
6340 static int
6341 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_) {
6342   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6343                                 SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Arg);
6344
6345   return offset;
6346 }
6347
6348 static const ber_sequence SubscriberLocationReport_Res_sequence[] = {
6349   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6350   { 0, 0, 0, NULL }
6351 };
6352
6353 static int
6354 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_) {
6355   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6356                                 SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_SubscriberLocationReport_Res);
6357
6358   return offset;
6359 }
6360
6361
6362 static const value_string NetworkResource_vals[] = {
6363   {   0, "plmn" },
6364   {   1, "hlr" },
6365   {   2, "vlr" },
6366   {   3, "pvlr" },
6367   {   4, "controllingMSC" },
6368   {   5, "vmsc" },
6369   {   6, "eir" },
6370   {   7, "rss" },
6371   { 0, NULL }
6372 };
6373
6374
6375 static int
6376 dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6377   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6378
6379   return offset;
6380 }
6381 static int dissect_networkResource(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6382   return dissect_gsm_map_NetworkResource(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_networkResource);
6383 }
6384
6385 static const ber_sequence T_extensibleSystemFailureParam_sequence[] = {
6386   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_networkResource },
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_T_extensibleSystemFailureParam(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                                 T_extensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_T_extensibleSystemFailureParam);
6395
6396   return offset;
6397 }
6398 static int dissect_extensibleSystemFailureParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6399   return dissect_gsm_map_T_extensibleSystemFailureParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleSystemFailureParam);
6400 }
6401
6402
6403 static const value_string SystemFailureParam_vals[] = {
6404   {   0, "networkResource" },
6405   {   1, "extensibleSystemFailureParam" },
6406   { 0, NULL }
6407 };
6408
6409 static const ber_choice SystemFailureParam_choice[] = {
6410   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_networkResource },
6411   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleSystemFailureParam },
6412   { 0, 0, 0, 0, NULL }
6413 };
6414
6415 static int
6416 dissect_gsm_map_SystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6417   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6418                               SystemFailureParam_choice, hf_index, ett_gsm_map_SystemFailureParam);
6419
6420   return offset;
6421 }
6422
6423 static const ber_sequence DataMissingParam_sequence[] = {
6424   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6425   { 0, 0, 0, NULL }
6426 };
6427
6428 static int
6429 dissect_gsm_map_DataMissingParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6430   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6431                                 DataMissingParam_sequence, hf_index, ett_gsm_map_DataMissingParam);
6432
6433   return offset;
6434 }
6435
6436 static const ber_sequence UnexpectedDataParam_sequence[] = {
6437   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6438   { 0, 0, 0, NULL }
6439 };
6440
6441 static int
6442 dissect_gsm_map_UnexpectedDataParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6443   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6444                                 UnexpectedDataParam_sequence, hf_index, ett_gsm_map_UnexpectedDataParam);
6445
6446   return offset;
6447 }
6448
6449 static const ber_sequence FacilityNotSupParam_sequence[] = {
6450   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6451   { 0, 0, 0, NULL }
6452 };
6453
6454 static int
6455 dissect_gsm_map_FacilityNotSupParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6456   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6457                                 FacilityNotSupParam_sequence, hf_index, ett_gsm_map_FacilityNotSupParam);
6458
6459   return offset;
6460 }
6461
6462 static const ber_sequence IncompatibleTerminalParam_sequence[] = {
6463   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6464   { 0, 0, 0, NULL }
6465 };
6466
6467 static int
6468 dissect_gsm_map_IncompatibleTerminalParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6469   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6470                                 IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_IncompatibleTerminalParam);
6471
6472   return offset;
6473 }
6474
6475 static const ber_sequence ResourceLimitationParam_sequence[] = {
6476   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6477   { 0, 0, 0, NULL }
6478 };
6479
6480 static int
6481 dissect_gsm_map_ResourceLimitationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6482   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6483                                 ResourceLimitationParam_sequence, hf_index, ett_gsm_map_ResourceLimitationParam);
6484
6485   return offset;
6486 }
6487
6488
6489 static const value_string T_unknownSubscriberDiagnostic_vals[] = {
6490   {   0, "imsiUnknown" },
6491   {   1, "gprsSubscriptionUnknown" },
6492   { 0, NULL }
6493 };
6494
6495
6496 static int
6497 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_) {
6498   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6499
6500   return offset;
6501 }
6502 static int dissect_unknownSubscriberDiagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6503   return dissect_gsm_map_T_unknownSubscriberDiagnostic(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_unknownSubscriberDiagnostic);
6504 }
6505
6506 static const ber_sequence UnknownSubscriberParam_sequence[] = {
6507   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6508   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_unknownSubscriberDiagnostic },
6509   { 0, 0, 0, NULL }
6510 };
6511
6512 static int
6513 dissect_gsm_map_UnknownSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6514   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6515                                 UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_UnknownSubscriberParam);
6516
6517   return offset;
6518 }
6519
6520 static const ber_sequence NumberChangedParam_sequence[] = {
6521   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6522   { 0, 0, 0, NULL }
6523 };
6524
6525 static int
6526 dissect_gsm_map_NumberChangedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6527   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6528                                 NumberChangedParam_sequence, hf_index, ett_gsm_map_NumberChangedParam);
6529
6530   return offset;
6531 }
6532
6533 static const ber_sequence UnidentifiedSubParam_sequence[] = {
6534   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6535   { 0, 0, 0, NULL }
6536 };
6537
6538 static int
6539 dissect_gsm_map_UnidentifiedSubParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6540   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6541                                 UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_UnidentifiedSubParam);
6542
6543   return offset;
6544 }
6545
6546
6547 static const value_string T_roamingNotAllowedCause_vals[] = {
6548   {   0, "plmnRoamingNotAllowed" },
6549   {   3, "operatorDeterminedBarring" },
6550   { 0, NULL }
6551 };
6552
6553
6554 static int
6555 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_) {
6556   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6557
6558   return offset;
6559 }
6560 static int dissect_roamingNotAllowedCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6561   return dissect_gsm_map_T_roamingNotAllowedCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_roamingNotAllowedCause);
6562 }
6563
6564 static const ber_sequence RoamingNotAllowedParam_sequence[] = {
6565   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_roamingNotAllowedCause },
6566   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6567   { 0, 0, 0, NULL }
6568 };
6569
6570 static int
6571 dissect_gsm_map_RoamingNotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6572   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6573                                 RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_RoamingNotAllowedParam);
6574
6575   return offset;
6576 }
6577
6578 static const ber_sequence IllegalSubscriberParam_sequence[] = {
6579   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6580   { 0, 0, 0, NULL }
6581 };
6582
6583 static int
6584 dissect_gsm_map_IllegalSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6585   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6586                                 IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_IllegalSubscriberParam);
6587
6588   return offset;
6589 }
6590
6591 static const ber_sequence IllegalEquipmentParam_sequence[] = {
6592   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6593   { 0, 0, 0, NULL }
6594 };
6595
6596 static int
6597 dissect_gsm_map_IllegalEquipmentParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6598   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6599                                 IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_IllegalEquipmentParam);
6600
6601   return offset;
6602 }
6603
6604 static const ber_sequence BearerServNotProvParam_sequence[] = {
6605   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6606   { 0, 0, 0, NULL }
6607 };
6608
6609 static int
6610 dissect_gsm_map_BearerServNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6611   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6612                                 BearerServNotProvParam_sequence, hf_index, ett_gsm_map_BearerServNotProvParam);
6613
6614   return offset;
6615 }
6616
6617 static const ber_sequence TeleservNotProvParam_sequence[] = {
6618   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6619   { 0, 0, 0, NULL }
6620 };
6621
6622 static int
6623 dissect_gsm_map_TeleservNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6624   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6625                                 TeleservNotProvParam_sequence, hf_index, ett_gsm_map_TeleservNotProvParam);
6626
6627   return offset;
6628 }
6629
6630 static const ber_sequence TracingBufferFullParam_sequence[] = {
6631   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6632   { 0, 0, 0, NULL }
6633 };
6634
6635 static int
6636 dissect_gsm_map_TracingBufferFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6637   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6638                                 TracingBufferFullParam_sequence, hf_index, ett_gsm_map_TracingBufferFullParam);
6639
6640   return offset;
6641 }
6642
6643 static const ber_sequence NoRoamingNbParam_sequence[] = {
6644   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6645   { 0, 0, 0, NULL }
6646 };
6647
6648 static int
6649 dissect_gsm_map_NoRoamingNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6650   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6651                                 NoRoamingNbParam_sequence, hf_index, ett_gsm_map_NoRoamingNbParam);
6652
6653   return offset;
6654 }
6655
6656
6657 static const value_string T_absentSubscriberReason_vals[] = {
6658   {   0, "imsiDetach" },
6659   {   1, "restrictedArea" },
6660   {   2, "noPageResponse" },
6661   { 0, NULL }
6662 };
6663
6664
6665 static int
6666 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_) {
6667   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6668
6669   return offset;
6670 }
6671 static int dissect_absentSubscriberReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6672   return dissect_gsm_map_T_absentSubscriberReason(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_absentSubscriberReason);
6673 }
6674
6675 static const ber_sequence AbsentSubscriberParam_sequence[] = {
6676   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6677   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_absentSubscriberReason_impl },
6678   { 0, 0, 0, NULL }
6679 };
6680
6681 static int
6682 dissect_gsm_map_AbsentSubscriberParam(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                                 AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_AbsentSubscriberParam);
6685
6686   return offset;
6687 }
6688
6689 static const ber_sequence BusySubscriberParam_sequence[] = {
6690   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6691   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Possible_impl },
6692   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ccbs_Busy_impl },
6693   { 0, 0, 0, NULL }
6694 };
6695
6696 static int
6697 dissect_gsm_map_BusySubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6698   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6699                                 BusySubscriberParam_sequence, hf_index, ett_gsm_map_BusySubscriberParam);
6700
6701   return offset;
6702 }
6703
6704 static const ber_sequence NoSubscriberReplyParam_sequence[] = {
6705   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6706   { 0, 0, 0, NULL }
6707 };
6708
6709 static int
6710 dissect_gsm_map_NoSubscriberReplyParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6711   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6712                                 NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_NoSubscriberReplyParam);
6713
6714   return offset;
6715 }
6716
6717
6718 static const value_string CallBarringCause_vals[] = {
6719   {   0, "barringServiceActive" },
6720   {   1, "operatorBarring" },
6721   { 0, NULL }
6722 };
6723
6724
6725 static int
6726 dissect_gsm_map_CallBarringCause(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6727   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6728
6729   return offset;
6730 }
6731 static int dissect_callBarringCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6732   return dissect_gsm_map_CallBarringCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_callBarringCause);
6733 }
6734
6735 static const ber_sequence T_extensibleCallBarredParam_sequence[] = {
6736   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
6737   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6738   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorisedMessageOriginator_impl },
6739   { 0, 0, 0, NULL }
6740 };
6741
6742 static int
6743 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_) {
6744   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6745                                 T_extensibleCallBarredParam_sequence, hf_index, ett_gsm_map_T_extensibleCallBarredParam);
6746
6747   return offset;
6748 }
6749 static int dissect_extensibleCallBarredParam(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6750   return dissect_gsm_map_T_extensibleCallBarredParam(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_extensibleCallBarredParam);
6751 }
6752
6753
6754 static const value_string CallBarredParam_vals[] = {
6755   {   0, "callBarringCause" },
6756   {   1, "extensibleCallBarredParam" },
6757   { 0, NULL }
6758 };
6759
6760 static const ber_choice CallBarredParam_choice[] = {
6761   {   0, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_callBarringCause },
6762   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensibleCallBarredParam },
6763   { 0, 0, 0, 0, NULL }
6764 };
6765
6766 static int
6767 dissect_gsm_map_CallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6768   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6769                               CallBarredParam_choice, hf_index, ett_gsm_map_CallBarredParam);
6770
6771   return offset;
6772 }
6773
6774 static const ber_sequence ForwardingFailedParam_sequence[] = {
6775   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6776   { 0, 0, 0, NULL }
6777 };
6778
6779 static int
6780 dissect_gsm_map_ForwardingFailedParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6781   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6782                                 ForwardingFailedParam_sequence, hf_index, ett_gsm_map_ForwardingFailedParam);
6783
6784   return offset;
6785 }
6786
6787 static const ber_sequence Or_NotAllowedParam_sequence[] = {
6788   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6789   { 0, 0, 0, NULL }
6790 };
6791
6792 static int
6793 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_) {
6794   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6795                                 Or_NotAllowedParam_sequence, hf_index, ett_gsm_map_Or_NotAllowedParam);
6796
6797   return offset;
6798 }
6799
6800 static const ber_sequence ForwardingViolationParam_sequence[] = {
6801   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6802   { 0, 0, 0, NULL }
6803 };
6804
6805 static int
6806 dissect_gsm_map_ForwardingViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6807   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6808                                 ForwardingViolationParam_sequence, hf_index, ett_gsm_map_ForwardingViolationParam);
6809
6810   return offset;
6811 }
6812
6813
6814 static const value_string T_cug_RejectCause_vals[] = {
6815   {   0, "incomingCallsBarredWithinCUG" },
6816   {   1, "subscriberNotMemberOfCUG" },
6817   {   5, "requestedBasicServiceViolatesCUG-Constraints" },
6818   {   7, "calledPartySS-InteractionViolation" },
6819   { 0, NULL }
6820 };
6821
6822
6823 static int
6824 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_) {
6825   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6826
6827   return offset;
6828 }
6829 static int dissect_cug_RejectCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6830   return dissect_gsm_map_T_cug_RejectCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_cug_RejectCause);
6831 }
6832
6833 static const ber_sequence Cug_RejectParam_sequence[] = {
6834   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cug_RejectCause },
6835   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6836   { 0, 0, 0, NULL }
6837 };
6838
6839 static int
6840 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_) {
6841   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6842                                 Cug_RejectParam_sequence, hf_index, ett_gsm_map_Cug_RejectParam);
6843
6844   return offset;
6845 }
6846
6847 static const ber_sequence Ati_NotAllowedParam_sequence[] = {
6848   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6849   { 0, 0, 0, NULL }
6850 };
6851
6852 static int
6853 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_) {
6854   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6855                                 Ati_NotAllowedParam_sequence, hf_index, ett_gsm_map_Ati_NotAllowedParam);
6856
6857   return offset;
6858 }
6859
6860 static const ber_sequence NoGroupCallNbParam_sequence[] = {
6861   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6862   { 0, 0, 0, NULL }
6863 };
6864
6865 static int
6866 dissect_gsm_map_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6867   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6868                                 NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_NoGroupCallNbParam);
6869
6870   return offset;
6871 }
6872
6873 static const ber_sequence Ss_IncompatibilityCause_sequence[] = {
6874   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Code_impl },
6875   { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_basicService },
6876   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ss_Status_impl },
6877   { 0, 0, 0, NULL }
6878 };
6879
6880 static int
6881 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_) {
6882   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6883                                 Ss_IncompatibilityCause_sequence, hf_index, ett_gsm_map_Ss_IncompatibilityCause);
6884
6885   return offset;
6886 }
6887
6888
6889 static const value_string Pw_RegistrationFailureCause_vals[] = {
6890   {   0, "undetermined" },
6891   {   1, "invalidFormat" },
6892   {   2, "newPasswordsMismatch" },
6893   { 0, NULL }
6894 };
6895
6896
6897 static int
6898 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_) {
6899   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6900
6901   return offset;
6902 }
6903
6904 static const ber_sequence ShortTermDenialParam_sequence[] = {
6905   { 0, 0, 0, NULL }
6906 };
6907
6908 static int
6909 dissect_gsm_map_ShortTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6910   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6911                                 ShortTermDenialParam_sequence, hf_index, ett_gsm_map_ShortTermDenialParam);
6912
6913   return offset;
6914 }
6915
6916 static const ber_sequence LongTermDenialParam_sequence[] = {
6917   { 0, 0, 0, NULL }
6918 };
6919
6920 static int
6921 dissect_gsm_map_LongTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6922   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6923                                 LongTermDenialParam_sequence, hf_index, ett_gsm_map_LongTermDenialParam);
6924
6925   return offset;
6926 }
6927
6928 static const ber_sequence SubBusyForMT_SMS_Param_sequence[] = {
6929   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6930   { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gprsConnectionSuspended },
6931   { 0, 0, 0, NULL }
6932 };
6933
6934 static int
6935 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_) {
6936   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6937                                 SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_SubBusyForMT_SMS_Param);
6938
6939   return offset;
6940 }
6941
6942
6943 static const value_string T_sm_EnumeratedDeliveryFailureCause_vals[] = {
6944   {   0, "memoryCapacityExceeded" },
6945   {   1, "equipmentProtocolError" },
6946   {   2, "equipmentNotSM-Equipped" },
6947   {   3, "unknownServiceCentre" },
6948   {   4, "sc-Congestion" },
6949   {   5, "invalidSME-Address" },
6950   {   6, "subscriberNotSC-Subscriber" },
6951   { 0, NULL }
6952 };
6953
6954
6955 static int
6956 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_) {
6957   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
6958
6959   return offset;
6960 }
6961 static int dissect_sm_EnumeratedDeliveryFailureCause(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
6962   return dissect_gsm_map_T_sm_EnumeratedDeliveryFailureCause(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sm_EnumeratedDeliveryFailureCause);
6963 }
6964
6965 static const ber_sequence Sm_DeliveryFailureCause_sequence[] = {
6966   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_sm_EnumeratedDeliveryFailureCause },
6967   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnosticInfo },
6968   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6969   { 0, 0, 0, NULL }
6970 };
6971
6972 static int
6973 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_) {
6974   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6975                                 Sm_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_Sm_DeliveryFailureCause);
6976
6977   return offset;
6978 }
6979
6980 static const ber_sequence MessageWaitListFullParam_sequence[] = {
6981   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6982   { 0, 0, 0, NULL }
6983 };
6984
6985 static int
6986 dissect_gsm_map_MessageWaitListFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
6987   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6988                                 MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_MessageWaitListFullParam);
6989
6990   return offset;
6991 }
6992
6993 static const ber_sequence AbsentSubscriberSM_Param_sequence[] = {
6994   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_absentSubscriberDiagnosticSM },
6995   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
6996   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additionalAbsentSubscriberDiagnosticSM_impl },
6997   { 0, 0, 0, NULL }
6998 };
6999
7000 static int
7001 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_) {
7002   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7003                                 AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_AbsentSubscriberSM_Param);
7004
7005   return offset;
7006 }
7007
7008 static const ber_sequence UnauthorizedRequestingNetwork_Param_sequence[] = {
7009   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7010   { 0, 0, 0, NULL }
7011 };
7012
7013 static int
7014 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_) {
7015   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7016                                 UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_UnauthorizedRequestingNetwork_Param);
7017
7018   return offset;
7019 }
7020
7021
7022 static const value_string T_unauthorizedLCSClient_Diagnostic_vals[] = {
7023   {   0, "noAdditionalInformation" },
7024   {   1, "clientNotInMSPrivacyExceptionList" },
7025   {   2, "callToClientNotSetup" },
7026   {   3, "privacyOverrideNotApplicable" },
7027   {   4, "disallowedByLocalRegulatoryRequirements" },
7028   { 0, NULL }
7029 };
7030
7031
7032 static int
7033 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_) {
7034   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7035
7036   return offset;
7037 }
7038 static int dissect_unauthorizedLCSClient_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7039   return dissect_gsm_map_T_unauthorizedLCSClient_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_unauthorizedLCSClient_Diagnostic);
7040 }
7041
7042 static const ber_sequence UnauthorizedLCSClient_Param_sequence[] = {
7043   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unauthorizedLCSClient_Diagnostic_impl },
7044   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7045   { 0, 0, 0, NULL }
7046 };
7047
7048 static int
7049 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_) {
7050   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7051                                 UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_UnauthorizedLCSClient_Param);
7052
7053   return offset;
7054 }
7055
7056
7057 static const value_string T_positionMethodFailure_Diagnostic_vals[] = {
7058   {   0, "congestion" },
7059   {   1, "insufficientResources" },
7060   {   2, "insufficientMeasurementData" },
7061   {   3, "inconsistentMeasurementData" },
7062   {   4, "locationProcedureNotCompleted" },
7063   {   5, "locationProcedureNotSupportedByTargetMS" },
7064   {   6, "qoSNotAttainable" },
7065   {   7, "positionMethodNotAvailableInNetwork" },
7066   {   8, "positionMethodNotAvailableInLocationArea" },
7067   { 0, NULL }
7068 };
7069
7070
7071 static int
7072 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_) {
7073   offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
7074
7075   return offset;
7076 }
7077 static int dissect_positionMethodFailure_Diagnostic_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7078   return dissect_gsm_map_T_positionMethodFailure_Diagnostic(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_positionMethodFailure_Diagnostic);
7079 }
7080
7081 static const ber_sequence PositionMethodFailure_Param_sequence[] = {
7082   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_positionMethodFailure_Diagnostic_impl },
7083   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl },
7084   { 0, 0, 0, NULL }
7085 };
7086
7087 static int
7088 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_) {
7089   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7090                                 PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_PositionMethodFailure_Param);
7091
7092   return offset;
7093 }
7094
7095 static const ber_sequence UnknownOrUnreachableLCSClient_Param_sequence[] = {
7096   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer },
7097   { 0, 0, 0, NULL }
7098 };
7099
7100 static int
7101 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_) {
7102   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7103                                 UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_UnknownOrUnreachableLCSClient_Param);
7104
7105   return offset;
7106 }
7107
7108
7109 /*--- End of included file: packet-gsm_map-fn.c ---*/
7110
7111
7112 /* Stuff included from the "old" packet-gsm_map.c for tapping purposes */
7113 static gchar *
7114 my_match_strval(guint32 val, const value_string *vs, gint *idx)
7115 {
7116     gint        i = 0;
7117
7118     while (vs[i].strptr) {
7119         if (vs[i].value == val)
7120         {
7121             *idx = i;
7122             return(vs[i].strptr);
7123         }
7124
7125         i++;
7126     }
7127
7128     *idx = -1;
7129     return(NULL);
7130 }
7131 /* End includes from old" packet-gsm_map.c */
7132
7133 const value_string gsm_map_opr_code_strings[] = {
7134   {   2, "updateLocation" },
7135   {   3, "cancelLocation" },
7136   {   4, "provideRoamingNumber" },
7137   {   6, "resumeCallHandling" },
7138   {   7, "insertSubscriberData" },
7139   {   8, "deleteSubscriberData" },
7140   {   9, "sendParameters" },                                    /* map-ac infoRetrieval (14) version1 (1)*/
7141   {  10, "registerSS" },
7142   {  11, "eraseSS" },
7143   {  12, "activateSS" },
7144   {  13, "deactivateSS" },
7145   {  14, "interrogateSS" },
7146   {  17, "registerPassword" },
7147   {  18, "getPassword" },
7148   {  19, "processUnstructuredSS-Data" },                /* map-ac networkFunctionalSs (18) version1 (1) */
7149   {  22, "sendRoutingInfo" },
7150   {  23, "updateGprsLocation" },
7151   {  24, "sendRoutingInfoForGprs" },
7152   {  25, "failureReport" },
7153   {  26, "noteMsPresentForGprs" },
7154   {  28, "performHandover" },                                   /* map-ac handoverControl (11) version1 (1)*/
7155   {  29, "sendEndSignal" },
7156   {  30, "performSubsequentHandover" },                 /* map-ac handoverControl (11) version1 (1) */
7157   {  31, "provideSIWFSNumber" },
7158   {  32, "sIWFSSignallingModify" },
7159   {  33, "processAccessSignalling" },
7160   {  34, "forwardAccessSignalling" },
7161   {  35, "noteInternalHandover" },                              /* map-ac handoverControl (11) version1 (1) */
7162   {  37, "reset" },
7163   {  38, "forwardCheckSS-Indication" },
7164   {  39, "prepareGroupCall" },
7165   {  40, "sendGroupCallEndSignal" },
7166   {  41, "processGroupCallSignalling" },
7167   {  42, "forwardGroupCallSignalling" },
7168   {  43, "checkIMEI" },
7169   {  44, "mt-forwardSM" },
7170   {  45, "sendRoutingInfoForSM" },
7171   {  46, "mo-forwardSM" },
7172   {  47, "reportSM-DeliveryStatus" },
7173   {  48, "noteSubscriberPresent" },                             /* map-ac mwdMngt (24) version1 (1) */
7174   {  49, "alertServiceCentreWithoutResult" },   /* map-ac shortMsgAlert (23) version1 (1) */
7175   {  50, "activateTraceMode" },
7176   {  51, "deactivateTraceMode" },
7177   {  52, "traceSubscriberActivity" },                   /* map-ac handoverControl (11) version1 (1) */
7178   {  54, "beginSubscriberActivity" },                   /* map-ac networkFunctionalSs (18) version1 (1) */
7179   {  55, "sendIdentification" },
7180   {  56, "sendAuthenticationInfo" },
7181   {  57, "restoreData" },
7182   {  58, "sendIMSI" },
7183   {  59, "processUnstructuredSS-Request" },
7184   {  60, "unstructuredSS-Request" },
7185   {  61, "unstructuredSS-Notify" },
7186   {  63, "informServiceCentre" },
7187   {  64, "alertServiceCentre" },
7188   {  66, "readyForSM" },
7189   {  67, "purgeMS" },
7190   {  68, "prepareHandover" },
7191   {  69, "prepareSubsequentHandover" },
7192   {  70, "provideSubscriberInfo" },
7193   {  71, "anyTimeInterrogation" },
7194   {  72, "ss-InvocationNotification" },
7195   {  73, "setReportingState" },
7196   {  74, "statusReport" },
7197   {  75, "remoteUserFree" },
7198   {  76, "registerCC-Entry" },
7199   {  77, "eraseCC-Entry" },
7200   {  83, "provideSubscriberLocation" },
7201   {  85, "sendRoutingInfoForLCS" },
7202   {  86, "subscriberLocationReport" },
7203   { 0, NULL }
7204 };
7205
7206 static guint32 opcode=0;
7207
7208 static int
7209 dissect_gsm_map_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
7210   offset = dissect_ber_integer_new(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode);
7211
7212   if (check_col(pinfo->cinfo, COL_INFO)){
7213     col_set_str(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
7214   }
7215
7216   return offset;
7217 }
7218
7219 static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7220   switch(opcode){
7221   case  2: /*updateLocation*/
7222     offset=dissect_gsm_map_UpdateLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
7223     break;
7224   case  3: /*cancelLocation*/
7225     offset=dissect_gsm_map_CancelLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
7226     break;
7227   case  4: /*provideRoamingNumber*/
7228     offset=dissect_gsm_map_ProvideRoamingNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
7229     break;
7230   case  6: /*resumeCallHandling*/
7231     offset=dissect_gsm_map_ResumeCallHandlingArg(FALSE, tvb, offset, pinfo, tree, -1);
7232     break;
7233   case  7: /*insertSubscriberData*/
7234     offset=dissect_gsm_map_InsertSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
7235     break;
7236   case  8: /*deleteSubscriberData*/
7237     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
7238     break;
7239         /* TODO find out why this isn't in the ASN1 file
7240   case  9: sendParameters
7241     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
7242     break;
7243         */
7244   case  10: /*registerSS*/
7245     offset=dissect_gsm_map_RegisterSS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7246     break;
7247   case  11: /*eraseSS*/
7248     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
7249     break;
7250   case 12: /*activateSS*/
7251     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
7252     break;
7253   case 13: /*deactivateSS*/
7254     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
7255     break;
7256   case 14: /*interrogateSS*/
7257     offset=dissect_gsm_map_Ss_ForBS(FALSE, tvb, offset, pinfo, tree, -1);
7258     break;
7259   case 17: /*registerPassword*/
7260     offset=dissect_gsm_map_Ss_Code(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
7261     break;
7262   case 18: /*getPassword*/
7263     offset=dissect_gsm_map_GetPasswordArg(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_getPassword);
7264     break;
7265   case 22: /*sendRoutingInfo*/
7266     offset=dissect_gsm_map_SendRoutingInfoForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
7267     break;
7268   case 23: /*updateGprsLocation*/
7269     offset=dissect_gsm_map_UpdateGprsLocationArg(FALSE, tvb, offset, pinfo, tree, -1);
7270     break;
7271   case 24: /*sendRoutingInfoForGprs*/
7272     offset=dissect_gsm_map_SendRoutingInfoForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
7273     break;
7274   case 25: /*failureReport*/
7275     offset=dissect_gsm_map_FailureReportArg(FALSE, tvb, offset, pinfo, tree, -1);
7276     break;
7277   case 26: /*noteMsPresentForGprs*/
7278     offset=dissect_gsm_map_NoteMsPresentForGprsArg(FALSE, tvb, offset, pinfo, tree, -1);
7279     break;
7280   case 29: /*sendEndSignal*/
7281     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
7282     break;
7283   case 31: /*provideSIWFSNumbe*/
7284     offset=dissect_gsm_map_ProvideSIWFSNumberArg(FALSE, tvb, offset, pinfo, tree, -1);
7285     break;
7286   case 32: /*sIWFSSignallingModify*/
7287     offset=dissect_gsm_map_SIWFSSignallingModifyArg(FALSE, tvb, offset, pinfo, tree, -1);
7288     break;
7289   case 33: /*processAccessSignalling*/
7290     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
7291     break;
7292   case 34: /*forwardAccessSignalling*/
7293     offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
7294     break;
7295   case 37: /*reset*/
7296     offset=dissect_gsm_map_ResetArg(FALSE, tvb, offset, pinfo, tree, -1);
7297     break;
7298   case 38: /*forwardCheckSS-Indication*/
7299     return offset;
7300     break;
7301   case 39: /*prepareGroupCall*/
7302     offset=dissect_gsm_map_PrepareGroupCallArg(FALSE, tvb, offset, pinfo, tree, -1);
7303     break;
7304   case 40: /*sendGroupCallEndSignal*/
7305     dissect_gsm_map_SendGroupCallEndSignalArg(FALSE, tvb, offset, pinfo, tree, -1);
7306     break;
7307   case 42: /*processGroupCallSignalling*/
7308     offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1);
7309     break;
7310   case 43: /*checkIMEI*/
7311     offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
7312     break;
7313   case 44: /*mt-forwardSM*/
7314     offset=dissect_gsm_map_CheckIMEIArg(FALSE, tvb, offset, pinfo, tree, -1);
7315     break;
7316   case 45: /*sendRoutingInfoForSM*/
7317     offset=dissect_gsm_map_RoutingInfoForSMRes(FALSE, tvb, offset, pinfo, tree, -1);
7318     break;
7319   case 46: /*mo-forwardSM*/
7320     offset=dissect_gsm_map_Mo_forwardSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7321     break;
7322   case 47: /*reportSM-DeliveryStatus*/
7323     offset=dissect_gsm_map_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, pinfo, tree, -1);
7324     break;
7325   case 50: /*activateTraceMode*/
7326     offset=dissect_gsm_map_ActivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
7327     break;
7328   case 51: /*deactivateTraceMode*/
7329     offset=dissect_gsm_map_DeactivateTraceModeArg(FALSE, tvb, offset, pinfo, tree, -1);
7330     break;
7331   case 55: /*sendIdentification*/
7332     offset=dissect_gsm_map_Tmsi(FALSE, tvb, offset, pinfo, tree, -1);
7333     break;
7334   case 56: /*sendAuthenticationInfo*/
7335         offset=dissect_gsm_map_SendAuthenticationInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
7336         break;
7337   case 57: /*restoreData*/
7338         offset=dissect_gsm_map_RestoreDataArg(FALSE, tvb, offset, pinfo, tree, -1);
7339         break;
7340   case 58: /*sendIMSI*/
7341         offset=dissect_gsm_map_Msisdn(FALSE, tvb, offset, pinfo, tree, -1);
7342         break;
7343   case 59: /*processUnstructuredSS-Request*/
7344     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7345     break;
7346   case 60: /*unstructuredSS-Request*/
7347     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7348     break;
7349   case 61: /*unstructuredSS-Notify*/
7350     offset=dissect_gsm_map_Ussd_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7351     break;
7352   case 63: /*informServiceCentre*/
7353     offset=dissect_gsm_map_InformServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
7354     break;
7355   case 64: /*alertServiceCentre*/
7356     offset=dissect_gsm_map_AlertServiceCentreArg(FALSE, tvb, offset, pinfo, tree, -1);
7357     break;
7358   case 66: /*readyForSM*/
7359     offset=dissect_gsm_map_ReadyForSM_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7360     break;
7361   case 67: /*purgeMS*/
7362     offset=dissect_gsm_map_PurgeMS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7363     break;
7364   case 68: /*prepareHandover*/
7365     offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7366     break;
7367   case 69: /*prepareSubsequentHandover*/
7368     offset=dissect_gsm_map_PrepareSubsequentHO_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7369     break;
7370   case 70: /*provideSubscriberInfo*/
7371     offset=dissect_gsm_map_ProvideSubscriberInfoArg(FALSE, tvb, offset, pinfo, tree, -1);
7372     break;
7373   case 71: /*anyTimeInterrogation*/
7374     offset=dissect_gsm_map_AnyTimeInterrogationArg(FALSE, tvb, offset, pinfo, tree, -1);
7375     break;
7376   case 72: /*ss-InvocationNotificatio*/
7377     offset=dissect_gsm_map_Ss_InvocationNotificationArg(FALSE, tvb, offset, pinfo, tree, -1);
7378     break;
7379   case 73: /*setReportingState*/
7380     offset=dissect_gsm_map_SetReportingStateArg(FALSE, tvb, offset, pinfo, tree, -1);
7381     break;
7382   case 74: /*statusReport*/
7383     offset=dissect_gsm_map_StatusReportArg(FALSE, tvb, offset, pinfo, tree, -1);
7384     break;
7385   case 75: /*remoteUserFree*/
7386     offset=dissect_gsm_map_RemoteUserFreeArg(FALSE, tvb, offset, pinfo, tree, -1);
7387     break;
7388   case 76: /*registerCC-Entry*/
7389     offset=dissect_gsm_map_RegisterCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
7390     break;
7391   case 77: /*eraseCC-Entry*/
7392     offset=dissect_gsm_map_EraseCC_EntryArg(FALSE, tvb, offset, pinfo, tree, -1);
7393     break;
7394   case 83: /*provideSubscriberLocation*/
7395     offset=dissect_gsm_map_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7396     break;
7397   case 85: /*sendRoutingInfoForLCS*/
7398     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7399     break;
7400   case 86: /*subscriberLocationReport*/
7401     offset=dissect_gsm_map_SubscriberLocationReport_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7402     break;
7403   default:
7404     proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
7405   }
7406   return offset;
7407 }
7408
7409
7410 static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7411   switch(opcode){
7412   case  2: /*updateLocation*/
7413     offset=dissect_gsm_map_UpdateLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
7414     break;
7415   case  3: /*cancelLocation*/
7416     offset=dissect_gsm_map_CancelLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
7417     break;
7418   case  4: /*provideRoamingNumber*/
7419     offset=dissect_gsm_map_ProvideRoamingNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
7420     break;
7421   case  6: /*resumeCallHandling*/
7422     offset=dissect_gsm_map_ResumeCallHandlingRes(FALSE, tvb, offset, pinfo, tree, -1);
7423     break;
7424   case  7: /*insertSubscriberData*/
7425     offset=dissect_gsm_map_InsertSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
7426     break;
7427   case  8: /*deleteSubscriberData*/
7428     offset=dissect_gsm_map_DeleteSubscriberDataRes(FALSE, tvb, offset, pinfo, tree, -1);
7429     break;
7430         /* TODO find out why this isn't in the ASN1 file
7431   case  9: sendParameters
7432     offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, pinfo, tree, -1);
7433     break;
7434         */
7435   case  10: /*registerSS*/
7436     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
7437     break;
7438   case  11: /*eraseSS*/
7439     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
7440     break;
7441   case 12: /*activateSS*/
7442     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
7443     break;
7444   case 13: /*deactivateSS*/
7445     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
7446     break;
7447   case 14: /*interrogateSS*/
7448     offset=dissect_gsm_map_Ss_Info(FALSE, tvb, offset, pinfo, tree, -1);
7449     break;
7450   case 17: /*registerPassword*/
7451     offset=dissect_gsm_map_NewPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ss_Code);
7452     break;
7453   case 18: /*getPassword*/
7454     offset=dissect_gsm_map_CurrentPassword(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_currentPassword);
7455     break;
7456   case 22: /*sendRoutingInfo*/
7457     offset=dissect_gsm_map_SendRoutingInfoForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
7458     break;
7459   case 23: /*updateGprsLocation*/
7460     offset=dissect_gsm_map_UpdateGprsLocationRes(FALSE, tvb, offset, pinfo, tree, -1);
7461     break;
7462   case 24: /*sendRoutingInfoForGprs*/
7463     offset=dissect_gsm_map_SendRoutingInfoForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
7464     break;
7465   case 25: /*failureReport*/
7466     offset=dissect_gsm_map_FailureReportRes(FALSE, tvb, offset, pinfo, tree, -1);
7467     break;
7468   case 26: /*noteMsPresentForGprs*/
7469     offset=dissect_gsm_map_NoteMsPresentForGprsRes(FALSE, tvb, offset, pinfo, tree, -1);
7470     break;
7471   case 29: /*sendEndSignal*/
7472           /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain 
7473            * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) }
7474            */
7475     offset=dissect_gsm_map_ExtensionContainer(FALSE, tvb, offset, pinfo, tree, -1);
7476     break;
7477   case 31: /*provideSIWFSNumbe*/
7478     offset=dissect_gsm_map_ProvideSIWFSNumberRes(FALSE, tvb, offset, pinfo, tree, -1);
7479     break;
7480   case 32: /*provideSIWFSNumbe*/
7481     offset=dissect_gsm_map_SIWFSSignallingModifyRes(FALSE, tvb, offset, pinfo, tree, -1);
7482     break;
7483   case 39: /*prepareGroupCall*/
7484     offset=dissect_gsm_map_PrepareGroupCallRes(FALSE, tvb, offset, pinfo, tree, -1);
7485     break;
7486   case 40: /*sendGroupCallEndSignal*/
7487     dissect_gsm_map_SendGroupCallEndSignalRes(FALSE, tvb, offset, pinfo, tree, -1);
7488     break;
7489   case 43: /*checkIMEI*/
7490     offset=dissect_gsm_map_EquipmentStatus(FALSE, tvb, offset, pinfo, tree, -1);
7491     break;
7492   case 45: /*sendRoutingInfoForSM*/
7493     offset=dissect_gsm_map_RoutingInfoForSMRes(FALSE, tvb, offset, pinfo, tree, -1);
7494     break;
7495   case 46: /*mo-forwardSM*/
7496     offset=dissect_gsm_map_Mo_forwardSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
7497     break;
7498   case 48: /*reportSM-DeliveryStatus*/
7499     offset=dissect_gsm_map_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, pinfo, tree, -1);
7500     break;
7501   case 50: /*activateTraceMode*/
7502     offset=dissect_gsm_map_ActivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
7503     break;
7504   case 51: /*deactivateTraceMode*/
7505     offset=dissect_gsm_map_DeactivateTraceModeRes(FALSE, tvb, offset, pinfo, tree, -1);
7506     break;
7507   case 55: /*sendIdentification*/
7508     offset=dissect_gsm_map_SendIdentificationRes(FALSE, tvb, offset, pinfo, tree, -1);
7509     break;
7510   case 57: /*restoreData*/
7511         offset=dissect_gsm_map_RestoreDataRes(FALSE, tvb, offset, pinfo, tree, -1);
7512         break;
7513   case 58: /*sendIMSI*/
7514         offset=dissect_gsm_map_Imsi(FALSE, tvb, offset, pinfo, tree, -1);
7515         break;
7516   case 59: /*unstructuredSS-Request*/
7517     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
7518     break;
7519   case 60: /*unstructuredSS-Request*/
7520     offset=dissect_gsm_map_Ussd_Res(FALSE, tvb, offset, pinfo, tree, -1);
7521     break;
7522   case 61: /*unstructuredSS-Notify*/
7523     /* TRUE ? */
7524     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
7525     break;
7526   case 66: /*readyForSM*/
7527     offset=dissect_gsm_map_ReadyForSM_Res(FALSE, tvb, offset, pinfo, tree, -1);
7528     break;
7529   case 67: /*purgeMS*/
7530     offset=dissect_gsm_map_PurgeMS_Res(FALSE, tvb, offset, pinfo, tree, -1);
7531     break;
7532   case 68: /*prepareHandover*/
7533     offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1);
7534     break;
7535   case 69: /*prepareSubsequentHandover*/
7536      offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1);
7537     break;
7538   case 70: /*provideSubscriberInfo*/
7539     offset=dissect_gsm_map_ProvideSubscriberInfoRes(FALSE, tvb, offset, pinfo, tree, -1);
7540     break;
7541   case 71: /*anyTimeInterrogation*/
7542     offset=dissect_gsm_map_AnyTimeInterrogationRes(FALSE, tvb, offset, pinfo, tree, -1);
7543     break;
7544   case 72: /*ss-InvocationNotificatio*/
7545     offset=dissect_gsm_map_Ss_InvocationNotificationRes(FALSE, tvb, offset, pinfo, tree, -1);
7546     break;
7547   case 73: /*setReportingState*/
7548     offset=dissect_gsm_map_SetReportingStateRes(FALSE, tvb, offset, pinfo, tree, -1);
7549     break;
7550   case 74: /*statusReport*/
7551     offset=dissect_gsm_map_StatusReportRes(FALSE, tvb, offset, pinfo, tree, -1);
7552     break;
7553   case 75: /*remoteUserFree*/
7554     offset=dissect_gsm_map_RemoteUserFreeRes(FALSE, tvb, offset, pinfo, tree, -1);
7555     break;
7556   case 76: /*registerCC-Entry*/
7557     offset=dissect_gsm_map_RegisterCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
7558     break;
7559   case 77: /*eraseCC-Entry*/
7560     offset=dissect_gsm_map_EraseCC_EntryRes(FALSE, tvb, offset, pinfo, tree, -1);
7561     break;
7562   case 83: /*provideSubscriberLocation*/
7563     offset=dissect_gsm_map_ProvideSubscriberLocation_Res(FALSE, tvb, offset, pinfo, tree, -1);
7564     break;
7565   case 85: /*sendRoutingInfoForLCS*/
7566     offset=dissect_gsm_map_RoutingInfoForLCS_Arg(FALSE, tvb, offset, pinfo, tree, -1);
7567     break;
7568   case 86: /*subscriberLocationReport*/
7569     offset=dissect_gsm_map_SubscriberLocationReport_Res(FALSE, tvb, offset, pinfo, tree, -1);
7570     break;
7571  default:
7572     proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
7573   }
7574   return offset;
7575 }
7576
7577 static int 
7578 dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7579   return dissect_gsm_map_Opcode(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeCmd);
7580 }
7581
7582 static int dissect_invokeid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7583   return dissect_ber_integer_new(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_invokeid, NULL);
7584 }
7585
7586
7587 static const value_string InvokeId_vals[] = {
7588   {   0, "invokeid" },
7589   {   1, "absent" },
7590   { 0, NULL }
7591 };
7592
7593 static int dissect_absent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7594   return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_absent);
7595 }
7596
7597
7598 static const ber_choice InvokeId_choice[] = {
7599   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeid },
7600   {   1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_absent },
7601   { 0, 0, 0, 0, NULL }
7602 };
7603
7604 static int
7605 dissect_gsm_map_InvokeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
7606   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7607                               InvokeId_choice, hf_index, ett_gsm_map_InvokeId);
7608
7609   return offset;
7610 }
7611 static int dissect_invokeId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7612   return dissect_gsm_map_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_invokeId);
7613 }
7614
7615 static const ber_sequence InvokePDU_sequence[] = {
7616   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
7617   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd },
7618   { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeData },
7619   { 0, 0, 0, NULL }
7620 };
7621
7622 static int
7623 dissect_gsm_map_InvokePDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
7624   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7625                                 InvokePDU_sequence, hf_index, ett_gsm_map_InvokePDU);
7626
7627   return offset;
7628 }
7629 static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7630   return dissect_gsm_map_InvokePDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_invoke);
7631 }
7632
7633 static const ber_sequence ReturnResult_result_sequence[] = {
7634   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd },
7635   { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_returnResultData },
7636   { 0, 0, 0, NULL }
7637 };
7638 static int
7639 dissect_returnResult_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7640   offset = dissect_ber_sequence(FALSE, pinfo, tree, tvb, offset,
7641                                 ReturnResult_result_sequence, hf_gsm_map_returnResult_result, ett_gsm_map_ReturnResult_result);
7642
7643   return offset;
7644 }
7645
7646 static const ber_sequence ReturnResultPDU_sequence[] = {
7647   { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
7648   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_returnResult_result },
7649   { 0, 0, 0, NULL }
7650 };
7651
7652 static int
7653 dissect_gsm_map_returnResultPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
7654   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7655                                 ReturnResultPDU_sequence, hf_index, ett_gsm_map_ReturnResultPDU);
7656
7657   return offset;
7658 }
7659 static int dissect_returnResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
7660   return dissect_gsm_map_returnResultPDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResult);
7661 }
7662
7663 static const value_string GSMMAPPDU_vals[] = {
7664   {   1, "invoke" },
7665   {   2, "returnResult" },
7666   {   3, "returnError" },
7667   {   4, "reject" },
7668   { 0, NULL }
7669 };
7670
7671 static const ber_choice GSMMAPPDU_choice[] = {
7672   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl },
7673   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResult_impl },
7674 #ifdef REMOVED
7675   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl },
7676   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl },
7677 #endif
7678   { 0, 0, 0, 0, NULL }
7679 };
7680
7681 static guint8 gsmmap_pdu_type = 0;
7682 static guint8 gsm_map_pdu_size = 0;
7683
7684 static int
7685 dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
7686
7687   gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
7688   /* Get the length and add 2 */
7689   gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;
7690
7691   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7692                               GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU);
7693
7694   if (check_col(pinfo->cinfo, COL_INFO)){
7695     col_prepend_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%u)"));
7696   }
7697
7698   return offset;
7699 }
7700
7701
7702
7703
7704 static void
7705 dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
7706 {
7707     proto_item          *item=NULL;
7708     proto_tree          *tree=NULL;
7709         /* Used for gsm_map TAP */
7710         static                  gsm_map_tap_rec_t tap_rec;
7711         gint                    op_idx;
7712     gchar                       *str = NULL;
7713
7714
7715     if (check_col(pinfo->cinfo, COL_PROTOCOL))
7716     {
7717         col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP");
7718     }
7719
7720     /* create display subtree for the protocol */
7721     if(parent_tree){
7722        item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
7723        tree = proto_item_add_subtree(item, ett_gsm_map);
7724     }
7725
7726     dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, pinfo, tree, -1);
7727         str = my_match_strval(opcode, gsm_map_opr_code_strings, &op_idx);
7728
7729         tap_rec.invoke = FALSE;
7730         if ( gsmmap_pdu_type  == 1 )
7731                 tap_rec.invoke = TRUE;
7732         tap_rec.opr_code_idx = op_idx;
7733         tap_rec.size = gsm_map_pdu_size;
7734         tap_queue_packet(gsm_map_tap, pinfo, &tap_rec);
7735         
7736
7737
7738 }
7739
7740 static const value_string ssCode_vals[] = {
7741   { 0x00, "allSS - all SS" },
7742   { 0x10 ,"allLineIdentificationSS - all line identification SS" },
7743   { 0x11 ,"clip - calling line identification presentation" },
7744   { 0x12 ,"clir - calling line identification restriction" },
7745   { 0x13 ,"colp - connected line identification presentation" },
7746   { 0x14 ,"colr - connected line identification restriction" },
7747   { 0x15 ,"mci - malicious call identification" },
7748   { 0x18 ,"allNameIdentificationSS - all name indentification SS" },
7749   { 0x19 ,"cnap - calling name presentation" },
7750   { 0x20 ,"allForwardingSS - all forwarding SS" },
7751   { 0x21 ,"cfu - call forwarding unconditional" },
7752   { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" },
7753   { 0x29 ,"cfb - call forwarding busy" },
7754   { 0x2a ,"cfnry - call forwarding on no reply" },
7755   { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" },
7756   { 0x24 ,"cd - call deflection" },
7757   { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" },
7758   { 0x31 ,"ect - explicit call transfer" },
7759   { 0x32 ,"mah - mobile access hunting" },
7760   { 0x40 ,"allCallCompletionSS - all Call completion SS" },
7761   { 0x41 ,"cw - call waiting" },
7762   { 0x42 ,"hold - call hold" },
7763   { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" },
7764   { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" },
7765   { 0x45 ,"mc - multicall" },
7766   { 0x50 ,"allMultiPartySS - all multiparty SS" },
7767   { 0x51 ,"multiPTY - multiparty" },
7768   { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" },
7769   { 0x61 ,"cug - closed user group" },
7770   { 0x70 ,"allChargingSS - all charging SS" },
7771   { 0x71 ,"aoci - advice of charge information" },
7772   { 0x72 ,"aocc - advice of charge charging" },
7773   { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" },
7774   { 0x81 ,"uus1 - UUS1 user-to-user signalling" },
7775   { 0x82 ,"uus2 - UUS2 user-to-user signalling" },
7776   { 0x83 ,"uus3 - UUS3 user-to-user signalling" },
7777   { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" },
7778   { 0x91 ,"barringOfOutgoingCalls" },
7779   { 0x92 ,"baoc - barring of all outgoing calls" },
7780   { 0x93 ,"boic - barring of outgoing international calls" },
7781   { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" },
7782   { 0x99 ,"barringOfIncomingCalls" },
7783   { 0x9a ,"baic - barring of all incoming calls" },
7784   { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" },
7785   { 0xf0 ,"allPLMN-specificSS" },
7786   { 0xa0 ,"allCallPrioritySS - all call priority SS" },
7787   { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" },
7788   { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" },
7789   { 0xb1 ,"universal - allow location by any LCS client" },
7790   { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" },
7791   { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" },
7792   { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" },
7793   { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" },
7794   { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" },
7795   { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" },
7796   { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" },
7797
7798   { 0xf1 ,"plmn-specificSS-1" },
7799   { 0xf2 ,"plmn-specificSS-2" },
7800   { 0xf3 ,"plmn-specificSS-3" },
7801   { 0xf4 ,"plmn-specificSS-4" },
7802   { 0xf5 ,"plmn-specificSS-5" },
7803   { 0xf6 ,"plmn-specificSS-6" },
7804   { 0xf7 ,"plmn-specificSS-7" },
7805   { 0xf8 ,"plmn-specificSS-8" },
7806   { 0xf9 ,"plmn-specificSS-9" },
7807   { 0xfa ,"plmn-specificSS-a" },
7808   { 0xfb ,"plmn-specificSS-b" },
7809   { 0xfc ,"plmn-specificSS-c" },
7810   { 0xfd ,"plmn-specificSS-d" },
7811   { 0xfe ,"plmn-specificSS-e" },
7812   { 0xff ,"plmn-specificSS-f" },
7813   { 0, NULL }
7814 };
7815
7816 static const value_string Teleservice_vals[] = {
7817 {0x00, "allTeleservices" },
7818 {0x10, "allSpeechTransmissionServices" },
7819 {0x11, "telephony" },
7820 {0x12, "emergencyCalls" },
7821 {0x20, "allShortMessageServices" },
7822 {0x21, "shortMessageMT-PP" },
7823 {0x22, "shortMessageMO-PP" },
7824 {0x60, "allFacsimileTransmissionServices" },
7825 {0x61, "facsimileGroup3AndAlterSpeech" },
7826 {0x62, "automaticFacsimileGroup3" },
7827 {0x63, "facsimileGroup4" },
7828
7829 {0x70, "allDataTeleservices" },
7830 {0x80, "allTeleservices-ExeptSMS" },
7831
7832 {0x90, "allVoiceGroupCallServices" },
7833 {0x91, "voiceGroupCall" },
7834 {0x92, "voiceBroadcastCall" },
7835
7836 {0xd0, "allPLMN-specificTS" },
7837 {0xd1, "plmn-specificTS-1" },
7838 {0xd2, "plmn-specificTS-2" },
7839 {0xd3, "plmn-specificTS-3" },
7840 {0xd4, "plmn-specificTS-4" },
7841 {0xd5, "plmn-specificTS-5" },
7842 {0xd6, "plmn-specificTS-6" },
7843 {0xd7, "plmn-specificTS-7" },
7844 {0xd8, "plmn-specificTS-8" },
7845 {0xd9, "plmn-specificTS-9" },
7846 {0xda, "plmn-specificTS-A" },
7847 {0xdb, "plmn-specificTS-B" },
7848 {0xdc, "plmn-specificTS-C" },
7849 {0xdd, "plmn-specificTS-D" },
7850 {0xde, "plmn-specificTS-E" },
7851 {0xdf, "plmn-specificTS-F" },
7852   { 0, NULL }
7853 };
7854
7855 /*--- proto_register_gsm_map -------------------------------------------*/
7856 void proto_register_gsm_map(void) {
7857
7858   /* List of fields */
7859   static hf_register_info hf[] = {
7860     { &hf_gsm_map_invokeCmd,
7861       { "invokeCmd", "gsm_map.invokeCmd",
7862         FT_UINT32, BASE_DEC, VALS(gsm_map_opr_code_strings), 0,
7863         "InvokePDU/invokeCmd", HFILL }},
7864     { &hf_gsm_map_invokeid,
7865       { "invokeid", "gsm_map.invokeid",
7866         FT_INT32, BASE_DEC, NULL, 0,
7867         "InvokeId/invokeid", HFILL }},
7868     { &hf_gsm_map_absent,
7869       { "absent", "gsm_map.absent",
7870         FT_NONE, BASE_NONE, NULL, 0,
7871         "InvokeId/absent", HFILL }},
7872     { &hf_gsm_map_invokeId,
7873       { "invokeId", "gsm_map.invokeId",
7874         FT_UINT32, BASE_DEC, VALS(InvokeId_vals), 0,
7875         "InvokePDU/invokeId", HFILL }},
7876     { &hf_gsm_map_currentPassword,
7877       { "currentPassword", "gsm_map.currentPassword",
7878         FT_STRING, BASE_NONE, NULL, 0,
7879         "", HFILL }},
7880     { &hf_gsm_map_invoke,
7881       { "invoke", "gsm_map.invoke",
7882         FT_NONE, BASE_NONE, NULL, 0,
7883         "GSMMAPPDU/invoke", HFILL }},
7884     { &hf_gsm_map_returnResult,
7885       { "returnResult", "gsm_map.returnResult",
7886         FT_NONE, BASE_NONE, NULL, 0,
7887         "GSMMAPPDU/returnResult", HFILL }},
7888     { &hf_gsm_map_getPassword,
7889       { "Password", "gsm_map.password",
7890         FT_UINT8, BASE_DEC, VALS(GetPasswordArg_vals), 0,
7891         "Password", HFILL }},
7892
7893
7894
7895 /*--- Included file: packet-gsm_map-hfarr.c ---*/
7896
7897     { &hf_gsm_map_protocolId,
7898       { "protocolId", "gsm_map.protocolId",
7899         FT_UINT32, BASE_DEC, VALS(ProtocolId_vals), 0,
7900         "Bss-APDU/protocolId", HFILL }},
7901     { &hf_gsm_map_signalInfo,
7902       { "signalInfo", "gsm_map.signalInfo",
7903         FT_BYTES, BASE_HEX, NULL, 0,
7904         "", HFILL }},
7905     { &hf_gsm_map_extensionContainer,
7906       { "extensionContainer", "gsm_map.extensionContainer",
7907         FT_NONE, BASE_NONE, NULL, 0,
7908         "", HFILL }},
7909     { &hf_gsm_map_supportedCamelPhases,
7910       { "supportedCamelPhases", "gsm_map.supportedCamelPhases",
7911         FT_BYTES, BASE_HEX, NULL, 0,
7912         "", HFILL }},
7913     { &hf_gsm_map_solsaSupportIndicator,
7914       { "solsaSupportIndicator", "gsm_map.solsaSupportIndicator",
7915         FT_NONE, BASE_NONE, NULL, 0,
7916         "", HFILL }},
7917     { &hf_gsm_map_imsi,
7918       { "imsi", "gsm_map.imsi",
7919         FT_BYTES, BASE_HEX, NULL, 0,
7920         "", HFILL }},
7921     { &hf_gsm_map_msc_Number,
7922       { "msc-Number", "gsm_map.msc_Number",
7923         FT_BYTES, BASE_HEX, NULL, 0,
7924         "", HFILL }},
7925     { &hf_gsm_map_vlr_Number,
7926       { "vlr-Number", "gsm_map.vlr_Number",
7927         FT_BYTES, BASE_HEX, NULL, 0,
7928         "", HFILL }},
7929     { &hf_gsm_map_lmsi,
7930       { "lmsi", "gsm_map.lmsi",
7931         FT_BYTES, BASE_HEX, NULL, 0,
7932         "", HFILL }},
7933     { &hf_gsm_map_vlr_Capability,
7934       { "vlr-Capability", "gsm_map.vlr_Capability",
7935         FT_NONE, BASE_NONE, NULL, 0,
7936         "", HFILL }},
7937     { &hf_gsm_map_hlr_Number,
7938       { "hlr-Number", "gsm_map.hlr_Number",
7939         FT_BYTES, BASE_HEX, NULL, 0,
7940         "", HFILL }},
7941     { &hf_gsm_map_PrivateExtensionList_item,
7942       { "Item", "gsm_map.PrivateExtensionList_item",
7943         FT_NONE, BASE_NONE, NULL, 0,
7944         "PrivateExtensionList/_item", HFILL }},
7945     { &hf_gsm_map_identity,
7946       { "identity", "gsm_map.identity",
7947         FT_UINT32, BASE_DEC, VALS(T_identity_vals), 0,
7948         "CancelLocationArg/identity", HFILL }},
7949     { &hf_gsm_map_imsi_WithLMSI,
7950       { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI",
7951         FT_NONE, BASE_NONE, NULL, 0,
7952         "CancelLocationArg/identity/imsi-WithLMSI", HFILL }},
7953     { &hf_gsm_map_cancellationType,
7954       { "cancellationType", "gsm_map.cancellationType",
7955         FT_UINT32, BASE_DEC, VALS(CancellationType_vals), 0,
7956         "CancelLocationArg/cancellationType", HFILL }},
7957     { &hf_gsm_map_sgsn_Number,
7958       { "sgsn-Number", "gsm_map.sgsn_Number",
7959         FT_BYTES, BASE_HEX, NULL, 0,
7960         "", HFILL }},
7961     { &hf_gsm_map_freezeTMSI,
7962       { "freezeTMSI", "gsm_map.freezeTMSI",
7963         FT_NONE, BASE_NONE, NULL, 0,
7964         "PurgeMS-Res/freezeTMSI", HFILL }},
7965     { &hf_gsm_map_freezeP_TMSI,
7966       { "freezeP-TMSI", "gsm_map.freezeP_TMSI",
7967         FT_NONE, BASE_NONE, NULL, 0,
7968         "PurgeMS-Res/freezeP-TMSI", HFILL }},
7969     { &hf_gsm_map_authenticationSetList,
7970       { "authenticationSetList", "gsm_map.authenticationSetList",
7971         FT_UINT32, BASE_DEC, NULL, 0,
7972         "SendIdentificationRes/authenticationSetList", HFILL }},
7973     { &hf_gsm_map_authenticationSetList_item,
7974       { "Item", "gsm_map.authenticationSetList_item",
7975         FT_NONE, BASE_NONE, NULL, 0,
7976         "SendIdentificationRes/authenticationSetList/_item", HFILL }},
7977     { &hf_gsm_map_rand,
7978       { "rand", "gsm_map.rand",
7979         FT_BYTES, BASE_HEX, NULL, 0,
7980         "", HFILL }},
7981     { &hf_gsm_map_sres,
7982       { "sres", "gsm_map.sres",
7983         FT_BYTES, BASE_HEX, NULL, 0,
7984         "", HFILL }},
7985     { &hf_gsm_map_kc,
7986       { "kc", "gsm_map.kc",
7987         FT_BYTES, BASE_HEX, NULL, 0,
7988         "", HFILL }},
7989     { &hf_gsm_map_targetCellId,
7990       { "targetCellId", "gsm_map.targetCellId",
7991         FT_BYTES, BASE_HEX, NULL, 0,
7992         "", HFILL }},
7993     { &hf_gsm_map_ho_NumberNotRequired,
7994       { "ho-NumberNotRequired", "gsm_map.ho_NumberNotRequired",
7995         FT_NONE, BASE_NONE, NULL, 0,
7996         "PrepareHO-Arg/ho-NumberNotRequired", HFILL }},
7997     { &hf_gsm_map_bss_APDU,
7998       { "bss-APDU", "gsm_map.bss_APDU",
7999         FT_NONE, BASE_NONE, NULL, 0,
8000         "", HFILL }},
8001     { &hf_gsm_map_handoverNumber,
8002       { "handoverNumber", "gsm_map.handoverNumber",
8003         FT_BYTES, BASE_HEX, NULL, 0,
8004         "PrepareHO-Res/handoverNumber", HFILL }},
8005     { &hf_gsm_map_targetMSC_Number,
8006       { "targetMSC-Number", "gsm_map.targetMSC_Number",
8007         FT_BYTES, BASE_HEX, NULL, 0,
8008         "PrepareSubsequentHO-Arg/targetMSC-Number", HFILL }},
8009     { &hf_gsm_map_numberOfRequestedVectors,
8010       { "numberOfRequestedVectors", "gsm_map.numberOfRequestedVectors",
8011         FT_UINT32, BASE_DEC, NULL, 0,
8012         "SendAuthenticationInfoArg/numberOfRequestedVectors", HFILL }},
8013     { &hf_gsm_map_segmentationProhibited,
8014       { "segmentationProhibited", "gsm_map.segmentationProhibited",
8015         FT_NONE, BASE_NONE, NULL, 0,
8016         "SendAuthenticationInfoArg/segmentationProhibited", HFILL }},
8017     { &hf_gsm_map_immediateResponsePreferred,
8018       { "immediateResponsePreferred", "gsm_map.immediateResponsePreferred",
8019         FT_NONE, BASE_NONE, NULL, 0,
8020         "SendAuthenticationInfoArg/immediateResponsePreferred", HFILL }},
8021     { &hf_gsm_map_re_synchronisationInfo,
8022       { "re-synchronisationInfo", "gsm_map.re_synchronisationInfo",
8023         FT_NONE, BASE_NONE, NULL, 0,
8024         "SendAuthenticationInfoArg/re-synchronisationInfo", HFILL }},
8025     { &hf_gsm_map_auts,
8026       { "auts", "gsm_map.auts",
8027         FT_BYTES, BASE_HEX, NULL, 0,
8028         "SendAuthenticationInfoArg/re-synchronisationInfo/auts", HFILL }},
8029     { &hf_gsm_map_requestingNodeType,
8030       { "requestingNodeType", "gsm_map.requestingNodeType",
8031         FT_UINT32, BASE_DEC, VALS(T_requestingNodeType_vals), 0,
8032         "SendAuthenticationInfoArg/requestingNodeType", HFILL }},
8033     { &hf_gsm_map_requestingPLMN_Id,
8034       { "requestingPLMN-Id", "gsm_map.requestingPLMN_Id",
8035         FT_BYTES, BASE_HEX, NULL, 0,
8036         "SendAuthenticationInfoArg/requestingPLMN-Id", HFILL }},
8037     { &hf_gsm_map_SendAuthenticationInfoRes_item,
8038       { "Item", "gsm_map.SendAuthenticationInfoRes_item",
8039         FT_NONE, BASE_NONE, NULL, 0,
8040         "SendAuthenticationInfoRes/_item", HFILL }},
8041     { &hf_gsm_map_bearerService,
8042       { "bearerService", "gsm_map.bearerService",
8043         FT_BYTES, BASE_HEX, NULL, 0,
8044         "BasicService/bearerService", HFILL }},
8045     { &hf_gsm_map_teleservice,
8046       { "teleservice", "gsm_map.teleservice",
8047         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
8048         "", HFILL }},
8049     { &hf_gsm_map_BasicServiceGroupList_item,
8050       { "Item", "gsm_map.BasicServiceGroupList_item",
8051         FT_UINT32, BASE_DEC, VALS(BasicService_vals), 0,
8052         "BasicServiceGroupList/_item", HFILL }},
8053     { &hf_gsm_map_bcsmTriggerDetectionPoint,
8054       { "bcsmTriggerDetectionPoint", "gsm_map.bcsmTriggerDetectionPoint",
8055         FT_UINT32, BASE_DEC, VALS(BcsmTriggerDetectionPoint_vals), 0,
8056         "BcsmCamelTDPData/bcsmTriggerDetectionPoint", HFILL }},
8057     { &hf_gsm_map_serviceKey,
8058       { "serviceKey", "gsm_map.serviceKey",
8059         FT_UINT32, BASE_DEC, NULL, 0,
8060         "BcsmCamelTDPData/serviceKey", HFILL }},
8061     { &hf_gsm_map_gsmSCFAddress,
8062       { "gsmSCFAddress", "gsm_map.gsmSCFAddress",
8063         FT_BYTES, BASE_HEX, NULL, 0,
8064         "BcsmCamelTDPData/gsmSCFAddress", HFILL }},
8065     { &hf_gsm_map_defaultCallHandling,
8066       { "defaultCallHandling", "gsm_map.defaultCallHandling",
8067         FT_UINT32, BASE_DEC, VALS(DefaultCallHandling_vals), 0,
8068         "BcsmCamelTDPData/defaultCallHandling", HFILL }},
8069     { &hf_gsm_map_BcsmCamelTDPDataList_item,
8070       { "Item", "gsm_map.BcsmCamelTDPDataList_item",
8071         FT_NONE, BASE_NONE, NULL, 0,
8072         "BcsmCamelTDPDataList/_item", HFILL }},
8073     { &hf_gsm_map_o_BcsmCamelTDPDataList,
8074       { "o-BcsmCamelTDPDataList", "gsm_map.o_BcsmCamelTDPDataList",
8075         FT_UINT32, BASE_DEC, NULL, 0,
8076         "O-CSI/o-BcsmCamelTDPDataList", HFILL }},
8077     { &hf_gsm_map_camelCapabilityHandling,
8078       { "camelCapabilityHandling", "gsm_map.camelCapabilityHandling",
8079         FT_UINT32, BASE_DEC, NULL, 0,
8080         "", HFILL }},
8081     { &hf_gsm_map_msisdn,
8082       { "msisdn", "gsm_map.msisdn",
8083         FT_BYTES, BASE_HEX, NULL, 0,
8084         "", HFILL }},
8085     { &hf_gsm_map_category,
8086       { "category", "gsm_map.category",
8087         FT_BYTES, BASE_HEX, NULL, 0,
8088         "InsertSubscriberDataArg/category", HFILL }},
8089     { &hf_gsm_map_subscriberStatus,
8090       { "subscriberStatus", "gsm_map.subscriberStatus",
8091         FT_UINT32, BASE_DEC, VALS(SubscriberStatus_vals), 0,
8092         "InsertSubscriberDataArg/subscriberStatus", HFILL }},
8093     { &hf_gsm_map_bearerServiceList,
8094       { "bearerServiceList", "gsm_map.bearerServiceList",
8095         FT_UINT32, BASE_DEC, NULL, 0,
8096         "", HFILL }},
8097     { &hf_gsm_map_bearerServiceList_item,
8098       { "Item", "gsm_map.bearerServiceList_item",
8099         FT_BYTES, BASE_HEX, NULL, 0,
8100         "", HFILL }},
8101     { &hf_gsm_map_teleserviceList,
8102       { "teleserviceList", "gsm_map.teleserviceList",
8103         FT_UINT32, BASE_DEC, NULL, 0,
8104         "", HFILL }},
8105     { &hf_gsm_map_teleserviceList_item,
8106       { "Item", "gsm_map.teleserviceList_item",
8107         FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
8108         "", HFILL }},
8109     { &hf_gsm_map_provisionedSS,
8110       { "provisionedSS", "gsm_map.provisionedSS",
8111         FT_UINT32, BASE_DEC, NULL, 0,
8112         "InsertSubscriberDataArg/provisionedSS", HFILL }},
8113     { &hf_gsm_map_provisionedSS_item,
8114       { "Item", "gsm_map.provisionedSS_item",
8115         FT_UINT32, BASE_DEC, VALS(T_provisionedSS_item_vals), 0,
8116         "InsertSubscriberDataArg/provisionedSS/_item", HFILL }},
8117     { &hf_gsm_map_forwardingInfo,
8118       { "forwardingInfo", "gsm_map.forwardingInfo",
8119         FT_NONE, BASE_NONE, NULL, 0,
8120         "", HFILL }},
8121     { &hf_gsm_map_callBarringInfo,
8122       { "callBarringInfo", "gsm_map.callBarringInfo",
8123         FT_NONE, BASE_NONE, NULL, 0,
8124         "", HFILL }},
8125     { &hf_gsm_map_cug_Info,
8126       { "cug-Info", "gsm_map.cug_Info",
8127         FT_NONE, BASE_NONE, NULL, 0,
8128         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info", HFILL }},
8129     { &hf_gsm_map_cug_SubscriptionList,
8130       { "cug-SubscriptionList", "gsm_map.cug_SubscriptionList",
8131         FT_UINT32, BASE_DEC, NULL, 0,
8132         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList", HFILL }},
8133     { &hf_gsm_map_cug_SubscriptionList_item,
8134       { "Item", "gsm_map.cug_SubscriptionList_item",
8135         FT_NONE, BASE_NONE, NULL, 0,
8136         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList/_item", HFILL }},
8137     { &hf_gsm_map_cug_Index,
8138       { "cug-Index", "gsm_map.cug_Index",
8139         FT_UINT32, BASE_DEC, NULL, 0,
8140         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList/_item/cug-Index", HFILL }},
8141     { &hf_gsm_map_cug_Interlock,
8142       { "cug-Interlock", "gsm_map.cug_Interlock",
8143         FT_BYTES, BASE_HEX, NULL, 0,
8144         "", HFILL }},
8145     { &hf_gsm_map_intraCUG_Options,
8146       { "intraCUG-Options", "gsm_map.intraCUG_Options",
8147         FT_UINT32, BASE_DEC, VALS(IntraCUG_Options_vals), 0,
8148         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-SubscriptionList/_item/intraCUG-Options", HFILL }},
8149     { &hf_gsm_map_basicServiceGroupList,
8150       { "basicServiceGroupList", "gsm_map.basicServiceGroupList",
8151         FT_UINT32, BASE_DEC, NULL, 0,
8152         "", HFILL }},
8153     { &hf_gsm_map_cug_FeatureList,
8154       { "cug-FeatureList", "gsm_map.cug_FeatureList",
8155         FT_UINT32, BASE_DEC, NULL, 0,
8156         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList", HFILL }},
8157     { &hf_gsm_map_cug_FeatureList_item,
8158       { "Item", "gsm_map.cug_FeatureList_item",
8159         FT_NONE, BASE_NONE, NULL, 0,
8160         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList/_item", HFILL }},
8161     { &hf_gsm_map_basicService,
8162       { "basicService", "gsm_map.basicService",
8163         FT_UINT32, BASE_DEC, VALS(BasicService_vals), 0,
8164         "", HFILL }},
8165     { &hf_gsm_map_preferentialCUG_Indicator,
8166       { "preferentialCUG-Indicator", "gsm_map.preferentialCUG_Indicator",
8167         FT_UINT32, BASE_DEC, NULL, 0,
8168         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList/_item/preferentialCUG-Indicator", HFILL }},
8169     { &hf_gsm_map_interCUG_Restrictions,
8170       { "interCUG-Restrictions", "gsm_map.interCUG_Restrictions",
8171         FT_BYTES, BASE_HEX, NULL, 0,
8172         "InsertSubscriberDataArg/provisionedSS/_item/cug-Info/cug-FeatureList/_item/interCUG-Restrictions", HFILL }},
8173     { &hf_gsm_map_ss_Data2,
8174       { "ss-Data2", "gsm_map.ss_Data2",
8175         FT_NONE, BASE_NONE, NULL, 0,
8176         "InsertSubscriberDataArg/provisionedSS/_item/ss-Data2", HFILL }},
8177     { &hf_gsm_map_ss_Code,
8178       { "ss-Code", "gsm_map.ss_Code",
8179         FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
8180         "", HFILL }},
8181     { &hf_gsm_map_ss_Status,
8182       { "ss-Status", "gsm_map.ss_Status",
8183         FT_BYTES, BASE_HEX, NULL, 0,
8184         "", HFILL }},
8185     { &hf_gsm_map_ss_SubscriptionOption,
8186       { "ss-SubscriptionOption", "gsm_map.ss_SubscriptionOption",
8187         FT_UINT32, BASE_DEC, VALS(Ss_SubscriptionOption_vals), 0,
8188         "", HFILL }},
8189     { &hf_gsm_map_emlpp_Info,
8190       { "emlpp-Info", "gsm_map.emlpp_Info",
8191         FT_NONE, BASE_NONE, NULL, 0,
8192         "InsertSubscriberDataArg/provisionedSS/_item/emlpp-Info", HFILL }},
8193     { &hf_gsm_map_maximumentitledPriority,
8194       { "maximumentitledPriority", "gsm_map.maximumentitledPriority",
8195         FT_UINT32, BASE_DEC, NULL, 0,
8196         "InsertSubscriberDataArg/provisionedSS/_item/emlpp-Info/maximumentitledPriority", HFILL }},
8197     { &hf_gsm_map_defaultPriority,
8198       { "defaultPriority", "gsm_map.defaultPriority",
8199         FT_UINT32, BASE_DEC, NULL, 0,
8200         "", HFILL }},
8201     { &hf_gsm_map_odb_Data,
8202       { "odb-Data", "gsm_map.odb_Data",
8203         FT_NONE, BASE_NONE, NULL, 0,
8204         "InsertSubscriberDataArg/odb-Data", HFILL }},
8205     { &hf_gsm_map_odb_GeneralData,
8206       { "odb-GeneralData", "gsm_map.odb_GeneralData",
8207         FT_BYTES, BASE_HEX, NULL, 0,
8208         "", HFILL }},
8209     { &hf_gsm_map_odb_HPLMN_Data,
8210       { "odb-HPLMN-Data", "gsm_map.odb_HPLMN_Data",
8211         FT_BYTES, BASE_HEX, NULL, 0,
8212         "InsertSubscriberDataArg/odb-Data/odb-HPLMN-Data", HFILL }},
8213     { &hf_gsm_map_roamingRestrictionDueToUnsupportedFeature,
8214       { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.roamingRestrictionDueToUnsupportedFeature",
8215         FT_NONE, BASE_NONE, NULL, 0,
8216         "", HFILL }},
8217     { &hf_gsm_map_regionalSubscriptionData,
8218       { "regionalSubscriptionData", "gsm_map.regionalSubscriptionData",
8219         FT_UINT32, BASE_DEC, NULL, 0,
8220         "InsertSubscriberDataArg/regionalSubscriptionData", HFILL }},
8221     { &hf_gsm_map_regionalSubscriptionData_item,
8222       { "Item", "gsm_map.regionalSubscriptionData_item",
8223         FT_BYTES, BASE_HEX, NULL, 0,
8224         "InsertSubscriberDataArg/regionalSubscriptionData/_item", HFILL }},
8225     { &hf_gsm_map_vbsSubscriptionData,
8226       { "vbsSubscriptionData", "gsm_map.vbsSubscriptionData",
8227         FT_UINT32, BASE_DEC, NULL, 0,
8228         "InsertSubscriberDataArg/vbsSubscriptionData", HFILL }},
8229     { &hf_gsm_map_vbsSubscriptionData_item,
8230       { "Item", "gsm_map.vbsSubscriptionData_item",
8231         FT_NONE, BASE_NONE, NULL, 0,
8232         "InsertSubscriberDataArg/vbsSubscriptionData/_item", HFILL }},
8233     { &hf_gsm_map_groupid,
8234       { "groupid", "gsm_map.groupid",
8235         FT_BYTES, BASE_HEX, NULL, 0,
8236         "InsertSubscriberDataArg/vbsSubscriptionData/_item/groupid", HFILL }},
8237     { &hf_gsm_map_broadcastInitEntitlement,
8238       { "broadcastInitEntitlement", "gsm_map.broadcastInitEntitlement",
8239         FT_NONE, BASE_NONE, NULL, 0,
8240         "InsertSubscriberDataArg/vbsSubscriptionData/_item/broadcastInitEntitlement", HFILL }},
8241     { &hf_gsm_map_vgcsSubscriptionData,
8242       { "vgcsSubscriptionData", "gsm_map.vgcsSubscriptionData",
8243         FT_UINT32, BASE_DEC, NULL, 0,
8244         "InsertSubscriberDataArg/vgcsSubscriptionData", HFILL }},
8245     { &hf_gsm_map_vgcsSubscriptionData_item,
8246       { "Item", "gsm_map.vgcsSubscriptionData_item",
8247         FT_NONE, BASE_NONE, NULL, 0,
8248         "InsertSubscriberDataArg/vgcsSubscriptionData/_item", HFILL }},
8249     { &hf_gsm_map_groupId,
8250       { "groupId", "gsm_map.groupId",
8251         FT_BYTES, BASE_HEX, NULL, 0,
8252         "InsertSubscriberDataArg/vgcsSubscriptionData/_item/groupId", HFILL }},
8253     { &hf_gsm_map_vlrCamelSubscriptionInfo,
8254       { "vlrCamelSubscriptionInfo", "gsm_map.vlrCamelSubscriptionInfo",
8255         FT_NONE, BASE_NONE, NULL, 0,
8256         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo", HFILL }},
8257     { &hf_gsm_map_o_CSI,
8258       { "o-CSI", "gsm_map.o_CSI",
8259         FT_NONE, BASE_NONE, NULL, 0,
8260         "", HFILL }},
8261     { &hf_gsm_map_ss_CSI,
8262       { "ss-CSI", "gsm_map.ss_CSI",
8263         FT_NONE, BASE_NONE, NULL, 0,
8264         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo/ss-CSI", HFILL }},
8265     { &hf_gsm_map_ss_CamelData,
8266       { "ss-CamelData", "gsm_map.ss_CamelData",
8267         FT_NONE, BASE_NONE, NULL, 0,
8268         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo/ss-CSI/ss-CamelData", HFILL }},
8269     { &hf_gsm_map_ss_EventList,
8270       { "ss-EventList", "gsm_map.ss_EventList",
8271         FT_UINT32, BASE_DEC, NULL, 0,
8272         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo/ss-CSI/ss-CamelData/ss-EventList", HFILL }},
8273     { &hf_gsm_map_ss_EventList_item,
8274       { "Item", "gsm_map.ss_EventList_item",
8275         FT_BYTES, BASE_HEX, NULL, 0,
8276         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo/ss-CSI/ss-CamelData/ss-EventList/_item", HFILL }},
8277     { &hf_gsm_map_gsmSCF_Address,
8278       { "gsmSCF-Address", "gsm_map.gsmSCF_Address",
8279         FT_BYTES, BASE_HEX, NULL, 0,
8280         "", HFILL }},
8281     { &hf_gsm_map_o_BcsmCamelTDP_CriteriaList,
8282       { "o-BcsmCamelTDP-CriteriaList", "gsm_map.o_BcsmCamelTDP_CriteriaList",
8283         FT_UINT32, BASE_DEC, NULL, 0,
8284         "", HFILL }},
8285     { &hf_gsm_map_tif_CSI,
8286       { "tif-CSI", "gsm_map.tif_CSI",
8287         FT_NONE, BASE_NONE, NULL, 0,
8288         "InsertSubscriberDataArg/vlrCamelSubscriptionInfo/tif-CSI", HFILL }},
8289     { &hf_gsm_map_naea_PreferredCI,
8290       { "naea-PreferredCI", "gsm_map.naea_PreferredCI",
8291         FT_NONE, BASE_NONE, NULL, 0,
8292         "", HFILL }},
8293     { &hf_gsm_map_gprsSubscriptionData,
8294       { "gprsSubscriptionData", "gsm_map.gprsSubscriptionData",
8295         FT_NONE, BASE_NONE, NULL, 0,
8296         "InsertSubscriberDataArg/gprsSubscriptionData", HFILL }},
8297     { &hf_gsm_map_completeDataListIncluded,
8298       { "completeDataListIncluded", "gsm_map.completeDataListIncluded",
8299         FT_NONE, BASE_NONE, NULL, 0,
8300         "", HFILL }},
8301     { &hf_gsm_map_gprsDataList,
8302       { "gprsDataList", "gsm_map.gprsDataList",
8303         FT_UINT32, BASE_DEC, NULL, 0,
8304         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList", HFILL }},
8305     { &hf_gsm_map_gprsDataList_item,
8306       { "Item", "gsm_map.gprsDataList_item",
8307         FT_NONE, BASE_NONE, NULL, 0,
8308         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item", HFILL }},
8309     { &hf_gsm_map_pdp_ContextId,
8310       { "pdp-ContextId", "gsm_map.pdp_ContextId",
8311         FT_UINT32, BASE_DEC, NULL, 0,
8312         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/pdp-ContextId", HFILL }},
8313     { &hf_gsm_map_pdp_Type,
8314       { "pdp-Type", "gsm_map.pdp_Type",
8315         FT_BYTES, BASE_HEX, NULL, 0,
8316         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/pdp-Type", HFILL }},
8317     { &hf_gsm_map_pdp_Address,
8318       { "pdp-Address", "gsm_map.pdp_Address",
8319         FT_BYTES, BASE_HEX, NULL, 0,
8320         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/pdp-Address", HFILL }},
8321     { &hf_gsm_map_qos_Subscribed,
8322       { "qos-Subscribed", "gsm_map.qos_Subscribed",
8323         FT_BYTES, BASE_HEX, NULL, 0,
8324         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/qos-Subscribed", HFILL }},
8325     { &hf_gsm_map_vplmnAddressAllowed,
8326       { "vplmnAddressAllowed", "gsm_map.vplmnAddressAllowed",
8327         FT_NONE, BASE_NONE, NULL, 0,
8328         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/vplmnAddressAllowed", HFILL }},
8329     { &hf_gsm_map_apn,
8330       { "apn", "gsm_map.apn",
8331         FT_BYTES, BASE_HEX, NULL, 0,
8332         "InsertSubscriberDataArg/gprsSubscriptionData/gprsDataList/_item/apn", HFILL }},
8333     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsupportedFeature,
8334       { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsupportedFeature",
8335         FT_NONE, BASE_NONE, NULL, 0,
8336         "InsertSubscriberDataArg/roamingRestrictedInSgsnDueToUnsupportedFeature", HFILL }},
8337     { &hf_gsm_map_networkAccessMode,
8338       { "networkAccessMode", "gsm_map.networkAccessMode",
8339         FT_UINT32, BASE_DEC, VALS(T_networkAccessMode_vals), 0,
8340         "InsertSubscriberDataArg/networkAccessMode", HFILL }},
8341     { &hf_gsm_map_lsaInformation,
8342       { "lsaInformation", "gsm_map.lsaInformation",
8343         FT_NONE, BASE_NONE, NULL, 0,
8344         "InsertSubscriberDataArg/lsaInformation", HFILL }},
8345     { &hf_gsm_map_lsaOnlyAccessIndicator,
8346       { "lsaOnlyAccessIndicator", "gsm_map.lsaOnlyAccessIndicator",
8347         FT_UINT32, BASE_DEC, VALS(T_lsaOnlyAccessIndicator_vals), 0,
8348         "InsertSubscriberDataArg/lsaInformation/lsaOnlyAccessIndicator", HFILL }},
8349     { &hf_gsm_map_lsaDataList,
8350       { "lsaDataList", "gsm_map.lsaDataList",
8351         FT_UINT32, BASE_DEC, NULL, 0,
8352         "InsertSubscriberDataArg/lsaInformation/lsaDataList", HFILL }},
8353     { &hf_gsm_map_lsaDataList_item,
8354       { "Item", "gsm_map.lsaDataList_item",
8355         FT_NONE, BASE_NONE, NULL, 0,
8356         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item", HFILL }},
8357     { &hf_gsm_map_lsaIdentity,
8358       { "lsaIdentity", "gsm_map.lsaIdentity",
8359         FT_BYTES, BASE_HEX, NULL, 0,
8360         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item/lsaIdentity", HFILL }},
8361     { &hf_gsm_map_lsaAttributes,
8362       { "lsaAttributes", "gsm_map.lsaAttributes",
8363         FT_BYTES, BASE_HEX, NULL, 0,
8364         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item/lsaAttributes", HFILL }},
8365     { &hf_gsm_map_lsaActiveModeIndicator,
8366       { "lsaActiveModeIndicator", "gsm_map.lsaActiveModeIndicator",
8367         FT_NONE, BASE_NONE, NULL, 0,
8368         "InsertSubscriberDataArg/lsaInformation/lsaDataList/_item/lsaActiveModeIndicator", HFILL }},
8369     { &hf_gsm_map_lmu_Indicator,
8370       { "lmu-Indicator", "gsm_map.lmu_Indicator",
8371         FT_NONE, BASE_NONE, NULL, 0,
8372         "InsertSubscriberDataArg/lmu-Indicator", HFILL }},
8373     { &hf_gsm_map_lcsInformation,
8374       { "lcsInformation", "gsm_map.lcsInformation",
8375         FT_NONE, BASE_NONE, NULL, 0,
8376         "InsertSubscriberDataArg/lcsInformation", HFILL }},
8377     { &hf_gsm_map_gmlc_List,
8378       { "gmlc-List", "gsm_map.gmlc_List",
8379         FT_UINT32, BASE_DEC, NULL, 0,
8380         "InsertSubscriberDataArg/lcsInformation/gmlc-List", HFILL }},
8381     { &hf_gsm_map_gmlc_List_item,
8382       { "Item", "gsm_map.gmlc_List_item",
8383         FT_BYTES, BASE_HEX, NULL, 0,
8384         "InsertSubscriberDataArg/lcsInformation/gmlc-List/_item", HFILL }},
8385     { &hf_gsm_map_lcs_PrivacyExceptionList,
8386       { "lcs-PrivacyExceptionList", "gsm_map.lcs_PrivacyExceptionList",
8387         FT_UINT32, BASE_DEC, NULL, 0,
8388         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList", HFILL }},
8389     { &hf_gsm_map_lcs_PrivacyExceptionList_item,
8390       { "Item", "gsm_map.lcs_PrivacyExceptionList_item",
8391         FT_NONE, BASE_NONE, NULL, 0,
8392         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item", HFILL }},
8393     { &hf_gsm_map_notificationToMSUser,
8394       { "notificationToMSUser", "gsm_map.notificationToMSUser",
8395         FT_UINT32, BASE_DEC, VALS(NotificationToMSUser_vals), 0,
8396         "", HFILL }},
8397     { &hf_gsm_map_externalClientList,
8398       { "externalClientList", "gsm_map.externalClientList",
8399         FT_UINT32, BASE_DEC, NULL, 0,
8400         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList", HFILL }},
8401     { &hf_gsm_map_externalClientList_item,
8402       { "Item", "gsm_map.externalClientList_item",
8403         FT_NONE, BASE_NONE, NULL, 0,
8404         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList/_item", HFILL }},
8405     { &hf_gsm_map_clientIdentity,
8406       { "clientIdentity", "gsm_map.clientIdentity",
8407         FT_NONE, BASE_NONE, NULL, 0,
8408         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList/_item/clientIdentity", HFILL }},
8409     { &hf_gsm_map_externalAddress,
8410       { "externalAddress", "gsm_map.externalAddress",
8411         FT_BYTES, BASE_HEX, NULL, 0,
8412         "", HFILL }},
8413     { &hf_gsm_map_gmlc_Restriction,
8414       { "gmlc-Restriction", "gsm_map.gmlc_Restriction",
8415         FT_UINT32, BASE_DEC, VALS(T_gmlc_Restriction_vals), 0,
8416         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/externalClientList/_item/gmlc-Restriction", HFILL }},
8417     { &hf_gsm_map_plmnClientList,
8418       { "plmnClientList", "gsm_map.plmnClientList",
8419         FT_UINT32, BASE_DEC, NULL, 0,
8420         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/plmnClientList", HFILL }},
8421     { &hf_gsm_map_plmnClientList_item,
8422       { "Item", "gsm_map.plmnClientList_item",
8423         FT_UINT32, BASE_DEC, VALS(T_plmnClientList_item_vals), 0,
8424         "InsertSubscriberDataArg/lcsInformation/lcs-PrivacyExceptionList/_item/plmnClientList/_item", HFILL }},
8425     { &hf_gsm_map_molr_List,
8426       { "molr-List", "gsm_map.molr_List",
8427         FT_UINT32, BASE_DEC, NULL, 0,
8428         "InsertSubscriberDataArg/lcsInformation/molr-List", HFILL }},
8429     { &hf_gsm_map_molr_List_item,
8430       { "Item", "gsm_map.molr_List_item",
8431         FT_NONE, BASE_NONE, NULL, 0,
8432         "InsertSubscriberDataArg/lcsInformation/molr-List/_item", HFILL }},
8433     { &hf_gsm_map_ss_List,
8434       { "ss-List", "gsm_map.ss_List",
8435         FT_UINT32, BASE_DEC, NULL, 0,
8436         "", HFILL }},
8437     { &hf_gsm_map_ss_List_item,
8438       { "Item", "gsm_map.ss_List_item",
8439         FT_BYTES, BASE_HEX, NULL, 0,
8440         "", HFILL }},
8441     { &hf_gsm_map_regionalSubscriptionResponse,
8442       { "regionalSubscriptionResponse", "gsm_map.regionalSubscriptionResponse",
8443         FT_UINT32, BASE_DEC, VALS(RegionalSubscriptionResponse_vals), 0,
8444         "", HFILL }},
8445     { &hf_gsm_map_callBarringFeatureList,
8446       { "callBarringFeatureList", "gsm_map.callBarringFeatureList",
8447         FT_UINT32, BASE_DEC, NULL, 0,
8448         "CallBarringInfo/callBarringFeatureList", HFILL }},
8449     { &hf_gsm_map_callBarringFeatureList_item,
8450       { "Item", "gsm_map.callBarringFeatureList_item",
8451         FT_NONE, BASE_NONE, NULL, 0,
8452         "CallBarringInfo/callBarringFeatureList/_item", HFILL }},
8453     { &hf_gsm_map_forwardedToNumber,
8454       { "forwardedToNumber", "gsm_map.forwardedToNumber",
8455         FT_BYTES, BASE_HEX, NULL, 0,
8456         "", HFILL }},
8457     { &hf_gsm_map_forwardedToSubaddress,
8458       { "forwardedToSubaddress", "gsm_map.forwardedToSubaddress",
8459         FT_BYTES, BASE_HEX, NULL, 0,
8460         "", HFILL }},
8461     { &hf_gsm_map_forwardingOptions,
8462       { "forwardingOptions", "gsm_map.forwardingOptions",
8463         FT_BYTES, BASE_HEX, NULL, 0,
8464         "", HFILL }},
8465     { &hf_gsm_map_noReplyConditionTime,
8466       { "noReplyConditionTime", "gsm_map.noReplyConditionTime",
8467         FT_INT32, BASE_DEC, NULL, 0,
8468         "", HFILL }},
8469     { &hf_gsm_map_matchType,
8470       { "matchType", "gsm_map.matchType",
8471         FT_UINT32, BASE_DEC, VALS(MatchType_vals), 0,
8472         "DestinationNumberCriteria/matchType", HFILL }},
8473     { &hf_gsm_map_destinationNumberList,
8474       { "destinationNumberList", "gsm_map.destinationNumberList",
8475         FT_UINT32, BASE_DEC, NULL, 0,
8476         "DestinationNumberCriteria/destinationNumberList", HFILL }},
8477     { &hf_gsm_map_destinationNumberList_item,
8478       { "Item", "gsm_map.destinationNumberList_item",
8479         FT_BYTES, BASE_HEX, NULL, 0,
8480         "DestinationNumberCriteria/destinationNumberList/_item", HFILL }},
8481     { &hf_gsm_map_destinationNumberLengthList,
8482       { "destinationNumberLengthList", "gsm_map.destinationNumberLengthList",
8483         FT_UINT32, BASE_DEC, NULL, 0,
8484         "DestinationNumberCriteria/destinationNumberLengthList", HFILL }},
8485     { &hf_gsm_map_destinationNumberLengthList_item,
8486       { "Item", "gsm_map.destinationNumberLengthList_item",
8487         FT_UINT32, BASE_DEC, NULL, 0,
8488         "DestinationNumberCriteria/destinationNumberLengthList/_item", HFILL }},
8489     { &hf_gsm_map_forwardingFeatureList,
8490       { "forwardingFeatureList", "gsm_map.forwardingFeatureList",
8491         FT_UINT32, BASE_DEC, NULL, 0,
8492         "", HFILL }},
8493     { &hf_gsm_map_forwardingFeatureList_item,
8494       { "Item", "gsm_map.forwardingFeatureList_item",
8495         FT_NONE, BASE_NONE, NULL, 0,
8496         "", HFILL }},
8497     { &hf_gsm_map_naea_PreferredCIC,
8498       { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC",
8499         FT_BYTES, BASE_HEX, NULL, 0,
8500         "Naea-PreferredCI/naea-PreferredCIC", HFILL }},
8501     { &hf_gsm_map_O_BcsmCamelTDP_CriteriaList_item,
8502       { "Item", "gsm_map.O_BcsmCamelTDP_CriteriaList_item",
8503         FT_NONE, BASE_NONE, NULL, 0,
8504         "O-BcsmCamelTDP-CriteriaList/_item", HFILL }},
8505     { &hf_gsm_map_o_BcsmTriggerDetectionPoint,
8506       { "o-BcsmTriggerDetectionPoint", "gsm_map.o_BcsmTriggerDetectionPoint",
8507         FT_UINT32, BASE_DEC, VALS(BcsmTriggerDetectionPoint_vals), 0,
8508         "O-BcsmCamelTDP-CriteriaList/_item/o-BcsmTriggerDetectionPoint", HFILL }},
8509     { &hf_gsm_map_destinationNumberCriteria,
8510       { "destinationNumberCriteria", "gsm_map.destinationNumberCriteria",
8511         FT_NONE, BASE_NONE, NULL, 0,
8512         "O-BcsmCamelTDP-CriteriaList/_item/destinationNumberCriteria", HFILL }},
8513     { &hf_gsm_map_basicServiceCriteria,
8514       { "basicServiceCriteria", "gsm_map.basicServiceCriteria",
8515         FT_UINT32, BASE_DEC, NULL, 0,
8516         "O-BcsmCamelTDP-CriteriaList/_item/basicServiceCriteria", HFILL }},
8517     { &hf_gsm_map_callTypeCriteria,
8518       { "callTypeCriteria", "gsm_map.callTypeCriteria",
8519         FT_UINT32, BASE_DEC, VALS(CallTypeCriteria_vals), 0,
8520         "O-BcsmCamelTDP-CriteriaList/_item/callTypeCriteria", HFILL }},
8521     { &hf_gsm_map_cliRestrictionOption,
8522       { "cliRestrictionOption", "gsm_map.cliRestrictionOption",
8523         FT_UINT32, BASE_DEC, VALS(CliRestrictionOption_vals), 0,
8524         "", HFILL }},
8525     { &hf_gsm_map_overrideCategory,
8526       { "overrideCategory", "gsm_map.overrideCategory",
8527         FT_UINT32, BASE_DEC, VALS(OverrideCategory_vals), 0,
8528         "Ss-SubscriptionOption/overrideCategory", HFILL }},
8529     { &hf_gsm_map_basicServiceList,
8530       { "basicServiceList", "gsm_map.basicServiceList",
8531         FT_UINT32, BASE_DEC, NULL, 0,
8532         "DeleteSubscriberDataArg/basicServiceList", HFILL }},
8533     { &hf_gsm_map_regionalSubscriptionIdentifier,
8534       { "regionalSubscriptionIdentifier", "gsm_map.regionalSubscriptionIdentifier",
8535         FT_BYTES, BASE_HEX, NULL, 0,
8536         "DeleteSubscriberDataArg/regionalSubscriptionIdentifier", HFILL }},
8537     { &hf_gsm_map_vbsGroupIndication,
8538       { "vbsGroupIndication", "gsm_map.vbsGroupIndication",
8539         FT_NONE, BASE_NONE, NULL, 0,
8540         "DeleteSubscriberDataArg/vbsGroupIndication", HFILL }},
8541     { &hf_gsm_map_vgcsGroupIndication,
8542       { "vgcsGroupIndication", "gsm_map.vgcsGroupIndication",
8543         FT_NONE, BASE_NONE, NULL, 0,
8544         "DeleteSubscriberDataArg/vgcsGroupIndication", HFILL }},
8545     { &hf_gsm_map_camelSubscriptionInfoWithdraw,
8546       { "camelSubscriptionInfoWithdraw", "gsm_map.camelSubscriptionInfoWithdraw",
8547         FT_NONE, BASE_NONE, NULL, 0,
8548         "DeleteSubscriberDataArg/camelSubscriptionInfoWithdraw", HFILL }},
8549     { &hf_gsm_map_gprsSubscriptionDataWithdraw,
8550       { "gprsSubscriptionDataWithdraw", "gsm_map.gprsSubscriptionDataWithdraw",
8551         FT_UINT32, BASE_DEC, VALS(T_gprsSubscriptionDataWithdraw_vals), 0,
8552         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw", HFILL }},
8553     { &hf_gsm_map_allGPRSData,
8554       { "allGPRSData", "gsm_map.allGPRSData",
8555         FT_NONE, BASE_NONE, NULL, 0,
8556         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw/allGPRSData", HFILL }},
8557     { &hf_gsm_map_contextIdList,
8558       { "contextIdList", "gsm_map.contextIdList",
8559         FT_UINT32, BASE_DEC, NULL, 0,
8560         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw/contextIdList", HFILL }},
8561     { &hf_gsm_map_contextIdList_item,
8562       { "Item", "gsm_map.contextIdList_item",
8563         FT_UINT32, BASE_DEC, NULL, 0,
8564         "DeleteSubscriberDataArg/gprsSubscriptionDataWithdraw/contextIdList/_item", HFILL }},
8565     { &hf_gsm_map_roamingRestrictedInSgsnDueToUnsuppportedFeature,
8566       { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.roamingRestrictedInSgsnDueToUnsuppportedFeature",
8567         FT_NONE, BASE_NONE, NULL, 0,
8568         "DeleteSubscriberDataArg/roamingRestrictedInSgsnDueToUnsuppportedFeature", HFILL }},
8569     { &hf_gsm_map_lsaInformationWithdraw,
8570       { "lsaInformationWithdraw", "gsm_map.lsaInformationWithdraw",
8571         FT_UINT32, BASE_DEC, VALS(T_lsaInformationWithdraw_vals), 0,
8572         "DeleteSubscriberDataArg/lsaInformationWithdraw", HFILL }},
8573     { &hf_gsm_map_allLSAData,
8574       { "allLSAData", "gsm_map.allLSAData",
8575         FT_NONE, BASE_NONE, NULL, 0,
8576         "DeleteSubscriberDataArg/lsaInformationWithdraw/allLSAData", HFILL }},
8577     { &hf_gsm_map_lsaIdentityList,
8578       { "lsaIdentityList", "gsm_map.lsaIdentityList",
8579         FT_UINT32, BASE_DEC, NULL, 0,
8580         "DeleteSubscriberDataArg/lsaInformationWithdraw/lsaIdentityList", HFILL }},
8581     { &hf_gsm_map_lsaIdentityList_item,
8582       { "Item", "gsm_map.lsaIdentityList_item",
8583         FT_BYTES, BASE_HEX, NULL, 0,
8584         "DeleteSubscriberDataArg/lsaInformationWithdraw/lsaIdentityList/_item", HFILL }},
8585     { &hf_gsm_map_gmlc_ListWithdraw,
8586       { "gmlc-ListWithdraw", "gsm_map.gmlc_ListWithdraw",
8587         FT_NONE, BASE_NONE, NULL, 0,
8588         "DeleteSubscriberDataArg/gmlc-ListWithdraw", HFILL }},
8589     { &hf_gsm_map_hlr_List,
8590       { "hlr-List", "gsm_map.hlr_List",
8591         FT_UINT32, BASE_DEC, NULL, 0,
8592         "ResetArg/hlr-List", HFILL }},
8593     { &hf_gsm_map_hlr_List_item,
8594       { "Item", "gsm_map.hlr_List_item",
8595         FT_BYTES, BASE_HEX, NULL, 0,
8596         "ResetArg/hlr-List/_item", HFILL }},
8597     { &hf_gsm_map_msNotReachable,
8598       { "msNotReachable", "gsm_map.msNotReachable",
8599         FT_NONE, BASE_NONE, NULL, 0,
8600         "RestoreDataRes/msNotReachable", HFILL }},
8601     { &hf_gsm_map_traceReference,
8602       { "traceReference", "gsm_map.traceReference",
8603         FT_BYTES, BASE_HEX, NULL, 0,
8604         "", HFILL }},
8605     { &hf_gsm_map_traceType,
8606       { "traceType", "gsm_map.traceType",
8607         FT_UINT32, BASE_DEC, NULL, 0,
8608         "ActivateTraceModeArg/traceType", HFILL }},
8609     { &hf_gsm_map_omc_Id,
8610       { "omc-Id", "gsm_map.omc_Id",
8611         FT_BYTES, BASE_HEX, NULL, 0,
8612         "ActivateTraceModeArg/omc-Id", HFILL }},
8613     { &hf_gsm_map_cug_CheckInfo,
8614       { "cug-CheckInfo", "gsm_map.cug_CheckInfo",
8615         FT_NONE, BASE_NONE, NULL, 0,
8616         "", HFILL }},
8617     { &hf_gsm_map_numberOfForwarding,
8618       { "numberOfForwarding", "gsm_map.numberOfForwarding",
8619         FT_UINT32, BASE_DEC, NULL, 0,
8620         "SendRoutingInfoArg/numberOfForwarding", HFILL }},
8621     { &hf_gsm_map_interrogationType,
8622       { "interrogationType", "gsm_map.interrogationType",
8623         FT_UINT32, BASE_DEC, VALS(T_interrogationType_vals), 0,
8624         "SendRoutingInfoArg/interrogationType", HFILL }},
8625     { &hf_gsm_map_or_Interrogation,
8626       { "or-Interrogation", "gsm_map.or_Interrogation",
8627         FT_NONE, BASE_NONE, NULL, 0,
8628         "", HFILL }},
8629     { &hf_gsm_map_or_Capability,
8630       { "or-Capability", "gsm_map.or_Capability",
8631         FT_UINT32, BASE_DEC, NULL, 0,
8632         "SendRoutingInfoArg/or-Capability", HFILL }},
8633     { &hf_gsm_map_gmsc_Address,
8634       { "gmsc-Address", "gsm_map.gmsc_Address",
8635         FT_BYTES, BASE_HEX, NULL, 0,
8636         "", HFILL }},
8637     { &hf_gsm_map_callReferenceNumber,
8638       { "callReferenceNumber", "gsm_map.callReferenceNumber",
8639         FT_BYTES, BASE_HEX, NULL, 0,
8640         "", HFILL }},
8641     { &hf_gsm_map_forwardingReason,
8642       { "forwardingReason", "gsm_map.forwardingReason",
8643         FT_UINT32, BASE_DEC, VALS(T_forwardingReason_vals), 0,
8644         "SendRoutingInfoArg/forwardingReason", HFILL }},
8645     { &hf_gsm_map_basicServiceGroup,
8646       { "basicServiceGroup", "gsm_map.basicServiceGroup",
8647         FT_UINT32, BASE_DEC, VALS(BasicService_vals), 0,
8648         "", HFILL }},
8649     { &hf_gsm_map_networkSignalInfo,
8650       { "networkSignalInfo", "gsm_map.networkSignalInfo",
8651         FT_NONE, BASE_NONE, NULL, 0,
8652         "", HFILL }},
8653     { &hf_gsm_map_camelInfo,
8654       { "camelInfo", "gsm_map.camelInfo",
8655         FT_NONE, BASE_NONE, NULL, 0,
8656         "SendRoutingInfoArg/camelInfo", HFILL }},
8657     { &hf_gsm_map_suppress_T_CSI,
8658       { "suppress-T-CSI", "gsm_map.suppress_T_CSI",
8659         FT_NONE, BASE_NONE, NULL, 0,
8660         "SendRoutingInfoArg/camelInfo/suppress-T-CSI", HFILL }},
8661     { &hf_gsm_map_suppressionOfAnnouncement,
8662       { "suppressionOfAnnouncement", "gsm_map.suppressionOfAnnouncement",
8663         FT_NONE, BASE_NONE, NULL, 0,
8664         "", HFILL }},
8665     { &hf_gsm_map_alertingPattern,
8666       { "alertingPattern", "gsm_map.alertingPattern",
8667         FT_BYTES, BASE_HEX, NULL, 0,
8668         "", HFILL }},
8669     { &hf_gsm_map_ccbs_Call,
8670       { "ccbs-Call", "gsm_map.ccbs_Call",
8671         FT_NONE, BASE_NONE, NULL, 0,
8672         "", HFILL }},
8673     { &hf_gsm_map_supportedCCBS_Phase,
8674       { "supportedCCBS-Phase", "gsm_map.supportedCCBS_Phase",
8675         FT_UINT32, BASE_DEC, NULL, 0,
8676         "SendRoutingInfoArg/supportedCCBS-Phase", HFILL }},
8677     { &hf_gsm_map_additionalSignalInfo,
8678       { "additionalSignalInfo", "gsm_map.additionalSignalInfo",
8679         FT_NONE, BASE_NONE, NULL, 0,
8680         "", HFILL }},
8681     { &hf_gsm_map_extendedRoutingInfo,
8682       { "extendedRoutingInfo", "gsm_map.extendedRoutingInfo",
8683         FT_UINT32, BASE_DEC, VALS(T_extendedRoutingInfo_vals), 0,
8684         "SendRoutingInfoRes/extendedRoutingInfo", HFILL }},
8685     { &hf_gsm_map_routingInfo,
8686       { "routingInfo", "gsm_map.routingInfo",
8687         FT_UINT32, BASE_DEC, VALS(T_routingInfo_vals), 0,
8688         "SendRoutingInfoRes/extendedRoutingInfo/routingInfo", HFILL }},
8689     { &hf_gsm_map_roamingNumber,
8690       { "roamingNumber", "gsm_map.roamingNumber",
8691         FT_BYTES, BASE_HEX, NULL, 0,
8692         "", HFILL }},
8693     { &hf_gsm_map_forwardingData,
8694       { "forwardingData", "gsm_map.forwardingData",
8695         FT_NONE, BASE_NONE, NULL, 0,
8696         "", HFILL }},
8697     { &hf_gsm_map_camelRoutingInfo,
8698       { "camelRoutingInfo", "gsm_map.camelRoutingInfo",
8699         FT_NONE, BASE_NONE, NULL, 0,
8700         "SendRoutingInfoRes/extendedRoutingInfo/camelRoutingInfo", HFILL }},
8701     { &hf_gsm_map_gmscCamelSubscriptionInfo,
8702       { "gmscCamelSubscriptionInfo", "gsm_map.gmscCamelSubscriptionInfo",
8703         FT_NONE, BASE_NONE, NULL, 0,
8704         "SendRoutingInfoRes/extendedRoutingInfo/camelRoutingInfo/gmscCamelSubscriptionInfo", HFILL }},
8705     { &hf_gsm_map_t_CSI,
8706       { "t-CSI", "gsm_map.t_CSI",
8707         FT_NONE, BASE_NONE, NULL, 0,
8708         "SendRoutingInfoRes/extendedRoutingInfo/camelRoutingInfo/gmscCamelSubscriptionInfo/t-CSI", HFILL }},
8709     { &hf_gsm_map_t_BcsmCamelTDPDataList,
8710       { "t-BcsmCamelTDPDataList", "gsm_map.t_BcsmCamelTDPDataList",
8711         FT_UINT32, BASE_DEC, NULL, 0,
8712         "SendRoutingInfoRes/extendedRoutingInfo/camelRoutingInfo/gmscCamelSubscriptionInfo/t-CSI/t-BcsmCamelTDPDataList", HFILL }},
8713     { &hf_gsm_map_cugSubscriptionFlag,
8714       { "cugSubscriptionFlag", "gsm_map.cugSubscriptionFlag",
8715         FT_NONE, BASE_NONE, NULL, 0,
8716         "SendRoutingInfoRes/cugSubscriptionFlag", HFILL }},
8717     { &hf_gsm_map_subscriberInfo,
8718       { "subscriberInfo", "gsm_map.subscriberInfo",
8719         FT_NONE, BASE_NONE, NULL, 0,
8720         "", HFILL }},
8721     { &hf_gsm_map_forwardingInterrogationRequired,
8722       { "forwardingInterrogationRequired", "gsm_map.forwardingInterrogationRequired",
8723         FT_NONE, BASE_NONE, NULL, 0,
8724         "SendRoutingInfoRes/forwardingInterrogationRequired", HFILL }},
8725     { &hf_gsm_map_vmsc_Address,
8726       { "vmsc-Address", "gsm_map.vmsc_Address",
8727         FT_BYTES, BASE_HEX, NULL, 0,
8728         "SendRoutingInfoRes/vmsc-Address", HFILL }},
8729     { &hf_gsm_map_ccbs_Indicators,
8730       { "ccbs-Indicators", "gsm_map.ccbs_Indicators",
8731         FT_NONE, BASE_NONE, NULL, 0,
8732         "SendRoutingInfoRes/ccbs-Indicators", HFILL }},
8733     { &hf_gsm_map_ccbs_Possible,
8734       { "ccbs-Possible", "gsm_map.ccbs_Possible",
8735         FT_NONE, BASE_NONE, NULL, 0,
8736         "", HFILL }},
8737     { &hf_gsm_map_keepCCBS_CallIndicator,
8738       { "keepCCBS-CallIndicator", "gsm_map.keepCCBS_CallIndicator",
8739         FT_NONE, BASE_NONE, NULL, 0,
8740         "SendRoutingInfoRes/ccbs-Indicators/keepCCBS-CallIndicator", HFILL }},
8741     { &hf_gsm_map_numberPortabilityStatus,
8742       { "numberPortabilityStatus", "gsm_map.numberPortabilityStatus",
8743         FT_UINT32, BASE_DEC, VALS(T_numberPortabilityStatus_vals), 0,
8744         "SendRoutingInfoRes/numberPortabilityStatus", HFILL }},
8745     { &hf_gsm_map_assumedIdle,
8746       { "assumedIdle", "gsm_map.assumedIdle",
8747         FT_NONE, BASE_NONE, NULL, 0,
8748         "SubscriberState/assumedIdle", HFILL }},
8749     { &hf_gsm_map_camelBusy,
8750       { "camelBusy", "gsm_map.camelBusy",
8751         FT_NONE, BASE_NONE, NULL, 0,
8752         "SubscriberState/camelBusy", HFILL }},
8753     { &hf_gsm_map_notProvidedFromVLR,
8754       { "notProvidedFromVLR", "gsm_map.notProvidedFromVLR",
8755         FT_NONE, BASE_NONE, NULL, 0,
8756         "SubscriberState/notProvidedFromVLR", HFILL }},
8757     { &hf_gsm_map_ageOfLocationInformation,
8758       { "ageOfLocationInformation", "gsm_map.ageOfLocationInformation",
8759         FT_UINT32, BASE_DEC, NULL, 0,
8760         "LocationInformation/ageOfLocationInformation", HFILL }},
8761     { &hf_gsm_map_geographicalInformation,
8762       { "geographicalInformation", "gsm_map.geographicalInformation",
8763         FT_BYTES, BASE_HEX, NULL, 0,
8764         "LocationInformation/geographicalInformation", HFILL }},
8765     { &hf_gsm_map_vlr_number,
8766       { "vlr-number", "gsm_map.vlr_number",
8767         FT_BYTES, BASE_HEX, NULL, 0,
8768         "LocationInformation/vlr-number", HFILL }},
8769     { &hf_gsm_map_locationNumber,
8770       { "locationNumber", "gsm_map.locationNumber",
8771         FT_BYTES, BASE_HEX, NULL, 0,
8772         "LocationInformation/locationNumber", HFILL }},
8773     { &hf_gsm_map_cellIdOrLAI,
8774       { "cellIdOrLAI", "gsm_map.cellIdOrLAI",
8775         FT_UINT32, BASE_DEC, VALS(T_cellIdOrLAI_vals), 0,
8776         "LocationInformation/cellIdOrLAI", HFILL }},
8777     { &hf_gsm_map_cellIdFixedLength,
8778       { "cellIdFixedLength", "gsm_map.cellIdFixedLength",
8779         FT_BYTES, BASE_HEX, NULL, 0,
8780         "LocationInformation/cellIdOrLAI/cellIdFixedLength", HFILL }},
8781     { &hf_gsm_map_laiFixedLength,
8782       { "laiFixedLength", "gsm_map.laiFixedLength",
8783         FT_BYTES, BASE_HEX, NULL, 0,
8784         "LocationInformation/cellIdOrLAI/laiFixedLength", HFILL }},
8785     { &hf_gsm_map_locationInformation,
8786       { "locationInformation", "gsm_map.locationInformation",
8787         FT_NONE, BASE_NONE, NULL, 0,
8788         "SubscriberInfo/locationInformation", HFILL }},
8789     { &hf_gsm_map_subscriberState,
8790       { "subscriberState", "gsm_map.subscriberState",
8791         FT_UINT32, BASE_DEC, VALS(SubscriberState_vals), 0,
8792         "SubscriberInfo/subscriberState", HFILL }},
8793     { &hf_gsm_map_ext_ProtocolId,
8794       { "ext-ProtocolId", "gsm_map.ext_ProtocolId",
8795         FT_UINT32, BASE_DEC, VALS(T_ext_ProtocolId_vals), 0,
8796         "AdditionalSignalInfo/ext-ProtocolId", HFILL }},
8797     { &hf_gsm_map_cug_OutgoingAccess,
8798       { "cug-OutgoingAccess", "gsm_map.cug_OutgoingAccess",
8799         FT_NONE, BASE_NONE, NULL, 0,
8800         "Cug-CheckInfo/cug-OutgoingAccess", HFILL }},
8801     { &hf_gsm_map_gsm_BearerCapability,
8802       { "gsm-BearerCapability", "gsm_map.gsm_BearerCapability",
8803         FT_NONE, BASE_NONE, NULL, 0,
8804         "", HFILL }},
8805     { &hf_gsm_map_supportedCamelPhasesInGMSC,
8806       { "supportedCamelPhasesInGMSC", "gsm_map.supportedCamelPhasesInGMSC",
8807         FT_BYTES, BASE_HEX, NULL, 0,
8808         "ProvideRoamingNumberArg/supportedCamelPhasesInGMSC", HFILL }},
8809     { &hf_gsm_map_orNotSupportedInGMSC,
8810       { "orNotSupportedInGMSC", "gsm_map.orNotSupportedInGMSC",
8811         FT_NONE, BASE_NONE, NULL, 0,
8812         "ProvideRoamingNumberArg/orNotSupportedInGMSC", HFILL }},
8813     { &hf_gsm_map_uu_Data,
8814       { "uu-Data", "gsm_map.uu_Data",
8815         FT_NONE, BASE_NONE, NULL, 0,
8816         "ResumeCallHandlingArg/uu-Data", HFILL }},
8817     { &hf_gsm_map_uuIndicator,
8818       { "uuIndicator", "gsm_map.uuIndicator",
8819         FT_BYTES, BASE_HEX, NULL, 0,
8820         "ResumeCallHandlingArg/uu-Data/uuIndicator", HFILL }},
8821     { &hf_gsm_map_uui,
8822       { "uui", "gsm_map.uui",
8823         FT_BYTES, BASE_HEX, NULL, 0,
8824         "ResumeCallHandlingArg/uu-Data/uui", HFILL }},
8825     { &hf_gsm_map_uusCFInteraction,
8826       { "uusCFInteraction", "gsm_map.uusCFInteraction",
8827         FT_NONE, BASE_NONE, NULL, 0,
8828         "ResumeCallHandlingArg/uu-Data/uusCFInteraction", HFILL }},
8829     { &hf_gsm_map_allInformationSent,
8830       { "allInformationSent", "gsm_map.allInformationSent",
8831         FT_NONE, BASE_NONE, NULL, 0,
8832         "ResumeCallHandlingArg/allInformationSent", HFILL }},
8833     { &hf_gsm_map_isdn_BearerCapability,
8834       { "isdn-BearerCapability", "gsm_map.isdn_BearerCapability",
8835         FT_NONE, BASE_NONE, NULL, 0,
8836         "ProvideSIWFSNumberArg/isdn-BearerCapability", HFILL }},
8837     { &hf_gsm_map_call_Direction,
8838       { "call-Direction", "gsm_map.call_Direction",
8839         FT_BYTES, BASE_HEX, NULL, 0,
8840         "ProvideSIWFSNumberArg/call-Direction", HFILL }},
8841     { &hf_gsm_map_b_Subscriber_Address,
8842       { "b-Subscriber-Address", "gsm_map.b_Subscriber_Address",
8843         FT_BYTES, BASE_HEX, NULL, 0,
8844         "ProvideSIWFSNumberArg/b-Subscriber-Address", HFILL }},
8845     { &hf_gsm_map_chosenChannel,
8846       { "chosenChannel", "gsm_map.chosenChannel",
8847         FT_NONE, BASE_NONE, NULL, 0,
8848         "", HFILL }},
8849     { &hf_gsm_map_lowerLayerCompatibility,
8850       { "lowerLayerCompatibility", "gsm_map.lowerLayerCompatibility",
8851         FT_NONE, BASE_NONE, NULL, 0,
8852         "ProvideSIWFSNumberArg/lowerLayerCompatibility", HFILL }},
8853     { &hf_gsm_map_highLayerCompatibility,
8854       { "highLayerCompatibility", "gsm_map.highLayerCompatibility",
8855         FT_NONE, BASE_NONE, NULL, 0,
8856         "ProvideSIWFSNumberArg/highLayerCompatibility", HFILL }},
8857     { &hf_gsm_map_sIWFSNumber,
8858       { "sIWFSNumber", "gsm_map.sIWFSNumber",
8859         FT_BYTES, BASE_HEX, NULL, 0,
8860         "ProvideSIWFSNumberRes/sIWFSNumber", HFILL }},
8861     { &hf_gsm_map_channelType,
8862       { "channelType", "gsm_map.channelType",
8863         FT_NONE, BASE_NONE, NULL, 0,
8864         "SIWFSSignallingModifyArg/channelType", HFILL }},
8865     { &hf_gsm_map_ccbs_Monitoring,
8866       { "ccbs-Monitoring", "gsm_map.ccbs_Monitoring",
8867         FT_UINT32, BASE_DEC, VALS(Ccbs_Monitoring_vals), 0,
8868         "SetReportingStateArg/ccbs-Monitoring", HFILL }},
8869     { &hf_gsm_map_ccbs_SubscriberStatus,
8870       { "ccbs-SubscriberStatus", "gsm_map.ccbs_SubscriberStatus",
8871         FT_UINT32, BASE_DEC, VALS(Ccbs_SubscriberStatus_vals), 0,
8872         "", HFILL }},
8873     { &hf_gsm_map_eventReportData,
8874       { "eventReportData", "gsm_map.eventReportData",
8875         FT_NONE, BASE_NONE, NULL, 0,
8876         "StatusReportArg/eventReportData", HFILL }},
8877     { &hf_gsm_map_callReportdata,
8878       { "callReportdata", "gsm_map.callReportdata",
8879         FT_NONE, BASE_NONE, NULL, 0,
8880         "StatusReportArg/callReportdata", HFILL }},
8881     { &hf_gsm_map_monitoringMode,
8882       { "monitoringMode", "gsm_map.monitoringMode",
8883         FT_UINT32, BASE_DEC, VALS(MonitoringMode_vals), 0,
8884         "StatusReportArg/callReportdata/monitoringMode", HFILL }},
8885     { &hf_gsm_map_callOutcome,
8886       { "callOutcome", "gsm_map.callOutcome",
8887         FT_UINT32, BASE_DEC, VALS(CallOutcome_vals), 0,
8888         "StatusReportArg/callReportdata/callOutcome", HFILL }},
8889     { &hf_gsm_map_callInfo,
8890       { "callInfo", "gsm_map.callInfo",
8891         FT_NONE, BASE_NONE, NULL, 0,
8892         "", HFILL }},
8893     { &hf_gsm_map_ccbs_Feature,
8894       { "ccbs-Feature", "gsm_map.ccbs_Feature",
8895         FT_NONE, BASE_NONE, NULL, 0,
8896         "", HFILL }},
8897     { &hf_gsm_map_translatedB_Number,
8898       { "translatedB-Number", "gsm_map.translatedB_Number",
8899         FT_BYTES, BASE_HEX, NULL, 0,
8900         "", HFILL }},
8901     { &hf_gsm_map_replaceB_Number,
8902       { "replaceB-Number", "gsm_map.replaceB_Number",
8903         FT_NONE, BASE_NONE, NULL, 0,
8904         "RemoteUserFreeArg/replaceB-Number", HFILL }},
8905     { &hf_gsm_map_ruf_Outcome,
8906       { "ruf-Outcome", "gsm_map.ruf_Outcome",
8907         FT_UINT32, BASE_DEC, VALS(Ruf_Outcome_vals), 0,
8908         "RemoteUserFreeRes/ruf-Outcome", HFILL }},
8909     { &hf_gsm_map_ss_Data,
8910       { "ss-Data", "gsm_map.ss_Data",
8911         FT_NONE, BASE_NONE, NULL, 0,
8912         "Ss-Info/ss-Data", HFILL }},
8913     { &hf_gsm_map_ccbs_Index,
8914       { "ccbs-Index", "gsm_map.ccbs_Index",
8915         FT_UINT32, BASE_DEC, NULL, 0,
8916         "", HFILL }},
8917     { &hf_gsm_map_b_subscriberNumber,
8918       { "b-subscriberNumber", "gsm_map.b_subscriberNumber",
8919         FT_BYTES, BASE_HEX, NULL, 0,
8920         "", HFILL }},
8921     { &hf_gsm_map_b_subscriberSubaddress,
8922       { "b-subscriberSubaddress", "gsm_map.b_subscriberSubaddress",
8923         FT_BYTES, BASE_HEX, NULL, 0,
8924         "", HFILL }},
8925     { &hf_gsm_map_genericServiceInfo,
8926       { "genericServiceInfo", "gsm_map.genericServiceInfo",
8927         FT_NONE, BASE_NONE, NULL, 0,
8928         "InterrogateSS-Res/genericServiceInfo", HFILL }},
8929     { &hf_gsm_map_maximumEntitledPriority,
8930       { "maximumEntitledPriority", "gsm_map.maximumEntitledPriority",
8931         FT_UINT32, BASE_DEC, NULL, 0,
8932         "InterrogateSS-Res/genericServiceInfo/maximumEntitledPriority", HFILL }},
8933     { &hf_gsm_map_ccbs_FeatureList,
8934       { "ccbs-FeatureList", "gsm_map.ccbs_FeatureList",
8935         FT_UINT32, BASE_DEC, NULL, 0,
8936         "InterrogateSS-Res/genericServiceInfo/ccbs-FeatureList", HFILL }},
8937     { &hf_gsm_map_ccbs_FeatureList_item,
8938       { "Item", "gsm_map.ccbs_FeatureList_item",
8939         FT_NONE, BASE_NONE, NULL, 0,
8940         "InterrogateSS-Res/genericServiceInfo/ccbs-FeatureList/_item", HFILL }},
8941     { &hf_gsm_map_ussd_DataCodingScheme,
8942       { "ussd-DataCodingScheme", "gsm_map.ussd_DataCodingScheme",
8943         FT_BYTES, BASE_HEX, NULL, 0,
8944         "", HFILL }},
8945     { &hf_gsm_map_ussd_String,
8946       { "ussd-String", "gsm_map.ussd_String",
8947         FT_BYTES, BASE_HEX, NULL, 0,
8948         "", HFILL }},
8949     { &hf_gsm_map_ccbs_Data,
8950       { "ccbs-Data", "gsm_map.ccbs_Data",
8951         FT_NONE, BASE_NONE, NULL, 0,
8952         "RegisterCC-EntryArg/ccbs-Data", HFILL }},
8953     { &hf_gsm_map_serviceIndicator,
8954       { "serviceIndicator", "gsm_map.serviceIndicator",
8955         FT_BYTES, BASE_HEX, NULL, 0,
8956         "RegisterCC-EntryArg/ccbs-Data/serviceIndicator", HFILL }},
8957     { &hf_gsm_map_sm_RP_PRI,
8958       { "sm-RP-PRI", "gsm_map.sm_RP_PRI",
8959         FT_BOOLEAN, 8, NULL, 0,
8960         "RoutingInfoForSMArg/sm-RP-PRI", HFILL }},
8961     { &hf_gsm_map_serviceCentreAddress,
8962       { "serviceCentreAddress", "gsm_map.serviceCentreAddress",
8963         FT_BYTES, BASE_HEX, NULL, 0,
8964         "", HFILL }},
8965     { &hf_gsm_map_gprsSupportIndicator,
8966       { "gprsSupportIndicator", "gsm_map.gprsSupportIndicator",
8967         FT_NONE, BASE_NONE, NULL, 0,
8968         "", HFILL }},
8969     { &hf_gsm_map_sm_RP_MTI,
8970       { "sm-RP-MTI", "gsm_map.sm_RP_MTI",
8971         FT_UINT32, BASE_DEC, NULL, 0,
8972         "RoutingInfoForSMArg/sm-RP-MTI", HFILL }},
8973     { &hf_gsm_map_sm_RP_SMEA,
8974       { "sm-RP-SMEA", "gsm_map.sm_RP_SMEA",
8975         FT_BYTES, BASE_HEX, NULL, 0,
8976         "RoutingInfoForSMArg/sm-RP-SMEA", HFILL }},
8977     { &hf_gsm_map_locationInfoWithLMSI,
8978       { "locationInfoWithLMSI", "gsm_map.locationInfoWithLMSI",
8979         FT_NONE, BASE_NONE, NULL, 0,
8980         "RoutingInfoForSMRes/locationInfoWithLMSI", HFILL }},
8981     { &hf_gsm_map_networkNode_Number,
8982       { "networkNode-Number", "gsm_map.networkNode_Number",
8983         FT_BYTES, BASE_HEX, NULL, 0,
8984         "RoutingInfoForSMRes/locationInfoWithLMSI/networkNode-Number", HFILL }},
8985     { &hf_gsm_map_gprsNodeIndicator,
8986       { "gprsNodeIndicator", "gsm_map.gprsNodeIndicator",
8987         FT_NONE, BASE_NONE, NULL, 0,
8988         "RoutingInfoForSMRes/locationInfoWithLMSI/gprsNodeIndicator", HFILL }},
8989     { &hf_gsm_map_additional_Number,
8990       { "additional-Number", "gsm_map.additional_Number",
8991         FT_UINT32, BASE_DEC, VALS(T_additional_Number_vals), 0,
8992         "RoutingInfoForSMRes/locationInfoWithLMSI/additional-Number", HFILL }},
8993     { &hf_gsm_map_sm_RP_DA,
8994       { "sm-RP-DA", "gsm_map.sm_RP_DA",
8995         FT_UINT32, BASE_DEC, VALS(Sm_RP_DA_vals), 0,
8996         "", HFILL }},
8997     { &hf_gsm_map_sm_RP_OA,
8998       { "sm-RP-OA", "gsm_map.sm_RP_OA",
8999         FT_UINT32, BASE_DEC, VALS(Sm_RP_OA_vals), 0,
9000         "", HFILL }},
9001     { &hf_gsm_map_sm_RP_UI,
9002       { "sm-RP-UI", "gsm_map.sm_RP_UI",
9003         FT_BYTES, BASE_HEX, NULL, 0,
9004         "", HFILL }},
9005     { &hf_gsm_map_serviceCentreAddressOA,
9006       { "serviceCentreAddressOA", "gsm_map.serviceCentreAddressOA",
9007         FT_BYTES, BASE_HEX, NULL, 0,
9008         "Sm-RP-OA/serviceCentreAddressOA", HFILL }},
9009     { &hf_gsm_map_noSM_RP_OA,
9010       { "noSM-RP-OA", "gsm_map.noSM_RP_OA",
9011         FT_NONE, BASE_NONE, NULL, 0,
9012         "Sm-RP-OA/noSM-RP-OA", HFILL }},
9013     { &hf_gsm_map_serviceCentreAddressDA,
9014       { "serviceCentreAddressDA", "gsm_map.serviceCentreAddressDA",
9015         FT_BYTES, BASE_HEX, NULL, 0,
9016         "Sm-RP-DA/serviceCentreAddressDA", HFILL }},
9017     { &hf_gsm_map_noSM_RP_DA,
9018       { "noSM-RP-DA", "gsm_map.noSM_RP_DA",
9019         FT_NONE, BASE_NONE, NULL, 0,
9020         "Sm-RP-DA/noSM-RP-DA", HFILL }},
9021     { &hf_gsm_map_moreMessagesToSend,
9022       { "moreMessagesToSend", "gsm_map.moreMessagesToSend",
9023         FT_NONE, BASE_NONE, NULL, 0,
9024         "Mt-forwardSM-Arg/moreMessagesToSend", HFILL }},
9025     { &hf_gsm_map_sm_DeliveryOutcome,
9026       { "sm-DeliveryOutcome", "gsm_map.sm_DeliveryOutcome",
9027         FT_UINT32, BASE_DEC, VALS(Sm_DeliveryOutcome_vals), 0,
9028         "ReportSM-DeliveryStatusArg/sm-DeliveryOutcome", HFILL }},
9029     { &hf_gsm_map_absentSubscriberDiagnosticSM,
9030       { "absentSubscriberDiagnosticSM", "gsm_map.absentSubscriberDiagnosticSM",
9031         FT_UINT32, BASE_DEC, NULL, 0,
9032         "", HFILL }},
9033     { &hf_gsm_map_deliveryOutcomeIndicator,
9034       { "deliveryOutcomeIndicator", "gsm_map.deliveryOutcomeIndicator",
9035         FT_NONE, BASE_NONE, NULL, 0,
9036         "ReportSM-DeliveryStatusArg/deliveryOutcomeIndicator", HFILL }},
9037     { &hf_gsm_map_additionalSM_DeliveryOutcome,
9038       { "additionalSM-DeliveryOutcome", "gsm_map.additionalSM_DeliveryOutcome",
9039         FT_UINT32, BASE_DEC, VALS(Sm_DeliveryOutcome_vals), 0,
9040         "ReportSM-DeliveryStatusArg/additionalSM-DeliveryOutcome", HFILL }},
9041     { &hf_gsm_map_additionalAbsentSubscriberDiagnosticSM,
9042       { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.additionalAbsentSubscriberDiagnosticSM",
9043         FT_UINT32, BASE_DEC, NULL, 0,
9044         "", HFILL }},
9045     { &hf_gsm_map_storedMSISDN,
9046       { "storedMSISDN", "gsm_map.storedMSISDN",
9047         FT_BYTES, BASE_HEX, NULL, 0,
9048         "", HFILL }},
9049     { &hf_gsm_map_mw_Status,
9050       { "mw-Status", "gsm_map.mw_Status",
9051         FT_BYTES, BASE_HEX, NULL, 0,
9052         "InformServiceCentreArg/mw-Status", HFILL }},
9053     { &hf_gsm_map_alertReason,
9054       { "alertReason", "gsm_map.alertReason",
9055         FT_UINT32, BASE_DEC, VALS(T_alertReason_vals), 0,
9056         "ReadyForSM-Arg/alertReason", HFILL }},
9057     { &hf_gsm_map_alertReasonIndicator,
9058       { "alertReasonIndicator", "gsm_map.alertReasonIndicator",
9059         FT_NONE, BASE_NONE, NULL, 0,
9060         "ReadyForSM-Arg/alertReasonIndicator", HFILL }},
9061     { &hf_gsm_map_requestedInfo,
9062       { "requestedInfo", "gsm_map.requestedInfo",
9063         FT_NONE, BASE_NONE, NULL, 0,
9064         "", HFILL }},
9065     { &hf_gsm_map_locationInformationFlag,
9066       { "locationInformation", "gsm_map.locationInformation",
9067         FT_NONE, BASE_NONE, NULL, 0,
9068         "RequestedInfo/locationInformation", HFILL }},
9069     { &hf_gsm_map_subscriberStateFlag,
9070       { "subscriberState", "gsm_map.subscriberState",
9071         FT_NONE, BASE_NONE, NULL, 0,
9072         "RequestedInfo/subscriberState", HFILL }},
9073     { &hf_gsm_map_subscriberIdentity,
9074       { "subscriberIdentity", "gsm_map.subscriberIdentity",
9075         FT_UINT32, BASE_DEC, VALS(T_subscriberIdentity_vals), 0,
9076         "AnyTimeInterrogationArg/subscriberIdentity", HFILL }},
9077     { &hf_gsm_map_ss_Event,
9078       { "ss-Event", "gsm_map.ss_Event",
9079         FT_BYTES, BASE_HEX, NULL, 0,
9080         "Ss-InvocationNotificationArg/ss-Event", HFILL }},
9081     { &hf_gsm_map_ss_EventSpecification,
9082       { "ss-EventSpecification", "gsm_map.ss_EventSpecification",
9083         FT_UINT32, BASE_DEC, NULL, 0,
9084         "Ss-InvocationNotificationArg/ss-EventSpecification", HFILL }},
9085     { &hf_gsm_map_ss_EventSpecification_item,
9086       { "Item", "gsm_map.ss_EventSpecification_item",
9087         FT_BYTES, BASE_HEX, NULL, 0,
9088         "Ss-InvocationNotificationArg/ss-EventSpecification/_item", HFILL }},
9089     { &hf_gsm_map_asciCallReference,
9090       { "asciCallReference", "gsm_map.asciCallReference",
9091         FT_BYTES, BASE_HEX, NULL, 0,
9092         "PrepareGroupCallArg/asciCallReference", HFILL }},
9093     { &hf_gsm_map_codec_Info,
9094       { "codec-Info", "gsm_map.codec_Info",
9095         FT_BYTES, BASE_HEX, NULL, 0,
9096         "PrepareGroupCallArg/codec-Info", HFILL }},
9097     { &hf_gsm_map_cipheringAlgorithm,
9098       { "cipheringAlgorithm", "gsm_map.cipheringAlgorithm",
9099         FT_BYTES, BASE_HEX, NULL, 0,
9100         "PrepareGroupCallArg/cipheringAlgorithm", HFILL }},
9101     { &hf_gsm_map_groupKeyNumber,
9102       { "groupKeyNumber", "gsm_map.groupKeyNumber",
9103         FT_UINT32, BASE_DEC, NULL, 0,
9104         "PrepareGroupCallArg/groupKeyNumber", HFILL }},
9105     { &hf_gsm_map_groupKey,
9106       { "groupKey", "gsm_map.groupKey",
9107         FT_BYTES, BASE_HEX, NULL, 0,
9108         "PrepareGroupCallArg/groupKey", HFILL }},
9109     { &hf_gsm_map_priority,
9110       { "priority", "gsm_map.priority",
9111         FT_UINT32, BASE_DEC, NULL, 0,
9112         "PrepareGroupCallArg/priority", HFILL }},
9113     { &hf_gsm_map_uplinkFree,
9114       { "uplinkFree", "gsm_map.uplinkFree",
9115         FT_NONE, BASE_NONE, NULL, 0,
9116         "PrepareGroupCallArg/uplinkFree", HFILL }},
9117     { &hf_gsm_map_groupCallNumber,
9118       { "groupCallNumber", "gsm_map.groupCallNumber",
9119         FT_BYTES, BASE_HEX, NULL, 0,
9120         "PrepareGroupCallRes/groupCallNumber", HFILL }},
9121     { &hf_gsm_map_uplinkRequest,
9122       { "uplinkRequest", "gsm_map.uplinkRequest",
9123         FT_NONE, BASE_NONE, NULL, 0,
9124         "ProcessGroupCallSignallingArg/uplinkRequest", HFILL }},
9125     { &hf_gsm_map_uplinkReleaseIndication,
9126       { "uplinkReleaseIndication", "gsm_map.uplinkReleaseIndication",
9127         FT_NONE, BASE_NONE, NULL, 0,
9128         "", HFILL }},
9129     { &hf_gsm_map_releaseGroupCall,
9130       { "releaseGroupCall", "gsm_map.releaseGroupCall",
9131         FT_NONE, BASE_NONE, NULL, 0,
9132         "ProcessGroupCallSignallingArg/releaseGroupCall", HFILL }},
9133     { &hf_gsm_map_uplinkRequestAck,
9134       { "uplinkRequestAck", "gsm_map.uplinkRequestAck",
9135         FT_NONE, BASE_NONE, NULL, 0,
9136         "ForwardGroupCallSignallingArg/uplinkRequestAck", HFILL }},
9137     { &hf_gsm_map_uplinkRejectCommand,
9138       { "uplinkRejectCommand", "gsm_map.uplinkRejectCommand",
9139         FT_NONE, BASE_NONE, NULL, 0,
9140         "ForwardGroupCallSignallingArg/uplinkRejectCommand", HFILL }},
9141     { &hf_gsm_map_uplinkSeizedCommand,
9142       { "uplinkSeizedCommand", "gsm_map.uplinkSeizedCommand",
9143         FT_NONE, BASE_NONE, NULL, 0,
9144         "ForwardGroupCallSignallingArg/uplinkSeizedCommand", HFILL }},
9145     { &hf_gsm_map_uplinkReleaseCommand,
9146       { "uplinkReleaseCommand", "gsm_map.uplinkReleaseCommand",
9147         FT_NONE, BASE_NONE, NULL, 0,
9148         "ForwardGroupCallSignallingArg/uplinkReleaseCommand", HFILL }},
9149     { &hf_gsm_map_sgsn_Address,
9150       { "sgsn-Address", "gsm_map.sgsn_Address",
9151         FT_BYTES, BASE_HEX, NULL, 0,
9152         "", HFILL }},
9153     { &hf_gsm_map_sgsn_Capability,
9154       { "sgsn-Capability", "gsm_map.sgsn_Capability",
9155         FT_NONE, BASE_NONE, NULL, 0,
9156         "UpdateGprsLocationArg/sgsn-Capability", HFILL }},
9157     { &hf_gsm_map_ggsn_Address,
9158       { "ggsn-Address", "gsm_map.ggsn_Address",
9159         FT_BYTES, BASE_HEX, NULL, 0,
9160         "", HFILL }},
9161     { &hf_gsm_map_ggsn_Number,
9162       { "ggsn-Number", "gsm_map.ggsn_Number",
9163         FT_BYTES, BASE_HEX, NULL, 0,
9164         "", HFILL }},
9165     { &hf_gsm_map_mobileNotReachableReason,
9166       { "mobileNotReachableReason", "gsm_map.mobileNotReachableReason",
9167         FT_UINT32, BASE_DEC, NULL, 0,
9168         "SendRoutingInfoForGprsRes/mobileNotReachableReason", HFILL }},
9169     { &hf_gsm_map_dataCodingScheme,
9170       { "dataCodingScheme", "gsm_map.dataCodingScheme",
9171         FT_BYTES, BASE_HEX, NULL, 0,
9172         "LcsClientName/dataCodingScheme", HFILL }},
9173     { &hf_gsm_map_nameString,
9174       { "nameString", "gsm_map.nameString",
9175         FT_BYTES, BASE_HEX, NULL, 0,
9176         "LcsClientName/nameString", HFILL }},
9177     { &hf_gsm_map_lcsClientType,
9178       { "lcsClientType", "gsm_map.lcsClientType",
9179         FT_UINT32, BASE_DEC, VALS(LcsClientType_vals), 0,
9180         "Lcs-ClientID/lcsClientType", HFILL }},
9181     { &hf_gsm_map_lcsClientExternalID,
9182       { "lcsClientExternalID", "gsm_map.lcsClientExternalID",
9183         FT_NONE, BASE_NONE, NULL, 0,
9184         "Lcs-ClientID/lcsClientExternalID", HFILL }},
9185     { &hf_gsm_map_lcsClientDialedByMS,
9186       { "lcsClientDialedByMS", "gsm_map.lcsClientDialedByMS",
9187         FT_BYTES, BASE_HEX, NULL, 0,
9188         "Lcs-ClientID/lcsClientDialedByMS", HFILL }},
9189     { &hf_gsm_map_lcsClientInternalID,
9190       { "lcsClientInternalID", "gsm_map.lcsClientInternalID",
9191         FT_UINT32, BASE_DEC, VALS(LcsClientInternalID_vals), 0,
9192         "Lcs-ClientID/lcsClientInternalID", HFILL }},
9193     { &hf_gsm_map_lcsClientName,
9194       { "lcsClientName", "gsm_map.lcsClientName",
9195         FT_NONE, BASE_NONE, NULL, 0,
9196         "Lcs-ClientID/lcsClientName", HFILL }},
9197     { &hf_gsm_map_locationType,
9198       { "locationType", "gsm_map.locationType",
9199         FT_NONE, BASE_NONE, NULL, 0,
9200         "ProvideSubscriberLocation-Arg/locationType", HFILL }},
9201     { &hf_gsm_map_locationEstimateType,
9202       { "locationEstimateType", "gsm_map.locationEstimateType",
9203         FT_UINT32, BASE_DEC, VALS(T_locationEstimateType_vals), 0,
9204         "ProvideSubscriberLocation-Arg/locationType/locationEstimateType", HFILL }},
9205     { &hf_gsm_map_mlc_Number,
9206       { "mlc-Number", "gsm_map.mlc_Number",
9207         FT_BYTES, BASE_HEX, NULL, 0,
9208         "ProvideSubscriberLocation-Arg/mlc-Number", HFILL }},
9209     { &hf_gsm_map_lcs_ClientID,
9210       { "lcs-ClientID", "gsm_map.lcs_ClientID",
9211         FT_NONE, BASE_NONE, NULL, 0,
9212         "", HFILL }},
9213     { &hf_gsm_map_privacyOverride,
9214       { "privacyOverride", "gsm_map.privacyOverride",
9215         FT_NONE, BASE_NONE, NULL, 0,
9216         "ProvideSubscriberLocation-Arg/privacyOverride", HFILL }},
9217     { &hf_gsm_map_imei,
9218       { "imei", "gsm_map.imei",
9219         FT_BYTES, BASE_HEX, NULL, 0,
9220         "", HFILL }},
9221     { &hf_gsm_map_lcs_Priority,
9222       { "lcs-Priority", "gsm_map.lcs_Priority",
9223         FT_BYTES, BASE_HEX, NULL, 0,
9224         "ProvideSubscriberLocation-Arg/lcs-Priority", HFILL }},
9225     { &hf_gsm_map_lcs_QoS,
9226       { "lcs-QoS", "gsm_map.lcs_QoS",
9227         FT_NONE, BASE_NONE, NULL, 0,
9228         "ProvideSubscriberLocation-Arg/lcs-QoS", HFILL }},
9229     { &hf_gsm_map_horizontal_accuracy,
9230       { "horizontal-accuracy", "gsm_map.horizontal_accuracy",
9231         FT_BYTES, BASE_HEX, NULL, 0,
9232         "ProvideSubscriberLocation-Arg/lcs-QoS/horizontal-accuracy", HFILL }},
9233     { &hf_gsm_map_verticalCoordinateRequest,
9234       { "verticalCoordinateRequest", "gsm_map.verticalCoordinateRequest",
9235         FT_NONE, BASE_NONE, NULL, 0,
9236         "ProvideSubscriberLocation-Arg/lcs-QoS/verticalCoordinateRequest", HFILL }},
9237     { &hf_gsm_map_vertical_accuracy,
9238       { "vertical-accuracy", "gsm_map.vertical_accuracy",
9239         FT_BYTES, BASE_HEX, NULL, 0,
9240         "ProvideSubscriberLocation-Arg/lcs-QoS/vertical-accuracy", HFILL }},
9241     { &hf_gsm_map_responseTime,
9242       { "responseTime", "gsm_map.responseTime",
9243         FT_NONE, BASE_NONE, NULL, 0,
9244         "ProvideSubscriberLocation-Arg/lcs-QoS/responseTime", HFILL }},
9245     { &hf_gsm_map_responseTimeCategory,
9246       { "responseTimeCategory", "gsm_map.responseTimeCategory",
9247         FT_UINT32, BASE_DEC, VALS(T_responseTimeCategory_vals), 0,
9248         "ProvideSubscriberLocation-Arg/lcs-QoS/responseTime/responseTimeCategory", HFILL }},
9249     { &hf_gsm_map_locationEstimate,
9250       { "locationEstimate", "gsm_map.locationEstimate",
9251         FT_BYTES, BASE_HEX, NULL, 0,
9252         "", HFILL }},
9253     { &hf_gsm_map_ageOfLocationEstimate,
9254       { "ageOfLocationEstimate", "gsm_map.ageOfLocationEstimate",
9255         FT_UINT32, BASE_DEC, NULL, 0,
9256         "", HFILL }},
9257     { &hf_gsm_map_mlcNumber,
9258       { "mlcNumber", "gsm_map.mlcNumber",
9259         FT_BYTES, BASE_HEX, NULL, 0,
9260         "RoutingInfoForLCS-Arg/mlcNumber", HFILL }},
9261     { &hf_gsm_map_targetMS,
9262       { "targetMS", "gsm_map.targetMS",
9263         FT_UINT32, BASE_DEC, VALS(TargetMS_vals), 0,
9264         "", HFILL }},
9265     { &hf_gsm_map_lcsLocationInfo,
9266       { "lcsLocationInfo", "gsm_map.lcsLocationInfo",
9267         FT_NONE, BASE_NONE, NULL, 0,
9268         "", HFILL }},
9269     { &hf_gsm_map_lcs_Event,
9270       { "lcs-Event", "gsm_map.lcs_Event",
9271         FT_UINT32, BASE_DEC, VALS(Lcs_Event_vals), 0,
9272         "SubscriberLocationReport-Arg/lcs-Event", HFILL }},
9273     { &hf_gsm_map_na_ESRD,
9274       { "na-ESRD", "gsm_map.na_ESRD",
9275         FT_BYTES, BASE_HEX, NULL, 0,
9276         "SubscriberLocationReport-Arg/na-ESRD", HFILL }},
9277     { &hf_gsm_map_na_ESRK,
9278       { "na-ESRK", "gsm_map.na_ESRK",
9279         FT_BYTES, BASE_HEX, NULL, 0,
9280         "SubscriberLocationReport-Arg/na-ESRK", HFILL }},
9281     { &hf_gsm_map_networkResource,
9282       { "networkResource", "gsm_map.networkResource",
9283         FT_UINT32, BASE_DEC, VALS(NetworkResource_vals), 0,
9284         "", HFILL }},
9285     { &hf_gsm_map_extensibleSystemFailureParam,
9286       { "extensibleSystemFailureParam", "gsm_map.extensibleSystemFailureParam",
9287         FT_NONE, BASE_NONE, NULL, 0,
9288         "SystemFailureParam/extensibleSystemFailureParam", HFILL }},
9289     { &hf_gsm_map_unknownSubscriberDiagnostic,
9290       { "unknownSubscriberDiagnostic", "gsm_map.unknownSubscriberDiagnostic",
9291         FT_UINT32, BASE_DEC, VALS(T_unknownSubscriberDiagnostic_vals), 0,
9292         "UnknownSubscriberParam/unknownSubscriberDiagnostic", HFILL }},
9293     { &hf_gsm_map_roamingNotAllowedCause,
9294       { "roamingNotAllowedCause", "gsm_map.roamingNotAllowedCause",
9295         FT_UINT32, BASE_DEC, VALS(T_roamingNotAllowedCause_vals), 0,
9296         "RoamingNotAllowedParam/roamingNotAllowedCause", HFILL }},
9297     { &hf_gsm_map_absentSubscriberReason,
9298       { "absentSubscriberReason", "gsm_map.absentSubscriberReason",
9299         FT_UINT32, BASE_DEC, VALS(T_absentSubscriberReason_vals), 0,
9300         "AbsentSubscriberParam/absentSubscriberReason", HFILL }},
9301     { &hf_gsm_map_ccbs_Busy,
9302       { "ccbs-Busy", "gsm_map.ccbs_Busy",
9303         FT_NONE, BASE_NONE, NULL, 0,
9304         "BusySubscriberParam/ccbs-Busy", HFILL }},
9305     { &hf_gsm_map_callBarringCause,
9306       { "callBarringCause", "gsm_map.callBarringCause",
9307         FT_UINT32, BASE_DEC, VALS(CallBarringCause_vals), 0,
9308         "", HFILL }},
9309     { &hf_gsm_map_extensibleCallBarredParam,
9310       { "extensibleCallBarredParam", "gsm_map.extensibleCallBarredParam",
9311         FT_NONE, BASE_NONE, NULL, 0,
9312         "CallBarredParam/extensibleCallBarredParam", HFILL }},
9313     { &hf_gsm_map_unauthorisedMessageOriginator,
9314       { "unauthorisedMessageOriginator", "gsm_map.unauthorisedMessageOriginator",
9315         FT_NONE, BASE_NONE, NULL, 0,
9316         "CallBarredParam/extensibleCallBarredParam/unauthorisedMessageOriginator", HFILL }},
9317     { &hf_gsm_map_cug_RejectCause,
9318       { "cug-RejectCause", "gsm_map.cug_RejectCause",
9319         FT_UINT32, BASE_DEC, VALS(T_cug_RejectCause_vals), 0,
9320         "Cug-RejectParam/cug-RejectCause", HFILL }},
9321     { &hf_gsm_map_gprsConnectionSuspended,
9322       { "gprsConnectionSuspended", "gsm_map.gprsConnectionSuspended",
9323         FT_NONE, BASE_NONE, NULL, 0,
9324         "SubBusyForMT-SMS-Param/gprsConnectionSuspended", HFILL }},
9325     { &hf_gsm_map_sm_EnumeratedDeliveryFailureCause,
9326       { "sm-EnumeratedDeliveryFailureCause", "gsm_map.sm_EnumeratedDeliveryFailureCause",
9327         FT_UINT32, BASE_DEC, VALS(T_sm_EnumeratedDeliveryFailureCause_vals), 0,
9328         "Sm-DeliveryFailureCause/sm-EnumeratedDeliveryFailureCause", HFILL }},
9329     { &hf_gsm_map_diagnosticInfo,
9330       { "diagnosticInfo", "gsm_map.diagnosticInfo",
9331         FT_BYTES, BASE_HEX, NULL, 0,
9332         "Sm-DeliveryFailureCause/diagnosticInfo", HFILL }},
9333     { &hf_gsm_map_unauthorizedLCSClient_Diagnostic,
9334       { "unauthorizedLCSClient-Diagnostic", "gsm_map.unauthorizedLCSClient_Diagnostic",
9335         FT_UINT32, BASE_DEC, VALS(T_unauthorizedLCSClient_Diagnostic_vals), 0,
9336         "UnauthorizedLCSClient-Param/unauthorizedLCSClient-Diagnostic", HFILL }},
9337     { &hf_gsm_map_positionMethodFailure_Diagnostic,
9338       { "positionMethodFailure-Diagnostic", "gsm_map.positionMethodFailure_Diagnostic",
9339         FT_UINT32, BASE_DEC, VALS(T_positionMethodFailure_Diagnostic_vals), 0,
9340         "PositionMethodFailure-Param/positionMethodFailure-Diagnostic", HFILL }},
9341     { &hf_gsm_map_privateExtensionList,
9342       { "privateExtensionList", "gsm_map.privateExtensionList",
9343         FT_UINT32, BASE_DEC, NULL, 0,
9344         "ExtensionContainer/privateExtensionList", HFILL }},
9345     { &hf_gsm_map_pcsExtensions,
9346       { "pcsExtensions", "gsm_map.pcsExtensions",
9347         FT_NONE, BASE_NONE, NULL, 0,
9348         "ExtensionContainer/pcsExtensions", HFILL }},
9349     { &hf_gsm_map_SupportedCamelPhases_phase1,
9350       { "phase1", "gsm_map.phase1",
9351         FT_BOOLEAN, 8, NULL, 0x80,
9352         "", HFILL }},
9353     { &hf_gsm_map_SupportedCamelPhases_phase2,
9354       { "phase2", "gsm_map.phase2",
9355         FT_BOOLEAN, 8, NULL, 0x40,
9356         "", HFILL }},
9357     { &hf_gsm_map_Odb_GeneralData_allOGCallsBarred,
9358       { "allOGCallsBarred", "gsm_map.allOGCallsBarred",
9359         FT_BOOLEAN, 8, NULL, 0x80,
9360         "", HFILL }},
9361     { &hf_gsm_map_Odb_GeneralData_internationalOGCallsBarred,
9362       { "internationalOGCallsBarred", "gsm_map.internationalOGCallsBarred",
9363         FT_BOOLEAN, 8, NULL, 0x40,
9364         "", HFILL }},
9365     { &hf_gsm_map_Odb_GeneralData_internationalOGCallsNotToHPLMNCountryBarred,
9366       { "internationalOGCallsNotToHPLMNCountryBarred", "gsm_map.internationalOGCallsNotToHPLMNCountryBarred",
9367         FT_BOOLEAN, 8, NULL, 0x20,
9368         "", HFILL }},
9369     { &hf_gsm_map_Odb_GeneralData_premiumRateInformationOGCallsBarred,
9370       { "premiumRateInformationOGCallsBarred", "gsm_map.premiumRateInformationOGCallsBarred",
9371         FT_BOOLEAN, 8, NULL, 0x10,
9372         "", HFILL }},
9373     { &hf_gsm_map_Odb_GeneralData_premiumRateEntertainementOGCallsBarred,
9374       { "premiumRateEntertainementOGCallsBarred", "gsm_map.premiumRateEntertainementOGCallsBarred",
9375         FT_BOOLEAN, 8, NULL, 0x08,
9376         "", HFILL }},
9377     { &hf_gsm_map_Odb_GeneralData_ssAccessBarred,
9378       { "ssAccessBarred", "gsm_map.ssAccessBarred",
9379         FT_BOOLEAN, 8, NULL, 0x04,
9380         "", HFILL }},
9381     { &hf_gsm_map_Odb_GeneralData_interzonalOGCallsBarred,
9382       { "interzonalOGCallsBarred", "gsm_map.interzonalOGCallsBarred",
9383         FT_BOOLEAN, 8, NULL, 0x02,
9384         "", HFILL }},
9385     { &hf_gsm_map_Odb_GeneralData_interzonalOGCallsNotToHPLMNCountryBarred,
9386       { "interzonalOGCallsNotToHPLMNCountryBarred", "gsm_map.interzonalOGCallsNotToHPLMNCountryBarred",
9387         FT_BOOLEAN, 8, NULL, 0x01,
9388         "", HFILL }},
9389     { &hf_gsm_map_Odb_GeneralData_interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred,
9390       { "interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred", "gsm_map.interzonalOGCallsAndIntOGCallsNotToHPLMNCountryBarred",
9391         FT_BOOLEAN, 8, NULL, 0x80,
9392         "", HFILL }},
9393     { &hf_gsm_map_Odb_GeneralData_allECTBarred,
9394       { "allECTBarred", "gsm_map.allECTBarred",
9395         FT_BOOLEAN, 8, NULL, 0x40,
9396         "", HFILL }},
9397     { &hf_gsm_map_Odb_GeneralData_chargeableECTBarred,
9398       { "chargeableECTBarred", "gsm_map.chargeableECTBarred",
9399         FT_BOOLEAN, 8, NULL, 0x20,
9400         "", HFILL }},
9401     { &hf_gsm_map_Odb_GeneralData_internationalECTBarred,
9402       { "internationalECTBarred", "gsm_map.internationalECTBarred",
9403         FT_BOOLEAN, 8, NULL, 0x10,
9404         "", HFILL }},
9405     { &hf_gsm_map_Odb_GeneralData_interzonalECTBarred,
9406       { "interzonalECTBarred", "gsm_map.interzonalECTBarred",
9407         FT_BOOLEAN, 8, NULL, 0x08,
9408         "", HFILL }},
9409     { &hf_gsm_map_Odb_GeneralData_doublyChargeableECTBarred,
9410       { "doublyChargeableECTBarred", "gsm_map.doublyChargeableECTBarred",
9411         FT_BOOLEAN, 8, NULL, 0x04,
9412         "", HFILL }},
9413     { &hf_gsm_map_Odb_GeneralData_multipleECTBarred,
9414       { "multipleECTBarred", "gsm_map.multipleECTBarred",
9415         FT_BOOLEAN, 8, NULL, 0x02,
9416         "", HFILL }},
9417     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType1,
9418       { "plmnSpecificBarringType1", "gsm_map.plmnSpecificBarringType1",
9419         FT_BOOLEAN, 8, NULL, 0x80,
9420         "", HFILL }},
9421     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType2,
9422       { "plmnSpecificBarringType2", "gsm_map.plmnSpecificBarringType2",
9423         FT_BOOLEAN, 8, NULL, 0x40,
9424         "", HFILL }},
9425     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType3,
9426       { "plmnSpecificBarringType3", "gsm_map.plmnSpecificBarringType3",
9427         FT_BOOLEAN, 8, NULL, 0x20,
9428         "", HFILL }},
9429     { &hf_gsm_map_Odb_HPLMN_Data_plmnSpecificBarringType4,
9430       { "plmnSpecificBarringType4", "gsm_map.plmnSpecificBarringType4",
9431         FT_BOOLEAN, 8, NULL, 0x10,
9432         "", HFILL }},
9433     { &hf_gsm_map_ServiceIndicator_clirInvoked,
9434       { "clirInvoked", "gsm_map.clirInvoked",
9435         FT_BOOLEAN, 8, NULL, 0x80,
9436         "", HFILL }},
9437     { &hf_gsm_map_ServiceIndicator_camelInvoked,
9438       { "camelInvoked", "gsm_map.camelInvoked",
9439         FT_BOOLEAN, 8, NULL, 0x40,
9440         "", HFILL }},
9441     { &hf_gsm_map_T_mw_Status_scAddressNotIncluded,
9442       { "scAddressNotIncluded", "gsm_map.scAddressNotIncluded",
9443         FT_BOOLEAN, 8, NULL, 0x80,
9444         "", HFILL }},
9445     { &hf_gsm_map_T_mw_Status_mnrfSet,
9446       { "mnrfSet", "gsm_map.mnrfSet",
9447         FT_BOOLEAN, 8, NULL, 0x40,
9448         "", HFILL }},
9449     { &hf_gsm_map_T_mw_Status_mcefSet,
9450       { "mcefSet", "gsm_map.mcefSet",
9451         FT_BOOLEAN, 8, NULL, 0x20,
9452         "", HFILL }},
9453     { &hf_gsm_map_T_mw_Status_mnrgSet,
9454       { "mnrgSet", "gsm_map.mnrgSet",
9455         FT_BOOLEAN, 8, NULL, 0x10,
9456         "", HFILL }},
9457
9458 /*--- End of included file: packet-gsm_map-hfarr.c ---*/
9459
9460   };
9461
9462   /* List of subtrees */
9463   static gint *ett[] = {
9464     &ett_gsm_map,
9465     &ett_gsm_map_InvokeId,
9466     &ett_gsm_map_InvokePDU,
9467     &ett_gsm_map_ReturnResultPDU,
9468     &ett_gsm_map_ReturnResult_result,
9469     &ett_gsm_map_GSMMAPPDU,
9470
9471 /*--- Included file: packet-gsm_map-ettarr.c ---*/
9472
9473     &ett_gsm_map_Bss_APDU,
9474     &ett_gsm_map_SupportedCamelPhases,
9475     &ett_gsm_map_Vlr_Capability,
9476     &ett_gsm_map_UpdateLocationArg,
9477     &ett_gsm_map_UpdateLocationRes,
9478     &ett_gsm_map_PrivateExtensionList,
9479     &ett_gsm_map_PrivateExtension,
9480     &ett_gsm_map_PcsExtensions,
9481     &ett_gsm_map_CancelLocationArg,
9482     &ett_gsm_map_T_identity,
9483     &ett_gsm_map_T_imsi_WithLMSI,
9484     &ett_gsm_map_CancelLocationRes,
9485     &ett_gsm_map_PurgeMS_Arg,
9486     &ett_gsm_map_PurgeMS_Res,
9487     &ett_gsm_map_SendIdentificationRes,
9488     &ett_gsm_map_T_authenticationSetList,
9489     &ett_gsm_map_T_authenticationSetList_item,
9490     &ett_gsm_map_PrepareHO_Arg,
9491     &ett_gsm_map_PrepareHO_Res,
9492     &ett_gsm_map_PrepareSubsequentHO_Arg,
9493     &ett_gsm_map_SendAuthenticationInfoArg,
9494     &ett_gsm_map_T_re_synchronisationInfo,
9495     &ett_gsm_map_SendAuthenticationInfoRes,
9496     &ett_gsm_map_SendAuthenticationInfoRes_item,
9497     &ett_gsm_map_BasicService,
9498     &ett_gsm_map_BasicServiceGroupList,
9499     &ett_gsm_map_Odb_GeneralData,
9500     &ett_gsm_map_Odb_HPLMN_Data,
9501     &ett_gsm_map_BcsmCamelTDPData,
9502     &ett_gsm_map_BcsmCamelTDPDataList,
9503     &ett_gsm_map_O_CSI,
9504     &ett_gsm_map_InsertSubscriberDataArg,
9505     &ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_5,
9506     &ett_gsm_map_SEQUNCE_OF_Teleservice,
9507     &ett_gsm_map_T_provisionedSS,
9508     &ett_gsm_map_T_provisionedSS_item,
9509     &ett_gsm_map_T_cug_Info,
9510     &ett_gsm_map_T_cug_SubscriptionList,
9511     &ett_gsm_map_T_cug_SubscriptionList_item,
9512     &ett_gsm_map_T_cug_FeatureList,
9513     &ett_gsm_map_T_cug_FeatureList_item,
9514     &ett_gsm_map_T_ss_Data2,
9515     &ett_gsm_map_T_emlpp_Info,
9516     &ett_gsm_map_T_odb_Data,
9517     &ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_2,
9518     &ett_gsm_map_T_vbsSubscriptionData,
9519     &ett_gsm_map_T_vbsSubscriptionData_item,
9520     &ett_gsm_map_T_vgcsSubscriptionData,
9521     &ett_gsm_map_T_vgcsSubscriptionData_item,
9522     &ett_gsm_map_T_vlrCamelSubscriptionInfo,
9523     &ett_gsm_map_T_ss_CSI,
9524     &ett_gsm_map_T_ss_CamelData,
9525     &ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1,
9526     &ett_gsm_map_T_gprsSubscriptionData,
9527     &ett_gsm_map_T_gprsDataList,
9528     &ett_gsm_map_T_gprsDataList_item,
9529     &ett_gsm_map_T_lsaInformation,
9530     &ett_gsm_map_T_lsaDataList,
9531     &ett_gsm_map_T_lsaDataList_item,
9532     &ett_gsm_map_T_lcsInformation,
9533     &ett_gsm_map_T_gmlc_List,
9534     &ett_gsm_map_T_lcs_PrivacyExceptionList,
9535     &ett_gsm_map_T_lcs_PrivacyExceptionList_item,
9536     &ett_gsm_map_T_externalClientList,
9537     &ett_gsm_map_T_externalClientList_item,
9538     &ett_gsm_map_T_clientIdentity,
9539     &ett_gsm_map_T_plmnClientList,
9540     &ett_gsm_map_T_molr_List,
9541     &ett_gsm_map_T_molr_List_item,
9542     &ett_gsm_map_InsertSubscriberDataRes,
9543     &ett_gsm_map_CallBarringInfo,
9544     &ett_gsm_map_T_callBarringFeatureList,
9545     &ett_gsm_map_T_callBarringFeatureList_item,
9546     &ett_gsm_map_ForwardingFeatureList,
9547     &ett_gsm_map_DestinationNumberCriteria,
9548     &ett_gsm_map_T_destinationNumberList,
9549     &ett_gsm_map_SEQUNCE_OF_INTEGER_1_15,
9550     &ett_gsm_map_ForwardingInfo,
9551     &ett_gsm_map_SEQUNCE_OF_ForwardingFeatureList,
9552     &ett_gsm_map_Naea_PreferredCI,
9553     &ett_gsm_map_O_BcsmCamelTDP_CriteriaList,
9554     &ett_gsm_map_O_BcsmCamelTDP_CriteriaList_item,
9555     &ett_gsm_map_Ss_SubscriptionOption,
9556     &ett_gsm_map_DeleteSubscriberDataArg,
9557     &ett_gsm_map_T_gprsSubscriptionDataWithdraw,
9558     &ett_gsm_map_SEQUNCE_OF_INTEGER_1_50,
9559     &ett_gsm_map_T_lsaInformationWithdraw,
9560     &ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3,
9561     &ett_gsm_map_DeleteSubscriberDataRes,
9562     &ett_gsm_map_ResetArg,
9563     &ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_3_8,
9564     &ett_gsm_map_RestoreDataArg,
9565     &ett_gsm_map_RestoreDataRes,
9566     &ett_gsm_map_ActivateTraceModeArg,
9567     &ett_gsm_map_ActivateTraceModeRes,
9568     &ett_gsm_map_DeactivateTraceModeArg,
9569     &ett_gsm_map_DeactivateTraceModeRes,
9570     &ett_gsm_map_SendRoutingInfoArg,
9571     &ett_gsm_map_T_camelInfo,
9572     &ett_gsm_map_SendRoutingInfoRes,
9573     &ett_gsm_map_T_extendedRoutingInfo,
9574     &ett_gsm_map_T_routingInfo,
9575     &ett_gsm_map_T_camelRoutingInfo,
9576     &ett_gsm_map_T_gmscCamelSubscriptionInfo,
9577     &ett_gsm_map_T_t_CSI,
9578     &ett_gsm_map_T_ccbs_Indicators,
9579     &ett_gsm_map_SubscriberState,
9580     &ett_gsm_map_LocationInformation,
9581     &ett_gsm_map_T_cellIdOrLAI,
9582     &ett_gsm_map_SubscriberInfo,
9583     &ett_gsm_map_AdditionalSignalInfo,
9584     &ett_gsm_map_Cug_CheckInfo,
9585     &ett_gsm_map_ForwardingData,
9586     &ett_gsm_map_ProvideRoamingNumberArg,
9587     &ett_gsm_map_ProvideRoamingNumberRes,
9588     &ett_gsm_map_ResumeCallHandlingArg,
9589     &ett_gsm_map_T_uu_Data,
9590     &ett_gsm_map_ResumeCallHandlingRes,
9591     &ett_gsm_map_ProvideSIWFSNumberArg,
9592     &ett_gsm_map_ProvideSIWFSNumberRes,
9593     &ett_gsm_map_SIWFSSignallingModifyArg,
9594     &ett_gsm_map_SIWFSSignallingModifyRes,
9595     &ett_gsm_map_SetReportingStateArg,
9596     &ett_gsm_map_SetReportingStateRes,
9597     &ett_gsm_map_StatusReportArg,
9598     &ett_gsm_map_T_eventReportData,
9599     &ett_gsm_map_T_callReportdata,
9600     &ett_gsm_map_StatusReportRes,
9601     &ett_gsm_map_RemoteUserFreeArg,
9602     &ett_gsm_map_RemoteUserFreeRes,
9603     &ett_gsm_map_Ss_Data,
9604     &ett_gsm_map_RegisterSS_Arg,
9605     &ett_gsm_map_Ss_Info,
9606     &ett_gsm_map_Ccbs_Feature,
9607     &ett_gsm_map_Ss_ForBS,
9608     &ett_gsm_map_InterrogateSS_Res,
9609     &ett_gsm_map_T_genericServiceInfo,
9610     &ett_gsm_map_T_ccbs_FeatureList,
9611     &ett_gsm_map_T_ccbs_FeatureList_item,
9612     &ett_gsm_map_Ussd_Arg,
9613     &ett_gsm_map_Ussd_Res,
9614     &ett_gsm_map_ServiceIndicator,
9615     &ett_gsm_map_RegisterCC_EntryArg,
9616     &ett_gsm_map_T_ccbs_Data,
9617     &ett_gsm_map_RegisterCC_EntryRes,
9618     &ett_gsm_map_EraseCC_EntryArg,
9619     &ett_gsm_map_EraseCC_EntryRes,
9620     &ett_gsm_map_RoutingInfoForSMArg,
9621     &ett_gsm_map_RoutingInfoForSMRes,
9622     &ett_gsm_map_T_locationInfoWithLMSI,
9623     &ett_gsm_map_T_additional_Number,
9624     &ett_gsm_map_Mo_forwardSM_Arg,
9625     &ett_gsm_map_Mo_forwardSM_Res,
9626     &ett_gsm_map_Sm_RP_OA,
9627     &ett_gsm_map_Sm_RP_DA,
9628     &ett_gsm_map_Mt_forwardSM_Arg,
9629     &ett_gsm_map_Mt_forwardSM_Res,
9630     &ett_gsm_map_ReportSM_DeliveryStatusArg,
9631     &ett_gsm_map_ReportSM_DeliveryStatusRes,
9632     &ett_gsm_map_InformServiceCentreArg,
9633     &ett_gsm_map_T_mw_Status,
9634     &ett_gsm_map_AlertServiceCentreArg,
9635     &ett_gsm_map_ReadyForSM_Arg,
9636     &ett_gsm_map_ReadyForSM_Res,
9637     &ett_gsm_map_ProvideSubscriberInfoArg,
9638     &ett_gsm_map_ProvideSubscriberInfoRes,
9639     &ett_gsm_map_RequestedInfo,
9640     &ett_gsm_map_AnyTimeInterrogationArg,
9641     &ett_gsm_map_T_subscriberIdentity,
9642     &ett_gsm_map_AnyTimeInterrogationRes,
9643     &ett_gsm_map_Ss_InvocationNotificationArg,
9644     &ett_gsm_map_SEQUNCE_OF_OCTET_STRING_SIZE_1_20,
9645     &ett_gsm_map_Ss_InvocationNotificationRes,
9646     &ett_gsm_map_PrepareGroupCallArg,
9647     &ett_gsm_map_PrepareGroupCallRes,
9648     &ett_gsm_map_SendGroupCallEndSignalArg,
9649     &ett_gsm_map_SendGroupCallEndSignalRes,
9650     &ett_gsm_map_ProcessGroupCallSignallingArg,
9651     &ett_gsm_map_ForwardGroupCallSignallingArg,
9652     &ett_gsm_map_UpdateGprsLocationArg,
9653     &ett_gsm_map_T_sgsn_Capability,
9654     &ett_gsm_map_UpdateGprsLocationRes,
9655     &ett_gsm_map_SendRoutingInfoForGprsArg,
9656     &ett_gsm_map_SendRoutingInfoForGprsRes,
9657     &ett_gsm_map_FailureReportArg,
9658     &ett_gsm_map_FailureReportRes,
9659     &ett_gsm_map_NoteMsPresentForGprsArg,
9660     &ett_gsm_map_NoteMsPresentForGprsRes,
9661     &ett_gsm_map_LcsClientExternalID,
9662     &ett_gsm_map_LcsClientName,
9663     &ett_gsm_map_Lcs_ClientID,
9664     &ett_gsm_map_LcsLocationInfo,
9665     &ett_gsm_map_ProvideSubscriberLocation_Arg,
9666     &ett_gsm_map_T_locationType,
9667     &ett_gsm_map_T_lcs_QoS,
9668     &ett_gsm_map_T_responseTime,
9669     &ett_gsm_map_ProvideSubscriberLocation_Res,
9670     &ett_gsm_map_TargetMS,
9671     &ett_gsm_map_RoutingInfoForLCS_Arg,
9672     &ett_gsm_map_RoutingInfoForLCS_Res,
9673     &ett_gsm_map_SubscriberLocationReport_Arg,
9674     &ett_gsm_map_SubscriberLocationReport_Res,
9675     &ett_gsm_map_SystemFailureParam,
9676     &ett_gsm_map_T_extensibleSystemFailureParam,
9677     &ett_gsm_map_DataMissingParam,
9678     &ett_gsm_map_UnexpectedDataParam,
9679     &ett_gsm_map_FacilityNotSupParam,
9680     &ett_gsm_map_IncompatibleTerminalParam,
9681     &ett_gsm_map_ResourceLimitationParam,
9682     &ett_gsm_map_UnknownSubscriberParam,
9683     &ett_gsm_map_NumberChangedParam,
9684     &ett_gsm_map_UnidentifiedSubParam,
9685     &ett_gsm_map_RoamingNotAllowedParam,
9686     &ett_gsm_map_IllegalSubscriberParam,
9687     &ett_gsm_map_IllegalEquipmentParam,
9688     &ett_gsm_map_BearerServNotProvParam,
9689     &ett_gsm_map_TeleservNotProvParam,
9690     &ett_gsm_map_TracingBufferFullParam,
9691     &ett_gsm_map_NoRoamingNbParam,
9692     &ett_gsm_map_AbsentSubscriberParam,
9693     &ett_gsm_map_BusySubscriberParam,
9694     &ett_gsm_map_NoSubscriberReplyParam,
9695     &ett_gsm_map_CallBarredParam,
9696     &ett_gsm_map_T_extensibleCallBarredParam,
9697     &ett_gsm_map_ForwardingFailedParam,
9698     &ett_gsm_map_Or_NotAllowedParam,
9699     &ett_gsm_map_ForwardingViolationParam,
9700     &ett_gsm_map_Cug_RejectParam,
9701     &ett_gsm_map_Ati_NotAllowedParam,
9702     &ett_gsm_map_NoGroupCallNbParam,
9703     &ett_gsm_map_Ss_IncompatibilityCause,
9704     &ett_gsm_map_ShortTermDenialParam,
9705     &ett_gsm_map_LongTermDenialParam,
9706     &ett_gsm_map_SubBusyForMT_SMS_Param,
9707     &ett_gsm_map_Sm_DeliveryFailureCause,
9708     &ett_gsm_map_MessageWaitListFullParam,
9709     &ett_gsm_map_AbsentSubscriberSM_Param,
9710     &ett_gsm_map_UnauthorizedRequestingNetwork_Param,
9711     &ett_gsm_map_UnauthorizedLCSClient_Param,
9712     &ett_gsm_map_PositionMethodFailure_Param,
9713     &ett_gsm_map_UnknownOrUnreachableLCSClient_Param,
9714     &ett_gsm_map_ExtensionContainer,
9715
9716 /*--- End of included file: packet-gsm_map-ettarr.c ---*/
9717
9718   };
9719
9720   /* Register protocol */
9721   proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
9722 /*XXX  register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map);*/
9723   /* Register fields and subtrees */
9724   proto_register_field_array(proto_gsm_map, hf, array_length(hf));
9725   proto_register_subtree_array(ett, array_length(ett));
9726
9727   sms_dissector_table =
9728         register_dissector_table("gsm_map.sms_tpdu", "GSM SMS TPDU",
9729         FT_UINT8, BASE_DEC);
9730
9731   gsm_map_tap = register_tap("gsm_map");
9732
9733 }
9734
9735
9736 /*--- proto_reg_handoff_gsm_map ---------------------------------------*/
9737 void proto_reg_handoff_gsm_map(void) {
9738     dissector_handle_t  map_handle;
9739
9740     map_handle = create_dissector_handle(dissect_gsm_map, proto_gsm_map);
9741     dissector_add("tcap.itu_ssn", 6, map_handle);
9742     dissector_add("tcap.itu_ssn", 7, map_handle);
9743     dissector_add("tcap.itu_ssn", 8, map_handle);
9744     dissector_add("tcap.itu_ssn", 9, map_handle);
9745 }